From 822532cd8d3ac8774a8064b8f82b6f2100b41931 Mon Sep 17 00:00:00 2001 From: Laurent LAPORTE <43534797+laurent-laporte-pro@users.noreply.github.com> Date: Thu, 12 Sep 2024 10:58:53 +0200 Subject: [PATCH 001/182] build(python): bump main project dependencies (#1728) bumps main projection dependencies: - `pydantic` from 1.9 to 2.8: huge breaking change but with large performance benefits expected on serialization - `fastapi` from 0.73 to 0.110 - `uvicorn` from to 0.15 to 0.30 - `mypy` from 1.4 to 1.11 It also brings few changes inside dependencies - Drop `requests` in favor of `httpx` - Drop `fastapi-jwt-auth` as they do not and will not support pydantic v2. We've decided to fork their code and adapt it as it's really light (see new folder `/antarest/fastapi_jwt_auth`) These changes also induced other minor dependencies bump: `jinja2`, `typing_extensions`, `PyJWT`, `python-multipart` Last, this work includes fixes on the API prefix addition when running in standalone mode (desktop version). We now distinguish properties root_path (used when behind a proxy) and api_prefix (which actually makes our server add a prefix). Co-authored-by: belthlemar Co-authored-by: Sylvain Leclerc --- antarest/core/application.py | 48 + antarest/core/cache/business/redis_cache.py | 2 +- antarest/core/config.py | 19 +- antarest/core/core_blueprint.py | 18 +- antarest/core/filesystem_blueprint.py | 34 +- antarest/core/filetransfer/main.py | 9 +- antarest/core/filetransfer/model.py | 2 +- antarest/core/maintenance/main.py | 9 +- antarest/core/model.py | 2 +- antarest/core/permissions.py | 15 +- antarest/core/requests.py | 45 +- antarest/core/tasks/main.py | 9 +- antarest/core/tasks/model.py | 41 +- antarest/core/tasks/service.py | 10 +- .../utils/fastapi_sqlalchemy/middleware.py | 4 +- antarest/core/version_info.py | 2 +- antarest/eventbus/business/redis_eventbus.py | 4 +- antarest/eventbus/main.py | 9 +- antarest/eventbus/web.py | 11 +- antarest/fastapi_jwt_auth/LICENSE | 21 + antarest/fastapi_jwt_auth/README.md | 4 + antarest/fastapi_jwt_auth/__init__.py | 7 + antarest/fastapi_jwt_auth/auth_config.py | 114 +++ antarest/fastapi_jwt_auth/auth_jwt.py | 817 ++++++++++++++++++ antarest/fastapi_jwt_auth/config.py | 90 ++ antarest/fastapi_jwt_auth/exceptions.py | 89 ++ antarest/front.py | 139 +++ antarest/gui.py | 16 +- .../launcher/adapters/abstractlauncher.py | 4 +- antarest/launcher/main.py | 9 +- antarest/launcher/model.py | 21 +- antarest/launcher/service.py | 19 +- antarest/launcher/ssh_client.py | 2 +- antarest/launcher/ssh_config.py | 4 +- antarest/launcher/web.py | 14 +- antarest/login/auth.py | 6 +- antarest/login/ldap.py | 9 +- antarest/login/main.py | 19 +- antarest/login/service.py | 2 +- antarest/login/web.py | 24 +- antarest/main.py | 139 +-- antarest/matrixstore/main.py | 11 +- antarest/matrixstore/matrix_editor.py | 35 +- antarest/matrixstore/service.py | 1 + antarest/singleton_services.py | 4 +- .../business/adequacy_patch_management.py | 22 +- .../advanced_parameters_management.py | 52 +- antarest/study/business/all_optional_meta.py | 99 +-- .../study/business/allocation_management.py | 40 +- antarest/study/business/area_management.py | 47 +- .../study/business/areas/hydro_management.py | 36 +- .../business/areas/properties_management.py | 24 +- .../business/areas/renewable_management.py | 67 +- .../business/areas/st_storage_management.py | 98 +-- .../business/areas/thermal_management.py | 81 +- .../business/binding_constraint_management.py | 64 +- .../study/business/correlation_management.py | 31 +- antarest/study/business/district_manager.py | 27 +- antarest/study/business/general_management.py | 57 +- antarest/study/business/link_management.py | 11 +- .../study/business/optimization_management.py | 33 +- .../study/business/table_mode_management.py | 27 +- .../business/thematic_trimming_field_infos.py | 8 +- .../business/thematic_trimming_management.py | 2 +- .../business/timeseries_config_management.py | 49 +- antarest/study/business/utils.py | 6 +- .../study/business/xpansion_management.py | 66 +- antarest/study/main.py | 18 +- antarest/study/model.py | 37 +- antarest/study/service.py | 9 +- .../study/storage/abstract_storage_service.py | 4 +- antarest/study/storage/patch_service.py | 6 +- .../rawstudy/model/filesystem/config/area.py | 72 +- .../model/filesystem/config/cluster.py | 8 +- .../filesystem/config/field_validators.py | 2 +- .../rawstudy/model/filesystem/config/files.py | 1 - .../model/filesystem/config/identifier.py | 39 +- .../model/filesystem/config/ini_properties.py | 18 +- .../rawstudy/model/filesystem/config/links.py | 12 +- .../rawstudy/model/filesystem/config/model.py | 6 +- .../model/filesystem/config/thermal.py | 2 +- .../rawstudy/model/filesystem/factory.py | 4 +- .../storage/rawstudy/raw_study_service.py | 2 +- .../study/storage/study_download_utils.py | 2 +- .../business/command_extractor.py | 11 +- .../variantstudy/business/command_reverter.py | 2 +- .../business/utils_binding_constraint.py | 1 - .../storage/variantstudy/command_factory.py | 10 +- .../variantstudy/model/command/create_area.py | 4 +- .../command/create_binding_constraint.py | 61 +- .../model/command/create_cluster.py | 37 +- .../model/command/create_district.py | 8 +- .../variantstudy/model/command/create_link.py | 23 +- .../command/create_renewables_cluster.py | 10 +- .../model/command/create_st_storage.py | 50 +- .../generate_thermal_cluster_timeseries.py | 4 +- .../variantstudy/model/command/icommand.py | 10 +- .../variantstudy/model/command/remove_area.py | 2 +- .../command/remove_binding_constraint.py | 2 +- .../model/command/remove_cluster.py | 17 +- .../model/command/remove_district.py | 4 +- .../variantstudy/model/command/remove_link.py | 22 +- .../command/remove_renewables_cluster.py | 4 +- .../model/command/remove_st_storage.py | 8 +- .../model/command/replace_matrix.py | 12 +- .../command/update_binding_constraint.py | 15 +- .../model/command/update_comments.py | 4 +- .../model/command/update_config.py | 4 +- .../model/command/update_district.py | 12 +- .../model/command/update_playlist.py | 4 +- .../model/command/update_raw_file.py | 4 +- .../model/command/update_scenario_builder.py | 8 +- .../variantstudy/model/command_context.py | 1 - .../study/storage/variantstudy/model/model.py | 2 +- .../variantstudy/snapshot_generator.py | 6 +- .../variantstudy/variant_study_service.py | 4 +- antarest/study/web/studies_blueprint.py | 2 +- antarest/study/web/study_data_blueprint.py | 28 +- antarest/study/web/variant_blueprint.py | 7 +- .../study/web/xpansion_studies_blueprint.py | 2 +- antarest/tools/cli.py | 15 +- antarest/tools/lib.py | 63 +- antarest/utils.py | 50 +- antarest/worker/archive_worker.py | 6 +- antarest/worker/simulator_worker.py | 2 +- antarest/worker/worker.py | 6 +- pyproject.toml | 10 +- requirements-dev.txt | 2 +- requirements-test.txt | 3 +- requirements.txt | 32 +- resources/application.yaml | 19 +- resources/deploy/config.prod.yaml | 4 + resources/deploy/config.yaml | 3 +- resources/templates/.placeholder | 0 scripts/build-front.sh | 1 - sonar-project.properties | 2 +- tests/cache/test_local_cache.py | 6 +- tests/cache/test_redis_cache.py | 6 +- tests/core/test_tasks.py | 2 +- tests/eventbus/test_redis_event_bus.py | 2 +- tests/eventbus/test_websocket_manager.py | 4 +- .../filesystem_blueprint/test_model.py | 6 +- .../launcher_blueprint/test_launcher_local.py | 12 +- .../test_aggregate_raw_data.py | 211 +++-- .../test_download_matrices.py | 2 +- .../test_synthesis/raw_study.synthesis.json | 612 +------------ .../variant_study.synthesis.json | 612 +------------ .../studies_blueprint/test_comments.py | 42 +- .../studies_blueprint/test_disk_usage.py | 2 +- .../studies_blueprint/test_get_studies.py | 18 +- .../studies_blueprint/test_update_tags.py | 39 +- .../test_advanced_parameters.py | 2 +- .../test_binding_constraints.py | 4 +- .../test_config_general.py | 2 +- .../study_data_blueprint/test_renewable.py | 48 +- .../study_data_blueprint/test_st_storage.py | 123 +-- .../study_data_blueprint/test_thermal.py | 78 +- tests/integration/test_apidoc.py | 15 +- tests/integration/test_core_blueprint.py | 21 - tests/integration/test_integration.py | 28 +- .../test_integration_variantmanager_tool.py | 6 +- .../variant_blueprint/test_st_storage.py | 17 +- .../variant_blueprint/test_thermal_cluster.py | 2 +- .../variant_blueprint/test_variant_manager.py | 6 +- .../test_integration_xpansion.py | 96 +- tests/launcher/test_service.py | 35 +- tests/launcher/test_web.py | 29 +- tests/login/test_login_service.py | 36 +- tests/login/test_web.py | 42 +- tests/matrixstore/test_matrix_editor.py | 8 +- tests/matrixstore/test_service.py | 14 +- tests/matrixstore/test_web.py | 15 +- .../storage/business/test_arealink_manager.py | 29 +- tests/storage/business/test_config_manager.py | 12 +- tests/storage/business/test_patch_service.py | 2 +- .../test_timeseries_config_manager.py | 2 +- .../storage/business/test_xpansion_manager.py | 32 +- tests/storage/integration/conftest.py | 2 +- tests/storage/integration/test_STA_mini.py | 56 +- tests/storage/integration/test_exporter.py | 7 +- tests/storage/rawstudies/test_factory.py | 4 +- .../filesystem/config/test_config_files.py | 2 +- tests/storage/test_model.py | 2 +- tests/storage/test_service.py | 10 +- tests/storage/web/test_studies_bp.py | 282 +----- .../areas/test_st_storage_management.py | 106 +-- .../business/areas/test_thermal_management.py | 8 +- .../business/test_all_optional_metaclass.py | 375 +------- .../study/business/test_allocation_manager.py | 2 +- .../variantstudy/model/test_dbmodel.py | 2 +- .../variantstudy/test_snapshot_generator.py | 8 +- tests/study/test_repository.py | 44 +- tests/test_front.py | 111 +++ .../model/command/test_create_cluster.py | 32 +- .../model/command/test_create_link.py | 17 +- .../command/test_create_renewables_cluster.py | 6 +- .../model/command/test_create_st_storage.py | 101 +-- .../model/command/test_manage_district.py | 8 +- .../model/command/test_remove_area.py | 2 +- .../model/command/test_remove_link.py | 2 +- .../model/command/test_remove_st_storage.py | 6 +- .../model/command/test_replace_matrix.py | 6 +- .../model/command/test_update_config.py | 2 +- .../variantstudy/model/test_variant_model.py | 2 +- 204 files changed, 3415 insertions(+), 3795 deletions(-) create mode 100644 antarest/core/application.py create mode 100644 antarest/fastapi_jwt_auth/LICENSE create mode 100644 antarest/fastapi_jwt_auth/README.md create mode 100644 antarest/fastapi_jwt_auth/__init__.py create mode 100644 antarest/fastapi_jwt_auth/auth_config.py create mode 100644 antarest/fastapi_jwt_auth/auth_jwt.py create mode 100644 antarest/fastapi_jwt_auth/config.py create mode 100644 antarest/fastapi_jwt_auth/exceptions.py create mode 100644 antarest/front.py delete mode 100644 resources/templates/.placeholder create mode 100644 tests/test_front.py diff --git a/antarest/core/application.py b/antarest/core/application.py new file mode 100644 index 0000000000..3f09bd4102 --- /dev/null +++ b/antarest/core/application.py @@ -0,0 +1,48 @@ +# Copyright (c) 2024, RTE (https://www.rte-france.com) +# +# See AUTHORS.txt +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +# This file is part of the Antares project. + +from dataclasses import dataclass +from typing import Optional + +from fastapi import APIRouter, FastAPI + + +@dataclass(frozen=True) +class AppBuildContext: + """ + Base elements of the application, for use at construction time: + - app: the actual fastapi application, where middlewares, exception handlers, etc. may be added + - api_root: the route under which all API and WS endpoints must be registered + + API routes should not be added straight to app, but under api_root instead, + so that they are correctly prefixed if needed (/api for standalone mode). + + Warning: the inclusion of api_root must happen AFTER all subroutes + have been registered, hence the build method. + """ + + app: FastAPI + api_root: APIRouter + + def build(self) -> FastAPI: + """ + Finalizes the app construction by including the API route. + Must be performed AFTER all subroutes have been added. + """ + self.app.include_router(self.api_root) + return self.app + + +def create_app_ctxt(app: FastAPI, api_root: Optional[APIRouter] = None) -> AppBuildContext: + if not api_root: + api_root = APIRouter() + return AppBuildContext(app, api_root) diff --git a/antarest/core/cache/business/redis_cache.py b/antarest/core/cache/business/redis_cache.py index 75423cd190..0234fd1666 100644 --- a/antarest/core/cache/business/redis_cache.py +++ b/antarest/core/cache/business/redis_cache.py @@ -40,7 +40,7 @@ def put(self, id: str, data: JSON, duration: int = 3600) -> None: redis_element = RedisCacheElement(duration=duration, data=data) redis_key = f"cache:{id}" logger.info(f"Adding cache key {id}") - self.redis.set(redis_key, redis_element.json()) + self.redis.set(redis_key, redis_element.model_dump_json()) self.redis.expire(redis_key, duration) def get(self, id: str, refresh_timeout: Optional[int] = None) -> Optional[JSON]: diff --git a/antarest/core/config.py b/antarest/core/config.py index 7aa54d02f8..4b85331d6a 100644 --- a/antarest/core/config.py +++ b/antarest/core/config.py @@ -13,6 +13,7 @@ import multiprocessing import tempfile from dataclasses import asdict, dataclass, field +from enum import Enum from pathlib import Path from typing import Dict, List, Optional @@ -24,6 +25,12 @@ DEFAULT_WORKSPACE_NAME = "default" +class Launcher(str, Enum): + SLURM = "slurm" + LOCAL = "local" + DEFAULT = "default" + + @dataclass(frozen=True) class ExternalAuthConfig: """ @@ -399,7 +406,7 @@ def __post_init__(self) -> None: msg = f"Invalid configuration: {self.default=} must be one of {possible!r}" raise ValueError(msg) - def get_nb_cores(self, launcher: str) -> "NbCoresConfig": + def get_nb_cores(self, launcher: Launcher) -> "NbCoresConfig": """ Retrieve the number of cores configuration for a given launcher: "local" or "slurm". If "default" is specified, retrieve the configuration of the default launcher. @@ -416,12 +423,12 @@ def get_nb_cores(self, launcher: str) -> "NbCoresConfig": """ config_map = {"local": self.local, "slurm": self.slurm} config_map["default"] = config_map[self.default] - launcher_config = config_map.get(launcher) + launcher_config = config_map.get(launcher.value) if launcher_config is None: - raise InvalidConfigurationError(launcher) + raise InvalidConfigurationError(launcher.value) return launcher_config.nb_cores - def get_time_limit(self, launcher: str) -> TimeLimitConfig: + def get_time_limit(self, launcher: Launcher) -> TimeLimitConfig: """ Retrieve the time limit for a job of the given launcher: "local" or "slurm". If "default" is specified, retrieve the configuration of the default launcher. @@ -438,7 +445,7 @@ def get_time_limit(self, launcher: str) -> TimeLimitConfig: """ config_map = {"local": self.local, "slurm": self.slurm} config_map["default"] = config_map[self.default] - launcher_config = config_map.get(launcher) + launcher_config = config_map.get(launcher.value) if launcher_config is None: raise InvalidConfigurationError(launcher) return launcher_config.time_limit @@ -586,6 +593,7 @@ class Config: cache: CacheConfig = CacheConfig() tasks: TaskConfig = TaskConfig() root_path: str = "" + api_prefix: str = "" @classmethod def from_dict(cls, data: JSON) -> "Config": @@ -604,6 +612,7 @@ def from_dict(cls, data: JSON) -> "Config": cache=CacheConfig.from_dict(data["cache"]) if "cache" in data else defaults.cache, tasks=TaskConfig.from_dict(data["tasks"]) if "tasks" in data else defaults.tasks, root_path=data.get("root_path", defaults.root_path), + api_prefix=data.get("api_prefix", defaults.api_prefix), ) @classmethod diff --git a/antarest/core/core_blueprint.py b/antarest/core/core_blueprint.py index 988ad9f641..27f6591109 100644 --- a/antarest/core/core_blueprint.py +++ b/antarest/core/core_blueprint.py @@ -10,18 +10,14 @@ # # This file is part of the Antares project. -import logging from typing import Any -from fastapi import APIRouter, Depends +from fastapi import APIRouter from pydantic import BaseModel from antarest.core.config import Config -from antarest.core.jwt import JWTUser -from antarest.core.requests import UserHasNotPermissionError from antarest.core.utils.web import APITag from antarest.core.version_info import VersionInfoDTO, get_commit_id, get_dependencies -from antarest.login.auth import Auth class StatusDTO(BaseModel): @@ -36,7 +32,6 @@ def create_utils_routes(config: Config) -> APIRouter: config: main server configuration """ bp = APIRouter() - auth = Auth(config) @bp.get("/health", tags=[APITag.misc], response_model=StatusDTO) def health() -> Any: @@ -66,15 +61,4 @@ def version_info() -> Any: dependencies=get_dependencies(), ) - @bp.get("/kill", include_in_schema=False) - def kill_worker( - current_user: JWTUser = Depends(auth.get_current_user), - ) -> Any: - if not current_user.is_site_admin(): - raise UserHasNotPermissionError() - logging.getLogger(__name__).critical("Killing the worker") - # PyInstaller modifies the behavior of built-in functions, such as `exit`. - # It is advisable to use `sys.exit` or raise the `SystemExit` exception instead. - raise SystemExit(f"Worker killed by the user #{current_user.id}") - return bp diff --git a/antarest/core/filesystem_blueprint.py b/antarest/core/filesystem_blueprint.py index 02652f2213..d625d19c07 100644 --- a/antarest/core/filesystem_blueprint.py +++ b/antarest/core/filesystem_blueprint.py @@ -23,21 +23,21 @@ import typing_extensions as te from fastapi import APIRouter, Depends, HTTPException -from pydantic import BaseModel, Extra, Field +from pydantic import BaseModel, Field from starlette.responses import PlainTextResponse, StreamingResponse from antarest.core.config import Config from antarest.core.utils.web import APITag from antarest.login.auth import Auth -FilesystemName = te.Annotated[str, Field(regex=r"^\w+$", description="Filesystem name")] -MountPointName = te.Annotated[str, Field(regex=r"^\w+$", description="Mount point name")] +FilesystemName = te.Annotated[str, Field(pattern=r"^\w+$", description="Filesystem name")] +MountPointName = te.Annotated[str, Field(pattern=r"^\w+$", description="Mount point name")] class FilesystemDTO( BaseModel, - extra=Extra.forbid, - schema_extra={ + extra="forbid", + json_schema_extra={ "example": { "name": "ws", "mount_dirs": { @@ -62,8 +62,8 @@ class FilesystemDTO( class MountPointDTO( BaseModel, - extra=Extra.forbid, - schema_extra={ + extra="forbid", + json_schema_extra={ "example": { "name": "default", "path": "/path/to/workspaces/internal_studies", @@ -89,10 +89,10 @@ class MountPointDTO( name: MountPointName path: Path = Field(description="Full path of the mount point in Antares Web Server") - total_bytes: int = Field(0, description="Total size of the mount point in bytes") - used_bytes: int = Field(0, description="Used size of the mount point in bytes") - free_bytes: int = Field(0, description="Free size of the mount point in bytes") - message: str = Field("", description="A message describing the status of the mount point") + total_bytes: int = Field(default=0, description="Total size of the mount point in bytes") + used_bytes: int = Field(default=0, description="Used size of the mount point in bytes") + free_bytes: int = Field(default=0, description="Free size of the mount point in bytes") + message: str = Field(default="", description="A message describing the status of the mount point") @classmethod async def from_path(cls, name: str, path: Path) -> "MountPointDTO": @@ -110,8 +110,8 @@ async def from_path(cls, name: str, path: Path) -> "MountPointDTO": class FileInfoDTO( BaseModel, - extra=Extra.forbid, - schema_extra={ + extra="forbid", + json_schema_extra={ "example": { "path": "/path/to/workspaces/internal_studies/5a503c20-24a3-4734-9cf8-89565c9db5ec/study.antares", "file_type": "file", @@ -142,12 +142,12 @@ class FileInfoDTO( path: Path = Field(description="Full path of the file or directory in Antares Web Server") file_type: str = Field(description="Type of the file or directory") - file_count: int = Field(1, description="Number of files and folders in the directory (1 for files)") - size_bytes: int = Field(0, description="Size of the file or total size of the directory in bytes") + file_count: int = Field(default=1, description="Number of files and folders in the directory (1 for files)") + size_bytes: int = Field(default=0, description="Size of the file or total size of the directory in bytes") created: datetime.datetime = Field(description="Creation date of the file or directory (local time)") modified: datetime.datetime = Field(description="Last modification date of the file or directory (local time)") accessed: datetime.datetime = Field(description="Last access date of the file or directory (local time)") - message: str = Field("OK", description="A message describing the status of the file") + message: str = Field(default="OK", description="A message describing the status of the file") @classmethod async def from_path(cls, full_path: Path, *, details: bool = False) -> "FileInfoDTO": @@ -160,6 +160,7 @@ async def from_path(cls, full_path: Path, *, details: bool = False) -> "FileInfo path=full_path, file_type="unknown", file_count=0, # missing + size_bytes=0, # missing created=datetime.datetime.min, modified=datetime.datetime.min, accessed=datetime.datetime.min, @@ -174,6 +175,7 @@ async def from_path(cls, full_path: Path, *, details: bool = False) -> "FileInfo created=datetime.datetime.fromtimestamp(file_stat.st_ctime), modified=datetime.datetime.fromtimestamp(file_stat.st_mtime), accessed=datetime.datetime.fromtimestamp(file_stat.st_atime), + message="OK", ) if stat.S_ISDIR(file_stat.st_mode): diff --git a/antarest/core/filetransfer/main.py b/antarest/core/filetransfer/main.py index cbf732ef22..3583dc5701 100644 --- a/antarest/core/filetransfer/main.py +++ b/antarest/core/filetransfer/main.py @@ -12,8 +12,9 @@ from typing import Optional -from fastapi import FastAPI +from fastapi import APIRouter, FastAPI +from antarest.core.application import AppBuildContext from antarest.core.config import Config from antarest.core.filetransfer.repository import FileDownloadRepository from antarest.core.filetransfer.service import FileTransferManager @@ -22,10 +23,10 @@ def build_filetransfer_service( - application: Optional[FastAPI], event_bus: IEventBus, config: Config + app_ctxt: Optional[AppBuildContext], event_bus: IEventBus, config: Config ) -> FileTransferManager: ftm = FileTransferManager(repository=FileDownloadRepository(), event_bus=event_bus, config=config) - if application: - application.include_router(create_file_transfer_api(ftm, config)) + if app_ctxt: + app_ctxt.api_root.include_router(create_file_transfer_api(ftm, config)) return ftm diff --git a/antarest/core/filetransfer/model.py b/antarest/core/filetransfer/model.py index 1ae51c1009..72463e0bad 100644 --- a/antarest/core/filetransfer/model.py +++ b/antarest/core/filetransfer/model.py @@ -41,7 +41,7 @@ class FileDownloadDTO(BaseModel): id: str name: str filename: str - expiration_date: Optional[str] + expiration_date: Optional[str] = None ready: bool failed: bool = False error_message: str = "" diff --git a/antarest/core/maintenance/main.py b/antarest/core/maintenance/main.py index b129d85691..8717150d07 100644 --- a/antarest/core/maintenance/main.py +++ b/antarest/core/maintenance/main.py @@ -12,8 +12,9 @@ from typing import Optional -from fastapi import FastAPI +from fastapi import APIRouter, FastAPI +from antarest.core.application import AppBuildContext from antarest.core.config import Config from antarest.core.interfaces.cache import ICache from antarest.core.interfaces.eventbus import DummyEventBusService, IEventBus @@ -23,7 +24,7 @@ def build_maintenance_manager( - application: Optional[FastAPI], + app_ctxt: Optional[AppBuildContext], config: Config, cache: ICache, event_bus: IEventBus = DummyEventBusService(), @@ -31,7 +32,7 @@ def build_maintenance_manager( repository = MaintenanceRepository() service = MaintenanceService(config, repository, event_bus, cache) - if application: - application.include_router(create_maintenance_api(service, config)) + if app_ctxt: + app_ctxt.api_root.include_router(create_maintenance_api(service, config)) return service diff --git a/antarest/core/model.py b/antarest/core/model.py index d13c2931f6..b500e9a5c5 100644 --- a/antarest/core/model.py +++ b/antarest/core/model.py @@ -21,7 +21,7 @@ JSON = Dict[str, Any] ELEMENT = Union[str, int, float, bool, bytes] -SUB_JSON = Union[ELEMENT, JSON, List, None] +SUB_JSON = Union[ELEMENT, JSON, List[Any], None] class PublicMode(str, enum.Enum): diff --git a/antarest/core/permissions.py b/antarest/core/permissions.py index 0a2d5d6d6f..55defacf7d 100644 --- a/antarest/core/permissions.py +++ b/antarest/core/permissions.py @@ -11,6 +11,7 @@ # This file is part of the Antares project. import logging +import typing as t from antarest.core.jwt import JWTUser from antarest.core.model import PermissionInfo, PublicMode, StudyPermissionType @@ -19,8 +20,8 @@ logger = logging.getLogger(__name__) -permission_matrix = { - StudyPermissionType.READ: { +permission_matrix: t.Dict[str, t.Dict[str, t.Sequence[t.Union[RoleType, PublicMode]]]] = { + StudyPermissionType.READ.value: { "roles": [ RoleType.ADMIN, RoleType.RUNNER, @@ -34,15 +35,15 @@ PublicMode.READ, ], }, - StudyPermissionType.RUN: { + StudyPermissionType.RUN.value: { "roles": [RoleType.ADMIN, RoleType.RUNNER, RoleType.WRITER], "public_modes": [PublicMode.FULL, PublicMode.EDIT, PublicMode.EXECUTE], }, - StudyPermissionType.WRITE: { + StudyPermissionType.WRITE.value: { "roles": [RoleType.ADMIN, RoleType.WRITER], "public_modes": [PublicMode.FULL, PublicMode.EDIT], }, - StudyPermissionType.MANAGE_PERMISSIONS: { + StudyPermissionType.MANAGE_PERMISSIONS.value: { "roles": [RoleType.ADMIN], "public_modes": [], }, @@ -77,11 +78,11 @@ def check_permission( allowed_roles = permission_matrix[permission]["roles"] group_permission = any( - role in allowed_roles # type: ignore + role in allowed_roles for role in [group.role for group in (user.groups or []) if group.id in permission_info.groups] ) if group_permission: return True allowed_public_modes = permission_matrix[permission]["public_modes"] - return permission_info.public_mode in allowed_public_modes # type: ignore + return permission_info.public_mode in allowed_public_modes diff --git a/antarest/core/requests.py b/antarest/core/requests.py index 52614f8ab7..d276f79dca 100644 --- a/antarest/core/requests.py +++ b/antarest/core/requests.py @@ -10,8 +10,10 @@ # # This file is part of the Antares project. +import typing as t +from collections import OrderedDict from dataclasses import dataclass -from typing import Optional +from typing import Any, Generator, Tuple from fastapi import HTTPException from markupsafe import escape @@ -29,13 +31,52 @@ } +class CaseInsensitiveDict(t.MutableMapping[str, t.Any]): # copy of the requests class to avoid importing the package + def __init__(self, data=None, **kwargs) -> None: # type: ignore + self._store: OrderedDict[str, t.Any] = OrderedDict() + if data is None: + data = {} + self.update(data, **kwargs) + + def __setitem__(self, key: str, value: t.Any) -> None: + self._store[key.lower()] = (key, value) + + def __getitem__(self, key: str) -> t.Any: + return self._store[key.lower()][1] + + def __delitem__(self, key: str) -> None: + del self._store[key.lower()] + + def __iter__(self) -> t.Any: + return (casedkey for casedkey, mappedvalue in self._store.values()) + + def __len__(self) -> int: + return len(self._store) + + def lower_items(self) -> Generator[Tuple[Any, Any], Any, None]: + return ((lowerkey, keyval[1]) for (lowerkey, keyval) in self._store.items()) + + def __eq__(self, other: t.Any) -> bool: + if isinstance(other, t.Mapping): + other = CaseInsensitiveDict(other) + else: + return NotImplemented + return dict(self.lower_items()) == dict(other.lower_items()) + + def copy(self) -> "CaseInsensitiveDict": + return CaseInsensitiveDict(self._store.values()) + + def __repr__(self) -> str: + return str(dict(self.items())) + + @dataclass class RequestParameters: """ DTO object to handle data inside request to send to service """ - user: Optional[JWTUser] = None + user: t.Optional[JWTUser] = None def get_user_id(self) -> str: return str(escape(str(self.user.id))) if self.user else "Unknown" diff --git a/antarest/core/tasks/main.py b/antarest/core/tasks/main.py index ae3d7dafb8..74685ba836 100644 --- a/antarest/core/tasks/main.py +++ b/antarest/core/tasks/main.py @@ -12,8 +12,9 @@ from typing import Optional -from fastapi import FastAPI +from fastapi import APIRouter, FastAPI +from antarest.core.application import AppBuildContext from antarest.core.config import Config from antarest.core.interfaces.eventbus import DummyEventBusService, IEventBus from antarest.core.tasks.repository import TaskJobRepository @@ -22,14 +23,14 @@ def build_taskjob_manager( - application: Optional[FastAPI], + app_ctxt: Optional[AppBuildContext], config: Config, event_bus: IEventBus = DummyEventBusService(), ) -> ITaskService: repository = TaskJobRepository() service = TaskJobService(config, repository, event_bus) - if application: - application.include_router(create_tasks_api(service, config)) + if app_ctxt: + app_ctxt.api_root.include_router(create_tasks_api(service, config)) return service diff --git a/antarest/core/tasks/model.py b/antarest/core/tasks/model.py index fa4c57cd40..138344602a 100644 --- a/antarest/core/tasks/model.py +++ b/antarest/core/tasks/model.py @@ -15,7 +15,7 @@ from datetime import datetime from enum import Enum -from pydantic import BaseModel, Extra +from pydantic import BaseModel from sqlalchemy import Boolean, Column, DateTime, ForeignKey, Integer, Sequence, String # type: ignore from sqlalchemy.engine.base import Engine # type: ignore from sqlalchemy.orm import relationship, sessionmaker # type: ignore @@ -56,43 +56,43 @@ def is_final(self) -> bool: ] -class TaskResult(BaseModel, extra=Extra.forbid): +class TaskResult(BaseModel, extra="forbid"): success: bool message: str # Can be used to store json serialized result - return_value: t.Optional[str] + return_value: t.Optional[str] = None -class TaskLogDTO(BaseModel, extra=Extra.forbid): +class TaskLogDTO(BaseModel, extra="forbid"): id: str message: str -class CustomTaskEventMessages(BaseModel, extra=Extra.forbid): +class CustomTaskEventMessages(BaseModel, extra="forbid"): start: str running: str end: str -class TaskEventPayload(BaseModel, extra=Extra.forbid): +class TaskEventPayload(BaseModel, extra="forbid"): id: str message: str -class TaskDTO(BaseModel, extra=Extra.forbid): +class TaskDTO(BaseModel, extra="forbid"): id: str name: str - owner: t.Optional[int] + owner: t.Optional[int] = None status: TaskStatus creation_date_utc: str - completion_date_utc: t.Optional[str] - result: t.Optional[TaskResult] - logs: t.Optional[t.List[TaskLogDTO]] + completion_date_utc: t.Optional[str] = None + result: t.Optional[TaskResult] = None + logs: t.Optional[t.List[TaskLogDTO]] = None type: t.Optional[str] = None ref_id: t.Optional[str] = None -class TaskListFilter(BaseModel, extra=Extra.forbid): +class TaskListFilter(BaseModel, extra="forbid"): status: t.List[TaskStatus] = [] name: t.Optional[str] = None type: t.List[TaskType] = [] @@ -170,6 +170,15 @@ class TaskJob(Base): # type: ignore study: "Study" = relationship("Study", back_populates="jobs", uselist=False) def to_dto(self, with_logs: bool = False) -> TaskDTO: + result = None + if self.completion_date: + assert self.result_status is not None + assert self.result_msg is not None + result = TaskResult( + success=self.result_status, + message=self.result_msg, + return_value=self.result, + ) return TaskDTO( id=self.id, owner=self.owner_id, @@ -177,13 +186,7 @@ def to_dto(self, with_logs: bool = False) -> TaskDTO: completion_date_utc=str(self.completion_date) if self.completion_date else None, name=self.name, status=TaskStatus(self.status), - result=TaskResult( - success=self.result_status, - message=self.result_msg, - return_value=self.result, - ) - if self.completion_date - else None, + result=result, logs=sorted([log.to_dto() for log in self.logs], key=lambda log: log.id) if with_logs else None, type=self.type, ref_id=self.ref_id, diff --git a/antarest/core/tasks/service.py b/antarest/core/tasks/service.py index 34dd8a3d73..e4855e01c3 100644 --- a/antarest/core/tasks/service.py +++ b/antarest/core/tasks/service.py @@ -144,7 +144,7 @@ def _create_awaiter( res_wrapper: t.List[TaskResult], ) -> t.Callable[[Event], t.Awaitable[None]]: async def _await_task_end(event: Event) -> None: - task_event = WorkerTaskResult.parse_obj(event.payload) + task_event = WorkerTaskResult.model_validate(event.payload) if task_event.task_id == task_id: res_wrapper.append(task_event.task_result) @@ -252,7 +252,7 @@ def _launch_task( message=custom_event_messages.start if custom_event_messages is not None else f"Task {task.id} added", - ).dict(), + ).model_dump(), permissions=PermissionInfo(owner=request_params.user.impersonator), ) ) @@ -361,7 +361,7 @@ def _run_task( message=custom_event_messages.running if custom_event_messages is not None else f"Task {task_id} is running", - ).dict(), + ).model_dump(), permissions=PermissionInfo(public_mode=PublicMode.READ), channel=EventChannelDirectory.TASK + task_id, ) @@ -407,7 +407,7 @@ def _run_task( if custom_event_messages is not None else f"Task {task_id} {event_msg}" ), - ).dict(), + ).model_dump(), permissions=PermissionInfo(public_mode=PublicMode.READ), channel=EventChannelDirectory.TASK + task_id, ) @@ -432,7 +432,7 @@ def _run_task( self.event_bus.push( Event( type=EventType.TASK_FAILED, - payload=TaskEventPayload(id=task_id, message=message).dict(), + payload=TaskEventPayload(id=task_id, message=message).model_dump(), permissions=PermissionInfo(public_mode=PublicMode.READ), channel=EventChannelDirectory.TASK + task_id, ) diff --git a/antarest/core/utils/fastapi_sqlalchemy/middleware.py b/antarest/core/utils/fastapi_sqlalchemy/middleware.py index 9a98b4ef1b..dcc1f95b25 100644 --- a/antarest/core/utils/fastapi_sqlalchemy/middleware.py +++ b/antarest/core/utils/fastapi_sqlalchemy/middleware.py @@ -12,7 +12,7 @@ from antarest.core.utils.fastapi_sqlalchemy.exceptions import MissingSessionError, SessionNotInitialisedError -_Session: sessionmaker = None +_Session: Optional[sessionmaker] = None _session: ContextVar[Optional[Session]] = ContextVar("_session", default=None) @@ -93,4 +93,4 @@ def __exit__(self, exc_type: Any, exc_value: Any, traceback: Any) -> None: _session.reset(self.token) -db: DBSessionMeta = DBSession +db: Type[DBSession] = DBSession diff --git a/antarest/core/version_info.py b/antarest/core/version_info.py index fe144d1a02..ea96eaf4ef 100644 --- a/antarest/core/version_info.py +++ b/antarest/core/version_info.py @@ -28,7 +28,7 @@ class VersionInfoDTO(BaseModel): dependencies: Dict[str, str] class Config: - schema_extra = { + json_schema_extra = { "example": { "name": "AntaREST", "version": "2.13.2", diff --git a/antarest/eventbus/business/redis_eventbus.py b/antarest/eventbus/business/redis_eventbus.py index 82325984ef..f3642bf994 100644 --- a/antarest/eventbus/business/redis_eventbus.py +++ b/antarest/eventbus/business/redis_eventbus.py @@ -29,10 +29,10 @@ def __init__(self, redis_client: Redis) -> None: # type: ignore self.pubsub.subscribe(REDIS_STORE_KEY) def push_event(self, event: Event) -> None: - self.redis.publish(REDIS_STORE_KEY, event.json()) + self.redis.publish(REDIS_STORE_KEY, event.model_dump_json()) def queue_event(self, event: Event, queue: str) -> None: - self.redis.rpush(queue, event.json()) + self.redis.rpush(queue, event.model_dump_json()) def pull_queue(self, queue: str) -> Optional[Event]: event = self.redis.lpop(queue) diff --git a/antarest/eventbus/main.py b/antarest/eventbus/main.py index 7c53f5cbce..6ccf56e644 100644 --- a/antarest/eventbus/main.py +++ b/antarest/eventbus/main.py @@ -12,9 +12,10 @@ from typing import Optional -from fastapi import FastAPI +from fastapi import APIRouter, FastAPI from redis import Redis +from antarest.core.application import AppBuildContext from antarest.core.config import Config from antarest.eventbus.business.local_eventbus import LocalEventBus from antarest.eventbus.business.redis_eventbus import RedisEventBus @@ -23,7 +24,7 @@ def build_eventbus( - application: Optional[FastAPI], + app_ctxt: Optional[AppBuildContext], config: Config, autostart: bool = True, redis_client: Optional[Redis] = None, # type: ignore @@ -33,6 +34,6 @@ def build_eventbus( autostart, ) - if application: - configure_websockets(application, config, eventbus) + if app_ctxt: + configure_websockets(app_ctxt, config, eventbus) return eventbus diff --git a/antarest/eventbus/web.py b/antarest/eventbus/web.py index 481db7b371..ba363db6c4 100644 --- a/antarest/eventbus/web.py +++ b/antarest/eventbus/web.py @@ -17,16 +17,17 @@ from http import HTTPStatus from typing import List, Optional -from fastapi import Depends, FastAPI, HTTPException, Query -from fastapi_jwt_auth import AuthJWT # type: ignore +from fastapi import APIRouter, Depends, FastAPI, HTTPException, Query from pydantic import BaseModel from starlette.websockets import WebSocket, WebSocketDisconnect +from antarest.core.application import AppBuildContext from antarest.core.config import Config from antarest.core.interfaces.eventbus import Event, IEventBus from antarest.core.jwt import DEFAULT_ADMIN_USER, JWTUser from antarest.core.model import PermissionInfo, StudyPermissionType from antarest.core.permissions import check_permission +from antarest.fastapi_jwt_auth import AuthJWT from antarest.login.auth import Auth logger = logging.getLogger(__name__) @@ -91,16 +92,16 @@ async def broadcast(self, message: str, permissions: PermissionInfo, channel: st await connection.websocket.send_text(message) -def configure_websockets(application: FastAPI, config: Config, event_bus: IEventBus) -> None: +def configure_websockets(app_ctxt: AppBuildContext, config: Config, event_bus: IEventBus) -> None: manager = ConnectionManager() async def send_event_to_ws(event: Event) -> None: - event_data = event.dict() + event_data = event.model_dump() del event_data["permissions"] del event_data["channel"] await manager.broadcast(json.dumps(event_data), event.permissions, event.channel) - @application.websocket("/ws") + @app_ctxt.api_root.websocket("/ws") async def connect( websocket: WebSocket, token: str = Query(...), diff --git a/antarest/fastapi_jwt_auth/LICENSE b/antarest/fastapi_jwt_auth/LICENSE new file mode 100644 index 0000000000..ad5e3c8004 --- /dev/null +++ b/antarest/fastapi_jwt_auth/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Nyoman Pradipta Dewantara + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/antarest/fastapi_jwt_auth/README.md b/antarest/fastapi_jwt_auth/README.md new file mode 100644 index 0000000000..c4dfd9017e --- /dev/null +++ b/antarest/fastapi_jwt_auth/README.md @@ -0,0 +1,4 @@ +# FastAPI JWT Auth + +Forked from https://github.com/IndominusByte/fastapi-jwt-auth, +licensed under MIT license, see [LICENSE](LICENSE). diff --git a/antarest/fastapi_jwt_auth/__init__.py b/antarest/fastapi_jwt_auth/__init__.py new file mode 100644 index 0000000000..a3748ffe33 --- /dev/null +++ b/antarest/fastapi_jwt_auth/__init__.py @@ -0,0 +1,7 @@ +"""FastAPI extension that provides JWT Auth support (secure, easy to use and lightweight)""" + +__version__ = "0.5.0" + +__all__ = ["AuthJWT"] + +from .auth_jwt import AuthJWT diff --git a/antarest/fastapi_jwt_auth/auth_config.py b/antarest/fastapi_jwt_auth/auth_config.py new file mode 100644 index 0000000000..55ca04a25d --- /dev/null +++ b/antarest/fastapi_jwt_auth/auth_config.py @@ -0,0 +1,114 @@ +from datetime import timedelta +from typing import Callable, List + +from pydantic import ValidationError + +from .config import LoadConfig + + +class AuthConfig: + _token = None + _token_location = {"headers"} + + _secret_key = None + _public_key = None + _private_key = None + _algorithm = "HS256" + _decode_algorithms = None + _decode_leeway = 0 + _encode_issuer = None + _decode_issuer = None + _decode_audience = None + _denylist_enabled = False + _denylist_token_checks = {"access", "refresh"} + _header_name = "Authorization" + _header_type = "Bearer" + _token_in_denylist_callback = None + _access_token_expires = timedelta(minutes=15) + _refresh_token_expires = timedelta(days=30) + + # option for create cookies + _access_cookie_key = "access_token_cookie" + _refresh_cookie_key = "refresh_token_cookie" + _access_cookie_path = "/" + _refresh_cookie_path = "/" + _cookie_max_age = None + _cookie_domain = None + _cookie_secure = False + _cookie_samesite = None + + # option for double submit csrf protection + _cookie_csrf_protect = True + _access_csrf_cookie_key = "csrf_access_token" + _refresh_csrf_cookie_key = "csrf_refresh_token" + _access_csrf_cookie_path = "/" + _refresh_csrf_cookie_path = "/" + _access_csrf_header_name = "X-CSRF-Token" + _refresh_csrf_header_name = "X-CSRF-Token" + _csrf_methods = {"POST", "PUT", "PATCH", "DELETE"} + + @property + def jwt_in_cookies(self) -> bool: + return "cookies" in self._token_location + + @property + def jwt_in_headers(self) -> bool: + return "headers" in self._token_location + + @classmethod + def load_config(cls, settings: Callable[..., List[tuple]]) -> "AuthConfig": + try: + config = LoadConfig(**{key.lower(): value for key, value in settings()}) + + cls._token_location = config.authjwt_token_location + cls._secret_key = config.authjwt_secret_key + cls._public_key = config.authjwt_public_key + cls._private_key = config.authjwt_private_key + cls._algorithm = config.authjwt_algorithm + cls._decode_algorithms = config.authjwt_decode_algorithms + cls._decode_leeway = config.authjwt_decode_leeway + cls._encode_issuer = config.authjwt_encode_issuer + cls._decode_issuer = config.authjwt_decode_issuer + cls._decode_audience = config.authjwt_decode_audience + cls._denylist_enabled = config.authjwt_denylist_enabled + cls._denylist_token_checks = config.authjwt_denylist_token_checks + cls._header_name = config.authjwt_header_name + cls._header_type = config.authjwt_header_type + cls._access_token_expires = config.authjwt_access_token_expires + cls._refresh_token_expires = config.authjwt_refresh_token_expires + # option for create cookies + cls._access_cookie_key = config.authjwt_access_cookie_key + cls._refresh_cookie_key = config.authjwt_refresh_cookie_key + cls._access_cookie_path = config.authjwt_access_cookie_path + cls._refresh_cookie_path = config.authjwt_refresh_cookie_path + cls._cookie_max_age = config.authjwt_cookie_max_age + cls._cookie_domain = config.authjwt_cookie_domain + cls._cookie_secure = config.authjwt_cookie_secure + cls._cookie_samesite = config.authjwt_cookie_samesite + # option for double submit csrf protection + cls._cookie_csrf_protect = config.authjwt_cookie_csrf_protect + cls._access_csrf_cookie_key = config.authjwt_access_csrf_cookie_key + cls._refresh_csrf_cookie_key = config.authjwt_refresh_csrf_cookie_key + cls._access_csrf_cookie_path = config.authjwt_access_csrf_cookie_path + cls._refresh_csrf_cookie_path = config.authjwt_refresh_csrf_cookie_path + cls._access_csrf_header_name = config.authjwt_access_csrf_header_name + cls._refresh_csrf_header_name = config.authjwt_refresh_csrf_header_name + cls._csrf_methods = config.authjwt_csrf_methods + except ValidationError as e: + raise e + except Exception: + raise TypeError("Config must be pydantic 'BaseSettings' or list of tuple") + + @classmethod + def token_in_denylist_loader(cls, callback: Callable[..., bool]) -> "AuthConfig": + """ + This decorator sets the callback function that will be called when + a protected endpoint is accessed and will check if the JWT has been + been revoked. By default, this callback is not used. + + *HINT*: The callback must be a function that takes decrypted_token argument, + args for object AuthJWT and this is not used, decrypted_token is decode + JWT (python dictionary) and returns *`True`* if the token has been deny, + or *`False`* otherwise. + """ + cls._token_in_denylist_callback = callback diff --git a/antarest/fastapi_jwt_auth/auth_jwt.py b/antarest/fastapi_jwt_auth/auth_jwt.py new file mode 100644 index 0000000000..19fa3173b4 --- /dev/null +++ b/antarest/fastapi_jwt_auth/auth_jwt.py @@ -0,0 +1,817 @@ +import hmac +import re +import uuid +from datetime import datetime, timedelta, timezone +from typing import Dict, Optional, Sequence, Union + +import jwt +from fastapi import Request, Response, WebSocket +from jwt.algorithms import has_crypto, requires_cryptography + +from .auth_config import AuthConfig +from .exceptions import ( + AccessTokenRequired, + CSRFError, + FreshTokenRequired, + InvalidHeaderError, + JWTDecodeError, + MissingTokenError, + RefreshTokenRequired, + RevokedTokenError, +) + +TYPE_ERROR_MSG = "The response must be an object response FastAPI" + + +class AuthJWT(AuthConfig): + def __init__(self, req: Request = None, res: Response = None): + """ + Get jwt header from incoming request or get + request and response object if jwt in the cookie + + :param req: all incoming request + :param res: response from endpoint + """ + if res and self.jwt_in_cookies: + self._response = res + + if req: + # get request object when cookies in token location + if self.jwt_in_cookies: + self._request = req + # get jwt in headers when headers in token location + if self.jwt_in_headers: + auth = req.headers.get(self._header_name.lower()) + if auth: + self._get_jwt_from_headers(auth) + + def _get_jwt_from_headers(self, auth: str) -> "AuthJWT": + """ + Get token from the headers + + :param auth: value from HeaderName + """ + header_name, header_type = self._header_name, self._header_type + + parts = auth.split() + + # Make sure the header is in a valid format that we are expecting, ie + if not header_type: + # : + if len(parts) != 1: + msg = "Bad {} header. Expected value ''".format(header_name) + raise InvalidHeaderError(status_code=422, message=msg) + self._token = parts[0] + else: + # : + if not re.match(r"{}\s".format(header_type), auth) or len(parts) != 2: + msg = "Bad {} header. Expected value '{} '".format(header_name, header_type) + raise InvalidHeaderError(status_code=422, message=msg) + self._token = parts[1] + + def _get_jwt_identifier(self) -> str: + return str(uuid.uuid4()) + + def _get_int_from_datetime(self, value: datetime) -> int: + """ + :param value: datetime with or without timezone, if don't contains timezone + it will managed as it is UTC + :return: Seconds since the Epoch + """ + if not isinstance(value, datetime): # pragma: no cover + raise TypeError("a datetime is required") + return int(value.timestamp()) + + def _get_secret_key(self, algorithm: str, process: str) -> str: + """ + Get key with a different algorithm + + :param algorithm: algorithm for decode and encode token + :param process: for indicating get key for encode or decode token + + :return: plain text or RSA depends on algorithm + """ + symmetric_algorithms, asymmetric_algorithms = {"HS256", "HS384", "HS512"}, requires_cryptography + + if algorithm not in symmetric_algorithms and algorithm not in asymmetric_algorithms: + raise ValueError("Algorithm {} could not be found".format(algorithm)) + + if algorithm in symmetric_algorithms: + if not self._secret_key: + raise RuntimeError("authjwt_secret_key must be set when using symmetric algorithm {}".format(algorithm)) + + return self._secret_key + + if algorithm in asymmetric_algorithms and not has_crypto: + raise RuntimeError( + "Missing dependencies for using asymmetric algorithms. run 'pip install fastapi-jwt-auth[asymmetric]'" + ) + + if process == "encode": + if not self._private_key: + raise RuntimeError( + "authjwt_private_key must be set when using asymmetric algorithm {}".format(algorithm) + ) + + return self._private_key + + if process == "decode": + if not self._public_key: + raise RuntimeError( + "authjwt_public_key must be set when using asymmetric algorithm {}".format(algorithm) + ) + + return self._public_key + + def _create_token( + self, + subject: Union[str, int], + type_token: str, + exp_time: Optional[int], + fresh: Optional[bool] = False, + algorithm: Optional[str] = None, + headers: Optional[Dict] = None, + issuer: Optional[str] = None, + audience: Optional[Union[str, Sequence[str]]] = None, + user_claims: Optional[Dict] = {}, + ) -> str: + """ + Create token for access_token and refresh_token (utf-8) + + :param subject: Identifier for who this token is for example id or username from database. + :param type_token: indicate token is access_token or refresh_token + :param exp_time: Set the duration of the JWT + :param fresh: Optional when token is access_token this param required + :param algorithm: algorithm allowed to encode the token + :param headers: valid dict for specifying additional headers in JWT header section + :param issuer: expected issuer in the JWT + :param audience: expected audience in the JWT + :param user_claims: Custom claims to include in this token. This data must be dictionary + + :return: Encoded token + """ + # Validation type data + if not isinstance(subject, (str, int)): + raise TypeError("subject must be a string or integer") + if not isinstance(fresh, bool): + raise TypeError("fresh must be a boolean") + if audience and not isinstance(audience, (str, list, tuple, set, frozenset)): + raise TypeError("audience must be a string or sequence") + if algorithm and not isinstance(algorithm, str): + raise TypeError("algorithm must be a string") + if user_claims and not isinstance(user_claims, dict): + raise TypeError("user_claims must be a dictionary") + + # Data section + reserved_claims = { + "sub": subject, + "iat": self._get_int_from_datetime(datetime.now(timezone.utc)), + "nbf": self._get_int_from_datetime(datetime.now(timezone.utc)), + "jti": self._get_jwt_identifier(), + } + + custom_claims = {"type": type_token} + + # for access_token only fresh needed + if type_token == "access": + custom_claims["fresh"] = fresh + # if cookie in token location and csrf protection enabled + if self.jwt_in_cookies and self._cookie_csrf_protect: + custom_claims["csrf"] = self._get_jwt_identifier() + + if exp_time: + reserved_claims["exp"] = exp_time + if issuer: + reserved_claims["iss"] = issuer + if audience: + reserved_claims["aud"] = audience + + algorithm = algorithm or self._algorithm + + secret_key = self._get_secret_key(algorithm, "encode") + + return jwt.encode( + {**reserved_claims, **custom_claims, **user_claims}, secret_key, algorithm=algorithm, headers=headers + ) + + def _has_token_in_denylist_callback(self) -> bool: + """ + Return True if token denylist callback set + """ + return self._token_in_denylist_callback is not None + + def _check_token_is_revoked(self, raw_token: Dict[str, Union[str, int, bool]]) -> None: + """ + Ensure that AUTHJWT_DENYLIST_ENABLED is true and callback regulated, and then + call function denylist callback with passing decode JWT, if true + raise exception Token has been revoked + """ + if not self._denylist_enabled: + return + + if not self._has_token_in_denylist_callback(): + raise RuntimeError( + "A token_in_denylist_callback must be provided via " + "the '@AuthJWT.token_in_denylist_loader' if " + "authjwt_denylist_enabled is 'True'" + ) + + if self._token_in_denylist_callback.__func__(raw_token): + raise RevokedTokenError(status_code=401, message="Token has been revoked") + + def _get_expired_time( + self, type_token: str, expires_time: Optional[Union[timedelta, int, bool]] = None + ) -> Union[None, int]: + """ + Dynamic token expired, if expires_time is False exp claim not created + + :param type_token: indicate token is access_token or refresh_token + :param expires_time: duration expired jwt + + :return: duration exp claim jwt + """ + if expires_time and not isinstance(expires_time, (timedelta, int, bool)): + raise TypeError("expires_time must be between timedelta, int, bool") + + if expires_time is not False: + if type_token == "access": + expires_time = expires_time or self._access_token_expires + if type_token == "refresh": + expires_time = expires_time or self._refresh_token_expires + + if expires_time is not False: + if isinstance(expires_time, bool): + if type_token == "access": + expires_time = self._access_token_expires + if type_token == "refresh": + expires_time = self._refresh_token_expires + if isinstance(expires_time, timedelta): + expires_time = int(expires_time.total_seconds()) + + return self._get_int_from_datetime(datetime.now(timezone.utc)) + expires_time + else: + return None + + def create_access_token( + self, + subject: Union[str, int], + fresh: Optional[bool] = False, + algorithm: Optional[str] = None, + headers: Optional[Dict] = None, + expires_time: Optional[Union[timedelta, int, bool]] = None, + audience: Optional[Union[str, Sequence[str]]] = None, + user_claims: Optional[Dict] = {}, + ) -> str: + """ + Create a access token with 15 minutes for expired time (default), + info for param and return check to function create token + + :return: hash token + """ + return self._create_token( + subject=subject, + type_token="access", + exp_time=self._get_expired_time("access", expires_time), + fresh=fresh, + algorithm=algorithm, + headers=headers, + audience=audience, + user_claims=user_claims, + issuer=self._encode_issuer, + ) + + def create_refresh_token( + self, + subject: Union[str, int], + algorithm: Optional[str] = None, + headers: Optional[Dict] = None, + expires_time: Optional[Union[timedelta, int, bool]] = None, + audience: Optional[Union[str, Sequence[str]]] = None, + user_claims: Optional[Dict] = {}, + ) -> str: + """ + Create a refresh token with 30 days for expired time (default), + info for param and return check to function create token + + :return: hash token + """ + return self._create_token( + subject=subject, + type_token="refresh", + exp_time=self._get_expired_time("refresh", expires_time), + algorithm=algorithm, + headers=headers, + audience=audience, + user_claims=user_claims, + ) + + def _get_csrf_token(self, encoded_token: str) -> str: + """ + Returns the CSRF double submit token from an encoded JWT. + + :param encoded_token: The encoded JWT + :return: The CSRF double submit token + """ + return self._verified_token(encoded_token)["csrf"] + + def set_access_cookies( + self, encoded_access_token: str, response: Optional[Response] = None, max_age: Optional[int] = None + ) -> None: + """ + Configures the response to set access token in a cookie. + this will also set the CSRF double submit values in a separate cookie + + :param encoded_access_token: The encoded access token to set in the cookies + :param response: The FastAPI response object to set the access cookies in + :param max_age: The max age of the cookie value should be the number of seconds (integer) + """ + if not self.jwt_in_cookies: + raise RuntimeWarning( + "set_access_cookies() called without 'authjwt_token_location' configured to use cookies" + ) + + if max_age and not isinstance(max_age, int): + raise TypeError("max_age must be a integer") + if response and not isinstance(response, Response): + raise TypeError(TYPE_ERROR_MSG) + + response = response or self._response + + # Set the access JWT in the cookie + response.set_cookie( + self._access_cookie_key, + encoded_access_token, + max_age=max_age or self._cookie_max_age, + path=self._access_cookie_path, + domain=self._cookie_domain, + secure=self._cookie_secure, + httponly=True, + samesite=self._cookie_samesite, + ) + + # If enabled, set the csrf double submit access cookie + if self._cookie_csrf_protect: + response.set_cookie( + self._access_csrf_cookie_key, + self._get_csrf_token(encoded_access_token), + max_age=max_age or self._cookie_max_age, + path=self._access_csrf_cookie_path, + domain=self._cookie_domain, + secure=self._cookie_secure, + httponly=False, + samesite=self._cookie_samesite, + ) + + def set_refresh_cookies( + self, encoded_refresh_token: str, response: Optional[Response] = None, max_age: Optional[int] = None + ) -> None: + """ + Configures the response to set refresh token in a cookie. + this will also set the CSRF double submit values in a separate cookie + + :param encoded_refresh_token: The encoded refresh token to set in the cookies + :param response: The FastAPI response object to set the refresh cookies in + :param max_age: The max age of the cookie value should be the number of seconds (integer) + """ + if not self.jwt_in_cookies: + raise RuntimeWarning( + "set_refresh_cookies() called without 'authjwt_token_location' configured to use cookies" + ) + + if max_age and not isinstance(max_age, int): + raise TypeError("max_age must be a integer") + if response and not isinstance(response, Response): + raise TypeError(TYPE_ERROR_MSG) + + response = response or self._response + + # Set the refresh JWT in the cookie + response.set_cookie( + self._refresh_cookie_key, + encoded_refresh_token, + max_age=max_age or self._cookie_max_age, + path=self._refresh_cookie_path, + domain=self._cookie_domain, + secure=self._cookie_secure, + httponly=True, + samesite=self._cookie_samesite, + ) + + # If enabled, set the csrf double submit refresh cookie + if self._cookie_csrf_protect: + response.set_cookie( + self._refresh_csrf_cookie_key, + self._get_csrf_token(encoded_refresh_token), + max_age=max_age or self._cookie_max_age, + path=self._refresh_csrf_cookie_path, + domain=self._cookie_domain, + secure=self._cookie_secure, + httponly=False, + samesite=self._cookie_samesite, + ) + + def unset_jwt_cookies(self, response: Optional[Response] = None) -> None: + """ + Unset (delete) all jwt stored in a cookie + + :param response: The FastAPI response object to delete the JWT cookies in. + """ + self.unset_access_cookies(response) + self.unset_refresh_cookies(response) + + def unset_access_cookies(self, response: Optional[Response] = None) -> None: + """ + Remove access token and access CSRF double submit from the response cookies + + :param response: The FastAPI response object to delete the access cookies in. + """ + if not self.jwt_in_cookies: + raise RuntimeWarning( + "unset_access_cookies() called without 'authjwt_token_location' configured to use cookies" + ) + + if response and not isinstance(response, Response): + raise TypeError(TYPE_ERROR_MSG) + + response = response or self._response + + response.delete_cookie(self._access_cookie_key, path=self._access_cookie_path, domain=self._cookie_domain) + + if self._cookie_csrf_protect: + response.delete_cookie( + self._access_csrf_cookie_key, path=self._access_csrf_cookie_path, domain=self._cookie_domain + ) + + def unset_refresh_cookies(self, response: Optional[Response] = None) -> None: + """ + Remove refresh token and refresh CSRF double submit from the response cookies + + :param response: The FastAPI response object to delete the refresh cookies in. + """ + if not self.jwt_in_cookies: + raise RuntimeWarning( + "unset_refresh_cookies() called without 'authjwt_token_location' configured to use cookies" + ) + + if response and not isinstance(response, Response): + raise TypeError(TYPE_ERROR_MSG) + + response = response or self._response + + response.delete_cookie(self._refresh_cookie_key, path=self._refresh_cookie_path, domain=self._cookie_domain) + + if self._cookie_csrf_protect: + response.delete_cookie( + self._refresh_csrf_cookie_key, path=self._refresh_csrf_cookie_path, domain=self._cookie_domain + ) + + def _verify_and_get_jwt_optional_in_cookies( + self, + request: Union[Request, WebSocket], + csrf_token: Optional[str] = None, + ) -> "AuthJWT": + """ + Optionally check if cookies have a valid access token. if an access token present in + cookies, self._token will set. raises exception error when an access token is invalid + or doesn't match with CSRF token double submit + + :param request: for identity get cookies from HTTP or WebSocket + :param csrf_token: the CSRF double submit token + """ + if not isinstance(request, (Request, WebSocket)): + raise TypeError("request must be an instance of 'Request' or 'WebSocket'") + + cookie_key = self._access_cookie_key + cookie = request.cookies.get(cookie_key) + if not isinstance(request, WebSocket): + csrf_token = request.headers.get(self._access_csrf_header_name) + + if cookie and self._cookie_csrf_protect and not csrf_token: + if isinstance(request, WebSocket) or request.method in self._csrf_methods: + raise CSRFError(status_code=401, message="Missing CSRF Token") + + # set token from cookie and verify jwt + self._token = cookie + self._verify_jwt_optional_in_request(self._token) + + decoded_token = self.get_raw_jwt() + + if decoded_token and self._cookie_csrf_protect and csrf_token: + if isinstance(request, WebSocket) or request.method in self._csrf_methods: + if "csrf" not in decoded_token: + raise JWTDecodeError(status_code=422, message="Missing claim: csrf") + if not hmac.compare_digest(csrf_token, decoded_token["csrf"]): + raise CSRFError(status_code=401, message="CSRF double submit tokens do not match") + + def _verify_and_get_jwt_in_cookies( + self, + type_token: str, + request: Union[Request, WebSocket], + csrf_token: Optional[str] = None, + fresh: Optional[bool] = False, + ) -> "AuthJWT": + """ + Check if cookies have a valid access or refresh token. if an token present in + cookies, self._token will set. raises exception error when an access or refresh token + is invalid or doesn't match with CSRF token double submit + + :param type_token: indicate token is access or refresh token + :param request: for identity get cookies from HTTP or WebSocket + :param csrf_token: the CSRF double submit token + :param fresh: check freshness token if True + """ + if type_token not in ["access", "refresh"]: + raise ValueError("type_token must be between 'access' or 'refresh'") + if not isinstance(request, (Request, WebSocket)): + raise TypeError("request must be an instance of 'Request' or 'WebSocket'") + + if type_token == "access": + cookie_key = self._access_cookie_key + cookie = request.cookies.get(cookie_key) + if not isinstance(request, WebSocket): + csrf_token = request.headers.get(self._access_csrf_header_name) + if type_token == "refresh": + cookie_key = self._refresh_cookie_key + cookie = request.cookies.get(cookie_key) + if not isinstance(request, WebSocket): + csrf_token = request.headers.get(self._refresh_csrf_header_name) + + if not cookie: + raise MissingTokenError(status_code=401, message="Missing cookie {}".format(cookie_key)) + + if self._cookie_csrf_protect and not csrf_token: + if isinstance(request, WebSocket) or request.method in self._csrf_methods: + raise CSRFError(status_code=401, message="Missing CSRF Token") + + # set token from cookie and verify jwt + self._token = cookie + self._verify_jwt_in_request(self._token, type_token, "cookies", fresh) + + decoded_token = self.get_raw_jwt() + + if self._cookie_csrf_protect and csrf_token: + if isinstance(request, WebSocket) or request.method in self._csrf_methods: + if "csrf" not in decoded_token: + raise JWTDecodeError(status_code=422, message="Missing claim: csrf") + if not hmac.compare_digest(csrf_token, decoded_token["csrf"]): + raise CSRFError(status_code=401, message="CSRF double submit tokens do not match") + + def _verify_jwt_optional_in_request(self, token: str) -> None: + """ + Optionally check if this request has a valid access token + + :param token: The encoded JWT + """ + if token: + self._verifying_token(token) + + if token and self.get_raw_jwt(token)["type"] != "access": + raise AccessTokenRequired(status_code=422, message="Only access tokens are allowed") + + def _verify_jwt_in_request( + self, token: str, type_token: str, token_from: str, fresh: Optional[bool] = False + ) -> None: + """ + Ensure that the requester has a valid token. this also check the freshness of the access token + + :param token: The encoded JWT + :param type_token: indicate token is access or refresh token + :param token_from: indicate token from headers cookies, websocket + :param fresh: check freshness token if True + """ + if type_token not in ["access", "refresh"]: + raise ValueError("type_token must be between 'access' or 'refresh'") + if token_from not in ["headers", "cookies", "websocket"]: + raise ValueError("token_from must be between 'headers', 'cookies', 'websocket'") + + if not token: + if token_from == "headers": + raise MissingTokenError(status_code=401, message="Missing {} Header".format(self._header_name)) + if token_from == "websocket": + raise MissingTokenError( + status_code=1008, message="Missing {} token from Query or Path".format(type_token) + ) + + # verify jwt + issuer = self._decode_issuer if type_token == "access" else None + self._verifying_token(token, issuer) + + if self.get_raw_jwt(token)["type"] != type_token: + msg = "Only {} tokens are allowed".format(type_token) + if type_token == "access": + raise AccessTokenRequired(status_code=422, message=msg) + if type_token == "refresh": + raise RefreshTokenRequired(status_code=422, message=msg) + + if fresh and not self.get_raw_jwt(token)["fresh"]: + raise FreshTokenRequired(status_code=401, message="Fresh token required") + + def _verifying_token(self, encoded_token: str, issuer: Optional[str] = None) -> None: + """ + Verified token and check if token is revoked + + :param encoded_token: token hash + :param issuer: expected issuer in the JWT + """ + raw_token = self._verified_token(encoded_token, issuer) + if raw_token["type"] in self._denylist_token_checks: + self._check_token_is_revoked(raw_token) + + def _verified_token(self, encoded_token: str, issuer: Optional[str] = None) -> Dict[str, Union[str, int, bool]]: + """ + Verified token and catch all error from jwt package and return decode token + + :param encoded_token: token hash + :param issuer: expected issuer in the JWT + + :return: raw data from the hash token in the form of a dictionary + """ + algorithms = self._decode_algorithms or [self._algorithm] + secret_key = self._get_secret_key(self._algorithm, "decode") + try: + return jwt.decode( + encoded_token, + secret_key, + issuer=issuer, + audience=self._decode_audience, + leeway=self._decode_leeway, + algorithms=algorithms, + ) + except Exception as err: + raise JWTDecodeError(status_code=422, message=str(err)) + + def jwt_required( + self, + auth_from: str = "request", + token: Optional[str] = None, + websocket: Optional[WebSocket] = None, + csrf_token: Optional[str] = None, + ) -> None: + """ + Only access token can access this function + + :param auth_from: for identity get token from HTTP or WebSocket + :param token: the encoded JWT, it's required if the protected endpoint use WebSocket to + authorization and get token from Query Url or Path + :param websocket: an instance of WebSocket, it's required if protected endpoint use a cookie to authorization + :param csrf_token: the CSRF double submit token. since WebSocket cannot add specifying additional headers + its must be passing csrf_token manually and can achieve by Query Url or Path + """ + if auth_from == "websocket": + if websocket: + self._verify_and_get_jwt_in_cookies("access", websocket, csrf_token) + else: + self._verify_jwt_in_request(token, "access", "websocket") + + if auth_from == "request": + if len(self._token_location) == 2: + if self._token and self.jwt_in_headers: + self._verify_jwt_in_request(self._token, "access", "headers") + if not self._token and self.jwt_in_cookies: + self._verify_and_get_jwt_in_cookies("access", self._request) + else: + if self.jwt_in_headers: + self._verify_jwt_in_request(self._token, "access", "headers") + if self.jwt_in_cookies: + self._verify_and_get_jwt_in_cookies("access", self._request) + + def jwt_optional( + self, + auth_from: str = "request", + token: Optional[str] = None, + websocket: Optional[WebSocket] = None, + csrf_token: Optional[str] = None, + ) -> None: + """ + If an access token in present in the request you can get data from get_raw_jwt() or get_jwt_subject(), + If no access token is present in the request, this endpoint will still be called, but + get_raw_jwt() or get_jwt_subject() will return None + + :param auth_from: for identity get token from HTTP or WebSocket + :param token: the encoded JWT, it's required if the protected endpoint use WebSocket to + authorization and get token from Query Url or Path + :param websocket: an instance of WebSocket, it's required if protected endpoint use a cookie to authorization + :param csrf_token: the CSRF double submit token. since WebSocket cannot add specifying additional headers + its must be passing csrf_token manually and can achieve by Query Url or Path + """ + if auth_from == "websocket": + if websocket: + self._verify_and_get_jwt_optional_in_cookies(websocket, csrf_token) + else: + self._verify_jwt_optional_in_request(token) + + if auth_from == "request": + if len(self._token_location) == 2: + if self._token and self.jwt_in_headers: + self._verify_jwt_optional_in_request(self._token) + if not self._token and self.jwt_in_cookies: + self._verify_and_get_jwt_optional_in_cookies(self._request) + else: + if self.jwt_in_headers: + self._verify_jwt_optional_in_request(self._token) + if self.jwt_in_cookies: + self._verify_and_get_jwt_optional_in_cookies(self._request) + + def jwt_refresh_token_required( + self, + auth_from: str = "request", + token: Optional[str] = None, + websocket: Optional[WebSocket] = None, + csrf_token: Optional[str] = None, + ) -> None: + """ + This function will ensure that the requester has a valid refresh token + + :param auth_from: for identity get token from HTTP or WebSocket + :param token: the encoded JWT, it's required if the protected endpoint use WebSocket to + authorization and get token from Query Url or Path + :param websocket: an instance of WebSocket, it's required if protected endpoint use a cookie to authorization + :param csrf_token: the CSRF double submit token. since WebSocket cannot add specifying additional headers + its must be passing csrf_token manually and can achieve by Query Url or Path + """ + if auth_from == "websocket": + if websocket: + self._verify_and_get_jwt_in_cookies("refresh", websocket, csrf_token) + else: + self._verify_jwt_in_request(token, "refresh", "websocket") + + if auth_from == "request": + if len(self._token_location) == 2: + if self._token and self.jwt_in_headers: + self._verify_jwt_in_request(self._token, "refresh", "headers") + if not self._token and self.jwt_in_cookies: + self._verify_and_get_jwt_in_cookies("refresh", self._request) + else: + if self.jwt_in_headers: + self._verify_jwt_in_request(self._token, "refresh", "headers") + if self.jwt_in_cookies: + self._verify_and_get_jwt_in_cookies("refresh", self._request) + + def fresh_jwt_required( + self, + auth_from: str = "request", + token: Optional[str] = None, + websocket: Optional[WebSocket] = None, + csrf_token: Optional[str] = None, + ) -> None: + """ + This function will ensure that the requester has a valid access token and fresh token + + :param auth_from: for identity get token from HTTP or WebSocket + :param token: the encoded JWT, it's required if the protected endpoint use WebSocket to + authorization and get token from Query Url or Path + :param websocket: an instance of WebSocket, it's required if protected endpoint use a cookie to authorization + :param csrf_token: the CSRF double submit token. since WebSocket cannot add specifying additional headers + its must be passing csrf_token manually and can achieve by Query Url or Path + """ + if auth_from == "websocket": + if websocket: + self._verify_and_get_jwt_in_cookies("access", websocket, csrf_token, True) + else: + self._verify_jwt_in_request(token, "access", "websocket", True) + + if auth_from == "request": + if len(self._token_location) == 2: + if self._token and self.jwt_in_headers: + self._verify_jwt_in_request(self._token, "access", "headers", True) + if not self._token and self.jwt_in_cookies: + self._verify_and_get_jwt_in_cookies("access", self._request, fresh=True) + else: + if self.jwt_in_headers: + self._verify_jwt_in_request(self._token, "access", "headers", True) + if self.jwt_in_cookies: + self._verify_and_get_jwt_in_cookies("access", self._request, fresh=True) + + def get_raw_jwt(self, encoded_token: Optional[str] = None) -> Optional[Dict[str, Union[str, int, bool]]]: + """ + this will return the python dictionary which has all of the claims of the JWT that is accessing the endpoint. + If no JWT is currently present, return None instead + + :param encoded_token: The encoded JWT from parameter + :return: claims of JWT + """ + token = encoded_token or self._token + + if token: + return self._verified_token(token) + return None + + def get_jti(self, encoded_token: str) -> str: + """ + Returns the JTI (unique identifier) of an encoded JWT + + :param encoded_token: The encoded JWT from parameter + :return: string of JTI + """ + return self._verified_token(encoded_token)["jti"] + + def get_jwt_subject(self) -> Optional[Union[str, int]]: + """ + this will return the subject of the JWT that is accessing this endpoint. + If no JWT is present, `None` is returned instead. + + :return: sub of JWT + """ + if self._token: + return self._verified_token(self._token)["sub"] + return None diff --git a/antarest/fastapi_jwt_auth/config.py b/antarest/fastapi_jwt_auth/config.py new file mode 100644 index 0000000000..f04ace9cd7 --- /dev/null +++ b/antarest/fastapi_jwt_auth/config.py @@ -0,0 +1,90 @@ +import typing as t +from datetime import timedelta +from typing import List, Optional, Sequence, Union + +from pydantic import BaseModel, StrictBool, StrictInt, StrictStr, ValidationError, field_validator, model_validator + + +class LoadConfig(BaseModel): + authjwt_token_location: Optional[t.Set[StrictStr]] = {"headers"} + authjwt_secret_key: Optional[StrictStr] = None + authjwt_public_key: Optional[StrictStr] = None + authjwt_private_key: Optional[StrictStr] = None + authjwt_algorithm: Optional[StrictStr] = "HS256" + authjwt_decode_algorithms: Optional[List[StrictStr]] = None + authjwt_decode_leeway: Optional[Union[StrictInt, timedelta]] = 0 + authjwt_encode_issuer: Optional[StrictStr] = None + authjwt_decode_issuer: Optional[StrictStr] = None + authjwt_decode_audience: Optional[Union[StrictStr, Sequence[StrictStr]]] = None + authjwt_denylist_enabled: Optional[StrictBool] = False + authjwt_denylist_token_checks: Optional[t.Set[StrictStr]] = {"access", "refresh"} + authjwt_header_name: Optional[StrictStr] = "Authorization" + authjwt_header_type: Optional[StrictStr] = "Bearer" + authjwt_access_token_expires: Optional[Union[StrictBool, StrictInt, timedelta]] = timedelta(minutes=15) + authjwt_refresh_token_expires: Optional[Union[StrictBool, StrictInt, timedelta]] = timedelta(days=30) + # option for create cookies + authjwt_access_cookie_key: Optional[StrictStr] = "access_token_cookie" + authjwt_refresh_cookie_key: Optional[StrictStr] = "refresh_token_cookie" + authjwt_access_cookie_path: Optional[StrictStr] = "/" + authjwt_refresh_cookie_path: Optional[StrictStr] = "/" + authjwt_cookie_max_age: Optional[StrictInt] = None + authjwt_cookie_domain: Optional[StrictStr] = None + authjwt_cookie_secure: Optional[StrictBool] = False + authjwt_cookie_samesite: Optional[StrictStr] = None + # option for double submit csrf protection + authjwt_cookie_csrf_protect: Optional[StrictBool] = True + authjwt_access_csrf_cookie_key: Optional[StrictStr] = "csrf_access_token" + authjwt_refresh_csrf_cookie_key: Optional[StrictStr] = "csrf_refresh_token" + authjwt_access_csrf_cookie_path: Optional[StrictStr] = "/" + authjwt_refresh_csrf_cookie_path: Optional[StrictStr] = "/" + authjwt_access_csrf_header_name: Optional[StrictStr] = "X-CSRF-Token" + authjwt_refresh_csrf_header_name: Optional[StrictStr] = "X-CSRF-Token" + authjwt_csrf_methods: Optional[t.Set[StrictStr]] = {"POST", "PUT", "PATCH", "DELETE"} + + @field_validator("authjwt_access_token_expires") + def validate_access_token_expires( + cls, v: Optional[Union[StrictBool, StrictInt, timedelta]] + ) -> Optional[Union[StrictBool, StrictInt, timedelta]]: + if v is True: + raise ValueError("The 'authjwt_access_token_expires' only accept value False (bool)") + return v + + @field_validator("authjwt_refresh_token_expires") + def validate_refresh_token_expires( + cls, v: Optional[Union[StrictBool, StrictInt, timedelta]] + ) -> Optional[Union[StrictBool, StrictInt, timedelta]]: + if v is True: + raise ValueError("The 'authjwt_refresh_token_expires' only accept value False (bool)") + return v + + @field_validator("authjwt_cookie_samesite") + def validate_cookie_samesite(cls, v: Optional[StrictStr]) -> Optional[StrictStr]: + if v not in ["strict", "lax", "none"]: + raise ValueError("The 'authjwt_cookie_samesite' must be between 'strict', 'lax', 'none'") + return v + + @model_validator(mode="before") + def check_type_validity(cls, values: t.Dict[str, t.Any]) -> t.Dict[str, t.Any]: + for _ in values.get("authjwt_csrf_methods", []): + if _.upper() not in ["POST", "PUT", "PATCH", "DELETE"]: + raise ValidationError( + f"The 'authjwt_csrf_methods' must be between http request methods and it's {_.upper()}" + ) + + for _ in values.get("authjwt_cookie_samesite", []): + if _ not in ["strict", "lax", "none"]: + raise ValidationError( + f"The 'authjwt_cookie_samesite' must be between 'strict', 'lax', 'none' and it's {_}" + ) + + for _ in values.get("authjwt_token_location", []): + if _ not in ["headers", "cookies"]: + raise ValidationError( + f"The 'authjwt_token_location' must be between 'headers' or 'cookies' and it's {_}" + ) + + return values + + class Config: + str_min_length = 1 + str_strip_whitespace = True diff --git a/antarest/fastapi_jwt_auth/exceptions.py b/antarest/fastapi_jwt_auth/exceptions.py new file mode 100644 index 0000000000..1057571c0a --- /dev/null +++ b/antarest/fastapi_jwt_auth/exceptions.py @@ -0,0 +1,89 @@ +class AuthJWTException(Exception): + """ + Base except which all fastapi_jwt_auth errors extend + """ + + pass + + +class InvalidHeaderError(AuthJWTException): + """ + An error getting jwt in header or jwt header information from a request + """ + + def __init__(self, status_code: int, message: str): + self.status_code = status_code + self.message = message + + +class JWTDecodeError(AuthJWTException): + """ + An error decoding a JWT + """ + + def __init__(self, status_code: int, message: str): + self.status_code = status_code + self.message = message + + +class CSRFError(AuthJWTException): + """ + An error with CSRF protection + """ + + def __init__(self, status_code: int, message: str): + self.status_code = status_code + self.message = message + + +class MissingTokenError(AuthJWTException): + """ + Error raised when token not found + """ + + def __init__(self, status_code: int, message: str): + self.status_code = status_code + self.message = message + + +class RevokedTokenError(AuthJWTException): + """ + Error raised when a revoked token attempt to access a protected endpoint + """ + + def __init__(self, status_code: int, message: str): + self.status_code = status_code + self.message = message + + +class AccessTokenRequired(AuthJWTException): + """ + Error raised when a valid, non-access JWT attempt to access an endpoint + protected by jwt_required, jwt_optional, fresh_jwt_required + """ + + def __init__(self, status_code: int, message: str): + self.status_code = status_code + self.message = message + + +class RefreshTokenRequired(AuthJWTException): + """ + Error raised when a valid, non-refresh JWT attempt to access an endpoint + protected by jwt_refresh_token_required + """ + + def __init__(self, status_code: int, message: str): + self.status_code = status_code + self.message = message + + +class FreshTokenRequired(AuthJWTException): + """ + Error raised when a valid, non-fresh JWT attempt to access an endpoint + protected by fresh_jwt_required + """ + + def __init__(self, status_code: int, message: str): + self.status_code = status_code + self.message = message diff --git a/antarest/front.py b/antarest/front.py new file mode 100644 index 0000000000..8de0f05e82 --- /dev/null +++ b/antarest/front.py @@ -0,0 +1,139 @@ +# Copyright (c) 2024, RTE (https://www.rte-france.com) +# +# See AUTHORS.txt +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +# This file is part of the Antares project. +""" +This module contains the logic necessary to serve both +the front-end application and the backend HTTP application. + +This includes: + - serving static frontend files + - redirecting "not found" requests to home, which itself redirects to index.html + - providing the endpoint /config.json, which the front-end uses to know + what are the API and websocket prefixes +""" + +import re +from pathlib import Path +from typing import Any, Optional, Sequence + +from fastapi import FastAPI +from pydantic import BaseModel +from starlette.middleware.base import BaseHTTPMiddleware, DispatchFunction, RequestResponseEndpoint +from starlette.requests import Request +from starlette.responses import FileResponse +from starlette.staticfiles import StaticFiles +from starlette.types import ASGIApp + +from antarest.core.utils.string import to_camel_case + + +class RedirectMiddleware(BaseHTTPMiddleware): + """ + Middleware that rewrites the URL path to "/" for incoming requests + that do not match the known end points. This is useful for redirecting requests + to the main page of a ReactJS application when the user refreshes the browser. + """ + + def __init__( + self, + app: ASGIApp, + dispatch: Optional[DispatchFunction] = None, + route_paths: Sequence[str] = (), + ) -> None: + """ + Initializes an instance of the URLRewriterMiddleware. + + Args: + app: The ASGI application to which the middleware is applied. + dispatch: The dispatch function to use. + route_paths: The known route paths of the application. + Requests that do not match any of these paths will be rewritten to the root path. + + Note: + The `route_paths` should contain all the known endpoints of the application. + """ + dispatch = self.dispatch if dispatch is None else dispatch + super().__init__(app, dispatch) + self.known_prefixes = {re.findall(r"/(?:(?!/).)*", p)[0] for p in route_paths if p != "/"} + + async def dispatch(self, request: Request, call_next: RequestResponseEndpoint) -> Any: + """ + Intercepts the incoming request and rewrites the URL path if necessary. + Passes the modified or original request to the next middleware or endpoint handler. + """ + url_path = request.scope["path"] + if url_path in {"", "/"}: + pass + elif not any(url_path.startswith(ep) for ep in self.known_prefixes): + request.scope["path"] = "/" + return await call_next(request) + + +class BackEndConfig(BaseModel): + """ + Configuration about backend URLs served to the frontend. + """ + + rest_endpoint: str + ws_endpoint: str + + class Config: + populate_by_name = True + alias_generator = to_camel_case + + +def create_backend_config(api_prefix: str) -> BackEndConfig: + if not api_prefix.startswith("/"): + api_prefix = "/" + api_prefix + return BackEndConfig(rest_endpoint=f"{api_prefix}", ws_endpoint=f"{api_prefix}/ws") + + +def add_front_app(application: FastAPI, resources_dir: Path, api_prefix: str) -> None: + """ + This functions adds the logic necessary to serve both + the front-end application and the backend HTTP application. + + This includes: + - serving static frontend files + - redirecting "not found" requests to home, which itself redirects to index.html + - providing the endpoint /config.json, which the front-end uses to know + what are the API and websocket prefixes + """ + backend_config = create_backend_config(api_prefix) + + front_app_dir = resources_dir / "webapp" + + # Serve front-end files + application.mount( + "/static", + StaticFiles(directory=front_app_dir), + name="static", + ) + + # Redirect home to index.html + @application.get("/", include_in_schema=False) + def home(request: Request) -> Any: + return FileResponse(front_app_dir / "index.html", 200) + + # Serve config for the front-end at /config.json + @application.get("/config.json", include_in_schema=False) + def get_api_paths_config(request: Request) -> BackEndConfig: + return backend_config + + # When the web application is running in Desktop mode, the ReactJS web app + # is served at the `/static` entry point. Any requests that are not API + # requests should be redirected to the `index.html` file, which will handle + # the route provided by the URL. + route_paths = [r.path for r in application.routes] # type: ignore + application.add_middleware( + RedirectMiddleware, + route_paths=route_paths, + ) diff --git a/antarest/gui.py b/antarest/gui.py index af4c41d1e3..f36904a060 100644 --- a/antarest/gui.py +++ b/antarest/gui.py @@ -18,16 +18,8 @@ from multiprocessing import Process from pathlib import Path -try: - # `httpx` is a modern alternative to the `requests` library - import httpx as requests - from httpx import ConnectError as ConnectionError -except ImportError: - # noinspection PyUnresolvedReferences, PyPackageRequirements - import requests - from requests import ConnectionError - -import uvicorn # type: ignore +import httpx +import uvicorn from PyQt5.QtGui import QIcon from PyQt5.QtWidgets import QAction, QApplication, QMenu, QSystemTrayIcon @@ -102,8 +94,8 @@ def main() -> None: ) server.start() for _ in range(30, 0, -1): - with contextlib.suppress(ConnectionError): - res = requests.get("http://localhost:8080") + with contextlib.suppress(httpx.ConnectError): + res = httpx.get("http://localhost:8080") if res.status_code == 200: break time.sleep(1) diff --git a/antarest/launcher/adapters/abstractlauncher.py b/antarest/launcher/adapters/abstractlauncher.py index 64aed89fe0..4b845f8de0 100644 --- a/antarest/launcher/adapters/abstractlauncher.py +++ b/antarest/launcher/adapters/abstractlauncher.py @@ -100,7 +100,7 @@ def update_log(log_line: str) -> None: ) launch_progress_json = self.cache.get(id=f"Launch_Progress_{job_id}") or {} - launch_progress_dto = LaunchProgressDTO.parse_obj(launch_progress_json) + launch_progress_dto = LaunchProgressDTO.model_validate(launch_progress_json) if launch_progress_dto.parse_log_lines(log_line.splitlines()): self.event_bus.push( Event( @@ -114,6 +114,6 @@ def update_log(log_line: str) -> None: channel=EventChannelDirectory.JOB_STATUS + job_id, ) ) - self.cache.put(f"Launch_Progress_{job_id}", launch_progress_dto.dict()) + self.cache.put(f"Launch_Progress_{job_id}", launch_progress_dto.model_dump()) return update_log diff --git a/antarest/launcher/main.py b/antarest/launcher/main.py index 3370936f54..1916b9607b 100644 --- a/antarest/launcher/main.py +++ b/antarest/launcher/main.py @@ -12,8 +12,9 @@ from typing import Optional -from fastapi import FastAPI +from fastapi import APIRouter, FastAPI +from antarest.core.application import AppBuildContext from antarest.core.config import Config from antarest.core.filetransfer.service import FileTransferManager from antarest.core.interfaces.cache import ICache @@ -26,7 +27,7 @@ def build_launcher( - application: Optional[FastAPI], + app_ctxt: Optional[AppBuildContext], config: Config, study_service: StudyService, file_transfer_manager: FileTransferManager, @@ -49,7 +50,7 @@ def build_launcher( cache=cache, ) - if service_launcher and application: - application.include_router(create_launcher_api(service_launcher, config)) + if service_launcher and app_ctxt: + app_ctxt.api_root.include_router(create_launcher_api(service_launcher, config)) return service_launcher diff --git a/antarest/launcher/model.py b/antarest/launcher/model.py index 8b47d3a64f..9a330454dc 100644 --- a/antarest/launcher/model.py +++ b/antarest/launcher/model.py @@ -15,17 +15,17 @@ import typing as t from datetime import datetime -from pydantic import BaseModel, Field +from pydantic import BaseModel, ConfigDict, Field from sqlalchemy import Column, DateTime, Enum, ForeignKey, Integer, Sequence, String # type: ignore from sqlalchemy.orm import relationship # type: ignore from antarest.core.persistence import Base -from antarest.core.utils.string import to_camel_case from antarest.login.model import Identity, UserInfo +from antarest.study.business.all_optional_meta import camel_case_model class XpansionParametersDTO(BaseModel): - output_id: t.Optional[str] + output_id: t.Optional[str] = None sensitivity_mode: bool = False enabled: bool = True @@ -54,7 +54,7 @@ def from_launcher_params(cls, params: t.Optional[str]) -> "LauncherParametersDTO """ if params is None: return cls() - return cls.parse_obj(json.loads(params)) + return cls.model_validate(json.loads(params)) class LogType(str, enum.Enum): @@ -125,7 +125,7 @@ class JobResultDTO(BaseModel): class Config: @staticmethod - def schema_extra(schema: t.MutableMapping[str, t.Any]) -> None: + def json_schema_extra(schema: t.MutableMapping[str, t.Any]) -> None: schema["example"] = JobResultDTO( id="b2a9f6a7-7f8f-4f7a-9a8b-1f9b4c5d6e7f", study_id="b2a9f6a7-7f8f-4f7a-9a8b-1f9b4c5d6e7f", @@ -139,7 +139,7 @@ def schema_extra(schema: t.MutableMapping[str, t.Any]) -> None: exit_code=0, solver_stats="time: 1651s, call_count: 1, optimization_issues: []", owner=UserInfo(id=0o007, name="James BOND"), - ) + ).model_dump() class JobLog(Base): # type: ignore @@ -240,13 +240,8 @@ class LauncherEnginesDTO(BaseModel): engines: t.List[str] -class LauncherLoadDTO( - BaseModel, - extra="forbid", - validate_assignment=True, - allow_population_by_field_name=True, - alias_generator=to_camel_case, -): +@camel_case_model +class LauncherLoadDTO(BaseModel, extra="forbid", validate_assignment=True, populate_by_name=True): """ DTO representing the load of the SLURM cluster or local machine. diff --git a/antarest/launcher/service.py b/antarest/launcher/service.py index 346b03c371..2dad1aef00 100644 --- a/antarest/launcher/service.py +++ b/antarest/launcher/service.py @@ -22,7 +22,7 @@ from fastapi import HTTPException -from antarest.core.config import Config, NbCoresConfig +from antarest.core.config import Config, Launcher, NbCoresConfig from antarest.core.exceptions import StudyNotFoundError from antarest.core.filetransfer.model import FileDownloadTaskDTO from antarest.core.filetransfer.service import FileTransferManager @@ -114,7 +114,7 @@ def _init_extensions(self) -> Dict[str, ILauncherExtension]: def get_launchers(self) -> List[str]: return list(self.launchers.keys()) - def get_nb_cores(self, launcher: str) -> NbCoresConfig: + def get_nb_cores(self, launcher: Launcher) -> NbCoresConfig: """ Retrieve the configuration of the launcher's nb of cores. @@ -123,9 +123,6 @@ def get_nb_cores(self, launcher: str) -> NbCoresConfig: Returns: Number of cores of the launcher - - Raises: - InvalidConfigurationError: if the launcher configuration is not available """ return self.config.launcher.get_nb_cores(launcher) @@ -186,7 +183,7 @@ def update( self.event_bus.push( Event( type=EventType.STUDY_JOB_COMPLETED if final_status else EventType.STUDY_JOB_STATUS_UPDATE, - payload=job_result.to_dto().dict(), + payload=job_result.to_dto().model_dump(), permissions=PermissionInfo(public_mode=PublicMode.READ), channel=EventChannelDirectory.JOB_STATUS + job_result.id, ) @@ -247,7 +244,7 @@ def run_study( study_id=study_uuid, job_status=JobStatus.PENDING, launcher=launcher, - launcher_params=launcher_parameters.json() if launcher_parameters else None, + launcher_params=launcher_parameters.model_dump_json() if launcher_parameters else None, owner_id=(owner_id or None), ) self.job_result_repository.save(job_status) @@ -263,7 +260,7 @@ def run_study( self.event_bus.push( Event( type=EventType.STUDY_JOB_STARTED, - payload=job_status.to_dto().dict(), + payload=job_status.to_dto().model_dump(), permissions=PermissionInfo.from_study(study_info), ) ) @@ -304,7 +301,7 @@ def kill_job(self, job_id: str, params: RequestParameters) -> JobResult: self.event_bus.push( Event( type=EventType.STUDY_JOB_CANCELLED, - payload=job_status.to_dto().dict(), + payload=job_status.to_dto().model_dump(), permissions=PermissionInfo.from_study(study), channel=EventChannelDirectory.JOB_STATUS + job_result.id, ) @@ -718,5 +715,7 @@ def get_launch_progress(self, job_id: str, params: RequestParameters) -> float: if launcher is None: raise ValueError(f"Job {job_id} has no launcher") - launch_progress_json = self.launchers[launcher].cache.get(id=f"Launch_Progress_{job_id}") or {"progress": 0} + launch_progress_json: Dict[str, float] = self.launchers[launcher].cache.get(id=f"Launch_Progress_{job_id}") or { + "progress": 0 + } return launch_progress_json.get("progress", 0) diff --git a/antarest/launcher/ssh_client.py b/antarest/launcher/ssh_client.py index 38e7334b75..175c8a739b 100644 --- a/antarest/launcher/ssh_client.py +++ b/antarest/launcher/ssh_client.py @@ -43,7 +43,7 @@ class SlurmError(Exception): def execute_command(ssh_config: SSHConfigDTO, args: List[str]) -> Any: command = " ".join(args) try: - with ssh_client(ssh_config) as client: # type: ignore + with ssh_client(ssh_config) as client: # type: paramiko.SSHClient _, stdout, stderr = client.exec_command(command, timeout=10) output = stdout.read().decode("utf-8").strip() error = stderr.read().decode("utf-8").strip() diff --git a/antarest/launcher/ssh_config.py b/antarest/launcher/ssh_config.py index f35d4d0da0..5238e07608 100644 --- a/antarest/launcher/ssh_config.py +++ b/antarest/launcher/ssh_config.py @@ -14,7 +14,7 @@ from typing import Any, Dict, Optional import paramiko -from pydantic import BaseModel, root_validator +from pydantic import BaseModel, model_validator class SSHConfigDTO(BaseModel): @@ -26,7 +26,7 @@ class SSHConfigDTO(BaseModel): key_password: Optional[str] = "" password: Optional[str] = "" - @root_validator() + @model_validator(mode="before") def validate_connection_information(cls, values: Dict[str, Any]) -> Dict[str, Any]: if "private_key_file" not in values and "password" not in values: raise paramiko.AuthenticationException("SSH config needs at least a private key or a password") diff --git a/antarest/launcher/web.py b/antarest/launcher/web.py index 88bceaad35..c07261384a 100644 --- a/antarest/launcher/web.py +++ b/antarest/launcher/web.py @@ -18,7 +18,7 @@ from fastapi import APIRouter, Depends, Query from fastapi.exceptions import HTTPException -from antarest.core.config import Config, InvalidConfigurationError +from antarest.core.config import Config, InvalidConfigurationError, Launcher from antarest.core.filetransfer.model import FileDownloadTaskDTO from antarest.core.jwt import JWTUser from antarest.core.requests import RequestParameters @@ -54,8 +54,8 @@ def __init__(self, solver: str) -> None: LauncherQuery = Query( - "default", - examples={ + default=Launcher.DEFAULT, + openapi_examples={ "Default launcher": { "description": "Default solver (auto-detected)", "value": "default", @@ -245,7 +245,7 @@ def get_load() -> LauncherLoadDTO: summary="Get list of supported solver versions", response_model=List[str], ) - def get_solver_versions(solver: str = LauncherQuery) -> List[str]: + def get_solver_versions(solver: Launcher = Launcher.DEFAULT) -> List[str]: """ Get list of supported solver versions defined in the configuration. @@ -253,8 +253,6 @@ def get_solver_versions(solver: str = LauncherQuery) -> List[str]: - `solver`: name of the configuration to read: "default", "slurm" or "local". """ logger.info(f"Fetching the list of solver versions for the '{solver}' configuration") - if solver not in {"default", "slurm", "local"}: - raise UnknownSolverConfig(solver) return service.get_solver_versions(solver) # noinspection SpellCheckingInspection @@ -264,7 +262,7 @@ def get_solver_versions(solver: str = LauncherQuery) -> List[str]: summary="Retrieving Min, Default, and Max Core Count", response_model=Dict[str, int], ) - def get_nb_cores(launcher: str = LauncherQuery) -> Dict[str, int]: + def get_nb_cores(launcher: Launcher = Launcher.DEFAULT) -> Dict[str, int]: """ Retrieve the numer of cores of the launcher. @@ -289,7 +287,7 @@ def get_nb_cores(launcher: str = LauncherQuery) -> Dict[str, int]: tags=[APITag.launcher], summary="Retrieve the time limit for a job (in hours)", ) - def get_time_limit(launcher: str = LauncherQuery) -> Dict[str, int]: + def get_time_limit(launcher: Launcher = LauncherQuery) -> Dict[str, int]: """ Retrieve the time limit for a job (in hours) of the given launcher: "local" or "slurm". diff --git a/antarest/login/auth.py b/antarest/login/auth.py index 6cd2a3139f..ad4884111a 100644 --- a/antarest/login/auth.py +++ b/antarest/login/auth.py @@ -16,13 +16,13 @@ from typing import Any, Callable, Coroutine, Dict, Optional, Tuple, Union from fastapi import Depends -from fastapi_jwt_auth import AuthJWT # type: ignore from pydantic import BaseModel from ratelimit.types import Scope # type: ignore from starlette.requests import Request from antarest.core.config import Config from antarest.core.jwt import DEFAULT_ADMIN_USER, JWTUser +from antarest.fastapi_jwt_auth import AuthJWT logger = logging.getLogger(__name__) @@ -66,14 +66,14 @@ def get_current_user(self, auth_jwt: AuthJWT = Depends()) -> JWTUser: auth_jwt.jwt_required() - user = JWTUser.parse_obj(json.loads(auth_jwt.get_jwt_subject())) + user = JWTUser.model_validate(json.loads(auth_jwt.get_jwt_subject())) return user @staticmethod def get_user_from_token(token: str, jwt_manager: AuthJWT) -> Optional[JWTUser]: try: token_data = jwt_manager._verified_token(token) - return JWTUser.parse_obj(json.loads(token_data["sub"])) + return JWTUser.model_validate(json.loads(token_data["sub"])) except Exception as e: logger.debug("Failed to retrieve user from token", exc_info=e) return None diff --git a/antarest/login/ldap.py b/antarest/login/ldap.py index 636e2a564f..1635efe09d 100644 --- a/antarest/login/ldap.py +++ b/antarest/login/ldap.py @@ -14,12 +14,7 @@ from dataclasses import dataclass from typing import Dict, List, Optional -try: - # `httpx` is a modern alternative to the `requests` library - import httpx as requests -except ImportError: - # noinspection PyUnresolvedReferences, PyPackageRequirements - import requests +import httpx from antarest.core.config import Config from antarest.core.model import JSON @@ -110,7 +105,7 @@ def _fetch(self, name: str, password: str) -> Optional[ExternalUser]: auth = AuthDTO(user=name, password=password) try: - res = requests.post(url=f"{self.url}/auth", json=auth.to_json()) + res = httpx.post(url=f"{self.url}/auth", json=auth.to_json()) except Exception as e: logger.warning( "Failed to retrieve user from external auth service", diff --git a/antarest/login/main.py b/antarest/login/main.py index fe1acea550..09fac37ee5 100644 --- a/antarest/login/main.py +++ b/antarest/login/main.py @@ -14,15 +14,16 @@ from http import HTTPStatus from typing import Any, Optional -from fastapi import FastAPI -from fastapi_jwt_auth import AuthJWT # type: ignore -from fastapi_jwt_auth.exceptions import AuthJWTException # type: ignore +from fastapi import APIRouter, FastAPI from starlette.requests import Request from starlette.responses import JSONResponse +from antarest.core.application import AppBuildContext from antarest.core.config import Config from antarest.core.interfaces.eventbus import DummyEventBusService, IEventBus from antarest.core.utils.fastapi_sqlalchemy import db +from antarest.fastapi_jwt_auth import AuthJWT +from antarest.fastapi_jwt_auth.exceptions import AuthJWTException from antarest.login.ldap import LdapService from antarest.login.repository import BotRepository, GroupRepository, RoleRepository, UserLdapRepository, UserRepository from antarest.login.service import LoginService @@ -30,7 +31,7 @@ def build_login( - application: Optional[FastAPI], + app_ctxt: Optional[AppBuildContext], config: Config, service: Optional[LoginService] = None, event_bus: IEventBus = DummyEventBusService(), @@ -39,7 +40,7 @@ def build_login( Login module linking dependency Args: - application: flask application + app_ctxt: application config: server configuration service: used by testing to inject mock. Let None to use true instantiation event_bus: used by testing to inject mock. Let None to use true instantiation @@ -66,9 +67,9 @@ def build_login( event_bus=event_bus, ) - if application: + if app_ctxt: - @application.exception_handler(AuthJWTException) + @app_ctxt.app.exception_handler(AuthJWTException) def authjwt_exception_handler(request: Request, exc: AuthJWTException) -> Any: return JSONResponse( status_code=HTTPStatus.UNAUTHORIZED, @@ -83,6 +84,6 @@ def check_if_token_is_revoked(decrypted_token: Any) -> bool: with db(): return token_type == "bots" and service is not None and not service.exists_bot(user_id) - if application: - application.include_router(create_login_api(service, config)) + if app_ctxt: + app_ctxt.api_root.include_router(create_login_api(service, config)) return service diff --git a/antarest/login/service.py b/antarest/login/service.py index 8ae4cbdb55..d3103a6dfc 100644 --- a/antarest/login/service.py +++ b/antarest/login/service.py @@ -485,7 +485,7 @@ def authenticate(self, name: str, pwd: str) -> Optional[JWTUser]: """ intern: Optional[User] = self.users.get_by_name(name) - if intern and intern.password.check(pwd): # type: ignore + if intern and intern.password.check(pwd): logger.info("successful login from intern user %s", name) return self.get_jwt(intern.id) diff --git a/antarest/login/web.py b/antarest/login/web.py index 8f98012529..6e2b20a19c 100644 --- a/antarest/login/web.py +++ b/antarest/login/web.py @@ -16,7 +16,6 @@ from typing import Any, List, Optional, Union from fastapi import APIRouter, Depends, HTTPException -from fastapi_jwt_auth import AuthJWT # type: ignore from markupsafe import escape from pydantic import BaseModel @@ -25,6 +24,7 @@ from antarest.core.requests import RequestParameters, UserHasNotPermissionError from antarest.core.roles import RoleType from antarest.core.utils.web import APITag +from antarest.fastapi_jwt_auth import AuthJWT from antarest.login.auth import Auth from antarest.login.model import ( BotCreateDTO, @@ -67,8 +67,8 @@ def create_login_api(service: LoginService, config: Config) -> APIRouter: auth = Auth(config) def generate_tokens(user: JWTUser, jwt_manager: AuthJWT, expire: Optional[timedelta] = None) -> CredentialsDTO: - access_token = jwt_manager.create_access_token(subject=user.json(), expires_time=expire) - refresh_token = jwt_manager.create_refresh_token(subject=user.json()) + access_token = jwt_manager.create_access_token(subject=user.model_dump_json(), expires_time=expire) + refresh_token = jwt_manager.create_refresh_token(subject=user.model_dump_json()) return CredentialsDTO( user=user.id, access_token=access_token.decode() if isinstance(access_token, bytes) else access_token, @@ -126,11 +126,7 @@ def users_get_all( params = RequestParameters(user=current_user) return service.get_all_users(params, details) - @bp.get( - "/users/{id}", - tags=[APITag.users], - response_model=Union[IdentityDTO, UserInfo], # type: ignore - ) + @bp.get("/users/{id}", tags=[APITag.users], response_model=Union[IdentityDTO, UserInfo]) def users_get_id( id: int, details: bool = False, @@ -204,11 +200,7 @@ def groups_get_all( params = RequestParameters(user=current_user) return service.get_all_groups(params, details) - @bp.get( - "/groups/{id}", - tags=[APITag.users], - response_model=Union[GroupDetailDTO, GroupDTO], # type: ignore - ) + @bp.get("/groups/{id}", tags=[APITag.users], response_model=Union[GroupDetailDTO, GroupDTO]) def groups_get_id( id: str, details: bool = False, @@ -326,11 +318,7 @@ def bots_create( tokens = generate_tokens(jwt, jwt_manager, expire=timedelta(days=368 * 200)) return tokens.access_token - @bp.get( - "/bots/{id}", - tags=[APITag.users], - response_model=Union[BotIdentityDTO, BotDTO], # type: ignore - ) + @bp.get("/bots/{id}", tags=[APITag.users], response_model=Union[BotIdentityDTO, BotDTO]) def get_bot( id: int, verbose: Optional[int] = None, diff --git a/antarest/main.py b/antarest/main.py index c5e4d30197..b1fd1480b6 100644 --- a/antarest/main.py +++ b/antarest/main.py @@ -13,29 +13,25 @@ import argparse import copy import logging -import re +from contextlib import asynccontextmanager from pathlib import Path -from typing import Any, Dict, Optional, Sequence, Tuple, cast +from typing import Any, AsyncGenerator, Dict, Optional, Tuple, cast import pydantic -import uvicorn # type: ignore -import uvicorn.config # type: ignore -from fastapi import FastAPI, HTTPException +import uvicorn +import uvicorn.config +from fastapi import APIRouter, FastAPI, HTTPException from fastapi.encoders import jsonable_encoder from fastapi.exceptions import RequestValidationError -from fastapi_jwt_auth import AuthJWT # type: ignore from ratelimit import RateLimitMiddleware # type: ignore from ratelimit.backends.redis import RedisBackend # type: ignore from ratelimit.backends.simple import MemoryBackend # type: ignore -from starlette.middleware.base import BaseHTTPMiddleware, DispatchFunction, RequestResponseEndpoint from starlette.middleware.cors import CORSMiddleware from starlette.requests import Request from starlette.responses import JSONResponse -from starlette.staticfiles import StaticFiles -from starlette.templating import Jinja2Templates -from starlette.types import ASGIApp from antarest import __version__ +from antarest.core.application import AppBuildContext from antarest.core.config import Config from antarest.core.core_blueprint import create_utils_routes from antarest.core.filesystem_blueprint import create_file_system_blueprint @@ -46,6 +42,8 @@ from antarest.core.utils.fastapi_sqlalchemy import DBSessionMiddleware from antarest.core.utils.utils import get_local_path from antarest.core.utils.web import tags_metadata +from antarest.fastapi_jwt_auth import AuthJWT +from antarest.front import add_front_app from antarest.login.auth import Auth, JwtSettings from antarest.login.model import init_admin_user from antarest.matrixstore.matrix_garbage_collector import MatrixGarbageCollector @@ -189,55 +187,6 @@ def parse_arguments() -> argparse.Namespace: return parser.parse_args() -class URLRewriterMiddleware(BaseHTTPMiddleware): - """ - Middleware that rewrites the URL path to "/" (root path) for incoming requests - that do not match the known end points. This is useful for redirecting requests - to the main page of a ReactJS application when the user refreshes the browser. - """ - - def __init__( - self, - app: ASGIApp, - dispatch: Optional[DispatchFunction] = None, - root_path: str = "", - route_paths: Sequence[str] = (), - ) -> None: - """ - Initializes an instance of the URLRewriterMiddleware. - - Args: - app: The ASGI application to which the middleware is applied. - dispatch: The dispatch function to use. - root_path: The root path of the application. - The URL path will be rewritten relative to this root path. - route_paths: The known route paths of the application. - Requests that do not match any of these paths will be rewritten to the root path. - - Note: - The `root_path` can be set to a specific component of the URL path, such as "api". - The `route_paths` should contain all the known endpoints of the application. - """ - dispatch = self.dispatch if dispatch is None else dispatch - super().__init__(app, dispatch) - self.root_path = f"/{root_path}" if root_path else "" - self.known_prefixes = {re.findall(r"/(?:(?!/).)*", p)[0] for p in route_paths if p != "/"} - - async def dispatch(self, request: Request, call_next: RequestResponseEndpoint) -> Any: - """ - Intercepts the incoming request and rewrites the URL path if necessary. - Passes the modified or original request to the next middleware or endpoint handler. - """ - url_path = request.scope["path"] - if url_path in {"", "/"}: - pass - elif self.root_path and url_path.startswith(self.root_path): - request.scope["path"] = url_path[len(self.root_path) :] - elif not any(url_path.startswith(ep) for ep in self.known_prefixes): - request.scope["path"] = "/" - return await call_next(request) - - def fastapi_app( config_file: Path, resource_path: Optional[Path] = None, @@ -250,46 +199,39 @@ def fastapi_app( logger.info("Initiating application") + @asynccontextmanager + async def set_default_executor(app: FastAPI) -> AsyncGenerator[None, None]: + import asyncio + from concurrent.futures import ThreadPoolExecutor + + loop = asyncio.get_running_loop() + loop.set_default_executor(ThreadPoolExecutor(max_workers=config.server.worker_threadpool_size)) + yield + application = FastAPI( title="AntaREST", version=__version__, docs_url=None, root_path=config.root_path, openapi_tags=tags_metadata, + lifespan=set_default_executor, + openapi_url=f"{config.api_prefix}/openapi.json", ) + api_root = APIRouter(prefix=config.api_prefix) + + app_ctxt = AppBuildContext(application, api_root) + # Database engine = init_db_engine(config_file, config, auto_upgrade_db) application.add_middleware(DBSessionMiddleware, custom_engine=engine, session_args=SESSION_ARGS) + # Since Starlette Version 0.24.0, the middlewares are lazily build inside this function + # But we need to instantiate this middleware as it's needed for the study service. + # So we manually instantiate it here. + DBSessionMiddleware(None, custom_engine=engine, session_args=cast(Dict[str, bool], SESSION_ARGS)) application.add_middleware(LoggingMiddleware) - if mount_front: - application.mount( - "/static", - StaticFiles(directory=str(res / "webapp")), - name="static", - ) - templates = Jinja2Templates(directory=str(res / "templates")) - - @application.get("/", include_in_schema=False) - def home(request: Request) -> Any: - return templates.TemplateResponse("index.html", {"request": request}) - - else: - # noinspection PyUnusedLocal - @application.get("/", include_in_schema=False) - def home(request: Request) -> Any: - return "" - - @application.on_event("startup") - def set_default_executor() -> None: - import asyncio - from concurrent.futures import ThreadPoolExecutor - - loop = asyncio.get_running_loop() - loop.set_default_executor(ThreadPoolExecutor(max_workers=config.server.worker_threadpool_size)) - # TODO move that elsewhere @AuthJWT.load_config # type: ignore def get_config() -> JwtSettings: @@ -308,8 +250,8 @@ def get_config() -> JwtSettings: allow_methods=["*"], allow_headers=["*"], ) - application.include_router(create_utils_routes(config)) - application.include_router(create_file_system_blueprint(config)) + api_root.include_router(create_utils_routes(config)) + api_root.include_router(create_file_system_blueprint(config)) # noinspection PyUnusedLocal @application.exception_handler(HTTPException) @@ -419,19 +361,9 @@ def handle_all_exception(request: Request, exc: Exception) -> Any: ) init_admin_user(engine=engine, session_args=SESSION_ARGS, admin_password=config.security.admin_pwd) - services = create_services(config, application) + services = create_services(config, app_ctxt) - if mount_front: - # When the web application is running in Desktop mode, the ReactJS web app - # is served at the `/static` entry point. Any requests that are not API - # requests should be redirected to the `index.html` file, which will handle - # the route provided by the URL. - route_paths = [r.path for r in application.routes] # type: ignore - application.add_middleware( - URLRewriterMiddleware, - root_path=application.root_path, - route_paths=route_paths, - ) + application.include_router(api_root) if config.server.services and Module.WATCHER.value in config.server.services: watcher = cast(Watcher, services["watcher"]) @@ -446,6 +378,15 @@ def handle_all_exception(request: Request, exc: Exception) -> Any: auto_archiver.start() customize_openapi(application) + + if mount_front: + add_front_app(application, res, config.api_prefix) + else: + # noinspection PyUnusedLocal + @application.get("/", include_in_schema=False) + def home(request: Request) -> Any: + return "" + cancel_orphan_tasks(engine=engine, session_args=SESSION_ARGS) return application, services diff --git a/antarest/matrixstore/main.py b/antarest/matrixstore/main.py index eaec4f956a..d8eaf0390a 100644 --- a/antarest/matrixstore/main.py +++ b/antarest/matrixstore/main.py @@ -12,8 +12,9 @@ from typing import Optional -from fastapi import FastAPI +from fastapi import APIRouter, FastAPI +from antarest.core.application import AppBuildContext from antarest.core.config import Config from antarest.core.filetransfer.service import FileTransferManager from antarest.core.tasks.service import ITaskService @@ -24,7 +25,7 @@ def build_matrix_service( - application: Optional[FastAPI], + app_ctxt: Optional[AppBuildContext], config: Config, file_transfer_manager: FileTransferManager, task_service: ITaskService, @@ -35,7 +36,7 @@ def build_matrix_service( Matrix module linking dependency Args: - application: flask application + app_ctxt: application config: server configuration file_transfer_manager: File transfer manager task_service: Task manager @@ -60,7 +61,7 @@ def build_matrix_service( config=config, ) - if application: - application.include_router(create_matrix_api(service, file_transfer_manager, config)) + if app_ctxt: + app_ctxt.api_root.include_router(create_matrix_api(service, file_transfer_manager, config)) return service diff --git a/antarest/matrixstore/matrix_editor.py b/antarest/matrixstore/matrix_editor.py index 6fb55225ee..838af83860 100644 --- a/antarest/matrixstore/matrix_editor.py +++ b/antarest/matrixstore/matrix_editor.py @@ -14,7 +14,7 @@ import operator from typing import Any, Dict, List, Optional, Tuple -from pydantic import BaseModel, Extra, Field, root_validator, validator +from pydantic import BaseModel, Field, field_validator, model_validator class MatrixSlice(BaseModel): @@ -35,8 +35,8 @@ class MatrixSlice(BaseModel): column_to: int class Config: - extra = Extra.forbid - schema_extra = { + extra = "forbid" + json_schema_extra = { "example": { "column_from": 5, "column_to": 8, @@ -45,7 +45,7 @@ class Config: } } - @root_validator(pre=True) + @model_validator(mode="before") def check_values(cls, values: Dict[str, Any]) -> Dict[str, Any]: """ Converts and validates the slice coordinates. @@ -107,12 +107,12 @@ class Operation(BaseModel): - `value`: The value associated with the operation. """ - operation: str = Field(regex=r"[=/*+-]|ABS") + operation: str = Field(pattern=r"[=/*+-]|ABS") value: float class Config: - extra = Extra.forbid - schema_extra = {"example": {"operation": "=", "value": 120.0}} + extra = "forbid" + json_schema_extra = {"example": {"operation": "=", "value": 120.0}} # noinspection SpellCheckingInspection def compute(self, x: Any, use_coords: bool = False) -> Any: @@ -157,16 +157,17 @@ class MatrixEditInstruction(BaseModel): operation: Operation class Config: - extra = Extra.forbid - - @staticmethod - def schema_extra(schema: Dict[str, Any]) -> None: - schema["example"] = MatrixEditInstruction( - coordinates=[(0, 10), (0, 11), (0, 12)], - operation=Operation(operation="=", value=120.0), - ) + extra = "forbid" + json_schema_extra = { + "example": { + "column_from": 5, + "column_to": 8, + "row_from": 0, + "row_to": 8760, + } + } - @root_validator(pre=True) + @model_validator(mode="before") def check_slice_coordinates(cls, values: Dict[str, Any]) -> Dict[str, Any]: """ Validates the 'slices' and 'coordinates' fields. @@ -191,7 +192,7 @@ def check_slice_coordinates(cls, values: Dict[str, Any]) -> Dict[str, Any]: return values - @validator("coordinates") + @field_validator("coordinates") def validate_coordinates(cls, coordinates: Optional[List[Tuple[int, int]]]) -> Optional[List[Tuple[int, int]]]: """ Validates the `coordinates` field. diff --git a/antarest/matrixstore/service.py b/antarest/matrixstore/service.py index 492acb046a..7f9b83cca2 100644 --- a/antarest/matrixstore/service.py +++ b/antarest/matrixstore/service.py @@ -225,6 +225,7 @@ def create_by_importation(self, file: UploadFile, is_json: bool = False) -> t.Li A list of `MatrixInfoDTO` objects containing the SHA256 hash of the imported matrices. """ with file.file as f: + assert file.filename is not None if file.content_type == "application/zip": with contextlib.closing(f): buffer = io.BytesIO(f.read()) diff --git a/antarest/singleton_services.py b/antarest/singleton_services.py index 039c3d00b5..13395a439a 100644 --- a/antarest/singleton_services.py +++ b/antarest/singleton_services.py @@ -56,13 +56,13 @@ def _init(config_file: Path, services_list: List[Module]) -> Dict[Module, IServi services: Dict[Module, IService] = {} if Module.WATCHER in services_list: - watcher = create_watcher(config=config, application=None, study_service=study_service) + watcher = create_watcher(config=config, app_ctxt=None, study_service=study_service) services[Module.WATCHER] = watcher if Module.MATRIX_GC in services_list: matrix_gc = create_matrix_gc( config=config, - application=None, + app_ctxt=None, study_service=study_service, matrix_service=matrix_service, ) diff --git a/antarest/study/business/adequacy_patch_management.py b/antarest/study/business/adequacy_patch_management.py index d05b066ef1..ddc2214891 100644 --- a/antarest/study/business/adequacy_patch_management.py +++ b/antarest/study/business/adequacy_patch_management.py @@ -10,10 +10,11 @@ # # This file is part of the Antares project. -from typing import Any, Dict, List, Optional +from typing import Any, Dict, List from pydantic.types import StrictBool, confloat, conint +from antarest.study.business.all_optional_meta import all_optional_model from antarest.study.business.enum_ignore_case import EnumIgnoreCase from antarest.study.business.utils import GENERAL_DATA_PATH, FieldInfo, FormFieldsBaseModel, execute_or_add_commands from antarest.study.model import Study @@ -29,18 +30,19 @@ class PriceTakingOrder(EnumIgnoreCase): ThresholdType = confloat(ge=0) +@all_optional_model class AdequacyPatchFormFields(FormFieldsBaseModel): # version 830 - enable_adequacy_patch: Optional[StrictBool] - ntc_from_physical_areas_out_to_physical_areas_in_adequacy_patch: Optional[StrictBool] - ntc_between_physical_areas_out_adequacy_patch: Optional[StrictBool] + enable_adequacy_patch: StrictBool + ntc_from_physical_areas_out_to_physical_areas_in_adequacy_patch: StrictBool + ntc_between_physical_areas_out_adequacy_patch: StrictBool # version 850 - price_taking_order: Optional[PriceTakingOrder] - include_hurdle_cost_csr: Optional[StrictBool] - check_csr_cost_function: Optional[StrictBool] - threshold_initiate_curtailment_sharing_rule: Optional[ThresholdType] # type: ignore - threshold_display_local_matching_rule_violations: Optional[ThresholdType] # type: ignore - threshold_csr_variable_bounds_relaxation: Optional[conint(ge=0, strict=True)] # type: ignore + price_taking_order: PriceTakingOrder + include_hurdle_cost_csr: StrictBool + check_csr_cost_function: StrictBool + threshold_initiate_curtailment_sharing_rule: ThresholdType # type: ignore + threshold_display_local_matching_rule_violations: ThresholdType # type: ignore + threshold_csr_variable_bounds_relaxation: conint(ge=0, strict=True) # type: ignore ADEQUACY_PATCH_PATH = f"{GENERAL_DATA_PATH}/adequacy patch" diff --git a/antarest/study/business/advanced_parameters_management.py b/antarest/study/business/advanced_parameters_management.py index eed0420d72..3e68ff0aa1 100644 --- a/antarest/study/business/advanced_parameters_management.py +++ b/antarest/study/business/advanced_parameters_management.py @@ -10,12 +10,13 @@ # # This file is part of the Antares project. -from typing import Any, Dict, List, Optional +from typing import Any, Dict, List -from pydantic import validator +from pydantic import field_validator from pydantic.types import StrictInt, StrictStr from antarest.core.exceptions import InvalidFieldForVersionError +from antarest.study.business.all_optional_meta import all_optional_model from antarest.study.business.enum_ignore_case import EnumIgnoreCase from antarest.study.business.utils import GENERAL_DATA_PATH, FieldInfo, FormFieldsBaseModel, execute_or_add_commands from antarest.study.model import Study @@ -72,33 +73,34 @@ class RenewableGenerationModeling(EnumIgnoreCase): CLUSTERS = "clusters" +@all_optional_model class AdvancedParamsFormFields(FormFieldsBaseModel): # Advanced parameters - accuracy_on_correlation: Optional[StrictStr] + accuracy_on_correlation: StrictStr # Other preferences - initial_reservoir_levels: Optional[InitialReservoirLevel] - power_fluctuations: Optional[PowerFluctuation] - shedding_policy: Optional[SheddingPolicy] - hydro_pricing_mode: Optional[HydroPricingMode] - hydro_heuristic_policy: Optional[HydroHeuristicPolicy] - unit_commitment_mode: Optional[UnitCommitmentMode] - number_of_cores_mode: Optional[SimulationCore] - day_ahead_reserve_management: Optional[ReserveManagement] - renewable_generation_modelling: Optional[RenewableGenerationModeling] + initial_reservoir_levels: InitialReservoirLevel + power_fluctuations: PowerFluctuation + shedding_policy: SheddingPolicy + hydro_pricing_mode: HydroPricingMode + hydro_heuristic_policy: HydroHeuristicPolicy + unit_commitment_mode: UnitCommitmentMode + number_of_cores_mode: SimulationCore + day_ahead_reserve_management: ReserveManagement + renewable_generation_modelling: RenewableGenerationModeling # Seeds - seed_tsgen_wind: Optional[StrictInt] - seed_tsgen_load: Optional[StrictInt] - seed_tsgen_hydro: Optional[StrictInt] - seed_tsgen_thermal: Optional[StrictInt] - seed_tsgen_solar: Optional[StrictInt] - seed_tsnumbers: Optional[StrictInt] - seed_unsupplied_energy_costs: Optional[StrictInt] - seed_spilled_energy_costs: Optional[StrictInt] - seed_thermal_costs: Optional[StrictInt] - seed_hydro_costs: Optional[StrictInt] - seed_initial_reservoir_levels: Optional[StrictInt] - - @validator("accuracy_on_correlation") + seed_tsgen_wind: StrictInt + seed_tsgen_load: StrictInt + seed_tsgen_hydro: StrictInt + seed_tsgen_thermal: StrictInt + seed_tsgen_solar: StrictInt + seed_tsnumbers: StrictInt + seed_unsupplied_energy_costs: StrictInt + seed_spilled_energy_costs: StrictInt + seed_thermal_costs: StrictInt + seed_hydro_costs: StrictInt + seed_initial_reservoir_levels: StrictInt + + @field_validator("accuracy_on_correlation") def check_accuracy_on_correlation(cls, v: str) -> str: sanitized_v = v.strip().replace(" ", "") if not sanitized_v: diff --git a/antarest/study/business/all_optional_meta.py b/antarest/study/business/all_optional_meta.py index 6e23e82e85..7a8440226b 100644 --- a/antarest/study/business/all_optional_meta.py +++ b/antarest/study/business/all_optional_meta.py @@ -10,87 +10,37 @@ # # This file is part of the Antares project. +import copy import typing as t -import pydantic.fields -import pydantic.main -from pydantic import BaseModel +from pydantic import BaseModel, create_model from antarest.core.utils.string import to_camel_case +ModelClass = t.TypeVar("ModelClass", bound=BaseModel) -class AllOptionalMetaclass(pydantic.main.ModelMetaclass): - """ - Metaclass that makes all fields of a Pydantic model optional. - - Usage: - class MyModel(BaseModel, metaclass=AllOptionalMetaclass): - field1: str - field2: int - ... - Instances of the model can be created even if not all fields are provided during initialization. - Default values, when provided, are used unless `use_none` is set to `True`. +def all_optional_model(model: t.Type[ModelClass]) -> t.Type[ModelClass]: """ + This decorator can be used to make all fields of a pydantic model optionals. - def __new__( - cls: t.Type["AllOptionalMetaclass"], - name: str, - bases: t.Tuple[t.Type[t.Any], ...], - namespaces: t.Dict[str, t.Any], - use_none: bool = False, - **kwargs: t.Dict[str, t.Any], - ) -> t.Any: - """ - Create a new instance of the metaclass. - - Args: - name: Name of the class to create. - bases: Base classes of the class to create (a Pydantic model). - namespaces: namespace of the class to create that defines the fields of the model. - use_none: If `True`, the default value of the fields is set to `None`. - Note that this field is not part of the Pydantic model, but it is an extension. - **kwargs: Additional keyword arguments used by the metaclass. - """ - # Modify the annotations of the class (but not of the ancestor classes) - # in order to make all fields optional. - # If the current model inherits from another model, the annotations of the ancestor models - # are not modified, because the fields are already converted to `ModelField`. - annotations = namespaces.get("__annotations__", {}) - for field_name, field_type in annotations.items(): - if not field_name.startswith("__"): - # Making already optional fields optional is not a problem (nothing is changed). - annotations[field_name] = t.Optional[field_type] - namespaces["__annotations__"] = annotations - - if use_none: - # Modify the namespace fields to set their default value to `None`. - for field_name, field_info in namespaces.items(): - if isinstance(field_info, pydantic.fields.FieldInfo): - field_info.default = None - field_info.default_factory = None - - # Create the class: all annotations are converted into `ModelField`. - instance = super().__new__(cls, name, bases, namespaces, **kwargs) - - # Modify the inherited fields of the class to make them optional - # and set their default value to `None`. - model_field: pydantic.fields.ModelField - for field_name, model_field in instance.__fields__.items(): - model_field.required = False - model_field.allow_none = True - if use_none: - model_field.default = None - model_field.default_factory = None - model_field.field_info.default = None - - return instance + Args: + model: The pydantic model to modify. + Returns: + The modified model. + """ + kwargs = {} + for field_name, field_info in model.model_fields.items(): + new = copy.deepcopy(field_info) + new.default = None + new.annotation = t.Optional[field_info.annotation] # type: ignore + kwargs[field_name] = (new.annotation, new) -MODEL = t.TypeVar("MODEL", bound=t.Type[BaseModel]) + return create_model(f"Partial{model.__name__}", __base__=model, __module__=model.__module__, **kwargs) # type: ignore -def camel_case_model(model: MODEL) -> MODEL: +def camel_case_model(model: t.Type[BaseModel]) -> t.Type[BaseModel]: """ This decorator can be used to modify a model to use camel case aliases. @@ -100,7 +50,14 @@ def camel_case_model(model: MODEL) -> MODEL: Returns: The modified model. """ - model.__config__.alias_generator = to_camel_case - for field_name, field in model.__fields__.items(): - field.alias = to_camel_case(field_name) + model.model_config["alias_generator"] = to_camel_case + + # Manually overriding already defined alias names (in base classes), + # otherwise they have precedence over generated ones. + # TODO There is probably a better way to handle those cases + for field_name, field in model.model_fields.items(): + new_alias = to_camel_case(field_name) + field.alias = new_alias + field.validation_alias = new_alias + field.serialization_alias = new_alias return model diff --git a/antarest/study/business/allocation_management.py b/antarest/study/business/allocation_management.py index 7576a9ab63..79c22f26cd 100644 --- a/antarest/study/business/allocation_management.py +++ b/antarest/study/business/allocation_management.py @@ -10,11 +10,13 @@ # # This file is part of the Antares project. -from typing import Dict, List +from typing import Dict, List, Union import numpy import numpy as np -from pydantic import conlist, root_validator, validator +from annotated_types import Len +from pydantic import ValidationInfo, field_validator, model_validator +from typing_extensions import Annotated from antarest.core.exceptions import AllocationDataNotFound, AreaNotFound from antarest.study.business.area_management import AreaInfoDTO @@ -36,9 +38,9 @@ class AllocationFormFields(FormFieldsBaseModel): allocation: List[AllocationField] - @root_validator - def check_allocation(cls, values: Dict[str, List[AllocationField]]) -> Dict[str, List[AllocationField]]: - allocation = values.get("allocation", []) + @model_validator(mode="after") + def check_allocation(self) -> "AllocationFormFields": + allocation = self.allocation if not allocation: raise ValueError("allocation must not be empty") @@ -56,7 +58,7 @@ def check_allocation(cls, values: Dict[str, List[AllocationField]]) -> Dict[str, if sum(a.coefficient for a in allocation) <= 0: raise ValueError("sum of allocation coefficients must be positive") - return values + return self class AllocationMatrix(FormFieldsBaseModel): @@ -67,14 +69,14 @@ class AllocationMatrix(FormFieldsBaseModel): data: 2D-array matrix of consumption coefficients """ - index: conlist(str, min_items=1) # type: ignore - columns: conlist(str, min_items=1) # type: ignore + index: Annotated[List[str], Len(min_length=1)] + columns: Annotated[List[str], Len(min_length=1)] data: List[List[float]] # NonNegativeFloat not necessary # noinspection PyMethodParameters - @validator("data") + @field_validator("data", mode="before") def validate_hydro_allocation_matrix( - cls, data: List[List[float]], values: Dict[str, List[str]] + cls, data: List[List[float]], values: Union[Dict[str, List[str]], ValidationInfo] ) -> List[List[float]]: """ Validate the hydraulic allocation matrix. @@ -89,8 +91,9 @@ def validate_hydro_allocation_matrix( """ array = np.array(data) - rows = len(values.get("index", [])) - cols = len(values.get("columns", [])) + new_values = values if isinstance(values, dict) else values.data + rows = len(new_values.get("index", [])) + cols = len(new_values.get("columns", [])) if array.size == 0: raise ValueError("allocation matrix must not be empty") @@ -136,7 +139,7 @@ def get_allocation_data(self, study: Study, area_id: str) -> Dict[str, List[Allo if not allocation_data: raise AllocationDataNotFound(area_id) - return allocation_data.get("[allocation]", {}) + return allocation_data.get("[allocation]", {}) # type: ignore def get_allocation_form_fields( self, all_areas: List[AreaInfoDTO], study: Study, area_id: str @@ -160,13 +163,10 @@ def get_allocation_form_fields( allocations = self.get_allocation_data(study, area_id) filtered_allocations = {area: value for area, value in allocations.items() if area in areas_ids} - - return AllocationFormFields.construct( - allocation=[ - AllocationField.construct(area_id=area, coefficient=value) - for area, value in filtered_allocations.items() - ] - ) + final_allocations = [ + AllocationField.construct(area_id=area, coefficient=value) for area, value in filtered_allocations.items() + ] + return AllocationFormFields.model_validate({"allocation": final_allocations}) def set_allocation_form_fields( self, diff --git a/antarest/study/business/area_management.py b/antarest/study/business/area_management.py index 4e6297e349..e79f2df575 100644 --- a/antarest/study/business/area_management.py +++ b/antarest/study/business/area_management.py @@ -15,11 +15,11 @@ import re import typing as t -from pydantic import BaseModel, Extra, Field +from pydantic import BaseModel, Field from antarest.core.exceptions import ConfigFileNotFound, DuplicateAreaName, LayerNotAllowedToBeDeleted, LayerNotFound from antarest.core.model import JSON -from antarest.study.business.all_optional_meta import AllOptionalMetaclass, camel_case_model +from antarest.study.business.all_optional_meta import all_optional_model, camel_case_model from antarest.study.business.utils import execute_or_add_commands from antarest.study.model import Patch, PatchArea, PatchCluster, RawStudy, Study from antarest.study.repository import StudyMetadataRepository @@ -50,8 +50,8 @@ class AreaType(enum.Enum): class AreaCreationDTO(BaseModel): name: str type: AreaType - metadata: t.Optional[PatchArea] - set: t.Optional[t.List[str]] + metadata: t.Optional[PatchArea] = None + set: t.Optional[t.List[str]] = None # review: is this class necessary? @@ -82,7 +82,7 @@ class LayerInfoDTO(BaseModel): areas: t.List[str] -class UpdateAreaUi(BaseModel, extra="forbid", allow_population_by_field_name=True): +class UpdateAreaUi(BaseModel, extra="forbid", populate_by_name=True): """ DTO for updating area UI @@ -107,7 +107,7 @@ class UpdateAreaUi(BaseModel, extra="forbid", allow_population_by_field_name=Tru ... } >>> model = UpdateAreaUi(**obj) - >>> pprint(model.dict(by_alias=True), width=80) + >>> pprint(model.model_dump(by_alias=True), width=80) {'colorRgb': [230, 108, 44], 'layerColor': {0: '230, 108, 44', 4: '230, 108, 44', @@ -179,9 +179,9 @@ class _BaseAreaDTO( OptimizationProperties.FilteringSection, OptimizationProperties.ModalOptimizationSection, AdequacyPathProperties.AdequacyPathSection, - extra=Extra.forbid, + extra="forbid", validate_assignment=True, - allow_population_by_field_name=True, + populate_by_name=True, ): """ Represents an area output. @@ -200,8 +200,9 @@ class _BaseAreaDTO( # noinspection SpellCheckingInspection +@all_optional_model @camel_case_model -class AreaOutput(_BaseAreaDTO, metaclass=AllOptionalMetaclass, use_none=True): +class AreaOutput(_BaseAreaDTO): """ DTO object use to get the area information using a flat structure. """ @@ -227,30 +228,32 @@ def from_model( obj = { "average_unsupplied_energy_cost": average_unsupplied_energy_cost, "average_spilled_energy_cost": average_spilled_energy_cost, - **area_folder.optimization.filtering.dict(by_alias=False), - **area_folder.optimization.nodal_optimization.dict(by_alias=False), + **area_folder.optimization.filtering.model_dump(by_alias=False), + **area_folder.optimization.nodal_optimization.model_dump(by_alias=False), # adequacy_patch is only available if study version >= 830. - **(area_folder.adequacy_patch.adequacy_patch.dict(by_alias=False) if area_folder.adequacy_patch else {}), + **( + area_folder.adequacy_patch.adequacy_patch.model_dump(by_alias=False) + if area_folder.adequacy_patch + else {} + ), } return cls(**obj) def _to_optimization(self) -> OptimizationProperties: - obj = {name: getattr(self, name) for name in OptimizationProperties.FilteringSection.__fields__} + obj = {name: getattr(self, name) for name in OptimizationProperties.FilteringSection.model_fields} filtering_section = OptimizationProperties.FilteringSection(**obj) - obj = {name: getattr(self, name) for name in OptimizationProperties.ModalOptimizationSection.__fields__} + obj = {name: getattr(self, name) for name in OptimizationProperties.ModalOptimizationSection.model_fields} nodal_optimization_section = OptimizationProperties.ModalOptimizationSection(**obj) - return OptimizationProperties( - filtering=filtering_section, - nodal_optimization=nodal_optimization_section, - ) + args = {"filtering": filtering_section, "nodal_optimization": nodal_optimization_section} + return OptimizationProperties.model_validate(args) def _to_adequacy_patch(self) -> t.Optional[AdequacyPathProperties]: - obj = {name: getattr(self, name) for name in AdequacyPathProperties.AdequacyPathSection.__fields__} + obj = {name: getattr(self, name) for name in AdequacyPathProperties.AdequacyPathSection.model_fields} # If all fields are `None`, the object is empty. if all(value is None for value in obj.values()): return None adequacy_path_section = AdequacyPathProperties.AdequacyPathSection(**obj) - return AdequacyPathProperties(adequacy_patch=adequacy_path_section) + return AdequacyPathProperties.model_validate({"adequacy_patch": adequacy_path_section}) @property def area_folder(self) -> AreaFolder: @@ -359,7 +362,7 @@ def update_areas_props( for area_id, update_area in update_areas_by_ids.items(): # Update the area properties. old_area = old_areas_by_ids[area_id] - new_area = old_area.copy(update=update_area.dict(by_alias=False, exclude_none=True)) + new_area = old_area.copy(update=update_area.model_dump(by_alias=False, exclude_none=True)) new_areas_by_ids[area_id] = new_area # Convert the DTO to a configuration object and update the configuration file. @@ -740,7 +743,7 @@ def update_thermal_cluster_metadata( id=area_id, name=file_study.config.areas[area_id].name, type=AreaType.AREA, - metadata=patch.areas.get(area_id, PatchArea()).dict(), + metadata=patch.areas.get(area_id, PatchArea()), thermals=self._get_clusters(file_study, area_id, patch), set=None, ) diff --git a/antarest/study/business/areas/hydro_management.py b/antarest/study/business/areas/hydro_management.py index b7376dae10..d464336d93 100644 --- a/antarest/study/business/areas/hydro_management.py +++ b/antarest/study/business/areas/hydro_management.py @@ -10,10 +10,11 @@ # # This file is part of the Antares project. -from typing import Any, Dict, List, Optional +from typing import Any, Dict, List, Optional, Union -from pydantic import Field +from pydantic import Field, model_validator +from antarest.study.business.all_optional_meta import all_optional_model from antarest.study.business.utils import FieldInfo, FormFieldsBaseModel, execute_or_add_commands from antarest.study.model import Study from antarest.study.storage.storage_service import StudyStorageService @@ -36,22 +37,23 @@ class InflowStructure(FormFieldsBaseModel): ) +@all_optional_model class ManagementOptionsFormFields(FormFieldsBaseModel): - inter_daily_breakdown: Optional[float] = Field(ge=0) - intra_daily_modulation: Optional[float] = Field(ge=1) - inter_monthly_breakdown: Optional[float] = Field(ge=0) - reservoir: Optional[bool] - reservoir_capacity: Optional[float] = Field(ge=0) - follow_load: Optional[bool] - use_water: Optional[bool] - hard_bounds: Optional[bool] - initialize_reservoir_date: Optional[int] = Field(ge=0, le=11) - use_heuristic: Optional[bool] - power_to_level: Optional[bool] - use_leeway: Optional[bool] - leeway_low: Optional[float] = Field(ge=0) - leeway_up: Optional[float] = Field(ge=0) - pumping_efficiency: Optional[float] = Field(ge=0) + inter_daily_breakdown: float = Field(ge=0) + intra_daily_modulation: float = Field(ge=1) + inter_monthly_breakdown: float = Field(ge=0) + reservoir: bool + reservoir_capacity: float = Field(ge=0) + follow_load: bool + use_water: bool + hard_bounds: bool + initialize_reservoir_date: int = Field(ge=0, le=11) + use_heuristic: bool + power_to_level: bool + use_leeway: bool + leeway_low: float = Field(ge=0) + leeway_up: float = Field(ge=0) + pumping_efficiency: float = Field(ge=0) HYDRO_PATH = "input/hydro/hydro" diff --git a/antarest/study/business/areas/properties_management.py b/antarest/study/business/areas/properties_management.py index f4abd5b1bb..ac3dbb902a 100644 --- a/antarest/study/business/areas/properties_management.py +++ b/antarest/study/business/areas/properties_management.py @@ -14,9 +14,10 @@ import typing as t from builtins import sorted -from pydantic import root_validator +from pydantic import model_validator from antarest.core.exceptions import ChildNotFoundError +from antarest.study.business.all_optional_meta import all_optional_model from antarest.study.business.utils import FieldInfo, FormFieldsBaseModel, execute_or_add_commands from antarest.study.model import Study from antarest.study.storage.rawstudy.model.filesystem.config.area import AdequacyPatchMode @@ -49,18 +50,19 @@ def decode_filter(encoded_value: t.Set[str], current_filter: t.Optional[str] = N return ", ".join(sort_filter_options(encoded_value)) +@all_optional_model class PropertiesFormFields(FormFieldsBaseModel): - energy_cost_unsupplied: t.Optional[float] - energy_cost_spilled: t.Optional[float] - non_dispatch_power: t.Optional[bool] - dispatch_hydro_power: t.Optional[bool] - other_dispatch_power: t.Optional[bool] - filter_synthesis: t.Optional[t.Set[str]] - filter_by_year: t.Optional[t.Set[str]] + energy_cost_unsupplied: float + energy_cost_spilled: float + non_dispatch_power: bool + dispatch_hydro_power: bool + other_dispatch_power: bool + filter_synthesis: t.Set[str] + filter_by_year: t.Set[str] # version 830 - adequacy_patch_mode: t.Optional[AdequacyPatchMode] + adequacy_patch_mode: AdequacyPatchMode - @root_validator + @model_validator(mode="before") def validation(cls, values: t.Dict[str, t.Any]) -> t.Dict[str, t.Any]: filters = { "filter_synthesis": values.get("filter_synthesis"), @@ -143,7 +145,7 @@ def get_value(field_info: FieldInfo) -> t.Any: encode = field_info.get("encode") or (lambda x: x) return encode(val) - return PropertiesFormFields.construct(**{name: get_value(info) for name, info in FIELDS_INFO.items()}) + return PropertiesFormFields.model_construct(**{name: get_value(info) for name, info in FIELDS_INFO.items()}) def set_field_values( self, diff --git a/antarest/study/business/areas/renewable_management.py b/antarest/study/business/areas/renewable_management.py index 5a9c2d47bb..12af8abdb5 100644 --- a/antarest/study/business/areas/renewable_management.py +++ b/antarest/study/business/areas/renewable_management.py @@ -11,14 +11,13 @@ # This file is part of the Antares project. import collections -import json import typing as t -from pydantic import validator +from pydantic import field_validator from antarest.core.exceptions import DuplicateRenewableCluster, RenewableClusterConfigNotFound, RenewableClusterNotFound from antarest.core.model import JSON -from antarest.study.business.all_optional_meta import AllOptionalMetaclass, camel_case_model +from antarest.study.business.all_optional_meta import all_optional_model, camel_case_model from antarest.study.business.enum_ignore_case import EnumIgnoreCase from antarest.study.business.utils import execute_or_add_commands from antarest.study.model import Study @@ -46,23 +45,26 @@ class TimeSeriesInterpretation(EnumIgnoreCase): PRODUCTION_FACTOR = "production-factor" +@all_optional_model @camel_case_model -class RenewableClusterInput(RenewableProperties, metaclass=AllOptionalMetaclass, use_none=True): +class RenewableClusterInput(RenewableProperties): """ Model representing the data structure required to edit an existing renewable cluster. """ class Config: + populate_by_name = True + @staticmethod - def schema_extra(schema: t.MutableMapping[str, t.Any]) -> None: + def json_schema_extra(schema: t.MutableMapping[str, t.Any]) -> None: schema["example"] = RenewableClusterInput( group="Gas", name="Gas Cluster XY", enabled=False, - unitCount=100, - nominalCapacity=1000.0, - tsInterpretation="power-generation", - ) + unit_count=100, + nominal_capacity=1000.0, + ts_interpretation="power-generation", + ).model_dump() class RenewableClusterCreation(RenewableClusterInput): @@ -71,7 +73,7 @@ class RenewableClusterCreation(RenewableClusterInput): """ # noinspection Pydantic - @validator("name", pre=True) + @field_validator("name", mode="before") def validate_name(cls, name: t.Optional[str]) -> str: """ Validator to check if the name is not empty. @@ -81,28 +83,29 @@ def validate_name(cls, name: t.Optional[str]) -> str: return name def to_config(self, study_version: t.Union[str, int]) -> RenewableConfigType: - values = self.dict(by_alias=False, exclude_none=True) + values = self.model_dump(by_alias=False, exclude_none=True) return create_renewable_config(study_version=study_version, **values) +@all_optional_model @camel_case_model -class RenewableClusterOutput(RenewableConfig, metaclass=AllOptionalMetaclass, use_none=True): +class RenewableClusterOutput(RenewableConfig): """ Model representing the output data structure to display the details of a renewable cluster. """ class Config: @staticmethod - def schema_extra(schema: t.MutableMapping[str, t.Any]) -> None: + def json_schema_extra(schema: t.MutableMapping[str, t.Any]) -> None: schema["example"] = RenewableClusterOutput( id="Gas cluster YZ", group="Gas", name="Gas Cluster YZ", enabled=False, - unitCount=100, - nominalCapacity=1000.0, - tsInterpretation="power-generation", - ) + unit_count=100, + nominal_capacity=1000.0, + ts_interpretation="power-generation", + ).model_dump() def create_renewable_output( @@ -111,7 +114,7 @@ def create_renewable_output( config: t.Mapping[str, t.Any], ) -> "RenewableClusterOutput": obj = create_renewable_config(study_version=study_version, **config, id=cluster_id) - kwargs = obj.dict(by_alias=False) + kwargs = obj.model_dump(by_alias=False) return RenewableClusterOutput(**kwargs) @@ -218,7 +221,7 @@ def _make_create_cluster_cmd(self, area_id: str, cluster: RenewableConfigType) - command = CreateRenewablesCluster( area_id=area_id, cluster_name=cluster.id, - parameters=cluster.dict(by_alias=True, exclude={"id"}), + parameters=cluster.model_dump(mode="json", by_alias=True, exclude={"id"}), command_context=self.storage_service.variant_study_service.command_factory.command_context, ) return command @@ -281,16 +284,16 @@ def update_cluster( old_config = create_renewable_config(study_version, **values) # use Python values to synchronize Config and Form values - new_values = cluster_data.dict(by_alias=False, exclude_none=True) + new_values = cluster_data.model_dump(by_alias=False, exclude_none=True) new_config = old_config.copy(exclude={"id"}, update=new_values) - new_data = json.loads(new_config.json(by_alias=True, exclude={"id"})) + new_data = new_config.model_dump(mode="json", by_alias=True, exclude={"id"}) # create the dict containing the new values using aliases - data: t.Dict[str, t.Any] = { - field.alias: new_data[field.alias] - for field_name, field in new_config.__fields__.items() - if field_name in new_values - } + data: t.Dict[str, t.Any] = {} + for field_name, field in new_config.model_fields.items(): + if field_name in new_values: + name = field.alias if field.alias else field_name + data[name] = new_data[name] # create the update config commands with the modified data command_context = self.storage_service.variant_study_service.command_factory.command_context @@ -300,7 +303,7 @@ def update_cluster( ] execute_or_add_commands(study, file_study, commands, self.storage_service) - values = new_config.dict(by_alias=False) + values = new_config.model_dump(by_alias=False) return RenewableClusterOutput(**values, id=cluster_id) def delete_clusters(self, study: Study, area_id: str, cluster_ids: t.Sequence[str]) -> None: @@ -352,7 +355,7 @@ def duplicate_cluster( # Cluster duplication current_cluster = self.get_cluster(study, area_id, source_id) current_cluster.name = new_cluster_name - creation_form = RenewableClusterCreation(**current_cluster.dict(by_alias=False, exclude={"id"})) + creation_form = RenewableClusterCreation(**current_cluster.model_dump(by_alias=False, exclude={"id"})) new_config = creation_form.to_config(study.version) create_cluster_cmd = self._make_create_cluster_cmd(area_id, new_config) @@ -370,7 +373,7 @@ def duplicate_cluster( execute_or_add_commands(study, self._get_file_study(study), commands, self.storage_service) - return RenewableClusterOutput(**new_config.dict(by_alias=False)) + return RenewableClusterOutput(**new_config.model_dump(by_alias=False)) def update_renewables_props( self, @@ -387,17 +390,17 @@ def update_renewables_props( for renewable_id, update_cluster in update_renewables_by_ids.items(): # Update the renewable cluster properties. old_cluster = old_renewables_by_ids[renewable_id] - new_cluster = old_cluster.copy(update=update_cluster.dict(by_alias=False, exclude_none=True)) + new_cluster = old_cluster.copy(update=update_cluster.model_dump(by_alias=False, exclude_none=True)) new_renewables_by_areas[area_id][renewable_id] = new_cluster # Convert the DTO to a configuration object and update the configuration file. properties = create_renewable_config( - study.version, **new_cluster.dict(by_alias=False, exclude_none=True) + study.version, **new_cluster.model_dump(by_alias=False, exclude_none=True) ) path = _CLUSTER_PATH.format(area_id=area_id, cluster_id=renewable_id) cmd = UpdateConfig( target=path, - data=json.loads(properties.json(by_alias=True, exclude={"id"})), + data=properties.model_dump(mode="json", by_alias=True, exclude={"id"}), command_context=self.storage_service.variant_study_service.command_factory.command_context, ) commands.append(cmd) diff --git a/antarest/study/business/areas/st_storage_management.py b/antarest/study/business/areas/st_storage_management.py index ee64362d8b..dcb5db5dc8 100644 --- a/antarest/study/business/areas/st_storage_management.py +++ b/antarest/study/business/areas/st_storage_management.py @@ -11,14 +11,11 @@ # This file is part of the Antares project. import collections -import functools -import json import operator import typing as t import numpy as np -from pydantic import BaseModel, Extra, root_validator, validator -from requests.structures import CaseInsensitiveDict +from pydantic import BaseModel, field_validator, model_validator from typing_extensions import Literal from antarest.core.exceptions import ( @@ -30,7 +27,8 @@ STStorageNotFound, ) from antarest.core.model import JSON -from antarest.study.business.all_optional_meta import AllOptionalMetaclass, camel_case_model +from antarest.core.requests import CaseInsensitiveDict +from antarest.study.business.all_optional_meta import all_optional_model, camel_case_model from antarest.study.business.utils import execute_or_add_commands from antarest.study.model import Study from antarest.study.storage.rawstudy.model.filesystem.config.model import transform_name_to_id @@ -49,15 +47,16 @@ from antarest.study.storage.variantstudy.model.command.update_config import UpdateConfig +@all_optional_model @camel_case_model -class STStorageInput(STStorage880Properties, metaclass=AllOptionalMetaclass, use_none=True): +class STStorageInput(STStorage880Properties): """ Model representing the form used to EDIT an existing short-term storage. """ class Config: @staticmethod - def schema_extra(schema: t.MutableMapping[str, t.Any]) -> None: + def json_schema_extra(schema: t.MutableMapping[str, t.Any]) -> None: schema["example"] = STStorageInput( name="Siemens Battery", group=STStorageGroup.BATTERY, @@ -67,7 +66,7 @@ def schema_extra(schema: t.MutableMapping[str, t.Any]) -> None: efficiency=0.94, initial_level=0.5, initial_level_optim=True, - ) + ).model_dump() class STStorageCreation(STStorageInput): @@ -76,7 +75,7 @@ class STStorageCreation(STStorageInput): """ # noinspection Pydantic - @validator("name", pre=True) + @field_validator("name", mode="before") def validate_name(cls, name: t.Optional[str]) -> str: """ Validator to check if the name is not empty. @@ -87,19 +86,20 @@ def validate_name(cls, name: t.Optional[str]) -> str: # noinspection PyUnusedLocal def to_config(self, study_version: t.Union[str, int]) -> STStorageConfigType: - values = self.dict(by_alias=False, exclude_none=True) + values = self.model_dump(by_alias=False, exclude_none=True) return create_st_storage_config(study_version=study_version, **values) +@all_optional_model @camel_case_model -class STStorageOutput(STStorage880Config, metaclass=AllOptionalMetaclass, use_none=True): +class STStorageOutput(STStorage880Config): """ Model representing the form used to display the details of a short-term storage entry. """ class Config: @staticmethod - def schema_extra(schema: t.MutableMapping[str, t.Any]) -> None: + def json_schema_extra(schema: t.MutableMapping[str, t.Any]) -> None: schema["example"] = STStorageOutput( id="siemens_battery", name="Siemens Battery", @@ -109,7 +109,7 @@ def schema_extra(schema: t.MutableMapping[str, t.Any]) -> None: reservoir_capacity=600, efficiency=0.94, initial_level_optim=True, - ) + ).model_dump() # ============= @@ -131,13 +131,13 @@ class STStorageMatrix(BaseModel): """ class Config: - extra = Extra.forbid + extra = "forbid" data: t.List[t.List[float]] index: t.List[int] columns: t.List[int] - @validator("data") + @field_validator("data") def validate_time_series(cls, data: t.List[t.List[float]]) -> t.List[t.List[float]]: """ Validator to check the integrity of the time series data. @@ -172,7 +172,7 @@ class STStorageMatrices(BaseModel): """ class Config: - extra = Extra.forbid + extra = "forbid" pmax_injection: STStorageMatrix pmax_withdrawal: STStorageMatrix @@ -180,7 +180,7 @@ class Config: upper_rule_curve: STStorageMatrix inflows: STStorageMatrix - @validator( + @field_validator( "pmax_injection", "pmax_withdrawal", "lower_rule_curve", @@ -195,23 +195,18 @@ def validate_time_series(cls, matrix: STStorageMatrix) -> STStorageMatrix: raise ValueError("Matrix values should be between 0 and 1") return matrix - @root_validator() - def validate_rule_curve( - cls, values: t.MutableMapping[str, STStorageMatrix] - ) -> t.MutableMapping[str, STStorageMatrix]: + @model_validator(mode="after") + def validate_rule_curve(self) -> "STStorageMatrices": """ Validator to ensure 'lower_rule_curve' values are less than or equal to 'upper_rule_curve' values. """ - if "lower_rule_curve" in values and "upper_rule_curve" in values: - lower_rule_curve = values["lower_rule_curve"] - upper_rule_curve = values["upper_rule_curve"] - lower_array = np.array(lower_rule_curve.data, dtype=np.float64) - upper_array = np.array(upper_rule_curve.data, dtype=np.float64) - # noinspection PyUnresolvedReferences - if (lower_array > upper_array).any(): - raise ValueError("Each 'lower_rule_curve' value must be lower or equal to each 'upper_rule_curve'") - return values + lower_array = np.array(self.lower_rule_curve.data, dtype=np.float64) + upper_array = np.array(self.upper_rule_curve.data, dtype=np.float64) + if (lower_array > upper_array).any(): + raise ValueError("Each 'lower_rule_curve' value must be lower or equal to each 'upper_rule_curve'") + + return self # noinspection SpellCheckingInspection @@ -249,7 +244,7 @@ def create_storage_output( config: t.Mapping[str, t.Any], ) -> "STStorageOutput": obj = create_st_storage_config(study_version=study_version, **config, id=cluster_id) - kwargs = obj.dict(by_alias=False) + kwargs = obj.model_dump(by_alias=False) return STStorageOutput(**kwargs) @@ -393,17 +388,17 @@ def update_storages_props( for storage_id, update_cluster in update_storages_by_ids.items(): # Update the storage cluster properties. old_cluster = old_storages_by_ids[storage_id] - new_cluster = old_cluster.copy(update=update_cluster.dict(by_alias=False, exclude_none=True)) + new_cluster = old_cluster.copy(update=update_cluster.model_dump(by_alias=False, exclude_none=True)) new_storages_by_areas[area_id][storage_id] = new_cluster # Convert the DTO to a configuration object and update the configuration file. properties = create_st_storage_config( - study.version, **new_cluster.dict(by_alias=False, exclude_none=True) + study.version, **new_cluster.model_dump(by_alias=False, exclude_none=True) ) path = _STORAGE_LIST_PATH.format(area_id=area_id, storage_id=storage_id) cmd = UpdateConfig( target=path, - data=json.loads(properties.json(by_alias=True, exclude={"id"})), + data=properties.model_dump(mode="json", by_alias=True, exclude={"id"}), command_context=self.storage_service.variant_study_service.command_factory.command_context, ) commands.append(cmd) @@ -472,16 +467,16 @@ def update_storage( old_config = create_st_storage_config(study_version, **values) # use Python values to synchronize Config and Form values - new_values = form.dict(by_alias=False, exclude_none=True) + new_values = form.model_dump(by_alias=False, exclude_none=True) new_config = old_config.copy(exclude={"id"}, update=new_values) - new_data = json.loads(new_config.json(by_alias=True, exclude={"id"})) + new_data = new_config.model_dump(mode="json", by_alias=True, exclude={"id"}) # create the dict containing the new values using aliases - data: t.Dict[str, t.Any] = { - field.alias: new_data[field.alias] - for field_name, field in new_config.__fields__.items() - if field_name in new_values - } + data: t.Dict[str, t.Any] = {} + for field_name, field in new_config.model_fields.items(): + if field_name in new_values: + name = field.alias if field.alias else field_name + data[name] = new_data[name] # create the update config commands with the modified data command_context = self.storage_service.variant_study_service.command_factory.command_context @@ -492,7 +487,7 @@ def update_storage( ] execute_or_add_commands(study, file_study, commands, self.storage_service) - values = new_config.dict(by_alias=False) + values = new_config.model_dump(by_alias=False) return STStorageOutput(**values, id=storage_id) def delete_storages( @@ -554,7 +549,7 @@ def duplicate_cluster(self, study: Study, area_id: str, source_id: str, new_clus # We should remove the field 'enabled' for studies before v8.8 as it didn't exist if int(study.version) < 880: fields_to_exclude.add("enabled") - creation_form = STStorageCreation(**current_cluster.dict(by_alias=False, exclude=fields_to_exclude)) + creation_form = STStorageCreation(**current_cluster.model_dump(by_alias=False, exclude=fields_to_exclude)) new_config = creation_form.to_config(study.version) create_cluster_cmd = self._make_create_cluster_cmd(area_id, new_config) @@ -583,7 +578,7 @@ def duplicate_cluster(self, study: Study, area_id: str, source_id: str, new_clus execute_or_add_commands(study, self._get_file_study(study), commands, self.storage_service) - return STStorageOutput(**new_config.dict(by_alias=False)) + return STStorageOutput(**new_config.model_dump(by_alias=False)) def get_matrix( self, @@ -684,17 +679,18 @@ def validate_matrices( Returns: bool: True if validation is successful. """ - # Create a partial function to retrieve matrix objects - get_matrix_obj = functools.partial(self._get_matrix_obj, study, area_id, storage_id) + + def validate_matrix(matrix_type: STStorageTimeSeries) -> STStorageMatrix: + return STStorageMatrix.model_validate(self._get_matrix_obj(study, area_id, storage_id, matrix_type)) # Validate matrices by constructing the `STStorageMatrices` object # noinspection SpellCheckingInspection STStorageMatrices( - pmax_injection=get_matrix_obj("pmax_injection"), - pmax_withdrawal=get_matrix_obj("pmax_withdrawal"), - lower_rule_curve=get_matrix_obj("lower_rule_curve"), - upper_rule_curve=get_matrix_obj("upper_rule_curve"), - inflows=get_matrix_obj("inflows"), + pmax_injection=validate_matrix("pmax_injection"), + pmax_withdrawal=validate_matrix("pmax_withdrawal"), + lower_rule_curve=validate_matrix("lower_rule_curve"), + upper_rule_curve=validate_matrix("upper_rule_curve"), + inflows=validate_matrix("inflows"), ) # Validation successful diff --git a/antarest/study/business/areas/thermal_management.py b/antarest/study/business/areas/thermal_management.py index f37bc757f1..c1a06068aa 100644 --- a/antarest/study/business/areas/thermal_management.py +++ b/antarest/study/business/areas/thermal_management.py @@ -11,11 +11,10 @@ # This file is part of the Antares project. import collections -import json import typing as t from pathlib import Path -from pydantic import validator +from pydantic import field_validator from antarest.core.exceptions import ( DuplicateThermalCluster, @@ -25,7 +24,7 @@ WrongMatrixHeightError, ) from antarest.core.model import JSON -from antarest.study.business.all_optional_meta import AllOptionalMetaclass, camel_case_model +from antarest.study.business.all_optional_meta import all_optional_model, camel_case_model from antarest.study.business.utils import execute_or_add_commands from antarest.study.model import Study from antarest.study.storage.rawstudy.model.filesystem.config.model import transform_name_to_id @@ -54,33 +53,35 @@ _ALL_CLUSTERS_PATH = "input/thermal/clusters" +@all_optional_model @camel_case_model -class ThermalClusterInput(Thermal870Properties, metaclass=AllOptionalMetaclass, use_none=True): +class ThermalClusterInput(Thermal870Properties): """ Model representing the data structure required to edit an existing thermal cluster within a study. """ class Config: @staticmethod - def schema_extra(schema: t.MutableMapping[str, t.Any]) -> None: + def json_schema_extra(schema: t.MutableMapping[str, t.Any]) -> None: schema["example"] = ThermalClusterInput( group="Gas", name="Gas Cluster XY", enabled=False, - unitCount=100, - nominalCapacity=1000.0, - genTs="use global", + unit_count=100, + nominal_capacity=1000.0, + gen_ts="use global", co2=7.0, - ) + ).model_dump() +@camel_case_model class ThermalClusterCreation(ThermalClusterInput): """ Model representing the data structure required to create a new thermal cluster within a study. """ # noinspection Pydantic - @validator("name", pre=True) + @field_validator("name", mode="before") def validate_name(cls, name: t.Optional[str]) -> str: """ Validator to check if the name is not empty. @@ -90,29 +91,30 @@ def validate_name(cls, name: t.Optional[str]) -> str: return name def to_config(self, study_version: t.Union[str, int]) -> ThermalConfigType: - values = self.dict(by_alias=False, exclude_none=True) + values = self.model_dump(by_alias=False, exclude_none=True) return create_thermal_config(study_version=study_version, **values) +@all_optional_model @camel_case_model -class ThermalClusterOutput(Thermal870Config, metaclass=AllOptionalMetaclass, use_none=True): +class ThermalClusterOutput(Thermal870Config): """ Model representing the output data structure to display the details of a thermal cluster within a study. """ class Config: @staticmethod - def schema_extra(schema: t.MutableMapping[str, t.Any]) -> None: + def json_schema_extra(schema: t.MutableMapping[str, t.Any]) -> None: schema["example"] = ThermalClusterOutput( id="Gas cluster YZ", group="Gas", name="Gas Cluster YZ", enabled=False, - unitCount=100, - nominalCapacity=1000.0, - genTs="use global", + unit_count=100, + nominal_capacity=1000.0, + gen_ts="use global", co2=7.0, - ) + ).model_dump() def create_thermal_output( @@ -121,7 +123,7 @@ def create_thermal_output( config: t.Mapping[str, t.Any], ) -> "ThermalClusterOutput": obj = create_thermal_config(study_version=study_version, **config, id=cluster_id) - kwargs = obj.dict(by_alias=False) + kwargs = obj.model_dump(by_alias=False) return ThermalClusterOutput(**kwargs) @@ -252,15 +254,17 @@ def update_thermals_props( for thermal_id, update_cluster in update_thermals_by_ids.items(): # Update the thermal cluster properties. old_cluster = old_thermals_by_ids[thermal_id] - new_cluster = old_cluster.copy(update=update_cluster.dict(by_alias=False, exclude_none=True)) + new_cluster = old_cluster.copy(update=update_cluster.model_dump(by_alias=False, exclude_none=True)) new_thermals_by_areas[area_id][thermal_id] = new_cluster # Convert the DTO to a configuration object and update the configuration file. - properties = create_thermal_config(study.version, **new_cluster.dict(by_alias=False, exclude_none=True)) + properties = create_thermal_config( + study.version, **new_cluster.model_dump(by_alias=False, exclude_none=True) + ) path = _CLUSTER_PATH.format(area_id=area_id, cluster_id=thermal_id) cmd = UpdateConfig( target=path, - data=json.loads(properties.json(by_alias=True, exclude={"id"})), + data=properties.model_dump(mode="json", by_alias=True, exclude={"id"}), command_context=self.storage_service.variant_study_service.command_factory.command_context, ) commands.append(cmd) @@ -302,12 +306,13 @@ def create_cluster(self, study: Study, area_id: str, cluster_data: ThermalCluste def _make_create_cluster_cmd(self, area_id: str, cluster: ThermalConfigType) -> CreateCluster: # NOTE: currently, in the `CreateCluster` class, there is a confusion # between the cluster name and the cluster ID (which is a section name). - command = CreateCluster( - area_id=area_id, - cluster_name=cluster.id, - parameters=cluster.dict(by_alias=True, exclude={"id"}), - command_context=self.storage_service.variant_study_service.command_factory.command_context, - ) + args = { + "area_id": area_id, + "cluster_name": cluster.id, + "parameters": cluster.model_dump(mode="json", by_alias=True, exclude={"id"}), + "command_context": self.storage_service.variant_study_service.command_factory.command_context, + } + command = CreateCluster.model_validate(args) return command def update_cluster( @@ -346,16 +351,16 @@ def update_cluster( old_config = create_thermal_config(study_version, **values) # Use Python values to synchronize Config and Form values - new_values = cluster_data.dict(by_alias=False, exclude_none=True) + new_values = cluster_data.model_dump(by_alias=False, exclude_none=True) new_config = old_config.copy(exclude={"id"}, update=new_values) - new_data = json.loads(new_config.json(by_alias=True, exclude={"id"})) + new_data = new_config.model_dump(mode="json", by_alias=True, exclude={"id"}) # create the dict containing the new values using aliases - data: t.Dict[str, t.Any] = { - field.alias: new_data[field.alias] - for field_name, field in new_config.__fields__.items() - if field_name in new_values - } + data: t.Dict[str, t.Any] = {} + for field_name, field in new_config.model_fields.items(): + if field_name in new_values: + name = field.alias if field.alias else field_name + data[name] = new_data[name] # create the update config commands with the modified data command_context = self.storage_service.variant_study_service.command_factory.command_context @@ -365,8 +370,8 @@ def update_cluster( ] execute_or_add_commands(study, file_study, commands, self.storage_service) - values = new_config.dict(by_alias=False) - return ThermalClusterOutput(**values, id=cluster_id) + values = {**new_config.model_dump(mode="json", by_alias=False), "id": cluster_id} + return ThermalClusterOutput.model_validate(values) def delete_clusters(self, study: Study, area_id: str, cluster_ids: t.Sequence[str]) -> None: """ @@ -418,7 +423,7 @@ def duplicate_cluster( # Cluster duplication source_cluster = self.get_cluster(study, area_id, source_id) source_cluster.name = new_cluster_name - creation_form = ThermalClusterCreation(**source_cluster.dict(by_alias=False, exclude={"id"})) + creation_form = ThermalClusterCreation(**source_cluster.model_dump(by_alias=False, exclude={"id"})) new_config = creation_form.to_config(study.version) create_cluster_cmd = self._make_create_cluster_cmd(area_id, new_config) @@ -451,7 +456,7 @@ def duplicate_cluster( execute_or_add_commands(study, self._get_file_study(study), commands, self.storage_service) - return ThermalClusterOutput(**new_config.dict(by_alias=False)) + return ThermalClusterOutput(**new_config.model_dump(by_alias=False)) def validate_series(self, study: Study, area_id: str, cluster_id: str) -> bool: lower_cluster_id = cluster_id.lower() diff --git a/antarest/study/business/binding_constraint_management.py b/antarest/study/business/binding_constraint_management.py index 90735ff6b2..4ef2a5fffc 100644 --- a/antarest/study/business/binding_constraint_management.py +++ b/antarest/study/business/binding_constraint_management.py @@ -11,13 +11,11 @@ # This file is part of the Antares project. import collections -import json import logging import typing as t import numpy as np -from pydantic import BaseModel, Field, root_validator, validator -from requests.utils import CaseInsensitiveDict +from pydantic import BaseModel, Field, field_validator, model_validator from antarest.core.exceptions import ( BindingConstraintNotFound, @@ -31,6 +29,7 @@ WrongMatrixHeightError, ) from antarest.core.model import JSON +from antarest.core.requests import CaseInsensitiveDict from antarest.core.utils.string import to_camel_case from antarest.study.business.all_optional_meta import camel_case_model from antarest.study.business.utils import execute_or_add_commands @@ -129,12 +128,12 @@ class ConstraintTerm(BaseModel): data: the constraint term data (link or cluster), if any. """ - id: t.Optional[str] - weight: t.Optional[float] - offset: t.Optional[int] - data: t.Optional[t.Union[LinkTerm, ClusterTerm]] + id: t.Optional[str] = None + weight: t.Optional[float] = None + offset: t.Optional[int] = None + data: t.Optional[t.Union[LinkTerm, ClusterTerm]] = None - @validator("id") + @field_validator("id") def id_to_lower(cls, v: t.Optional[str]) -> t.Optional[str]: """Ensure the ID is lower case.""" if v is None: @@ -265,7 +264,7 @@ class ConstraintInput(BindingConstraintMatrices, ConstraintInput870): class ConstraintCreation(ConstraintInput): name: str - @root_validator(pre=True) + @model_validator(mode="before") def check_matrices_dimensions(cls, values: t.Dict[str, t.Any]) -> t.Dict[str, t.Any]: for _key in ["time_step"] + [m.value for m in TermMatrices]: _camel = to_camel_case(_key) @@ -316,20 +315,19 @@ def check_matrices_dimensions(cls, values: t.Dict[str, t.Any]) -> t.Dict[str, t. raise ValueError(err_msg) -@camel_case_model class ConstraintOutputBase(BindingConstraintPropertiesBase): id: str name: str terms: t.MutableSequence[ConstraintTerm] = Field(default_factory=lambda: []) + # I have to redefine the time_step attribute to give him another alias. + time_step: t.Optional[BindingConstraintFrequency] = Field(DEFAULT_TIMESTEP, alias="timeStep") # type: ignore -@camel_case_model class ConstraintOutput830(ConstraintOutputBase): - filter_year_by_year: str = "" - filter_synthesis: str = "" + filter_year_by_year: str = Field(default="", alias="filterYearByYear") + filter_synthesis: str = Field(default="", alias="filterSynthesis") -@camel_case_model class ConstraintOutput870(ConstraintOutput830): group: str = DEFAULT_GROUP @@ -372,7 +370,7 @@ def _get_references_by_widths( continue matrix_height = matrix.shape[0] - expected_height = EXPECTED_MATRIX_SHAPES[bc.time_step][0] + expected_height = EXPECTED_MATRIX_SHAPES[bc.time_step][0] # type: ignore if matrix_height != expected_height: raise WrongMatrixHeightError( f"The binding constraint '{bc.name}' should have {expected_height} rows, currently: {matrix_height}" @@ -443,17 +441,22 @@ def parse_and_add_terms(key: str, value: t.Any, adapted_constraint: ConstraintOu id=key, weight=weight, offset=offset, - data={ - "area1": term_data[0], - "area2": term_data[1], - }, + data=LinkTerm.model_validate( + { + "area1": term_data[0], + "area2": term_data[1], + } + ), ) ) # Cluster term else: adapted_constraint.terms.append( ConstraintTerm( - id=key, weight=weight, offset=offset, data={"area": term_data[0], "cluster": term_data[1]} + id=key, + weight=weight, + offset=offset, + data=ClusterTerm.model_validate({"area": term_data[0], "cluster": term_data[1]}), ) ) @@ -601,7 +604,7 @@ def get_grouped_constraints(self, study: Study) -> t.Mapping[str, t.Sequence[Con storage_service = self.storage_service.get_storage(study) file_study = storage_service.get_raw(study) config = file_study.tree.get(["input", "bindingconstraints", "bindingconstraints"]) - grouped_constraints = CaseInsensitiveDict() # type: ignore + grouped_constraints = CaseInsensitiveDict() for constraint in config.values(): constraint_config = self.constraint_model_adapter(constraint, int(study.version)) @@ -710,7 +713,10 @@ def create_binding_constraint( check_attributes_coherence(data, version, data.operator or DEFAULT_OPERATOR) - new_constraint = {"name": data.name, **json.loads(data.json(exclude={"terms", "name"}, exclude_none=True))} + new_constraint = { + "name": data.name, + **data.model_dump(mode="json", exclude={"terms", "name"}, exclude_none=True), + } args = { **new_constraint, "command_context": self.storage_service.variant_study_service.command_factory.command_context, @@ -748,7 +754,7 @@ def update_binding_constraint( upd_constraint = { "id": binding_constraint_id, - **json.loads(data.json(exclude={"terms", "name"}, exclude_none=True)), + **data.model_dump(mode="json", exclude={"terms", "name"}, exclude_none=True), } args = { **upd_constraint, @@ -768,7 +774,7 @@ def update_binding_constraint( updated_matrices = [term for term in [m.value for m in TermMatrices] if getattr(data, term)] time_step = data.time_step or existing_constraint.time_step command.validates_and_fills_matrices( - time_step=time_step, specific_matrices=updated_matrices, version=study_version, create=False + time_step=time_step, specific_matrices=updated_matrices, version=study_version, create=False # type: ignore ) execute_or_add_commands(study, file_study, [command], self.storage_service) @@ -834,11 +840,9 @@ def _update_constraint_with_terms( coeffs = { term_id: [term.weight, term.offset] if term.offset else [term.weight] for term_id, term in terms.items() } - command = UpdateBindingConstraint( - id=bc.id, - coeffs=coeffs, - command_context=self.storage_service.variant_study_service.command_factory.command_context, - ) + command_context = self.storage_service.variant_study_service.command_factory.command_context + args = {"id": bc.id, "coeffs": coeffs, "command_context": command_context} + command = UpdateBindingConstraint.model_validate(args) file_study = self.storage_service.get_storage(study).get_raw(study) execute_or_add_commands(study, file_study, [command], self.storage_service) @@ -861,7 +865,7 @@ def update_constraint_terms( if update_mode == "add": for term in constraint_terms: if term.data is None: - raise InvalidConstraintTerm(binding_constraint_id, term.json()) + raise InvalidConstraintTerm(binding_constraint_id, term.model_dump_json()) constraint = self.get_binding_constraint(study, binding_constraint_id) existing_terms = collections.OrderedDict((term.generate_id(), term) for term in constraint.terms) diff --git a/antarest/study/business/correlation_management.py b/antarest/study/business/correlation_management.py index 56b9e33fba..c05b293b3e 100644 --- a/antarest/study/business/correlation_management.py +++ b/antarest/study/business/correlation_management.py @@ -15,11 +15,11 @@ The generators are of the same category and can be hydraulic, wind, load or solar. """ import collections -from typing import Dict, List, Sequence +from typing import Dict, List, Sequence, Union import numpy as np import numpy.typing as npt -from pydantic import conlist, validator +from pydantic import ValidationInfo, field_validator from antarest.core.exceptions import AreaNotFound from antarest.study.business.area_management import AreaInfoDTO @@ -40,7 +40,7 @@ class AreaCoefficientItem(FormFieldsBaseModel): """ class Config: - allow_population_by_field_name = True + populate_by_name = True area_id: str coefficient: float @@ -57,7 +57,7 @@ class CorrelationFormFields(FormFieldsBaseModel): correlation: List[AreaCoefficientItem] # noinspection PyMethodParameters - @validator("correlation") + @field_validator("correlation") def check_correlation(cls, correlation: List[AreaCoefficientItem]) -> List[AreaCoefficientItem]: if not correlation: raise ValueError("correlation must not be empty") @@ -84,13 +84,21 @@ class CorrelationMatrix(FormFieldsBaseModel): data: A 2D-array matrix of correlation coefficients. """ - index: conlist(str, min_items=1) # type: ignore - columns: conlist(str, min_items=1) # type: ignore + index: List[str] + columns: List[str] data: List[List[float]] # NonNegativeFloat not necessary + @field_validator("index", "columns", mode="before") + def validate_list_length(cls, values: List[str]) -> List[str]: + if len(values) == 0: + raise ValueError("correlation matrix cannot have 0 columns/index") + return values + # noinspection PyMethodParameters - @validator("data") - def validate_correlation_matrix(cls, data: List[List[float]], values: Dict[str, List[str]]) -> List[List[float]]: + @field_validator("data", mode="before") + def validate_correlation_matrix( + cls, data: List[List[float]], values: Union[Dict[str, List[str]], ValidationInfo] + ) -> List[List[float]]: """ Validates the correlation matrix by checking its shape and range of coefficients. @@ -112,8 +120,9 @@ def validate_correlation_matrix(cls, data: List[List[float]], values: Dict[str, """ array = np.array(data) - rows = len(values.get("index", [])) - cols = len(values.get("columns", [])) + new_values = values if isinstance(values, dict) else values.data + rows = len(new_values.get("index", [])) + cols = len(new_values.get("columns", [])) if array.size == 0: raise ValueError("correlation matrix must not be empty") @@ -129,7 +138,7 @@ def validate_correlation_matrix(cls, data: List[List[float]], values: Dict[str, return data class Config: - schema_extra = { + json_schema_extra = { "example": { "columns": ["north", "east", "south", "west"], "data": [ diff --git a/antarest/study/business/district_manager.py b/antarest/study/business/district_manager.py index 3563230790..c642d61531 100644 --- a/antarest/study/business/district_manager.py +++ b/antarest/study/business/district_manager.py @@ -69,16 +69,19 @@ def get_districts(self, study: Study) -> List[DistrictInfoDTO]: """ file_study = self.storage_service.get_storage(study).get_raw(study) all_areas = list(file_study.config.areas) - return [ - DistrictInfoDTO( - id=district_id, - name=district.name, - areas=district.get_areas(all_areas), - output=district.output, - comments=file_study.tree.get(["input", "areas", "sets", district_id]).get("comments", ""), + districts = [] + for district_id, district in file_study.config.sets.items(): + assert district.name is not None + districts.append( + DistrictInfoDTO( + id=district_id, + name=district.name, + areas=district.get_areas(all_areas), + output=district.output, + comments=file_study.tree.get(["input", "areas", "sets", district_id]).get("comments", ""), + ) ) - for district_id, district in file_study.config.sets.items() - ] + return districts def create_district( self, @@ -148,14 +151,14 @@ def update_district( file_study = self.storage_service.get_storage(study).get_raw(study) if district_id not in file_study.config.sets: raise DistrictNotFound(district_id) - areas = frozenset(dto.areas or []) - all_areas = frozenset(file_study.config.areas) + areas = set(dto.areas or []) + all_areas = set(file_study.config.areas) if invalid_areas := areas - all_areas: raise AreaNotFound(*invalid_areas) command = UpdateDistrict( id=district_id, base_filter=DistrictBaseFilter.remove_all, - filter_items=areas, + filter_items=dto.areas or [], output=dto.output, comments=dto.comments, command_context=self.storage_service.variant_study_service.command_factory.command_context, diff --git a/antarest/study/business/general_management.py b/antarest/study/business/general_management.py index c66a7b02fa..53e1b9a2ed 100644 --- a/antarest/study/business/general_management.py +++ b/antarest/study/business/general_management.py @@ -10,10 +10,11 @@ # # This file is part of the Antares project. -from typing import Any, Dict, List, Optional, cast +from typing import Any, Dict, List, Union, cast -from pydantic import PositiveInt, StrictBool, conint, root_validator +from pydantic import PositiveInt, StrictBool, ValidationInfo, conint, model_validator +from antarest.study.business.all_optional_meta import all_optional_model from antarest.study.business.enum_ignore_case import EnumIgnoreCase from antarest.study.business.utils import GENERAL_DATA_PATH, FieldInfo, FormFieldsBaseModel, execute_or_add_commands from antarest.study.model import Study @@ -63,39 +64,41 @@ class BuildingMode(EnumIgnoreCase): DayNumberType = conint(ge=1, le=366) +@all_optional_model class GeneralFormFields(FormFieldsBaseModel): - mode: Optional[Mode] - first_day: Optional[DayNumberType] # type: ignore - last_day: Optional[DayNumberType] # type: ignore - horizon: Optional[str] # Don't use `StrictStr` because it can be an int - first_month: Optional[Month] - first_week_day: Optional[WeekDay] - first_january: Optional[WeekDay] - leap_year: Optional[StrictBool] - nb_years: Optional[PositiveInt] - building_mode: Optional[BuildingMode] - selection_mode: Optional[StrictBool] - year_by_year: Optional[StrictBool] - simulation_synthesis: Optional[StrictBool] - mc_scenario: Optional[StrictBool] + mode: Mode + first_day: DayNumberType # type: ignore + last_day: DayNumberType # type: ignore + horizon: Union[str, int] + first_month: Month + first_week_day: WeekDay + first_january: WeekDay + leap_year: StrictBool + nb_years: PositiveInt + building_mode: BuildingMode + selection_mode: StrictBool + year_by_year: StrictBool + simulation_synthesis: StrictBool + mc_scenario: StrictBool # Geographic trimming + Thematic trimming. # For study versions < 710 - filtering: Optional[StrictBool] + filtering: StrictBool # For study versions >= 710 - geographic_trimming: Optional[StrictBool] - thematic_trimming: Optional[StrictBool] - - @root_validator - def day_fields_validation(cls, values: Dict[str, Any]) -> Dict[str, Any]: - first_day = values.get("first_day") - last_day = values.get("last_day") - leap_year = values.get("leap_year") + geographic_trimming: StrictBool + thematic_trimming: StrictBool + + @model_validator(mode="before") + def day_fields_validation(cls, values: Union[Dict[str, Any], ValidationInfo]) -> Dict[str, Any]: + new_values = values if isinstance(values, dict) else values.data + first_day = new_values.get("first_day") + last_day = new_values.get("last_day") + leap_year = new_values.get("leap_year") day_fields = [first_day, last_day, leap_year] if all(v is None for v in day_fields): # The user wishes to update another field than these three. # no need to validate anything: - return values + return new_values if any(v is None for v in day_fields): raise ValueError("First day, last day and leap year fields must be defined together") @@ -110,7 +113,7 @@ def day_fields_validation(cls, values: Dict[str, Any]) -> Dict[str, Any]: if last_day > num_days_in_year: raise ValueError(f"Last day cannot be greater than {num_days_in_year}") - return values + return new_values GENERAL = "general" diff --git a/antarest/study/business/link_management.py b/antarest/study/business/link_management.py index 8515b42fee..6f696d2a5e 100644 --- a/antarest/study/business/link_management.py +++ b/antarest/study/business/link_management.py @@ -16,7 +16,7 @@ from antarest.core.exceptions import ConfigFileNotFound from antarest.core.model import JSON -from antarest.study.business.all_optional_meta import AllOptionalMetaclass, camel_case_model +from antarest.study.business.all_optional_meta import all_optional_model, camel_case_model from antarest.study.business.utils import execute_or_add_commands from antarest.study.model import RawStudy from antarest.study.storage.rawstudy.model.filesystem.config.links import LinkProperties @@ -40,8 +40,9 @@ class LinkInfoDTO(BaseModel): ui: t.Optional[LinkUIDTO] = None +@all_optional_model @camel_case_model -class LinkOutput(LinkProperties, metaclass=AllOptionalMetaclass, use_none=True): +class LinkOutput(LinkProperties): """ DTO object use to get the link information. """ @@ -121,7 +122,7 @@ def get_all_links_props(self, study: RawStudy) -> t.Mapping[t.Tuple[str, str], L for area2_id, properties_cfg in property_map.items(): area1_id, area2_id = sorted([area1_id, area2_id]) properties = LinkProperties(**properties_cfg) - links_by_ids[(area1_id, area2_id)] = LinkOutput(**properties.dict(by_alias=False)) + links_by_ids[(area1_id, area2_id)] = LinkOutput(**properties.model_dump(by_alias=False)) return links_by_ids @@ -137,11 +138,11 @@ def update_links_props( for (area1, area2), update_link_dto in update_links_by_ids.items(): # Update the link properties. old_link_dto = old_links_by_ids[(area1, area2)] - new_link_dto = old_link_dto.copy(update=update_link_dto.dict(by_alias=False, exclude_none=True)) + new_link_dto = old_link_dto.copy(update=update_link_dto.model_dump(by_alias=False, exclude_none=True)) new_links_by_ids[(area1, area2)] = new_link_dto # Convert the DTO to a configuration object and update the configuration file. - properties = LinkProperties(**new_link_dto.dict(by_alias=False)) + properties = LinkProperties(**new_link_dto.model_dump(by_alias=False)) path = f"{_ALL_LINKS_PATH}/{area1}/properties/{area2}" cmd = UpdateConfig( target=path, diff --git a/antarest/study/business/optimization_management.py b/antarest/study/business/optimization_management.py index 5ee764046e..cb599d12e2 100644 --- a/antarest/study/business/optimization_management.py +++ b/antarest/study/business/optimization_management.py @@ -10,10 +10,11 @@ # # This file is part of the Antares project. -from typing import Any, Dict, List, Optional, Union, cast +from typing import Any, Dict, List, Union, cast from pydantic.types import StrictBool +from antarest.study.business.all_optional_meta import all_optional_model from antarest.study.business.enum_ignore_case import EnumIgnoreCase from antarest.study.business.utils import GENERAL_DATA_PATH, FieldInfo, FormFieldsBaseModel, execute_or_add_commands from antarest.study.model import Study @@ -45,24 +46,20 @@ class SimplexOptimizationRange(EnumIgnoreCase): WEEK = "week" +@all_optional_model class OptimizationFormFields(FormFieldsBaseModel): - binding_constraints: Optional[StrictBool] - hurdle_costs: Optional[StrictBool] - transmission_capacities: Optional[ - Union[ - StrictBool, - Union[LegacyTransmissionCapacities, TransmissionCapacities], - ] - ] - thermal_clusters_min_stable_power: Optional[StrictBool] - thermal_clusters_min_ud_time: Optional[StrictBool] - day_ahead_reserve: Optional[StrictBool] - primary_reserve: Optional[StrictBool] - strategic_reserve: Optional[StrictBool] - spinning_reserve: Optional[StrictBool] - export_mps: Optional[Union[bool, str]] - unfeasible_problem_behavior: Optional[UnfeasibleProblemBehavior] - simplex_optimization_range: Optional[SimplexOptimizationRange] + binding_constraints: StrictBool + hurdle_costs: StrictBool + transmission_capacities: Union[StrictBool, LegacyTransmissionCapacities, TransmissionCapacities] + thermal_clusters_min_stable_power: StrictBool + thermal_clusters_min_ud_time: StrictBool + day_ahead_reserve: StrictBool + primary_reserve: StrictBool + strategic_reserve: StrictBool + spinning_reserve: StrictBool + export_mps: Union[bool, str] + unfeasible_problem_behavior: UnfeasibleProblemBehavior + simplex_optimization_range: SimplexOptimizationRange OPTIMIZATION_PATH = f"{GENERAL_DATA_PATH}/optimization" diff --git a/antarest/study/business/table_mode_management.py b/antarest/study/business/table_mode_management.py index 848beb513b..342c1c5abb 100644 --- a/antarest/study/business/table_mode_management.py +++ b/antarest/study/business/table_mode_management.py @@ -95,36 +95,37 @@ def __init__( def _get_table_data_unsafe(self, study: RawStudy, table_type: TableModeType) -> TableDataDTO: if table_type == TableModeType.AREA: areas_map = self._area_manager.get_all_area_props(study) - data = {area_id: area.dict(by_alias=True) for area_id, area in areas_map.items()} + data = {area_id: area.model_dump(by_alias=True) for area_id, area in areas_map.items()} elif table_type == TableModeType.LINK: links_map = self._link_manager.get_all_links_props(study) data = { - f"{area1_id} / {area2_id}": link.dict(by_alias=True) for (area1_id, area2_id), link in links_map.items() + f"{area1_id} / {area2_id}": link.model_dump(by_alias=True) + for (area1_id, area2_id), link in links_map.items() } elif table_type == TableModeType.THERMAL: thermals_by_areas = self._thermal_manager.get_all_thermals_props(study) data = { - f"{area_id} / {cluster_id}": cluster.dict(by_alias=True, exclude={"id", "name"}) + f"{area_id} / {cluster_id}": cluster.model_dump(by_alias=True, exclude={"id", "name"}) for area_id, thermals_by_ids in thermals_by_areas.items() for cluster_id, cluster in thermals_by_ids.items() } elif table_type == TableModeType.RENEWABLE: renewables_by_areas = self._renewable_manager.get_all_renewables_props(study) data = { - f"{area_id} / {cluster_id}": cluster.dict(by_alias=True, exclude={"id", "name"}) + f"{area_id} / {cluster_id}": cluster.model_dump(by_alias=True, exclude={"id", "name"}) for area_id, renewables_by_ids in renewables_by_areas.items() for cluster_id, cluster in renewables_by_ids.items() } elif table_type == TableModeType.ST_STORAGE: storages_by_areas = self._st_storage_manager.get_all_storages_props(study) data = { - f"{area_id} / {cluster_id}": cluster.dict(by_alias=True, exclude={"id", "name"}) + f"{area_id} / {cluster_id}": cluster.model_dump(by_alias=True, exclude={"id", "name"}) for area_id, storages_by_ids in storages_by_areas.items() for cluster_id, cluster in storages_by_ids.items() } elif table_type == TableModeType.BINDING_CONSTRAINT: bc_seq = self._binding_constraint_manager.get_binding_constraints(study) - data = {bc.id: bc.dict(by_alias=True, exclude={"id", "name", "terms"}) for bc in bc_seq} + data = {bc.id: bc.model_dump(by_alias=True, exclude={"id", "name", "terms"}) for bc in bc_seq} else: # pragma: no cover raise NotImplementedError(f"Table type {table_type} not implemented") return data @@ -189,13 +190,13 @@ def update_table_data( # Use AreaOutput to update properties of areas, which may include `None` values area_props_by_ids = {key: AreaOutput(**values) for key, values in data.items()} areas_map = self._area_manager.update_areas_props(study, area_props_by_ids) - data = {area_id: area.dict(by_alias=True, exclude_none=True) for area_id, area in areas_map.items()} + data = {area_id: area.model_dump(by_alias=True, exclude_none=True) for area_id, area in areas_map.items()} return data elif table_type == TableModeType.LINK: links_map = {tuple(key.split(" / ")): LinkOutput(**values) for key, values in data.items()} updated_map = self._link_manager.update_links_props(study, links_map) # type: ignore data = { - f"{area1_id} / {area2_id}": link.dict(by_alias=True) + f"{area1_id} / {area2_id}": link.model_dump(by_alias=True) for (area1_id, area2_id), link in updated_map.items() } return data @@ -207,7 +208,7 @@ def update_table_data( thermals_by_areas[area_id][cluster_id] = ThermalClusterInput(**values) thermals_map = self._thermal_manager.update_thermals_props(study, thermals_by_areas) data = { - f"{area_id} / {cluster_id}": cluster.dict(by_alias=True, exclude={"id", "name"}) + f"{area_id} / {cluster_id}": cluster.model_dump(by_alias=True, exclude={"id", "name"}) for area_id, thermals_by_ids in thermals_map.items() for cluster_id, cluster in thermals_by_ids.items() } @@ -220,7 +221,7 @@ def update_table_data( renewables_by_areas[area_id][cluster_id] = RenewableClusterInput(**values) renewables_map = self._renewable_manager.update_renewables_props(study, renewables_by_areas) data = { - f"{area_id} / {cluster_id}": cluster.dict(by_alias=True, exclude={"id", "name"}) + f"{area_id} / {cluster_id}": cluster.model_dump(by_alias=True, exclude={"id", "name"}) for area_id, renewables_by_ids in renewables_map.items() for cluster_id, cluster in renewables_by_ids.items() } @@ -233,7 +234,7 @@ def update_table_data( storages_by_areas[area_id][cluster_id] = STStorageInput(**values) storages_map = self._st_storage_manager.update_storages_props(study, storages_by_areas) data = { - f"{area_id} / {cluster_id}": cluster.dict(by_alias=True, exclude={"id", "name"}) + f"{area_id} / {cluster_id}": cluster.model_dump(by_alias=True, exclude={"id", "name"}) for area_id, storages_by_ids in storages_map.items() for cluster_id, cluster in storages_by_ids.items() } @@ -241,7 +242,9 @@ def update_table_data( elif table_type == TableModeType.BINDING_CONSTRAINT: bcs_by_ids = {key: ConstraintInput(**values) for key, values in data.items()} bcs_map = self._binding_constraint_manager.update_binding_constraints(study, bcs_by_ids) - return {bc_id: bc.dict(by_alias=True, exclude={"id", "name", "terms"}) for bc_id, bc in bcs_map.items()} + return { + bc_id: bc.model_dump(by_alias=True, exclude={"id", "name", "terms"}) for bc_id, bc in bcs_map.items() + } else: # pragma: no cover raise NotImplementedError(f"Table type {table_type} not implemented") diff --git a/antarest/study/business/thematic_trimming_field_infos.py b/antarest/study/business/thematic_trimming_field_infos.py index 5a2f07c682..06086005fd 100644 --- a/antarest/study/business/thematic_trimming_field_infos.py +++ b/antarest/study/business/thematic_trimming_field_infos.py @@ -16,11 +16,12 @@ import typing as t -from antarest.study.business.all_optional_meta import AllOptionalMetaclass +from antarest.study.business.all_optional_meta import all_optional_model from antarest.study.business.utils import FormFieldsBaseModel -class ThematicTrimmingFormFields(FormFieldsBaseModel, metaclass=AllOptionalMetaclass, use_none=True): +@all_optional_model +class ThematicTrimmingFormFields(FormFieldsBaseModel): """ This class manages the configuration of result filtering in a simulation. @@ -237,6 +238,5 @@ class ThematicTrimmingFormFields(FormFieldsBaseModel, metaclass=AllOptionalMetac } -def get_fields_info(study_version: t.Union[str, int]) -> t.Mapping[str, t.Mapping[str, t.Any]]: - study_version = int(study_version) +def get_fields_info(study_version: int) -> t.Mapping[str, t.Mapping[str, t.Any]]: return {key: info for key, info in FIELDS_INFO.items() if (info.get("start_version") or 0) <= study_version} diff --git a/antarest/study/business/thematic_trimming_management.py b/antarest/study/business/thematic_trimming_management.py index 17ca5a0290..96bd5732d6 100644 --- a/antarest/study/business/thematic_trimming_management.py +++ b/antarest/study/business/thematic_trimming_management.py @@ -49,7 +49,7 @@ def set_field_values(self, study: Study, field_values: ThematicTrimmingFormField Set Thematic Trimming config from the webapp form """ file_study = self.storage_service.get_storage(study).get_raw(study) - field_values_dict = field_values.dict() + field_values_dict = field_values.model_dump() keys_by_bool: t.Dict[bool, t.List[t.Any]] = {True: [], False: []} fields_info = get_fields_info(int(study.version)) diff --git a/antarest/study/business/timeseries_config_management.py b/antarest/study/business/timeseries_config_management.py index 8f02a1c512..7e77612fd8 100644 --- a/antarest/study/business/timeseries_config_management.py +++ b/antarest/study/business/timeseries_config_management.py @@ -12,9 +12,10 @@ import typing as t -from pydantic import StrictBool, StrictInt, root_validator, validator +from pydantic import StrictBool, StrictInt, field_validator, model_validator from antarest.core.model import JSON +from antarest.study.business.all_optional_meta import all_optional_model from antarest.study.business.enum_ignore_case import EnumIgnoreCase from antarest.study.business.utils import GENERAL_DATA_PATH, FormFieldsBaseModel, execute_or_add_commands from antarest.study.model import Study @@ -39,28 +40,30 @@ class SeasonCorrelation(EnumIgnoreCase): ANNUAL = "annual" +@all_optional_model class TSFormFieldsForType(FormFieldsBaseModel): - stochastic_ts_status: t.Optional[StrictBool] - number: t.Optional[StrictInt] - refresh: t.Optional[StrictBool] - refresh_interval: t.Optional[StrictInt] - season_correlation: t.Optional[SeasonCorrelation] - store_in_input: t.Optional[StrictBool] - store_in_output: t.Optional[StrictBool] - intra_modal: t.Optional[StrictBool] - inter_modal: t.Optional[StrictBool] - - + stochastic_ts_status: StrictBool + number: StrictInt + refresh: StrictBool + refresh_interval: StrictInt + season_correlation: SeasonCorrelation + store_in_input: StrictBool + store_in_output: StrictBool + intra_modal: StrictBool + inter_modal: StrictBool + + +@all_optional_model class TSFormFields(FormFieldsBaseModel): - load: t.Optional[TSFormFieldsForType] = None - hydro: t.Optional[TSFormFieldsForType] = None - thermal: t.Optional[TSFormFieldsForType] = None - wind: t.Optional[TSFormFieldsForType] = None - solar: t.Optional[TSFormFieldsForType] = None - renewables: t.Optional[TSFormFieldsForType] = None - ntc: t.Optional[TSFormFieldsForType] = None - - @root_validator(pre=True) + load: TSFormFieldsForType + hydro: TSFormFieldsForType + thermal: TSFormFieldsForType + wind: TSFormFieldsForType + solar: TSFormFieldsForType + renewables: TSFormFieldsForType + ntc: TSFormFieldsForType + + @model_validator(mode="before") def check_type_validity( cls, values: t.Dict[str, t.Optional[TSFormFieldsForType]] ) -> t.Dict[str, t.Optional[TSFormFieldsForType]]: @@ -73,7 +76,7 @@ def has_type(ts_type: TSType) -> bool: ) return values - @validator("thermal") + @field_validator("thermal") def thermal_validation(cls, v: TSFormFieldsForType) -> TSFormFieldsForType: if v.season_correlation is not None: raise ValueError("season_correlation is not allowed for 'thermal' type") @@ -130,7 +133,7 @@ def __set_field_values_for_type( field_values: TSFormFieldsForType, ) -> None: commands: t.List[UpdateConfig] = [] - values = field_values.dict() + values = field_values.model_dump() for field, path in PATH_BY_TS_STR_FIELD.items(): field_val = values[field] diff --git a/antarest/study/business/utils.py b/antarest/study/business/utils.py index ac1ea418a1..1afacecc04 100644 --- a/antarest/study/business/utils.py +++ b/antarest/study/business/utils.py @@ -17,7 +17,7 @@ from antarest.core.exceptions import CommandApplicationError from antarest.core.jwt import DEFAULT_ADMIN_USER from antarest.core.requests import RequestParameters -from antarest.core.utils.string import to_camel_case +from antarest.study.business.all_optional_meta import camel_case_model from antarest.study.model import RawStudy, Study from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy from antarest.study.storage.storage_service import StudyStorageService @@ -69,12 +69,12 @@ def execute_or_add_commands( ) +@camel_case_model class FormFieldsBaseModel( BaseModel, - alias_generator=to_camel_case, extra="forbid", validate_assignment=True, - allow_population_by_field_name=True, + populate_by_name=True, ): """ Pydantic Model for webapp form diff --git a/antarest/study/business/xpansion_management.py b/antarest/study/business/xpansion_management.py index 0951ce9dfb..6c02724afd 100644 --- a/antarest/study/business/xpansion_management.py +++ b/antarest/study/business/xpansion_management.py @@ -19,11 +19,11 @@ import zipfile from fastapi import HTTPException, UploadFile -from pydantic import BaseModel, Extra, Field, ValidationError, root_validator, validator +from pydantic import BaseModel, Field, ValidationError, field_validator, model_validator from antarest.core.exceptions import BadZipBinary, ChildNotFoundError from antarest.core.model import JSON -from antarest.study.business.all_optional_meta import AllOptionalMetaclass +from antarest.study.business.all_optional_meta import all_optional_model from antarest.study.business.enum_ignore_case import EnumIgnoreCase from antarest.study.model import Study from antarest.study.storage.rawstudy.model.filesystem.bucket_node import BucketNode @@ -74,12 +74,12 @@ class XpansionSensitivitySettings(BaseModel): projection: t.List[str] = Field(default_factory=list, description="List of candidate names to project") capex: bool = Field(default=False, description="Whether to include capex in the sensitivity analysis") - @validator("projection", pre=True) + @field_validator("projection", mode="before") def projection_validation(cls, v: t.Optional[t.Sequence[str]]) -> t.Sequence[str]: return [] if v is None else v -class XpansionSettings(BaseModel, extra=Extra.ignore, validate_assignment=True, allow_population_by_field_name=True): +class XpansionSettings(BaseModel, extra="ignore", validate_assignment=True, populate_by_name=True): """ A data transfer object representing the general settings used for Xpansion. @@ -152,8 +152,8 @@ class XpansionSettings(BaseModel, extra=Extra.ignore, validate_assignment=True, # The sensitivity analysis is optional sensitivity_config: t.Optional[XpansionSensitivitySettings] = None - @root_validator(pre=True) - def normalize_values(cls, values: t.MutableMapping[str, t.Any]) -> t.MutableMapping[str, t.Any]: + @model_validator(mode="before") + def validate_float_values(cls, values: t.MutableMapping[str, t.Any]) -> t.MutableMapping[str, t.Any]: if "relaxed-optimality-gap" in values: values["relaxed_optimality_gap"] = values.pop("relaxed-optimality-gap") @@ -208,7 +208,8 @@ def from_config(cls, config_obj: JSON) -> "GetXpansionSettings": return cls.construct(**config_obj) -class UpdateXpansionSettings(XpansionSettings, metaclass=AllOptionalMetaclass, use_none=True): +@all_optional_model +class UpdateXpansionSettings(XpansionSettings): """ DTO object used to update the Xpansion settings. @@ -219,13 +220,6 @@ class UpdateXpansionSettings(XpansionSettings, metaclass=AllOptionalMetaclass, u # note: for some reason, the alias is not taken into account when using the metaclass, # so we have to redefine the fields with the alias. - - # On the other hand, we make these fields mandatory, because there is an anomaly on the front side: - # When the user does not select any file, the front sends a request without the "yearly-weights" - # or "additional-constraints" field, instead of sending the field with an empty value. - # This is not a problem as long as the front sends a request with all the fields (PUT case), - # but it is a problem for partial requests (PATCH case). - yearly_weights: str = Field( "", alias="yearly-weights", @@ -245,19 +239,21 @@ class XpansionCandidateDTO(BaseModel): name: str link: str annual_cost_per_mw: float = Field(alias="annual-cost-per-mw", ge=0) - unit_size: t.Optional[float] = Field(None, alias="unit-size", ge=0) - max_units: t.Optional[int] = Field(None, alias="max-units", ge=0) - max_investment: t.Optional[float] = Field(None, alias="max-investment", ge=0) - already_installed_capacity: t.Optional[int] = Field(None, alias="already-installed-capacity", ge=0) + unit_size: t.Optional[float] = Field(default=None, alias="unit-size", ge=0) + max_units: t.Optional[int] = Field(default=None, alias="max-units", ge=0) + max_investment: t.Optional[float] = Field(default=None, alias="max-investment", ge=0) + already_installed_capacity: t.Optional[int] = Field(default=None, alias="already-installed-capacity", ge=0) # this is obsolete (replaced by direct/indirect) - link_profile: t.Optional[str] = Field(None, alias="link-profile") + link_profile: t.Optional[str] = Field(default=None, alias="link-profile") # this is obsolete (replaced by direct/indirect) - already_installed_link_profile: t.Optional[str] = Field(None, alias="already-installed-link-profile") - direct_link_profile: t.Optional[str] = Field(None, alias="direct-link-profile") - indirect_link_profile: t.Optional[str] = Field(None, alias="indirect-link-profile") - already_installed_direct_link_profile: t.Optional[str] = Field(None, alias="already-installed-direct-link-profile") + already_installed_link_profile: t.Optional[str] = Field(default=None, alias="already-installed-link-profile") + direct_link_profile: t.Optional[str] = Field(default=None, alias="direct-link-profile") + indirect_link_profile: t.Optional[str] = Field(default=None, alias="indirect-link-profile") + already_installed_direct_link_profile: t.Optional[str] = Field( + default=None, alias="already-installed-direct-link-profile" + ) already_installed_indirect_link_profile: t.Optional[str] = Field( - None, alias="already-installed-indirect-link-profile" + default=None, alias="already-installed-indirect-link-profile" ) @@ -347,9 +343,11 @@ def create_xpansion_configuration(self, study: Study, zipped_config: t.Optional[ raise BadZipBinary("Only zip file are allowed.") xpansion_settings = XpansionSettings() - settings_obj = xpansion_settings.dict(by_alias=True, exclude_none=True, exclude={"sensitivity_config"}) + settings_obj = xpansion_settings.model_dump( + by_alias=True, exclude_none=True, exclude={"sensitivity_config"} + ) if xpansion_settings.sensitivity_config: - sensitivity_obj = xpansion_settings.sensitivity_config.dict(by_alias=True, exclude_none=True) + sensitivity_obj = xpansion_settings.sensitivity_config.model_dump(by_alias=True, exclude_none=True) else: sensitivity_obj = {} @@ -389,7 +387,9 @@ def update_xpansion_settings( logger.info(f"Updating xpansion settings for study '{study.id}'") actual_settings = self.get_xpansion_settings(study) - settings_fields = new_xpansion_settings.dict(by_alias=False, exclude_none=True, exclude={"sensitivity_config"}) + settings_fields = new_xpansion_settings.model_dump( + by_alias=False, exclude_none=True, exclude={"sensitivity_config"} + ) updated_settings = actual_settings.copy(deep=True, update=settings_fields) file_study = self.study_storage_service.get_storage(study).get_raw(study) @@ -409,11 +409,11 @@ def update_xpansion_settings( msg = f"Additional constraints file '{constraints_file}' does not exist" raise XpansionFileNotFoundError(msg) from None - config_obj = updated_settings.dict(by_alias=True, exclude={"sensitivity_config"}) + config_obj = updated_settings.model_dump(by_alias=True, exclude={"sensitivity_config"}) file_study.tree.save(config_obj, ["user", "expansion", "settings"]) if new_xpansion_settings.sensitivity_config: - sensitivity_obj = new_xpansion_settings.sensitivity_config.dict(by_alias=True) + sensitivity_obj = new_xpansion_settings.sensitivity_config.model_dump(by_alias=True) file_study.tree.save(sensitivity_obj, ["user", "expansion", "sensitivity", "sensitivity_in"]) return self.get_xpansion_settings(study) @@ -553,7 +553,7 @@ def add_candidate(self, study: Study, xpansion_candidate: XpansionCandidateDTO) ) # The primary key is actually the name, the id does not matter and is never checked. logger.info(f"Adding candidate '{xpansion_candidate.name}' to study '{study.id}'") - candidates_obj[next_id] = xpansion_candidate.dict(by_alias=True, exclude_none=True) + candidates_obj[next_id] = xpansion_candidate.model_dump(by_alias=True, exclude_none=True) candidates_data = {"user": {"expansion": {"candidates": candidates_obj}}} file_study.tree.save(candidates_data) # Should we add a field in the study config containing the xpansion candidates like the links or the areas ? @@ -594,7 +594,7 @@ def update_candidate( for candidate_id, candidate in candidates.items(): if candidate["name"] == candidate_name: logger.info(f"Updating candidate '{candidate_name}' of study '{study.id}'") - candidates[candidate_id] = xpansion_candidate_dto.dict(by_alias=True, exclude_none=True) + candidates[candidate_id] = xpansion_candidate_dto.model_dump(by_alias=True, exclude_none=True) file_study.tree.save(candidates, ["user", "expansion", "candidates"]) return raise CandidateNotFoundError(f"The candidate '{xpansion_candidate_dto.name}' does not exist") @@ -614,7 +614,8 @@ def update_xpansion_constraints_settings(self, study: Study, constraints_file_na # Make sure filename is not `None`, because `None` values are ignored by the update. constraints_file_name = constraints_file_name or "" # noinspection PyArgumentList - xpansion_settings = UpdateXpansionSettings(additional_constraints=constraints_file_name) + args = {"additional_constraints": constraints_file_name} + xpansion_settings = UpdateXpansionSettings.model_validate(args) return self.update_xpansion_settings(study, xpansion_settings) def _raw_file_dir(self, raw_file_type: XpansionResourceFileType) -> t.List[str]: @@ -655,6 +656,7 @@ def _add_raw_files( content = file.file.read() if isinstance(content, str): content = content.encode(encoding="utf-8") + assert file.filename is not None buffer[file.filename] = content file_study.tree.save(data) diff --git a/antarest/study/main.py b/antarest/study/main.py index e80a353493..1efa9cb00b 100644 --- a/antarest/study/main.py +++ b/antarest/study/main.py @@ -12,8 +12,9 @@ from typing import Optional -from fastapi import FastAPI +from fastapi import APIRouter, FastAPI +from antarest.core.application import AppBuildContext from antarest.core.config import Config from antarest.core.filetransfer.service import FileTransferManager from antarest.core.interfaces.cache import ICache @@ -39,7 +40,7 @@ def build_study_service( - application: Optional[FastAPI], + app_ctxt: Optional[AppBuildContext], config: Config, user_service: LoginService, matrix_service: ISimpleMatrixService, @@ -124,16 +125,17 @@ def build_study_service( config=config, ) - if application: - application.include_router(create_study_routes(study_service, file_transfer_manager, config)) - application.include_router(create_raw_study_routes(study_service, config)) - application.include_router(create_study_data_routes(study_service, config)) - application.include_router( + if app_ctxt: + api_root = app_ctxt.api_root + api_root.include_router(create_study_routes(study_service, file_transfer_manager, config)) + api_root.include_router(create_raw_study_routes(study_service, config)) + api_root.include_router(create_study_data_routes(study_service, config)) + api_root.include_router( create_study_variant_routes( study_service=study_service, config=config, ) ) - application.include_router(create_xpansion_routes(study_service, config)) + api_root.include_router(create_xpansion_routes(study_service, config)) return study_service diff --git a/antarest/study/model.py b/antarest/study/model.py index 543490d3c2..081fd48b4a 100644 --- a/antarest/study/model.py +++ b/antarest/study/model.py @@ -18,7 +18,7 @@ from datetime import datetime, timedelta from pathlib import Path -from pydantic import BaseModel, validator +from pydantic import BaseModel, field_validator from sqlalchemy import ( # type: ignore Boolean, Column, @@ -351,13 +351,18 @@ class StudyMetadataDTO(BaseModel): workspace: str managed: bool archived: bool - horizon: t.Optional[str] - scenario: t.Optional[str] - status: t.Optional[str] - doc: t.Optional[str] + horizon: t.Optional[str] = None + scenario: t.Optional[str] = None + status: t.Optional[str] = None + doc: t.Optional[str] = None folder: t.Optional[str] = None tags: t.List[str] = [] + @field_validator("horizon", mode="before") + def transform_horizon_to_str(cls, val: t.Union[str, int, None]) -> t.Optional[str]: + # horizon can be an int. + return str(val) if val else val # type: ignore + class StudyMetadataPatchDTO(BaseModel): name: t.Optional[str] = None @@ -366,18 +371,20 @@ class StudyMetadataPatchDTO(BaseModel): scenario: t.Optional[str] = None status: t.Optional[str] = None doc: t.Optional[str] = None - tags: t.Sequence[str] = () + tags: t.List[str] = [] - @validator("tags", each_item=True) - def _normalize_tags(cls, v: str) -> str: + @field_validator("tags", mode="before") + def _normalize_tags(cls, v: t.List[str]) -> t.List[str]: """Remove leading and trailing whitespaces, and replace consecutive whitespaces by a single one.""" - tag = " ".join(v.split()) - if not tag: - raise ValueError("Tag cannot be empty") - elif len(tag) > 40: - raise ValueError(f"Tag is too long: {tag!r}") - else: - return tag + tags = [] + for tag in v: + tag = " ".join(tag.split()) + if not tag: + raise ValueError("Tag cannot be empty") + elif len(tag) > 40: + raise ValueError(f"Tag is too long: {tag!r}") + tags.append(tag) + return tags class StudySimSettingsDTO(BaseModel): diff --git a/antarest/study/service.py b/antarest/study/service.py index 2bff77b1ec..125c4e1531 100644 --- a/antarest/study/service.py +++ b/antarest/study/service.py @@ -1330,7 +1330,7 @@ def export_task(_notifier: TaskUpdateNotifier) -> TaskResult: else: json_response = json.dumps( - matrix.dict(), + matrix.model_dump(), ensure_ascii=False, allow_nan=True, indent=None, @@ -1485,6 +1485,7 @@ def _create_edit_study_command( context = self.storage_service.variant_study_service.command_factory.command_context if isinstance(tree_node, IniFileNode): + assert not isinstance(data, (bytes, list)) return UpdateConfig( target=url, data=data, @@ -1500,6 +1501,7 @@ def _create_edit_study_command( matrix=matrix.tolist(), command_context=context, ) + assert isinstance(data, (list, str)) return ReplaceMatrix( target=url, matrix=data, @@ -1507,6 +1509,9 @@ def _create_edit_study_command( ) elif isinstance(tree_node, RawFileNode): if url.split("/")[-1] == "comments": + if isinstance(data, bytes): + data = data.decode("utf-8") + assert isinstance(data, str) return UpdateComments( comments=data, command_context=context, @@ -2425,7 +2430,7 @@ def unarchive_output_task( src=str(src), dest=str(dest), remove_src=not keep_src_zip, - ).dict(), + ).model_dump(), name=task_name, ref_id=study.id, request_params=params, diff --git a/antarest/study/storage/abstract_storage_service.py b/antarest/study/storage/abstract_storage_service.py index 045c33c81c..5f2c033ca3 100644 --- a/antarest/study/storage/abstract_storage_service.py +++ b/antarest/study/storage/abstract_storage_service.py @@ -88,7 +88,7 @@ def get_study_information( try: patch_obj = json.loads(additional_data.patch or "{}") - patch = Patch.parse_obj(patch_obj) + patch = Patch.model_validate(patch_obj) except ValueError as e: # The conversion to JSON and the parsing can fail if the patch is not valid logger.warning(f"Failed to parse patch for study {study.id}", exc_info=e) @@ -328,7 +328,7 @@ def _read_additional_data_from_files(self, file_study: FileStudy) -> StudyAdditi horizon = file_study.tree.get(url=["settings", "generaldata", "general", "horizon"]) author = file_study.tree.get(url=["study", "antares", "author"]) patch = self.patch_service.get_from_filestudy(file_study) - study_additional_data = StudyAdditionalData(horizon=horizon, author=author, patch=patch.json()) + study_additional_data = StudyAdditionalData(horizon=horizon, author=author, patch=patch.model_dump_json()) return study_additional_data def archive_study_output(self, study: T, output_id: str) -> bool: diff --git a/antarest/study/storage/patch_service.py b/antarest/study/storage/patch_service.py index 7570401aab..0f3eb68c05 100644 --- a/antarest/study/storage/patch_service.py +++ b/antarest/study/storage/patch_service.py @@ -35,7 +35,7 @@ def get(self, study: t.Union[RawStudy, VariantStudy], get_from_file: bool = Fals # the `study.additional_data.patch` field is optional if study.additional_data.patch: patch_obj = json.loads(study.additional_data.patch or "{}") - return Patch.parse_obj(patch_obj) + return Patch.model_validate(patch_obj) patch = Patch() patch_path = Path(study.path) / PATCH_JSON @@ -67,9 +67,9 @@ def set_reference_output( def save(self, study: t.Union[RawStudy, VariantStudy], patch: Patch) -> None: if self.repository: study.additional_data = study.additional_data or StudyAdditionalData() - study.additional_data.patch = patch.json() + study.additional_data.patch = patch.model_dump_json() self.repository.save(study) patch_path = (Path(study.path)) / PATCH_JSON patch_path.parent.mkdir(parents=True, exist_ok=True) - patch_path.write_text(patch.json()) + patch_path.write_text(patch.model_dump_json()) diff --git a/antarest/study/storage/rawstudy/model/filesystem/config/area.py b/antarest/study/storage/rawstudy/model/filesystem/config/area.py index 964e46810d..74d15e5b55 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/config/area.py +++ b/antarest/study/storage/rawstudy/model/filesystem/config/area.py @@ -16,7 +16,7 @@ import typing as t -from pydantic import Field, root_validator, validator +from pydantic import Field, field_validator, model_validator from antarest.study.business.enum_ignore_case import EnumIgnoreCase from antarest.study.storage.rawstudy.model.filesystem.config.field_validators import ( @@ -54,7 +54,7 @@ class OptimizationProperties(IniProperties): >>> opt = OptimizationProperties(**obj) - >>> pprint(opt.dict(by_alias=True), width=80) + >>> pprint(opt.model_dump(by_alias=True), width=80) {'filtering': {'filter-synthesis': 'hourly, daily, weekly, monthly, annual', 'filter-year-by-year': 'hourly, annual'}, 'nodal optimization': {'dispatchable-hydro-power': False, @@ -75,7 +75,7 @@ class OptimizationProperties(IniProperties): Convert the object to a dictionary for writing to a configuration file: - >>> pprint(opt.dict(by_alias=True, exclude_defaults=True), width=80) + >>> pprint(opt.model_dump(by_alias=True, exclude_defaults=True), width=80) {'filtering': {'filter-synthesis': 'hourly, weekly, monthly, annual', 'filter-year-by-year': 'hourly, monthly, annual'}, 'nodal optimization': {'dispatchable-hydro-power': False, @@ -89,7 +89,7 @@ class FilteringSection(IniProperties): filter_synthesis: str = Field("", alias="filter-synthesis") filter_year_by_year: str = Field("", alias="filter-year-by-year") - @validator("filter_synthesis", "filter_year_by_year", pre=True) + @field_validator("filter_synthesis", "filter_year_by_year", mode="before") def _validate_filtering(cls, v: t.Any) -> str: return validate_filtering(v) @@ -159,33 +159,33 @@ class AreaUI(IniProperties): ... "color_b": 255, ... } >>> ui = AreaUI(**obj) - >>> pprint(ui.dict(by_alias=True), width=80) + >>> pprint(ui.model_dump(by_alias=True), width=80) {'colorRgb': '#0080FF', 'x': 1148, 'y': 144} Update the color: >>> ui.color_rgb = (192, 168, 127) - >>> pprint(ui.dict(by_alias=True), width=80) + >>> pprint(ui.model_dump(by_alias=True), width=80) {'colorRgb': '#C0A87F', 'x': 1148, 'y': 144} """ - x: int = Field(0, description="x coordinate of the area in the map") - y: int = Field(0, description="y coordinate of the area in the map") + x: int = Field(default=0, description="x coordinate of the area in the map") + y: int = Field(default=0, description="y coordinate of the area in the map") color_rgb: str = Field( - "#E66C2C", + default="#E66C2C", alias="colorRgb", description="color of the area in the map", ) - @validator("color_rgb", pre=True) + @field_validator("color_rgb", mode="before") def _validate_color_rgb(cls, v: t.Any) -> str: return validate_color_rgb(v) - @root_validator(pre=True) + @model_validator(mode="before") def _validate_colors(cls, values: t.MutableMapping[str, t.Any]) -> t.Mapping[str, t.Any]: return validate_colors(values) - def to_config(self) -> t.Mapping[str, t.Any]: + def to_config(self) -> t.Dict[str, t.Any]: """ Convert the object to a dictionary for writing to a configuration file: @@ -198,6 +198,7 @@ def to_config(self) -> t.Mapping[str, t.Any]: >>> pprint(ui.to_config(), width=80) {'color_b': 255, 'color_g': 128, 'color_r': 0, 'x': 1148, 'y': 144} """ + assert self.color_rgb is not None r = int(self.color_rgb[1:3], 16) g = int(self.color_rgb[3:5], 16) b = int(self.color_rgb[5:7], 16) @@ -216,7 +217,7 @@ class UIProperties(IniProperties): UIProperties has default values for `style` and `layers`: >>> ui = UIProperties() - >>> pprint(ui.dict(), width=80) + >>> pprint(ui.model_dump(), width=80) {'layer_styles': {0: {'color_rgb': '#E66C2C', 'x': 0, 'y': 0}}, 'layers': {0}, 'style': {'color_rgb': '#E66C2C', 'x': 0, 'y': 0}} @@ -244,7 +245,7 @@ class UIProperties(IniProperties): ... } >>> ui = UIProperties(**obj) - >>> pprint(ui.dict(), width=80) + >>> pprint(ui.model_dump(), width=80) {'layer_styles': {0: {'color_rgb': '#0080FF', 'x': 1148, 'y': 144}, 4: {'color_rgb': '#0080FF', 'x': 1148, 'y': 144}, 6: {'color_rgb': '#C0A863', 'x': 1148, 'y': 144}, @@ -260,7 +261,7 @@ class UIProperties(IniProperties): description="style of the area in the map: coordinates and color", ) layers: t.Set[int] = Field( - default_factory=set, + default_factory=lambda: {0}, description="layers where the area is visible", ) layer_styles: t.Dict[int, AreaUI] = Field( @@ -269,28 +270,20 @@ class UIProperties(IniProperties): alias="layerStyles", ) - @root_validator(pre=True) - def _set_default_style(cls, values: t.MutableMapping[str, t.Any]) -> t.Mapping[str, t.Any]: + @staticmethod + def _set_default_style(values: t.MutableMapping[str, t.Any]) -> t.Mapping[str, t.Any]: """Defined the default style if missing.""" - style = values.get("style") + style = values.get("style", None) if style is None: values["style"] = AreaUI() elif isinstance(style, dict): values["style"] = AreaUI(**style) else: - values["style"] = AreaUI(**style.dict()) + values["style"] = AreaUI(**style.model_dump()) return values - @root_validator(pre=True) - def _set_default_layers(cls, values: t.MutableMapping[str, t.Any]) -> t.Mapping[str, t.Any]: - """Define the default layers if missing.""" - _layers = values.get("layers") - if _layers is None: - values["layers"] = {0} - return values - - @root_validator(pre=True) - def _set_default_layer_styles(cls, values: t.MutableMapping[str, t.Any]) -> t.Mapping[str, t.Any]: + @staticmethod + def _set_default_layer_styles(values: t.MutableMapping[str, t.Any]) -> t.Mapping[str, t.Any]: """Define the default layer styles if missing.""" layer_styles = values.get("layer_styles") if layer_styles is None: @@ -302,13 +295,15 @@ def _set_default_layer_styles(cls, values: t.MutableMapping[str, t.Any]) -> t.Ma if isinstance(style, dict): values["layer_styles"][key] = AreaUI(**style) else: - values["layer_styles"][key] = AreaUI(**style.dict()) + values["layer_styles"][key] = AreaUI(**style.model_dump()) else: raise TypeError(f"Invalid type for layer_styles: {type(layer_styles)}") return values - @root_validator(pre=True) + @model_validator(mode="before") def _validate_layers(cls, values: t.MutableMapping[str, t.Any]) -> t.Mapping[str, t.Any]: + cls._set_default_style(values) + cls._set_default_layer_styles(values) # Parse the `[ui]` section (if any) ui_section = values.pop("ui", {}) if ui_section: @@ -347,7 +342,7 @@ def _validate_layers(cls, values: t.MutableMapping[str, t.Any]) -> t.Mapping[str return values - def to_config(self) -> t.Mapping[str, t.Mapping[str, t.Any]]: + def to_config(self) -> t.Dict[str, t.Dict[str, t.Any]]: """ Convert the object to a dictionary for writing to a configuration file: @@ -375,7 +370,7 @@ def to_config(self) -> t.Mapping[str, t.Mapping[str, t.Any]]: 'x': 1148, 'y': 144}} """ - obj: t.MutableMapping[str, t.MutableMapping[str, t.Any]] = { + obj: t.Dict[str, t.Dict[str, t.Any]] = { "ui": {}, "layerX": {}, "layerY": {}, @@ -386,6 +381,7 @@ def to_config(self) -> t.Mapping[str, t.Mapping[str, t.Any]]: for layer, style in self.layer_styles.items(): obj["layerX"][str(layer)] = style.x obj["layerY"][str(layer)] = style.y + assert style.color_rgb is not None r = int(style.color_rgb[1:3], 16) g = int(style.color_rgb[3:5], 16) b = int(style.color_rgb[5:7], 16) @@ -405,7 +401,7 @@ class AreaFolder(IniProperties): Create and validate a new AreaProperties object from a dictionary read from a configuration file. >>> obj = AreaFolder() - >>> pprint(obj.dict(), width=80) + >>> pprint(obj.model_dump(), width=80) {'adequacy_patch': None, 'optimization': {'filtering': {'filter_synthesis': '', 'filter_year_by_year': ''}, @@ -450,7 +446,7 @@ class AreaFolder(IniProperties): ... } >>> obj = AreaFolder.construct(**data) - >>> pprint(obj.dict(), width=80) + >>> pprint(obj.model_dump(), width=80) {'adequacy_patch': None, 'optimization': {'filtering': {'filter-synthesis': 'annual, centennial'}, 'nodal optimization': {'spread-spilled-energy-cost': '15.5', @@ -512,7 +508,7 @@ class ThermalAreasProperties(IniProperties): ... }, ... } >>> area = ThermalAreasProperties(**obj) - >>> pprint(area.dict(), width=80) + >>> pprint(area.model_dump(), width=80) {'spilled_energy_cost': {'cz': 100.0}, 'unserverd_energy_cost': {'at': 4000.8, 'be': 3500.0, @@ -523,7 +519,7 @@ class ThermalAreasProperties(IniProperties): >>> area.unserverd_energy_cost["at"] = 6500.0 >>> area.unserverd_energy_cost["fr"] = 0.0 - >>> pprint(area.dict(), width=80) + >>> pprint(area.model_dump(), width=80) {'spilled_energy_cost': {'cz': 100.0}, 'unserverd_energy_cost': {'at': 6500.0, 'be': 3500.0, 'de': 1250.0, 'fr': 0.0}} @@ -546,7 +542,7 @@ class ThermalAreasProperties(IniProperties): description="spilled energy cost (€/MWh) of each area", ) - @validator("unserverd_energy_cost", "spilled_energy_cost", pre=True) + @field_validator("unserverd_energy_cost", "spilled_energy_cost", mode="before") def _validate_energy_cost(cls, v: t.Any) -> t.MutableMapping[str, float]: if isinstance(v, dict): return {str(k): float(v) for k, v in v.items()} diff --git a/antarest/study/storage/rawstudy/model/filesystem/config/cluster.py b/antarest/study/storage/rawstudy/model/filesystem/config/cluster.py index 0ead589109..62393794e2 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/config/cluster.py +++ b/antarest/study/storage/rawstudy/model/filesystem/config/cluster.py @@ -19,15 +19,15 @@ import functools import typing as t -from pydantic import BaseModel, Extra, Field +from pydantic import BaseModel, Field @functools.total_ordering class ItemProperties( BaseModel, - extra=Extra.forbid, + extra="forbid", validate_assignment=True, - allow_population_by_field_name=True, + populate_by_name=True, ): """ Common properties related to thermal and renewable clusters, and short-term storage. @@ -47,7 +47,7 @@ class ItemProperties( group: str = Field(default="", description="Cluster group") - name: str = Field(description="Cluster name", regex=r"[a-zA-Z0-9_(),& -]+") + name: str = Field(description="Cluster name", pattern=r"[a-zA-Z0-9_(),& -]+") def __lt__(self, other: t.Any) -> bool: """ diff --git a/antarest/study/storage/rawstudy/model/filesystem/config/field_validators.py b/antarest/study/storage/rawstudy/model/filesystem/config/field_validators.py index 3a544d6bb8..f6a371769b 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/config/field_validators.py +++ b/antarest/study/storage/rawstudy/model/filesystem/config/field_validators.py @@ -15,7 +15,7 @@ _ALL_FILTERING = ["hourly", "daily", "weekly", "monthly", "annual"] -def extract_filtering(v: t.Any) -> t.Sequence[str]: +def extract_filtering(v: t.Any) -> t.List[str]: """ Extract filtering values from a comma-separated list of values. """ diff --git a/antarest/study/storage/rawstudy/model/filesystem/config/files.py b/antarest/study/storage/rawstudy/model/filesystem/config/files.py index 296ee6cf19..15856dbf60 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/config/files.py +++ b/antarest/study/storage/rawstudy/model/filesystem/config/files.py @@ -26,7 +26,6 @@ DEFAULT_GROUP, DEFAULT_OPERATOR, DEFAULT_TIMESTEP, - BindingConstraintFrequency, ) from antarest.study.storage.rawstudy.model.filesystem.config.exceptions import ( SimulationParsingError, diff --git a/antarest/study/storage/rawstudy/model/filesystem/config/identifier.py b/antarest/study/storage/rawstudy/model/filesystem/config/identifier.py index d30cc34fae..2cb5d9ec64 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/config/identifier.py +++ b/antarest/study/storage/rawstudy/model/filesystem/config/identifier.py @@ -12,22 +12,22 @@ import typing as t -from pydantic import BaseModel, Extra, Field, root_validator +from pydantic import BaseModel, Field, model_validator __all__ = ("IgnoreCaseIdentifier", "LowerCaseIdentifier") class IgnoreCaseIdentifier( BaseModel, - extra=Extra.forbid, + extra="forbid", validate_assignment=True, - allow_population_by_field_name=True, + populate_by_name=True, ): """ Base class for all configuration sections with an ID. """ - id: str = Field(description="ID (section name)", regex=r"[a-zA-Z0-9_(),& -]+") + id: str = Field(description="ID (section name)", pattern=r"[a-zA-Z0-9_(),& -]+") @classmethod def generate_id(cls, name: str) -> str: @@ -45,7 +45,7 @@ def generate_id(cls, name: str) -> str: return transform_name_to_id(name, lower=False) - @root_validator(pre=True) + @model_validator(mode="before") def validate_id(cls, values: t.MutableMapping[str, t.Any]) -> t.Mapping[str, t.Any]: """ Calculate an ID based on the name, if not provided. @@ -56,18 +56,21 @@ def validate_id(cls, values: t.MutableMapping[str, t.Any]) -> t.Mapping[str, t.A Returns: The updated values. """ - if storage_id := values.get("id"): - # If the ID is provided, it comes from a INI section name. - # In some legacy case, the ID was in lower case, so we need to convert it. - values["id"] = cls.generate_id(storage_id) - return values - if not values.get("name"): - return values - name = values["name"] - if storage_id := cls.generate_id(name): - values["id"] = storage_id - else: - raise ValueError(f"Invalid name '{name}'.") + + # For some reason I can't explain, values can be an object. If so, no validation is needed. + if isinstance(values, dict): + if storage_id := values.get("id"): + # If the ID is provided, it comes from a INI section name. + # In some legacy case, the ID was in lower case, so we need to convert it. + values["id"] = cls.generate_id(storage_id) + return values + if not values.get("name"): + return values + name = values["name"] + if storage_id := cls.generate_id(name): + values["id"] = storage_id + else: + raise ValueError(f"Invalid name '{name}'.") return values @@ -76,7 +79,7 @@ class LowerCaseIdentifier(IgnoreCaseIdentifier): Base class for all configuration sections with a lower case ID. """ - id: str = Field(description="ID (section name)", regex=r"[a-z0-9_(),& -]+") + id: str = Field(description="ID (section name)", pattern=r"[a-z0-9_(),& -]+") @classmethod def generate_id(cls, name: str) -> str: diff --git a/antarest/study/storage/rawstudy/model/filesystem/config/ini_properties.py b/antarest/study/storage/rawstudy/model/filesystem/config/ini_properties.py index 84410b9e37..5464975bbf 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/config/ini_properties.py +++ b/antarest/study/storage/rawstudy/model/filesystem/config/ini_properties.py @@ -13,7 +13,7 @@ import json import typing as t -from pydantic import BaseModel, Extra +from pydantic import BaseModel class IniProperties( @@ -21,17 +21,17 @@ class IniProperties( # On reading, if the configuration contains an extra field, it is better # to forbid it, because it allows errors to be detected early. # Ignoring extra attributes can hide errors. - extra=Extra.forbid, + extra="forbid", # If a field is updated on assignment, it is also validated. validate_assignment=True, # On testing, we can use snake_case for field names. - allow_population_by_field_name=True, + populate_by_name=True, ): """ Base class for configuration sections. """ - def to_config(self) -> t.Mapping[str, t.Any]: + def to_config(self) -> t.Dict[str, t.Any]: """ Convert the object to a dictionary for writing to a configuration file (`*.ini`). @@ -40,14 +40,16 @@ def to_config(self) -> t.Mapping[str, t.Any]: """ config = {} - for field_name, field in self.__fields__.items(): + for field_name, field in self.model_fields.items(): value = getattr(self, field_name) if value is None: continue + alias = field.alias + assert alias is not None if isinstance(value, IniProperties): - config[field.alias] = value.to_config() + config[alias] = value.to_config() else: - config[field.alias] = json.loads(json.dumps(value)) + config[alias] = json.loads(json.dumps(value)) return config @classmethod @@ -56,7 +58,7 @@ def construct(cls, _fields_set: t.Optional[t.Set[str]] = None, **values: t.Any) Construct a new model instance from a dict of values, replacing aliases with real field names. """ # The pydantic construct() function does not allow aliases to be handled. - aliases = {(field.alias or name): name for name, field in cls.__fields__.items()} + aliases = {(field.alias or name): name for name, field in cls.model_fields.items()} renamed_values = {aliases.get(k, k): v for k, v in values.items()} if _fields_set is not None: _fields_set = {aliases.get(f, f) for f in _fields_set} diff --git a/antarest/study/storage/rawstudy/model/filesystem/config/links.py b/antarest/study/storage/rawstudy/model/filesystem/config/links.py index 12e1be47e5..88059ef50e 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/config/links.py +++ b/antarest/study/storage/rawstudy/model/filesystem/config/links.py @@ -16,7 +16,7 @@ import typing as t -from pydantic import Field, root_validator, validator +from pydantic import Field, field_validator, model_validator from antarest.study.business.enum_ignore_case import EnumIgnoreCase from antarest.study.storage.rawstudy.model.filesystem.config.field_validators import ( @@ -96,7 +96,7 @@ class LinkProperties(IniProperties): >>> opt = LinkProperties(**obj) - >>> pprint(opt.dict(by_alias=True), width=80) + >>> pprint(opt.model_dump(by_alias=True), width=80) {'asset-type': , 'colorRgb': '#50C0FF', 'comments': 'This is a link', @@ -146,20 +146,20 @@ class LinkProperties(IniProperties): description="color of the area in the map", ) - @validator("filter_synthesis", "filter_year_by_year", pre=True) + @field_validator("filter_synthesis", "filter_year_by_year", mode="before") def _validate_filtering(cls, v: t.Any) -> str: return validate_filtering(v) - @validator("color_rgb", pre=True) + @field_validator("color_rgb", mode="before") def _validate_color_rgb(cls, v: t.Any) -> str: return validate_color_rgb(v) - @root_validator(pre=True) + @model_validator(mode="before") def _validate_colors(cls, values: t.MutableMapping[str, t.Any]) -> t.Mapping[str, t.Any]: return validate_colors(values) # noinspection SpellCheckingInspection - def to_config(self) -> t.Mapping[str, t.Any]: + def to_config(self) -> t.Dict[str, t.Any]: """ Convert the object to a dictionary for writing to a configuration file. """ diff --git a/antarest/study/storage/rawstudy/model/filesystem/config/model.py b/antarest/study/storage/rawstudy/model/filesystem/config/model.py index 5e916b5308..d0abd57710 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/config/model.py +++ b/antarest/study/storage/rawstudy/model/filesystem/config/model.py @@ -14,7 +14,7 @@ import typing as t from pathlib import Path -from pydantic import BaseModel, Field, root_validator +from pydantic import BaseModel, Field, model_validator from antarest.core.utils.utils import DTO from antarest.study.business.enum_ignore_case import EnumIgnoreCase @@ -64,7 +64,7 @@ class Link(BaseModel, extra="ignore"): filters_synthesis: t.List[str] = Field(default_factory=list) filters_year: t.List[str] = Field(default_factory=list) - @root_validator(pre=True) + @model_validator(mode="before") def validation(cls, values: t.MutableMapping[str, t.Any]) -> t.MutableMapping[str, t.Any]: # note: field names are in kebab-case in the INI file filters_synthesis = values.pop("filter-synthesis", values.pop("filters_synthesis", "")) @@ -94,7 +94,7 @@ class DistrictSet(BaseModel): Object linked to /inputs/sets.ini information """ - ALL = ["hourly", "daily", "weekly", "monthly", "annual"] + ALL: t.List[str] = ["hourly", "daily", "weekly", "monthly", "annual"] name: t.Optional[str] = None inverted_set: bool = False areas: t.Optional[t.List[str]] = None diff --git a/antarest/study/storage/rawstudy/model/filesystem/config/thermal.py b/antarest/study/storage/rawstudy/model/filesystem/config/thermal.py index 6c247a3600..f3839566fd 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/config/thermal.py +++ b/antarest/study/storage/rawstudy/model/filesystem/config/thermal.py @@ -439,4 +439,4 @@ def create_thermal_config(study_version: t.Union[str, int], **kwargs: t.Any) -> ValueError: If the study version is not supported. """ cls = get_thermal_config_cls(study_version) - return cls(**kwargs) + return cls.model_validate(kwargs) diff --git a/antarest/study/storage/rawstudy/model/filesystem/factory.py b/antarest/study/storage/rawstudy/model/filesystem/factory.py index 798aef8ac2..40b28e33d8 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/factory.py +++ b/antarest/study/storage/rawstudy/model/filesystem/factory.py @@ -104,7 +104,7 @@ def _create_from_fs_unsafe( from_cache = self.cache.get(cache_id) if from_cache is not None: logger.info(f"Study {study_id} read from cache") - config = FileStudyTreeConfigDTO.parse_obj(from_cache).to_build_config() + config = FileStudyTreeConfigDTO.model_validate(from_cache).to_build_config() if output_path: config.output_path = output_path config.outputs = parse_outputs(output_path) @@ -118,7 +118,7 @@ def _create_from_fs_unsafe( logger.info(f"Cache new entry from StudyFactory (studyID: {study_id})") self.cache.put( cache_id, - FileStudyTreeConfigDTO.from_build_config(config).dict(), + FileStudyTreeConfigDTO.from_build_config(config).model_dump(), ) return result diff --git a/antarest/study/storage/rawstudy/raw_study_service.py b/antarest/study/storage/rawstudy/raw_study_service.py index df36d92c7f..5e9295107a 100644 --- a/antarest/study/storage/rawstudy/raw_study_service.py +++ b/antarest/study/storage/rawstudy/raw_study_service.py @@ -104,7 +104,7 @@ def update_from_raw_meta(self, metadata: RawStudy, fallback_on_default: t.Option metadata.updated_at = metadata.updated_at or datetime.utcnow() if metadata.additional_data is None: metadata.additional_data = StudyAdditionalData() - metadata.additional_data.patch = metadata.additional_data.patch or Patch().json() + metadata.additional_data.patch = metadata.additional_data.patch or Patch().model_dump_json() metadata.additional_data.author = metadata.additional_data.author or "Unknown" else: diff --git a/antarest/study/storage/study_download_utils.py b/antarest/study/storage/study_download_utils.py index c870ecad60..91b2b4f9af 100644 --- a/antarest/study/storage/study_download_utils.py +++ b/antarest/study/storage/study_download_utils.py @@ -345,7 +345,7 @@ def export( if filetype == ExportFormat.JSON: with open(target_file, "w") as fh: json.dump( - matrix.dict(), + matrix.model_dump(), fh, ensure_ascii=False, allow_nan=True, diff --git a/antarest/study/storage/variantstudy/business/command_extractor.py b/antarest/study/storage/variantstudy/business/command_extractor.py index 5c5e697204..adbcc811d8 100644 --- a/antarest/study/storage/variantstudy/business/command_extractor.py +++ b/antarest/study/storage/variantstudy/business/command_extractor.py @@ -223,7 +223,7 @@ def _extract_cluster(self, study: FileStudy, area_id: str, cluster_id: str, rene create_cluster_command( area_id=area_id, cluster_name=cluster.id, - parameters=cluster.dict(by_alias=True, exclude_defaults=True, exclude={"id"}), + parameters=cluster.model_dump(by_alias=True, exclude_defaults=True, exclude={"id"}), command_context=self.command_context, ), self.generate_replace_matrix( @@ -323,6 +323,7 @@ def extract_district(self, study: FileStudy, district_id: str) -> t.List[IComman district_config = study_config.sets[district_id] base_filter = DistrictBaseFilter.add_all if district_config.inverted_set else DistrictBaseFilter.remove_all district_fetched_config = study_tree.get(["input", "areas", "sets", district_id]) + assert district_config.name is not None study_commands.append( CreateDistrict( name=district_config.name, @@ -382,7 +383,8 @@ def extract_binding_constraint( matrices[name] = matrix["data"] # Create the command to create the binding constraint - create_cmd = CreateBindingConstraint(**binding, **matrices, coeffs=terms, command_context=self.command_context) + kwargs = {**binding, **matrices, "coeffs": terms, "command_context": self.command_context} + create_cmd = CreateBindingConstraint.model_validate(kwargs) return [create_cmd] @@ -416,8 +418,8 @@ def generate_update_playlist( config = study_tree.get(["settings", "generaldata"]) playlist = get_playlist(config) return UpdatePlaylist( - items=playlist.keys() if playlist else None, - weights=({year for year, weight in playlist.items() if weight != 1} if playlist else None), + items=list(playlist.keys()) if playlist else None, + weights=({year: weight for year, weight in playlist.items() if weight != 1} if playlist else None), active=bool(playlist and len(playlist) > 0), reverse=False, command_context=self.command_context, @@ -453,6 +455,7 @@ def generate_update_district( study_tree = study.tree district_config = study_config.sets[district_id] district_fetched_config = study_tree.get(["input", "areas", "sets", district_id]) + assert district_config.name is not None return UpdateDistrict( id=district_config.name, base_filter=DistrictBaseFilter.add_all if district_config.inverted_set else DistrictBaseFilter.remove_all, diff --git a/antarest/study/storage/variantstudy/business/command_reverter.py b/antarest/study/storage/variantstudy/business/command_reverter.py index bf034b4167..5134a86bea 100644 --- a/antarest/study/storage/variantstudy/business/command_reverter.py +++ b/antarest/study/storage/variantstudy/business/command_reverter.py @@ -135,7 +135,7 @@ def _revert_update_binding_constraint( if matrix is not None: args[matrix_name] = matrix_service.get_matrix_id(matrix) - return [UpdateBindingConstraint(**args)] + return [UpdateBindingConstraint.model_validate(args)] return base_command.get_command_extractor().extract_binding_constraint(base, base_command.id) diff --git a/antarest/study/storage/variantstudy/business/utils_binding_constraint.py b/antarest/study/storage/variantstudy/business/utils_binding_constraint.py index bf577294eb..328e43f0f6 100644 --- a/antarest/study/storage/variantstudy/business/utils_binding_constraint.py +++ b/antarest/study/storage/variantstudy/business/utils_binding_constraint.py @@ -13,7 +13,6 @@ import typing as t from antarest.study.storage.rawstudy.model.filesystem.config.binding_constraint import ( - DEFAULT_TIMESTEP, BindingConstraintFrequency, BindingConstraintOperator, ) diff --git a/antarest/study/storage/variantstudy/command_factory.py b/antarest/study/storage/variantstudy/command_factory.py index b5c63d258a..d178cfa79f 100644 --- a/antarest/study/storage/variantstudy/command_factory.py +++ b/antarest/study/storage/variantstudy/command_factory.py @@ -11,6 +11,7 @@ # This file is part of the Antares project. import typing as t +import copy from antarest.core.model import JSON from antarest.matrixstore.service import ISimpleMatrixService @@ -117,10 +118,15 @@ def to_command(self, command_dto: CommandDTO) -> t.List[ICommand]: """ args = command_dto.args if isinstance(args, dict): - return [self._to_single_command(command_dto.action, args, command_dto.version, command_dto.id)] + # In some cases, pydantic can modify inplace the given args. + # We don't want that so before doing so we copy the dictionnary. + new_args = copy.deepcopy(args) + return [self._to_single_command(command_dto.action, new_args, command_dto.version, command_dto.id)] elif isinstance(args, list): return [ - self._to_single_command(command_dto.action, argument, command_dto.version, command_dto.id) + self._to_single_command( + command_dto.action, copy.deepcopy(argument), command_dto.version, command_dto.id + ) for argument in args ] raise NotImplementedError() diff --git a/antarest/study/storage/variantstudy/model/command/create_area.py b/antarest/study/storage/variantstudy/model/command/create_area.py index 65854d772a..bfc8711b8e 100644 --- a/antarest/study/storage/variantstudy/model/command/create_area.py +++ b/antarest/study/storage/variantstudy/model/command/create_area.py @@ -61,8 +61,8 @@ class CreateArea(ICommand): # Overloaded metadata # =================== - command_name = CommandName.CREATE_AREA - version = 1 + command_name: CommandName = CommandName.CREATE_AREA + version: int = 1 # Command parameters # ================== diff --git a/antarest/study/storage/variantstudy/model/command/create_binding_constraint.py b/antarest/study/storage/variantstudy/model/command/create_binding_constraint.py index c3814cc340..50ce659fd9 100644 --- a/antarest/study/storage/variantstudy/model/command/create_binding_constraint.py +++ b/antarest/study/storage/variantstudy/model/command/create_binding_constraint.py @@ -10,16 +10,15 @@ # # This file is part of the Antares project. -import json import typing as t from abc import ABCMeta from enum import Enum import numpy as np -from pydantic import BaseModel, Extra, Field, root_validator, validator +from pydantic import BaseModel, Field, field_validator, model_validator from antarest.matrixstore.model import MatrixData -from antarest.study.business.all_optional_meta import AllOptionalMetaclass +from antarest.study.business.all_optional_meta import all_optional_model, camel_case_model from antarest.study.storage.rawstudy.model.filesystem.config.binding_constraint import ( DEFAULT_GROUP, DEFAULT_OPERATOR, @@ -91,26 +90,24 @@ def check_matrix_values(time_step: BindingConstraintFrequency, values: MatrixTyp # ================================================================================= -class BindingConstraintPropertiesBase(BaseModel, extra=Extra.forbid, allow_population_by_field_name=True): +class BindingConstraintPropertiesBase(BaseModel, extra="forbid", populate_by_name=True): enabled: bool = True time_step: BindingConstraintFrequency = Field(DEFAULT_TIMESTEP, alias="type") operator: BindingConstraintOperator = DEFAULT_OPERATOR comments: str = "" - @classmethod - def from_dict(cls, **attrs: t.Any) -> "BindingConstraintPropertiesBase": - """ - Instantiate a class from a dictionary excluding unknown or `None` fields. - """ - attrs = {k: v for k, v in attrs.items() if k in cls.__fields__ and v is not None} - return cls(**attrs) + @model_validator(mode="before") + def replace_with_alias(cls, values: t.Dict[str, t.Any]) -> t.Dict[str, t.Any]: + if "type" in values: + values["time_step"] = values.pop("type") + return values class BindingConstraintProperties830(BindingConstraintPropertiesBase): filter_year_by_year: str = Field("", alias="filter-year-by-year") filter_synthesis: str = Field("", alias="filter-synthesis") - @validator("filter_synthesis", "filter_year_by_year", pre=True) + @field_validator("filter_synthesis", "filter_year_by_year", mode="before") def _validate_filtering(cls, v: t.Any) -> str: return validate_filtering(v) @@ -151,10 +148,12 @@ def create_binding_constraint_config(study_version: t.Union[str, int], **kwargs: The binding_constraint configuration model. """ cls = get_binding_constraint_config_cls(study_version) - return cls.from_dict(**kwargs) + attrs = {k: v for k, v in kwargs.items() if k in cls.model_fields and v is not None} + return cls(**attrs) -class OptionalProperties(BindingConstraintProperties870, metaclass=AllOptionalMetaclass, use_none=True): +@all_optional_model +class OptionalProperties(BindingConstraintProperties870): pass @@ -163,32 +162,30 @@ class OptionalProperties(BindingConstraintProperties870, metaclass=AllOptionalMe # ================================================================================= -class BindingConstraintMatrices(BaseModel, extra=Extra.forbid, allow_population_by_field_name=True): +@camel_case_model +class BindingConstraintMatrices(BaseModel, extra="forbid", populate_by_name=True): """ Class used to store the matrices of a binding constraint. """ values: t.Optional[t.Union[MatrixType, str]] = Field( - None, + default=None, description="2nd member matrix for studies before v8.7", ) less_term_matrix: t.Optional[t.Union[MatrixType, str]] = Field( - None, + default=None, description="less term matrix for v8.7+ studies", - alias="lessTermMatrix", ) greater_term_matrix: t.Optional[t.Union[MatrixType, str]] = Field( - None, + default=None, description="greater term matrix for v8.7+ studies", - alias="greaterTermMatrix", ) equal_term_matrix: t.Optional[t.Union[MatrixType, str]] = Field( - None, + default=None, description="equal term matrix for v8.7+ studies", - alias="equalTermMatrix", ) - @root_validator(pre=True) + @model_validator(mode="before") def check_matrices( cls, values: t.Dict[str, t.Optional[t.Union[MatrixType, str]]] ) -> t.Dict[str, t.Optional[t.Union[MatrixType, str]]]: @@ -215,10 +212,10 @@ class AbstractBindingConstraintCommand(OptionalProperties, BindingConstraintMatr Abstract class for binding constraint commands. """ - coeffs: t.Optional[t.Dict[str, t.List[float]]] + coeffs: t.Optional[t.Dict[str, t.List[float]]] = None def to_dto(self) -> CommandDTO: - json_command = json.loads(self.json(exclude={"command_context"})) + json_command = self.model_dump(mode="json", exclude={"command_context"}) args = {} for field in ["enabled", "coeffs", "comments", "time_step", "operator"]: if json_command[field]: @@ -400,7 +397,7 @@ class CreateBindingConstraint(AbstractBindingConstraintCommand): Command used to create a binding constraint. """ - command_name = CommandName.CREATE_BINDING_CONSTRAINT + command_name: CommandName = CommandName.CREATE_BINDING_CONSTRAINT version: int = 1 # Properties of the `CREATE_BINDING_CONSTRAINT` command: @@ -427,8 +424,8 @@ def _apply(self, study_data: FileStudy) -> CommandOutput: bd_id = transform_name_to_id(self.name) study_version = study_data.config.version - props = create_binding_constraint_config(study_version, **self.dict()) - obj = json.loads(props.json(by_alias=True)) + props = create_binding_constraint_config(study_version, **self.model_dump()) + obj = props.model_dump(mode="json", by_alias=True) new_binding = {"id": bd_id, "name": self.name, **obj} @@ -454,9 +451,9 @@ def _create_diff(self, other: "ICommand") -> t.List["ICommand"]: bd_id = transform_name_to_id(self.name) args = {"id": bd_id, "command_context": other.command_context} - excluded_fields = frozenset(ICommand.__fields__) - self_command = json.loads(self.json(exclude=excluded_fields)) - other_command = json.loads(other.json(exclude=excluded_fields)) + excluded_fields = set(ICommand.model_fields) + self_command = self.model_dump(mode="json", exclude=excluded_fields) + other_command = other.model_dump(mode="json", exclude=excluded_fields) properties = [ "enabled", "coeffs", @@ -480,7 +477,7 @@ def _create_diff(self, other: "ICommand") -> t.List["ICommand"]: if self_matrix_id != other_matrix_id: args[matrix_name] = other_matrix_id - return [UpdateBindingConstraint(**args)] + return [UpdateBindingConstraint.model_validate(args)] def match(self, other: "ICommand", equal: bool = False) -> bool: if not isinstance(other, self.__class__): diff --git a/antarest/study/storage/variantstudy/model/command/create_cluster.py b/antarest/study/storage/variantstudy/model/command/create_cluster.py index 9b43d9de5b..a1c6ef17aa 100644 --- a/antarest/study/storage/variantstudy/model/command/create_cluster.py +++ b/antarest/study/storage/variantstudy/model/command/create_cluster.py @@ -12,7 +12,7 @@ import typing as t -from pydantic import validator +from pydantic import Field, ValidationInfo, field_validator from antarest.core.model import JSON from antarest.core.utils.utils import assert_this @@ -38,46 +38,51 @@ class CreateCluster(ICommand): # Overloaded metadata # =================== - command_name = CommandName.CREATE_THERMAL_CLUSTER - version = 1 + command_name: CommandName = CommandName.CREATE_THERMAL_CLUSTER + version: int = 1 # Command parameters # ================== area_id: str cluster_name: str - parameters: t.Dict[str, str] - prepro: t.Optional[t.Union[t.List[t.List[MatrixData]], str]] = None - modulation: t.Optional[t.Union[t.List[t.List[MatrixData]], str]] = None + parameters: t.Dict[str, t.Any] + prepro: t.Optional[t.Union[t.List[t.List[MatrixData]], str]] = Field(None, validate_default=True) + modulation: t.Optional[t.Union[t.List[t.List[MatrixData]], str]] = Field(None, validate_default=True) - @validator("cluster_name") + @field_validator("cluster_name", mode="before") def validate_cluster_name(cls, val: str) -> str: valid_name = transform_name_to_id(val, lower=False) if valid_name != val: raise ValueError("Cluster name must only contains [a-zA-Z0-9],&,-,_,(,) characters") return val - @validator("prepro", always=True) + @field_validator("prepro", mode="before") def validate_prepro( - cls, v: t.Optional[t.Union[t.List[t.List[MatrixData]], str]], values: t.Any + cls, + v: t.Optional[t.Union[t.List[t.List[MatrixData]], str]], + values: t.Union[t.Dict[str, t.Any], ValidationInfo], ) -> t.Optional[t.Union[t.List[t.List[MatrixData]], str]]: + new_values = values if isinstance(values, dict) else values.data if v is None: - v = values["command_context"].generator_matrix_constants.get_thermal_prepro_data() + v = new_values["command_context"].generator_matrix_constants.get_thermal_prepro_data() return v - else: - return validate_matrix(v, values) + return validate_matrix(v, new_values) - @validator("modulation", always=True) + @field_validator("modulation", mode="before") def validate_modulation( - cls, v: t.Optional[t.Union[t.List[t.List[MatrixData]], str]], values: t.Any + cls, + v: t.Optional[t.Union[t.List[t.List[MatrixData]], str]], + values: t.Union[t.Dict[str, t.Any], ValidationInfo], ) -> t.Optional[t.Union[t.List[t.List[MatrixData]], str]]: + new_values = values if isinstance(values, dict) else values.data if v is None: - v = values["command_context"].generator_matrix_constants.get_thermal_prepro_modulation() + v = new_values["command_context"].generator_matrix_constants.get_thermal_prepro_modulation() return v else: - return validate_matrix(v, values) + return validate_matrix(v, new_values) def _apply_config(self, study_data: FileStudyTreeConfig) -> t.Tuple[CommandOutput, t.Dict[str, t.Any]]: # Search the Area in the configuration diff --git a/antarest/study/storage/variantstudy/model/command/create_district.py b/antarest/study/storage/variantstudy/model/command/create_district.py index ac7086edac..afb9736806 100644 --- a/antarest/study/storage/variantstudy/model/command/create_district.py +++ b/antarest/study/storage/variantstudy/model/command/create_district.py @@ -13,7 +13,7 @@ from enum import Enum from typing import Any, Dict, List, Optional, Tuple, cast -from pydantic import validator +from pydantic import field_validator from antarest.study.storage.rawstudy.model.filesystem.config.model import ( DistrictSet, @@ -39,8 +39,8 @@ class CreateDistrict(ICommand): # Overloaded metadata # =================== - command_name = CommandName.CREATE_DISTRICT - version = 1 + command_name: CommandName = CommandName.CREATE_DISTRICT + version: int = 1 # Command parameters # ================== @@ -51,7 +51,7 @@ class CreateDistrict(ICommand): output: bool = True comments: str = "" - @validator("name") + @field_validator("name") def validate_district_name(cls, val: str) -> str: valid_name = transform_name_to_id(val, lower=False) if valid_name != val: diff --git a/antarest/study/storage/variantstudy/model/command/create_link.py b/antarest/study/storage/variantstudy/model/command/create_link.py index 21b1f1dc67..ef2d21f0a9 100644 --- a/antarest/study/storage/variantstudy/model/command/create_link.py +++ b/antarest/study/storage/variantstudy/model/command/create_link.py @@ -12,7 +12,7 @@ from typing import Any, Dict, List, Optional, Tuple, Union, cast -from pydantic import root_validator, validator +from pydantic import ValidationInfo, field_validator, model_validator from antarest.core.model import JSON from antarest.core.utils.utils import assert_this @@ -51,30 +51,31 @@ class CreateLink(ICommand): # Overloaded metadata # =================== - command_name = CommandName.CREATE_LINK - version = 1 + command_name: CommandName = CommandName.CREATE_LINK + version: int = 1 # Command parameters # ================== area1: str area2: str - parameters: Optional[Dict[str, str]] = None + parameters: Optional[Dict[str, Any]] = None series: Optional[Union[List[List[MatrixData]], str]] = None direct: Optional[Union[List[List[MatrixData]], str]] = None indirect: Optional[Union[List[List[MatrixData]], str]] = None - @validator("series", "direct", "indirect", always=True) + @field_validator("series", "direct", "indirect", mode="before") def validate_series( - cls, v: Optional[Union[List[List[MatrixData]], str]], values: Any + cls, v: Optional[Union[List[List[MatrixData]], str]], values: Union[Dict[str, Any], ValidationInfo] ) -> Optional[Union[List[List[MatrixData]], str]]: - return validate_matrix(v, values) if v is not None else v + new_values = values if isinstance(values, dict) else values.data + return validate_matrix(v, new_values) if v is not None else v - @root_validator - def validate_areas(cls, values: Dict[str, Any]) -> Any: - if values.get("area1") == values.get("area2"): + @model_validator(mode="after") + def validate_areas(self) -> "CreateLink": + if self.area1 == self.area2: raise ValueError("Cannot create link on same node") - return values + return self def _create_link_in_config(self, area_from: str, area_to: str, study_data: FileStudyTreeConfig) -> None: self.parameters = self.parameters or {} diff --git a/antarest/study/storage/variantstudy/model/command/create_renewables_cluster.py b/antarest/study/storage/variantstudy/model/command/create_renewables_cluster.py index 9d27742118..1a932dd30d 100644 --- a/antarest/study/storage/variantstudy/model/command/create_renewables_cluster.py +++ b/antarest/study/storage/variantstudy/model/command/create_renewables_cluster.py @@ -12,7 +12,7 @@ import typing as t -from pydantic import validator +from pydantic import field_validator from antarest.core.model import JSON from antarest.study.storage.rawstudy.model.filesystem.config.model import ( @@ -36,17 +36,17 @@ class CreateRenewablesCluster(ICommand): # Overloaded metadata # =================== - command_name = CommandName.CREATE_RENEWABLES_CLUSTER - version = 1 + command_name: CommandName = CommandName.CREATE_RENEWABLES_CLUSTER + version: int = 1 # Command parameters # ================== area_id: str cluster_name: str - parameters: t.Dict[str, str] + parameters: t.Dict[str, t.Any] - @validator("cluster_name") + @field_validator("cluster_name") def validate_cluster_name(cls, val: str) -> str: valid_name = transform_name_to_id(val, lower=False) if valid_name != val: diff --git a/antarest/study/storage/variantstudy/model/command/create_st_storage.py b/antarest/study/storage/variantstudy/model/command/create_st_storage.py index fd8f445d4b..8244957da5 100644 --- a/antarest/study/storage/variantstudy/model/command/create_st_storage.py +++ b/antarest/study/storage/variantstudy/model/command/create_st_storage.py @@ -10,12 +10,10 @@ # # This file is part of the Antares project. -import json import typing as t import numpy as np -from pydantic import Field, validator -from pydantic.fields import ModelField +from pydantic import Field, ValidationInfo, model_validator from antarest.core.model import JSON from antarest.matrixstore.model import MatrixData @@ -52,32 +50,32 @@ class CreateSTStorage(ICommand): # Overloaded metadata # =================== - command_name = CommandName.CREATE_ST_STORAGE - version = 1 + command_name: CommandName = CommandName.CREATE_ST_STORAGE + version: int = 1 # Command parameters # ================== - area_id: str = Field(description="Area ID", regex=r"[a-z0-9_(),& -]+") + area_id: str = Field(description="Area ID", pattern=r"[a-z0-9_(),& -]+") parameters: STStorageConfigType pmax_injection: t.Optional[t.Union[MatrixType, str]] = Field( - None, + default=None, description="Charge capacity (modulation)", ) pmax_withdrawal: t.Optional[t.Union[MatrixType, str]] = Field( - None, + default=None, description="Discharge capacity (modulation)", ) lower_rule_curve: t.Optional[t.Union[MatrixType, str]] = Field( - None, + default=None, description="Lower rule curve (coefficient)", ) upper_rule_curve: t.Optional[t.Union[MatrixType, str]] = Field( - None, + default=None, description="Upper rule curve (coefficient)", ) inflows: t.Optional[t.Union[MatrixType, str]] = Field( - None, + default=None, description="Inflows (MW)", ) @@ -91,12 +89,9 @@ def storage_name(self) -> str: """The label representing the name of the storage for the user.""" return self.parameters.name - @validator(*_MATRIX_NAMES, always=True) - def register_matrix( - cls, - v: t.Optional[t.Union[MatrixType, str]], - values: t.Dict[str, t.Any], - field: ModelField, + @staticmethod + def validate_field( + v: t.Optional[t.Union[MatrixType, str]], values: t.Dict[str, t.Any], field: str ) -> t.Optional[t.Union[MatrixType, str]]: """ Validates a matrix array or link, and store the matrix array in the matrix repository. @@ -112,7 +107,7 @@ def register_matrix( Args: v: The matrix array or link to be validated and registered. values: A dictionary containing additional values used for validation. - field: The field being validated. + field: The name of the validated parameter Returns: The ID of the validated and stored matrix prefixed by "matrix://". @@ -134,7 +129,7 @@ def register_matrix( "upper_rule_curve": constants.get_st_storage_upper_rule_curve, "inflows": constants.get_st_storage_inflows, } - method = methods[field.name] + method = methods[field] return method() if isinstance(v, str): # Check the matrix link @@ -148,7 +143,7 @@ def register_matrix( raise ValueError("Matrix values cannot contain NaN") # All matrices except "inflows" are constrained between 0 and 1 constrained = set(_MATRIX_NAMES) - {"inflows"} - if field.name in constrained and (np.any(array < 0) or np.any(array > 1)): + if field in constrained and (np.any(array < 0) or np.any(array > 1)): raise ValueError("Matrix values should be between 0 and 1") v = t.cast(MatrixType, array.tolist()) return validate_matrix(v, values) @@ -156,6 +151,13 @@ def register_matrix( # pragma: no cover raise TypeError(repr(v)) + @model_validator(mode="before") + def validate_matrices(cls, values: t.Union[t.Dict[str, t.Any], ValidationInfo]) -> t.Dict[str, t.Any]: + new_values = values if isinstance(values, dict) else values.data + for field in _MATRIX_NAMES: + new_values[field] = cls.validate_field(new_values.get(field, None), new_values, field) + return new_values + def _apply_config(self, study_data: FileStudyTreeConfig) -> t.Tuple[CommandOutput, t.Dict[str, t.Any]]: """ Applies configuration changes to the study data: add the short-term storage in the storages list. @@ -223,14 +225,14 @@ def _apply(self, study_data: FileStudy) -> CommandOutput: Returns: The output of the command execution. """ - output, data = self._apply_config(study_data.config) + output, _ = self._apply_config(study_data.config) if not output.status: return output # Fill-in the "list.ini" file with the parameters. # On creation, it's better to write all the parameters in the file. config = study_data.tree.get(["input", "st-storage", "clusters", self.area_id, "list"]) - config[self.storage_id] = json.loads(self.parameters.json(by_alias=True, exclude={"id"})) + config[self.storage_id] = self.parameters.model_dump(mode="json", by_alias=True, exclude={"id"}) new_data: JSON = { "input": { @@ -252,7 +254,7 @@ def to_dto(self) -> CommandDTO: Returns: The DTO object representing the current command. """ - parameters = json.loads(self.parameters.json(by_alias=True, exclude={"id"})) + parameters = self.parameters.model_dump(mode="json", by_alias=True, exclude={"id"}) return CommandDTO( action=self.command_name.value, args={ @@ -317,7 +319,7 @@ def _create_diff(self, other: "ICommand") -> t.List["ICommand"]: if getattr(self, attr) != getattr(other, attr) ] if self.parameters != other.parameters: - data: t.Dict[str, t.Any] = json.loads(other.parameters.json(by_alias=True, exclude={"id"})) + data: t.Dict[str, t.Any] = other.parameters.model_dump(mode="json", by_alias=True, exclude={"id"}) commands.append( UpdateConfig( target=f"input/st-storage/clusters/{self.area_id}/list/{self.storage_id}", diff --git a/antarest/study/storage/variantstudy/model/command/generate_thermal_cluster_timeseries.py b/antarest/study/storage/variantstudy/model/command/generate_thermal_cluster_timeseries.py index 4cd62588f5..ad7e5fa863 100644 --- a/antarest/study/storage/variantstudy/model/command/generate_thermal_cluster_timeseries.py +++ b/antarest/study/storage/variantstudy/model/command/generate_thermal_cluster_timeseries.py @@ -43,8 +43,8 @@ class GenerateThermalClusterTimeSeries(ICommand): Command used to generate thermal cluster timeseries for an entire study """ - command_name = CommandName.GENERATE_THERMAL_CLUSTER_TIMESERIES - version = 1 + command_name: CommandName = CommandName.GENERATE_THERMAL_CLUSTER_TIMESERIES + version: int = 1 def _apply_config(self, study_data: FileStudyTreeConfig) -> OutputTuple: return CommandOutput(status=True, message="Nothing to do"), {} diff --git a/antarest/study/storage/variantstudy/model/command/icommand.py b/antarest/study/storage/variantstudy/model/command/icommand.py index 85a4222ba4..eb9a1f1285 100644 --- a/antarest/study/storage/variantstudy/model/command/icommand.py +++ b/antarest/study/storage/variantstudy/model/command/icommand.py @@ -16,7 +16,7 @@ from abc import ABC, abstractmethod import typing_extensions as te -from pydantic import BaseModel, Extra +from pydantic import BaseModel from antarest.core.utils.utils import assert_this from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfig @@ -35,7 +35,7 @@ OutputTuple: te.TypeAlias = t.Tuple[CommandOutput, t.Dict[str, t.Any]] -class ICommand(ABC, BaseModel, extra=Extra.forbid, arbitrary_types_allowed=True, copy_on_model_validation="deep"): +class ICommand(ABC, BaseModel, extra="forbid", arbitrary_types_allowed=True): """ Interface for all commands that can be applied to a study. @@ -138,9 +138,9 @@ def match(self, other: "ICommand", equal: bool = False) -> bool: """ if not isinstance(other, self.__class__): return False - excluded_fields = set(ICommand.__fields__) - this_values = self.dict(exclude=excluded_fields) - that_values = other.dict(exclude=excluded_fields) + excluded_fields = set(ICommand.model_fields) + this_values = self.model_dump(exclude=excluded_fields) + that_values = other.model_dump(exclude=excluded_fields) return this_values == that_values @abstractmethod diff --git a/antarest/study/storage/variantstudy/model/command/remove_area.py b/antarest/study/storage/variantstudy/model/command/remove_area.py index 4323830432..3bf3e1856c 100644 --- a/antarest/study/storage/variantstudy/model/command/remove_area.py +++ b/antarest/study/storage/variantstudy/model/command/remove_area.py @@ -33,7 +33,7 @@ class RemoveArea(ICommand): Command used to remove an area. """ - command_name = CommandName.REMOVE_AREA + command_name: CommandName = CommandName.REMOVE_AREA version: int = 1 # Properties of the `REMOVE_AREA` command: diff --git a/antarest/study/storage/variantstudy/model/command/remove_binding_constraint.py b/antarest/study/storage/variantstudy/model/command/remove_binding_constraint.py index ecc448001c..ee51c7e641 100644 --- a/antarest/study/storage/variantstudy/model/command/remove_binding_constraint.py +++ b/antarest/study/storage/variantstudy/model/command/remove_binding_constraint.py @@ -27,7 +27,7 @@ class RemoveBindingConstraint(ICommand): Command used to remove a binding constraint. """ - command_name = CommandName.REMOVE_BINDING_CONSTRAINT + command_name: CommandName = CommandName.REMOVE_BINDING_CONSTRAINT version: int = 1 # Properties of the `REMOVE_BINDING_CONSTRAINT` command: diff --git a/antarest/study/storage/variantstudy/model/command/remove_cluster.py b/antarest/study/storage/variantstudy/model/command/remove_cluster.py index 210fcc61f8..3895b423e9 100644 --- a/antarest/study/storage/variantstudy/model/command/remove_cluster.py +++ b/antarest/study/storage/variantstudy/model/command/remove_cluster.py @@ -30,8 +30,8 @@ class RemoveCluster(ICommand): # Overloaded metadata # =================== - command_name = CommandName.REMOVE_THERMAL_CLUSTER - version = 1 + command_name: CommandName = CommandName.REMOVE_THERMAL_CLUSTER + version: int = 1 # Command parameters # ================== @@ -187,7 +187,7 @@ def _remove_cluster_from_binding_constraints(self, study_data: FileStudy) -> Non # Collect the binding constraints that are related to the area to remove # by searching the terms that contain the ID of the area. - bc_to_remove = {} + bc_to_remove = [] lower_area_id = self.area_id.lower() lower_cluster_id = self.cluster_id.lower() for bc_index, bc in list(binding_constraints.items()): @@ -200,16 +200,15 @@ def _remove_cluster_from_binding_constraints(self, study_data: FileStudy) -> Non # noinspection PyTypeChecker related_area_id, related_cluster_id = map(str.lower, key.split(".")) if (lower_area_id, lower_cluster_id) == (related_area_id, related_cluster_id): - bc_to_remove[bc_index] = binding_constraints.pop(bc_index) + bc_to_remove.append(binding_constraints.pop(bc_index)["id"]) break matrix_suffixes = ["_lt", "_gt", "_eq"] if study_data.config.version >= 870 else [""] existing_files = study_data.tree.get(["input", "bindingconstraints"], depth=1) - for bc_index, bc in bc_to_remove.items(): - for suffix in matrix_suffixes: - matrix_id = f"{bc['id']}{suffix}" - if matrix_id in existing_files: - study_data.tree.delete(["input", "bindingconstraints", matrix_id]) + for bc_id, suffix in zip(bc_to_remove, matrix_suffixes): + matrix_id = f"{bc_id}{suffix}" + if matrix_id in existing_files: + study_data.tree.delete(["input", "bindingconstraints", matrix_id]) study_data.tree.save(binding_constraints, url) diff --git a/antarest/study/storage/variantstudy/model/command/remove_district.py b/antarest/study/storage/variantstudy/model/command/remove_district.py index 9d20a53a50..586a827943 100644 --- a/antarest/study/storage/variantstudy/model/command/remove_district.py +++ b/antarest/study/storage/variantstudy/model/command/remove_district.py @@ -27,8 +27,8 @@ class RemoveDistrict(ICommand): # Overloaded metadata # =================== - command_name = CommandName.REMOVE_DISTRICT - version = 1 + command_name: CommandName = CommandName.REMOVE_DISTRICT + version: int = 1 # Command parameters # ================== diff --git a/antarest/study/storage/variantstudy/model/command/remove_link.py b/antarest/study/storage/variantstudy/model/command/remove_link.py index 68289a8b0d..a384ccff58 100644 --- a/antarest/study/storage/variantstudy/model/command/remove_link.py +++ b/antarest/study/storage/variantstudy/model/command/remove_link.py @@ -12,7 +12,7 @@ import typing as t -from pydantic import root_validator, validator +from pydantic import field_validator, model_validator from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfig, transform_name_to_id from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy @@ -29,7 +29,7 @@ class RemoveLink(ICommand): # Overloaded metadata # =================== - command_name = CommandName.REMOVE_LINK + command_name: CommandName = CommandName.REMOVE_LINK version: int = 1 # Command parameters @@ -40,7 +40,7 @@ class RemoveLink(ICommand): area2: str # noinspection PyMethodParameters - @validator("area1", "area2", pre=True) + @field_validator("area1", "area2", mode="before") def _validate_id(cls, area: str) -> str: if isinstance(area, str): # Area IDs must be in lowercase and not empty. @@ -54,16 +54,12 @@ def _validate_id(cls, area: str) -> str: return area # noinspection PyMethodParameters - @root_validator(pre=False) - def _validate_link(cls, values: t.Dict[str, t.Any]) -> t.Dict[str, t.Any]: - area1 = values.get("area1") - area2 = values.get("area2") - - if area1 and area2: - # By convention, the source area is always the smallest one (in lexicographic order). - values["area1"], values["area2"] = sorted([area1, area2]) - - return values + @model_validator(mode="after") + def _validate_link(self) -> "RemoveLink": + # By convention, the source area is always the smallest one (in lexicographic order). + if self.area1 > self.area2: + self.area1, self.area2 = self.area2, self.area1 + return self def _check_link_exists(self, study_cfg: FileStudyTreeConfig) -> OutputTuple: """ diff --git a/antarest/study/storage/variantstudy/model/command/remove_renewables_cluster.py b/antarest/study/storage/variantstudy/model/command/remove_renewables_cluster.py index 620590c172..834dc1043b 100644 --- a/antarest/study/storage/variantstudy/model/command/remove_renewables_cluster.py +++ b/antarest/study/storage/variantstudy/model/command/remove_renewables_cluster.py @@ -27,8 +27,8 @@ class RemoveRenewablesCluster(ICommand): # Overloaded metadata # =================== - command_name = CommandName.REMOVE_RENEWABLES_CLUSTER - version = 1 + command_name: CommandName = CommandName.REMOVE_RENEWABLES_CLUSTER + version: int = 1 # Command parameters # ================== diff --git a/antarest/study/storage/variantstudy/model/command/remove_st_storage.py b/antarest/study/storage/variantstudy/model/command/remove_st_storage.py index 7a38afe588..550587535d 100644 --- a/antarest/study/storage/variantstudy/model/command/remove_st_storage.py +++ b/antarest/study/storage/variantstudy/model/command/remove_st_storage.py @@ -32,14 +32,14 @@ class RemoveSTStorage(ICommand): # Overloaded metadata # =================== - command_name = CommandName.REMOVE_ST_STORAGE - version = 1 + command_name: CommandName = CommandName.REMOVE_ST_STORAGE + version: int = 1 # Command parameters # ================== - area_id: str = Field(description="Area ID", regex=r"[a-z0-9_(),& -]+") - storage_id: str = Field(description="Short term storage ID", regex=r"[a-z0-9_(),& -]+") + area_id: str = Field(description="Area ID", pattern=r"[a-z0-9_(),& -]+") + storage_id: str = Field(description="Short term storage ID", pattern=r"[a-z0-9_(),& -]+") def _apply_config(self, study_data: FileStudyTreeConfig) -> t.Tuple[CommandOutput, t.Dict[str, t.Any]]: """ diff --git a/antarest/study/storage/variantstudy/model/command/replace_matrix.py b/antarest/study/storage/variantstudy/model/command/replace_matrix.py index cdc5a74ec0..8a26f12f28 100644 --- a/antarest/study/storage/variantstudy/model/command/replace_matrix.py +++ b/antarest/study/storage/variantstudy/model/command/replace_matrix.py @@ -12,7 +12,7 @@ import typing as t -from pydantic import validator +from pydantic import Field, ValidationInfo, field_validator from antarest.core.exceptions import ChildNotFoundError from antarest.core.model import JSON @@ -35,16 +35,18 @@ class ReplaceMatrix(ICommand): # Overloaded metadata # =================== - command_name = CommandName.REPLACE_MATRIX - version = 1 + command_name: CommandName = CommandName.REPLACE_MATRIX + version: int = 1 # Command parameters # ================== target: str - matrix: t.Union[t.List[t.List[MatrixData]], str] + matrix: t.Union[t.List[t.List[MatrixData]], str] = Field(validate_default=True) - _validate_matrix = validator("matrix", each_item=True, always=True, allow_reuse=True)(validate_matrix) + @field_validator("matrix", mode="before") + def matrix_validator(cls, matrix: t.Union[t.List[t.List[MatrixData]], str], values: ValidationInfo) -> str: + return validate_matrix(matrix, values.data) def _apply_config(self, study_data: FileStudyTreeConfig) -> t.Tuple[CommandOutput, t.Dict[str, t.Any]]: return ( diff --git a/antarest/study/storage/variantstudy/model/command/update_binding_constraint.py b/antarest/study/storage/variantstudy/model/command/update_binding_constraint.py index 79165fd787..530cc92dfd 100644 --- a/antarest/study/storage/variantstudy/model/command/update_binding_constraint.py +++ b/antarest/study/storage/variantstudy/model/command/update_binding_constraint.py @@ -10,7 +10,6 @@ # # This file is part of the Antares project. -import json import typing as t from antarest.core.model import JSON @@ -102,7 +101,7 @@ class UpdateBindingConstraint(AbstractBindingConstraintCommand): # Overloaded metadata # =================== - command_name = CommandName.UPDATE_BINDING_CONSTRAINT + command_name: CommandName = CommandName.UPDATE_BINDING_CONSTRAINT version: int = 1 # Command parameters @@ -183,14 +182,14 @@ def _apply(self, study_data: FileStudy) -> CommandOutput: ) study_version = study_data.config.version - props = create_binding_constraint_config(study_version, **self.dict()) - obj = json.loads(props.json(by_alias=True, exclude_unset=True)) + props = create_binding_constraint_config(study_version, **self.model_dump()) + obj = props.model_dump(mode="json", by_alias=True, exclude_unset=True) updated_cfg = binding_constraints[index] updated_cfg.update(obj) - excluded_fields = set(ICommand.__fields__) | {"id"} - updated_properties = self.dict(exclude=excluded_fields, exclude_none=True) + excluded_fields = set(ICommand.model_fields) | {"id"} + updated_properties = self.model_dump(exclude=excluded_fields, exclude_none=True) # This 2nd check is here to remove the last term. if self.coeffs or updated_properties == {"coeffs": {}}: # Remove terms which IDs contain a "%" or a "." in their name @@ -203,8 +202,8 @@ def to_dto(self) -> CommandDTO: matrices = ["values"] + [m.value for m in TermMatrices] matrix_service = self.command_context.matrix_service - excluded_fields = frozenset(ICommand.__fields__) - json_command = json.loads(self.json(exclude=excluded_fields, exclude_none=True)) + excluded_fields = set(ICommand.model_fields) + json_command = self.model_dump(mode="json", exclude=excluded_fields, exclude_none=True) for key in json_command: if key in matrices: json_command[key] = matrix_service.get_matrix_id(json_command[key]) diff --git a/antarest/study/storage/variantstudy/model/command/update_comments.py b/antarest/study/storage/variantstudy/model/command/update_comments.py index a74260e7bb..5a3d57a670 100644 --- a/antarest/study/storage/variantstudy/model/command/update_comments.py +++ b/antarest/study/storage/variantstudy/model/command/update_comments.py @@ -28,8 +28,8 @@ class UpdateComments(ICommand): # Overloaded metadata # =================== - command_name = CommandName.UPDATE_COMMENTS - version = 1 + command_name: CommandName = CommandName.UPDATE_COMMENTS + version: int = 1 # Command parameters # ================== diff --git a/antarest/study/storage/variantstudy/model/command/update_config.py b/antarest/study/storage/variantstudy/model/command/update_config.py index fe859a0ea7..067b0ecba1 100644 --- a/antarest/study/storage/variantstudy/model/command/update_config.py +++ b/antarest/study/storage/variantstudy/model/command/update_config.py @@ -44,8 +44,8 @@ class UpdateConfig(ICommand): # Overloaded metadata # =================== - command_name = CommandName.UPDATE_CONFIG - version = 1 + command_name: CommandName = CommandName.UPDATE_CONFIG + version: int = 1 # Command parameters # ================== diff --git a/antarest/study/storage/variantstudy/model/command/update_district.py b/antarest/study/storage/variantstudy/model/command/update_district.py index 4b6f7f2f97..e0d63dfafd 100644 --- a/antarest/study/storage/variantstudy/model/command/update_district.py +++ b/antarest/study/storage/variantstudy/model/command/update_district.py @@ -28,17 +28,17 @@ class UpdateDistrict(ICommand): # Overloaded metadata # =================== - command_name = CommandName.UPDATE_DISTRICT - version = 1 + command_name: CommandName = CommandName.UPDATE_DISTRICT + version: int = 1 # Command parameters # ================== id: str - base_filter: Optional[DistrictBaseFilter] - filter_items: Optional[List[str]] - output: Optional[bool] - comments: Optional[str] + base_filter: Optional[DistrictBaseFilter] = None + filter_items: Optional[List[str]] = None + output: Optional[bool] = None + comments: Optional[str] = None def _apply_config(self, study_data: FileStudyTreeConfig) -> Tuple[CommandOutput, Dict[str, Any]]: base_set = study_data.sets[self.id] diff --git a/antarest/study/storage/variantstudy/model/command/update_playlist.py b/antarest/study/storage/variantstudy/model/command/update_playlist.py index 8841f6d3b5..52f6f70c5c 100644 --- a/antarest/study/storage/variantstudy/model/command/update_playlist.py +++ b/antarest/study/storage/variantstudy/model/command/update_playlist.py @@ -28,8 +28,8 @@ class UpdatePlaylist(ICommand): # Overloaded metadata # =================== - command_name = CommandName.UPDATE_PLAYLIST - version = 1 + command_name: CommandName = CommandName.UPDATE_PLAYLIST + version: int = 1 # Command parameters # ================== diff --git a/antarest/study/storage/variantstudy/model/command/update_raw_file.py b/antarest/study/storage/variantstudy/model/command/update_raw_file.py index 91178ebb1f..1a3414f90b 100644 --- a/antarest/study/storage/variantstudy/model/command/update_raw_file.py +++ b/antarest/study/storage/variantstudy/model/command/update_raw_file.py @@ -29,8 +29,8 @@ class UpdateRawFile(ICommand): # Overloaded metadata # =================== - command_name = CommandName.UPDATE_FILE - version = 1 + command_name: CommandName = CommandName.UPDATE_FILE + version: int = 1 # Command parameters # ================== diff --git a/antarest/study/storage/variantstudy/model/command/update_scenario_builder.py b/antarest/study/storage/variantstudy/model/command/update_scenario_builder.py index e3729cd220..86a127f776 100644 --- a/antarest/study/storage/variantstudy/model/command/update_scenario_builder.py +++ b/antarest/study/storage/variantstudy/model/command/update_scenario_builder.py @@ -13,8 +13,8 @@ import typing as t import numpy as np -from requests.structures import CaseInsensitiveDict +from antarest.core.requests import CaseInsensitiveDict from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfig from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy from antarest.study.storage.variantstudy.model.command.common import CommandName, CommandOutput @@ -45,13 +45,13 @@ class UpdateScenarioBuilder(ICommand): # Overloaded metadata # =================== - command_name = CommandName.UPDATE_SCENARIO_BUILDER - version = 1 + command_name: CommandName = CommandName.UPDATE_SCENARIO_BUILDER + version: int = 1 # Command parameters # ================== - data: t.Dict[str, t.Any] + data: t.Union[t.Dict[str, t.Any], t.Mapping[str, t.Any], t.MutableMapping[str, t.Any]] def _apply(self, study_data: FileStudy) -> CommandOutput: """ diff --git a/antarest/study/storage/variantstudy/model/command_context.py b/antarest/study/storage/variantstudy/model/command_context.py index a3e913355e..5996e63528 100644 --- a/antarest/study/storage/variantstudy/model/command_context.py +++ b/antarest/study/storage/variantstudy/model/command_context.py @@ -24,4 +24,3 @@ class CommandContext(BaseModel): class Config: arbitrary_types_allowed = True - copy_on_model_validation = False diff --git a/antarest/study/storage/variantstudy/model/model.py b/antarest/study/storage/variantstudy/model/model.py index 66add039af..0be3c75353 100644 --- a/antarest/study/storage/variantstudy/model/model.py +++ b/antarest/study/storage/variantstudy/model/model.py @@ -69,7 +69,7 @@ class CommandDTO(BaseModel): version: The version of the command. """ - id: t.Optional[str] + id: t.Optional[str] = None action: str args: t.Union[t.MutableSequence[JSON], JSON] version: int = 1 diff --git a/antarest/study/storage/variantstudy/snapshot_generator.py b/antarest/study/storage/variantstudy/snapshot_generator.py index 6353f723d1..086c6d3952 100644 --- a/antarest/study/storage/variantstudy/snapshot_generator.py +++ b/antarest/study/storage/variantstudy/snapshot_generator.py @@ -133,7 +133,7 @@ def generate_snapshot( else: try: - notifier(results.json()) + notifier(results.model_dump_json()) except Exception as exc: # This exception is ignored, because it is not critical. logger.warning(f"Error while sending notification: {exc}", exc_info=True) @@ -203,7 +203,7 @@ def _read_additional_data(self, file_study: FileStudy) -> StudyAdditionalData: horizon = file_study.tree.get(url=["settings", "generaldata", "general", "horizon"]) author = file_study.tree.get(url=["study", "antares", "author"]) patch = self.patch_service.get_from_filestudy(file_study) - study_additional_data = StudyAdditionalData(horizon=horizon, author=author, patch=patch.json()) + study_additional_data = StudyAdditionalData(horizon=horizon, author=author, patch=patch.model_dump_json()) return study_additional_data def _update_cache(self, file_study: FileStudy) -> None: @@ -211,7 +211,7 @@ def _update_cache(self, file_study: FileStudy) -> None: self.cache.invalidate(f"{CacheConstants.RAW_STUDY}/{file_study.config.study_id}") self.cache.put( f"{CacheConstants.STUDY_FACTORY}/{file_study.config.study_id}", - FileStudyTreeConfigDTO.from_build_config(file_study.config).dict(), + FileStudyTreeConfigDTO.from_build_config(file_study.config).model_dump(), ) diff --git a/antarest/study/storage/variantstudy/variant_study_service.py b/antarest/study/storage/variantstudy/variant_study_service.py index 4bf3534d0d..34241f8552 100644 --- a/antarest/study/storage/variantstudy/variant_study_service.py +++ b/antarest/study/storage/variantstudy/variant_study_service.py @@ -625,7 +625,7 @@ def callback(notifier: TaskUpdateNotifier) -> TaskResult: message=f"{study_id} generated successfully" if generate_result.success else f"{study_id} not generated", - return_value=generate_result.json(), + return_value=generate_result.model_dump_json(), ) metadata.generation_task = self.task_service.add_task( @@ -716,7 +716,7 @@ def notify(command_index: int, command_result: bool, command_message: str) -> No success=command_result, message=command_message, ) - notifier(command_result_obj.json()) + notifier(command_result_obj.model_dump_json()) self.event_bus.push( Event( type=EventType.STUDY_VARIANT_GENERATION_COMMAND_RESULT, diff --git a/antarest/study/web/studies_blueprint.py b/antarest/study/web/studies_blueprint.py index 761e7d6b05..f532ac3051 100644 --- a/antarest/study/web/studies_blueprint.py +++ b/antarest/study/web/studies_blueprint.py @@ -727,7 +727,7 @@ def output_download( extra={"user": current_user.id}, ) params = RequestParameters(user=current_user) - accept = request.headers.get("Accept") + accept = request.headers["Accept"] filetype = ExportFormat.from_dto(accept) content = study_service.download_outputs( diff --git a/antarest/study/web/study_data_blueprint.py b/antarest/study/web/study_data_blueprint.py index 549cfdf221..9b1cca0fc5 100644 --- a/antarest/study/web/study_data_blueprint.py +++ b/antarest/study/web/study_data_blueprint.py @@ -29,7 +29,7 @@ from antarest.matrixstore.matrix_editor import MatrixEditInstruction from antarest.study.business.adequacy_patch_management import AdequacyPatchFormFields from antarest.study.business.advanced_parameters_management import AdvancedParamsFormFields -from antarest.study.business.allocation_management import AllocationFormFields, AllocationMatrix +from antarest.study.business.allocation_management import AllocationField, AllocationFormFields, AllocationMatrix from antarest.study.business.area_management import AreaCreationDTO, AreaInfoDTO, AreaType, LayerInfoDTO, UpdateAreaUi from antarest.study.business.areas.hydro_management import InflowStructure, ManagementOptionsFormFields from antarest.study.business.areas.properties_management import PropertiesFormFields @@ -60,7 +60,12 @@ ConstraintOutput, ConstraintTerm, ) -from antarest.study.business.correlation_management import CorrelationFormFields, CorrelationManager, CorrelationMatrix +from antarest.study.business.correlation_management import ( + AreaCoefficientItem, + CorrelationFormFields, + CorrelationManager, + CorrelationMatrix, +) from antarest.study.business.district_manager import DistrictCreationDTO, DistrictInfoDTO, DistrictUpdateDTO from antarest.study.business.general_management import GeneralFormFields from antarest.study.business.link_management import LinkInfoDTO @@ -122,7 +127,7 @@ def create_study_data_routes(study_service: StudyService, config: Config) -> API "/studies/{uuid}/areas", tags=[APITag.study_data], summary="Get all areas basic info", - response_model=t.Union[t.List[AreaInfoDTO], t.Dict[str, t.Any]], # type: ignore + response_model=t.Union[t.List[AreaInfoDTO], t.Dict[str, t.Any]], ) def get_areas( uuid: str, @@ -503,7 +508,6 @@ def get_inflow_structure( "/studies/{uuid}/areas/{area_id}/hydro/inflow-structure", tags=[APITag.study_data], summary="Update inflow structure values", - response_model=InflowStructure, ) def update_inflow_structure( uuid: str, @@ -518,7 +522,7 @@ def update_inflow_structure( ) params = RequestParameters(user=current_user) study = study_service.check_study_access(uuid, StudyPermissionType.WRITE, params) - return study_service.hydro_manager.update_inflow_structure(study, area_id, values) + study_service.hydro_manager.update_inflow_structure(study, area_id, values) @bp.put( "/studies/{uuid}/matrix", @@ -1144,7 +1148,7 @@ def get_binding_constraint_list( "/studies/{uuid}/bindingconstraints/{binding_constraint_id}", tags=[APITag.study_data], summary="Get binding constraint", - response_model=ConstraintOutput, # type: ignore + response_model=ConstraintOutput, # TODO: redundant ? ) def get_binding_constraint( uuid: str, @@ -1532,8 +1536,8 @@ def set_allocation_form_fields( ..., example=AllocationFormFields( allocation=[ - {"areaId": "EAST", "coefficient": 1}, - {"areaId": "NORTH", "coefficient": 0.20}, + AllocationField.model_validate({"areaId": "EAST", "coefficient": 1}), + AllocationField.model_validate({"areaId": "NORTH", "coefficient": 0.20}), ] ), ), @@ -1565,8 +1569,8 @@ def set_allocation_form_fields( def get_correlation_matrix( uuid: str, columns: t.Optional[str] = Query( - None, - examples={ + default=None, + openapi_examples={ "all areas": { "description": "get the correlation matrix for all areas (by default)", "value": "", @@ -1698,8 +1702,8 @@ def set_correlation_form_fields( ..., example=CorrelationFormFields( correlation=[ - {"areaId": "east", "coefficient": 80}, - {"areaId": "north", "coefficient": 20}, + AreaCoefficientItem.model_validate({"areaId": "east", "coefficient": 80}), + AreaCoefficientItem.model_validate({"areaId": "north", "coefficient": 20}), ] ), ), diff --git a/antarest/study/web/variant_blueprint.py b/antarest/study/web/variant_blueprint.py index eea310a5fe..1c3c092a78 100644 --- a/antarest/study/web/variant_blueprint.py +++ b/antarest/study/web/variant_blueprint.py @@ -107,12 +107,7 @@ def create_variant( "/studies/{uuid}/variants", tags=[APITag.study_variant_management], summary="Get children variants", - responses={ - 200: { - "description": "The list of children study variant", - "model": List[StudyMetadataDTO], - } - }, + response_model=None, # To cope with recursive models issues ) def get_variants( uuid: str, diff --git a/antarest/study/web/xpansion_studies_blueprint.py b/antarest/study/web/xpansion_studies_blueprint.py index 4044a4b9d4..93b60f01ff 100644 --- a/antarest/study/web/xpansion_studies_blueprint.py +++ b/antarest/study/web/xpansion_studies_blueprint.py @@ -139,7 +139,7 @@ def add_candidate( current_user: JWTUser = Depends(auth.get_current_user), ) -> XpansionCandidateDTO: logger.info( - f"Adding new candidate {xpansion_candidate_dto.dict(by_alias=True)} to study {uuid}", + f"Adding new candidate {xpansion_candidate_dto.model_dump(by_alias=True)} to study {uuid}", extra={"user": current_user.id}, ) params = RequestParameters(user=current_user) diff --git a/antarest/tools/cli.py b/antarest/tools/cli.py index d1b91d522b..85eef22128 100644 --- a/antarest/tools/cli.py +++ b/antarest/tools/cli.py @@ -15,10 +15,11 @@ from typing import Optional import click +from httpx import Client from antarest.study.model import NEW_DEFAULT_STUDY_VERSION from antarest.study.storage.study_upgrader import StudyUpgrader -from antarest.tools.lib import extract_commands, generate_diff, generate_study +from antarest.tools.lib import create_http_client, extract_commands, generate_diff, generate_study @click.group(context_settings={"max_content_width": 120}) @@ -43,6 +44,12 @@ def commands() -> None: type=str, help="Authentication token if server needs one", ) +@click.option( + "--no-verify", + is_flag=True, + default=False, + help="Disables SSL certificate verification", +) @click.option( "--output", "-o", @@ -82,6 +89,7 @@ def cli_apply_script( output: Optional[str], host: Optional[str], auth_token: Optional[str], + no_verify: bool, version: str, ) -> None: """Apply a variant script onto an AntaresWeb study variant""" @@ -95,7 +103,10 @@ def cli_apply_script( print("--study_id must be set") exit(1) - res = generate_study(Path(input), study_id, output, host, auth_token, version) + client = None + if host: + client = create_http_client(verify=not no_verify, auth_token=auth_token) + res = generate_study(Path(input), study_id, output, host, client, version) print(res) diff --git a/antarest/tools/lib.py b/antarest/tools/lib.py index b930fd87f4..6bfd3df997 100644 --- a/antarest/tools/lib.py +++ b/antarest/tools/lib.py @@ -20,17 +20,7 @@ from zipfile import ZipFile import numpy as np - -try: - # The HTTPX equivalent of `requests.Session` is `httpx.Client`. - import httpx as requests - from httpx import Client as Session -except ImportError: - # noinspection PyUnresolvedReferences, PyPackageRequirements - import requests - - # noinspection PyUnresolvedReferences,PyPackageRequirements - from requests import Session +from httpx import Client from antarest.core.cache.business.local_chache import LocalCache from antarest.core.config import CacheConfig @@ -61,34 +51,28 @@ def apply_commands(self, commands: List[CommandDTO], matrices_dir: Path) -> Gene raise NotImplementedError() +def set_auth_token(client: Client, auth_token: Optional[str] = None) -> Client: + if auth_token is not None: + client.headers.update({"Authorization": f"Bearer {auth_token}"}) + return client + + +def create_http_client(verify: bool, auth_token: Optional[str] = None) -> Client: + client = Client(verify=verify) + set_auth_token(client, auth_token) + return client + + class RemoteVariantGenerator(IVariantGenerator): def __init__( self, study_id: str, - host: Optional[str] = None, - token: Optional[str] = None, - session: Optional[Session] = None, + host: str, + session: Client, ): self.study_id = study_id - - # todo: find the correct way to handle certificates. - # By default, Requests/Httpx verifies SSL certificates for HTTPS requests. - # When verify is set to `False`, requests will accept any TLS certificate presented - # by the server,and will ignore hostname mismatches and/or expired certificates, - # which will make your application vulnerable to man-in-the-middle (MitM) attacks. - # Setting verify to False may be useful during local development or testing. - if Session.__name__ == "Client": - # noinspection PyArgumentList - self.session = session or Session(verify=False) - else: - self.session = session or Session() - self.session.verify = False - + self.session = session self.host = host - if session is None and host is None: - raise ValueError("Missing either session or host") - if token is not None: - self.session.headers.update({"Authorization": f"Bearer {token}"}) def apply_commands( self, @@ -114,7 +98,7 @@ def apply_commands( res = self.session.post( self.build_url(f"/v1/studies/{self.study_id}/commands"), - json=[command.dict() for command in commands], + json=[command.model_dump() for command in commands], ) res.raise_for_status() stopwatch.log_elapsed(lambda x: logger.info(f"Command upload done in {x}s")) @@ -224,7 +208,7 @@ def extract_commands(study_path: Path, commands_output_dir: Path) -> None: (commands_output_dir / COMMAND_FILE).write_text( json.dumps( - [command.dict(exclude={"id"}) for command in command_list], + [command.model_dump(exclude={"id"}) for command in command_list], indent=2, ) ) @@ -316,7 +300,7 @@ def generate_diff( (output_dir / COMMAND_FILE).write_text( json.dumps( - [command.to_dto().dict(exclude={"id"}) for command in diff_commands], + [command.to_dto().model_dump(exclude={"id"}) for command in diff_commands], indent=2, ) ) @@ -348,7 +332,7 @@ def generate_study( study_id: Optional[str], output: Optional[str] = None, host: Optional[str] = None, - token: Optional[str] = None, + session: Optional[Client] = None, study_version: str = NEW_DEFAULT_STUDY_VERSION, ) -> GenerationResultInfoDTO: """ @@ -362,7 +346,7 @@ def generate_study( If `study_id` and `host` are not provided, this must be specified. host: The URL of the Antares server to use for generating the new study. If `study_id` is not provided, this is ignored. - token: The authentication token to use when connecting to the Antares server. + session: The session to use when connecting to the Antares server. If `host` is not provided, this is ignored. study_version: The target version of the generated study. @@ -370,8 +354,9 @@ def generate_study( GenerationResultInfoDTO: A data transfer object containing information about the generation result. """ generator: Union[RemoteVariantGenerator, LocalVariantGenerator] - if study_id is not None and host is not None: - generator = RemoteVariantGenerator(study_id, host, token) + + if study_id is not None and host is not None and session is not None: + generator = RemoteVariantGenerator(study_id, host, session) elif output is None: raise TypeError("'output' must be set") else: diff --git a/antarest/utils.py b/antarest/utils.py index eb2e5dc479..1f7f4b7594 100644 --- a/antarest/utils.py +++ b/antarest/utils.py @@ -16,17 +16,15 @@ from typing import Any, Dict, Mapping, Optional, Tuple import redis -import sqlalchemy.ext.baked # type: ignore -import uvicorn # type: ignore -from fastapi import FastAPI -from fastapi_jwt_auth import AuthJWT # type: ignore +from fastapi import APIRouter, FastAPI from ratelimit import RateLimitMiddleware # type: ignore from ratelimit.backends.redis import RedisBackend # type: ignore from ratelimit.backends.simple import MemoryBackend # type: ignore -from sqlalchemy import create_engine +from sqlalchemy import create_engine # type: ignore from sqlalchemy.engine.base import Engine # type: ignore from sqlalchemy.pool import NullPool # type: ignore +from antarest.core.application import AppBuildContext from antarest.core.cache.main import build_cache from antarest.core.config import Config from antarest.core.filetransfer.main import build_filetransfer_service @@ -112,24 +110,24 @@ def init_db_engine( return engine -def create_event_bus(application: Optional[FastAPI], config: Config) -> Tuple[IEventBus, Optional[redis.Redis]]: # type: ignore +def create_event_bus(app_ctxt: Optional[AppBuildContext], config: Config) -> Tuple[IEventBus, Optional[redis.Redis]]: # type: ignore redis_client = new_redis_instance(config.redis) if config.redis is not None else None return ( - build_eventbus(application, config, True, redis_client), + build_eventbus(app_ctxt, config, True, redis_client), redis_client, ) def create_core_services( - application: Optional[FastAPI], config: Config + app_ctxt: Optional[AppBuildContext], config: Config ) -> Tuple[ICache, IEventBus, ITaskService, FileTransferManager, LoginService, MatrixService, StudyService,]: - event_bus, redis_client = create_event_bus(application, config) + event_bus, redis_client = create_event_bus(app_ctxt, config) cache = build_cache(config=config, redis_client=redis_client) - filetransfer_service = build_filetransfer_service(application, event_bus, config) - task_service = build_taskjob_manager(application, config, event_bus) - login_service = build_login(application, config, event_bus=event_bus) + filetransfer_service = build_filetransfer_service(app_ctxt, event_bus, config) + task_service = build_taskjob_manager(app_ctxt, config, event_bus) + login_service = build_login(app_ctxt, config, event_bus=event_bus) matrix_service = build_matrix_service( - application, + app_ctxt, config=config, file_transfer_manager=filetransfer_service, task_service=task_service, @@ -137,7 +135,7 @@ def create_core_services( service=None, ) study_service = build_study_service( - application, + app_ctxt, config, matrix_service=matrix_service, cache=cache, @@ -159,7 +157,7 @@ def create_core_services( def create_watcher( config: Config, - application: Optional[FastAPI], + app_ctxt: Optional[AppBuildContext], study_service: Optional[StudyService] = None, ) -> Watcher: if study_service: @@ -169,22 +167,22 @@ def create_watcher( task_service=study_service.task_service, ) else: - _, _, task_service, _, _, _, study_service = create_core_services(application, config) + _, _, task_service, _, _, _, study_service = create_core_services(app_ctxt, config) watcher = Watcher( config=config, study_service=study_service, task_service=task_service, ) - if application: - application.include_router(create_watcher_routes(watcher=watcher, config=config)) + if app_ctxt: + app_ctxt.api_root.include_router(create_watcher_routes(watcher=watcher, config=config)) return watcher def create_matrix_gc( config: Config, - application: Optional[FastAPI], + app_ctxt: Optional[AppBuildContext], study_service: Optional[StudyService] = None, matrix_service: Optional[MatrixService] = None, ) -> MatrixGarbageCollector: @@ -195,7 +193,7 @@ def create_matrix_gc( matrix_service=matrix_service, ) else: - _, _, _, _, _, matrix_service, study_service = create_core_services(application, config) + _, _, _, _, _, matrix_service, study_service = create_core_services(app_ctxt, config) return MatrixGarbageCollector( config=config, study_service=study_service, @@ -224,7 +222,7 @@ def create_simulator_worker( return SimulatorWorker(event_bus, matrix_service, config) -def create_services(config: Config, application: Optional[FastAPI], create_all: bool = False) -> Dict[str, Any]: +def create_services(config: Config, app_ctxt: Optional[AppBuildContext], create_all: bool = False) -> Dict[str, Any]: services: Dict[str, Any] = {} ( @@ -235,12 +233,12 @@ def create_services(config: Config, application: Optional[FastAPI], create_all: user_service, matrix_service, study_service, - ) = create_core_services(application, config) + ) = create_core_services(app_ctxt, config) - maintenance_service = build_maintenance_manager(application, config=config, cache=cache, event_bus=event_bus) + maintenance_service = build_maintenance_manager(app_ctxt, config=config, cache=cache, event_bus=event_bus) launcher = build_launcher( - application, + app_ctxt, config, study_service=study_service, event_bus=event_bus, @@ -249,13 +247,13 @@ def create_services(config: Config, application: Optional[FastAPI], create_all: cache=cache, ) - watcher = create_watcher(config=config, application=application, study_service=study_service) + watcher = create_watcher(config=config, app_ctxt=app_ctxt, study_service=study_service) services["watcher"] = watcher if config.server.services and Module.MATRIX_GC.value in config.server.services or create_all: matrix_garbage_collector = create_matrix_gc( config=config, - application=application, + app_ctxt=app_ctxt, study_service=study_service, matrix_service=matrix_service, ) diff --git a/antarest/worker/archive_worker.py b/antarest/worker/archive_worker.py index f0adbf481c..4fbc6a0631 100644 --- a/antarest/worker/archive_worker.py +++ b/antarest/worker/archive_worker.py @@ -58,10 +58,10 @@ def __init__( ) def _execute_task(self, task_info: WorkerTaskCommand) -> TaskResult: - logger.info(f"Executing task {task_info.json()}") + logger.info(f"Executing task {task_info.model_dump_json()}") try: # sourcery skip: extract-method - archive_args = ArchiveTaskArgs.parse_obj(task_info.task_args) + archive_args = ArchiveTaskArgs.model_validate(task_info.task_args) dest = self.translate_path(Path(archive_args.dest)) src = self.translate_path(Path(archive_args.src)) stopwatch = StopWatch() @@ -75,7 +75,7 @@ def _execute_task(self, task_info: WorkerTaskCommand) -> TaskResult: return TaskResult(success=True, message="") except Exception as e: logger.warning( - f"Task {task_info.json()} failed", + f"Task {task_info.model_dump_json()} failed", exc_info=e, ) return TaskResult(success=False, message=str(e)) diff --git a/antarest/worker/simulator_worker.py b/antarest/worker/simulator_worker.py index 7397e0ae4f..583f340e7a 100644 --- a/antarest/worker/simulator_worker.py +++ b/antarest/worker/simulator_worker.py @@ -81,7 +81,7 @@ def execute_kirshoff_constraint_generation_task(self, task_info: WorkerTaskComma def execute_timeseries_generation_task(self, task_info: WorkerTaskCommand) -> TaskResult: result = TaskResult(success=True, message="", return_value="") - task = GenerateTimeseriesTaskArgs.parse_obj(task_info.task_args) + task = GenerateTimeseriesTaskArgs.model_validate(task_info.task_args) binary = ( self.binaries[task.study_version] if task.study_version in self.binaries diff --git a/antarest/worker/worker.py b/antarest/worker/worker.py index 922f10e0b2..7dc2534764 100644 --- a/antarest/worker/worker.py +++ b/antarest/worker/worker.py @@ -112,8 +112,8 @@ def _loop(self) -> None: time.sleep(1) async def _listen_for_tasks(self, event: Event) -> None: - logger.info(f"Accepting new task {event.json()}") - task_info = WorkerTaskCommand.parse_obj(event.payload) + logger.info(f"Accepting new task {event.model_dump_json()}") + task_info = WorkerTaskCommand.model_validate(event.payload) self.event_bus.push( Event( type=EventType.WORKER_TASK_STARTED, @@ -131,7 +131,7 @@ def _safe_execute_task(self, task_info: WorkerTaskCommand) -> TaskResult: return self._execute_task(task_info) except Exception as e: logger.error( - f"Unexpected error occurred when executing task {task_info.json()}", + f"Unexpected error occurred when executing task {task_info.model_dump_json()}", exc_info=e, ) return TaskResult(success=False, message=repr(e)) diff --git a/pyproject.toml b/pyproject.toml index 1d01065859..d8210f8981 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,8 +38,14 @@ where = ["."] include = ["antarest*"] [tool.mypy] +exclude = "antarest/fastapi_jwt_auth/*" strict = true -files = "antarest/**/*.py" +files = "antarest" +plugins = "pydantic.mypy" + +[[tool.mypy.overrides]] +module = ["antarest/fastapi_jwt_auth.*"] +follow_imports = "skip" [[tool.mypy.overrides]] module = [ @@ -71,7 +77,7 @@ line-length = 120 exclude = "(antares-?launcher/*|alembic/*)" [tool.coverage.run] -omit = ["antarest/tools/cli.py", "antarest/tools/admin.py"] +omit = ["antarest/tools/cli.py", "antarest/tools/admin.py", "antarest/fastapi_jwt_auth/*.py"] relative_files = true # avoids absolute path issues in CI [tool.isort] diff --git a/requirements-dev.txt b/requirements-dev.txt index 5ea6126c6c..973973dc76 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -2,7 +2,7 @@ # Version of Black should match the versions set in `.github/workflows/main.yml` black~=23.7.0 isort~=5.12.0 -mypy~=1.4.1 +mypy~=1.11.1 pyinstaller==5.6.2 pyinstaller-hooks-contrib==2024.6 diff --git a/requirements-test.txt b/requirements-test.txt index 10a360d7f4..e72650560c 100644 --- a/requirements-test.txt +++ b/requirements-test.txt @@ -7,4 +7,5 @@ pytest-mock~=3.14.0 # In this version DataFrame conversion to Excel is done using 'xlsxwriter' library. # But Excel files reading is done using 'openpyxl' library, during testing only. -openpyxl~=3.1.2 \ No newline at end of file +openpyxl~=3.1.2 +jinja2~=3.1.3 \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index eb42c65793..4659b879ba 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,17 +2,34 @@ Antares-Launcher~=1.3.2 antares-study-version~=1.0.3 antares-timeseries-generation~=0.1.5 +# When you install `fastapi[all]`, you get FastAPI along with additional dependencies: +# - `uvicorn`: A fast ASGI server commonly used to run FastAPI applications. +# - `pydantic`: A data validation library integrated into FastAPI for defining data models and validating input and output of endpoints. +# - `httpx`: A modern HTTP client library for making HTTP requests from your FastAPI application. +# - `starlette`: The underlying ASGI framework used by FastAPI for handling HTTP requests. +# - `uvloop` (on certain systems): A fast event loop based on uvicorn that improves FastAPI application performance. +# - `python-multipart`: A library for handling multipart data in HTTP requests, commonly used for processing file uploads. +# - `watchdog`: A file watching library used by FastAPI's automatic reloading tool to update the application in real-time when files are modified. +# - `email-validator`: A library for email address validation, used for validating email fields in Pydantic models. +# - `python-dotenv`: A library for managing environment variables, commonly used to load application configurations from `.env` files. + +# We prefer to add only the specific libraries we need for our project +# and **manage their versions** for better control and to avoid unnecessary dependencies. +fastapi~=0.110.3 +uvicorn[standard]~=0.30.6 +pydantic~=2.8.2 +httpx~=0.27.0 +python-multipart~=0.0.9 + alembic~=1.7.5 asgi-ratelimit[redis]==0.7.0 bcrypt~=3.2.0 click~=8.0.3 contextvars~=2.4 -fastapi-jwt-auth~=0.5.0 -fastapi[all]~=0.73.0 filelock~=3.4.2 gunicorn~=20.1.0 -Jinja2~=3.0.3 jsonref~=0.2 +PyJWT~=2.9.0 MarkupSafe~=2.0.1 numpy~=1.22.1 pandas~=1.4.0 @@ -20,18 +37,13 @@ paramiko~=2.12.0 plyer~=2.0.0 psycopg2-binary==2.9.4 py7zr~=0.20.6 -pydantic~=1.9.0 PyQt5~=5.15.6 python-json-logger~=2.0.7 -python-multipart~=0.0.5 PyYAML~=5.4.1; python_version <= '3.9' PyYAML~=5.3.1; python_version > '3.9' redis~=4.1.2 -requests~=2.27.1 SQLAlchemy~=1.4.46 -starlette~=0.17.1 tables==3.6.1; python_version <= '3.8' tables==3.9.2; python_version > '3.8' -typing_extensions~=4.7.1 -uvicorn[standard]~=0.15.0 -xlsxwriter~=3.2.0 +typing_extensions~=4.12.2 +xlsxwriter~=3.2.0 \ No newline at end of file diff --git a/resources/application.yaml b/resources/application.yaml index 6fbdb31f9f..c962d09015 100644 --- a/resources/application.yaml +++ b/resources/application.yaml @@ -26,7 +26,19 @@ launcher: 700: path/to/700 enable_nb_cores_detection: true -root_path: "api" +# See https://fastapi.tiangolo.com/advanced/behind-a-proxy/ +# root path is used when the API is served behind a proxy which +# adds a prefix for clients. +# It does NOT add any prefix to the URLs which fastapi serve. + +# root_path: "api" + + +# Uncomment to serve the API under /api prefix +# (used in standalone mode to emulate the effect of proxy servers +# used in production deployments). + +# api_prefix: "/api" server: worker_threadpool_size: 12 @@ -36,4 +48,7 @@ server: logging: level: INFO - logfile: ./tmp/antarest.log \ No newline at end of file + logfile: ./tmp/antarest.log + +# True to get sqlalchemy logs +debug: False diff --git a/resources/deploy/config.prod.yaml b/resources/deploy/config.prod.yaml index cf9087a2af..9d8d78d56e 100644 --- a/resources/deploy/config.prod.yaml +++ b/resources/deploy/config.prod.yaml @@ -66,6 +66,10 @@ launcher: debug: false +# See https://fastapi.tiangolo.com/advanced/behind-a-proxy/ +# root path is used when the API is served behind a proxy which +# adds a prefix for clients. +# It does NOT add any prefix to the URLs which fastapi serve. root_path: "api" #tasks: diff --git a/resources/deploy/config.yaml b/resources/deploy/config.yaml index 6f3fdf595f..08831198ce 100644 --- a/resources/deploy/config.yaml +++ b/resources/deploy/config.yaml @@ -46,7 +46,8 @@ launcher: debug: false -root_path: "api" +# Serve the API at /api +api_prefix: "/api" server: worker_threadpool_size: 12 diff --git a/resources/templates/.placeholder b/resources/templates/.placeholder deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/scripts/build-front.sh b/scripts/build-front.sh index 87c2db6a50..15c2e0e60f 100755 --- a/scripts/build-front.sh +++ b/scripts/build-front.sh @@ -11,4 +11,3 @@ npm run build -- --mode=desktop cd .. rm -fr resources/webapp cp -r ./webapp/dist/ resources/webapp -cp ./webapp/dist/index.html resources/templates/ diff --git a/sonar-project.properties b/sonar-project.properties index 07d21a096d..a42bdb7b79 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -7,4 +7,4 @@ sonar.python.coverage.reportPaths=coverage.xml sonar.python.version=3.8 sonar.javascript.lcov.reportPaths=webapp/coverage/lcov.info sonar.projectVersion=2.17.5 -sonar.coverage.exclusions=antarest/gui.py,antarest/main.py,antarest/singleton_services.py,antarest/worker/archive_worker_service.py,webapp/**/* \ No newline at end of file +sonar.coverage.exclusions=antarest/gui.py,antarest/main.py,antarest/singleton_services.py,antarest/worker/archive_worker_service.py,webapp/**/*,,antarest/fastapi_jwt_auth/** \ No newline at end of file diff --git a/tests/cache/test_local_cache.py b/tests/cache/test_local_cache.py index feb066eef4..8f8643d2f4 100644 --- a/tests/cache/test_local_cache.py +++ b/tests/cache/test_local_cache.py @@ -41,11 +41,11 @@ def test_lifecycle(): id = "some_id" duration = 3600 timeout = int(time.time()) + duration - cache_element = LocalCacheElement(duration=duration, data=config.dict(), timeout=timeout) + cache_element = LocalCacheElement(duration=duration, data=config.model_dump(), timeout=timeout) # PUT - cache.put(id=id, data=config.dict(), duration=duration) + cache.put(id=id, data=config.model_dump(), duration=duration) assert cache.cache[id] == cache_element # GET - assert cache.get(id=id) == config.dict() + assert cache.get(id=id) == config.model_dump() diff --git a/tests/cache/test_redis_cache.py b/tests/cache/test_redis_cache.py index c5e4e0b547..211de6c689 100644 --- a/tests/cache/test_redis_cache.py +++ b/tests/cache/test_redis_cache.py @@ -40,7 +40,7 @@ def test_lifecycle(): id = "some_id" redis_key = f"cache:{id}" duration = 3600 - cache_element = RedisCacheElement(duration=duration, data=config.dict()).json() + cache_element = RedisCacheElement(duration=duration, data=config.model_dump()).model_dump_json() # GET redis_client.get.return_value = cache_element @@ -51,7 +51,7 @@ def test_lifecycle(): # PUT duration = 7200 - cache_element = RedisCacheElement(duration=duration, data=config.dict()).json() - cache.put(id=id, data=config.dict(), duration=duration) + cache_element = RedisCacheElement(duration=duration, data=config.model_dump()).model_dump_json() + cache.put(id=id, data=config.model_dump(), duration=duration) redis_client.set.assert_called_once_with(redis_key, cache_element) redis_client.expire.assert_called_with(redis_key, duration) diff --git a/tests/core/test_tasks.py b/tests/core/test_tasks.py index 958a3946f6..89bc2ddfc2 100644 --- a/tests/core/test_tasks.py +++ b/tests/core/test_tasks.py @@ -119,7 +119,7 @@ def test_service(core_config: Config, event_bus: IEventBus) -> None: "status": TaskStatus.FAILED, "type": None, } - assert res.dict() == expected + assert res.model_dump() == expected # Test Case: add a task that fails and wait for it # ================================================ diff --git a/tests/eventbus/test_redis_event_bus.py b/tests/eventbus/test_redis_event_bus.py index ac130f1d81..37f69e1fad 100644 --- a/tests/eventbus/test_redis_event_bus.py +++ b/tests/eventbus/test_redis_event_bus.py @@ -29,7 +29,7 @@ def test_lifecycle(): payload="foo", permissions=PermissionInfo(public_mode=PublicMode.READ), ) - serialized = event.json() + serialized = event.model_dump_json() pubsub_mock.get_message.return_value = {"data": serialized} eventbus.push_event(event) redis_client.publish.assert_called_once_with("events", serialized) diff --git a/tests/eventbus/test_websocket_manager.py b/tests/eventbus/test_websocket_manager.py index defff4e774..94500de322 100644 --- a/tests/eventbus/test_websocket_manager.py +++ b/tests/eventbus/test_websocket_manager.py @@ -37,7 +37,7 @@ async def test_subscriptions(self): await ws_manager.connect(mock_connection, user) assert len(ws_manager.active_connections) == 1 - ws_manager.process_message(subscribe_message.json(), mock_connection) + ws_manager.process_message(subscribe_message.model_dump_json(), mock_connection) connections = ws_manager.active_connections[0] assert len(connections.channel_subscriptions) == 1 assert connections.channel_subscriptions[0] == "foo" @@ -51,7 +51,7 @@ async def test_subscriptions(self): mock_connection.send_text.assert_has_calls([call("msg1"), call("msg2")]) - ws_manager.process_message(unsubscribe_message.json(), mock_connection) + ws_manager.process_message(unsubscribe_message.model_dump_json(), mock_connection) assert len(connections.channel_subscriptions) == 0 ws_manager.disconnect(mock_connection) diff --git a/tests/integration/filesystem_blueprint/test_model.py b/tests/integration/filesystem_blueprint/test_model.py index 48742b499b..d26bdb02cb 100644 --- a/tests/integration/filesystem_blueprint/test_model.py +++ b/tests/integration/filesystem_blueprint/test_model.py @@ -30,7 +30,7 @@ def test_init(self) -> None: "common": "/path/to/workspaces/common_studies", }, } - dto = FilesystemDTO.parse_obj(example) + dto = FilesystemDTO.model_validate(example) assert dto.name == example["name"] assert dto.mount_dirs["default"] == Path(example["mount_dirs"]["default"]) assert dto.mount_dirs["common"] == Path(example["mount_dirs"]["common"]) @@ -46,7 +46,7 @@ def test_init(self) -> None: "free_bytes": 1e9 - 0.6e9, "message": f"{0.6e9 / 1e9:%} used", } - dto = MountPointDTO.parse_obj(example) + dto = MountPointDTO.model_validate(example) assert dto.name == example["name"] assert dto.path == Path(example["path"]) assert dto.total_bytes == example["total_bytes"] @@ -90,7 +90,7 @@ def test_init(self) -> None: "accessed": "2024-01-11T17:54:09", "message": "OK", } - dto = FileInfoDTO.parse_obj(example) + dto = FileInfoDTO.model_validate(example) assert dto.path == Path(example["path"]) assert dto.file_type == example["file_type"] assert dto.file_count == example["file_count"] diff --git a/tests/integration/launcher_blueprint/test_launcher_local.py b/tests/integration/launcher_blueprint/test_launcher_local.py index c29b1ac7e6..67fc421324 100644 --- a/tests/integration/launcher_blueprint/test_launcher_local.py +++ b/tests/integration/launcher_blueprint/test_launcher_local.py @@ -76,10 +76,8 @@ def test_get_launcher_nb_cores( ) assert res.status_code == http.HTTPStatus.UNPROCESSABLE_ENTITY, res.json() actual = res.json() - assert actual == { - "description": "Unknown solver configuration: 'unknown'", - "exception": "UnknownSolverConfig", - } + assert actual["description"] == "Input should be 'slurm', 'local' or 'default'" + assert actual["exception"] == "RequestValidationError" def test_get_launcher_time_limit( self, @@ -130,10 +128,8 @@ def test_get_launcher_time_limit( ) assert res.status_code == http.HTTPStatus.UNPROCESSABLE_ENTITY, res.json() actual = res.json() - assert actual == { - "description": "Unknown solver configuration: 'unknown'", - "exception": "UnknownSolverConfig", - } + assert actual["description"] == "Input should be 'slurm', 'local' or 'default'" + assert actual["exception"] == "RequestValidationError" def test_jobs_permissions( self, diff --git a/tests/integration/raw_studies_blueprint/test_aggregate_raw_data.py b/tests/integration/raw_studies_blueprint/test_aggregate_raw_data.py index c64e68d7bd..9d9f47e120 100644 --- a/tests/integration/raw_studies_blueprint/test_aggregate_raw_data.py +++ b/tests/integration/raw_studies_blueprint/test_aggregate_raw_data.py @@ -19,14 +19,7 @@ import pytest from starlette.testclient import TestClient -from antarest.study.business.aggregator_management import ( - MCAllAreasQueryFile, - MCAllLinksQueryFile, - MCIndAreasQueryFile, - MCIndLinksQueryFile, -) from antarest.study.storage.df_download import TableExportFormat -from antarest.study.storage.rawstudy.model.filesystem.matrix.matrix import MatrixFrequency from tests.integration.raw_studies_blueprint.assets import ASSETS_DIR # define the requests parameters for the `economy/mc-ind` outputs aggregation @@ -34,8 +27,8 @@ ( { "output_id": "20201014-1425eco-goodbye", - "query_file": MCIndAreasQueryFile.VALUES, - "frequency": MatrixFrequency.HOURLY, + "query_file": "values", + "frequency": "hourly", "mc_years": "", "areas_ids": "", "columns_names": "", @@ -45,8 +38,8 @@ ( { "output_id": "20201014-1425eco-goodbye", - "query_file": MCIndAreasQueryFile.DETAILS, - "frequency": MatrixFrequency.HOURLY, + "query_file": "details", + "frequency": "hourly", "mc_years": "1", "areas_ids": "de,fr,it", "columns_names": "", @@ -56,8 +49,8 @@ ( { "output_id": "20201014-1425eco-goodbye", - "query_file": MCIndAreasQueryFile.VALUES, - "frequency": MatrixFrequency.WEEKLY, + "query_file": "values", + "frequency": "weekly", "mc_years": "1,2", "areas_ids": "", "columns_names": "OP. COST,MRG. PRICE", @@ -67,8 +60,8 @@ ( { "output_id": "20201014-1425eco-goodbye", - "query_file": MCIndAreasQueryFile.VALUES, - "frequency": MatrixFrequency.HOURLY, + "query_file": "values", + "frequency": "hourly", "mc_years": "2", "areas_ids": "es,fr,de", "columns_names": "", @@ -78,8 +71,8 @@ ( { "output_id": "20201014-1425eco-goodbye", - "query_file": MCIndAreasQueryFile.VALUES, - "frequency": MatrixFrequency.ANNUAL, + "query_file": "values", + "frequency": "annual", "mc_years": "", "areas_ids": "", "columns_names": "", @@ -89,8 +82,8 @@ ( { "output_id": "20201014-1425eco-goodbye", - "query_file": MCIndAreasQueryFile.VALUES, - "frequency": MatrixFrequency.HOURLY, + "query_file": "values", + "frequency": "hourly", "columns_names": "COSt,NODu", }, "test-06.result.tsv", @@ -98,8 +91,8 @@ ( { "output_id": "20201014-1425eco-goodbye", - "query_file": MCIndAreasQueryFile.DETAILS, - "frequency": MatrixFrequency.HOURLY, + "query_file": "details", + "frequency": "hourly", "columns_names": "COSt,NODu", }, "test-07.result.tsv", @@ -110,8 +103,8 @@ ( { "output_id": "20201014-1425eco-goodbye", - "query_file": MCIndLinksQueryFile.VALUES, - "frequency": MatrixFrequency.HOURLY, + "query_file": "values", + "frequency": "hourly", "mc_years": "", "columns_names": "", }, @@ -120,8 +113,8 @@ ( { "output_id": "20201014-1425eco-goodbye", - "query_file": MCIndLinksQueryFile.VALUES, - "frequency": MatrixFrequency.HOURLY, + "query_file": "values", + "frequency": "hourly", "mc_years": "1", "columns_names": "", }, @@ -130,8 +123,8 @@ ( { "output_id": "20201014-1425eco-goodbye", - "query_file": MCIndLinksQueryFile.VALUES, - "frequency": MatrixFrequency.HOURLY, + "query_file": "values", + "frequency": "hourly", "mc_years": "1,2", "columns_names": "UCAP LIn.,FLOw qUAD.", }, @@ -140,8 +133,8 @@ ( { "output_id": "20201014-1425eco-goodbye", - "query_file": MCIndLinksQueryFile.VALUES, - "frequency": MatrixFrequency.HOURLY, + "query_file": "values", + "frequency": "hourly", "mc_years": "1", "links_ids": "de - fr", }, @@ -150,8 +143,8 @@ ( { "output_id": "20201014-1425eco-goodbye", - "query_file": MCIndLinksQueryFile.VALUES, - "frequency": MatrixFrequency.HOURLY, + "query_file": "values", + "frequency": "hourly", "columns_names": "MArG. COsT,CONG. PRoB +", }, "test-05.result.tsv", @@ -162,8 +155,8 @@ ( { "output_id": "20201014-1425eco-goodbye", - "query_file": MCIndLinksQueryFile.VALUES, - "frequency": MatrixFrequency.HOURLY, + "query_file": "values", + "frequency": "hourly", "format": "csv", }, "test-01.result.tsv", @@ -171,8 +164,8 @@ ( { "output_id": "20201014-1425eco-goodbye", - "query_file": MCIndLinksQueryFile.VALUES, - "frequency": MatrixFrequency.HOURLY, + "query_file": "values", + "frequency": "hourly", "format": "tsv", }, "test-01.result.tsv", @@ -180,8 +173,8 @@ ( { "output_id": "20201014-1425eco-goodbye", - "query_file": MCIndLinksQueryFile.VALUES, - "frequency": MatrixFrequency.HOURLY, + "query_file": "values", + "frequency": "hourly", "format": "xlsx", }, "test-01.result.tsv", @@ -192,20 +185,20 @@ INCOHERENT_REQUESTS_BODIES__IND = [ { "output_id": "20201014-1425eco-goodbye", - "query_file": MCIndAreasQueryFile.VALUES, - "frequency": MatrixFrequency.HOURLY, + "query_file": "values", + "frequency": "hourly", "mc_years": "123456789", }, { "output_id": "20201014-1425eco-goodbye", - "query_file": MCIndLinksQueryFile.VALUES, - "frequency": MatrixFrequency.HOURLY, + "query_file": "values", + "frequency": "hourly", "columns_names": "fake_col", }, { "output_id": "20201014-1425eco-goodbye", - "query_file": MCIndAreasQueryFile.VALUES, - "frequency": MatrixFrequency.HOURLY, + "query_file": "values", + "frequency": "hourly", "links_ids": "fake_id", }, ] @@ -214,17 +207,17 @@ { "output_id": "20201014-1425eco-goodbye", "query_file": "fake_query_file", - "frequency": MatrixFrequency.HOURLY, + "frequency": "hourly", }, { "output_id": "20201014-1425eco-goodbye", - "query_file": MCIndAreasQueryFile.VALUES, + "query_file": "values", "frequency": "fake_frequency", }, { "output_id": "20201014-1425eco-goodbye", - "query_file": MCIndAreasQueryFile.VALUES, - "frequency": MatrixFrequency.HOURLY, + "query_file": "values", + "frequency": "hourly", "format": "fake_format", }, ] @@ -234,8 +227,8 @@ ( { "output_id": "20201014-1427eco", - "query_file": MCAllAreasQueryFile.VALUES, - "frequency": MatrixFrequency.DAILY, + "query_file": "values", + "frequency": "daily", "areas_ids": "", "columns_names": "", }, @@ -244,8 +237,8 @@ ( { "output_id": "20201014-1427eco", - "query_file": MCAllAreasQueryFile.DETAILS, - "frequency": MatrixFrequency.MONTHLY, + "query_file": "details", + "frequency": "monthly", "areas_ids": "de,fr,it", "columns_names": "", }, @@ -254,8 +247,8 @@ ( { "output_id": "20201014-1427eco", - "query_file": MCAllAreasQueryFile.VALUES, - "frequency": MatrixFrequency.DAILY, + "query_file": "values", + "frequency": "daily", "areas_ids": "", "columns_names": "OP. CoST,MRG. PrICE", }, @@ -264,8 +257,8 @@ ( { "output_id": "20201014-1427eco", - "query_file": MCAllAreasQueryFile.VALUES, - "frequency": MatrixFrequency.DAILY, + "query_file": "values", + "frequency": "daily", "areas_ids": "es,fr,de", "columns_names": "", }, @@ -274,8 +267,8 @@ ( { "output_id": "20201014-1427eco", - "query_file": MCAllAreasQueryFile.VALUES, - "frequency": MatrixFrequency.MONTHLY, + "query_file": "values", + "frequency": "monthly", "areas_ids": "", "columns_names": "", }, @@ -284,8 +277,8 @@ ( { "output_id": "20201014-1427eco", - "query_file": MCAllAreasQueryFile.ID, - "frequency": MatrixFrequency.DAILY, + "query_file": "id", + "frequency": "daily", "areas_ids": "", "columns_names": "", }, @@ -294,8 +287,8 @@ ( { "output_id": "20201014-1427eco", - "query_file": MCAllAreasQueryFile.VALUES, - "frequency": MatrixFrequency.DAILY, + "query_file": "values", + "frequency": "daily", "columns_names": "COsT,NoDU", }, "test-07-all.result.tsv", @@ -303,8 +296,8 @@ ( { "output_id": "20201014-1427eco", - "query_file": MCAllAreasQueryFile.DETAILS, - "frequency": MatrixFrequency.MONTHLY, + "query_file": "details", + "frequency": "monthly", "columns_names": "COsT,NoDU", }, "test-08-all.result.tsv", @@ -315,8 +308,8 @@ ( { "output_id": "20241807-1540eco-extra-outputs", - "query_file": MCAllLinksQueryFile.VALUES, - "frequency": MatrixFrequency.DAILY, + "query_file": "values", + "frequency": "daily", "columns_names": "", }, "test-01-all.result.tsv", @@ -324,8 +317,8 @@ ( { "output_id": "20241807-1540eco-extra-outputs", - "query_file": MCAllLinksQueryFile.VALUES, - "frequency": MatrixFrequency.MONTHLY, + "query_file": "values", + "frequency": "monthly", "columns_names": "", }, "test-02-all.result.tsv", @@ -333,8 +326,8 @@ ( { "output_id": "20241807-1540eco-extra-outputs", - "query_file": MCAllLinksQueryFile.VALUES, - "frequency": MatrixFrequency.DAILY, + "query_file": "values", + "frequency": "daily", "columns_names": "", }, "test-03-all.result.tsv", @@ -342,8 +335,8 @@ ( { "output_id": "20241807-1540eco-extra-outputs", - "query_file": MCAllLinksQueryFile.VALUES, - "frequency": MatrixFrequency.MONTHLY, + "query_file": "values", + "frequency": "monthly", "links_ids": "de - fr", }, "test-04-all.result.tsv", @@ -351,8 +344,8 @@ ( { "output_id": "20241807-1540eco-extra-outputs", - "query_file": MCAllLinksQueryFile.ID, - "frequency": MatrixFrequency.DAILY, + "query_file": "id", + "frequency": "daily", "links_ids": "", }, "test-05-all.result.tsv", @@ -360,8 +353,8 @@ ( { "output_id": "20241807-1540eco-extra-outputs", - "query_file": MCAllLinksQueryFile.VALUES, - "frequency": MatrixFrequency.DAILY, + "query_file": "values", + "frequency": "daily", "columns_names": "MARG. COsT,CONG. ProB +", }, "test-06-all.result.tsv", @@ -372,8 +365,8 @@ ( { "output_id": "20241807-1540eco-extra-outputs", - "query_file": MCAllLinksQueryFile.VALUES, - "frequency": MatrixFrequency.DAILY, + "query_file": "values", + "frequency": "daily", "format": "csv", }, "test-01-all.result.tsv", @@ -381,8 +374,8 @@ ( { "output_id": "20241807-1540eco-extra-outputs", - "query_file": MCAllLinksQueryFile.VALUES, - "frequency": MatrixFrequency.DAILY, + "query_file": "values", + "frequency": "daily", "format": "tsv", }, "test-01-all.result.tsv", @@ -390,8 +383,8 @@ ( { "output_id": "20241807-1540eco-extra-outputs", - "query_file": MCAllLinksQueryFile.VALUES, - "frequency": MatrixFrequency.DAILY, + "query_file": "values", + "frequency": "daily", "format": "xlsx", }, "test-01-all.result.tsv", @@ -402,19 +395,19 @@ INCOHERENT_REQUESTS_BODIES__ALL = [ { "output_id": "20201014-1427eco", - "query_file": MCAllAreasQueryFile.VALUES, - "frequency": MatrixFrequency.DAILY, + "query_file": "values", + "frequency": "daily", }, { "output_id": "20201014-1427eco", - "query_file": MCAllLinksQueryFile.VALUES, - "frequency": MatrixFrequency.DAILY, + "query_file": "values", + "frequency": "daily", "columns_names": "fake_col", }, { "output_id": "20201014-1427eco", - "query_file": MCAllAreasQueryFile.VALUES, - "frequency": MatrixFrequency.MONTHLY, + "query_file": "values", + "frequency": "monthly", "links_ids": "fake_id", }, ] @@ -423,17 +416,17 @@ { "output_id": "20201014-1427eco", "query_file": "fake_query_file", - "frequency": MatrixFrequency.MONTHLY, + "frequency": "monthly", }, { "output_id": "20201014-1427eco", - "query_file": MCAllAreasQueryFile.VALUES, + "query_file": "values", "frequency": "fake_frequency", }, { "output_id": "20201014-1427eco", - "query_file": MCAllAreasQueryFile.VALUES, - "frequency": MatrixFrequency.DAILY, + "query_file": "values", + "frequency": "daily", "format": "fake_format", }, ] @@ -574,8 +567,8 @@ def test_aggregation_with_wrong_output(self, client: TestClient, user_access_tok res = client.get( f"/v1/studies/{internal_study_id}/areas/aggregate/mc-ind/unknown_id", params={ - "query_file": MCIndAreasQueryFile.VALUES, - "frequency": MatrixFrequency.HOURLY, + "query_file": "values", + "frequency": "hourly", }, ) assert res.status_code == 404, res.json() @@ -586,8 +579,8 @@ def test_aggregation_with_wrong_output(self, client: TestClient, user_access_tok res = client.get( f"/v1/studies/{internal_study_id}/links/aggregate/mc-ind/unknown_id", params={ - "query_file": MCIndLinksQueryFile.VALUES, - "frequency": MatrixFrequency.HOURLY, + "query_file": "values", + "frequency": "hourly", }, ) assert res.status_code == 404, res.json() @@ -604,8 +597,8 @@ def test_empty_columns(self, client: TestClient, user_access_token: str, interna res = client.get( f"/v1/studies/{internal_study_id}/areas/aggregate/mc-ind/20201014-1425eco-goodbye", params={ - "query_file": MCIndAreasQueryFile.DETAILS, - "frequency": MatrixFrequency.HOURLY, + "query_file": "details", + "frequency": "hourly", "columns_names": "fake_col", }, ) @@ -617,8 +610,8 @@ def test_empty_columns(self, client: TestClient, user_access_token: str, interna res = client.get( f"/v1/studies/{internal_study_id}/links/aggregate/mc-ind/20201014-1425eco-goodbye", params={ - "query_file": MCIndLinksQueryFile.VALUES, - "frequency": MatrixFrequency.HOURLY, + "query_file": "values", + "frequency": "hourly", "columns_names": "fake_col", }, ) @@ -640,7 +633,7 @@ def test_non_existing_folder( shutil.rmtree(mc_ind_folder) res = client.get( f"/v1/studies/{internal_study_id}/areas/aggregate/mc-ind/20201014-1425eco-goodbye", - params={"query_file": MCIndAreasQueryFile.VALUES, "frequency": MatrixFrequency.HOURLY}, + params={"query_file": "values", "frequency": "hourly"}, ) assert res.status_code == 404, res.json() assert "economy/mc-ind" in res.json()["description"] @@ -782,8 +775,8 @@ def test_aggregation_with_wrong_output(self, client: TestClient, user_access_tok res = client.get( f"/v1/studies/{internal_study_id}/areas/aggregate/mc-all/unknown_id", params={ - "query_file": MCIndAreasQueryFile.VALUES, - "frequency": MatrixFrequency.HOURLY, + "query_file": "values", + "frequency": "hourly", }, ) assert res.status_code == 404, res.json() @@ -794,8 +787,8 @@ def test_aggregation_with_wrong_output(self, client: TestClient, user_access_tok res = client.get( f"/v1/studies/{internal_study_id}/links/aggregate/mc-all/unknown_id", params={ - "query_file": MCIndLinksQueryFile.VALUES, - "frequency": MatrixFrequency.HOURLY, + "query_file": "values", + "frequency": "hourly", }, ) assert res.status_code == 404, res.json() @@ -813,8 +806,8 @@ def test_empty_columns(self, client: TestClient, user_access_token: str, interna res = client.get( f"/v1/studies/{internal_study_id}/areas/aggregate/mc-all/20201014-1427eco", params={ - "query_file": MCAllAreasQueryFile.DETAILS, - "frequency": MatrixFrequency.MONTHLY, + "query_file": "details", + "frequency": "monthly", "columns_names": "fake_col", }, ) @@ -826,8 +819,8 @@ def test_empty_columns(self, client: TestClient, user_access_token: str, interna res = client.get( f"/v1/studies/{internal_study_id}/links/aggregate/mc-all/20241807-1540eco-extra-outputs", params={ - "query_file": MCAllLinksQueryFile.VALUES, - "frequency": MatrixFrequency.DAILY, + "query_file": "values", + "frequency": "daily", "columns_names": "fake_col", }, ) @@ -847,7 +840,7 @@ def test_non_existing_folder( shutil.rmtree(mc_all_path) res = client.get( f"/v1/studies/{internal_study_id}/links/aggregate/mc-all/20241807-1540eco-extra-outputs", - params={"query_file": MCAllLinksQueryFile.VALUES, "frequency": MatrixFrequency.DAILY}, + params={"query_file": "values", "frequency": "daily"}, ) assert res.status_code == 404, res.json() assert "economy/mc-all" in res.json()["description"] diff --git a/tests/integration/raw_studies_blueprint/test_download_matrices.py b/tests/integration/raw_studies_blueprint/test_download_matrices.py index 0e24c4d164..2228a71388 100644 --- a/tests/integration/raw_studies_blueprint/test_download_matrices.py +++ b/tests/integration/raw_studies_blueprint/test_download_matrices.py @@ -359,7 +359,7 @@ def test_download_matrices(self, client: TestClient, user_access_token: str, int for export_format in ["tsv", "xlsx"]: res = client.get( f"/v1/studies/{study_860_id}/raw/download", - params={"path": "input/hydro/series/de/mingen", "format": {export_format}}, + params={"path": "input/hydro/series/de/mingen", "format": export_format}, headers=user_headers, ) assert res.status_code == 200 diff --git a/tests/integration/studies_blueprint/assets/test_synthesis/raw_study.synthesis.json b/tests/integration/studies_blueprint/assets/test_synthesis/raw_study.synthesis.json index 80ffa29e32..1e0f3ada52 100644 --- a/tests/integration/studies_blueprint/assets/test_synthesis/raw_study.synthesis.json +++ b/tests/integration/studies_blueprint/assets/test_synthesis/raw_study.synthesis.json @@ -38,22 +38,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 10.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "02_wind_on", @@ -77,22 +62,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 20.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "03_wind_off", @@ -116,22 +86,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 30.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "04_res", @@ -155,22 +110,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 40.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "05_nuclear", @@ -194,22 +134,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 50.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "06_coal", @@ -233,22 +158,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 60.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "07_gas", @@ -272,22 +182,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 70.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "08_non-res", @@ -311,22 +206,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 80.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "09_hydro_pump", @@ -350,22 +230,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 90.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 } ], "renewables": [], @@ -413,22 +278,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 10.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "02_wind_on", @@ -452,22 +302,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 20.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "03_wind_off", @@ -491,22 +326,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 30.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "04_res", @@ -530,22 +350,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 40.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "05_nuclear", @@ -569,22 +374,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 50.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "06_coal", @@ -608,22 +398,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 60.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "07_gas", @@ -647,22 +422,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 70.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "08_non-res", @@ -686,22 +446,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 80.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "09_hydro_pump", @@ -725,22 +470,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 90.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 } ], "renewables": [], @@ -788,22 +518,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 10.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "02_wind_on", @@ -827,22 +542,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 20.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "03_wind_off", @@ -866,22 +566,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 30.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "04_res", @@ -905,22 +590,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 40.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "05_nuclear", @@ -944,22 +614,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 50.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "06_coal", @@ -983,22 +638,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 60.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "07_gas", @@ -1022,22 +662,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 70.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "08_non-res", @@ -1061,22 +686,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 80.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "09_hydro_pump", @@ -1100,22 +710,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 90.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 } ], "renewables": [], @@ -1151,22 +746,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 10.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "02_wind_on", @@ -1190,22 +770,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 20.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "03_wind_off", @@ -1229,22 +794,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 30.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "04_res", @@ -1268,22 +818,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 40.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "05_nuclear", @@ -1307,22 +842,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 50.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "06_coal", @@ -1346,22 +866,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 60.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "07_gas", @@ -1385,22 +890,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 70.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "08_non-res", @@ -1424,22 +914,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 80.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "09_hydro_pump", @@ -1463,22 +938,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 90.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 } ], "renewables": [], diff --git a/tests/integration/studies_blueprint/assets/test_synthesis/variant_study.synthesis.json b/tests/integration/studies_blueprint/assets/test_synthesis/variant_study.synthesis.json index a77fa18a58..7e449747e4 100644 --- a/tests/integration/studies_blueprint/assets/test_synthesis/variant_study.synthesis.json +++ b/tests/integration/studies_blueprint/assets/test_synthesis/variant_study.synthesis.json @@ -38,22 +38,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 10.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "02_wind_on", @@ -77,22 +62,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 20.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "03_wind_off", @@ -116,22 +86,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 30.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "04_res", @@ -155,22 +110,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 40.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "05_nuclear", @@ -194,22 +134,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 50.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "06_coal", @@ -233,22 +158,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 60.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "07_gas", @@ -272,22 +182,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 70.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "08_non-res", @@ -311,22 +206,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 80.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "09_hydro_pump", @@ -350,22 +230,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 90.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 } ], "renewables": [], @@ -413,22 +278,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 10.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "02_wind_on", @@ -452,22 +302,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 20.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "03_wind_off", @@ -491,22 +326,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 30.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "04_res", @@ -530,22 +350,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 40.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "05_nuclear", @@ -569,22 +374,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 50.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "06_coal", @@ -608,22 +398,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 60.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "07_gas", @@ -647,22 +422,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 70.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "08_non-res", @@ -686,22 +446,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 80.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "09_hydro_pump", @@ -725,22 +470,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 90.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 } ], "renewables": [], @@ -788,22 +518,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 10.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "02_wind_on", @@ -827,22 +542,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 20.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "03_wind_off", @@ -866,22 +566,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 30.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "04_res", @@ -905,22 +590,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 40.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "05_nuclear", @@ -944,22 +614,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 50.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "06_coal", @@ -983,22 +638,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 60.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "07_gas", @@ -1022,22 +662,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 70.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "08_non-res", @@ -1061,22 +686,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 80.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "09_hydro_pump", @@ -1100,22 +710,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 90.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 } ], "renewables": [], @@ -1151,22 +746,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 10.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "02_wind_on", @@ -1190,22 +770,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 20.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "03_wind_off", @@ -1229,22 +794,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 30.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "04_res", @@ -1268,22 +818,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 40.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "05_nuclear", @@ -1307,22 +842,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 50.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "06_coal", @@ -1346,22 +866,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 60.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "07_gas", @@ -1385,22 +890,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 70.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "08_non-res", @@ -1424,22 +914,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 80.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 }, { "id": "09_hydro_pump", @@ -1463,22 +938,7 @@ "fixed-cost": 0.0, "startup-cost": 0.0, "market-bid-cost": 90.0, - "co2": 0.0, - "nh3": 0.0, - "so2": 0.0, - "nox": 0.0, - "pm2_5": 0.0, - "pm5": 0.0, - "pm10": 0.0, - "nmvoc": 0.0, - "op1": 0.0, - "op2": 0.0, - "op3": 0.0, - "op4": 0.0, - "op5": 0.0, - "costgeneration": "SetManually", - "efficiency": 100.0, - "variableomcost": 0.0 + "co2": 0.0 } ], "renewables": [], diff --git a/tests/integration/studies_blueprint/test_comments.py b/tests/integration/studies_blueprint/test_comments.py index 68615eb813..b83cc134b7 100644 --- a/tests/integration/studies_blueprint/test_comments.py +++ b/tests/integration/studies_blueprint/test_comments.py @@ -38,12 +38,9 @@ def test_raw_study( This test verifies that we can retrieve and modify the comments of a study. It also performs performance measurements and analyzes. """ - + client.headers = {"Authorization": f"Bearer {user_access_token}"} # Get the comments of the study and compare with the expected file - res = client.get( - f"/v1/studies/{internal_study_id}/comments", - headers={"Authorization": f"Bearer {user_access_token}"}, - ) + res = client.get(f"/v1/studies/{internal_study_id}/comments") assert res.status_code == 200, res.json() actual = res.json() actual_xml = ElementTree.parse(io.StringIO(actual)).getroot() @@ -52,10 +49,7 @@ def test_raw_study( # Ensure the duration is relatively short start = time.time() - res = client.get( - f"/v1/studies/{internal_study_id}/comments", - headers={"Authorization": f"Bearer {user_access_token}"}, - ) + res = client.get(f"/v1/studies/{internal_study_id}/comments") assert res.status_code == 200, res.json() duration = time.time() - start assert 0 <= duration <= 0.1, f"Duration is {duration} seconds" @@ -63,16 +57,12 @@ def test_raw_study( # Update the comments of the study res = client.put( f"/v1/studies/{internal_study_id}/comments", - headers={"Authorization": f"Bearer {user_access_token}"}, json={"comments": "Ceci est un commentaire en français."}, ) assert res.status_code == 204, res.json() # Get the comments of the study and compare with the expected file - res = client.get( - f"/v1/studies/{internal_study_id}/comments", - headers={"Authorization": f"Bearer {user_access_token}"}, - ) + res = client.get(f"/v1/studies/{internal_study_id}/comments") assert res.status_code == 200, res.json() assert res.json() == "Ceci est un commentaire en français." @@ -86,10 +76,10 @@ def test_variant_study( This test verifies that we can retrieve and modify the comments of a VARIANT study. It also performs performance measurements and analyzes. """ + client.headers = {"Authorization": f"Bearer {user_access_token}"} # First, we create a copy of the study, and we convert it to a managed study. res = client.post( f"/v1/studies/{internal_study_id}/copy", - headers={"Authorization": f"Bearer {user_access_token}"}, params={"dest": "default", "with_outputs": False, "use_task": False}, # type: ignore ) assert res.status_code == 201, res.json() @@ -97,20 +87,13 @@ def test_variant_study( assert base_study_id is not None # Then, we create a new variant of the base study - res = client.post( - f"/v1/studies/{base_study_id}/variants", - headers={"Authorization": f"Bearer {user_access_token}"}, - params={"name": "Variant XYZ"}, - ) + res = client.post(f"/v1/studies/{base_study_id}/variants", params={"name": "Variant XYZ"}) assert res.status_code == 200, res.json() # should be CREATED variant_id = res.json() assert variant_id is not None # Get the comments of the study and compare with the expected file - res = client.get( - f"/v1/studies/{variant_id}/comments", - headers={"Authorization": f"Bearer {user_access_token}"}, - ) + res = client.get(f"/v1/studies/{variant_id}/comments") assert res.status_code == 200, res.json() actual = res.json() actual_xml = ElementTree.parse(io.StringIO(actual)).getroot() @@ -119,10 +102,7 @@ def test_variant_study( # Ensure the duration is relatively short start = time.time() - res = client.get( - f"/v1/studies/{variant_id}/comments", - headers={"Authorization": f"Bearer {user_access_token}"}, - ) + res = client.get(f"/v1/studies/{variant_id}/comments") assert res.status_code == 200, res.json() duration = time.time() - start assert 0 <= duration <= 0.3, f"Duration is {duration} seconds" @@ -130,15 +110,11 @@ def test_variant_study( # Update the comments of the study res = client.put( f"/v1/studies/{variant_id}/comments", - headers={"Authorization": f"Bearer {user_access_token}"}, json={"comments": "Ceci est un commentaire en français."}, ) assert res.status_code == 204, res.json() # Get the comments of the study and compare with the expected file - res = client.get( - f"/v1/studies/{variant_id}/comments", - headers={"Authorization": f"Bearer {user_access_token}"}, - ) + res = client.get(f"/v1/studies/{variant_id}/comments") assert res.status_code == 200, res.json() assert res.json() == "Ceci est un commentaire en français." diff --git a/tests/integration/studies_blueprint/test_disk_usage.py b/tests/integration/studies_blueprint/test_disk_usage.py index 9fd167e0b5..6958667863 100644 --- a/tests/integration/studies_blueprint/test_disk_usage.py +++ b/tests/integration/studies_blueprint/test_disk_usage.py @@ -81,7 +81,7 @@ def test_disk_usage_endpoint( # Wait for task completion res = client.get(f"/v1/tasks/{task_id}", headers=user_headers, params={"wait_for_completion": True}) assert res.status_code == 200 - task_result = TaskDTO.parse_obj(res.json()) + task_result = TaskDTO.model_validate(res.json()) assert task_result.status == TaskStatus.COMPLETED assert task_result.result is not None assert task_result.result.success diff --git a/tests/integration/studies_blueprint/test_get_studies.py b/tests/integration/studies_blueprint/test_get_studies.py index a1a29d0d5f..8e94e15d92 100644 --- a/tests/integration/studies_blueprint/test_get_studies.py +++ b/tests/integration/studies_blueprint/test_get_studies.py @@ -1483,7 +1483,7 @@ def test_get_studies__invalid_parameters( res = client.get(STUDIES_URL, headers=headers, params={"sortBy": "invalid"}) assert res.status_code == INVALID_PARAMS_STATUS_CODE, res.json() description = res.json()["description"] - assert re.search(r"not a valid enumeration member", description), f"{description=}" + assert re.search("Input should be", description), f"{description=}" # Invalid `pageNb` parameter (negative integer) res = client.get(STUDIES_URL, headers=headers, params={"pageNb": -1}) @@ -1495,7 +1495,7 @@ def test_get_studies__invalid_parameters( res = client.get(STUDIES_URL, headers=headers, params={"pageNb": "invalid"}) assert res.status_code == INVALID_PARAMS_STATUS_CODE, res.json() description = res.json()["description"] - assert re.search(r"not a valid integer", description), f"{description=}" + assert re.search(r"should be a valid integer", description), f"{description=}" # Invalid `pageSize` parameter (negative integer) res = client.get(STUDIES_URL, headers=headers, params={"pageSize": -1}) @@ -1507,43 +1507,43 @@ def test_get_studies__invalid_parameters( res = client.get(STUDIES_URL, headers=headers, params={"pageSize": "invalid"}) assert res.status_code == INVALID_PARAMS_STATUS_CODE, res.json() description = res.json()["description"] - assert re.search(r"not a valid integer", description), f"{description=}" + assert re.search(r"should be a valid integer", description), f"{description=}" # Invalid `managed` parameter (not a boolean) res = client.get(STUDIES_URL, headers=headers, params={"managed": "invalid"}) assert res.status_code == INVALID_PARAMS_STATUS_CODE, res.json() description = res.json()["description"] - assert re.search(r"could not be parsed to a boolean", description), f"{description=}" + assert re.search(r"should be a valid boolean", description), f"{description=}" # Invalid `archived` parameter (not a boolean) res = client.get(STUDIES_URL, headers=headers, params={"archived": "invalid"}) assert res.status_code == INVALID_PARAMS_STATUS_CODE, res.json() description = res.json()["description"] - assert re.search(r"could not be parsed to a boolean", description), f"{description=}" + assert re.search(r"should be a valid boolean", description), f"{description=}" # Invalid `variant` parameter (not a boolean) res = client.get(STUDIES_URL, headers=headers, params={"variant": "invalid"}) assert res.status_code == INVALID_PARAMS_STATUS_CODE, res.json() description = res.json()["description"] - assert re.search(r"could not be parsed to a boolean", description), f"{description=}" + assert re.search(r"should be a valid boolean", description), f"{description=}" # Invalid `versions` parameter (not a list of integers) res = client.get(STUDIES_URL, headers=headers, params={"versions": "invalid"}) assert res.status_code == INVALID_PARAMS_STATUS_CODE, res.json() description = res.json()["description"] - assert re.search(r"string does not match regex", description), f"{description=}" + assert re.search(r"String should match pattern", description), f"{description=}" # Invalid `users` parameter (not a list of integers) res = client.get(STUDIES_URL, headers=headers, params={"users": "invalid"}) assert res.status_code == INVALID_PARAMS_STATUS_CODE, res.json() description = res.json()["description"] - assert re.search(r"string does not match regex", description), f"{description=}" + assert re.search(r"String should match pattern", description), f"{description=}" # Invalid `exists` parameter (not a boolean) res = client.get(STUDIES_URL, headers=headers, params={"exists": "invalid"}) assert res.status_code == INVALID_PARAMS_STATUS_CODE, res.json() description = res.json()["description"] - assert re.search(r"could not be parsed to a boolean", description), f"{description=}" + assert re.search(r"should be a valid boolean", description), f"{description=}" def test_studies_counting(client: TestClient, admin_access_token: str, user_access_token: str) -> None: diff --git a/tests/integration/studies_blueprint/test_update_tags.py b/tests/integration/studies_blueprint/test_update_tags.py index 0c6b5f60fb..fd9005a98a 100644 --- a/tests/integration/studies_blueprint/test_update_tags.py +++ b/tests/integration/studies_blueprint/test_update_tags.py @@ -28,14 +28,10 @@ def test_update_tags( This test verifies that we can update the tags of a study. It also tests the tags normalization. """ - + client.headers = {"Authorization": f"Bearer {user_access_token}"} # Classic usage: set some tags to a study study_tags = ["Tag1", "Tag2"] - res = client.put( - f"/v1/studies/{internal_study_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, - json={"tags": study_tags}, - ) + res = client.put(f"/v1/studies/{internal_study_id}", json={"tags": study_tags}) assert res.status_code == 200, res.json() actual = res.json() assert set(actual["tags"]) == set(study_tags) @@ -44,11 +40,7 @@ def test_update_tags( # - "Tag1" is preserved, but with the same case as the existing one. # - "Tag2" is replaced by "Tag3". study_tags = ["tag1", "Tag3"] - res = client.put( - f"/v1/studies/{internal_study_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, - json={"tags": study_tags}, - ) + res = client.put(f"/v1/studies/{internal_study_id}", json={"tags": study_tags}) assert res.status_code == 200, res.json() actual = res.json() assert set(actual["tags"]) != set(study_tags) # not the same case @@ -57,22 +49,14 @@ def test_update_tags( # String normalization: whitespaces are stripped and # consecutive whitespaces are replaced by a single one. study_tags = [" \xa0Foo \t Bar \n ", " \t Baz\xa0\xa0"] - res = client.put( - f"/v1/studies/{internal_study_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, - json={"tags": study_tags}, - ) + res = client.put(f"/v1/studies/{internal_study_id}", json={"tags": study_tags}) assert res.status_code == 200, res.json() actual = res.json() assert set(actual["tags"]) == {"Foo Bar", "Baz"} # We can have symbols in the tags study_tags = ["Foo-Bar", ":Baz%"] - res = client.put( - f"/v1/studies/{internal_study_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, - json={"tags": study_tags}, - ) + res = client.put(f"/v1/studies/{internal_study_id}", json={"tags": study_tags}) assert res.status_code == 200, res.json() actual = res.json() assert set(actual["tags"]) == {"Foo-Bar", ":Baz%"} @@ -83,13 +67,10 @@ def test_update_tags__invalid_tags( user_access_token: str, internal_study_id: str, ) -> None: + client.headers = {"Authorization": f"Bearer {user_access_token}"} # We cannot have empty tags study_tags = [""] - res = client.put( - f"/v1/studies/{internal_study_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, - json={"tags": study_tags}, - ) + res = client.put(f"/v1/studies/{internal_study_id}", json={"tags": study_tags}) assert res.status_code == 422, res.json() description = res.json()["description"] assert "Tag cannot be empty" in description @@ -97,11 +78,7 @@ def test_update_tags__invalid_tags( # We cannot have tags longer than 40 characters study_tags = ["very long tags, very long tags, very long tags"] assert len(study_tags[0]) > 40 - res = client.put( - f"/v1/studies/{internal_study_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, - json={"tags": study_tags}, - ) + res = client.put(f"/v1/studies/{internal_study_id}", json={"tags": study_tags}) assert res.status_code == 422, res.json() description = res.json()["description"] assert "Tag is too long" in description diff --git a/tests/integration/study_data_blueprint/test_advanced_parameters.py b/tests/integration/study_data_blueprint/test_advanced_parameters.py index f20b597c66..7b76ee0c87 100644 --- a/tests/integration/study_data_blueprint/test_advanced_parameters.py +++ b/tests/integration/study_data_blueprint/test_advanced_parameters.py @@ -108,7 +108,7 @@ def test_set_advanced_parameters_values( ) assert res.status_code == 422 assert res.json()["exception"] == "RequestValidationError" - assert res.json()["description"] == "Invalid value: fake_correlation" + assert res.json()["description"] == "Value error, Invalid value: fake_correlation" obj = {"unitCommitmentMode": "milp"} res = client.put( diff --git a/tests/integration/study_data_blueprint/test_binding_constraints.py b/tests/integration/study_data_blueprint/test_binding_constraints.py index e149e8a49a..42b7a9cc57 100644 --- a/tests/integration/study_data_blueprint/test_binding_constraints.py +++ b/tests/integration/study_data_blueprint/test_binding_constraints.py @@ -15,7 +15,7 @@ import numpy as np import pandas as pd import pytest -from requests.exceptions import HTTPError +from httpx._exceptions import HTTPError from starlette.testclient import TestClient from antarest.study.business.binding_constraint_management import ClusterTerm, ConstraintTerm, LinkTerm @@ -319,7 +319,7 @@ def test_lifecycle__nominal(self, client: TestClient, user_access_token: str, st assert res.status_code == 422, res.json() assert res.json() == { "body": {"data": {}, "id": f"{area1_id}.{cluster_id}"}, - "description": "field required", + "description": "Field required", "exception": "RequestValidationError", } diff --git a/tests/integration/study_data_blueprint/test_config_general.py b/tests/integration/study_data_blueprint/test_config_general.py index 27b69fe557..7353814e1b 100644 --- a/tests/integration/study_data_blueprint/test_config_general.py +++ b/tests/integration/study_data_blueprint/test_config_general.py @@ -45,7 +45,7 @@ def test_get_general_form_values( "firstJanuary": "Monday", "firstMonth": "january", "firstWeekDay": "Monday", - "horizon": "2030", + "horizon": 2030, "lastDay": 7, "leapYear": False, "mcScenario": True, diff --git a/tests/integration/study_data_blueprint/test_renewable.py b/tests/integration/study_data_blueprint/test_renewable.py index 49b68faf28..8e3fb8051b 100644 --- a/tests/integration/study_data_blueprint/test_renewable.py +++ b/tests/integration/study_data_blueprint/test_renewable.py @@ -36,7 +36,6 @@ * validate the consistency of the matrices (and properties) """ -import json import re import typing as t @@ -50,7 +49,7 @@ from antarest.study.storage.rawstudy.model.filesystem.config.renewable import RenewableProperties from tests.integration.utils import wait_task_completion -DEFAULT_PROPERTIES = json.loads(RenewableProperties(name="Dummy").json()) +DEFAULT_PROPERTIES = RenewableProperties(name="Dummy").model_dump(mode="json") DEFAULT_PROPERTIES = {to_camel_case(k): v for k, v in DEFAULT_PROPERTIES.items() if k != "name"} # noinspection SpellCheckingInspection @@ -537,13 +536,10 @@ def test_variant_lifecycle(self, client: TestClient, user_access_token: str, var In this test, we want to check that renewable clusters can be managed in the context of a "variant" study. """ + client.headers = {"Authorization": f"Bearer {user_access_token}"} # Create an area area_name = "France" - res = client.post( - f"/v1/studies/{variant_id}/areas", - headers={"Authorization": f"Bearer {user_access_token}"}, - json={"name": area_name, "type": "AREA"}, - ) + res = client.post(f"/v1/studies/{variant_id}/areas", json={"name": area_name, "type": "AREA"}) assert res.status_code in {200, 201}, res.json() area_cfg = res.json() area_id = area_cfg["id"] @@ -552,7 +548,6 @@ def test_variant_lifecycle(self, client: TestClient, user_access_token: str, var cluster_name = "Th1" res = client.post( f"/v1/studies/{variant_id}/areas/{area_id}/clusters/renewable", - headers={"Authorization": f"Bearer {user_access_token}"}, json={ "name": cluster_name, "group": "Wind Offshore", @@ -565,9 +560,7 @@ def test_variant_lifecycle(self, client: TestClient, user_access_token: str, var # Update the renewable cluster res = client.patch( - f"/v1/studies/{variant_id}/areas/{area_id}/clusters/renewable/{cluster_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, - json={"unitCount": 15}, + f"/v1/studies/{variant_id}/areas/{area_id}/clusters/renewable/{cluster_id}", json={"unitCount": 15} ) assert res.status_code == 200, res.json() cluster_cfg = res.json() @@ -577,19 +570,13 @@ def test_variant_lifecycle(self, client: TestClient, user_access_token: str, var matrix = np.random.randint(0, 2, size=(8760, 1)).tolist() matrix_path = f"input/renewables/series/{area_id}/{cluster_id.lower()}/series" args = {"target": matrix_path, "matrix": matrix} - res = client.post( - f"/v1/studies/{variant_id}/commands", - json=[{"action": "replace_matrix", "args": args}], - headers={"Authorization": f"Bearer {user_access_token}"}, - ) + res = client.post(f"/v1/studies/{variant_id}/commands", json=[{"action": "replace_matrix", "args": args}]) assert res.status_code in {200, 201}, res.json() # Duplicate the renewable cluster new_name = "Th2" res = client.post( - f"/v1/studies/{variant_id}/areas/{area_id}/renewables/{cluster_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, - params={"newName": new_name}, + f"/v1/studies/{variant_id}/areas/{area_id}/renewables/{cluster_id}", params={"newName": new_name} ) assert res.status_code in {200, 201}, res.json() cluster_cfg = res.json() @@ -597,10 +584,7 @@ def test_variant_lifecycle(self, client: TestClient, user_access_token: str, var new_id = cluster_cfg["id"] # Check that the duplicate has the right properties - res = client.get( - f"/v1/studies/{variant_id}/areas/{area_id}/clusters/renewable/{new_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, - ) + res = client.get(f"/v1/studies/{variant_id}/areas/{area_id}/clusters/renewable/{new_id}") assert res.status_code == 200, res.json() cluster_cfg = res.json() assert cluster_cfg["group"] == "Wind Offshore" @@ -609,27 +593,19 @@ def test_variant_lifecycle(self, client: TestClient, user_access_token: str, var # Check that the duplicate has the right matrix new_cluster_matrix_path = f"input/renewables/series/{area_id}/{new_id.lower()}/series" - res = client.get( - f"/v1/studies/{variant_id}/raw", - params={"path": new_cluster_matrix_path}, - headers={"Authorization": f"Bearer {user_access_token}"}, - ) + res = client.get(f"/v1/studies/{variant_id}/raw", params={"path": new_cluster_matrix_path}) assert res.status_code == 200 assert res.json()["data"] == matrix # Delete the renewable cluster - res = client.delete( - f"/v1/studies/{variant_id}/areas/{area_id}/clusters/renewable", - headers={"Authorization": f"Bearer {user_access_token}"}, - json=[cluster_id], + # usage of request instead of delete as httpx doesn't support delete with a payload anymore. + res = client.request( + method="DELETE", url=f"/v1/studies/{variant_id}/areas/{area_id}/clusters/renewable", json=[cluster_id] ) assert res.status_code == 204, res.json() # Check the list of variant commands - res = client.get( - f"/v1/studies/{variant_id}/commands", - headers={"Authorization": f"Bearer {user_access_token}"}, - ) + res = client.get(f"/v1/studies/{variant_id}/commands") assert res.status_code == 200, res.json() commands = res.json() assert len(commands) == 7 diff --git a/tests/integration/study_data_blueprint/test_st_storage.py b/tests/integration/study_data_blueprint/test_st_storage.py index 7f03317659..8d83d12f37 100644 --- a/tests/integration/study_data_blueprint/test_st_storage.py +++ b/tests/integration/study_data_blueprint/test_st_storage.py @@ -31,11 +31,11 @@ _ST_STORAGE_OUTPUT_860 = create_storage_output(860, cluster_id="dummy", config={"name": "dummy"}) _ST_STORAGE_OUTPUT_880 = create_storage_output(880, cluster_id="dummy", config={"name": "dummy"}) -DEFAULT_CONFIG_860 = json.loads(_ST_STORAGE_860_CONFIG.json(by_alias=True, exclude={"id", "name"})) -DEFAULT_CONFIG_880 = json.loads(_ST_STORAGE_880_CONFIG.json(by_alias=True, exclude={"id", "name"})) +DEFAULT_CONFIG_860 = _ST_STORAGE_860_CONFIG.model_dump(mode="json", by_alias=True, exclude={"id", "name"}) +DEFAULT_CONFIG_880 = _ST_STORAGE_880_CONFIG.model_dump(mode="json", by_alias=True, exclude={"id", "name"}) -DEFAULT_OUTPUT_860 = json.loads(_ST_STORAGE_OUTPUT_860.json(by_alias=True, exclude={"id", "name"})) -DEFAULT_OUTPUT_880 = json.loads(_ST_STORAGE_OUTPUT_880.json(by_alias=True, exclude={"id", "name"})) +DEFAULT_OUTPUT_860 = _ST_STORAGE_OUTPUT_860.model_dump(mode="json", by_alias=True, exclude={"id", "name"}) +DEFAULT_OUTPUT_880 = _ST_STORAGE_OUTPUT_880.model_dump(mode="json", by_alias=True, exclude={"id", "name"}) # noinspection SpellCheckingInspection @@ -325,7 +325,7 @@ def test_lifecycle__nominal( json=[siemens_battery_id], ) assert res.status_code == 204, res.json() - assert res.text in {"", "null"} # Old FastAPI versions return 'null'. + assert not res.text # If the short-term storage list is empty, the deletion should be a no-op. res = client.request( @@ -335,7 +335,7 @@ def test_lifecycle__nominal( json=[], ) assert res.status_code == 204, res.json() - assert res.text in {"", "null"} # Old FastAPI versions return 'null'. + assert not res.text # It's possible to delete multiple short-term storages at once. # In the following example, we will create two short-term storages: @@ -395,7 +395,7 @@ def test_lifecycle__nominal( json=[grand_maison_id, duplicated_output["id"]], ) assert res.status_code == 204, res.json() - assert res.text in {"", "null"} # Old FastAPI versions return 'null'. + assert not res.text # Only one st-storage should remain. res = client.get( @@ -487,7 +487,7 @@ def test_lifecycle__nominal( assert res.status_code == 422, res.json() obj = res.json() description = obj["description"] - assert re.search(r"not a valid enumeration member", description, flags=re.IGNORECASE) + assert re.search(r"Input should be", description) # Check PATCH with the wrong `area_id` res = client.patch( @@ -589,40 +589,26 @@ def test__default_values( Then the short-term storage is created with initialLevel = 0.0, and initialLevelOptim = False. """ # Create a new study in version 860 (or higher) - user_headers = {"Authorization": f"Bearer {user_access_token}"} - res = client.post( - "/v1/studies", - headers=user_headers, - params={"name": "MyStudy", "version": study_version}, - ) + client.headers = {"Authorization": f"Bearer {user_access_token}"} + res = client.post("/v1/studies", params={"name": "MyStudy", "version": study_version}) assert res.status_code in {200, 201}, res.json() study_id = res.json() if study_type == "variant": # Create Variant - res = client.post( - f"/v1/studies/{study_id}/variants", - headers=user_headers, - params={"name": "Variant 1"}, - ) + res = client.post(f"/v1/studies/{study_id}/variants", params={"name": "Variant 1"}) assert res.status_code in {200, 201}, res.json() study_id = res.json() # Create a new area named "FR" - res = client.post( - f"/v1/studies/{study_id}/areas", - headers=user_headers, - json={"name": "FR", "type": "AREA"}, - ) + res = client.post(f"/v1/studies/{study_id}/areas", json={"name": "FR", "type": "AREA"}) assert res.status_code in {200, 201}, res.json() area_id = res.json()["id"] # Create a new short-term storage named "Tesla Battery" tesla_battery = "Tesla Battery" res = client.post( - f"/v1/studies/{study_id}/areas/{area_id}/storages", - headers=user_headers, - json={"name": tesla_battery, "group": "Battery"}, + f"/v1/studies/{study_id}/areas/{area_id}/storages", json={"name": tesla_battery, "group": "Battery"} ) assert res.status_code == 200, res.json() tesla_battery_id = res.json()["id"] @@ -633,7 +619,6 @@ def test__default_values( # are properly set in the configuration file. res = client.get( f"/v1/studies/{study_id}/raw", - headers=user_headers, params={"path": f"input/st-storage/clusters/{area_id}/list/{tesla_battery_id}"}, ) assert res.status_code == 200, res.json() @@ -646,28 +631,19 @@ def test__default_values( # in the variant commands. # Create a variant of the study - res = client.post( - f"/v1/studies/{study_id}/variants", - headers=user_headers, - params={"name": "MyVariant"}, - ) + res = client.post(f"/v1/studies/{study_id}/variants", params={"name": "MyVariant"}) assert res.status_code in {200, 201}, res.json() variant_id = res.json() # Create a new short-term storage named "Siemens Battery" siemens_battery = "Siemens Battery" res = client.post( - f"/v1/studies/{variant_id}/areas/{area_id}/storages", - headers=user_headers, - json={"name": siemens_battery, "group": "Battery"}, + f"/v1/studies/{variant_id}/areas/{area_id}/storages", json={"name": siemens_battery, "group": "Battery"} ) assert res.status_code == 200, res.json() # Check the variant commands - res = client.get( - f"/v1/studies/{variant_id}/commands", - headers=user_headers, - ) + res = client.get(f"/v1/studies/{variant_id}/commands") assert res.status_code == 200, res.json() commands = res.json() assert len(commands) == 1 @@ -691,17 +667,12 @@ def test__default_values( # Update the initialLevel property of the "Siemens Battery" short-term storage to 0.5 siemens_battery_id = transform_name_to_id(siemens_battery) res = client.patch( - f"/v1/studies/{variant_id}/areas/{area_id}/storages/{siemens_battery_id}", - headers=user_headers, - json={"initialLevel": 0.5}, + f"/v1/studies/{variant_id}/areas/{area_id}/storages/{siemens_battery_id}", json={"initialLevel": 0.5} ) assert res.status_code == 200, res.json() # Check the variant commands - res = client.get( - f"/v1/studies/{variant_id}/commands", - headers=user_headers, - ) + res = client.get(f"/v1/studies/{variant_id}/commands") assert res.status_code == 200, res.json() commands = res.json() assert len(commands) == 2 @@ -710,7 +681,7 @@ def test__default_values( "id": ANY, "action": "update_config", "args": { - "data": "0.5", + "data": 0.5, "target": "input/st-storage/clusters/fr/list/siemens battery/initiallevel", }, "version": 1, @@ -720,16 +691,12 @@ def test__default_values( # Update the initialLevel property of the "Siemens Battery" short-term storage back to 0 res = client.patch( f"/v1/studies/{variant_id}/areas/{area_id}/storages/{siemens_battery_id}", - headers=user_headers, json={"initialLevel": 0.0, "injectionNominalCapacity": 1600}, ) assert res.status_code == 200, res.json() # Check the variant commands - res = client.get( - f"/v1/studies/{variant_id}/commands", - headers=user_headers, - ) + res = client.get(f"/v1/studies/{variant_id}/commands") assert res.status_code == 200, res.json() commands = res.json() assert len(commands) == 3 @@ -739,11 +706,11 @@ def test__default_values( "action": "update_config", "args": [ { - "data": "1600.0", + "data": 1600.0, "target": "input/st-storage/clusters/fr/list/siemens battery/injectionnominalcapacity", }, { - "data": "0.0", + "data": 0.0, "target": "input/st-storage/clusters/fr/list/siemens battery/initiallevel", }, ], @@ -755,7 +722,6 @@ def test__default_values( # are properly set in the configuration file. res = client.get( f"/v1/studies/{variant_id}/raw", - headers=user_headers, params={"path": f"input/st-storage/clusters/{area_id}/list/{siemens_battery_id}"}, ) assert res.status_code == 200, res.json() @@ -803,13 +769,10 @@ def test_variant_lifecycle(self, client: TestClient, user_access_token: str, var In this test, we want to check that short-term storages can be managed in the context of a "variant" study. """ + client.headers = {"Authorization": f"Bearer {user_access_token}"} # Create an area area_name = "France" - res = client.post( - f"/v1/studies/{variant_id}/areas", - headers={"Authorization": f"Bearer {user_access_token}"}, - json={"name": area_name, "type": "AREA"}, - ) + res = client.post(f"/v1/studies/{variant_id}/areas", json={"name": area_name, "type": "AREA"}) assert res.status_code in {200, 201}, res.json() area_cfg = res.json() area_id = area_cfg["id"] @@ -818,7 +781,6 @@ def test_variant_lifecycle(self, client: TestClient, user_access_token: str, var cluster_name = "Tesla1" res = client.post( f"/v1/studies/{variant_id}/areas/{area_id}/storages", - headers={"Authorization": f"Bearer {user_access_token}"}, json={ "name": cluster_name, "group": "Battery", @@ -832,9 +794,7 @@ def test_variant_lifecycle(self, client: TestClient, user_access_token: str, var # Update the short-term storage res = client.patch( - f"/v1/studies/{variant_id}/areas/{area_id}/storages/{cluster_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, - json={"reservoirCapacity": 5600}, + f"/v1/studies/{variant_id}/areas/{area_id}/storages/{cluster_id}", json={"reservoirCapacity": 5600} ) assert res.status_code == 200, res.json() cluster_cfg = res.json() @@ -844,19 +804,13 @@ def test_variant_lifecycle(self, client: TestClient, user_access_token: str, var matrix = np.random.randint(0, 2, size=(8760, 1)).tolist() matrix_path = f"input/st-storage/series/{area_id}/{cluster_id.lower()}/pmax_injection" args = {"target": matrix_path, "matrix": matrix} - res = client.post( - f"/v1/studies/{variant_id}/commands", - json=[{"action": "replace_matrix", "args": args}], - headers={"Authorization": f"Bearer {user_access_token}"}, - ) + res = client.post(f"/v1/studies/{variant_id}/commands", json=[{"action": "replace_matrix", "args": args}]) assert res.status_code in {200, 201}, res.json() # Duplicate the short-term storage new_name = "Tesla2" res = client.post( - f"/v1/studies/{variant_id}/areas/{area_id}/storages/{cluster_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, - params={"newName": new_name}, + f"/v1/studies/{variant_id}/areas/{area_id}/storages/{cluster_id}", params={"newName": new_name} ) assert res.status_code in {200, 201}, res.json() cluster_cfg = res.json() @@ -864,10 +818,7 @@ def test_variant_lifecycle(self, client: TestClient, user_access_token: str, var new_id = cluster_cfg["id"] # Check that the duplicate has the right properties - res = client.get( - f"/v1/studies/{variant_id}/areas/{area_id}/storages/{new_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, - ) + res = client.get(f"/v1/studies/{variant_id}/areas/{area_id}/storages/{new_id}") assert res.status_code == 200, res.json() cluster_cfg = res.json() assert cluster_cfg["group"] == "Battery" @@ -877,27 +828,19 @@ def test_variant_lifecycle(self, client: TestClient, user_access_token: str, var # Check that the duplicate has the right matrix new_cluster_matrix_path = f"input/st-storage/series/{area_id}/{new_id.lower()}/pmax_injection" - res = client.get( - f"/v1/studies/{variant_id}/raw", - params={"path": new_cluster_matrix_path}, - headers={"Authorization": f"Bearer {user_access_token}"}, - ) + res = client.get(f"/v1/studies/{variant_id}/raw", params={"path": new_cluster_matrix_path}) assert res.status_code == 200 assert res.json()["data"] == matrix # Delete the short-term storage - res = client.delete( - f"/v1/studies/{variant_id}/areas/{area_id}/storages", - headers={"Authorization": f"Bearer {user_access_token}"}, - json=[cluster_id], + # usage of request instead of delete as httpx doesn't support delete with a payload anymore. + res = client.request( + method="DELETE", url=f"/v1/studies/{variant_id}/areas/{area_id}/storages", json=[cluster_id] ) assert res.status_code == 204, res.json() # Check the list of variant commands - res = client.get( - f"/v1/studies/{variant_id}/commands", - headers={"Authorization": f"Bearer {user_access_token}"}, - ) + res = client.get(f"/v1/studies/{variant_id}/commands") assert res.status_code == 200, res.json() commands = res.json() assert len(commands) == 7 diff --git a/tests/integration/study_data_blueprint/test_thermal.py b/tests/integration/study_data_blueprint/test_thermal.py index 17ce7d7037..6567fc205f 100644 --- a/tests/integration/study_data_blueprint/test_thermal.py +++ b/tests/integration/study_data_blueprint/test_thermal.py @@ -40,7 +40,6 @@ * validate the consistency of the matrices (and properties) """ import io -import json import re import typing as t @@ -54,7 +53,7 @@ from antarest.study.storage.rawstudy.model.filesystem.config.thermal import ThermalProperties from tests.integration.utils import wait_task_completion -DEFAULT_PROPERTIES = json.loads(ThermalProperties(name="Dummy").json()) +DEFAULT_PROPERTIES = ThermalProperties(name="Dummy").model_dump(mode="json") DEFAULT_PROPERTIES = {to_camel_case(k): v for k, v in DEFAULT_PROPERTIES.items() if k != "name"} # noinspection SpellCheckingInspection @@ -511,7 +510,6 @@ def test_lifecycle( json={"nox": 10.0}, ) assert res.status_code == 200 - assert res.json()["nox"] == 10.0 # Update with the field `efficiency`. Should succeed even with versions prior to v8.7 res = client.patch( @@ -520,7 +518,6 @@ def test_lifecycle( json={"efficiency": 97.0}, ) assert res.status_code == 200 - assert res.json()["efficiency"] == 97.0 # ============================= # THERMAL CLUSTER DUPLICATION @@ -949,13 +946,10 @@ def test_variant_lifecycle(self, client: TestClient, user_access_token: str, var In this test, we want to check that thermal clusters can be managed in the context of a "variant" study. """ + client.headers = {"Authorization": f"Bearer {user_access_token}"} # Create an area area_name = "France" - res = client.post( - f"/v1/studies/{variant_id}/areas", - headers={"Authorization": f"Bearer {user_access_token}"}, - json={"name": area_name, "type": "AREA"}, - ) + res = client.post(f"/v1/studies/{variant_id}/areas", json={"name": area_name, "type": "AREA"}) assert res.status_code in {200, 201}, res.json() area_cfg = res.json() area_id = area_cfg["id"] @@ -964,7 +958,6 @@ def test_variant_lifecycle(self, client: TestClient, user_access_token: str, var cluster_name = "Th1" res = client.post( f"/v1/studies/{variant_id}/areas/{area_id}/clusters/thermal", - headers={"Authorization": f"Bearer {user_access_token}"}, json={ "name": cluster_name, "group": "Nuclear", @@ -978,11 +971,7 @@ def test_variant_lifecycle(self, client: TestClient, user_access_token: str, var # Update the thermal cluster res = client.patch( - f"/v1/studies/{variant_id}/areas/{area_id}/clusters/thermal/{cluster_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, - json={ - "marginalCost": 0.2, - }, + f"/v1/studies/{variant_id}/areas/{area_id}/clusters/thermal/{cluster_id}", json={"marginalCost": 0.2} ) assert res.status_code == 200, res.json() cluster_cfg = res.json() @@ -992,19 +981,13 @@ def test_variant_lifecycle(self, client: TestClient, user_access_token: str, var matrix = np.random.randint(0, 2, size=(8760, 1)).tolist() matrix_path = f"input/thermal/prepro/{area_id}/{cluster_id.lower()}/data" args = {"target": matrix_path, "matrix": matrix} - res = client.post( - f"/v1/studies/{variant_id}/commands", - json=[{"action": "replace_matrix", "args": args}], - headers={"Authorization": f"Bearer {user_access_token}"}, - ) + res = client.post(f"/v1/studies/{variant_id}/commands", json=[{"action": "replace_matrix", "args": args}]) assert res.status_code in {200, 201}, res.json() # Duplicate the thermal cluster new_name = "Th2" res = client.post( - f"/v1/studies/{variant_id}/areas/{area_id}/thermals/{cluster_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, - params={"newName": new_name}, + f"/v1/studies/{variant_id}/areas/{area_id}/thermals/{cluster_id}", params={"newName": new_name} ) assert res.status_code in {200, 201}, res.json() cluster_cfg = res.json() @@ -1012,10 +995,7 @@ def test_variant_lifecycle(self, client: TestClient, user_access_token: str, var new_id = cluster_cfg["id"] # Check that the duplicate has the right properties - res = client.get( - f"/v1/studies/{variant_id}/areas/{area_id}/clusters/thermal/{new_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, - ) + res = client.get(f"/v1/studies/{variant_id}/areas/{area_id}/clusters/thermal/{new_id}") assert res.status_code == 200, res.json() cluster_cfg = res.json() assert cluster_cfg["group"] == "Nuclear" @@ -1025,27 +1005,19 @@ def test_variant_lifecycle(self, client: TestClient, user_access_token: str, var # Check that the duplicate has the right matrix new_cluster_matrix_path = f"input/thermal/prepro/{area_id}/{new_id.lower()}/data" - res = client.get( - f"/v1/studies/{variant_id}/raw", - params={"path": new_cluster_matrix_path}, - headers={"Authorization": f"Bearer {user_access_token}"}, - ) + res = client.get(f"/v1/studies/{variant_id}/raw", params={"path": new_cluster_matrix_path}) assert res.status_code == 200 assert res.json()["data"] == matrix # Delete the thermal cluster - res = client.delete( - f"/v1/studies/{variant_id}/areas/{area_id}/clusters/thermal", - headers={"Authorization": f"Bearer {user_access_token}"}, - json=[cluster_id], + # usage of request instead of delete as httpx doesn't support delete with a payload anymore. + res = client.request( + method="DELETE", url=f"/v1/studies/{variant_id}/areas/{area_id}/clusters/thermal", json=[cluster_id] ) assert res.status_code == 204, res.json() # Check the list of variant commands - res = client.get( - f"/v1/studies/{variant_id}/commands", - headers={"Authorization": f"Bearer {user_access_token}"}, - ) + res = client.get(f"/v1/studies/{variant_id}/commands") assert res.status_code == 200, res.json() commands = res.json() assert len(commands) == 7 @@ -1182,9 +1154,9 @@ def test_thermal_cluster_deletion(self, client: TestClient, user_access_token: s assert res.status_code == 200, res.json() # check that deleting the thermal cluster in area_1 fails - res = client.delete( - f"/v1/studies/{internal_study_id}/areas/area_1/clusters/thermal", - json=["cluster_1"], + # usage of request instead of delete as httpx doesn't support delete with a payload anymore. + res = client.request( + method="DELETE", url=f"/v1/studies/{internal_study_id}/areas/area_1/clusters/thermal", json=["cluster_1"] ) assert res.status_code == 403, res.json() @@ -1195,16 +1167,14 @@ def test_thermal_cluster_deletion(self, client: TestClient, user_access_token: s assert res.status_code == 200, res.json() # check that deleting the thermal cluster in area_1 succeeds - res = client.delete( - f"/v1/studies/{internal_study_id}/areas/area_1/clusters/thermal", - json=["cluster_1"], + res = client.request( + method="DELETE", url=f"/v1/studies/{internal_study_id}/areas/area_1/clusters/thermal", json=["cluster_1"] ) assert res.status_code == 204, res.json() # check that deleting the thermal cluster in area_2 fails - res = client.delete( - f"/v1/studies/{internal_study_id}/areas/area_2/clusters/thermal", - json=["cluster_2"], + res = client.request( + method="DELETE", url=f"/v1/studies/{internal_study_id}/areas/area_2/clusters/thermal", json=["cluster_2"] ) assert res.status_code == 403, res.json() @@ -1215,15 +1185,13 @@ def test_thermal_cluster_deletion(self, client: TestClient, user_access_token: s assert res.status_code == 200, res.json() # check that deleting the thermal cluster in area_2 succeeds - res = client.delete( - f"/v1/studies/{internal_study_id}/areas/area_2/clusters/thermal", - json=["cluster_2"], + res = client.request( + method="DELETE", url=f"/v1/studies/{internal_study_id}/areas/area_2/clusters/thermal", json=["cluster_2"] ) assert res.status_code == 204, res.json() # check that deleting the thermal cluster in area_3 succeeds - res = client.delete( - f"/v1/studies/{internal_study_id}/areas/area_3/clusters/thermal", - json=["cluster_3"], + res = client.request( + method="DELETE", url=f"/v1/studies/{internal_study_id}/areas/area_3/clusters/thermal", json=["cluster_3"] ) assert res.status_code == 204, res.json() diff --git a/tests/integration/test_apidoc.py b/tests/integration/test_apidoc.py index 605d91333d..d0eb7445d8 100644 --- a/tests/integration/test_apidoc.py +++ b/tests/integration/test_apidoc.py @@ -10,14 +10,15 @@ # # This file is part of the Antares project. -from fastapi.openapi.utils import get_flat_models_from_routes -from fastapi.utils import get_model_definitions -from pydantic.schema import get_model_name_map from starlette.testclient import TestClient +from antarest import __version__ + def test_apidoc(client: TestClient) -> None: - # Asserts that the apidoc can be loaded - flat_models = get_flat_models_from_routes(client.app.routes) - model_name_map = get_model_name_map(flat_models) - get_model_definitions(flat_models=flat_models, model_name_map=model_name_map) + # Local import to avoid breaking all tests if FastAPI changes its API + from fastapi.openapi.utils import get_openapi + + routes = client.app.routes + openapi = get_openapi(title="Antares Web", version=__version__, routes=routes) + assert openapi diff --git a/tests/integration/test_core_blueprint.py b/tests/integration/test_core_blueprint.py index de555ceaf9..a60ba6dcfb 100644 --- a/tests/integration/test_core_blueprint.py +++ b/tests/integration/test_core_blueprint.py @@ -10,7 +10,6 @@ # # This file is part of the Antares project. -import http import re from unittest import mock @@ -48,23 +47,3 @@ def test_version_info(self, app: FastAPI): "dependencies": mock.ANY, } assert actual == expected - - -class TestKillWorker: - def test_kill_worker__not_granted(self, app: FastAPI): - client = TestClient(app, raise_server_exceptions=False) - res = client.get("/kill") - assert res.status_code == http.HTTPStatus.UNAUTHORIZED, res.json() - assert res.json() == {"detail": "Missing cookie access_token_cookie"} - - def test_kill_worker__nominal_case(self, app: FastAPI): - client = TestClient(app, raise_server_exceptions=False) - # login as "admin" - res = client.post("/v1/login", json={"username": "admin", "password": "admin"}) - res.raise_for_status() - credentials = res.json() - admin_access_token = credentials["access_token"] - # kill the worker - res = client.get("/kill", headers={"Authorization": f"Bearer {admin_access_token}"}) - assert res.status_code == 500, res.json() - assert not res.content diff --git a/tests/integration/test_integration.py b/tests/integration/test_integration.py index 8e814e322a..a136184969 100644 --- a/tests/integration/test_integration.py +++ b/tests/integration/test_integration.py @@ -452,7 +452,7 @@ def test_area_management(client: TestClient, admin_access_token: str) -> None: }, ) - client.post( + res = client.post( f"/v1/studies/{study_id}/commands", json=[ { @@ -465,6 +465,7 @@ def test_area_management(client: TestClient, admin_access_token: str) -> None: } ], ) + res.raise_for_status() client.post( f"/v1/studies/{study_id}/commands", @@ -606,13 +607,14 @@ def test_area_management(client: TestClient, admin_access_token: str) -> None: }, ] - client.post( + res = client.post( f"/v1/studies/{study_id}/links", json={ "area1": "area 1", "area2": "area 2", }, ) + res.raise_for_status() res_links = client.get(f"/v1/studies/{study_id}/links?with_ui=true") assert res_links.json() == [ { @@ -625,15 +627,16 @@ def test_area_management(client: TestClient, admin_access_token: str) -> None: # -- `layers` integration tests res = client.get(f"/v1/studies/{study_id}/layers") - assert res.json() == [LayerInfoDTO(id="0", name="All", areas=["area 1", "area 2"]).dict()] + res.raise_for_status() + assert res.json() == [LayerInfoDTO(id="0", name="All", areas=["area 1", "area 2"]).model_dump()] res = client.post(f"/v1/studies/{study_id}/layers?name=test") assert res.json() == "1" res = client.get(f"/v1/studies/{study_id}/layers") assert res.json() == [ - LayerInfoDTO(id="0", name="All", areas=["area 1", "area 2"]).dict(), - LayerInfoDTO(id="1", name="test", areas=[]).dict(), + LayerInfoDTO(id="0", name="All", areas=["area 1", "area 2"]).model_dump(), + LayerInfoDTO(id="1", name="test", areas=[]).model_dump(), ] res = client.put(f"/v1/studies/{study_id}/layers/1?name=test2") @@ -644,8 +647,8 @@ def test_area_management(client: TestClient, admin_access_token: str) -> None: assert res.status_code in {200, 201}, res.json() res = client.get(f"/v1/studies/{study_id}/layers") assert res.json() == [ - LayerInfoDTO(id="0", name="All", areas=["area 1", "area 2"]).dict(), - LayerInfoDTO(id="1", name="test2", areas=["area 2"]).dict(), + LayerInfoDTO(id="0", name="All", areas=["area 1", "area 2"]).model_dump(), + LayerInfoDTO(id="1", name="test2", areas=["area 2"]).model_dump(), ] # Delete the layer '1' that has 1 area @@ -655,7 +658,7 @@ def test_area_management(client: TestClient, admin_access_token: str) -> None: # Ensure the layer is deleted res = client.get(f"/v1/studies/{study_id}/layers") assert res.json() == [ - LayerInfoDTO(id="0", name="All", areas=["area 1", "area 2"]).dict(), + LayerInfoDTO(id="0", name="All", areas=["area 1", "area 2"]).model_dump(), ] # Create the layer again without areas @@ -669,7 +672,7 @@ def test_area_management(client: TestClient, admin_access_token: str) -> None: # Ensure the layer is deleted res = client.get(f"/v1/studies/{study_id}/layers") assert res.json() == [ - LayerInfoDTO(id="0", name="All", areas=["area 1", "area 2"]).dict(), + LayerInfoDTO(id="0", name="All", areas=["area 1", "area 2"]).model_dump(), ] # Try to delete a non-existing layer @@ -755,7 +758,7 @@ def test_area_management(client: TestClient, admin_access_token: str) -> None: "simplexOptimizationRange": SimplexOptimizationRange.WEEK.value, } - client.put( + res = client.put( f"/v1/studies/{study_id}/config/optimization/form", json={ "strategicReserve": False, @@ -763,6 +766,7 @@ def test_area_management(client: TestClient, admin_access_token: str) -> None: "simplexOptimizationRange": SimplexOptimizationRange.DAY.value, }, ) + res.raise_for_status() res_optimization_config = client.get(f"/v1/studies/{study_id}/config/optimization/form") res_optimization_config_json = res_optimization_config.json() assert res_optimization_config_json == { @@ -825,7 +829,7 @@ def test_area_management(client: TestClient, admin_access_token: str) -> None: ) assert res.status_code == 422 assert res.json()["exception"] == "RequestValidationError" - assert res.json()["description"] == "value is not a valid integer" + assert res.json()["description"] == "Input should be a valid integer" # General form @@ -1269,7 +1273,7 @@ def test_area_management(client: TestClient, admin_access_token: str) -> None: }, "ntc": {"stochasticTsStatus": False, "intraModal": False}, } - res_ts_config = client.put( + client.put( f"/v1/studies/{study_id}/config/timeseries/form", json={ "thermal": {"stochasticTsStatus": True}, diff --git a/tests/integration/test_integration_variantmanager_tool.py b/tests/integration/test_integration_variantmanager_tool.py index 605c2659f5..85783fe789 100644 --- a/tests/integration/test_integration_variantmanager_tool.py +++ b/tests/integration/test_integration_variantmanager_tool.py @@ -28,10 +28,12 @@ COMMAND_FILE, MATRIX_STORE_DIR, RemoteVariantGenerator, + create_http_client, extract_commands, generate_diff, generate_study, parse_commands, + set_auth_token, ) from tests.integration.assets import ASSETS_DIR @@ -62,7 +64,9 @@ def generate_study_with_server( ) assert res.status_code == 200, res.json() variant_id = res.json() - generator = RemoteVariantGenerator(variant_id, session=client, token=admin_credentials["access_token"]) + + set_auth_token(client, admin_credentials["access_token"]) + generator = RemoteVariantGenerator(variant_id, host="", session=client) return generator.apply_commands(commands, matrices_dir), variant_id diff --git a/tests/integration/variant_blueprint/test_st_storage.py b/tests/integration/variant_blueprint/test_st_storage.py index bc19c036f2..b4092f0acb 100644 --- a/tests/integration/variant_blueprint/test_st_storage.py +++ b/tests/integration/variant_blueprint/test_st_storage.py @@ -233,18 +233,5 @@ def test_lifecycle( ) assert res.status_code == http.HTTPStatus.UNPROCESSABLE_ENTITY description = res.json()["description"] - """ - 4 validation errors for CreateSTStorage - parameters -> group - value is not a valid enumeration member […] - parameters -> injectionnominalcapacity - ensure this value is greater than or equal to 0 (type=value_error.number.not_ge; limit_value=0) - parameters -> initialleveloptim - value could not be parsed to a boolean (type=type_error.bool) - pmax_withdrawal - Matrix values should be between 0 and 1 (type=value_error) - """ - assert "parameters -> group" in description - assert "parameters -> injectionnominalcapacity" in description - assert "parameters -> initialleveloptim" in description - assert "pmax_withdrawal" in description + assert "Matrix values should be between 0 and 1" in description + assert "1 validation error for CreateSTStorage" in description diff --git a/tests/integration/variant_blueprint/test_thermal_cluster.py b/tests/integration/variant_blueprint/test_thermal_cluster.py index 3746bf42ac..db78599cee 100644 --- a/tests/integration/variant_blueprint/test_thermal_cluster.py +++ b/tests/integration/variant_blueprint/test_thermal_cluster.py @@ -140,7 +140,7 @@ def test_cascade_update( ) assert res.status_code == http.HTTPStatus.OK, res.json() task = TaskDTO(**res.json()) - assert task.dict() == { + assert task.model_dump() == { "completion_date_utc": mock.ANY, "creation_date_utc": mock.ANY, "id": task_id, diff --git a/tests/integration/variant_blueprint/test_variant_manager.py b/tests/integration/variant_blueprint/test_variant_manager.py index f8d5ef036d..435f7565ac 100644 --- a/tests/integration/variant_blueprint/test_variant_manager.py +++ b/tests/integration/variant_blueprint/test_variant_manager.py @@ -199,7 +199,7 @@ def test_variant_manager( res = client.get(f"/v1/tasks/{res.json()}?wait_for_completion=true", headers=admin_headers) assert res.status_code == 200 - task_result = TaskDTO.parse_obj(res.json()) + task_result = TaskDTO.model_validate(res.json()) assert task_result.status == TaskStatus.COMPLETED assert task_result.result.success # type: ignore @@ -246,7 +246,7 @@ def test_comments(client: TestClient, admin_access_token: str, variant_id: str) # Wait for task completion res = client.get(f"/v1/tasks/{task_id}", headers=admin_headers, params={"wait_for_completion": True}) assert res.status_code == 200 - task_result = TaskDTO.parse_obj(res.json()) + task_result = TaskDTO.model_validate(res.json()) assert task_result.status == TaskStatus.COMPLETED assert task_result.result is not None assert task_result.result.success @@ -320,7 +320,7 @@ def test_outputs(client: TestClient, admin_access_token: str, variant_id: str, t # Wait for task completion res = client.get(f"/v1/tasks/{task_id}", headers=admin_headers, params={"wait_for_completion": True}) res.raise_for_status() - task_result = TaskDTO.parse_obj(res.json()) + task_result = TaskDTO.model_validate(res.json()) assert task_result.status == TaskStatus.COMPLETED assert task_result.result is not None assert task_result.result.success diff --git a/tests/integration/xpansion_studies_blueprint/test_integration_xpansion.py b/tests/integration/xpansion_studies_blueprint/test_integration_xpansion.py index 061ab3e1c7..332b532680 100644 --- a/tests/integration/xpansion_studies_blueprint/test_integration_xpansion.py +++ b/tests/integration/xpansion_studies_blueprint/test_integration_xpansion.py @@ -23,7 +23,6 @@ def _create_area( client: TestClient, - headers: t.Mapping[str, str], study_id: str, area_name: str, *, @@ -31,7 +30,6 @@ def _create_area( ) -> str: res = client.post( f"/v1/studies/{study_id}/areas", - headers=headers, json={"name": area_name, "type": "AREA", "metadata": {"country": country}}, ) assert res.status_code in {200, 201}, res.json() @@ -40,32 +38,28 @@ def _create_area( def _create_link( client: TestClient, - headers: t.Mapping[str, str], study_id: str, src_area_id: str, dst_area_id: str, ) -> None: - res = client.post( - f"/v1/studies/{study_id}/links", - headers=headers, - json={"area1": src_area_id, "area2": dst_area_id}, - ) + res = client.post(f"/v1/studies/{study_id}/links", json={"area1": src_area_id, "area2": dst_area_id}) assert res.status_code in {200, 201}, res.json() def test_integration_xpansion(client: TestClient, tmp_path: Path, admin_access_token: str) -> None: headers = {"Authorization": f"Bearer {admin_access_token}"} + client.headers = headers - res = client.post("/v1/studies", headers=headers, params={"name": "foo", "version": "860"}) + res = client.post("/v1/studies", params={"name": "foo", "version": "860"}) assert res.status_code == 201, res.json() study_id = res.json() - area1_id = _create_area(client, headers, study_id, "area1", country="FR") - area2_id = _create_area(client, headers, study_id, "area2", country="DE") - area3_id = _create_area(client, headers, study_id, "area3", country="DE") - _create_link(client, headers, study_id, area1_id, area2_id) + area1_id = _create_area(client, study_id, "area1", country="FR") + area2_id = _create_area(client, study_id, "area2", country="DE") + area3_id = _create_area(client, study_id, "area3", country="DE") + _create_link(client, study_id, area1_id, area2_id) - res = client.post(f"/v1/studies/{study_id}/extensions/xpansion", headers=headers) + res = client.post(f"/v1/studies/{study_id}/extensions/xpansion") assert res.status_code in {200, 201}, res.json() expansion_path = tmp_path / "internal_workspace" / study_id / "user" / "expansion" @@ -73,9 +67,9 @@ def test_integration_xpansion(client: TestClient, tmp_path: Path, admin_access_t # Create a client for Xpansion with the xpansion URL xpansion_base_url = f"/v1/studies/{study_id}/extensions/xpansion/" - xp_client = TestClient(client.app, base_url=urljoin(client.base_url, xpansion_base_url)) - - res = xp_client.get("settings", headers=headers) + xp_client = TestClient(client.app, base_url=urljoin(str(client.base_url), xpansion_base_url)) + xp_client.headers = headers + res = xp_client.get("settings") assert res.status_code == 200 assert res.json() == { "master": "integer", @@ -94,7 +88,7 @@ def test_integration_xpansion(client: TestClient, tmp_path: Path, admin_access_t "sensitivity_config": {"epsilon": 0.0, "projection": [], "capex": False}, } - res = xp_client.put("settings", headers=headers, json={"optimality_gap": 42}) + res = xp_client.put("settings", json={"optimality_gap": 42}) assert res.status_code == 200 assert res.json() == { "master": "integer", @@ -113,13 +107,13 @@ def test_integration_xpansion(client: TestClient, tmp_path: Path, admin_access_t "sensitivity_config": {"epsilon": 0.0, "projection": [], "capex": False}, } - res = xp_client.put("settings", headers=headers, json={"additional-constraints": "missing.txt"}) + res = xp_client.put("settings", json={"additional-constraints": "missing.txt"}) assert res.status_code == 404 err_obj = res.json() assert re.search(r"file 'missing.txt' does not exist", err_obj["description"]) assert err_obj["exception"] == "XpansionFileNotFoundError" - res = xp_client.put("settings/additional-constraints", headers=headers, params={"filename": "missing.txt"}) + res = xp_client.put("settings/additional-constraints", params={"filename": "missing.txt"}) assert res.status_code == 404 err_obj = res.json() assert re.search(r"file 'missing.txt' does not exist", err_obj["description"]) @@ -139,7 +133,7 @@ def test_integration_xpansion(client: TestClient, tmp_path: Path, admin_access_t "image/jpeg", ) } - res = xp_client.post("resources/constraints", headers=headers, files=files) + res = xp_client.post("resources/constraints", files=files) assert res.status_code in {200, 201} actual_path = expansion_path / "constraints" / filename_constraints1 assert actual_path.read_text() == content_constraints1 @@ -152,7 +146,7 @@ def test_integration_xpansion(client: TestClient, tmp_path: Path, admin_access_t ), } - res = xp_client.post("resources/constraints", headers=headers, files=files) + res = xp_client.post("resources/constraints", files=files) assert res.status_code == 409 err_obj = res.json() assert re.search( @@ -169,7 +163,7 @@ def test_integration_xpansion(client: TestClient, tmp_path: Path, admin_access_t "image/jpeg", ), } - res = xp_client.post("resources/constraints", headers=headers, files=files) + res = xp_client.post("resources/constraints", files=files) assert res.status_code in {200, 201} files = { @@ -179,14 +173,14 @@ def test_integration_xpansion(client: TestClient, tmp_path: Path, admin_access_t "image/jpeg", ), } - res = xp_client.post("resources/constraints", headers=headers, files=files) + res = xp_client.post("resources/constraints", files=files) assert res.status_code in {200, 201} - res = xp_client.get(f"resources/constraints/{filename_constraints1}", headers=headers) + res = xp_client.get(f"resources/constraints/{filename_constraints1}") assert res.status_code == 200 assert res.json() == content_constraints1 - res = xp_client.get("resources/constraints/", headers=headers) + res = xp_client.get("resources/constraints/") assert res.status_code == 200 assert res.json() == [ filename_constraints1, @@ -194,14 +188,10 @@ def test_integration_xpansion(client: TestClient, tmp_path: Path, admin_access_t filename_constraints3, ] - res = xp_client.put( - "settings/additional-constraints", - headers=headers, - params={"filename": filename_constraints1}, - ) + res = xp_client.put("settings/additional-constraints", params={"filename": filename_constraints1}) assert res.status_code == 200 - res = xp_client.delete(f"resources/constraints/{filename_constraints1}", headers=headers) + res = xp_client.delete(f"resources/constraints/{filename_constraints1}") assert res.status_code == 409 err_obj = res.json() assert re.search( @@ -211,10 +201,10 @@ def test_integration_xpansion(client: TestClient, tmp_path: Path, admin_access_t ) assert err_obj["exception"] == "FileCurrentlyUsedInSettings" - res = xp_client.put("settings/additional-constraints", headers=headers) + res = xp_client.put("settings/additional-constraints") assert res.status_code == 200 - res = xp_client.delete(f"resources/constraints/{filename_constraints1}", headers=headers) + res = xp_client.delete(f"resources/constraints/{filename_constraints1}") assert res.status_code == 200 candidate1 = { @@ -223,7 +213,7 @@ def test_integration_xpansion(client: TestClient, tmp_path: Path, admin_access_t "annual-cost-per-mw": 1, "max-investment": 1.0, } - res = xp_client.post("candidates", headers=headers, json=candidate1) + res = xp_client.post("candidates", json=candidate1) assert res.status_code in {200, 201} candidate2 = { @@ -232,7 +222,7 @@ def test_integration_xpansion(client: TestClient, tmp_path: Path, admin_access_t "annual-cost-per-mw": 1, "max-investment": 1.0, } - res = xp_client.post("candidates", headers=headers, json=candidate2) + res = xp_client.post("candidates", json=candidate2) assert res.status_code == 404 err_obj = res.json() assert re.search( @@ -248,7 +238,7 @@ def test_integration_xpansion(client: TestClient, tmp_path: Path, admin_access_t "annual-cost-per-mw": 1, "max-investment": 1.0, } - res = xp_client.post("candidates", headers=headers, json=candidate3) + res = xp_client.post("candidates", json=candidate3) assert res.status_code == 404 err_obj = res.json() assert re.search( @@ -271,12 +261,12 @@ def test_integration_xpansion(client: TestClient, tmp_path: Path, admin_access_t "txt/csv", ) } - res = xp_client.post("resources/capacities", headers=headers, files=files) + res = xp_client.post("resources/capacities", files=files) assert res.status_code in {200, 201} actual_path = expansion_path / "capa" / filename_capa1 assert actual_path.read_text() == content_capa1 - res = xp_client.post("resources/capacities", headers=headers, files=files) + res = xp_client.post("resources/capacities", files=files) assert res.status_code == 409 err_obj = res.json() assert re.search( @@ -293,7 +283,7 @@ def test_integration_xpansion(client: TestClient, tmp_path: Path, admin_access_t "txt/csv", ) } - res = xp_client.post("resources/capacities", headers=headers, files=files) + res = xp_client.post("resources/capacities", files=files) assert res.status_code in {200, 201} files = { @@ -303,11 +293,11 @@ def test_integration_xpansion(client: TestClient, tmp_path: Path, admin_access_t "txt/csv", ) } - res = xp_client.post("resources/capacities", headers=headers, files=files) + res = xp_client.post("resources/capacities", files=files) assert res.status_code in {200, 201} # get single capa - res = xp_client.get(f"resources/capacities/{filename_capa1}", headers=headers) + res = xp_client.get(f"resources/capacities/{filename_capa1}") assert res.status_code == 200 assert res.json() == { "columns": [0], @@ -315,7 +305,7 @@ def test_integration_xpansion(client: TestClient, tmp_path: Path, admin_access_t "index": [0], } - res = xp_client.get("resources/capacities", headers=headers) + res = xp_client.get("resources/capacities") assert res.status_code == 200 assert res.json() == [filename_capa1, filename_capa2, filename_capa3] @@ -326,21 +316,21 @@ def test_integration_xpansion(client: TestClient, tmp_path: Path, admin_access_t "max-investment": 1.0, "link-profile": filename_capa1, } - res = xp_client.post("candidates", headers=headers, json=candidate4) + res = xp_client.post("candidates", json=candidate4) assert res.status_code in {200, 201} - res = xp_client.get(f"candidates/{candidate1['name']}", headers=headers) + res = xp_client.get(f"candidates/{candidate1['name']}") assert res.status_code == 200 - assert res.json() == XpansionCandidateDTO.parse_obj(candidate1).dict(by_alias=True) + assert res.json() == XpansionCandidateDTO.model_validate(candidate1).model_dump(by_alias=True) - res = xp_client.get("candidates", headers=headers) + res = xp_client.get("candidates") assert res.status_code == 200 assert res.json() == [ - XpansionCandidateDTO.parse_obj(candidate1).dict(by_alias=True), - XpansionCandidateDTO.parse_obj(candidate4).dict(by_alias=True), + XpansionCandidateDTO.model_validate(candidate1).model_dump(by_alias=True), + XpansionCandidateDTO.model_validate(candidate4).model_dump(by_alias=True), ] - res = xp_client.delete(f"resources/capacities/{filename_capa1}", headers=headers) + res = xp_client.delete(f"resources/capacities/{filename_capa1}") assert res.status_code == 409 err_obj = res.json() assert re.search( @@ -355,13 +345,13 @@ def test_integration_xpansion(client: TestClient, tmp_path: Path, admin_access_t "annual-cost-per-mw": 1, "max-investment": 1.0, } - res = xp_client.put(f"candidates/{candidate4['name']}", headers=headers, json=candidate5) + res = xp_client.put(f"candidates/{candidate4['name']}", json=candidate5) assert res.status_code == 200 - res = xp_client.delete(f"resources/capacities/{filename_capa1}", headers=headers) + res = xp_client.delete(f"resources/capacities/{filename_capa1}") assert res.status_code == 200 - res = client.delete(f"/v1/studies/{study_id}/extensions/xpansion", headers=headers) + res = client.delete(f"/v1/studies/{study_id}/extensions/xpansion") assert res.status_code == 200 assert not expansion_path.exists() diff --git a/tests/launcher/test_service.py b/tests/launcher/test_service.py index ae56766b2f..0c4904a870 100644 --- a/tests/launcher/test_service.py +++ b/tests/launcher/test_service.py @@ -27,7 +27,7 @@ from antarest.core.config import ( Config, - InvalidConfigurationError, + Launcher, LauncherConfig, LocalConfig, NbCoresConfig, @@ -95,7 +95,7 @@ def test_service_run_study(self, get_current_user_mock) -> None: study_id="study_uuid", job_status=JobStatus.PENDING, launcher="local", - launcher_params=LauncherParametersDTO().json(), + launcher_params=LauncherParametersDTO().model_dump_json(), ) repository = Mock() repository.save.return_value = pending @@ -136,12 +136,12 @@ def test_service_run_study(self, get_current_user_mock) -> None: # so we need to compare them manually. mock_call = repository.save.mock_calls[0] actual_obj: JobResult = mock_call.args[0] - assert actual_obj.to_dto().dict() == pending.to_dto().dict() + assert actual_obj.to_dto().model_dump() == pending.to_dto().model_dump() event_bus.push.assert_called_once_with( Event( type=EventType.STUDY_JOB_STARTED, - payload=pending.to_dto().dict(), + payload=pending.to_dto().model_dump(), permissions=PermissionInfo(owner=0), ) ) @@ -492,11 +492,6 @@ def test_service_get_solver_versions( "unknown", {}, id="local-config-unknown", - marks=pytest.mark.xfail( - reason="Configuration is not available for the 'unknown' launcher", - raises=InvalidConfigurationError, - strict=True, - ), ), pytest.param( { @@ -524,11 +519,6 @@ def test_service_get_solver_versions( "unknown", {}, id="slurm-config-unknown", - marks=pytest.mark.xfail( - reason="Configuration is not available for the 'unknown' launcher", - raises=InvalidConfigurationError, - strict=True, - ), ), pytest.param( { @@ -569,10 +559,13 @@ def test_get_nb_cores( ) # Fetch the number of cores - actual = launcher_service.get_nb_cores(solver) - - # Check the result - assert actual == NbCoresConfig(**expected) + try: + actual = launcher_service.get_nb_cores(Launcher(solver)) + except ValueError as e: + assert e.args[0] == f"'{solver}' is not a valid Launcher" + else: + # Check the result + assert actual == NbCoresConfig(**expected) @pytest.mark.unit_test def test_service_kill_job(self, tmp_path: Path) -> None: @@ -896,7 +889,7 @@ def test_save_solver_stats(self, tmp_path: Path) -> None: solver_stats=expected_saved_stats, owner_id=1, ) - assert actual_obj.to_dto().dict() == expected_obj.to_dto().dict() + assert actual_obj.to_dto().model_dump() == expected_obj.to_dto().model_dump() zip_file = tmp_path / "test.zip" with ZipFile(zip_file, "w", ZIP_DEFLATED) as output_data: @@ -913,7 +906,7 @@ def test_save_solver_stats(self, tmp_path: Path) -> None: solver_stats="0\n1", owner_id=1, ) - assert actual_obj.to_dto().dict() == expected_obj.to_dto().dict() + assert actual_obj.to_dto().model_dump() == expected_obj.to_dto().model_dump() @pytest.mark.parametrize( ["running_jobs", "expected_result", "default_launcher"], @@ -996,7 +989,7 @@ def test_get_load( job_repository.get_running.return_value = running_jobs - launcher_expected_result = LauncherLoadDTO.parse_obj(expected_result) + launcher_expected_result = LauncherLoadDTO.model_validate(expected_result) actual_result = launcher_service.get_load() assert launcher_expected_result.launcher_status == actual_result.launcher_status diff --git a/tests/launcher/test_web.py b/tests/launcher/test_web.py index b59edc783b..e1104f87af 100644 --- a/tests/launcher/test_web.py +++ b/tests/launcher/test_web.py @@ -11,7 +11,7 @@ # This file is part of the Antares project. import http -from typing import Dict, List, Union +from typing import List, Union from unittest.mock import Mock, call from uuid import uuid4 @@ -19,6 +19,7 @@ from fastapi import FastAPI from starlette.testclient import TestClient +from antarest.core.application import create_app_ctxt from antarest.core.config import Config, SecurityConfig from antarest.core.jwt import DEFAULT_ADMIN_USER, JWTGroup, JWTUser from antarest.core.requests import RequestParameters @@ -35,10 +36,9 @@ def create_app(service: Mock) -> FastAPI: - app = FastAPI(title=__name__) - + build_ctxt = create_app_ctxt(FastAPI(title=__name__)) build_launcher( - app, + build_ctxt, study_service=Mock(), file_transfer_manager=Mock(), task_service=Mock(), @@ -46,7 +46,7 @@ def create_app(service: Mock) -> FastAPI: config=Config(security=SecurityConfig(disabled=True)), cache=Mock(), ) - return app + return build_ctxt.build() @pytest.mark.unit_test @@ -86,7 +86,7 @@ def test_result() -> None: res = client.get(f"/v1/launcher/jobs/{job}") assert res.status_code == 200 - assert JobResultDTO.parse_obj(res.json()) == result.to_dto() + assert JobResultDTO.model_validate(res.json()) == result.to_dto() service.get_result.assert_called_once_with(job, RequestParameters(DEFAULT_ADMIN_USER)) @@ -110,11 +110,11 @@ def test_jobs() -> None: client = TestClient(app) res = client.get(f"/v1/launcher/jobs?study={str(study_id)}") assert res.status_code == 200 - assert [JobResultDTO.parse_obj(j) for j in res.json()] == [result.to_dto()] + assert [JobResultDTO.model_validate(j) for j in res.json()] == [result.to_dto()] res = client.get("/v1/launcher/jobs") assert res.status_code == 200 - assert [JobResultDTO.parse_obj(j) for j in res.json()] == [result.to_dto()] + assert [JobResultDTO.model_validate(j) for j in res.json()] == [result.to_dto()] service.get_jobs.assert_has_calls( [ call( @@ -148,7 +148,7 @@ def test_get_solver_versions() -> None: pytest.param( "", http.HTTPStatus.UNPROCESSABLE_ENTITY, - {"detail": "Unknown solver configuration: ''"}, + "Input should be 'slurm', 'local' or 'default'", id="empty", ), pytest.param("default", http.HTTPStatus.OK, ["1", "2", "3"], id="default"), @@ -157,7 +157,7 @@ def test_get_solver_versions() -> None: pytest.param( "remote", http.HTTPStatus.UNPROCESSABLE_ENTITY, - {"detail": "Unknown solver configuration: 'remote'"}, + "Input should be 'slurm', 'local' or 'default'", id="remote", ), ], @@ -165,7 +165,7 @@ def test_get_solver_versions() -> None: def test_get_solver_versions__with_query_string( solver: str, status_code: http.HTTPStatus, - expected: Union[List[str], Dict[str, str]], + expected: Union[List[str], str], ) -> None: service = Mock() if status_code == http.HTTPStatus.OK: @@ -177,7 +177,12 @@ def test_get_solver_versions__with_query_string( client = TestClient(app) res = client.get(f"/v1/launcher/versions?solver={solver}") assert res.status_code == status_code # OK or UNPROCESSABLE_ENTITY - assert res.json() == expected + if status_code == http.HTTPStatus.OK: + assert res.json() == expected + else: + actual = res.json()["detail"][0] + assert actual["type"] == "enum" + assert actual["msg"] == expected @pytest.mark.unit_test diff --git a/tests/login/test_login_service.py b/tests/login/test_login_service.py index f2393eb5d7..0c4c9b756c 100644 --- a/tests/login/test_login_service.py +++ b/tests/login/test_login_service.py @@ -382,7 +382,7 @@ def test_get_group_info(self, login_service: LoginService) -> None: actual = login_service.get_group_info("superman", _param) assert actual is not None assert actual.name == "Superman" - assert [obj.dict() for obj in actual.users] == [ + assert [obj.model_dump() for obj in actual.users] == [ {"id": 2, "name": "Clark Kent", "role": RoleType.ADMIN}, {"id": 3, "name": "Lois Lane", "role": RoleType.READER}, ] @@ -462,7 +462,7 @@ def test_get_user_info(self, login_service: LoginService) -> None: clark_id = 2 actual = login_service.get_user_info(clark_id, _param) assert actual is not None - assert actual.dict() == { + assert actual.model_dump() == { "id": clark_id, "name": "Clark Kent", "roles": [ @@ -480,7 +480,7 @@ def test_get_user_info(self, login_service: LoginService) -> None: lois_id = 3 actual = login_service.get_user_info(lois_id, _param) assert actual is not None - assert actual.dict() == { + assert actual.model_dump() == { "id": lois_id, "name": "Lois Lane", "roles": [ @@ -503,7 +503,7 @@ def test_get_user_info(self, login_service: LoginService) -> None: _param = get_user_param(login_service, user_id=lois_id, group_id="superman") actual = login_service.get_user_info(lois_id, _param) assert actual is not None - assert actual.dict() == { + assert actual.model_dump() == { "id": lois_id, "name": "Lois Lane", "roles": [ @@ -524,7 +524,7 @@ def test_get_user_info(self, login_service: LoginService) -> None: _param = get_bot_param(login_service, bot_id=bot.id) actual = login_service.get_user_info(lois_id, _param) assert actual is not None - assert actual.dict() == { + assert actual.model_dump() == { "id": lois_id, "name": "Lois Lane", "roles": [ @@ -578,13 +578,13 @@ def test_get_bot_info(self, login_service: LoginService) -> None: _param = get_user_param(login_service, user_id=ADMIN_ID, group_id="admin") actual = login_service.get_bot_info(joh_bot.id, _param) assert actual is not None - assert actual.dict() == {"id": 6, "isAuthor": True, "name": "Maria", "roles": []} + assert actual.model_dump() == {"id": 6, "isAuthor": True, "name": "Maria", "roles": []} # Joh Fredersen can get its own bot _param = get_user_param(login_service, user_id=joh_id, group_id="superman") actual = login_service.get_bot_info(joh_bot.id, _param) assert actual is not None - assert actual.dict() == {"id": 6, "isAuthor": True, "name": "Maria", "roles": []} + assert actual.model_dump() == {"id": 6, "isAuthor": True, "name": "Maria", "roles": []} # The bot cannot get itself _param = get_bot_param(login_service, bot_id=joh_bot.id) @@ -613,13 +613,13 @@ def test_get_all_bots_by_owner(self, login_service: LoginService) -> None: _param = get_user_param(login_service, user_id=ADMIN_ID, group_id="admin") actual = login_service.get_all_bots_by_owner(joh_id, _param) expected = [{"id": joh_bot.id, "is_author": True, "name": "Maria", "owner": joh_id}] - assert [obj.to_dto().dict() for obj in actual] == expected + assert [obj.to_dto().model_dump() for obj in actual] == expected # Freder Fredersen can get its own bot _param = get_user_param(login_service, user_id=joh_id, group_id="superman") actual = login_service.get_all_bots_by_owner(joh_id, _param) expected = [{"id": joh_bot.id, "is_author": True, "name": "Maria", "owner": joh_id}] - assert [obj.to_dto().dict() for obj in actual] == expected + assert [obj.to_dto().model_dump() for obj in actual] == expected # The bot cannot get itself _param = get_bot_param(login_service, bot_id=joh_bot.id) @@ -730,7 +730,7 @@ def test_get_all_groups(self, login_service: LoginService) -> None: # The site admin can get all groups _param = get_user_param(login_service, user_id=ADMIN_ID, group_id="admin") actual = login_service.get_all_groups(_param) - assert [g.dict() for g in actual] == [ + assert [g.model_dump() for g in actual] == [ {"id": "admin", "name": "X-Men"}, {"id": "superman", "name": "Superman"}, {"id": "metropolis", "name": "Metropolis"}, @@ -739,19 +739,19 @@ def test_get_all_groups(self, login_service: LoginService) -> None: # The group admin can its own groups _param = get_user_param(login_service, user_id=2, group_id="superman") actual = login_service.get_all_groups(_param) - assert [g.dict() for g in actual] == [{"id": "superman", "name": "Superman"}] + assert [g.model_dump() for g in actual] == [{"id": "superman", "name": "Superman"}] # The user can get its own groups _param = get_user_param(login_service, user_id=3, group_id="superman") actual = login_service.get_all_groups(_param) - assert [g.dict() for g in actual] == [{"id": "superman", "name": "Superman"}] + assert [g.model_dump() for g in actual] == [{"id": "superman", "name": "Superman"}] @with_db_context def test_get_all_users(self, login_service: LoginService) -> None: # The site admin can get all users _param = get_user_param(login_service, user_id=ADMIN_ID, group_id="admin") actual = login_service.get_all_users(_param) - assert [u.dict() for u in actual] == [ + assert [u.model_dump() for u in actual] == [ {"id": 1, "name": "Professor Xavier"}, {"id": 2, "name": "Clark Kent"}, {"id": 3, "name": "Lois Lane"}, @@ -763,7 +763,7 @@ def test_get_all_users(self, login_service: LoginService) -> None: # note: I don't know why the group admin can get all users -- Laurent _param = get_user_param(login_service, user_id=2, group_id="superman") actual = login_service.get_all_users(_param) - assert [u.dict() for u in actual] == [ + assert [u.model_dump() for u in actual] == [ {"id": 1, "name": "Professor Xavier"}, {"id": 2, "name": "Clark Kent"}, {"id": 3, "name": "Lois Lane"}, @@ -774,7 +774,7 @@ def test_get_all_users(self, login_service: LoginService) -> None: # The user can get its own users _param = get_user_param(login_service, user_id=3, group_id="superman") actual = login_service.get_all_users(_param) - assert [u.dict() for u in actual] == [ + assert [u.model_dump() for u in actual] == [ {"id": 2, "name": "Clark Kent"}, {"id": 3, "name": "Lois Lane"}, ] @@ -789,7 +789,7 @@ def test_get_all_bots(self, login_service: LoginService) -> None: # The site admin can get all bots _param = get_user_param(login_service, user_id=ADMIN_ID, group_id="admin") actual = login_service.get_all_bots(_param) - assert [b.to_dto().dict() for b in actual] == [ + assert [b.to_dto().model_dump() for b in actual] == [ {"id": joh_bot.id, "is_author": True, "name": "Maria", "owner": joh_id}, ] @@ -808,7 +808,7 @@ def test_get_all_roles_in_group(self, login_service: LoginService) -> None: # The site admin can get all roles in a given group _param = get_user_param(login_service, user_id=ADMIN_ID, group_id="admin") actual = login_service.get_all_roles_in_group("superman", _param) - assert [b.to_dto().dict() for b in actual] == [ + assert [b.to_dto().model_dump() for b in actual] == [ { "group": {"id": "superman", "name": "Superman"}, "identity": {"id": 2, "name": "Clark Kent"}, @@ -824,7 +824,7 @@ def test_get_all_roles_in_group(self, login_service: LoginService) -> None: # The group admin can get all roles his own group _param = get_user_param(login_service, user_id=2, group_id="superman") actual = login_service.get_all_roles_in_group("superman", _param) - assert [b.to_dto().dict() for b in actual] == [ + assert [b.to_dto().model_dump() for b in actual] == [ { "group": {"id": "superman", "name": "Superman"}, "identity": {"id": 2, "name": "Clark Kent"}, diff --git a/tests/login/test_web.py b/tests/login/test_web.py index fe1cda2230..389dc94cf7 100644 --- a/tests/login/test_web.py +++ b/tests/login/test_web.py @@ -19,12 +19,13 @@ import pytest from fastapi import FastAPI -from fastapi_jwt_auth import AuthJWT from starlette.testclient import TestClient +from antarest.core.application import AppBuildContext, create_app_ctxt from antarest.core.config import Config, SecurityConfig from antarest.core.jwt import JWTGroup, JWTUser from antarest.core.requests import RequestParameters +from antarest.fastapi_jwt_auth import AuthJWT from antarest.login.main import build_login from antarest.login.model import ( Bot, @@ -63,15 +64,16 @@ def get_config(): authjwt_token_location=("headers", "cookies"), ) + app_ctxt = create_app_ctxt(app) build_login( - app, + app_ctxt, service=service, config=Config( resources_path=Path(), security=SecurityConfig(disabled=auth_disabled), ), ) - return app + return app_ctxt.build() class TokenType: @@ -189,7 +191,7 @@ def test_user() -> None: client = TestClient(app) res = client.get("/v1/users", headers=create_auth_token(app)) assert res.status_code == 200 - assert res.json() == [User(id=1, name="user").to_dto().dict()] + assert res.json() == [User(id=1, name="user").to_dto().model_dump()] @pytest.mark.unit_test @@ -201,7 +203,7 @@ def test_user_id() -> None: client = TestClient(app) res = client.get("/v1/users/1", headers=create_auth_token(app)) assert res.status_code == 200 - assert res.json() == User(id=1, name="user").to_dto().dict() + assert res.json() == User(id=1, name="user").to_dto().model_dump() @pytest.mark.unit_test @@ -213,7 +215,7 @@ def test_user_id_with_details() -> None: client = TestClient(app) res = client.get("/v1/users/1?details=true", headers=create_auth_token(app)) assert res.status_code == 200 - assert res.json() == IdentityDTO(id=1, name="user", roles=[]).dict() + assert res.json() == IdentityDTO(id=1, name="user", roles=[]).model_dump() @pytest.mark.unit_test @@ -228,12 +230,12 @@ def test_user_create() -> None: res = client.post( "/v1/users", headers=create_auth_token(app), - json=user.dict(), + json=user.model_dump(), ) assert res.status_code == 200 service.create_user.assert_called_once_with(user, PARAMS) - assert res.json() == user_id.to_dto().dict() + assert res.json() == user_id.to_dto().model_dump() @pytest.mark.unit_test @@ -244,7 +246,7 @@ def test_user_save() -> None: app = create_app(service) client = TestClient(app) - user_obj = user.to_dto().dict() + user_obj = user.to_dto().model_dump() res = client.put( "/v1/users/0", headers=create_auth_token(app), @@ -256,7 +258,7 @@ def test_user_save() -> None: assert service.save_user.call_count == 1 call = service.save_user.call_args_list[0] - assert call[0][0].to_dto().dict() == user_obj + assert call[0][0].to_dto().model_dump() == user_obj assert call[0][1] == PARAMS @@ -281,7 +283,7 @@ def test_group() -> None: client = TestClient(app) res = client.get("/v1/groups", headers=create_auth_token(app)) assert res.status_code == 200 - assert res.json() == [Group(id="my-group", name="group").to_dto().dict()] + assert res.json() == [Group(id="my-group", name="group").to_dto().model_dump()] @pytest.mark.unit_test @@ -293,7 +295,7 @@ def test_group_id() -> None: client = TestClient(app) res = client.get("/v1/groups/1", headers=create_auth_token(app)) assert res.status_code == 200 - assert res.json() == Group(id="my-group", name="group").to_dto().dict() + assert res.json() == Group(id="my-group", name="group").to_dto().model_dump() @pytest.mark.unit_test @@ -311,7 +313,7 @@ def test_group_create() -> None: ) assert res.status_code == 200 - assert res.json() == group.to_dto().dict() + assert res.json() == group.to_dto().model_dump() @pytest.mark.unit_test @@ -341,7 +343,7 @@ def test_role() -> None: client = TestClient(app) res = client.get("/v1/roles/group/g", headers=create_auth_token(app)) assert res.status_code == 200 - assert [RoleDetailDTO.parse_obj(el) for el in res.json()] == [role.to_dto()] + assert [RoleDetailDTO.model_validate(el) for el in res.json()] == [role.to_dto()] @pytest.mark.unit_test @@ -363,7 +365,7 @@ def test_role_create() -> None: ) assert res.status_code == 200 - assert RoleDetailDTO.parse_obj(res.json()) == role.to_dto().dict() + assert RoleDetailDTO.model_validate(res.json()) == role.to_dto() @pytest.mark.unit_test @@ -403,10 +405,10 @@ def test_bot_create() -> None: service.save_bot.return_value = bot service.get_group.return_value = Group(id="group", name="group") - print(create.json()) + create.model_dump_json() app = create_app(service) client = TestClient(app) - res = client.post("/v1/bots", headers=create_auth_token(app), json=create.dict()) + res = client.post("/v1/bots", headers=create_auth_token(app), json=create.model_dump()) assert res.status_code == 200 assert len(res.json().split(".")) == 3 @@ -422,7 +424,7 @@ def test_bot() -> None: client = TestClient(app) res = client.get("/v1/bots/0", headers=create_auth_token(app)) assert res.status_code == 200 - assert res.json() == bot.to_dto().dict() + assert res.json() == bot.to_dto().model_dump() @pytest.mark.unit_test @@ -436,11 +438,11 @@ def test_all_bots() -> None: client = TestClient(app) res = client.get("/v1/bots", headers=create_auth_token(app)) assert res.status_code == 200 - assert res.json() == [b.to_dto().dict() for b in bots] + assert res.json() == [b.to_dto().model_dump() for b in bots] res = client.get("/v1/bots?owner=4", headers=create_auth_token(app)) assert res.status_code == 200 - assert res.json() == [b.to_dto().dict() for b in bots] + assert res.json() == [b.to_dto().model_dump() for b in bots] service.get_all_bots.assert_called_once() service.get_all_bots_by_owner.assert_called_once() diff --git a/tests/matrixstore/test_matrix_editor.py b/tests/matrixstore/test_matrix_editor.py index ad46b316fa..229e9e53f3 100644 --- a/tests/matrixstore/test_matrix_editor.py +++ b/tests/matrixstore/test_matrix_editor.py @@ -82,7 +82,7 @@ class TestMatrixSlice: ) def test_init(self, kwargs: Dict[str, Any], expected: Dict[str, Any]) -> None: obj = MatrixSlice(**kwargs) - assert obj.dict(by_alias=False) == expected + assert obj.model_dump(by_alias=False) == expected class TestOperation: @@ -109,12 +109,12 @@ class TestOperation: ) def test_init(self, kwargs: Dict[str, Any], expected: Dict[str, Any]) -> None: obj = Operation(**kwargs) - assert obj.dict(by_alias=False) == expected + assert obj.model_dump(by_alias=False) == expected @pytest.mark.parametrize("operation", list(OPERATIONS)) def test_init__valid_operation(self, operation: str) -> None: obj = Operation(operation=operation, value=123) - assert obj.dict(by_alias=False) == { + assert obj.model_dump(by_alias=False) == { "operation": operation, "value": 123.0, } @@ -204,4 +204,4 @@ class TestMatrixEditInstruction: ) def test_init(self, kwargs: Dict[str, Any], expected: Dict[str, Any]) -> None: obj = MatrixEditInstruction(**kwargs) - assert obj.dict(by_alias=False) == expected + assert obj.model_dump(by_alias=False) == expected diff --git a/tests/matrixstore/test_service.py b/tests/matrixstore/test_service.py index 584db35013..65ce952e1d 100644 --- a/tests/matrixstore/test_service.py +++ b/tests/matrixstore/test_service.py @@ -497,12 +497,8 @@ def test_dataset_lifecycle() -> None: dataset_repo.delete.assert_called_once() -def _create_upload_file(filename: str, file: io.BytesIO, content_type: str = "") -> UploadFile: - if hasattr(UploadFile, "content_type"): - # `content_type` attribute was replace by a read-ony property in starlette-v0.24. - headers = Headers(headers={"content-type": content_type}) - # noinspection PyTypeChecker,PyArgumentList - return UploadFile(filename=filename, file=file, headers=headers) - else: - # noinspection PyTypeChecker,PyArgumentList - return UploadFile(filename=filename, file=file, content_type=content_type) +def _create_upload_file(filename: str, file: t.IO = None, content_type: str = "") -> UploadFile: + # `content_type` attribute was replace by a read-ony property in starlette-v0.24. + headers = Headers(headers={"content-type": content_type}) + # noinspection PyTypeChecker,PyArgumentList + return UploadFile(filename=filename, file=file, headers=headers) diff --git a/tests/matrixstore/test_web.py b/tests/matrixstore/test_web.py index 2879b07bf4..d47fb030bc 100644 --- a/tests/matrixstore/test_web.py +++ b/tests/matrixstore/test_web.py @@ -15,10 +15,11 @@ import pytest from fastapi import FastAPI -from fastapi_jwt_auth import AuthJWT from starlette.testclient import TestClient +from antarest.core.application import create_app_ctxt from antarest.core.config import Config, SecurityConfig +from antarest.fastapi_jwt_auth import AuthJWT from antarest.main import JwtSettings from antarest.matrixstore.main import build_matrix_service from antarest.matrixstore.model import MatrixDTO, MatrixInfoDTO @@ -26,7 +27,7 @@ def create_app(service: Mock, auth_disabled=False) -> FastAPI: - app = FastAPI(title=__name__) + build_ctxt = create_app_ctxt(FastAPI(title=__name__)) @AuthJWT.load_config def get_config(): @@ -37,7 +38,7 @@ def get_config(): ) build_matrix_service( - app, + build_ctxt, user_service=Mock(), file_transfer_manager=Mock(), task_service=Mock(), @@ -47,7 +48,7 @@ def get_config(): security=SecurityConfig(disabled=auth_disabled), ), ) - return app + return build_ctxt.build() @pytest.mark.unit_test @@ -74,7 +75,7 @@ def test_create() -> None: json=matrix_data, ) assert res.status_code == 200 - assert res.json() == matrix.dict() + assert res.json() == matrix.model_dump() @pytest.mark.unit_test @@ -96,7 +97,7 @@ def test_get() -> None: client = TestClient(app) res = client.get("/v1/matrix/123", headers=create_auth_token(app)) assert res.status_code == 200 - assert res.json() == matrix.dict() + assert res.json() == matrix.model_dump() service.get.assert_called_once_with("123") @@ -126,4 +127,4 @@ def test_import() -> None: files={"file": ("Matrix.zip", bytes(5), "application/zip")}, ) assert res.status_code == 200 - assert res.json() == matrix_info + assert [MatrixInfoDTO.model_validate(res.json()[0])] == matrix_info diff --git a/tests/storage/business/test_arealink_manager.py b/tests/storage/business/test_arealink_manager.py index a5e94e983c..cb1d29c971 100644 --- a/tests/storage/business/test_arealink_manager.py +++ b/tests/storage/business/test_arealink_manager.py @@ -174,35 +174,36 @@ def test_area_crud(empty_study: FileStudy, matrix_service: SimpleMatrixService): variant_id, [ CommandDTO( + id=None, action=CommandName.UPDATE_CONFIG.value, args=[ { "target": "input/areas/test/ui/ui/x", - "data": "100", + "data": 100, }, { "target": "input/areas/test/ui/ui/y", - "data": "200", + "data": 200, }, { "target": "input/areas/test/ui/ui/color_r", - "data": "255", + "data": 255, }, { "target": "input/areas/test/ui/ui/color_g", - "data": "0", + "data": 0, }, { "target": "input/areas/test/ui/ui/color_b", - "data": "100", + "data": 100, }, { "target": "input/areas/test/ui/layerX/0", - "data": "100", + "data": 100, }, { "target": "input/areas/test/ui/layerY/0", - "data": "200", + "data": 200, }, { "target": "input/areas/test/ui/layerColor/0", @@ -302,7 +303,7 @@ def test_get_all_area(): area_manager.patch_service = Mock() area_manager.patch_service.get.return_value = Patch( areas={"a1": PatchArea(country="fr")}, - thermal_clusters={"a1.a": PatchCluster.parse_obj({"code-oi": "1"})}, + thermal_clusters={"a1.a": PatchCluster.model_validate({"code-oi": "1"})}, ) file_tree_mock.get.side_effect = [ { @@ -362,7 +363,7 @@ def test_get_all_area(): }, ] areas = area_manager.get_all_areas(study, AreaType.AREA) - assert expected_areas == [area.dict() for area in areas] + assert expected_areas == [area.model_dump() for area in areas] expected_clusters = [ { @@ -375,7 +376,7 @@ def test_get_all_area(): } ] clusters = area_manager.get_all_areas(study, AreaType.DISTRICT) - assert expected_clusters == [area.dict() for area in clusters] + assert expected_clusters == [area.model_dump() for area in clusters] file_tree_mock.get.side_effect = [{}, {}, {}] expected_all = [ @@ -413,14 +414,14 @@ def test_get_all_area(): }, ] all_areas = area_manager.get_all_areas(study) - assert expected_all == [area.dict() for area in all_areas] + assert expected_all == [area.model_dump() for area in all_areas] links = link_manager.get_all_links(study) assert [ {"area1": "a1", "area2": "a2", "ui": None}, {"area1": "a1", "area2": "a3", "ui": None}, {"area1": "a2", "area2": "a3", "ui": None}, - ] == [link.dict() for link in links] + ] == [link.model_dump() for link in links] def test_update_area(): @@ -463,7 +464,7 @@ def test_update_area(): new_area_info = area_manager.update_area_metadata(study, "a1", PatchArea(country="fr")) assert new_area_info.id == "a1" - assert new_area_info.metadata == {"country": "fr", "tags": []} + assert new_area_info.metadata.model_dump() == {"country": "fr", "tags": []} def test_update_clusters(): @@ -496,7 +497,7 @@ def test_update_clusters(): area_manager.patch_service = Mock() area_manager.patch_service.get.return_value = Patch( areas={"a1": PatchArea(country="fr")}, - thermal_clusters={"a1.a": PatchCluster.parse_obj({"code-oi": "1"})}, + thermal_clusters={"a1.a": PatchCluster.model_validate({"code-oi": "1"})}, ) file_tree_mock.get.side_effect = [ { diff --git a/tests/storage/business/test_config_manager.py b/tests/storage/business/test_config_manager.py index d35bcd78f2..f89a4438be 100644 --- a/tests/storage/business/test_config_manager.py +++ b/tests/storage/business/test_config_manager.py @@ -31,7 +31,7 @@ def test_thematic_trimming_config() -> None: - command_context = CommandContext.construct() + command_context = CommandContext.model_construct() command_factory_mock = Mock() command_factory_mock.command_context = command_context raw_study_service = Mock(spec=RawStudyService) @@ -66,27 +66,27 @@ def test_thematic_trimming_config() -> None: study.version = config.version = 700 actual = thematic_trimming_manager.get_field_values(study) - fields_info = get_fields_info(study.version) + fields_info = get_fields_info(int(study.version)) expected = ThematicTrimmingFormFields(**dict.fromkeys(fields_info, True)) assert actual == expected study.version = config.version = 800 actual = thematic_trimming_manager.get_field_values(study) - fields_info = get_fields_info(study.version) + fields_info = get_fields_info(int(study.version)) expected = ThematicTrimmingFormFields(**dict.fromkeys(fields_info, True)) expected.avl_dtg = False assert actual == expected study.version = config.version = 820 actual = thematic_trimming_manager.get_field_values(study) - fields_info = get_fields_info(study.version) + fields_info = get_fields_info(int(study.version)) expected = ThematicTrimmingFormFields(**dict.fromkeys(fields_info, True)) expected.avl_dtg = False assert actual == expected study.version = config.version = 830 actual = thematic_trimming_manager.get_field_values(study) - fields_info = get_fields_info(study.version) + fields_info = get_fields_info(int(study.version)) expected = ThematicTrimmingFormFields(**dict.fromkeys(fields_info, True)) expected.dens = False expected.profit_by_plant = False @@ -94,7 +94,7 @@ def test_thematic_trimming_config() -> None: study.version = config.version = 840 actual = thematic_trimming_manager.get_field_values(study) - fields_info = get_fields_info(study.version) + fields_info = get_fields_info(int(study.version)) expected = ThematicTrimmingFormFields(**dict.fromkeys(fields_info, False)) expected.cong_fee_alg = True assert actual == expected diff --git a/tests/storage/business/test_patch_service.py b/tests/storage/business/test_patch_service.py index 04a2b8c2dd..3abb8790f0 100644 --- a/tests/storage/business/test_patch_service.py +++ b/tests/storage/business/test_patch_service.py @@ -194,7 +194,7 @@ def test_set_output_ref(self, tmp_path: Path): additional_data=StudyAdditionalData( author="john.doe", horizon="foo-horizon", - patch=patch_outputs.json(), + patch=patch_outputs.model_dump_json(), ), archived=False, owner=None, diff --git a/tests/storage/business/test_timeseries_config_manager.py b/tests/storage/business/test_timeseries_config_manager.py index c93c3a597d..3bc7cd0ad9 100644 --- a/tests/storage/business/test_timeseries_config_manager.py +++ b/tests/storage/business/test_timeseries_config_manager.py @@ -56,7 +56,7 @@ def file_study_720(tmpdir: Path) -> FileStudy: def test_ts_field_values(file_study_820: FileStudy, file_study_720: FileStudy): command_factory_mock = Mock() - command_factory_mock.command_context = CommandContext.construct() + command_factory_mock.command_context = CommandContext.model_construct() raw_study_service = Mock(spec=RawStudyService) diff --git a/tests/storage/business/test_xpansion_manager.py b/tests/storage/business/test_xpansion_manager.py index c1b5e7de62..5c08c72242 100644 --- a/tests/storage/business/test_xpansion_manager.py +++ b/tests/storage/business/test_xpansion_manager.py @@ -209,7 +209,7 @@ def test_get_xpansion_settings(tmp_path: Path, version: int, expected_output: JS xpansion_manager.create_xpansion_configuration(study) actual = xpansion_manager.get_xpansion_settings(study) - assert actual.dict(by_alias=True) == expected_output + assert actual.model_dump(by_alias=True) == expected_output @pytest.mark.unit_test @@ -256,7 +256,7 @@ def test_update_xpansion_settings(tmp_path: Path) -> None: "timelimit": int(1e12), "sensitivity_config": {"epsilon": 10500.0, "projection": ["foo"], "capex": False}, } - assert actual.dict(by_alias=True) == expected + assert actual.model_dump(by_alias=True) == expected @pytest.mark.unit_test @@ -266,7 +266,7 @@ def test_add_candidate(tmp_path: Path) -> None: actual = empty_study.tree.get(["user", "expansion", "candidates"]) assert actual == {} - new_candidate = XpansionCandidateDTO.parse_obj( + new_candidate = XpansionCandidateDTO.model_validate( { "name": "candidate_1", "link": "area1 - area2", @@ -275,7 +275,7 @@ def test_add_candidate(tmp_path: Path) -> None: } ) - new_candidate2 = XpansionCandidateDTO.parse_obj( + new_candidate2 = XpansionCandidateDTO.model_validate( { "name": "candidate_2", "link": "area1 - area2", @@ -296,13 +296,13 @@ def test_add_candidate(tmp_path: Path) -> None: xpansion_manager.add_candidate(study, new_candidate) - candidates = {"1": new_candidate.dict(by_alias=True, exclude_none=True)} + candidates = {"1": new_candidate.model_dump(by_alias=True, exclude_none=True)} actual = empty_study.tree.get(["user", "expansion", "candidates"]) assert actual == candidates xpansion_manager.add_candidate(study, new_candidate2) - candidates["2"] = new_candidate2.dict(by_alias=True, exclude_none=True) + candidates["2"] = new_candidate2.model_dump(by_alias=True, exclude_none=True) actual = empty_study.tree.get(["user", "expansion", "candidates"]) assert actual == candidates @@ -314,7 +314,7 @@ def test_get_candidate(tmp_path: Path) -> None: assert empty_study.tree.get(["user", "expansion", "candidates"]) == {} - new_candidate = XpansionCandidateDTO.parse_obj( + new_candidate = XpansionCandidateDTO.model_validate( { "name": "candidate_1", "link": "area1 - area2", @@ -323,7 +323,7 @@ def test_get_candidate(tmp_path: Path) -> None: } ) - new_candidate2 = XpansionCandidateDTO.parse_obj( + new_candidate2 = XpansionCandidateDTO.model_validate( { "name": "candidate_2", "link": "area1 - area2", @@ -347,7 +347,7 @@ def test_get_candidates(tmp_path: Path) -> None: assert empty_study.tree.get(["user", "expansion", "candidates"]) == {} - new_candidate = XpansionCandidateDTO.parse_obj( + new_candidate = XpansionCandidateDTO.model_validate( { "name": "candidate_1", "link": "area1 - area2", @@ -356,7 +356,7 @@ def test_get_candidates(tmp_path: Path) -> None: } ) - new_candidate2 = XpansionCandidateDTO.parse_obj( + new_candidate2 = XpansionCandidateDTO.model_validate( { "name": "candidate_2", "link": "area1 - area2", @@ -384,7 +384,7 @@ def test_update_candidates(tmp_path: Path) -> None: make_link_and_areas(empty_study) - new_candidate = XpansionCandidateDTO.parse_obj( + new_candidate = XpansionCandidateDTO.model_validate( { "name": "candidate_1", "link": "area1 - area2", @@ -394,7 +394,7 @@ def test_update_candidates(tmp_path: Path) -> None: ) xpansion_manager.add_candidate(study, new_candidate) - new_candidate2 = XpansionCandidateDTO.parse_obj( + new_candidate2 = XpansionCandidateDTO.model_validate( { "name": "candidate_1", "link": "area1 - area2", @@ -415,7 +415,7 @@ def test_delete_candidate(tmp_path: Path) -> None: make_link_and_areas(empty_study) - new_candidate = XpansionCandidateDTO.parse_obj( + new_candidate = XpansionCandidateDTO.model_validate( { "name": "candidate_1", "link": "area1 - area2", @@ -425,7 +425,7 @@ def test_delete_candidate(tmp_path: Path) -> None: ) xpansion_manager.add_candidate(study, new_candidate) - new_candidate2 = XpansionCandidateDTO.parse_obj( + new_candidate2 = XpansionCandidateDTO.model_validate( { "name": "candidate_2", "link": "area1 - area2", @@ -500,14 +500,14 @@ def test_add_resources(tmp_path: Path) -> None: settings = xpansion_manager.get_xpansion_settings(study) settings.yearly_weights = filename3 - update_settings = UpdateXpansionSettings(**settings.dict()) + update_settings = UpdateXpansionSettings(**settings.model_dump()) xpansion_manager.update_xpansion_settings(study, update_settings) with pytest.raises(FileCurrentlyUsedInSettings): xpansion_manager.delete_resource(study, XpansionResourceFileType.WEIGHTS, filename3) settings.yearly_weights = "" - update_settings = UpdateXpansionSettings(**settings.dict()) + update_settings = UpdateXpansionSettings(**settings.model_dump()) xpansion_manager.update_xpansion_settings(study, update_settings) xpansion_manager.delete_resource(study, XpansionResourceFileType.WEIGHTS, filename3) diff --git a/tests/storage/integration/conftest.py b/tests/storage/integration/conftest.py index 1136f3ca8a..dcf7e5e830 100644 --- a/tests/storage/integration/conftest.py +++ b/tests/storage/integration/conftest.py @@ -109,7 +109,7 @@ def storage_service(tmp_path: Path, project_path: Path, sta_mini_zip_path: Path) ) matrix_service = SimpleMatrixService(matrix_content_repository=matrix_content_repository) storage_service = build_study_service( - application=Mock(), + app_ctxt=Mock(), cache=LocalCache(config=config.cache), file_transfer_manager=Mock(), task_service=task_service_mock, diff --git a/tests/storage/integration/test_STA_mini.py b/tests/storage/integration/test_STA_mini.py index ca7904a075..35aaa4092d 100644 --- a/tests/storage/integration/test_STA_mini.py +++ b/tests/storage/integration/test_STA_mini.py @@ -22,6 +22,7 @@ from fastapi import FastAPI from starlette.testclient import TestClient +from antarest.core.application import create_app_ctxt from antarest.core.jwt import DEFAULT_ADMIN_USER, JWTGroup, JWTUser from antarest.core.model import JSON from antarest.core.requests import RequestParameters @@ -46,19 +47,23 @@ ) -def assert_url_content(storage_service: StudyService, url: str, expected_output: dict) -> None: - app = FastAPI(title=__name__) +def create_test_client(service: StudyService) -> TestClient: + build_ctxt = create_app_ctxt(FastAPI(title=__name__)) build_study_service( - app, + build_ctxt, cache=Mock(), user_service=Mock(), task_service=Mock(), file_transfer_manager=Mock(), - study_service=storage_service, + study_service=service, matrix_service=Mock(spec=MatrixService), - config=storage_service.storage_service.raw_study_service.config, + config=service.storage_service.raw_study_service.config, ) - client = TestClient(app) + return TestClient(build_ctxt.build()) + + +def assert_url_content(storage_service: StudyService, url: str, expected_output: dict) -> None: + client = create_test_client(storage_service) res = client.get(url) assert_study(res.json(), expected_output) @@ -493,18 +498,7 @@ def test_sta_mini_copy(storage_service) -> None: source_study_name = UUID destination_study_name = "copy-STA-mini" - app = FastAPI(title=__name__) - build_study_service( - app, - cache=Mock(), - user_service=Mock(), - task_service=Mock(), - file_transfer_manager=Mock(), - study_service=storage_service, - matrix_service=Mock(spec=MatrixService), - config=storage_service.storage_service.raw_study_service.config, - ) - client = TestClient(app) + client = create_test_client(storage_service) result = client.post(f"/v1/studies/{source_study_name}/copy?dest={destination_study_name}&use_task=false") assert result.status_code == HTTPStatus.CREATED.value @@ -590,18 +584,7 @@ def test_sta_mini_import(tmp_path: Path, storage_service) -> None: sta_mini_zip_filepath = shutil.make_archive(tmp_path, "zip", path_study) sta_mini_zip_path = Path(sta_mini_zip_filepath) - app = FastAPI(title=__name__) - build_study_service( - app, - cache=Mock(), - task_service=Mock(), - file_transfer_manager=Mock(), - study_service=storage_service, - user_service=Mock(), - matrix_service=Mock(spec=MatrixService), - config=storage_service.storage_service.raw_study_service.config, - ) - client = TestClient(app) + client = create_test_client(storage_service) study_data = io.BytesIO(sta_mini_zip_path.read_bytes()) result = client.post("/v1/studies/_import", files={"study": study_data}) @@ -620,18 +603,7 @@ def test_sta_mini_import_output(tmp_path: Path, storage_service) -> None: sta_mini_output_zip_path = Path(sta_mini_output_zip_filepath) - app = FastAPI(title=__name__) - build_study_service( - app, - cache=Mock(), - task_service=Mock(), - file_transfer_manager=Mock(), - study_service=storage_service, - user_service=Mock(), - matrix_service=Mock(spec=MatrixService), - config=storage_service.storage_service.raw_study_service.config, - ) - client = TestClient(app) + client = create_test_client(storage_service) study_output_data = io.BytesIO(sta_mini_output_zip_path.read_bytes()) result = client.post( diff --git a/tests/storage/integration/test_exporter.py b/tests/storage/integration/test_exporter.py index 2da0686302..46e077a9ca 100644 --- a/tests/storage/integration/test_exporter.py +++ b/tests/storage/integration/test_exporter.py @@ -21,6 +21,7 @@ from fastapi import FastAPI from starlette.testclient import TestClient +from antarest.core.application import create_app_ctxt from antarest.core.config import Config, SecurityConfig, StorageConfig, WorkspaceConfig from antarest.core.filetransfer.model import FileDownloadTaskDTO from antarest.core.jwt import DEFAULT_ADMIN_USER @@ -54,10 +55,10 @@ def assert_url_content(url: str, tmp_dir: Path, sta_mini_zip_path: Path) -> byte repo = Mock() repo.get.return_value = md - app = FastAPI(title=__name__) + build_ctxt = create_app_ctxt(FastAPI(title=__name__)) ftm = SimpleFileTransferManager(Config(storage=StorageConfig(tmp_dir=tmp_dir))) build_study_service( - app, + build_ctxt, cache=Mock(), user_service=Mock(), task_service=SimpleSyncTaskService(), @@ -69,7 +70,7 @@ def assert_url_content(url: str, tmp_dir: Path, sta_mini_zip_path: Path) -> byte ) # Simulate the download of data using a streamed request - client = TestClient(app) + client = TestClient(build_ctxt.build()) if client.stream is False: # `TestClient` is based on `Requests` (old way before AntaREST-v2.15) # noinspection PyArgumentList diff --git a/tests/storage/rawstudies/test_factory.py b/tests/storage/rawstudies/test_factory.py index 62f9c70519..80b2a2e19c 100644 --- a/tests/storage/rawstudies/test_factory.py +++ b/tests/storage/rawstudies/test_factory.py @@ -65,8 +65,8 @@ def test_factory_cache() -> None: cache.get.return_value = None study = factory.create_from_fs(path, study_id) assert study.config == config - cache.put.assert_called_once_with(cache_id, FileStudyTreeConfigDTO.from_build_config(config).dict()) + cache.put.assert_called_once_with(cache_id, FileStudyTreeConfigDTO.from_build_config(config).model_dump()) - cache.get.return_value = FileStudyTreeConfigDTO.from_build_config(config).dict() + cache.get.return_value = FileStudyTreeConfigDTO.from_build_config(config).model_dump() study = factory.create_from_fs(path, study_id) assert study.config == config diff --git a/tests/storage/repository/filesystem/config/test_config_files.py b/tests/storage/repository/filesystem/config/test_config_files.py index dbd62de305..a0fdf6d4f5 100644 --- a/tests/storage/repository/filesystem/config/test_config_files.py +++ b/tests/storage/repository/filesystem/config/test_config_files.py @@ -415,7 +415,7 @@ def test_parse_thermal_860(study_path: Path, version, caplog) -> None: assert not caplog.text else: expected = [ThermalConfig(id="t1", name="t1")] - assert "extra fields not permitted" in caplog.text + assert "Extra inputs are not permitted" in caplog.text assert actual == expected diff --git a/tests/storage/test_model.py b/tests/storage/test_model.py index c94e437b86..f59ce30137 100644 --- a/tests/storage/test_model.py +++ b/tests/storage/test_model.py @@ -67,5 +67,5 @@ def test_file_study_tree_config_dto(): enr_modelling="aggregated", ) config_dto = FileStudyTreeConfigDTO.from_build_config(config) - assert sorted(list(config_dto.dict()) + ["cache"]) == sorted(list(config.__dict__)) + assert sorted(list(config_dto.model_dump()) + ["cache"]) == sorted(list(config.__dict__)) assert config_dto.to_build_config() == config diff --git a/tests/storage/test_service.py b/tests/storage/test_service.py index e10cff9df6..47ba9fe49c 100644 --- a/tests/storage/test_service.py +++ b/tests/storage/test_service.py @@ -597,7 +597,7 @@ def test_download_output() -> None: name="east", type=StudyDownloadType.AREA, data={ - 1: [ + "1": [ TimeSerie(name="H. VAL", unit="Euro/MWh", data=[0.5]), TimeSerie(name="some cluster", unit="Euro/MWh", data=[0.8]), ] @@ -661,7 +661,7 @@ def test_download_output() -> None: TimeSeriesData( name="east^west", type=StudyDownloadType.LINK, - data={1: [TimeSerie(name="H. VAL", unit="Euro/MWh", data=[0.5])]}, + data={"1": [TimeSerie(name="H. VAL", unit="Euro/MWh", data=[0.5])]}, ) ], warnings=[], @@ -695,7 +695,7 @@ def test_download_output() -> None: name="north", type=StudyDownloadType.DISTRICT, data={ - 1: [ + "1": [ TimeSerie(name="H. VAL", unit="Euro/MWh", data=[0.5]), TimeSerie(name="some cluster", unit="Euro/MWh", data=[0.8]), ] @@ -1391,7 +1391,7 @@ def test_unarchive_output(tmp_path: Path) -> None: src=str(tmp_path / "output" / f"{output_id}.zip"), dest=str(tmp_path / "output" / output_id), remove_src=False, - ).dict(), + ).model_dump(), name=f"Unarchive output {study_name}/{output_id} ({study_id})", ref_id=study_id, request_params=RequestParameters(user=DEFAULT_ADMIN_USER), @@ -1522,7 +1522,7 @@ def test_archive_output_locks(tmp_path: Path) -> None: src=str(tmp_path / "output" / f"{output_id}.zip"), dest=str(tmp_path / "output" / output_id), remove_src=False, - ).dict(), + ).model_dump(), name=f"Unarchive output {study_name}/{output_id} ({study_id})", ref_id=study_id, request_params=RequestParameters(user=DEFAULT_ADMIN_USER), diff --git a/tests/storage/web/test_studies_bp.py b/tests/storage/web/test_studies_bp.py index bb538fdb51..33cedcc8df 100644 --- a/tests/storage/web/test_studies_bp.py +++ b/tests/storage/web/test_studies_bp.py @@ -24,9 +24,11 @@ from markupsafe import Markup from starlette.testclient import TestClient +from antarest.core.application import create_app_ctxt from antarest.core.config import Config, SecurityConfig, StorageConfig, WorkspaceConfig from antarest.core.exceptions import UrlNotMatchJsonDataError from antarest.core.filetransfer.model import FileDownloadDTO, FileDownloadTaskDTO +from antarest.core.filetransfer.service import FileTransferManager from antarest.core.jwt import JWTGroup, JWTUser from antarest.core.requests import RequestParameters from antarest.core.roles import RoleType @@ -48,6 +50,7 @@ TimeSerie, TimeSeriesData, ) +from antarest.study.service import StudyService from tests.storage.conftest import SimpleFileTransferManager from tests.storage.integration.conftest import UUID @@ -66,23 +69,29 @@ ) -@pytest.mark.unit_test -def test_server() -> None: - mock_service = Mock() - mock_service.get.return_value = {} - - app = FastAPI(title=__name__) +def create_test_client( + service: StudyService, file_transfer_manager: FileTransferManager = Mock(), raise_server_exceptions: bool = True +) -> TestClient: + app_ctxt = create_app_ctxt(FastAPI(title=__name__)) build_study_service( - app, + app_ctxt, cache=Mock(), task_service=Mock(), - file_transfer_manager=Mock(), - study_service=mock_service, + file_transfer_manager=file_transfer_manager, + study_service=service, config=CONFIG, user_service=Mock(), matrix_service=Mock(spec=MatrixService), ) - client = TestClient(app) + return TestClient(app_ctxt.build(), raise_server_exceptions=raise_server_exceptions) + + +@pytest.mark.unit_test +def test_server() -> None: + mock_service = Mock() + mock_service.get.return_value = {} + + client = create_test_client(mock_service) client.get("/v1/studies/study1/raw?path=settings/general/params") mock_service.get.assert_called_once_with( @@ -95,18 +104,7 @@ def test_404() -> None: mock_storage_service = Mock() mock_storage_service.get.side_effect = UrlNotMatchJsonDataError("Test") - app = FastAPI(title=__name__) - build_study_service( - app, - cache=Mock(), - task_service=Mock(), - file_transfer_manager=Mock(), - study_service=mock_storage_service, - config=CONFIG, - user_service=Mock(), - matrix_service=Mock(spec=MatrixService), - ) - client = TestClient(app, raise_server_exceptions=False) + client = create_test_client(mock_storage_service, raise_server_exceptions=False) result = client.get("/v1/studies/study1/raw?path=settings/general/params") assert result.status_code == HTTPStatus.NOT_FOUND @@ -119,18 +117,7 @@ def test_server_with_parameters() -> None: mock_storage_service = Mock() mock_storage_service.get.return_value = {} - app = FastAPI(title=__name__) - build_study_service( - app, - cache=Mock(), - task_service=Mock(), - file_transfer_manager=Mock(), - study_service=mock_storage_service, - config=CONFIG, - user_service=Mock(), - matrix_service=Mock(spec=MatrixService), - ) - client = TestClient(app) + client = create_test_client(mock_storage_service) result = client.get("/v1/studies/study1/raw?depth=4") parameters = RequestParameters(user=ADMIN) @@ -158,18 +145,7 @@ def test_create_study(tmp_path: str, project_path) -> None: storage_service = Mock() storage_service.create_study.return_value = "my-uuid" - app = FastAPI(title=__name__) - build_study_service( - app, - cache=Mock(), - task_service=Mock(), - file_transfer_manager=Mock(), - study_service=storage_service, - config=CONFIG, - user_service=Mock(), - matrix_service=Mock(spec=MatrixService), - ) - client = TestClient(app) + client = create_test_client(storage_service) result_right = client.post("/v1/studies?name=study2") @@ -193,18 +169,7 @@ def test_import_study_zipped(tmp_path: Path, project_path) -> None: study_uuid = str(uuid.uuid4()) mock_storage_service.import_study.return_value = study_uuid - app = FastAPI(title=__name__) - build_study_service( - app, - cache=Mock(), - task_service=Mock(), - file_transfer_manager=Mock(), - study_service=mock_storage_service, - config=CONFIG, - user_service=Mock(), - matrix_service=Mock(spec=MatrixService), - ) - client = TestClient(app) + client = create_test_client(mock_storage_service) result = client.post("/v1/studies") @@ -223,18 +188,7 @@ def test_copy_study(tmp_path: Path) -> None: storage_service = Mock() storage_service.copy_study.return_value = "/studies/study-copied" - app = FastAPI(title=__name__) - build_study_service( - app, - cache=Mock(), - task_service=Mock(), - file_transfer_manager=Mock(), - study_service=storage_service, - config=CONFIG, - user_service=Mock(), - matrix_service=Mock(spec=MatrixService), - ) - client = TestClient(app) + client = create_test_client(storage_service) result = client.post(f"/v1/studies/{UUID}/copy?dest=study-copied") @@ -285,21 +239,10 @@ def test_list_studies(tmp_path: str) -> None: storage_service = Mock() storage_service.get_studies_information.return_value = studies - app = FastAPI(title=__name__) - build_study_service( - app, - cache=Mock(), - task_service=Mock(), - file_transfer_manager=Mock(), - study_service=storage_service, - config=CONFIG, - user_service=Mock(), - matrix_service=Mock(spec=MatrixService), - ) - client = TestClient(app) + client = create_test_client(storage_service) result = client.get("/v1/studies") - assert {k: StudyMetadataDTO.parse_obj(v) for k, v in result.json().items()} == studies + assert {k: StudyMetadataDTO.model_validate(v) for k, v in result.json().items()} == studies def test_study_metadata(tmp_path: str) -> None: @@ -320,21 +263,10 @@ def test_study_metadata(tmp_path: str) -> None: storage_service = Mock() storage_service.get_study_information.return_value = study - app = FastAPI(title=__name__) - build_study_service( - app, - cache=Mock(), - task_service=Mock(), - file_transfer_manager=Mock(), - study_service=storage_service, - config=CONFIG, - user_service=Mock(), - matrix_service=Mock(spec=MatrixService), - ) - client = TestClient(app) + client = create_test_client(storage_service) result = client.get("/v1/studies/1") - assert StudyMetadataDTO.parse_obj(result.json()) == study + assert StudyMetadataDTO.model_validate(result.json()) == study @pytest.mark.unit_test @@ -352,20 +284,8 @@ def test_export_files(tmp_path: Path) -> None: ) mock_storage_service.export_study.return_value = expected - app = FastAPI(title=__name__) - build_study_service( - app, - cache=Mock(), - task_service=Mock(), - file_transfer_manager=Mock(), - study_service=mock_storage_service, - config=CONFIG, - user_service=Mock(), - matrix_service=Mock(spec=MatrixService), - ) - # Simulate the download of data using a streamed request - client = TestClient(app) + client = create_test_client(mock_storage_service) if client.stream is False: # `TestClient` is based on `Requests` (old way before AntaREST-v2.15) # noinspection PyArgumentList @@ -382,7 +302,7 @@ def test_export_files(tmp_path: Path) -> None: res.raise_for_status() result = json.loads(data.getvalue()) - assert FileDownloadTaskDTO(**result).json() == expected.json() + assert FileDownloadTaskDTO(**result).model_dump_json() == expected.model_dump_json() mock_storage_service.export_study.assert_called_once_with(UUID, PARAMS, True) @@ -402,18 +322,7 @@ def test_export_params(tmp_path: Path) -> None: ) mock_storage_service.export_study.return_value = expected - app = FastAPI(title=__name__) - build_study_service( - app, - cache=Mock(), - task_service=Mock(), - file_transfer_manager=Mock(), - study_service=mock_storage_service, - config=CONFIG, - user_service=Mock(), - matrix_service=Mock(spec=MatrixService), - ) - client = TestClient(app) + client = create_test_client(mock_storage_service) client.get(f"/v1/studies/{UUID}/export?no_output=true") client.get(f"/v1/studies/{UUID}/export?no_output=false") mock_storage_service.export_study.assert_has_calls( @@ -428,18 +337,7 @@ def test_export_params(tmp_path: Path) -> None: def test_delete_study() -> None: mock_storage_service = Mock() - app = FastAPI(title=__name__) - build_study_service( - app, - cache=Mock(), - task_service=Mock(), - file_transfer_manager=Mock(), - study_service=mock_storage_service, - config=CONFIG, - user_service=Mock(), - matrix_service=Mock(spec=MatrixService), - ) - client = TestClient(app) + client = create_test_client(mock_storage_service) study_uuid = "8319b5f8-2a35-4984-9ace-2ab072bd6eef" client.delete(f"/v1/studies/{study_uuid}") @@ -452,18 +350,7 @@ def test_edit_study() -> None: mock_storage_service = Mock() mock_storage_service.edit_study.return_value = {} - app = FastAPI(title=__name__) - build_study_service( - app, - cache=Mock(), - task_service=Mock(), - file_transfer_manager=Mock(), - study_service=mock_storage_service, - config=CONFIG, - user_service=Mock(), - matrix_service=Mock(spec=MatrixService), - ) - client = TestClient(app) + client = create_test_client(mock_storage_service) client.post("/v1/studies/my-uuid/raw?path=url/to/change", json={"Hello": "World"}) mock_storage_service.edit_study.assert_called_once_with("my-uuid", "url/to/change", {"Hello": "World"}, PARAMS) @@ -497,18 +384,7 @@ def test_validate() -> None: mock_service = Mock() mock_service.check_errors.return_value = ["Hello"] - app = FastAPI(title=__name__) - build_study_service( - app, - cache=Mock(), - task_service=Mock(), - file_transfer_manager=Mock(), - study_service=mock_service, - config=CONFIG, - user_service=Mock(), - matrix_service=Mock(spec=MatrixService), - ) - client = TestClient(app, raise_server_exceptions=False) + client = create_test_client(mock_service, raise_server_exceptions=False) res = client.get("/v1/studies/my-uuid/raw/validate") assert res.json() == ["Hello"] @@ -551,24 +427,13 @@ def test_output_download(tmp_path: Path) -> None: synthesis=False, includeClusters=True, ) - - app = FastAPI(title=__name__) - build_study_service( - app, - cache=Mock(), - task_service=Mock(), - file_transfer_manager=SimpleFileTransferManager(Config(storage=StorageConfig(tmp_dir=tmp_path))), - study_service=mock_service, - config=CONFIG, - user_service=Mock(), - matrix_service=Mock(spec=MatrixService), - ) - client = TestClient(app, raise_server_exceptions=False) + ftm = SimpleFileTransferManager(Config(storage=StorageConfig(tmp_dir=tmp_path))) + client = create_test_client(mock_service, ftm, raise_server_exceptions=False) res = client.post( f"/v1/studies/{UUID}/outputs/my-output-id/download", - json=study_download.dict(), + json=study_download.model_dump(), ) - assert res.json() == output_data.dict() + assert res.json() == output_data.model_dump() @pytest.mark.unit_test @@ -588,18 +453,8 @@ def test_output_whole_download(tmp_path: Path) -> None: ) mock_service.export_output.return_value = expected - app = FastAPI(title=__name__) - build_study_service( - app, - cache=Mock(), - task_service=Mock(), - file_transfer_manager=SimpleFileTransferManager(Config(storage=StorageConfig(tmp_dir=tmp_path))), - study_service=mock_service, - config=CONFIG, - user_service=Mock(), - matrix_service=Mock(spec=MatrixService), - ) - client = TestClient(app, raise_server_exceptions=False) + ftm = SimpleFileTransferManager(Config(storage=StorageConfig(tmp_dir=tmp_path))) + client = create_test_client(mock_service, ftm, raise_server_exceptions=False) res = client.get( f"/v1/studies/{UUID}/outputs/{output_id}/export", ) @@ -612,18 +467,7 @@ def test_sim_reference() -> None: study_id = str(uuid.uuid4()) output_id = "my-output-id" - app = FastAPI(title=__name__) - build_study_service( - app, - cache=Mock(), - task_service=Mock(), - file_transfer_manager=Mock(), - study_service=mock_service, - config=CONFIG, - user_service=Mock(), - matrix_service=Mock(spec=MatrixService), - ) - client = TestClient(app, raise_server_exceptions=False) + client = create_test_client(mock_service, raise_server_exceptions=False) res = client.put(f"/v1/studies/{study_id}/outputs/{output_id}/reference") mock_service.set_sim_reference.assert_called_once_with(study_id, output_id, True, PARAMS) assert res.status_code == HTTPStatus.OK @@ -656,38 +500,17 @@ def test_sim_result() -> None: ) ] mock_service.get_study_sim_result.return_value = result_data - app = FastAPI(title=__name__) - build_study_service( - app, - cache=Mock(), - task_service=Mock(), - file_transfer_manager=Mock(), - study_service=mock_service, - config=CONFIG, - user_service=Mock(), - matrix_service=Mock(spec=MatrixService), - ) - client = TestClient(app, raise_server_exceptions=False) + + client = create_test_client(mock_service, raise_server_exceptions=False) res = client.get(f"/v1/studies/{study_id}/outputs") - assert res.json() == result_data + actual_object = [StudySimResultDTO.parse_obj(res.json()[0])] + assert actual_object == result_data @pytest.mark.unit_test def test_study_permission_management(tmp_path: Path) -> None: storage_service = Mock() - - app = FastAPI(title=__name__) - build_study_service( - app, - cache=Mock(), - task_service=Mock(), - file_transfer_manager=Mock(), - study_service=storage_service, - user_service=Mock(), - matrix_service=Mock(spec=MatrixService), - config=CONFIG, - ) - client = TestClient(app, raise_server_exceptions=False) + client = create_test_client(storage_service, raise_server_exceptions=False) result = client.put(f"/v1/studies/{UUID}/owner/2") storage_service.change_owner.assert_called_with( @@ -727,18 +550,7 @@ def test_study_permission_management(tmp_path: Path) -> None: @pytest.mark.unit_test def test_get_study_versions(tmp_path: Path) -> None: - app = FastAPI(title=__name__) - build_study_service( - app, - cache=Mock(), - task_service=Mock(), - file_transfer_manager=Mock(), - study_service=Mock(), - user_service=Mock(), - matrix_service=Mock(spec=MatrixService), - config=CONFIG, - ) - client = TestClient(app, raise_server_exceptions=False) + client = create_test_client(Mock(), raise_server_exceptions=False) result = client.get("/v1/studies/_versions") assert result.json() == list(STUDY_REFERENCE_TEMPLATES.keys()) diff --git a/tests/study/business/areas/test_st_storage_management.py b/tests/study/business/areas/test_st_storage_management.py index c48768427c..56a42d88a0 100644 --- a/tests/study/business/areas/test_st_storage_management.py +++ b/tests/study/business/areas/test_st_storage_management.py @@ -76,6 +76,8 @@ "east": {"list": {}}, } +GEN = np.random.default_rng(1000) + class TestSTStorageManager: @pytest.fixture(name="study_storage_service") @@ -147,7 +149,7 @@ def test_get_all_storages__nominal_case( # Check actual = { - area_id: [form.dict(by_alias=True) for form in clusters_by_ids.values()] + area_id: [form.model_dump(by_alias=True) for form in clusters_by_ids.values()] for area_id, clusters_by_ids in all_storages.items() } expected = { @@ -253,7 +255,7 @@ def test_get_st_storages__nominal_case( groups = manager.get_storages(study, area_id="West") # Check - actual = [form.dict(by_alias=True) for form in groups] + actual = [form.model_dump(by_alias=True) for form in groups] expected = [ { "efficiency": 0.94, @@ -365,7 +367,7 @@ def test_get_st_storage__nominal_case( edit_form = manager.get_storage(study, area_id="West", storage_id="storage1") # Assert that the returned storage fields match the expected fields - actual = edit_form.dict(by_alias=True) + actual = edit_form.model_dump(by_alias=True) expected = { "efficiency": 0.94, "group": STStorageGroup.BATTERY, @@ -455,11 +457,11 @@ def test_update_storage__nominal_case( actual = {(call_args[0][0], tuple(call_args[0][1])) for call_args in file_study.tree.save.call_args_list} expected = { ( - str(0.0), + 0.0, ("input", "st-storage", "clusters", "West", "list", "storage1", "initiallevel"), ), ( - str(False), + False, ("input", "st-storage", "clusters", "West", "list", "storage1", "initialleveloptim"), ), } @@ -528,16 +530,15 @@ def test_get_matrix__nominal_case( # Prepare the mocks storage = study_storage_service.get_storage(study) file_study = storage.get_raw(study) - array = np.random.rand(8760, 1) * 1000 + array = GEN.random((8760, 1)) * 1000 + expected = { + "index": list(range(8760)), + "columns": [0], + "data": array.tolist(), + } file_study.tree = Mock( spec=FileStudyTree, - get=Mock( - return_value={ - "index": list(range(8760)), - "columns": [0], - "data": array.tolist(), - } - ), + get=Mock(return_value=expected), ) # Given the following arguments @@ -547,8 +548,8 @@ def test_get_matrix__nominal_case( matrix = manager.get_matrix(study, area_id="West", storage_id="storage1", ts_name="inflows") # Assert that the returned storage fields match the expected fields - actual = matrix.dict(by_alias=True) - assert actual == matrix + actual = matrix.model_dump(by_alias=True) + assert actual == expected def test_get_matrix__config_not_found( self, @@ -616,7 +617,7 @@ def test_get_matrix__invalid_matrix( # Prepare the mocks storage = study_storage_service.get_storage(study) file_study = storage.get_raw(study) - array = np.random.rand(365, 1) * 1000 + array = GEN.random((365, 1)) * 1000 matrix = { "index": list(range(365)), "columns": [0], @@ -649,11 +650,11 @@ def test_validate_matrices__nominal( # prepare some random matrices, insuring `lower_rule_curve` <= `upper_rule_curve` matrices = { - "pmax_injection": np.random.rand(8760, 1), - "pmax_withdrawal": np.random.rand(8760, 1), - "lower_rule_curve": np.random.rand(8760, 1) / 2, - "upper_rule_curve": np.random.rand(8760, 1) / 2 + 0.5, - "inflows": np.random.rand(8760, 1) * 1000, + "pmax_injection": GEN.random((8760, 1)), + "pmax_withdrawal": GEN.random((8760, 1)), + "lower_rule_curve": GEN.random((8760, 1)) / 2, + "upper_rule_curve": GEN.random((8760, 1)) / 2 + 0.5, + "inflows": GEN.random((8760, 1)) * 1000, } # Prepare the mocks @@ -686,11 +687,11 @@ def test_validate_matrices__out_of_bound( # prepare some random matrices, insuring `lower_rule_curve` <= `upper_rule_curve` matrices = { - "pmax_injection": np.random.rand(8760, 1) * 2 - 0.5, # out of bound - "pmax_withdrawal": np.random.rand(8760, 1) * 2 - 0.5, # out of bound - "lower_rule_curve": np.random.rand(8760, 1) * 2 - 0.5, # out of bound - "upper_rule_curve": np.random.rand(8760, 1) * 2 - 0.5, # out of bound - "inflows": np.random.rand(8760, 1) * 1000, + "pmax_injection": GEN.random((8760, 1)) * 2 - 0.5, # out of bound + "pmax_withdrawal": GEN.random((8760, 1)) * 2 - 0.5, # out of bound + "lower_rule_curve": GEN.random((8760, 1)) * 2 - 0.5, # out of bound + "upper_rule_curve": GEN.random((8760, 1)) * 2 - 0.5, # out of bound + "inflows": GEN.random((8760, 1)) * 1000, } # Prepare the mocks @@ -707,7 +708,6 @@ def tree_get(url: t.Sequence[str], **_: t.Any) -> t.MutableMapping[str, t.Any]: file_study = storage.get_raw(study) file_study.tree = Mock(spec=FileStudyTree, get=tree_get) - # Given the following arguments, the validation shouldn't raise any exception manager = STStorageManager(study_storage_service) # Run the method being tested and expect an exception @@ -716,29 +716,11 @@ def tree_get(url: t.Sequence[str], **_: t.Any) -> t.MutableMapping[str, t.Any]: match=re.escape("4 validation errors"), ) as ctx: manager.validate_matrices(study, area_id="West", storage_id="storage1") - errors = ctx.value.errors() - assert errors == [ - { - "loc": ("pmax_injection",), - "msg": "Matrix values should be between 0 and 1", - "type": "value_error", - }, - { - "loc": ("pmax_withdrawal",), - "msg": "Matrix values should be between 0 and 1", - "type": "value_error", - }, - { - "loc": ("lower_rule_curve",), - "msg": "Matrix values should be between 0 and 1", - "type": "value_error", - }, - { - "loc": ("upper_rule_curve",), - "msg": "Matrix values should be between 0 and 1", - "type": "value_error", - }, - ] + assert ctx.value.error_count() == 4 + for error in ctx.value.errors(): + assert error["type"] == "value_error" + assert error["msg"] == "Value error, Matrix values should be between 0 and 1" + assert error["loc"][0] in ["upper_rule_curve", "lower_rule_curve", "pmax_withdrawal", "pmax_injection"] # noinspection SpellCheckingInspection def test_validate_matrices__rule_curve( @@ -750,13 +732,15 @@ def test_validate_matrices__rule_curve( # The study must be fetched from the database study: RawStudy = db_session.query(Study).get(study_uuid) - # prepare some random matrices, insuring `lower_rule_curve` <= `upper_rule_curve` + # prepare some random matrices, not respecting `lower_rule_curve` <= `upper_rule_curve` + upper_curve = np.zeros((8760, 1)) + lower_curve = np.ones((8760, 1)) matrices = { - "pmax_injection": np.random.rand(8760, 1), - "pmax_withdrawal": np.random.rand(8760, 1), - "lower_rule_curve": np.random.rand(8760, 1), - "upper_rule_curve": np.random.rand(8760, 1), - "inflows": np.random.rand(8760, 1) * 1000, + "pmax_injection": GEN.random((8760, 1)), + "pmax_withdrawal": GEN.random((8760, 1)), + "lower_rule_curve": lower_curve, + "upper_rule_curve": upper_curve, + "inflows": GEN.random((8760, 1)) * 1000, } # Prepare the mocks @@ -773,7 +757,7 @@ def tree_get(url: t.Sequence[str], **_: t.Any) -> t.MutableMapping[str, t.Any]: file_study = storage.get_raw(study) file_study.tree = Mock(spec=FileStudyTree, get=tree_get) - # Given the following arguments, the validation shouldn't raise any exception + # Given the following arguments manager = STStorageManager(study_storage_service) # Run the method being tested and expect an exception @@ -783,6 +767,8 @@ def tree_get(url: t.Sequence[str], **_: t.Any) -> t.MutableMapping[str, t.Any]: ) as ctx: manager.validate_matrices(study, area_id="West", storage_id="storage1") error = ctx.value.errors()[0] - assert error["loc"] == ("__root__",) - assert "lower_rule_curve" in error["msg"] - assert "upper_rule_curve" in error["msg"] + assert error["type"] == "value_error" + assert ( + error["msg"] + == "Value error, Each 'lower_rule_curve' value must be lower or equal to each 'upper_rule_curve'" + ) diff --git a/tests/study/business/areas/test_thermal_management.py b/tests/study/business/areas/test_thermal_management.py index e1276286a2..6bb2e34d7e 100644 --- a/tests/study/business/areas/test_thermal_management.py +++ b/tests/study/business/areas/test_thermal_management.py @@ -144,7 +144,7 @@ def test_get_cluster__study_legacy( form = manager.get_cluster(study, area_id="north", cluster_id="2 avail and must 1") # Assert that the returned fields match the expected fields - actual = form.dict(by_alias=True) + actual = form.model_dump(by_alias=True) expected = { "id": "2 avail and must 1", "group": ThermalClusterGroup.GAS, @@ -210,7 +210,7 @@ def test_get_clusters__study_legacy( groups = manager.get_clusters(study, area_id="north") # Assert that the returned fields match the expected fields - actual = [form.dict(by_alias=True) for form in groups] + actual = [form.model_dump(by_alias=True) for form in groups] expected = [ { "id": "2 avail and must 1", @@ -366,7 +366,7 @@ def test_create_cluster__study_legacy( form = manager.create_cluster(study, area_id="north", cluster_data=cluster_data) # Assert that the returned fields match the expected fields - actual = form.dict(by_alias=True) + actual = form.model_dump(by_alias=True) expected = { "co2": 12.59, "enabled": True, @@ -426,7 +426,7 @@ def test_update_cluster( # Assert that the returned fields match the expected fields form = manager.get_cluster(study, area_id="north", cluster_id="2 avail and must 1") - actual = form.dict(by_alias=True) + actual = form.model_dump(by_alias=True) expected = { "id": "2 avail and must 1", "group": ThermalClusterGroup.GAS, diff --git a/tests/study/business/test_all_optional_metaclass.py b/tests/study/business/test_all_optional_metaclass.py index 741b16ccc8..b8d1197c5e 100644 --- a/tests/study/business/test_all_optional_metaclass.py +++ b/tests/study/business/test_all_optional_metaclass.py @@ -10,352 +10,51 @@ # # This file is part of the Antares project. -import typing as t +from pydantic import BaseModel, Field -import pytest -from pydantic import BaseModel, Field, ValidationError +from antarest.study.business.all_optional_meta import all_optional_model, camel_case_model -from antarest.study.business.all_optional_meta import AllOptionalMetaclass -# ============================================== -# Classic way to use default and optional values -# ============================================== +class Model(BaseModel): + float_with_default: float = 1 + float_without_default: float + boolean_with_default: bool = True + boolean_without_default: bool + field_with_alias: str = Field(default="default", alias="field-with-alias") -class ClassicModel(BaseModel): - mandatory: float = Field(ge=0, le=1) - mandatory_with_default: float = Field(ge=0, le=1, default=0.2) - mandatory_with_none: float = Field(ge=0, le=1, default=None) - optional: t.Optional[float] = Field(ge=0, le=1) - optional_with_default: t.Optional[float] = Field(ge=0, le=1, default=0.2) - optional_with_none: t.Optional[float] = Field(ge=0, le=1, default=None) - - -class ClassicSubModel(ClassicModel): - pass - - -class TestClassicModel: - """ - Test that default and optional values work as expected. - """ - - @pytest.mark.parametrize("cls", [ClassicModel, ClassicSubModel]) - def test_classes(self, cls: t.Type[BaseModel]) -> None: - assert cls.__fields__["mandatory"].required is True - assert cls.__fields__["mandatory"].allow_none is False - assert cls.__fields__["mandatory"].default is None - assert cls.__fields__["mandatory"].default_factory is None # undefined - - assert cls.__fields__["mandatory_with_default"].required is False - assert cls.__fields__["mandatory_with_default"].allow_none is False - assert cls.__fields__["mandatory_with_default"].default == 0.2 - assert cls.__fields__["mandatory_with_default"].default_factory is None # undefined - - assert cls.__fields__["mandatory_with_none"].required is False - assert cls.__fields__["mandatory_with_none"].allow_none is True - assert cls.__fields__["mandatory_with_none"].default is None - assert cls.__fields__["mandatory_with_none"].default_factory is None # undefined - - assert cls.__fields__["optional"].required is False - assert cls.__fields__["optional"].allow_none is True - assert cls.__fields__["optional"].default is None - assert cls.__fields__["optional"].default_factory is None # undefined - - assert cls.__fields__["optional_with_default"].required is False - assert cls.__fields__["optional_with_default"].allow_none is True - assert cls.__fields__["optional_with_default"].default == 0.2 - assert cls.__fields__["optional_with_default"].default_factory is None # undefined - - assert cls.__fields__["optional_with_none"].required is False - assert cls.__fields__["optional_with_none"].allow_none is True - assert cls.__fields__["optional_with_none"].default is None - assert cls.__fields__["optional_with_none"].default_factory is None # undefined - - @pytest.mark.parametrize("cls", [ClassicModel, ClassicSubModel]) - def test_initialization(self, cls: t.Type[ClassicModel]) -> None: - # We can build a model without providing optional or default values. - # The initialized value will be the default value or `None` for optional values. - obj = cls(mandatory=0.5) - assert obj.mandatory == 0.5 - assert obj.mandatory_with_default == 0.2 - assert obj.mandatory_with_none is None - assert obj.optional is None - assert obj.optional_with_default == 0.2 - assert obj.optional_with_none is None - - # We must provide a value for mandatory fields. - with pytest.raises(ValidationError): - cls() - - @pytest.mark.parametrize("cls", [ClassicModel, ClassicSubModel]) - def test_validation(self, cls: t.Type[ClassicModel]) -> None: - # We CANNOT use `None` as a value for a field with a default value. - with pytest.raises(ValidationError): - cls(mandatory=0.5, mandatory_with_default=None) - - # We can use `None` as a value for optional fields with default value. - cls(mandatory=0.5, optional_with_default=None) - - # We can validate a model with valid values. - cls( - mandatory=0.5, - mandatory_with_default=0.2, - mandatory_with_none=0.2, - optional=0.5, - optional_with_default=0.2, - optional_with_none=0.2, - ) - - # We CANNOT validate a model with invalid values. - with pytest.raises(ValidationError): - cls(mandatory=2) - - with pytest.raises(ValidationError): - cls(mandatory=0.5, mandatory_with_default=2) - - with pytest.raises(ValidationError): - cls(mandatory=0.5, mandatory_with_none=2) - - with pytest.raises(ValidationError): - cls(mandatory=0.5, optional=2) - - with pytest.raises(ValidationError): - cls(mandatory=0.5, optional_with_default=2) - - with pytest.raises(ValidationError): - cls(mandatory=0.5, optional_with_none=2) - - -# ========================== -# Using AllOptionalMetaclass -# ========================== - - -class AllOptionalModel(BaseModel, metaclass=AllOptionalMetaclass): - mandatory: float = Field(ge=0, le=1) - mandatory_with_default: float = Field(ge=0, le=1, default=0.2) - mandatory_with_none: float = Field(ge=0, le=1, default=None) - optional: t.Optional[float] = Field(ge=0, le=1) - optional_with_default: t.Optional[float] = Field(ge=0, le=1, default=0.2) - optional_with_none: t.Optional[float] = Field(ge=0, le=1, default=None) - - -class AllOptionalSubModel(AllOptionalModel): +@all_optional_model +class OptionalModel(Model): pass -class InheritedAllOptionalModel(ClassicModel, metaclass=AllOptionalMetaclass): +@all_optional_model +@camel_case_model +class OptionalCamelCaseModel(Model): pass -class TestAllOptionalModel: - """ - Test that AllOptionalMetaclass works with base classes. - """ - - @pytest.mark.parametrize("cls", [AllOptionalModel, AllOptionalSubModel, InheritedAllOptionalModel]) - def test_classes(self, cls: t.Type[BaseModel]) -> None: - assert cls.__fields__["mandatory"].required is False - assert cls.__fields__["mandatory"].allow_none is True - assert cls.__fields__["mandatory"].default is None - assert cls.__fields__["mandatory"].default_factory is None # undefined - - assert cls.__fields__["mandatory_with_default"].required is False - assert cls.__fields__["mandatory_with_default"].allow_none is True - assert cls.__fields__["mandatory_with_default"].default == 0.2 - assert cls.__fields__["mandatory_with_default"].default_factory is None # undefined - - assert cls.__fields__["mandatory_with_none"].required is False - assert cls.__fields__["mandatory_with_none"].allow_none is True - assert cls.__fields__["mandatory_with_none"].default is None - assert cls.__fields__["mandatory_with_none"].default_factory is None # undefined - - assert cls.__fields__["optional"].required is False - assert cls.__fields__["optional"].allow_none is True - assert cls.__fields__["optional"].default is None - assert cls.__fields__["optional"].default_factory is None # undefined - - assert cls.__fields__["optional_with_default"].required is False - assert cls.__fields__["optional_with_default"].allow_none is True - assert cls.__fields__["optional_with_default"].default == 0.2 - assert cls.__fields__["optional_with_default"].default_factory is None # undefined - - assert cls.__fields__["optional_with_none"].required is False - assert cls.__fields__["optional_with_none"].allow_none is True - assert cls.__fields__["optional_with_none"].default is None - assert cls.__fields__["optional_with_none"].default_factory is None # undefined - - @pytest.mark.parametrize("cls", [AllOptionalModel, AllOptionalSubModel, InheritedAllOptionalModel]) - def test_initialization(self, cls: t.Type[AllOptionalModel]) -> None: - # We can build a model without providing values. - # The initialized value will be the default value or `None` for optional values. - # Note that the mandatory fields are not required anymore, and can be `None`. - obj = cls() - assert obj.mandatory is None - assert obj.mandatory_with_default == 0.2 - assert obj.mandatory_with_none is None - assert obj.optional is None - assert obj.optional_with_default == 0.2 - assert obj.optional_with_none is None - - # If we convert the model to a dictionary, without `None` values, - # we should have a dictionary with default values only. - actual = obj.dict(exclude_none=True) - expected = { - "mandatory_with_default": 0.2, - "optional_with_default": 0.2, - } - assert actual == expected - - @pytest.mark.parametrize("cls", [AllOptionalModel, AllOptionalSubModel, InheritedAllOptionalModel]) - def test_validation(self, cls: t.Type[AllOptionalModel]) -> None: - # We can use `None` as a value for all fields. - cls(mandatory=None) - cls(mandatory_with_default=None) - cls(mandatory_with_none=None) - cls(optional=None) - cls(optional_with_default=None) - cls(optional_with_none=None) - - # We can validate a model with valid values. - cls( - mandatory=0.5, - mandatory_with_default=0.2, - mandatory_with_none=0.2, - optional=0.5, - optional_with_default=0.2, - optional_with_none=0.2, - ) - - # We CANNOT validate a model with invalid values. - with pytest.raises(ValidationError): - cls(mandatory=2) - - with pytest.raises(ValidationError): - cls(mandatory_with_default=2) - - with pytest.raises(ValidationError): - cls(mandatory_with_none=2) - - with pytest.raises(ValidationError): - cls(optional=2) - - with pytest.raises(ValidationError): - cls(optional_with_default=2) - - with pytest.raises(ValidationError): - cls(optional_with_none=2) - - -# The `use_none` keyword argument is set to `True` to allow the use of `None` -# as a default value for the fields of the model. - - -class UseNoneModel(BaseModel, metaclass=AllOptionalMetaclass, use_none=True): - mandatory: float = Field(ge=0, le=1) - mandatory_with_default: float = Field(ge=0, le=1, default=0.2) - mandatory_with_none: float = Field(ge=0, le=1, default=None) - optional: t.Optional[float] = Field(ge=0, le=1) - optional_with_default: t.Optional[float] = Field(ge=0, le=1, default=0.2) - optional_with_none: t.Optional[float] = Field(ge=0, le=1, default=None) - - -class UseNoneSubModel(UseNoneModel): - pass - - -class InheritedUseNoneModel(ClassicModel, metaclass=AllOptionalMetaclass, use_none=True): - pass - - -class TestUseNoneModel: - @pytest.mark.parametrize("cls", [UseNoneModel, UseNoneSubModel, InheritedUseNoneModel]) - def test_classes(self, cls: t.Type[BaseModel]) -> None: - assert cls.__fields__["mandatory"].required is False - assert cls.__fields__["mandatory"].allow_none is True - assert cls.__fields__["mandatory"].default is None - assert cls.__fields__["mandatory"].default_factory is None # undefined - - assert cls.__fields__["mandatory_with_default"].required is False - assert cls.__fields__["mandatory_with_default"].allow_none is True - assert cls.__fields__["mandatory_with_default"].default is None - assert cls.__fields__["mandatory_with_default"].default_factory is None # undefined - - assert cls.__fields__["mandatory_with_none"].required is False - assert cls.__fields__["mandatory_with_none"].allow_none is True - assert cls.__fields__["mandatory_with_none"].default is None - assert cls.__fields__["mandatory_with_none"].default_factory is None # undefined - - assert cls.__fields__["optional"].required is False - assert cls.__fields__["optional"].allow_none is True - assert cls.__fields__["optional"].default is None - assert cls.__fields__["optional"].default_factory is None # undefined - - assert cls.__fields__["optional_with_default"].required is False - assert cls.__fields__["optional_with_default"].allow_none is True - assert cls.__fields__["optional_with_default"].default is None - assert cls.__fields__["optional_with_default"].default_factory is None # undefined - - assert cls.__fields__["optional_with_none"].required is False - assert cls.__fields__["optional_with_none"].allow_none is True - assert cls.__fields__["optional_with_none"].default is None - assert cls.__fields__["optional_with_none"].default_factory is None # undefined - - @pytest.mark.parametrize("cls", [UseNoneModel, UseNoneSubModel, InheritedUseNoneModel]) - def test_initialization(self, cls: t.Type[UseNoneModel]) -> None: - # We can build a model without providing values. - # The initialized value will be the default value or `None` for optional values. - # Note that the mandatory fields are not required anymore, and can be `None`. - obj = cls() - assert obj.mandatory is None - assert obj.mandatory_with_default is None - assert obj.mandatory_with_none is None - assert obj.optional is None - assert obj.optional_with_default is None - assert obj.optional_with_none is None - - # If we convert the model to a dictionary, without `None` values, - # we should have an empty dictionary. - actual = obj.dict(exclude_none=True) - expected = {} - assert actual == expected - - @pytest.mark.parametrize("cls", [UseNoneModel, UseNoneSubModel, InheritedUseNoneModel]) - def test_validation(self, cls: t.Type[UseNoneModel]) -> None: - # We can use `None` as a value for all fields. - cls(mandatory=None) - cls(mandatory_with_default=None) - cls(mandatory_with_none=None) - cls(optional=None) - cls(optional_with_default=None) - cls(optional_with_none=None) - - # We can validate a model with valid values. - cls( - mandatory=0.5, - mandatory_with_default=0.2, - mandatory_with_none=0.2, - optional=0.5, - optional_with_default=0.2, - optional_with_none=0.2, - ) - - # We CANNOT validate a model with invalid values. - with pytest.raises(ValidationError): - cls(mandatory=2) - - with pytest.raises(ValidationError): - cls(mandatory_with_default=2) - - with pytest.raises(ValidationError): - cls(mandatory_with_none=2) - - with pytest.raises(ValidationError): - cls(optional=2) - - with pytest.raises(ValidationError): - cls(optional_with_default=2) - - with pytest.raises(ValidationError): - cls(optional_with_none=2) +def test_model() -> None: + optional_model = OptionalModel() + assert optional_model.float_with_default is None + assert optional_model.float_without_default is None + assert optional_model.boolean_with_default is None + assert optional_model.boolean_without_default is None + assert optional_model.field_with_alias is None + + optional_model = OptionalModel(boolean_with_default=False) + assert optional_model.float_with_default is None + assert optional_model.float_without_default is None + assert optional_model.boolean_with_default is False + assert optional_model.boolean_without_default is None + assert optional_model.field_with_alias is None + + # build with alias should succeed + args = {"field-with-alias": "test"} + optional_model = OptionalModel(**args) + assert optional_model.field_with_alias == "test" + + # build with camel_case should succeed + args = {"fieldWithAlias": "test"} + camel_case_model = OptionalCamelCaseModel(**args) + assert camel_case_model.field_with_alias == "test" diff --git a/tests/study/business/test_allocation_manager.py b/tests/study/business/test_allocation_manager.py index 8c49dd07c3..a7fec22f2e 100644 --- a/tests/study/business/test_allocation_manager.py +++ b/tests/study/business/test_allocation_manager.py @@ -47,7 +47,7 @@ def test_base(self): def test_camel_case(self): field = AllocationField(areaId="NORTH", coefficient=1) - assert field.dict(by_alias=True) == { + assert field.model_dump(by_alias=True) == { "areaId": "NORTH", "coefficient": 1, } diff --git a/tests/study/storage/variantstudy/model/test_dbmodel.py b/tests/study/storage/variantstudy/model/test_dbmodel.py index 162c9a269b..aff5686dcb 100644 --- a/tests/study/storage/variantstudy/model/test_dbmodel.py +++ b/tests/study/storage/variantstudy/model/test_dbmodel.py @@ -164,7 +164,7 @@ def test_init(self, db_session: Session, variant_study_id: str) -> None: # check CommandBlock.to_dto() dto = obj.to_dto() # note: it is easier to compare the dict representation of the DTO - assert dto.dict() == { + assert dto.model_dump() == { "id": command_id, "action": command, "args": json.loads(args), diff --git a/tests/study/storage/variantstudy/test_snapshot_generator.py b/tests/study/storage/variantstudy/test_snapshot_generator.py index 2cf975403b..0f2d4775ef 100644 --- a/tests/study/storage/variantstudy/test_snapshot_generator.py +++ b/tests/study/storage/variantstudy/test_snapshot_generator.py @@ -863,7 +863,7 @@ def test_generate__nominal_case( assert len(db_recorder.sql_statements) == 5, str(db_recorder) # Check: the variant generation must succeed. - assert results.dict() == { + assert results.model_dump() == { "success": True, "details": [ { @@ -1048,7 +1048,7 @@ def test_generate__with_denormalize_true( ) # Check the results - assert results.dict() == { + assert results.model_dump() == { "success": True, "details": [ { @@ -1171,7 +1171,7 @@ def test_generate__notification_failure( ) # Check the results - assert results.dict() == { + assert results.model_dump() == { "success": True, "details": [ { @@ -1253,7 +1253,7 @@ def test_generate__variant_of_variant( ) # Check the results - assert results.dict() == { + assert results.model_dump() == { "success": True, "details": [ { diff --git a/tests/study/test_repository.py b/tests/study/test_repository.py index 0be20a0bc8..bcdcea759b 100644 --- a/tests/study/test_repository.py +++ b/tests/study/test_repository.py @@ -917,9 +917,9 @@ def test_get_all__non_admin_permissions_filter( user_2 = User(id=102, name="user2") user_3 = User(id=103, name="user3") - group_1 = Group(id=101, name="group1") - group_2 = Group(id=102, name="group2") - group_3 = Group(id=103, name="group3") + group_1 = Group(id="101", name="group1") + group_2 = Group(id="102", name="group2") + group_3 = Group(id="103", name="group3") user_groups_mapping = {101: [group_2.id], 102: [group_1.id], 103: []} @@ -1191,23 +1191,23 @@ def test_update_tags( (None, [], False, ["5", "6"]), (None, [], True, ["1", "2", "3", "4", "7", "8"]), (None, [], None, ["1", "2", "3", "4", "5", "6", "7", "8"]), - (None, [1, 3, 5, 7], False, ["5"]), - (None, [1, 3, 5, 7], True, ["1", "3", "7"]), - (None, [1, 3, 5, 7], None, ["1", "3", "5", "7"]), + (None, ["1", "3", "5", "7"], False, ["5"]), + (None, ["1", "3", "5", "7"], True, ["1", "3", "7"]), + (None, ["1", "3", "5", "7"], None, ["1", "3", "5", "7"]), (True, [], False, ["5"]), (True, [], True, ["1", "2", "3", "4", "8"]), (True, [], None, ["1", "2", "3", "4", "5", "8"]), - (True, [1, 3, 5, 7], False, ["5"]), - (True, [1, 3, 5, 7], True, ["1", "3"]), - (True, [1, 3, 5, 7], None, ["1", "3", "5"]), - (True, [2, 4, 6, 8], True, ["2", "4", "8"]), - (True, [2, 4, 6, 8], None, ["2", "4", "8"]), + (True, ["1", "3", "5", "7"], False, ["5"]), + (True, ["1", "3", "5", "7"], True, ["1", "3"]), + (True, ["1", "3", "5", "7"], None, ["1", "3", "5"]), + (True, ["2", "4", "6", "8"], True, ["2", "4", "8"]), + (True, ["2", "4", "6", "8"], None, ["2", "4", "8"]), (False, [], False, ["6"]), (False, [], True, ["7"]), (False, [], None, ["6", "7"]), - (False, [1, 3, 5, 7], False, []), - (False, [1, 3, 5, 7], True, ["7"]), - (False, [1, 3, 5, 7], None, ["7"]), + (False, ["1", "3", "5", "7"], False, []), + (False, ["1", "3", "5", "7"], True, ["7"]), + (False, ["1", "3", "5", "7"], None, ["7"]), ], ) def test_count_studies__general_case( @@ -1221,14 +1221,14 @@ def test_count_studies__general_case( icache: Mock = Mock(spec=ICache) repository = StudyMetadataRepository(cache_service=icache, session=db_session) - study_1 = VariantStudy(id=1, name="study-1") - study_2 = VariantStudy(id=2, name="study-2") - study_3 = VariantStudy(id=3, name="study-3") - study_4 = VariantStudy(id=4, name="study-4") - study_5 = RawStudy(id=5, name="study-5", missing=datetime.datetime.now(), workspace=DEFAULT_WORKSPACE_NAME) - study_6 = RawStudy(id=6, name="study-6", missing=datetime.datetime.now(), workspace=test_workspace) - study_7 = RawStudy(id=7, name="study-7", missing=None, workspace=test_workspace) - study_8 = RawStudy(id=8, name="study-8", missing=None, workspace=DEFAULT_WORKSPACE_NAME) + study_1 = VariantStudy(id="1", name="study-1") + study_2 = VariantStudy(id="2", name="study-2") + study_3 = VariantStudy(id="3", name="study-3") + study_4 = VariantStudy(id="4", name="study-4") + study_5 = RawStudy(id="5", name="study-5", missing=datetime.datetime.now(), workspace=DEFAULT_WORKSPACE_NAME) + study_6 = RawStudy(id="6", name="study-6", missing=datetime.datetime.now(), workspace=test_workspace) + study_7 = RawStudy(id="7", name="study-7", missing=None, workspace=test_workspace) + study_8 = RawStudy(id="8", name="study-8", missing=None, workspace=DEFAULT_WORKSPACE_NAME) db_session.add_all([study_1, study_2, study_3, study_4, study_5, study_6, study_7, study_8]) db_session.commit() diff --git a/tests/test_front.py b/tests/test_front.py new file mode 100644 index 0000000000..5046a868cf --- /dev/null +++ b/tests/test_front.py @@ -0,0 +1,111 @@ +# Copyright (c) 2024, RTE (https://www.rte-france.com) +# +# See AUTHORS.txt +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +# This file is part of the Antares project. + +from pathlib import Path + +import pytest +from fastapi import FastAPI +from starlette.testclient import TestClient + +from antarest.front import RedirectMiddleware, add_front_app + + +@pytest.fixture +def base_back_app() -> FastAPI: + """ + A simple app which has only one backend endpoint + """ + app = FastAPI(title=__name__) + + @app.get(path="/api/a-backend-endpoint") + def get_from_api() -> str: + return "back" + + return app + + +@pytest.fixture +def resources_dir(tmp_path: Path) -> Path: + resource_dir = tmp_path / "resources" + resource_dir.mkdir() + webapp_dir = resource_dir / "webapp" + webapp_dir.mkdir() + with open(webapp_dir / "index.html", mode="w") as f: + f.write("index") + with open(webapp_dir / "front.css", mode="w") as f: + f.write("css") + return resource_dir + + +@pytest.fixture +def app_with_home(base_back_app) -> FastAPI: + """ + A simple app which has only a home endpoint and one backend endpoint + """ + + @base_back_app.get(path="/") + def home() -> str: + return "home" + + return base_back_app + + +@pytest.fixture +def redirect_app(app_with_home: FastAPI) -> FastAPI: + """ + Same as app with redirect middleware + """ + route_paths = [r.path for r in app_with_home.routes] # type: ignore + app_with_home.add_middleware(RedirectMiddleware, route_paths=route_paths) + return app_with_home + + +def test_redirect_middleware_does_not_modify_home(redirect_app: FastAPI) -> None: + client = TestClient(redirect_app) + response = client.get("/") + assert response.status_code == 200 + assert response.json() == "home" + + +def test_redirect_middleware_redirects_unknown_routes_to_home(redirect_app: FastAPI) -> None: + client = TestClient(redirect_app) + response = client.get("/a-front-route") + assert response.status_code == 200 + assert response.json() == "home" + + +def test_redirect_middleware_does_not_redirect_backend_routes(redirect_app: FastAPI) -> None: + client = TestClient(redirect_app) + response = client.get("/api/a-backend-endpoint") + assert response.status_code == 200 + assert response.json() == "back" + + +def test_frontend_paths(base_back_app, resources_dir: Path) -> None: + add_front_app(base_back_app, resources_dir, "/api") + client = TestClient(base_back_app) + + config_response = client.get("/config.json") + assert config_response.status_code == 200 + assert config_response.json() == {"restEndpoint": "/api", "wsEndpoint": "/api/ws"} + + index_response = client.get("/index.html") + assert index_response.status_code == 200 + assert index_response.text == "index" + + front_route_response = client.get("/any-route") + assert front_route_response.status_code == 200 + assert front_route_response.text == "index" + + front_static_file_response = client.get("/static/front.css") + assert front_static_file_response.status_code == 200 + assert front_static_file_response.text == "css" diff --git a/tests/variantstudy/model/command/test_create_cluster.py b/tests/variantstudy/model/command/test_create_cluster.py index a0285f06a2..35c21e91ab 100644 --- a/tests/variantstudy/model/command/test_create_cluster.py +++ b/tests/variantstudy/model/command/test_create_cluster.py @@ -28,11 +28,13 @@ from antarest.study.storage.variantstudy.model.command.update_config import UpdateConfig from antarest.study.storage.variantstudy.model.command_context import CommandContext +GEN = np.random.default_rng(1000) + class TestCreateCluster: def test_init(self, command_context: CommandContext): - prepro = np.random.rand(365, 6).tolist() - modulation = np.random.rand(8760, 4).tolist() + prepro = GEN.random((365, 6)).tolist() + modulation = GEN.random((8760, 4)).tolist() cl = CreateCluster( area_id="foo", cluster_name="Cluster1", @@ -52,7 +54,7 @@ def test_init(self, command_context: CommandContext): modulation_id = command_context.matrix_service.create(modulation) assert cl.area_id == "foo" assert cl.cluster_name == "Cluster1" - assert cl.parameters == {"group": "Nuclear", "nominalcapacity": "2400", "unitcount": "2"} + assert cl.parameters == {"group": "Nuclear", "nominalcapacity": 2400, "unitcount": 2} assert cl.prepro == f"matrix://{prepro_id}" assert cl.modulation == f"matrix://{modulation_id}" @@ -85,8 +87,8 @@ def test_apply(self, empty_study: FileStudy, command_context: CommandContext): "market-bid-cost": "30", } - prepro = np.random.rand(365, 6).tolist() - modulation = np.random.rand(8760, 4).tolist() + prepro = GEN.random((365, 6)).tolist() + modulation = GEN.random((8760, 4)).tolist() command = CreateCluster( area_id=area_id, cluster_name=cluster_name, @@ -147,8 +149,8 @@ def test_apply(self, empty_study: FileStudy, command_context: CommandContext): ) def test_to_dto(self, command_context: CommandContext): - prepro = np.random.rand(365, 6).tolist() - modulation = np.random.rand(8760, 4).tolist() + prepro = GEN.random((365, 6)).tolist() + modulation = GEN.random((8760, 4)).tolist() command = CreateCluster( area_id="foo", cluster_name="Cluster1", @@ -160,12 +162,12 @@ def test_to_dto(self, command_context: CommandContext): prepro_id = command_context.matrix_service.create(prepro) modulation_id = command_context.matrix_service.create(modulation) dto = command.to_dto() - assert dto.dict() == { + assert dto.model_dump() == { "action": "create_cluster", "args": { "area_id": "foo", "cluster_name": "Cluster1", - "parameters": {"group": "Nuclear", "nominalcapacity": "2400", "unitcount": "2"}, + "parameters": {"group": "Nuclear", "nominalcapacity": 2400, "unitcount": 2}, "prepro": prepro_id, "modulation": modulation_id, }, @@ -175,8 +177,8 @@ def test_to_dto(self, command_context: CommandContext): def test_match(command_context: CommandContext): - prepro = np.random.rand(365, 6).tolist() - modulation = np.random.rand(8760, 4).tolist() + prepro = GEN.random((365, 6)).tolist() + modulation = GEN.random((8760, 4)).tolist() base = CreateCluster( area_id="foo", cluster_name="foo", @@ -235,8 +237,8 @@ def test_revert(command_context: CommandContext): def test_create_diff(command_context: CommandContext): - prepro_a = np.random.rand(365, 6).tolist() - modulation_a = np.random.rand(8760, 4).tolist() + prepro_a = GEN.random((365, 6)).tolist() + modulation_a = GEN.random((8760, 4)).tolist() base = CreateCluster( area_id="foo", cluster_name="foo", @@ -246,8 +248,8 @@ def test_create_diff(command_context: CommandContext): command_context=command_context, ) - prepro_b = np.random.rand(365, 6).tolist() - modulation_b = np.random.rand(8760, 4).tolist() + prepro_b = GEN.random((365, 6)).tolist() + modulation_b = GEN.random((8760, 4)).tolist() other_match = CreateCluster( area_id="foo", cluster_name="foo", diff --git a/tests/variantstudy/model/command/test_create_link.py b/tests/variantstudy/model/command/test_create_link.py index 36c91d198b..9d847f0f24 100644 --- a/tests/variantstudy/model/command/test_create_link.py +++ b/tests/variantstudy/model/command/test_create_link.py @@ -37,16 +37,15 @@ def test_validation(self, empty_study: FileStudy, command_context: CommandContex area1_id = transform_name_to_id(area1) area2 = "Area2" - area2_id = transform_name_to_id(area2) - CreateArea.parse_obj( + CreateArea.model_validate( { "area_name": area1, "command_context": command_context, } ).apply(empty_study) - CreateArea.parse_obj( + CreateArea.model_validate( { "area_name": area2, "command_context": command_context, @@ -54,7 +53,7 @@ def test_validation(self, empty_study: FileStudy, command_context: CommandContex ).apply(empty_study) with pytest.raises(ValidationError): - create_link_command: ICommand = CreateLink( + CreateLink( area1=area1_id, area2=area1_id, parameters={}, @@ -73,21 +72,21 @@ def test_apply(self, empty_study: FileStudy, command_context: CommandContext): area3 = "Area3" area3_id = transform_name_to_id(area3) - CreateArea.parse_obj( + CreateArea.model_validate( { "area_name": area1, "command_context": command_context, } ).apply(empty_study) - CreateArea.parse_obj( + CreateArea.model_validate( { "area_name": area2, "command_context": command_context, } ).apply(empty_study) - CreateArea.parse_obj( + CreateArea.model_validate( { "area_name": area3, "command_context": command_context, @@ -145,7 +144,7 @@ def test_apply(self, empty_study: FileStudy, command_context: CommandContext): # TODO:assert matrix default content : 1 column, 8760 rows, value = 1 - output = CreateLink.parse_obj( + output = CreateLink.model_validate( { "area1": area1_id, "area2": area2_id, @@ -173,7 +172,7 @@ def test_apply(self, empty_study: FileStudy, command_context: CommandContext): "filter-year-by-year": "hourly", } - create_link_command: ICommand = CreateLink.parse_obj( + create_link_command: ICommand = CreateLink.model_validate( { "area1": area3_id, "area2": area1_id, diff --git a/tests/variantstudy/model/command/test_create_renewables_cluster.py b/tests/variantstudy/model/command/test_create_renewables_cluster.py index 91d3ffc3a9..b23d6ba553 100644 --- a/tests/variantstudy/model/command/test_create_renewables_cluster.py +++ b/tests/variantstudy/model/command/test_create_renewables_cluster.py @@ -46,7 +46,7 @@ def test_init(self, command_context: CommandContext) -> None: # Check the command data assert cl.area_id == "foo" assert cl.cluster_name == "Cluster1" - assert cl.parameters == {"group": "Solar Thermal", "nominalcapacity": "2400", "unitcount": "2"} + assert cl.parameters == {"group": "Solar Thermal", "nominalcapacity": 2400, "unitcount": 2} def test_validate_cluster_name(self, command_context: CommandContext) -> None: with pytest.raises(ValidationError, match="cluster_name"): @@ -131,12 +131,12 @@ def test_to_dto(self, command_context: CommandContext) -> None: command_context=command_context, ) dto = command.to_dto() - assert dto.dict() == { + assert dto.model_dump() == { "action": "create_renewables_cluster", # "renewables" with a final "s". "args": { "area_id": "foo", "cluster_name": "Cluster1", - "parameters": {"group": "Solar Thermal", "nominalcapacity": "2400", "unitcount": "2"}, + "parameters": {"group": "Solar Thermal", "nominalcapacity": 2400, "unitcount": 2}, }, "id": None, "version": 1, diff --git a/tests/variantstudy/model/command/test_create_st_storage.py b/tests/variantstudy/model/command/test_create_st_storage.py index bc0b8e80d0..14fbef9b8b 100644 --- a/tests/variantstudy/model/command/test_create_st_storage.py +++ b/tests/variantstudy/model/command/test_create_st_storage.py @@ -29,6 +29,8 @@ from antarest.study.storage.variantstudy.model.command_context import CommandContext from antarest.study.storage.variantstudy.model.model import CommandDTO +GEN = np.random.default_rng(1000) + @pytest.fixture(name="recent_study") def recent_study_fixture(empty_study: FileStudy) -> FileStudy: @@ -75,8 +77,8 @@ def recent_study_fixture(empty_study: FileStudy) -> FileStudy: class TestCreateSTStorage: # noinspection SpellCheckingInspection def test_init(self, command_context: CommandContext): - pmax_injection = np.random.rand(8760, 1) - inflows = np.random.uniform(0, 1000, size=(8760, 1)) + pmax_injection = GEN.random((8760, 1)) + inflows = GEN.uniform(0, 1000, size=(8760, 1)) cmd = CreateSTStorage( command_context=command_context, area_id="area_fr", @@ -112,17 +114,22 @@ def test_init__invalid_storage_name(self, recent_study: FileStudy, command_conte parameters=STStorageConfig(**parameters), ) # We get 2 errors because the `storage_name` is duplicated in the `parameters`: - assert ctx.value.errors() == [ - { - "loc": ("__root__",), - "msg": "Invalid name '?%$$'.", - "type": "value_error", - } - ] + assert ctx.value.error_count() == 1 + raised_error = ctx.value.errors()[0] + assert raised_error["type"] == "value_error" + assert raised_error["msg"] == "Value error, Invalid name '?%$$'." + assert raised_error["input"] == { + "efficiency": 0.94, + "group": "Battery", + "initialleveloptim": True, + "injectionnominalcapacity": 1500, + "name": "?%$$", + "reservoircapacity": 20000, + "withdrawalnominalcapacity": 1500, + } - # noinspection SpellCheckingInspection def test_init__invalid_matrix_values(self, command_context: CommandContext): - array = np.random.rand(8760, 1) # OK + array = GEN.random((8760, 1)) array[10] = 25 # BAD with pytest.raises(ValidationError) as ctx: CreateSTStorage( @@ -131,17 +138,15 @@ def test_init__invalid_matrix_values(self, command_context: CommandContext): parameters=STStorageConfig(**PARAMETERS), pmax_injection=array.tolist(), # type: ignore ) - assert ctx.value.errors() == [ - { - "loc": ("pmax_injection",), - "msg": "Matrix values should be between 0 and 1", - "type": "value_error", - } - ] + assert ctx.value.error_count() == 1 + raised_error = ctx.value.errors()[0] + assert raised_error["type"] == "value_error" + assert raised_error["msg"] == "Value error, Matrix values should be between 0 and 1" + assert "pmax_injection" in raised_error["input"] # noinspection SpellCheckingInspection def test_init__invalid_matrix_shape(self, command_context: CommandContext): - array = np.random.rand(24, 1) # BAD SHAPE + array = GEN.random((24, 1)) # BAD SHAPE with pytest.raises(ValidationError) as ctx: CreateSTStorage( command_context=command_context, @@ -149,18 +154,14 @@ def test_init__invalid_matrix_shape(self, command_context: CommandContext): parameters=STStorageConfig(**PARAMETERS), pmax_injection=array.tolist(), # type: ignore ) - assert ctx.value.errors() == [ - { - "loc": ("pmax_injection",), - "msg": "Invalid matrix shape (24, 1), expected (8760, 1)", - "type": "value_error", - } - ] - - # noinspection SpellCheckingInspection + assert ctx.value.error_count() == 1 + raised_error = ctx.value.errors()[0] + assert raised_error["type"] == "value_error" + assert raised_error["msg"] == "Value error, Invalid matrix shape (24, 1), expected (8760, 1)" + assert "pmax_injection" in raised_error["input"] def test_init__invalid_nan_value(self, command_context: CommandContext): - array = np.random.rand(8760, 1) # OK + array = GEN.random((8760, 1)) # OK array[20] = np.nan # BAD with pytest.raises(ValidationError) as ctx: CreateSTStorage( @@ -169,37 +170,25 @@ def test_init__invalid_nan_value(self, command_context: CommandContext): parameters=STStorageConfig(**PARAMETERS), pmax_injection=array.tolist(), # type: ignore ) - assert ctx.value.errors() == [ - { - "loc": ("pmax_injection",), - "msg": "Matrix values cannot contain NaN", - "type": "value_error", - } - ] - - # noinspection SpellCheckingInspection + assert ctx.value.error_count() == 1 + raised_error = ctx.value.errors()[0] + assert raised_error["type"] == "value_error" + assert raised_error["msg"] == "Value error, Matrix values cannot contain NaN" + assert "pmax_injection" in raised_error["input"] def test_init__invalid_matrix_type(self, command_context: CommandContext): - array = {"data": [1, 2, 3]} with pytest.raises(ValidationError) as ctx: CreateSTStorage( command_context=command_context, area_id="area_fr", parameters=STStorageConfig(**PARAMETERS), - pmax_injection=array, # type: ignore + pmax_injection=[1, 2, 3], ) - assert ctx.value.errors() == [ - { - "loc": ("pmax_injection",), - "msg": "value is not a valid list", - "type": "type_error.list", - }, - { - "loc": ("pmax_injection",), - "msg": "str type expected", - "type": "type_error.str", - }, - ] + assert ctx.value.error_count() == 1 + raised_error = ctx.value.errors()[0] + assert raised_error["type"] == "value_error" + assert raised_error["msg"] == "Value error, Invalid matrix shape (3,), expected (8760, 1)" + assert "pmax_injection" in raised_error["input"] def test_apply_config__invalid_version(self, empty_study: FileStudy, command_context: CommandContext): # Given an old study in version 720 @@ -305,8 +294,8 @@ def test_apply__nominal_case(self, recent_study: FileStudy, command_context: Com create_area.apply(recent_study) # Then, apply the command to create a new ST Storage - pmax_injection = np.random.rand(8760, 1) - inflows = np.random.uniform(0, 1000, size=(8760, 1)) + pmax_injection = GEN.random((8760, 1)) + inflows = GEN.uniform(0, 1000, size=(8760, 1)) cmd = CreateSTStorage( command_context=command_context, area_id=transform_name_to_id(create_area.area_name), @@ -439,8 +428,8 @@ def test_create_diff__not_equals(self, command_context: CommandContext): area_id="area_fr", parameters=STStorageConfig(**PARAMETERS), ) - upper_rule_curve = np.random.rand(8760, 1) - inflows = np.random.uniform(0, 1000, size=(8760, 1)) + upper_rule_curve = GEN.random((8760, 1)) + inflows = GEN.uniform(0, 1000, size=(8760, 1)) other = CreateSTStorage( command_context=command_context, area_id=cmd.area_id, diff --git a/tests/variantstudy/model/command/test_manage_district.py b/tests/variantstudy/model/command/test_manage_district.py index cd944dfdba..47b6e55c42 100644 --- a/tests/variantstudy/model/command/test_manage_district.py +++ b/tests/variantstudy/model/command/test_manage_district.py @@ -26,7 +26,6 @@ def test_manage_district(empty_study: FileStudy, command_context: CommandContext): - study_path = empty_study.config.study_path area1 = "Area1" area1_id = transform_name_to_id(area1) @@ -34,23 +33,22 @@ def test_manage_district(empty_study: FileStudy, command_context: CommandContext area2_id = transform_name_to_id(area2) area3 = "Area3" - area3_id = transform_name_to_id(area3) - CreateArea.parse_obj( + CreateArea.model_validate( { "area_name": area1, "command_context": command_context, } ).apply(empty_study) - CreateArea.parse_obj( + CreateArea.model_validate( { "area_name": area2, "command_context": command_context, } ).apply(empty_study) - CreateArea.parse_obj( + CreateArea.model_validate( { "area_name": area3, "command_context": command_context, diff --git a/tests/variantstudy/model/command/test_remove_area.py b/tests/variantstudy/model/command/test_remove_area.py index 94d3a8f3e5..474ce51a42 100644 --- a/tests/variantstudy/model/command/test_remove_area.py +++ b/tests/variantstudy/model/command/test_remove_area.py @@ -212,7 +212,7 @@ def test_apply(self, empty_study: FileStudy, command_context: CommandContext): if empty_study.config.version >= 810: default_ruleset[f"r,{area_id2},0,{renewable_id.lower()}"] = 1 if empty_study.config.version >= 870: - default_ruleset[f"bc,bd 2,0"] = 1 + default_ruleset["bc,bd 2,0"] = 1 if empty_study.config.version >= 920: default_ruleset[f"hfl,{area_id2},0"] = 1 if empty_study.config.version >= 910: diff --git a/tests/variantstudy/model/command/test_remove_link.py b/tests/variantstudy/model/command/test_remove_link.py index 1a3f5f0428..e7e46bb6af 100644 --- a/tests/variantstudy/model/command/test_remove_link.py +++ b/tests/variantstudy/model/command/test_remove_link.py @@ -70,7 +70,7 @@ def test_remove_link__validation(self, area1: str, area2: str, expected: t.Dict[ and that the areas are well-ordered in alphabetical order (Antares Solver convention). """ command = RemoveLink(area1=area1, area2=area2, command_context=Mock(spec=CommandContext)) - actual = command.dict(include={"area1", "area2"}) + actual = command.model_dump(include={"area1", "area2"}) assert actual == expected @staticmethod diff --git a/tests/variantstudy/model/command/test_remove_st_storage.py b/tests/variantstudy/model/command/test_remove_st_storage.py index d8d2048bf5..032a303650 100644 --- a/tests/variantstudy/model/command/test_remove_st_storage.py +++ b/tests/variantstudy/model/command/test_remove_st_storage.py @@ -83,9 +83,11 @@ def test_init__invalid_storage_id(self, recent_study: FileStudy, command_context assert ctx.value.errors() == [ { "ctx": {"pattern": "[a-z0-9_(),& -]+"}, + "input": "?%$$", "loc": ("storage_id",), - "msg": 'string does not match regex "[a-z0-9_(),& -]+"', - "type": "value_error.str.regex", + "msg": "String should match pattern '[a-z0-9_(),& -]+'", + "type": "string_pattern_mismatch", + "url": "https://errors.pydantic.dev/2.8/v/string_pattern_mismatch", } ] diff --git a/tests/variantstudy/model/command/test_replace_matrix.py b/tests/variantstudy/model/command/test_replace_matrix.py index f30e05ff7a..8a215692f5 100644 --- a/tests/variantstudy/model/command/test_replace_matrix.py +++ b/tests/variantstudy/model/command/test_replace_matrix.py @@ -32,7 +32,7 @@ def test_apply(self, empty_study: FileStudy, command_context: CommandContext): area1 = "Area1" area1_id = transform_name_to_id(area1) - CreateArea.parse_obj( + CreateArea.model_validate( { "area_name": area1, "command_context": command_context, @@ -40,7 +40,7 @@ def test_apply(self, empty_study: FileStudy, command_context: CommandContext): ).apply(empty_study) target_element = f"input/hydro/common/capacity/maxpower_{area1_id}" - replace_matrix = ReplaceMatrix.parse_obj( + replace_matrix = ReplaceMatrix.model_validate( { "target": target_element, "matrix": [[0]], @@ -56,7 +56,7 @@ def test_apply(self, empty_study: FileStudy, command_context: CommandContext): assert matrix_id in target_path.read_text() target_element = "fake/matrix/path" - replace_matrix = ReplaceMatrix.parse_obj( + replace_matrix = ReplaceMatrix.model_validate( { "target": target_element, "matrix": [[0]], diff --git a/tests/variantstudy/model/command/test_update_config.py b/tests/variantstudy/model/command/test_update_config.py index 28800ad188..bbce0a45c1 100644 --- a/tests/variantstudy/model/command/test_update_config.py +++ b/tests/variantstudy/model/command/test_update_config.py @@ -32,7 +32,7 @@ def test_update_config(empty_study: FileStudy, command_context: CommandContext): area1 = "Area1" area1_id = transform_name_to_id(area1) - CreateArea.parse_obj( + CreateArea.model_validate( { "area_name": area1, "command_context": command_context, diff --git a/tests/variantstudy/model/test_variant_model.py b/tests/variantstudy/model/test_variant_model.py index 3b714c046a..b51dc8509d 100644 --- a/tests/variantstudy/model/test_variant_model.py +++ b/tests/variantstudy/model/test_variant_model.py @@ -153,7 +153,7 @@ def test_commands_service( repository=variant_study_service.repository, ) results = generator.generate_snapshot(saved_id, jwt_user, denormalize=False) - assert results.dict() == { + assert results.model_dump() == { "success": True, "details": [ { From a35b0cea8c64635690fef6323b8512886675db8e Mon Sep 17 00:00:00 2001 From: Hatim Dinia <33469289+hdinia@users.noreply.github.com> Date: Thu, 12 Sep 2024 17:55:38 +0200 Subject: [PATCH 002/182] feat(ui-common): integrate `GlideDataGrid` into `MatrixGrid` (#2134) --- webapp/.npmrc | 3 +- webapp/public/locales/en/main.json | 1 + webapp/public/locales/fr/main.json | 1 + .../explore/Modelization/Areas/Load.tsx | 12 +- .../components/common/MatrixGrid/Matrix.tsx | 106 ++++ .../common/MatrixGrid/MatrixActions.tsx | 101 ++++ .../common/MatrixGrid/index.test.tsx | 220 ++++++++ .../components/common/MatrixGrid/index.tsx | 151 +++++ .../src/components/common/MatrixGrid/style.ts | 25 + .../src/components/common/MatrixGrid/types.ts | 71 +++ .../MatrixGrid/useColumnMapping.test.ts | 130 +++++ .../common/MatrixGrid/useColumnMapping.ts | 55 ++ .../MatrixGrid/useGridCellContent.test.ts | 526 ++++++++++++++++++ .../common/MatrixGrid/useGridCellContent.ts | 171 ++++++ .../common/MatrixGrid/useMatrix.test.tsx | 286 ++++++++++ .../components/common/MatrixGrid/useMatrix.ts | 223 ++++++++ .../common/MatrixGrid/utils.test.ts | 176 ++++++ .../src/components/common/MatrixGrid/utils.ts | 200 +++++++ webapp/src/services/api/matrix.ts | 28 +- .../tests/mocks/mockGetBoundingClientRect.ts | 76 +++ .../src/tests/mocks/mockHTMLCanvasElement.ts | 56 ++ webapp/src/tests/mocks/mockResizeObserver.ts | 21 + webapp/src/tests/setup.ts | 7 +- webapp/vite.config.ts | 2 +- 24 files changed, 2630 insertions(+), 18 deletions(-) create mode 100644 webapp/src/components/common/MatrixGrid/Matrix.tsx create mode 100644 webapp/src/components/common/MatrixGrid/MatrixActions.tsx create mode 100644 webapp/src/components/common/MatrixGrid/index.test.tsx create mode 100644 webapp/src/components/common/MatrixGrid/index.tsx create mode 100644 webapp/src/components/common/MatrixGrid/style.ts create mode 100644 webapp/src/components/common/MatrixGrid/types.ts create mode 100644 webapp/src/components/common/MatrixGrid/useColumnMapping.test.ts create mode 100644 webapp/src/components/common/MatrixGrid/useColumnMapping.ts create mode 100644 webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts create mode 100644 webapp/src/components/common/MatrixGrid/useGridCellContent.ts create mode 100644 webapp/src/components/common/MatrixGrid/useMatrix.test.tsx create mode 100644 webapp/src/components/common/MatrixGrid/useMatrix.ts create mode 100644 webapp/src/components/common/MatrixGrid/utils.test.ts create mode 100644 webapp/src/components/common/MatrixGrid/utils.ts create mode 100644 webapp/src/tests/mocks/mockGetBoundingClientRect.ts create mode 100644 webapp/src/tests/mocks/mockHTMLCanvasElement.ts create mode 100644 webapp/src/tests/mocks/mockResizeObserver.ts diff --git a/webapp/.npmrc b/webapp/.npmrc index 4fd021952d..519835e9e2 100644 --- a/webapp/.npmrc +++ b/webapp/.npmrc @@ -1 +1,2 @@ -engine-strict=true \ No newline at end of file +engine-strict=true +save-prefix= # prevent the caret (^) symbol use when installing new dependencies \ No newline at end of file diff --git a/webapp/public/locales/en/main.json b/webapp/public/locales/en/main.json index f839e170eb..05c1685d59 100644 --- a/webapp/public/locales/en/main.json +++ b/webapp/public/locales/en/main.json @@ -88,6 +88,7 @@ "global.error.delete": "Deletion failed", "global.area.add": "Add an area", "global.add": "Add", + "global.timeSeries": "Time Series", "login.error": "Failed to authenticate", "tasks.title": "Tasks", "api.title": "API", diff --git a/webapp/public/locales/fr/main.json b/webapp/public/locales/fr/main.json index 2b8bcd3cbf..45b1bf3b6c 100644 --- a/webapp/public/locales/fr/main.json +++ b/webapp/public/locales/fr/main.json @@ -88,6 +88,7 @@ "global.error.delete": "La suppression a échoué", "global.area.add": "Ajouter une zone", "global.add": "Ajouter", + "global.timeSeries": "Séries temporelles", "login.error": "Échec de l'authentification", "tasks.title": "Tâches", "api.title": "API", diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx index 030a09e0ee..0271e3b5a8 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx @@ -1,12 +1,8 @@ -import { useOutletContext } from "react-router"; import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../redux/selectors"; -import { MatrixStats, StudyMetadata } from "../../../../../../common/types"; -import MatrixInput from "../../../../../common/MatrixInput"; -import { Root } from "./style"; +import Matrix from "../../../../../common/MatrixGrid/Matrix"; function Load() { - const { study } = useOutletContext<{ study: StudyMetadata }>(); const currentArea = useAppSelector(getCurrentAreaId); const url = `input/load/series/load_${currentArea}`; @@ -14,11 +10,7 @@ function Load() { // JSX //////////////////////////////////////////////////////////////// - return ( - - - - ); + return ; } export default Load; diff --git a/webapp/src/components/common/MatrixGrid/Matrix.tsx b/webapp/src/components/common/MatrixGrid/Matrix.tsx new file mode 100644 index 0000000000..97973650d1 --- /dev/null +++ b/webapp/src/components/common/MatrixGrid/Matrix.tsx @@ -0,0 +1,106 @@ +import { Divider, Skeleton } from "@mui/material"; +import MatrixGrid from "."; +import { useMatrix } from "./useMatrix"; +import { useState } from "react"; +import { useTranslation } from "react-i18next"; +import ImportDialog from "../dialogs/ImportDialog"; +import { useOutletContext } from "react-router"; +import { StudyMetadata } from "../../../common/types"; +import { MatrixContainer, MatrixHeader, MatrixTitle } from "./style"; +import MatrixActions from "./MatrixActions"; +import EmptyView from "../page/SimpleContent"; + +interface MatrixProps { + url: string; + title?: string; + enableTimeSeriesColumns?: boolean; + enableAggregateColumns?: boolean; +} + +function Matrix({ + url, + title = "global.timeSeries", + enableTimeSeriesColumns = true, + enableAggregateColumns = false, +}: MatrixProps) { + const { t } = useTranslation(); + const { study } = useOutletContext<{ study: StudyMetadata }>(); + const [openImportDialog, setOpenImportDialog] = useState(false); + + const { + data, + error, + isLoading, + isSubmitting, + columns, + dateTime, + handleCellEdit, + handleMultipleCellsEdit, + handleImport, + handleSaveUpdates, + pendingUpdatesCount, + undo, + redo, + canUndo, + canRedo, + } = useMatrix(study.id, url, enableTimeSeriesColumns, enableAggregateColumns); + + //////////////////////////////////////////////////////////////// + // JSX + //////////////////////////////////////////////////////////////// + + if (isLoading) { + return ; + } + + if (error) { + return ; + } + + if (!data || data.length === 0) { + return ; + } + + return ( + + + {t(title)} + setOpenImportDialog(true)} + onSave={handleSaveUpdates} + studyId={study.id} + path={url} + disabled={data.length === 0} + pendingUpdatesCount={pendingUpdatesCount} + isSubmitting={isSubmitting} + undo={undo} + redo={redo} + canUndo={canUndo} + canRedo={canRedo} + /> + + + + {openImportDialog && ( + setOpenImportDialog(false)} + onImport={handleImport} + accept={{ "text/*": [".csv", ".tsv", ".txt"] }} + /> + )} + + ); +} + +export default Matrix; diff --git a/webapp/src/components/common/MatrixGrid/MatrixActions.tsx b/webapp/src/components/common/MatrixGrid/MatrixActions.tsx new file mode 100644 index 0000000000..4d135c6da2 --- /dev/null +++ b/webapp/src/components/common/MatrixGrid/MatrixActions.tsx @@ -0,0 +1,101 @@ +import { Box, Divider, IconButton, Tooltip } from "@mui/material"; +import SplitButton from "../buttons/SplitButton"; +import DownloadMatrixButton from "../DownloadMatrixButton"; +import FileDownload from "@mui/icons-material/FileDownload"; +import { useTranslation } from "react-i18next"; +import { LoadingButton } from "@mui/lab"; +import Save from "@mui/icons-material/Save"; +import { Undo, Redo } from "@mui/icons-material"; + +interface MatrixActionsProps { + onImport: VoidFunction; + onSave: VoidFunction; + studyId: string; + path: string; + disabled: boolean; + pendingUpdatesCount: number; + isSubmitting: boolean; + undo: VoidFunction; + redo: VoidFunction; + canUndo: boolean; + canRedo: boolean; +} + +function MatrixActions({ + onImport, + onSave, + studyId, + path, + disabled, + pendingUpdatesCount, + isSubmitting, + undo, + redo, + canUndo, + canRedo, +}: MatrixActionsProps) { + const { t } = useTranslation(); + + //////////////////////////////////////////////////////////////// + // JSX + //////////////////////////////////////////////////////////////// + + return ( + + + + + + + + + + + + + + + + } + variant="contained" + size="small" + disabled={pendingUpdatesCount === 0} + > + ({pendingUpdatesCount}) + + + , + }} + disabled={isSubmitting} + > + {t("global.import")} + + + + ); +} + +export default MatrixActions; diff --git a/webapp/src/components/common/MatrixGrid/index.test.tsx b/webapp/src/components/common/MatrixGrid/index.test.tsx new file mode 100644 index 0000000000..e7189ad93c --- /dev/null +++ b/webapp/src/components/common/MatrixGrid/index.test.tsx @@ -0,0 +1,220 @@ +import { render } from "@testing-library/react"; +import MatrixGrid, { MatrixGridProps } from "."; +import Box from "@mui/material/Box"; +import { mockGetBoundingClientRect } from "../../../tests/mocks/mockGetBoundingClientRect"; +import { type EnhancedGridColumn, ColumnTypes } from "./types"; +import { mockHTMLCanvasElement } from "../../../tests/mocks/mockHTMLCanvasElement"; + +beforeEach(() => { + mockHTMLCanvasElement(); + mockGetBoundingClientRect(); + vi.clearAllMocks(); +}); + +function renderMatrixGrid( + width: string, + height: string, + data: MatrixGridProps["data"], + columns: EnhancedGridColumn[], + rows: number, +) { + return render( + + + , + ); +} + +function assertDimensions( + element: HTMLElement, + expectedWidth: number, + expectedHeight: number, +) { + const rect = element.getBoundingClientRect(); + expect(rect.width).toBe(expectedWidth); + expect(rect.height).toBe(expectedHeight); +} + +describe("MatrixGrid rendering", () => { + test("MatrixGrid should be rendered within a 450x500px container and match these dimensions", () => { + const data = [ + [1, 2, 3], + [4, 5, 6], + ]; + + const columns = [ + { + id: "col1", + title: "Column 1", + width: 100, + type: ColumnTypes.Number, + editable: true, + order: 0, + }, + { + id: "col2", + title: "Column 2", + width: 100, + type: ColumnTypes.Number, + editable: true, + order: 1, + }, + { + id: "col3", + title: "Column 3", + width: 100, + type: ColumnTypes.Number, + editable: true, + order: 2, + }, + ]; + + const rows = 2; + + // Render the MatrixGrid inside a parent container with specific dimensions + const { container } = renderMatrixGrid( + "450px", // Use inline style for exact measurement + "500px", + data, + columns, + rows, + ); + + const matrix = container.firstChild; + + if (matrix instanceof HTMLElement) { + expect(matrix).toBeInTheDocument(); + assertDimensions(matrix, 450, 500); + } else { + throw new Error("Expected an HTMLElement but received a different node."); + } + }); + + test("MatrixGrid should render correctly with no data", () => { + const data: MatrixGridProps["data"] = []; + + const columns = [ + { + id: "col1", + title: "Column 1", + width: 100, + type: ColumnTypes.Number, + editable: true, + order: 0, + }, + { + id: "col2", + title: "Column 2", + width: 100, + type: ColumnTypes.Number, + editable: true, + order: 1, + }, + { + id: "col3", + title: "Column 3", + width: 100, + type: ColumnTypes.Number, + editable: true, + order: 2, + }, + ]; + + const rows = 0; + + const { container } = renderMatrixGrid( + "450px", + "500px", + data, + columns, + rows, + ); + + const matrix = container.firstChild; + + if (matrix instanceof HTMLElement) { + expect(matrix).toBeInTheDocument(); + assertDimensions(matrix, 450, 500); + } else { + throw new Error("Expected an HTMLElement but received a different node."); + } + }); + + test("MatrixGrid should match the provided dimensions when resized", () => { + const data = [ + [1, 2, 3], + [4, 5, 6], + ]; + + const columns = [ + { + id: "col1", + title: "Column 1", + width: 100, + type: ColumnTypes.Number, + editable: true, + order: 0, + }, + { + id: "col2", + title: "Column 2", + width: 100, + type: ColumnTypes.Number, + editable: true, + order: 1, + }, + { + id: "col3", + title: "Column 3", + width: 100, + type: ColumnTypes.Number, + editable: true, + order: 2, + }, + ]; + + const rows = 2; + + const { container, rerender } = renderMatrixGrid( + "450px", + "500px", + data, + columns, + rows, + ); + + let matrix = container.firstChild; + + if (matrix instanceof HTMLElement) { + assertDimensions(matrix, 450, 500); + } else { + throw new Error("Expected an HTMLElement but received a different node."); + } + + rerender( + + + , + ); + + matrix = container.firstChild; + + if (matrix instanceof HTMLElement) { + assertDimensions(matrix, 300, 400); + } else { + throw new Error("Expected an HTMLElement but received a different node."); + } + }); +}); diff --git a/webapp/src/components/common/MatrixGrid/index.tsx b/webapp/src/components/common/MatrixGrid/index.tsx new file mode 100644 index 0000000000..70acbabd1e --- /dev/null +++ b/webapp/src/components/common/MatrixGrid/index.tsx @@ -0,0 +1,151 @@ +import "@glideapps/glide-data-grid/dist/index.css"; +import DataEditor, { + CompactSelection, + EditableGridCell, + EditListItem, + GridCellKind, + GridSelection, + Item, +} from "@glideapps/glide-data-grid"; +import { useGridCellContent } from "./useGridCellContent"; +import { useMemo, useState } from "react"; +import { EnhancedGridColumn, GridUpdate } from "./types"; +import { darkTheme, readOnlyDarkTheme } from "./utils"; +import { useColumnMapping } from "./useColumnMapping"; + +export interface MatrixGridProps { + data: number[][]; + rows: number; + columns: EnhancedGridColumn[]; + dateTime?: string[]; + aggregates?: Record; + rowHeaders?: string[]; + width?: string; + height?: string; + onCellEdit?: (update: GridUpdate) => void; + onMultipleCellsEdit?: (updates: GridUpdate[]) => void; + readOnly?: boolean; +} + +function MatrixGrid({ + data, + rows, + columns, + dateTime, + aggregates, + rowHeaders, + width = "100%", + height = "100%", + onCellEdit, + onMultipleCellsEdit, + readOnly = false, +}: MatrixGridProps) { + const [selection, setSelection] = useState({ + columns: CompactSelection.empty(), + rows: CompactSelection.empty(), + }); + + const { gridToData } = useColumnMapping(columns); + + const theme = useMemo(() => { + if (readOnly) { + return { + ...darkTheme, + ...readOnlyDarkTheme, + }; + } + + return darkTheme; + }, [readOnly]); + + const getCellContent = useGridCellContent( + data, + columns, + gridToData, + dateTime, + aggregates, + rowHeaders, + readOnly, + ); + + //////////////////////////////////////////////////////////////// + // Event Handlers + //////////////////////////////////////////////////////////////// + + const handleCellEdited = (coordinates: Item, value: EditableGridCell) => { + if (value.kind !== GridCellKind.Number) { + // Invalid numeric value + return; + } + + const dataCoordinates = gridToData(coordinates); + + if (dataCoordinates && onCellEdit) { + onCellEdit({ coordinates: dataCoordinates, value }); + } + }; + + const handleCellsEdited = (newValues: readonly EditListItem[]) => { + const updates = newValues + .map((edit): GridUpdate | null => { + const dataCoordinates = gridToData(edit.location); + + if (edit.value.kind !== GridCellKind.Number || !dataCoordinates) { + return null; + } + + return { + coordinates: dataCoordinates, + value: edit.value, + }; + }) + .filter((update): update is GridUpdate => update !== null); + + if (updates.length === 0) { + // No valid updates + return; + } + + if (onCellEdit && updates.length === 1) { + // If only one cell is edited,`onCellEdit` is called + // we don't need to call `onMultipleCellsEdit` + return; + } + + if (onMultipleCellsEdit) { + onMultipleCellsEdit(updates); + } + + // Return true to prevent calling `onCellEdit` + // for each cell after`onMultipleCellsEdit` is called + return true; + }; + + //////////////////////////////////////////////////////////////// + // JSX + //////////////////////////////////////////////////////////////// + + return ( + <> + +
+ + ); +} + +export default MatrixGrid; diff --git a/webapp/src/components/common/MatrixGrid/style.ts b/webapp/src/components/common/MatrixGrid/style.ts new file mode 100644 index 0000000000..2b0d3f76ff --- /dev/null +++ b/webapp/src/components/common/MatrixGrid/style.ts @@ -0,0 +1,25 @@ +import styled from "@emotion/styled"; +import { Box, Typography } from "@mui/material"; + +export const MatrixContainer = styled(Box)(() => ({ + width: "100%", + height: "100%", + display: "flex", + flexDirection: "column", + alignItems: "center", + overflow: "hidden", +})); + +export const MatrixHeader = styled(Box)(() => ({ + width: "100%", + display: "flex", + flexFlow: "row wrap", + justifyContent: "space-between", + alignItems: "flex-end", +})); + +export const MatrixTitle = styled(Typography)(() => ({ + fontSize: 20, + fontWeight: 400, + lineHeight: 1, +})); diff --git a/webapp/src/components/common/MatrixGrid/types.ts b/webapp/src/components/common/MatrixGrid/types.ts new file mode 100644 index 0000000000..2183801db5 --- /dev/null +++ b/webapp/src/components/common/MatrixGrid/types.ts @@ -0,0 +1,71 @@ +import { + BaseGridColumn, + EditableGridCell, + Item, +} from "@glideapps/glide-data-grid"; + +//////////////////////////////////////////////////////////////// +// Enums +//////////////////////////////////////////////////////////////// + +export const ColumnTypes = { + DateTime: "datetime", + Number: "number", + Text: "text", + Aggregate: "aggregate", +} as const; + +export const Operations = { + ADD: "+", + SUB: "-", + MUL: "*", + DIV: "/", + ABS: "ABS", + EQ: "=", +} as const; + +//////////////////////////////////////////////////////////////// +// Types +//////////////////////////////////////////////////////////////// + +// Derived types +export type ColumnType = (typeof ColumnTypes)[keyof typeof ColumnTypes]; +export type Operation = (typeof Operations)[keyof typeof Operations]; + +export interface EnhancedGridColumn extends BaseGridColumn { + id: string; + width?: number; + type: ColumnType; + editable: boolean; +} +// Represents data coming from the API +export interface MatrixDataDTO { + data: number[][]; + columns: number[]; + index: number[]; +} + +export type Coordinates = [number, number]; + +// Shape of updates provided by Glide Data Grid +export interface GridUpdate { + coordinates: Item; // The cell being updated + value: EditableGridCell; +} + +// Shape of updates to be sent to the API +export interface MatrixUpdate { + operation: Operation; + value: number; +} + +// Shape of multiple updates to be sent to the API +export interface MatrixUpdateDTO { + coordinates: number[][]; // Array of [col, row] pairs + operation: MatrixUpdate; +} + +export type DateIncrementStrategy = ( + date: moment.Moment, + step: number, +) => moment.Moment; diff --git a/webapp/src/components/common/MatrixGrid/useColumnMapping.test.ts b/webapp/src/components/common/MatrixGrid/useColumnMapping.test.ts new file mode 100644 index 0000000000..df476b482d --- /dev/null +++ b/webapp/src/components/common/MatrixGrid/useColumnMapping.test.ts @@ -0,0 +1,130 @@ +import { renderHook } from "@testing-library/react"; +import { describe, test, expect } from "vitest"; +import { useColumnMapping } from "./useColumnMapping"; +import { EnhancedGridColumn, ColumnTypes } from "./types"; + +describe("useColumnMapping", () => { + const testColumns: EnhancedGridColumn[] = [ + { + id: "text", + title: "Text", + type: ColumnTypes.Text, + width: 100, + editable: false, + }, + { + id: "date", + title: "Date", + type: ColumnTypes.DateTime, + width: 100, + editable: false, + }, + { + id: "num1", + title: "Number 1", + type: ColumnTypes.Number, + width: 100, + editable: true, + }, + { + id: "num2", + title: "Number 2", + type: ColumnTypes.Number, + width: 100, + editable: true, + }, + { + id: "agg", + title: "Aggregate", + type: ColumnTypes.Aggregate, + width: 100, + editable: false, + }, + ]; + + test("should create gridToData and dataToGrid functions", () => { + const { result } = renderHook(() => useColumnMapping(testColumns)); + expect(result.current.gridToData).toBeDefined(); + expect(result.current.dataToGrid).toBeDefined(); + }); + + describe("gridToData", () => { + test("should return null for non-data columns", () => { + const { result } = renderHook(() => useColumnMapping(testColumns)); + expect(result.current.gridToData([0, 0])).toBeNull(); // Text column + expect(result.current.gridToData([1, 0])).toBeNull(); // DateTime column + expect(result.current.gridToData([4, 0])).toBeNull(); // Aggregate column + }); + + test("should map grid coordinates to data coordinates for data columns", () => { + const { result } = renderHook(() => useColumnMapping(testColumns)); + expect(result.current.gridToData([2, 0])).toEqual([0, 0]); // First Number column + expect(result.current.gridToData([3, 1])).toEqual([1, 1]); // Second Number column + }); + }); + + describe("dataToGrid", () => { + test("should map data coordinates to grid coordinates", () => { + const { result } = renderHook(() => useColumnMapping(testColumns)); + expect(result.current.dataToGrid([0, 0])).toEqual([2, 0]); // First data column + expect(result.current.dataToGrid([1, 1])).toEqual([3, 1]); // Second data column + }); + }); + + test("should handle columns with only non-data types", () => { + const nonDataColumns: EnhancedGridColumn[] = [ + { + id: "text", + title: "Text", + type: ColumnTypes.Text, + width: 100, + editable: false, + }, + { + id: "date", + title: "Date", + type: ColumnTypes.DateTime, + width: 100, + editable: false, + }, + ]; + const { result } = renderHook(() => useColumnMapping(nonDataColumns)); + expect(result.current.gridToData([0, 0])).toBeNull(); + expect(result.current.gridToData([1, 0])).toBeNull(); + expect(result.current.dataToGrid([0, 0])).toEqual([undefined, 0]); // No data columns, so this should return an invalid grid coordinate + }); + + test("should handle columns with only data types", () => { + const dataOnlyColumns: EnhancedGridColumn[] = [ + { + id: "num1", + title: "Number 1", + type: ColumnTypes.Number, + width: 100, + editable: true, + }, + { + id: "num2", + title: "Number 2", + type: ColumnTypes.Number, + width: 100, + editable: true, + }, + ]; + const { result } = renderHook(() => useColumnMapping(dataOnlyColumns)); + expect(result.current.gridToData([0, 0])).toEqual([0, 0]); + expect(result.current.gridToData([1, 1])).toEqual([1, 1]); + expect(result.current.dataToGrid([0, 0])).toEqual([0, 0]); + expect(result.current.dataToGrid([1, 1])).toEqual([1, 1]); + }); + + test("should memoize the result", () => { + const { result, rerender } = renderHook( + (props) => useColumnMapping(props.columns), + { initialProps: { columns: testColumns } }, + ); + const initialResult = result.current; + rerender({ columns: testColumns }); + expect(result.current).toBe(initialResult); + }); +}); diff --git a/webapp/src/components/common/MatrixGrid/useColumnMapping.ts b/webapp/src/components/common/MatrixGrid/useColumnMapping.ts new file mode 100644 index 0000000000..ab46b4db5e --- /dev/null +++ b/webapp/src/components/common/MatrixGrid/useColumnMapping.ts @@ -0,0 +1,55 @@ +import { useMemo } from "react"; +import { Item } from "@glideapps/glide-data-grid"; +import { EnhancedGridColumn, ColumnTypes } from "./types"; + +/** + * A custom hook that provides coordinate mapping functions for a grid with mixed column types. + * + * @description + * This hook addresses a common issue in grid components that display both data and non-data columns: + * the mismatch between grid coordinates (visual position) and data coordinates (position in the data array). + * + * The problem arises when a grid includes non-data columns (e.g., row headers, date/time columns) + * alongside editable data columns. In such cases, the index of a column in the grid doesn't + * directly correspond to its index in the data array. This can lead to issues where: + * 1. The wrong data is displayed in cells. + * 2. Edits are applied to incorrect data points. + * 3. Non-editable columns are mistakenly treated as editable. + * + * This hook solves these issues by providing two mapping functions: + * - gridToData: Converts grid coordinates to data array coordinates. + * - dataToGrid: Converts data array coordinates to grid coordinates. + * + * By using these functions, components can ensure that they're always working with the correct + * coordinates, whether they're displaying data, handling edits, or managing selection. + * + * @param columns - An array of column definitions, including their types. + * + * @returns An object containing two functions: + * - gridToData: (gridCoord: Item) => Item | null + * Converts grid coordinates to data coordinates. Returns null for non-data columns. + * - dataToGrid: (dataCoord: Item) => Item + * Converts data coordinates to grid coordinates. + */ +export function useColumnMapping(columns: EnhancedGridColumn[]) { + return useMemo(() => { + const dataColumnIndices = columns.reduce((acc, col, index) => { + if (col.type === ColumnTypes.Number) { + acc.push(index); + } + return acc; + }, [] as number[]); + + const gridToData = ([col, row]: Item): Item | null => { + const dataColIndex = dataColumnIndices.indexOf(col); + return dataColIndex !== -1 ? [dataColIndex, row] : null; + }; + + const dataToGrid = ([col, row]: Item): Item => [ + dataColumnIndices[col], + row, + ]; + + return { gridToData, dataToGrid }; + }, [columns]); +} diff --git a/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts b/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts new file mode 100644 index 0000000000..ccb0736fb5 --- /dev/null +++ b/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts @@ -0,0 +1,526 @@ +import { renderHook } from "@testing-library/react"; +import { useGridCellContent } from "./useGridCellContent"; +import { ColumnTypes, type EnhancedGridColumn } from "./types"; +import { useColumnMapping } from "./useColumnMapping"; + +// Mocking i18next +vi.mock("i18next", () => { + const i18n = { + language: "fr", + use: vi.fn().mockReturnThis(), + init: vi.fn(), + t: vi.fn((key) => key), + changeLanguage: vi.fn((lang) => { + i18n.language = lang; + return Promise.resolve(); + }), + on: vi.fn(), + }; + return { default: i18n }; +}); + +// Mocking react-i18next +vi.mock("react-i18next", async (importOriginal) => { + const actual = await importOriginal(); + return Object.assign({}, actual, { + useTranslation: () => ({ + t: vi.fn((key) => key), + i18n: { + changeLanguage: vi.fn(), + language: "fr", + }, + }), + initReactI18next: { + type: "3rdParty", + init: vi.fn(), + }, + }); +}); + +function renderGridCellContent( + data: number[][], + columns: EnhancedGridColumn[], + dateTime?: string[], + aggregates?: Record, + rowHeaders?: string[], +) { + const { result: mappingResult } = renderHook(() => useColumnMapping(columns)); + const { gridToData } = mappingResult.current; + + const { result } = renderHook(() => + useGridCellContent( + data, + columns, + gridToData, + dateTime, + aggregates, + rowHeaders, + ), + ); + + return result.current; +} + +describe("useGridCellContent", () => { + test("returns correct text cell content for DateTime columns", () => { + const columns: EnhancedGridColumn[] = [ + { + id: "date", + title: "Date", + type: ColumnTypes.DateTime, + width: 150, + editable: false, + }, + { + id: "data1", + title: "TS 1", + type: ColumnTypes.Number, + width: 50, + editable: true, + }, + ]; + + const dateTime = ["2024-01-07T00:00:00Z", "2024-01-02T00:00:00Z"]; + + const data = [ + [11, 10], + [12, 15], + ]; + + const getCellContent = renderGridCellContent(data, columns, dateTime); + const cell = getCellContent([0, 0]); + + if ("displayData" in cell) { + expect(cell.kind).toBe("text"); + expect(cell.displayData).toBe("7 janv. 2024, 00:00"); + } else { + throw new Error("Expected a text cell with displayData"); + } + }); + + describe("returns correct cell content for Aggregate columns", () => { + const columns: EnhancedGridColumn[] = [ + { + id: "total", + title: "Total", + type: ColumnTypes.Aggregate, + width: 100, + editable: false, + }, + ]; + + const data = [ + [10, 20, 30], + [15, 25, 35], + [5, 15, 25], + ]; + + const aggregates = { + total: [60, 75, 45], + }; + + // Tests for each row in the aggregates array + test.each([ + [0, 60], // Row index 0, expected sum 60 + [1, 75], // Row index 1, expected sum 75 + [2, 45], // Row index 2, expected sum 45 + ])( + "ensures the correct numeric cell content is returned for aggregates at row %i", + (row, expectedData) => { + const getCellContent = renderGridCellContent( + data, + columns, + undefined, + aggregates, + ); + + const cell = getCellContent([0, row]); // Column index is 0 because we only have one column of aggregates + + if ("data" in cell) { + expect(cell.kind).toBe("number"); + expect(cell.data).toBe(expectedData); + } else { + throw new Error(`Expected a number cell with data at row [${row}]`); + } + }, + ); + }); + + test("returns correct content for DateTime, Number, and Aggregate columns", () => { + const columns = [ + { + id: "date", + title: "Date", + type: ColumnTypes.DateTime, + width: 150, + editable: false, + }, + { + id: "ts1", + title: "TS 1", + type: ColumnTypes.Number, + width: 50, + editable: true, + }, + { + id: "ts2", + title: "TS 2", + type: ColumnTypes.Number, + width: 50, + editable: true, + }, + { + id: "total", + title: "Total", + type: ColumnTypes.Aggregate, + width: 100, + editable: false, + }, + ]; + + const dateTime = ["2021-01-01T00:00:00Z", "2021-01-02T00:00:00Z"]; + + const data = [ + [100, 200], + [150, 250], + ]; + + const aggregates = { + total: [300, 400], + }; + + const getCellContent = renderGridCellContent( + data, + columns, + dateTime, + aggregates, + ); + + const dateTimeCell = getCellContent([0, 0]); + + if (dateTimeCell.kind === "text" && "displayData" in dateTimeCell) { + expect(dateTimeCell.data).toBe(""); + expect(dateTimeCell.displayData).toBe("1 janv. 2021, 00:00"); + } else { + throw new Error( + "Expected a DateTime cell with displayData containing the year 2021", + ); + } + + const numberCell = getCellContent([1, 0]); + + if (numberCell.kind === "number" && "data" in numberCell) { + expect(numberCell.data).toBe(100); + } else { + throw new Error("Expected a Number cell with data"); + } + + const aggregateCell = getCellContent([3, 0]); + + if (aggregateCell.kind === "number" && "data" in aggregateCell) { + expect(aggregateCell.data).toBe(300); + } else { + throw new Error("Expected an Aggregate cell with data"); + } + }); +}); + +describe("useGridCellContent with mixed column types", () => { + test("handles non-data columns correctly and accesses data columns properly", () => { + const columns: EnhancedGridColumn[] = [ + { + id: "rowHeader", + title: "Row", + type: ColumnTypes.Text, + width: 100, + editable: false, + }, + { + id: "date", + title: "Date", + type: ColumnTypes.DateTime, + width: 150, + editable: false, + }, + { + id: "data1", + title: "TS 1", + type: ColumnTypes.Number, + width: 50, + editable: true, + }, + { + id: "data2", + title: "TS 2", + type: ColumnTypes.Number, + width: 50, + editable: true, + }, + { + id: "total", + title: "Total", + type: ColumnTypes.Aggregate, + width: 100, + editable: false, + }, + ]; + + const rowHeaders = ["Row 1", "Row 2"]; + const dateTime = ["2024-01-01T00:00:00Z", "2024-01-02T00:00:00Z"]; + const data = [ + [100, 200], + [150, 250], + ]; + const aggregates = { + total: [300, 400], + }; + + const getCellContent = renderGridCellContent( + data, + columns, + dateTime, + aggregates, + rowHeaders, + ); + + // Test row header (Text column) + const rowHeaderCell = getCellContent([0, 0]); + + if (rowHeaderCell.kind === "text" && "displayData" in rowHeaderCell) { + expect(rowHeaderCell.displayData).toBe("Row 1"); + } else { + throw new Error("Expected a text cell with data for row header"); + } + + // Test date column (DateTime column) + const dateCell = getCellContent([1, 0]); + if (dateCell.kind === "text" && "displayData" in dateCell) { + expect(dateCell.data).toBe(""); + expect(dateCell.displayData).toBe("1 janv. 2024, 00:00"); + } else { + throw new Error("Expected a text cell with data for date"); + } + + // Test first data column (Number column) + const firstDataCell = getCellContent([2, 0]); + + if (firstDataCell.kind === "number" && "data" in firstDataCell) { + expect(firstDataCell.data).toBe(100); + } else { + throw new Error("Expected a number cell with data for first data column"); + } + + // Test second data column (Number column) + const secondDataCell = getCellContent([3, 0]); + + if (secondDataCell.kind === "number" && "data" in secondDataCell) { + expect(secondDataCell.data).toBe(200); + } else { + throw new Error( + "Expected a number cell with data for second data column", + ); + } + + // Test aggregate column + const aggregateCell = getCellContent([4, 0]); + + if (aggregateCell.kind === "number" && "data" in aggregateCell) { + expect(aggregateCell.data).toBe(300); + } else { + throw new Error("Expected a number cell with data for aggregate column"); + } + }); + + test("correctly handles data columns when non-data columns are removed", () => { + const columns: EnhancedGridColumn[] = [ + { + id: "data1", + title: "TS 1", + type: ColumnTypes.Number, + width: 50, + editable: true, + }, + { + id: "data2", + title: "TS 2", + type: ColumnTypes.Number, + width: 50, + editable: true, + }, + { + id: "data3", + title: "TS 3", + type: ColumnTypes.Number, + width: 50, + editable: true, + }, + ]; + + const data = [ + [100, 200, 300], + [150, 250, 350], + ]; + + const getCellContent = renderGridCellContent(data, columns); + + // Test all data columns + for (let i = 0; i < 3; i++) { + const cell = getCellContent([i, 0]); + if (cell.kind === "number" && "data" in cell) { + expect(cell.data).toBe(data[0][i]); + } else { + throw new Error(`Expected a number cell with data for column ${i}`); + } + } + }); +}); + +describe("useGridCellContent additional tests", () => { + test("handles empty data array correctly", () => { + const columns: EnhancedGridColumn[] = [ + { + id: "data1", + title: "TS 1", + type: ColumnTypes.Number, + width: 50, + editable: true, + }, + ]; + const data: number[][] = []; + + const getCellContent = renderGridCellContent(data, columns); + + const cell = getCellContent([0, 0]); + if (cell.kind === "number" && "data" in cell) { + expect(cell.data).toBeUndefined(); + } else { + throw new Error("Expected a number cell with undefined data"); + } + }); + + test("handles column access out of bounds", () => { + const columns: EnhancedGridColumn[] = [ + { + id: "data1", + title: "TS 1", + type: ColumnTypes.Number, + width: 50, + editable: true, + }, + ]; + const data = [[100]]; + + const getCellContent = renderGridCellContent(data, columns); + + const cell = getCellContent([1, 0]); // Accessing column index 1 which doesn't exist + expect(cell.kind).toBe("text"); + if ("displayData" in cell) { + expect(cell.displayData).toBe("N/A"); + } else { + throw new Error("Expected a text cell with 'N/A' displayData"); + } + }); + + test("handles row access out of bounds", () => { + const columns: EnhancedGridColumn[] = [ + { + id: "data1", + title: "TS 1", + type: ColumnTypes.Number, + width: 50, + editable: true, + }, + ]; + const data = [[100]]; + + const getCellContent = renderGridCellContent(data, columns); + + const cell = getCellContent([0, 1]); // Accessing row index 1 which doesn't exist + if (cell.kind === "number" && "data" in cell) { + expect(cell.data).toBeUndefined(); + } else { + throw new Error("Expected a number cell with undefined data"); + } + }); + + test("handles missing aggregates correctly", () => { + const columns: EnhancedGridColumn[] = [ + { + id: "total", + title: "Total", + type: ColumnTypes.Aggregate, + width: 100, + editable: false, + }, + ]; + const data = [[100]]; + // No aggregates provided + + const getCellContent = renderGridCellContent(data, columns); + + const cell = getCellContent([0, 0]); + if (cell.kind === "number" && "data" in cell) { + expect(cell.data).toBeUndefined(); + } else { + throw new Error( + "Expected a number cell with undefined data for missing aggregate", + ); + } + }); + + test("handles mixed editable and non-editable columns", () => { + const columns: EnhancedGridColumn[] = [ + { + id: "data1", + title: "TS 1", + type: ColumnTypes.Number, + width: 50, + editable: true, + }, + { + id: "data2", + title: "TS 2", + type: ColumnTypes.Number, + width: 50, + editable: false, + }, + ]; + const data = [[100, 200]]; + + const getCellContent = renderGridCellContent(data, columns); + + const editableCell = getCellContent([0, 0]); + const nonEditableCell = getCellContent([1, 0]); + + if (editableCell.kind === "number" && nonEditableCell.kind === "number") { + expect(editableCell.readonly).toBe(false); + expect(nonEditableCell.readonly).toBe(true); + } else { + throw new Error("Expected number cells with correct readonly property"); + } + }); + + test("handles very large numbers correctly", () => { + const columns: EnhancedGridColumn[] = [ + { + id: "data1", + title: "TS 1", + type: ColumnTypes.Number, + width: 50, + editable: true, + }, + ]; + const largeNumber = 1e20; + const data = [[largeNumber]]; + + const getCellContent = renderGridCellContent(data, columns); + + const cell = getCellContent([0, 0]); + if (cell.kind === "number" && "data" in cell) { + expect(cell.data).toBe(largeNumber); + expect(cell.displayData).toBe(largeNumber.toString()); + } else { + throw new Error("Expected a number cell with correct large number data"); + } + }); +}); diff --git a/webapp/src/components/common/MatrixGrid/useGridCellContent.ts b/webapp/src/components/common/MatrixGrid/useGridCellContent.ts new file mode 100644 index 0000000000..09f6d06451 --- /dev/null +++ b/webapp/src/components/common/MatrixGrid/useGridCellContent.ts @@ -0,0 +1,171 @@ +import { useCallback, useMemo } from "react"; +import { GridCell, GridCellKind, Item } from "@glideapps/glide-data-grid"; +import { type EnhancedGridColumn, type ColumnType, ColumnTypes } from "./types"; +import { formatDateTime } from "./utils"; + +type CellContentGenerator = ( + row: number, + col: number, + column: EnhancedGridColumn, + data: number[][], + dateTime?: string[], + aggregates?: Record, + rowHeaders?: string[], +) => GridCell; + +/** + * Map of cell content generators for each column type. + * Each generator function creates the appropriate GridCell based on the column type and data. + */ +const cellContentGenerators: Record = { + [ColumnTypes.Text]: ( + row, + col, + column, + data, + dateTime, + aggregates, + rowHeaders, + ) => ({ + kind: GridCellKind.Text, + data: "", // Custom row headers are not editable + displayData: rowHeaders?.[row] ?? "", + readonly: !column.editable, + allowOverlay: false, + }), + [ColumnTypes.DateTime]: (row, col, column, data, dateTime) => ({ + kind: GridCellKind.Text, + data: "", // Date/time columns are not editable + displayData: formatDateTime(dateTime?.[row] ?? ""), + readonly: !column.editable, + allowOverlay: false, + }), + [ColumnTypes.Number]: (row, col, column, data) => { + const value = data?.[row]?.[col]; + + return { + kind: GridCellKind.Number, + data: value, + displayData: value?.toString(), + readonly: !column.editable, + allowOverlay: true, + }; + }, + [ColumnTypes.Aggregate]: (row, col, column, data, dateTime, aggregates) => { + const value = aggregates?.[column.id]?.[row]; + + return { + kind: GridCellKind.Number, + data: value, + displayData: value?.toString() ?? "", + readonly: !column.editable, + allowOverlay: false, + }; + }, +}; + +/** + * Custom hook to generate cell content for the DataEditor grid. + * + * This hook addresses the challenge of mapping different types of data (numbers, dates, text, aggregates) + * to the correct columns in a grid, regardless of the column arrangement. It's especially useful when + * the grid structure is dynamic and may include special columns like row headers or date/time columns + * that are not part of the main data array. + * + * The hook creates a flexible mapping system that: + * 1. Identifies the type of each column (number, text, date, aggregate). + * 2. For number columns, maps their position in the grid to their index in the data array. + * 3. Generates appropriate cell content based on the column type and data source. + * + * This approach allows for a dynamic grid structure where columns can be added, removed, or rearranged + * without needing to modify the underlying data access logic. + * + * @param data - The matrix of numerical data, where each sub-array represents a row. + * @param columns - Array of column configurations. + * @param gridToData - Optional function to map grid cell coordinates to data array indices. + * @param dateTime - Optional array of date-time strings for date columns. + * @param aggregates - Optional object mapping column IDs to arrays of aggregated values. + * @param rowHeaders - Optional array of row header labels. + * @param readOnly - Whether the grid is read-only (default is false). + * @returns A function that accepts a grid item and returns the configured grid cell content. + */ +export function useGridCellContent( + data: number[][], + columns: EnhancedGridColumn[], + gridToData: (cell: Item) => Item | null, + dateTime?: string[], + aggregates?: Record, + rowHeaders?: string[], + readOnly = false, +): (cell: Item) => GridCell { + const columnMap = useMemo(() => { + return new Map(columns.map((column, index) => [index, column])); + }, [columns]); + + const getCellContent = useCallback( + (cell: Item): GridCell => { + const [col, row] = cell; + const column = columnMap.get(col); + + if (!column) { + return { + kind: GridCellKind.Text, + data: "", + displayData: "N/A", + readonly: true, + allowOverlay: false, + }; + } + + const generator = cellContentGenerators[column.type]; + + if (!generator) { + console.error(`No generator found for column type: ${column.type}`); + return { + kind: GridCellKind.Text, + data: "", + displayData: "Error", + readonly: true, + allowOverlay: false, + }; + } + + // Adjust column index for Number type columns (data columns) + // This ensures we access the correct index in the data array, + // accounting for any non-data columns in the grid + let adjustedCol = col; + + if (column.type === ColumnTypes.Number && gridToData) { + // Map grid cell to data array index + const dataCell = gridToData(cell); + + if (dataCell) { + adjustedCol = dataCell[0]; + } + } + + const gridCell = generator( + row, + adjustedCol, + column, + data, + dateTime, + aggregates, + rowHeaders, + ); + + // Prevent updates for read-only grids + if (readOnly) { + return { + ...gridCell, + allowOverlay: false, + }; + } + + return gridCell; + }, + [columnMap, gridToData, data, dateTime, aggregates, rowHeaders, readOnly], + ); + + return getCellContent; +} diff --git a/webapp/src/components/common/MatrixGrid/useMatrix.test.tsx b/webapp/src/components/common/MatrixGrid/useMatrix.test.tsx new file mode 100644 index 0000000000..2fe6599aca --- /dev/null +++ b/webapp/src/components/common/MatrixGrid/useMatrix.test.tsx @@ -0,0 +1,286 @@ +import { renderHook, act, waitFor } from "@testing-library/react"; +import { vi, describe, expect, beforeEach } from "vitest"; +import { useMatrix } from "./useMatrix"; +import * as apiMatrix from "../../../services/api/matrix"; +import * as apiStudy from "../../../services/api/study"; +import { + MatrixEditDTO, + MatrixIndex, + Operator, + StudyOutputDownloadLevelDTO, +} from "../../../common/types"; +import { GridUpdate, MatrixDataDTO } from "./types"; +import { GridCellKind } from "@glideapps/glide-data-grid"; + +vi.mock("../../../services/api/matrix"); +vi.mock("../../../services/api/study"); + +describe("useMatrix", () => { + const mockStudyId = "study123"; + const mockUrl = "https://studies/study123/matrix"; + + const mockMatrixData: MatrixDataDTO = { + data: [ + [1, 2], + [3, 4], + ], + columns: [0, 1], + index: [0, 1], + }; + + const mockMatrixIndex: MatrixIndex = { + start_date: "2023-01-01", + steps: 2, + first_week_size: 7, + level: StudyOutputDownloadLevelDTO.DAILY, + }; + + // Helper function to set up the hook and wait for initial loading + const setupHook = async () => { + vi.mocked(apiStudy.getStudyData).mockResolvedValue(mockMatrixData); + vi.mocked(apiMatrix.getStudyMatrixIndex).mockResolvedValue(mockMatrixIndex); + + const { result } = renderHook(() => + useMatrix(mockStudyId, mockUrl, true, true), + ); + + await waitFor(() => { + expect(result.current.isLoading).toBe(false); + }); + + return result; + }; + + // Helper function to create a grid update object + const createGridUpdate = ( + row: number, + col: number, + value: number, + ): GridUpdate => ({ + coordinates: [row, col], + value: { + kind: GridCellKind.Number, + data: value, + displayData: value.toString(), + allowOverlay: true, + }, + }); + + beforeEach(() => { + vi.clearAllMocks(); + }); + + test("should fetch matrix data and index on mount", async () => { + vi.mocked(apiStudy.getStudyData).mockResolvedValue(mockMatrixData); + vi.mocked(apiMatrix.getStudyMatrixIndex).mockResolvedValue(mockMatrixIndex); + + const result = await setupHook(); + + await waitFor(() => { + expect(result.current.isLoading).toBe(false); + }); + + expect(result.current.data).toEqual(mockMatrixData.data); + expect(result.current.columns.length).toBeGreaterThan(0); + expect(result.current.dateTime.length).toBeGreaterThan(0); + }); + + test("should handle cell edit", async () => { + vi.mocked(apiStudy.getStudyData).mockResolvedValue(mockMatrixData); + vi.mocked(apiMatrix.getStudyMatrixIndex).mockResolvedValue(mockMatrixIndex); + + const result = await setupHook(); + + await waitFor(() => { + expect(result.current.isLoading).toBe(false); + }); + + act(() => { + result.current.handleCellEdit(createGridUpdate(0, 1, 5)); + }); + + expect(result.current.data[1][0]).toBe(5); + expect(result.current.pendingUpdatesCount).toBe(1); + }); + + test("should handle multiple cells edit", async () => { + vi.mocked(apiStudy.getStudyData).mockResolvedValue(mockMatrixData); + vi.mocked(apiMatrix.getStudyMatrixIndex).mockResolvedValue(mockMatrixIndex); + + const result = await setupHook(); + + await waitFor(() => { + expect(result.current.isLoading).toBe(false); + }); + + act(() => { + result.current.handleMultipleCellsEdit([ + createGridUpdate(0, 1, 5), + createGridUpdate(1, 0, 6), + ]); + }); + + expect(result.current.data[1][0]).toBe(5); + expect(result.current.data[0][1]).toBe(6); + expect(result.current.pendingUpdatesCount).toBe(2); + }); + + test("should handle save updates", async () => { + vi.mocked(apiStudy.getStudyData).mockResolvedValue(mockMatrixData); + vi.mocked(apiMatrix.getStudyMatrixIndex).mockResolvedValue(mockMatrixIndex); + vi.mocked(apiMatrix.updateMatrix).mockResolvedValue(undefined); + + const result = await setupHook(); + + await waitFor(() => { + expect(result.current.isLoading).toBe(false); + }); + + act(() => { + result.current.handleCellEdit(createGridUpdate(0, 1, 5)); + }); + + await act(async () => { + await result.current.handleSaveUpdates(); + }); + + const expectedEdit: MatrixEditDTO = { + coordinates: [[1, 0]], + operation: { + operation: Operator.EQ, + value: 5, + }, + }; + + expect(apiMatrix.updateMatrix).toHaveBeenCalledWith(mockStudyId, mockUrl, [ + expectedEdit, + ]); + expect(result.current.pendingUpdatesCount).toBe(0); + }); + + test("should handle file import", async () => { + const mockFile = new File([""], "test.csv", { type: "text/csv" }); + vi.mocked(apiStudy.importFile).mockResolvedValue(""); + vi.mocked(apiStudy.getStudyData).mockResolvedValue(mockMatrixData); + vi.mocked(apiMatrix.getStudyMatrixIndex).mockResolvedValue(mockMatrixIndex); + + const result = await setupHook(); + + await act(async () => { + await result.current.handleImport(mockFile); + }); + + expect(apiStudy.importFile).toHaveBeenCalledWith( + mockFile, + mockStudyId, + mockUrl, + ); + }); + + describe("Undo and Redo functionality", () => { + test("should have correct initial undo/redo states", async () => { + vi.mocked(apiStudy.getStudyData).mockResolvedValue(mockMatrixData); + vi.mocked(apiMatrix.getStudyMatrixIndex).mockResolvedValue( + mockMatrixIndex, + ); + + const result = await setupHook(); + + await waitFor(() => { + expect(result.current.isLoading).toBe(false); + }); + + expect(result.current.canUndo).toBe(false); + expect(result.current.canRedo).toBe(false); + }); + + test("should update canUndo and canRedo states correctly after edits", async () => { + vi.mocked(apiStudy.getStudyData).mockResolvedValue(mockMatrixData); + vi.mocked(apiMatrix.getStudyMatrixIndex).mockResolvedValue( + mockMatrixIndex, + ); + + const result = await setupHook(); + + await waitFor(() => { + expect(result.current.isLoading).toBe(false); + }); + + act(() => { + result.current.handleCellEdit(createGridUpdate(0, 1, 5)); + }); + + expect(result.current.canUndo).toBe(true); + expect(result.current.canRedo).toBe(false); + + act(() => { + result.current.undo(); + }); + + expect(result.current.canUndo).toBe(false); + expect(result.current.canRedo).toBe(true); + + act(() => { + result.current.redo(); + }); + + expect(result.current.canUndo).toBe(true); + expect(result.current.canRedo).toBe(false); + }); + + test("should reset redo state after a new edit", async () => { + vi.mocked(apiStudy.getStudyData).mockResolvedValue(mockMatrixData); + vi.mocked(apiMatrix.getStudyMatrixIndex).mockResolvedValue( + mockMatrixIndex, + ); + + const result = await setupHook(); + + await waitFor(() => { + expect(result.current.isLoading).toBe(false); + }); + + act(() => { + result.current.handleCellEdit(createGridUpdate(0, 1, 5)); + }); + + act(() => { + result.current.undo(); + }); + + expect(result.current.canRedo).toBe(true); + + act(() => { + result.current.handleCellEdit(createGridUpdate(1, 0, 6)); + }); + + expect(result.current.canUndo).toBe(true); + expect(result.current.canRedo).toBe(false); + }); + + test("should handle undo to initial state", async () => { + vi.mocked(apiStudy.getStudyData).mockResolvedValue(mockMatrixData); + vi.mocked(apiMatrix.getStudyMatrixIndex).mockResolvedValue( + mockMatrixIndex, + ); + + const result = await setupHook(); + + await waitFor(() => { + expect(result.current.isLoading).toBe(false); + }); + + act(() => { + result.current.handleCellEdit(createGridUpdate(0, 1, 5)); + }); + + act(() => { + result.current.undo(); + }); + + expect(result.current.data).toEqual(mockMatrixData.data); + expect(result.current.canUndo).toBe(false); + expect(result.current.canRedo).toBe(true); + }); + }); +}); diff --git a/webapp/src/components/common/MatrixGrid/useMatrix.ts b/webapp/src/components/common/MatrixGrid/useMatrix.ts new file mode 100644 index 0000000000..ff16f05b09 --- /dev/null +++ b/webapp/src/components/common/MatrixGrid/useMatrix.ts @@ -0,0 +1,223 @@ +import { useCallback, useEffect, useMemo, useState } from "react"; +import { AxiosError } from "axios"; +import { enqueueSnackbar } from "notistack"; +import { t } from "i18next"; +import { MatrixIndex, Operator } from "../../../common/types"; +import useEnqueueErrorSnackbar from "../../../hooks/useEnqueueErrorSnackbar"; +import { + getStudyMatrixIndex, + updateMatrix, +} from "../../../services/api/matrix"; +import { getStudyData, importFile } from "../../../services/api/study"; +import { + EnhancedGridColumn, + MatrixDataDTO, + ColumnTypes, + GridUpdate, + MatrixUpdateDTO, +} from "./types"; +import { generateDateTime, generateTimeSeriesColumns } from "./utils"; +import useUndo from "use-undo"; +import { GridCellKind } from "@glideapps/glide-data-grid"; + +interface DataState { + data: number[][]; + pendingUpdates: MatrixUpdateDTO[]; +} + +export function useMatrix( + studyId: string, + url: string, + enableTimeSeriesColumns: boolean, + enableAggregateColumns: boolean, +) { + const enqueueErrorSnackbar = useEnqueueErrorSnackbar(); + const [columnCount, setColumnCount] = useState(0); + const [index, setIndex] = useState(undefined); + const [isLoading, setIsLoading] = useState(true); + const [isSubmitting, setIsSubmitting] = useState(false); + const [error, setError] = useState(undefined); + const [{ present: currentState }, { set: setState, undo, redo, canRedo }] = + useUndo({ data: [], pendingUpdates: [] }); + + const fetchMatrix = useCallback(async () => { + setIsLoading(true); + try { + const [matrix, index] = await Promise.all([ + getStudyData(studyId, url), + getStudyMatrixIndex(studyId, url), + ]); + + setState({ data: matrix.data, pendingUpdates: [] }); + setColumnCount(matrix.columns.length); + setIndex(index); + setIsLoading(false); + } catch (error) { + setError(new Error(t("data.error.matrix"))); + enqueueErrorSnackbar(t("data.error.matrix"), error as AxiosError); + } finally { + setIsLoading(false); + } + }, [enqueueErrorSnackbar, setState, studyId, url]); + + useEffect(() => { + fetchMatrix(); + }, [fetchMatrix]); + + const dateTime = useMemo(() => { + return index ? generateDateTime(index) : []; + }, [index]); + + const columns: EnhancedGridColumn[] = useMemo(() => { + if (!currentState.data) { + return []; + } + + const baseColumns = [ + { + id: "date", + title: "Date", + type: ColumnTypes.DateTime, + editable: false, + }, + ]; + + const dataColumns = enableTimeSeriesColumns + ? generateTimeSeriesColumns({ count: columnCount }) + : []; + + const aggregateColumns = enableAggregateColumns + ? [ + { + id: "min", + title: "Min", + type: ColumnTypes.Aggregate, + width: 50, + editable: false, + }, + { + id: "max", + title: "Max", + type: ColumnTypes.Aggregate, + width: 50, + editable: false, + }, + { + id: "avg", + title: "Avg", + type: ColumnTypes.Aggregate, + width: 50, + editable: false, + }, + ] + : []; + + return [...baseColumns, ...dataColumns, ...aggregateColumns]; + }, [ + currentState.data, + enableTimeSeriesColumns, + columnCount, + enableAggregateColumns, + ]); + + // Apply updates to the matrix data and store them in the pending updates list + const applyUpdates = useCallback( + (updates: GridUpdate[]) => { + const updatedData = currentState.data.map((col) => [...col]); + + const newUpdates: MatrixUpdateDTO[] = updates + .map(({ coordinates: [row, col], value }) => { + if (value.kind === GridCellKind.Number && value.data) { + updatedData[col][row] = value.data; + + return { + coordinates: [[col, row]], + operation: { + operation: Operator.EQ, + value: value.data, + }, + }; + } + + return null; + }) + .filter( + (update): update is NonNullable => update !== null, + ); + + setState({ + data: updatedData, + pendingUpdates: [...currentState.pendingUpdates, ...newUpdates], + }); + }, + [currentState, setState], + ); + + const handleCellEdit = function (update: GridUpdate) { + applyUpdates([update]); + }; + + const handleMultipleCellsEdit = function (updates: GridUpdate[]) { + applyUpdates(updates); + }; + + const handleImport = async (file: File) => { + try { + await importFile(file, studyId, url); + await fetchMatrix(); + } catch (e) { + enqueueErrorSnackbar(t("matrix.error.import"), e as Error); + } + }; + + const handleSaveUpdates = async () => { + if (!currentState.pendingUpdates.length) { + return; + } + + setIsSubmitting(true); + try { + await updateMatrix(studyId, url, currentState.pendingUpdates); + setState({ data: currentState.data, pendingUpdates: [] }); + enqueueSnackbar(t("matrix.success.matrixUpdate"), { + variant: "success", + }); + } catch (error) { + setError(new Error(t("matrix.error.matrixUpdate"))); + enqueueErrorSnackbar(t("matrix.error.matrixUpdate"), error as AxiosError); + } finally { + setIsSubmitting(false); + } + }; + + const handleUndo = useCallback(() => { + undo(); + }, [undo]); + + const handleRedo = useCallback(() => { + redo(); + }, [redo]); + + const canUndoChanges = useMemo( + () => currentState.pendingUpdates.length > 0, + [currentState.pendingUpdates], + ); + + return { + data: currentState.data, + error, + isLoading, + isSubmitting, + columns, + dateTime, + handleCellEdit, + handleMultipleCellsEdit, + handleImport, + handleSaveUpdates, + pendingUpdatesCount: currentState.pendingUpdates.length, + undo: handleUndo, + redo: handleRedo, + canUndo: canUndoChanges, + canRedo, + }; +} diff --git a/webapp/src/components/common/MatrixGrid/utils.test.ts b/webapp/src/components/common/MatrixGrid/utils.test.ts new file mode 100644 index 0000000000..26e42ff6eb --- /dev/null +++ b/webapp/src/components/common/MatrixGrid/utils.test.ts @@ -0,0 +1,176 @@ +import { + MatrixIndex, + StudyOutputDownloadLevelDTO, +} from "../../../common/types"; +import { ColumnTypes } from "./types"; +import { generateDateTime, generateTimeSeriesColumns } from "./utils"; + +describe("generateDateTime", () => { + test("generates correct number of dates", () => { + const metadata: MatrixIndex = { + start_date: "2023-01-01T00:00:00Z", + steps: 5, + first_week_size: 7, + level: StudyOutputDownloadLevelDTO.DAILY, + }; + const result = generateDateTime(metadata); + expect(result).toHaveLength(5); + }); + + test.each([ + { + level: "hourly", + start: "2023-01-01T00:00:00Z", + expected: [ + "2023-01-01T00:00:00.000Z", + "2023-01-01T01:00:00.000Z", + "2023-01-01T02:00:00.000Z", + ], + }, + { + level: "daily", + start: "2023-01-01T00:00:00Z", + expected: [ + "2023-01-01T00:00:00.000Z", + "2023-01-02T00:00:00.000Z", + "2023-01-03T00:00:00.000Z", + ], + }, + { + level: "weekly", + start: "2023-01-01T00:00:00Z", + expected: [ + "2023-01-01T00:00:00.000Z", + "2023-01-08T00:00:00.000Z", + "2023-01-15T00:00:00.000Z", + ], + }, + { + level: "monthly", + start: "2023-01-15T00:00:00Z", + expected: [ + "2023-01-15T00:00:00.000Z", + "2023-02-15T00:00:00.000Z", + "2023-03-15T00:00:00.000Z", + ], + }, + { + level: "annual", + start: "2020-02-29T00:00:00Z", + expected: ["2020-02-29T00:00:00.000Z", "2021-02-28T00:00:00.000Z"], + }, + ] as const)( + "generates correct dates for $level level", + ({ level, start, expected }) => { + const metadata: MatrixIndex = { + start_date: start, + steps: expected.length, + first_week_size: 7, + level: level as MatrixIndex["level"], + }; + + const result = generateDateTime(metadata); + + expect(result).toEqual(expected); + }, + ); + + test("handles edge cases", () => { + const metadata: MatrixIndex = { + start_date: "2023-12-31T23:59:59Z", + steps: 2, + first_week_size: 7, + level: StudyOutputDownloadLevelDTO.HOURLY, + }; + const result = generateDateTime(metadata); + expect(result).toEqual([ + "2023-12-31T23:59:59.000Z", + "2024-01-01T00:59:59.000Z", + ]); + }); +}); + +describe("generateTimeSeriesColumns", () => { + test("generates correct number of columns", () => { + const result = generateTimeSeriesColumns({ count: 5 }); + expect(result).toHaveLength(5); + }); + + test("generates columns with default options", () => { + const result = generateTimeSeriesColumns({ count: 3 }); + expect(result).toEqual([ + { + id: "data1", + title: "TS 1", + type: ColumnTypes.Number, + style: "normal", + width: 50, + editable: true, + }, + { + id: "data2", + title: "TS 2", + type: ColumnTypes.Number, + style: "normal", + width: 50, + editable: true, + }, + { + id: "data3", + title: "TS 3", + type: ColumnTypes.Number, + style: "normal", + width: 50, + editable: true, + }, + ]); + }); + + test("generates columns with custom options", () => { + const result = generateTimeSeriesColumns({ + count: 2, + startIndex: 10, + prefix: "Data", + width: 80, + editable: false, + }); + expect(result).toEqual([ + { + id: "data10", + title: "Data 10", + type: ColumnTypes.Number, + style: "normal", + width: 80, + editable: false, + }, + { + id: "data11", + title: "Data 11", + type: ColumnTypes.Number, + style: "normal", + width: 80, + editable: false, + }, + ]); + }); + + test("handles zero count", () => { + const result = generateTimeSeriesColumns({ count: 0 }); + expect(result).toEqual([]); + }); + + test("handles large count", () => { + const result = generateTimeSeriesColumns({ count: 1000 }); + expect(result).toHaveLength(1000); + expect(result[999].id).toBe("data1000"); + expect(result[999].title).toBe("TS 1000"); + }); + + test("maintains consistent type and style", () => { + const result = generateTimeSeriesColumns({ count: 1000 }); + result.forEach((column) => { + expect(column.type).toBe(ColumnTypes.Number); + expect(column.style).toBe("normal"); + }); + }); +}); diff --git a/webapp/src/components/common/MatrixGrid/utils.ts b/webapp/src/components/common/MatrixGrid/utils.ts new file mode 100644 index 0000000000..8dfefd802f --- /dev/null +++ b/webapp/src/components/common/MatrixGrid/utils.ts @@ -0,0 +1,200 @@ +import moment from "moment"; +import { + DateIncrementStrategy, + EnhancedGridColumn, + ColumnTypes, +} from "./types"; +import { getCurrentLanguage } from "../../../utils/i18nUtils"; +import { Theme } from "@glideapps/glide-data-grid"; +import { MatrixIndex } from "../../../common/types"; + +export const darkTheme: Theme = { + accentColor: "rgba(255, 184, 0, 0.9)", + accentLight: "rgba(255, 184, 0, 0.2)", + accentFg: "#FFFFFF", + textDark: "#FFFFFF", + textMedium: "#C1C3D9", + textLight: "#A1A5B9", + textBubble: "#FFFFFF", + bgIconHeader: "#1E1F2E", + fgIconHeader: "#FFFFFF", + textHeader: "#FFFFFF", + textGroupHeader: "#C1C3D9", + bgCell: "#262737", // main background color + bgCellMedium: "#2E2F42", + bgHeader: "#1E1F2E", + bgHeaderHasFocus: "#2E2F42", + bgHeaderHovered: "#333447", + bgBubble: "#333447", + bgBubbleSelected: "#3C3E57", + bgSearchResult: "#6366F133", + borderColor: "rgba(255, 255, 255, 0.12)", + drilldownBorder: "rgba(255, 255, 255, 0.35)", + linkColor: "#818CF8", + headerFontStyle: "bold 11px", + baseFontStyle: "13px", + fontFamily: "Inter, sans-serif", + editorFontSize: "13px", + lineHeight: 1.5, + textHeaderSelected: "#FFFFFF", + cellHorizontalPadding: 8, + cellVerticalPadding: 5, + headerIconSize: 16, + markerFontStyle: "normal", +}; + +export const readOnlyDarkTheme: Partial = { + bgCell: "#1A1C2A", + bgCellMedium: "#22243A", + textDark: "#A0A0A0", + textMedium: "#808080", + textLight: "#606060", + accentColor: "#4A4C66", + accentLight: "rgba(74, 76, 102, 0.2)", + borderColor: "rgba(255, 255, 255, 0.08)", + drilldownBorder: "rgba(255, 255, 255, 0.2)", +}; + +const dateIncrementStrategies: Record< + MatrixIndex["level"], + DateIncrementStrategy +> = { + hourly: (date, step) => date.clone().add(step, "hours"), + daily: (date, step) => date.clone().add(step, "days"), + weekly: (date, step) => date.clone().add(step, "weeks"), + monthly: (date, step) => date.clone().add(step, "months"), + annual: (date, step) => date.clone().add(step, "years"), +}; + +const dateTimeFormatOptions: Intl.DateTimeFormatOptions = { + year: "numeric", + month: "short", + day: "numeric", + hour: "numeric", + minute: "numeric", + timeZone: "UTC", // Ensures consistent UTC-based time representation +}; + +//////////////////////////////////////////////////////////////// +// Functions +//////////////////////////////////////////////////////////////// + +/** + * Formats a date and time string using predefined locale and format options. + * + * This function takes a date/time string, creates a Date object from it, + * and then formats it according to the specified options. The formatting + * is done using the French locale as the primary choice, falling back to + * English if French is not available. + * + * Important: This function will always return the time in UTC, regardless + * of the system's local time zone. This behavior is controlled by the + * 'timeZone' option in dateTimeFormatOptions. + * + * @param dateTime - The date/time string to format. This should be an ISO 8601 string (e.g., "2024-01-01T00:00:00Z"). + * @returns The formatted date/time string in the format specified by dateTimeFormatOptions, always in UTC. + * + * @example returns "1 janv. 2024, 00:00" (French locale) + * formatDateTime("2024-01-01T00:00:00Z") + * + * @example returns "Jan 1, 2024, 12:00 AM" (English locale) + * formatDateTime("2024-01-01T00:00:00Z") + */ +export function formatDateTime(dateTime: string): string { + const date = moment.utc(dateTime); + const currentLocale = getCurrentLanguage(); + const locales = [currentLocale, "en-US"]; + + return date.toDate().toLocaleString(locales, dateTimeFormatOptions); +} + +/** + * Generates an array of date-time strings based on the provided time metadata. + * + * This function creates a series of date-time strings, starting from the given start date + * and incrementing based on the specified level (hourly, daily, weekly, monthly, or yearly). + * It uses the Moment.js library for date manipulation and the ISO 8601 format for date-time strings. + * + * @param timeMetadata - The time metadata object. + * @param timeMetadata.start_date - The starting date-time in ISO 8601 format (e.g., "2023-01-01T00:00:00Z"). + * @param timeMetadata.steps - The number of date-time strings to generate. + * @param timeMetadata.level - The increment level for date-time generation. + * + * @returns An array of ISO 8601 formatted date-time strings. + * + * @example + * const result = generateDateTime({ + * start_date: "2023-01-01T00:00:00Z", + * steps: 3, + * level: "daily" + * }); + * + * Returns: [ + * "2023-01-01T00:00:00.000Z", + * "2023-01-02T00:00:00.000Z", + * "2023-01-03T00:00:00.000Z" + * ] + * + * @see {@link MatrixIndex} for the structure of the timeMetadata object. + * @see {@link DateIncrementStrategy} for the date increment strategy type. + */ +export function generateDateTime({ + // eslint-disable-next-line camelcase + start_date, + steps, + level, +}: MatrixIndex): string[] { + const startDate = moment.utc(start_date, "YYYY-MM-DD HH:mm:ss"); + const incrementStrategy = dateIncrementStrategies[level]; + + return Array.from({ length: steps }, (_, i) => + incrementStrategy(startDate, i).toISOString(), + ); +} + +/** + * Generates an array of EnhancedGridColumn objects representing time series data columns. + * + * @param options - The options for generating time series columns. + * @param options.count - The number of time series columns to generate. + * @param [options.startIndex=1] - The starting index for the time series columns (default is 1). + * @param [options.prefix="TS"] - The prefix to use for the column titles (default is "TS"). + * @param [options.width=50] - The width of each column (default is 50). + * @param [options.editable=true] - Whether the columns should be editable (default is true). + * @param [options.style="normal"] - The style of the columns (default is "normal"). + * @returns An array of EnhancedGridColumn objects representing time series data columns. + * + * @example Usage within a column definition array + * const columns = [ + * { id: "rowHeaders", title: "", type: ColumnTypes.Text, ... }, + * { id: "date", title: "Date", type: ColumnTypes.DateTime, ... }, + * ...generateTimeSeriesColumns({ count: 60 }), + * { id: "min", title: "Min", type: ColumnTypes.Aggregate, ... }, + * { id: "max", title: "Max", type: ColumnTypes.Aggregate, ... }, + * { id: "avg", title: "Avg", type: ColumnTypes.Aggregate, ... } + * ]; + */ +export function generateTimeSeriesColumns({ + count, + startIndex = 1, + prefix = "TS", + width = 50, + editable = true, + style = "normal", +}: { + count: number; + startIndex?: number; + prefix?: string; + width?: number; + editable?: boolean; + style?: "normal" | "highlight"; +}): EnhancedGridColumn[] { + return Array.from({ length: count }, (_, index) => ({ + id: `data${startIndex + index}`, + title: `${prefix} ${startIndex + index}`, + type: ColumnTypes.Number, + style: style, + width: width, + editable: editable, + })); +} diff --git a/webapp/src/services/api/matrix.ts b/webapp/src/services/api/matrix.ts index 1eff05f7c9..54e028b2ef 100644 --- a/webapp/src/services/api/matrix.ts +++ b/webapp/src/services/api/matrix.ts @@ -10,6 +10,7 @@ import { } from "../../common/types"; import { FileDownloadTask } from "./downloads"; import { getConfig } from "../config"; +import { MatrixUpdateDTO } from "../../components/common/MatrixGrid/types"; export const getMatrixList = async ( name = "", @@ -91,16 +92,37 @@ export const deleteDataSet = async (id: string): Promise => { return res.data; }; +/** + * @deprecated Use `updateMatrix` instead. + * + * @param sid - The study ID. + * @param path - The path of the matrix. + * @param matrixEdit - The matrix edit data. + */ export const editMatrix = async ( sid: string, path: string, matrixEdit: MatrixEditDTO[], ): Promise => { - const res = await client.put( - `/v1/studies/${sid}/matrix?path=${encodeURIComponent(path)}`, + const sanitizedPath = path.startsWith("/") ? path.substring(1) : path; + + await client.put( + `/v1/studies/${sid}/matrix?path=${encodeURIComponent(sanitizedPath)}`, matrixEdit, ); - return res.data; +}; + +export const updateMatrix = async ( + studyId: string, + path: string, + updates: MatrixUpdateDTO[], +): Promise => { + const sanitizedPath = path.startsWith("/") ? path.substring(1) : path; + + await client.put( + `/v1/studies/${studyId}/matrix?path=${encodeURIComponent(sanitizedPath)}`, + updates, + ); }; export const getStudyMatrixIndex = async ( diff --git a/webapp/src/tests/mocks/mockGetBoundingClientRect.ts b/webapp/src/tests/mocks/mockGetBoundingClientRect.ts new file mode 100644 index 0000000000..9297a4b1fe --- /dev/null +++ b/webapp/src/tests/mocks/mockGetBoundingClientRect.ts @@ -0,0 +1,76 @@ +/** + * Mocks the `getBoundingClientRect` method of the Element prototype. + * + * This utility function overrides the default `getBoundingClientRect` method + * to return predetermined values. This is particularly useful in test environments + * where the dimensions and positioning of elements cannot be accurately measured + * as they would be in a fully rendered browser environment. By mocking these values, + * tests can assert layout and dimension-related properties in a controlled and + * predictable manner. + * + * Usage: + * This mock should be set up in the setup phase of your tests, typically in a + * `beforeEach` block, to ensure that every test runs with the same initial conditions. + * Remember to restore or reset the original function after your tests to avoid + * side effects, especially if other tests depend on the original behavior. + * + * @example + * describe('Your Test Suite', () => { + * beforeEach(() => { + * mockGetBoundingClientRect(); + * }); + * + * afterEach(() => { + * vi.restoreAllMocks(); + * }); + * + * test('your test', () => { + * // your test code here + * }); + * }); + * + * The mock is implemented by replacing `Element.prototype.getBoundingClientRect` + * with a custom function that returns fixed dimensions: + * - `width`: Calculated from the computed style of the element. + * - `height`: Calculated from the computed style of the element. + * - `top`: Always 0, simulating the element's position relative to the viewport. + * - `left`: Always 0, simulating the element's position relative to the viewport. + * - `bottom`: Calculated as the height, simulating the element's lower boundary relative to the viewport. + * - `right`: Calculated as the width, simulating the element's right boundary relative to the viewport. + * - `x`: Always 0, representing the x-coordinate of the element's bounding box. + * - `y`: Always 0, representing the y-coordinate of the element's bounding box. + * - `toJSON`: A function that returns an object representation of the bounding box. + * + * Note that the computed dimensions are based on the element's computed style at the time + * of the function call, so tests should ensure that relevant styles are appropriately set + * or mocked to reflect expected values. + * @see https://developer.mozilla.org/fr/docs/Web/API/Element/getBoundingClientRect + */ +export const mockGetBoundingClientRect = () => { + Element.prototype.getBoundingClientRect = vi.fn(function (this: Element) { + const { width, height } = window.getComputedStyle(this); + const rectWidth = parseInt(width, 10); + const rectHeight = parseInt(height, 10); + + return { + width: rectWidth, + height: rectHeight, + top: 0, + left: 0, + bottom: rectHeight, + right: rectWidth, + x: 0, + y: 0, + toJSON: () => ({ + width: rectWidth, + height: rectHeight, + top: 0, + left: 0, + bottom: rectHeight, + right: rectWidth, + x: 0, + y: 0, + }), + }; + }); +}; diff --git a/webapp/src/tests/mocks/mockHTMLCanvasElement.ts b/webapp/src/tests/mocks/mockHTMLCanvasElement.ts new file mode 100644 index 0000000000..a31b128d40 --- /dev/null +++ b/webapp/src/tests/mocks/mockHTMLCanvasElement.ts @@ -0,0 +1,56 @@ +/** + * Creates a mock for the HTML Canvas API in a testing environment. + * + * This function addresses the problem of testing components that rely on the + * Canvas API in a Node.js environment, where the DOM and Canvas are not natively + * available. Specifically, it solves issues related to testing components that + * use libraries like @glideapps/glide-data-grid, which depend on canvas functionality. + * + * The mock provides stub implementations for commonly used CanvasRenderingContext2D + * methods, allowing tests to run without throwing "not implemented" errors that + * would typically occur when canvas methods are called in a non-browser environment. + * + * @returns An object containing the mocked context and getContext function. + */ +export const mockHTMLCanvasElement = () => { + /** + * A partial mock of CanvasRenderingContext2D. + * Only the most commonly used methods are mocked to keep the implementation lean. + * Additional methods can be added here as needed. + */ + const contextMock: Partial = { + measureText: vi.fn().mockReturnValue({ + width: 0, + actualBoundingBoxAscent: 0, + actualBoundingBoxDescent: 0, + actualBoundingBoxLeft: 0, + actualBoundingBoxRight: 0, + fontBoundingBoxAscent: 0, + fontBoundingBoxDescent: 0, + }), + fillRect: vi.fn(), + clearRect: vi.fn(), + getImageData: vi + .fn() + .mockReturnValue({ data: new Uint8ClampedArray(), width: 0, height: 0 }), + save: vi.fn(), + fillText: vi.fn(), + restore: vi.fn(), + beginPath: vi.fn(), + moveTo: vi.fn(), + lineTo: vi.fn(), + closePath: vi.fn(), + translate: vi.fn(), + scale: vi.fn(), + rotate: vi.fn(), + arc: vi.fn(), + rect: vi.fn(), + }; + + const getContextMock = vi.fn().mockReturnValue(contextMock); + + // Override the getContext method on the HTMLCanvasElement prototype + window.HTMLCanvasElement.prototype.getContext = getContextMock; + + return { contextMock, getContextMock }; +}; diff --git a/webapp/src/tests/mocks/mockResizeObserver.ts b/webapp/src/tests/mocks/mockResizeObserver.ts new file mode 100644 index 0000000000..fc4c132eba --- /dev/null +++ b/webapp/src/tests/mocks/mockResizeObserver.ts @@ -0,0 +1,21 @@ +/** + * This is a mock implementation of the global `ResizeObserver`. + * ResizeObserver is a web API used to monitor changes in an element's size. + * As Vitest runs in a Node environment where certain browser-specific APIs like ResizeObserver are not available, + * we need to mock these APIs to prevent errors during testing and ensure that components relying on them can be tested. + * + * @see https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver/ResizeObserver + */ +global.ResizeObserver = vi.fn().mockImplementation(() => ({ + // The `observe` method is responsible for starting the observation of size changes on the specified element. + // We mock this method to simply track calls (since actual DOM measurements aren't possible in Jest or Vitest environments). + observe: vi.fn(), + + // The `unobserve` method stops the observation of an element. It's essential for cleanup in real usage to avoid memory leaks, + // but here it's just a mock to ensure we can verify calls to it during tests. + unobserve: vi.fn(), + + // The `disconnect` method stops all observations by this instance of ResizeObserver. + // This is used to clean up observers when a component unmounts. The mock helps to simulate and test these cleanup behaviors. + disconnect: vi.fn(), +})); diff --git a/webapp/src/tests/setup.ts b/webapp/src/tests/setup.ts index d1e9ef6bae..8f6da9b8c2 100644 --- a/webapp/src/tests/setup.ts +++ b/webapp/src/tests/setup.ts @@ -1,7 +1,8 @@ -import * as matchers from "@testing-library/jest-dom/matchers"; -import "@testing-library/jest-dom"; +import "@testing-library/jest-dom/vitest"; +import { expect, afterEach } from "vitest"; import { cleanup } from "@testing-library/react"; -import { expect } from "vitest"; +import * as matchers from "@testing-library/jest-dom/matchers"; +import "./mocks/mockResizeObserver"; // Extend Vitest's expect function with jest-dom matchers for enhanced DOM assertions. expect.extend(matchers); diff --git a/webapp/vite.config.ts b/webapp/vite.config.ts index 7cce8d327b..1dfeadfd8a 100644 --- a/webapp/vite.config.ts +++ b/webapp/vite.config.ts @@ -30,7 +30,7 @@ export default defineConfig(({ mode }) => { }, }, test: { - globals: true, // Use the APIs globally + globals: true, // Use the APIs globally, environment: "jsdom", css: true, setupFiles: "./src/tests/setup.ts", From 1855bf4f972dc45a49303f4acb8a0fc7d4b81173 Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Tue, 17 Sep 2024 16:45:46 +0200 Subject: [PATCH 003/182] feat(pydantic): use pydantic serialization (#2139) This will allow to benefit from improved serialization performances of pydantic v2, even for non-pydantic classes. fix [ANT-2052] --- ...populate_tag_and_study_tag_tables_with_.py | 6 ++-- antarest/core/cache/business/redis_cache.py | 4 +-- antarest/core/configdata/repository.py | 6 ++-- antarest/core/serialization/__init__.py | 34 +++++++++++++++++++ antarest/eventbus/web.py | 6 ++-- antarest/launcher/model.py | 6 ++-- antarest/login/auth.py | 6 ++-- antarest/login/main.py | 5 ++- antarest/login/web.py | 4 +-- antarest/main.py | 2 +- antarest/matrixstore/service.py | 4 +-- antarest/{utils.py => service_creator.py} | 33 +++++++++--------- antarest/singleton_services.py | 4 +-- antarest/study/service.py | 10 ++---- .../study/storage/abstract_storage_service.py | 5 ++- antarest/study/storage/patch_service.py | 5 ++- .../rawstudy/model/filesystem/config/files.py | 3 +- .../model/filesystem/config/ini_properties.py | 5 +-- .../model/filesystem/ini_file_node.py | 8 ++--- .../model/filesystem/json_file_node.py | 7 ++-- .../study/storage/study_download_utils.py | 13 ++----- .../storage/variantstudy/command_factory.py | 2 +- .../storage/variantstudy/model/dbmodel.py | 4 +-- .../variantstudy/variant_study_service.py | 11 +++--- antarest/study/web/raw_studies_blueprint.py | 12 ++----- .../study/web/xpansion_studies_blueprint.py | 10 ++---- antarest/tools/lib.py | 13 +++---- antarest/worker/archive_worker_service.py | 2 +- tests/cache/test_redis_cache.py | 4 +-- tests/core/test_tasks.py | 2 +- tests/login/test_model.py | 2 +- 31 files changed, 123 insertions(+), 115 deletions(-) create mode 100644 antarest/core/serialization/__init__.py rename antarest/{utils.py => service_creator.py} (89%) diff --git a/alembic/versions/dae93f1d9110_populate_tag_and_study_tag_tables_with_.py b/alembic/versions/dae93f1d9110_populate_tag_and_study_tag_tables_with_.py index 6fbb060115..7be22d1e24 100644 --- a/alembic/versions/dae93f1d9110_populate_tag_and_study_tag_tables_with_.py +++ b/alembic/versions/dae93f1d9110_populate_tag_and_study_tag_tables_with_.py @@ -7,7 +7,6 @@ """ import collections import itertools -import json import secrets import typing as t @@ -16,6 +15,7 @@ from sqlalchemy.engine import Connection # type: ignore from antarest.study.css4_colors import COLOR_NAMES +from antarest.core.serialization import from_json, to_json # revision identifiers, used by Alembic. revision = "dae93f1d9110" @@ -34,7 +34,7 @@ def _avoid_duplicates(tags: t.Iterable[str]) -> t.Sequence[str]: def _load_patch_obj(patch: t.Optional[str]) -> t.MutableMapping[str, t.Any]: """Load the patch object from the `patch` field in the `study_additional_data` table.""" - obj: t.MutableMapping[str, t.Any] = json.loads(patch or "{}") + obj: t.MutableMapping[str, t.Any] = from_json(patch or "{}") obj["study"] = obj.get("study") or {} obj["study"]["tags"] = _avoid_duplicates(obj["study"].get("tags") or []) return obj @@ -113,7 +113,7 @@ def downgrade() -> None: objects_by_ids[study_id] = obj # Updating objects in the `study_additional_data` table - bulk_patches = [{"study_id": id_, "patch": json.dumps(obj)} for id_, obj in objects_by_ids.items()] + bulk_patches = [{"study_id": id_, "patch": to_json(obj)} for id_, obj in objects_by_ids.items()] if bulk_patches: sql = sa.text("UPDATE study_additional_data SET patch = :patch WHERE study_id = :study_id") connexion.execute(sql, *bulk_patches) diff --git a/antarest/core/cache/business/redis_cache.py b/antarest/core/cache/business/redis_cache.py index 0234fd1666..7793f280c7 100644 --- a/antarest/core/cache/business/redis_cache.py +++ b/antarest/core/cache/business/redis_cache.py @@ -10,7 +10,6 @@ # # This file is part of the Antares project. -import json import logging from typing import List, Optional @@ -19,6 +18,7 @@ from antarest.core.interfaces.cache import ICache from antarest.core.model import JSON +from antarest.core.serialization import from_json logger = logging.getLogger(__name__) @@ -49,7 +49,7 @@ def get(self, id: str, refresh_timeout: Optional[int] = None) -> Optional[JSON]: logger.info(f"Trying to retrieve cache key {id}") if result is not None: logger.info(f"Cache key {id} found") - json_result = json.loads(result) + json_result = from_json(result) redis_element = RedisCacheElement(duration=json_result["duration"], data=json_result["data"]) self.redis.expire( redis_key, diff --git a/antarest/core/configdata/repository.py b/antarest/core/configdata/repository.py index 8439e028a6..3b7aea6ada 100644 --- a/antarest/core/configdata/repository.py +++ b/antarest/core/configdata/repository.py @@ -10,13 +10,13 @@ # # This file is part of the Antares project. -import json from operator import and_ from typing import Optional from antarest.core.configdata.model import ConfigData from antarest.core.jwt import DEFAULT_ADMIN_USER from antarest.core.model import JSON +from antarest.core.serialization import from_json, to_json_string from antarest.core.utils.fastapi_sqlalchemy import db @@ -43,14 +43,14 @@ def get(self, key: str, owner: Optional[int] = None) -> Optional[ConfigData]: def get_json(self, key: str, owner: Optional[int] = None) -> Optional[JSON]: configdata = self.get(key, owner) if configdata: - data: JSON = json.loads(configdata.value) + data: JSON = from_json(configdata.value) return data return None def put_json(self, key: str, data: JSON, owner: Optional[int] = None) -> None: configdata = ConfigData( key=key, - value=json.dumps(data), + value=to_json_string(data), owner=owner or DEFAULT_ADMIN_USER.id, ) configdata = db.session.merge(configdata) diff --git a/antarest/core/serialization/__init__.py b/antarest/core/serialization/__init__.py new file mode 100644 index 0000000000..6368c02f1e --- /dev/null +++ b/antarest/core/serialization/__init__.py @@ -0,0 +1,34 @@ +# Copyright (c) 2024, RTE (https://www.rte-france.com) +# +# See AUTHORS.txt +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +# This file is part of the Antares project. +import typing as t + +import pydantic + +ADAPTER: pydantic.TypeAdapter[t.Any] = pydantic.TypeAdapter( + type=t.Any, config=pydantic.config.ConfigDict(ser_json_inf_nan="constants") +) # ser_json_inf_nan="constants" means infinity and NaN values will be serialized as `Infinity` and `NaN`. + + +# These utility functions allow to serialize with pydantic instead of using the built-in python "json" library. +# Since pydantic v2 is written in RUST it's way faster. + + +def from_json(data: t.Union[str, bytes, bytearray]) -> t.Dict[str, t.Any]: + return ADAPTER.validate_json(data) # type: ignore + + +def to_json(data: t.Any, indent: t.Optional[int] = None) -> bytes: + return ADAPTER.dump_json(data, indent=indent) + + +def to_json_string(data: t.Any, indent: t.Optional[int] = None) -> str: + return to_json(data, indent=indent).decode("utf-8") diff --git a/antarest/eventbus/web.py b/antarest/eventbus/web.py index ba363db6c4..a04a4571bb 100644 --- a/antarest/eventbus/web.py +++ b/antarest/eventbus/web.py @@ -11,13 +11,12 @@ # This file is part of the Antares project. import dataclasses -import json import logging from enum import Enum from http import HTTPStatus from typing import List, Optional -from fastapi import APIRouter, Depends, FastAPI, HTTPException, Query +from fastapi import Depends, HTTPException, Query from pydantic import BaseModel from starlette.websockets import WebSocket, WebSocketDisconnect @@ -27,6 +26,7 @@ from antarest.core.jwt import DEFAULT_ADMIN_USER, JWTUser from antarest.core.model import PermissionInfo, StudyPermissionType from antarest.core.permissions import check_permission +from antarest.core.serialization import to_json_string from antarest.fastapi_jwt_auth import AuthJWT from antarest.login.auth import Auth @@ -99,7 +99,7 @@ async def send_event_to_ws(event: Event) -> None: event_data = event.model_dump() del event_data["permissions"] del event_data["channel"] - await manager.broadcast(json.dumps(event_data), event.permissions, event.channel) + await manager.broadcast(to_json_string(event_data), event.permissions, event.channel) @app_ctxt.api_root.websocket("/ws") async def connect( diff --git a/antarest/launcher/model.py b/antarest/launcher/model.py index 9a330454dc..d80400a4ba 100644 --- a/antarest/launcher/model.py +++ b/antarest/launcher/model.py @@ -11,15 +11,15 @@ # This file is part of the Antares project. import enum -import json import typing as t from datetime import datetime -from pydantic import BaseModel, ConfigDict, Field +from pydantic import BaseModel, Field from sqlalchemy import Column, DateTime, Enum, ForeignKey, Integer, Sequence, String # type: ignore from sqlalchemy.orm import relationship # type: ignore from antarest.core.persistence import Base +from antarest.core.serialization import from_json from antarest.login.model import Identity, UserInfo from antarest.study.business.all_optional_meta import camel_case_model @@ -54,7 +54,7 @@ def from_launcher_params(cls, params: t.Optional[str]) -> "LauncherParametersDTO """ if params is None: return cls() - return cls.model_validate(json.loads(params)) + return cls.model_validate(from_json(params)) class LogType(str, enum.Enum): diff --git a/antarest/login/auth.py b/antarest/login/auth.py index ad4884111a..f86ca5903b 100644 --- a/antarest/login/auth.py +++ b/antarest/login/auth.py @@ -10,7 +10,6 @@ # # This file is part of the Antares project. -import json import logging from datetime import timedelta from typing import Any, Callable, Coroutine, Dict, Optional, Tuple, Union @@ -22,6 +21,7 @@ from antarest.core.config import Config from antarest.core.jwt import DEFAULT_ADMIN_USER, JWTUser +from antarest.core.serialization import from_json from antarest.fastapi_jwt_auth import AuthJWT logger = logging.getLogger(__name__) @@ -66,14 +66,14 @@ def get_current_user(self, auth_jwt: AuthJWT = Depends()) -> JWTUser: auth_jwt.jwt_required() - user = JWTUser.model_validate(json.loads(auth_jwt.get_jwt_subject())) + user = JWTUser.model_validate(from_json(auth_jwt.get_jwt_subject())) return user @staticmethod def get_user_from_token(token: str, jwt_manager: AuthJWT) -> Optional[JWTUser]: try: token_data = jwt_manager._verified_token(token) - return JWTUser.model_validate(json.loads(token_data["sub"])) + return JWTUser.model_validate(from_json(token_data["sub"])) except Exception as e: logger.debug("Failed to retrieve user from token", exc_info=e) return None diff --git a/antarest/login/main.py b/antarest/login/main.py index 09fac37ee5..ac6b2956c9 100644 --- a/antarest/login/main.py +++ b/antarest/login/main.py @@ -10,17 +10,16 @@ # # This file is part of the Antares project. -import json from http import HTTPStatus from typing import Any, Optional -from fastapi import APIRouter, FastAPI from starlette.requests import Request from starlette.responses import JSONResponse from antarest.core.application import AppBuildContext from antarest.core.config import Config from antarest.core.interfaces.eventbus import DummyEventBusService, IEventBus +from antarest.core.serialization import from_json from antarest.core.utils.fastapi_sqlalchemy import db from antarest.fastapi_jwt_auth import AuthJWT from antarest.fastapi_jwt_auth.exceptions import AuthJWTException @@ -78,7 +77,7 @@ def authjwt_exception_handler(request: Request, exc: AuthJWTException) -> Any: @AuthJWT.token_in_denylist_loader # type: ignore def check_if_token_is_revoked(decrypted_token: Any) -> bool: - subject = json.loads(decrypted_token["sub"]) + subject = from_json(decrypted_token["sub"]) user_id = subject["id"] token_type = subject["type"] with db(): diff --git a/antarest/login/web.py b/antarest/login/web.py index 6e2b20a19c..5bc85c62a1 100644 --- a/antarest/login/web.py +++ b/antarest/login/web.py @@ -10,7 +10,6 @@ # # This file is part of the Antares project. -import json import logging from datetime import timedelta from typing import Any, List, Optional, Union @@ -23,6 +22,7 @@ from antarest.core.jwt import JWTGroup, JWTUser from antarest.core.requests import RequestParameters, UserHasNotPermissionError from antarest.core.roles import RoleType +from antarest.core.serialization import from_json from antarest.core.utils.web import APITag from antarest.fastapi_jwt_auth import AuthJWT from antarest.login.auth import Auth @@ -103,7 +103,7 @@ def login( ) def refresh(jwt_manager: AuthJWT = Depends()) -> Any: jwt_manager.jwt_refresh_token_required() - identity = json.loads(jwt_manager.get_jwt_subject()) + identity = from_json(jwt_manager.get_jwt_subject()) logger.debug(f"Refreshing access token for {identity['id']}") user = service.get_jwt(identity["id"]) if user: diff --git a/antarest/main.py b/antarest/main.py index b1fd1480b6..e521124447 100644 --- a/antarest/main.py +++ b/antarest/main.py @@ -47,11 +47,11 @@ from antarest.login.auth import Auth, JwtSettings from antarest.login.model import init_admin_user from antarest.matrixstore.matrix_garbage_collector import MatrixGarbageCollector +from antarest.service_creator import SESSION_ARGS, Module, create_services, init_db_engine from antarest.singleton_services import start_all_services from antarest.study.storage.auto_archive_service import AutoArchiveService from antarest.study.storage.rawstudy.watcher import Watcher from antarest.tools.admin_lib import clean_locks -from antarest.utils import SESSION_ARGS, Module, create_services, init_db_engine logger = logging.getLogger(__name__) diff --git a/antarest/matrixstore/service.py b/antarest/matrixstore/service.py index 7f9b83cca2..7e9450fdec 100644 --- a/antarest/matrixstore/service.py +++ b/antarest/matrixstore/service.py @@ -12,7 +12,6 @@ import contextlib import io -import json import logging import tempfile import typing as t @@ -31,6 +30,7 @@ from antarest.core.filetransfer.service import FileTransferManager from antarest.core.jwt import JWTUser from antarest.core.requests import RequestParameters, UserHasNotPermissionError +from antarest.core.serialization import from_json from antarest.core.tasks.model import TaskResult, TaskType from antarest.core.tasks.service import ITaskService, TaskUpdateNotifier from antarest.core.utils.fastapi_sqlalchemy import db @@ -263,7 +263,7 @@ def _file_importation(self, file: bytes, *, is_json: bool = False) -> str: A SHA256 hash that identifies the imported matrix. """ if is_json: - obj = json.loads(file) + obj = from_json(file) content = MatrixContent(**obj) return self.create(content.data) # noinspection PyTypeChecker diff --git a/antarest/utils.py b/antarest/service_creator.py similarity index 89% rename from antarest/utils.py rename to antarest/service_creator.py index 1f7f4b7594..5859806a61 100644 --- a/antarest/utils.py +++ b/antarest/service_creator.py @@ -11,12 +11,11 @@ # This file is part of the Antares project. import logging +import typing as t from enum import Enum from pathlib import Path -from typing import Any, Dict, Mapping, Optional, Tuple import redis -from fastapi import APIRouter, FastAPI from ratelimit import RateLimitMiddleware # type: ignore from ratelimit.backends.redis import RedisBackend # type: ignore from ratelimit.backends.simple import MemoryBackend # type: ignore @@ -55,7 +54,7 @@ logger = logging.getLogger(__name__) -SESSION_ARGS: Mapping[str, bool] = { +SESSION_ARGS: t.Mapping[str, bool] = { "autocommit": False, "expire_on_commit": False, "autoflush": False, @@ -84,7 +83,7 @@ def init_db_engine( ) -> Engine: if auto_upgrade_db: upgrade_db(config_file) - connect_args: Dict[str, Any] = {} + connect_args: t.Dict[str, t.Any] = {} if config.db.db_url.startswith("sqlite"): connect_args["check_same_thread"] = False else: @@ -110,7 +109,7 @@ def init_db_engine( return engine -def create_event_bus(app_ctxt: Optional[AppBuildContext], config: Config) -> Tuple[IEventBus, Optional[redis.Redis]]: # type: ignore +def create_event_bus(app_ctxt: t.Optional[AppBuildContext], config: Config) -> t.Tuple[IEventBus, t.Optional[redis.Redis]]: # type: ignore redis_client = new_redis_instance(config.redis) if config.redis is not None else None return ( build_eventbus(app_ctxt, config, True, redis_client), @@ -119,8 +118,8 @@ def create_event_bus(app_ctxt: Optional[AppBuildContext], config: Config) -> Tup def create_core_services( - app_ctxt: Optional[AppBuildContext], config: Config -) -> Tuple[ICache, IEventBus, ITaskService, FileTransferManager, LoginService, MatrixService, StudyService,]: + app_ctxt: t.Optional[AppBuildContext], config: Config +) -> t.Tuple[ICache, IEventBus, ITaskService, FileTransferManager, LoginService, MatrixService, StudyService,]: event_bus, redis_client = create_event_bus(app_ctxt, config) cache = build_cache(config=config, redis_client=redis_client) filetransfer_service = build_filetransfer_service(app_ctxt, event_bus, config) @@ -157,8 +156,8 @@ def create_core_services( def create_watcher( config: Config, - app_ctxt: Optional[AppBuildContext], - study_service: Optional[StudyService] = None, + app_ctxt: t.Optional[AppBuildContext], + study_service: t.Optional[StudyService] = None, ) -> Watcher: if study_service: watcher = Watcher( @@ -182,9 +181,9 @@ def create_watcher( def create_matrix_gc( config: Config, - app_ctxt: Optional[AppBuildContext], - study_service: Optional[StudyService] = None, - matrix_service: Optional[MatrixService] = None, + app_ctxt: t.Optional[AppBuildContext], + study_service: t.Optional[StudyService] = None, + matrix_service: t.Optional[MatrixService] = None, ) -> MatrixGarbageCollector: if study_service and matrix_service: return MatrixGarbageCollector( @@ -205,7 +204,7 @@ def create_archive_worker( config: Config, workspace: str, local_root: Path = Path("/"), - event_bus: Optional[IEventBus] = None, + event_bus: t.Optional[IEventBus] = None, ) -> AbstractWorker: if not event_bus: event_bus, _ = create_event_bus(None, config) @@ -215,15 +214,17 @@ def create_archive_worker( def create_simulator_worker( config: Config, matrix_service: MatrixService, - event_bus: Optional[IEventBus] = None, + event_bus: t.Optional[IEventBus] = None, ) -> AbstractWorker: if not event_bus: event_bus, _ = create_event_bus(None, config) return SimulatorWorker(event_bus, matrix_service, config) -def create_services(config: Config, app_ctxt: Optional[AppBuildContext], create_all: bool = False) -> Dict[str, Any]: - services: Dict[str, Any] = {} +def create_services( + config: Config, app_ctxt: t.Optional[AppBuildContext], create_all: bool = False +) -> t.Dict[str, t.Any]: + services: t.Dict[str, t.Any] = {} ( cache, diff --git a/antarest/singleton_services.py b/antarest/singleton_services.py index 13395a439a..3b2373cc0c 100644 --- a/antarest/singleton_services.py +++ b/antarest/singleton_services.py @@ -19,8 +19,7 @@ from antarest.core.logging.utils import configure_logger from antarest.core.utils.fastapi_sqlalchemy import DBSessionMiddleware from antarest.core.utils.utils import get_local_path -from antarest.study.storage.auto_archive_service import AutoArchiveService -from antarest.utils import ( +from antarest.service_creator import ( SESSION_ARGS, Module, create_archive_worker, @@ -30,6 +29,7 @@ create_watcher, init_db_engine, ) +from antarest.study.storage.auto_archive_service import AutoArchiveService def _init(config_file: Path, services_list: List[Module]) -> Dict[Module, IService]: diff --git a/antarest/study/service.py b/antarest/study/service.py index 125c4e1531..c39576605f 100644 --- a/antarest/study/service.py +++ b/antarest/study/service.py @@ -15,7 +15,6 @@ import contextlib import http import io -import json import logging import os import time @@ -52,6 +51,7 @@ from antarest.core.jwt import DEFAULT_ADMIN_USER, JWTGroup, JWTUser from antarest.core.model import JSON, SUB_JSON, PermissionInfo, PublicMode, StudyPermissionType from antarest.core.requests import RequestParameters, UserHasNotPermissionError +from antarest.core.serialization import to_json from antarest.core.tasks.model import TaskListFilter, TaskResult, TaskStatus, TaskType from antarest.core.tasks.service import ITaskService, TaskUpdateNotifier, noop_notifier from antarest.core.utils.fastapi_sqlalchemy import db @@ -1329,13 +1329,7 @@ def export_task(_notifier: TaskUpdateNotifier) -> TaskResult: return FileResponse(tmp_export_file, headers=headers, media_type=filetype) else: - json_response = json.dumps( - matrix.model_dump(), - ensure_ascii=False, - allow_nan=True, - indent=None, - separators=(",", ":"), - ).encode("utf-8") + json_response = to_json(matrix.model_dump()) return Response(content=json_response, media_type="application/json") def get_study_sim_result(self, study_id: str, params: RequestParameters) -> t.List[StudySimResultDTO]: diff --git a/antarest/study/storage/abstract_storage_service.py b/antarest/study/storage/abstract_storage_service.py index 5f2c033ca3..967ece3ca6 100644 --- a/antarest/study/storage/abstract_storage_service.py +++ b/antarest/study/storage/abstract_storage_service.py @@ -10,7 +10,6 @@ # # This file is part of the Antares project. -import json import logging import shutil import tempfile @@ -23,6 +22,7 @@ from antarest.core.exceptions import BadOutputError, StudyOutputNotFoundError from antarest.core.interfaces.cache import CacheConstants, ICache from antarest.core.model import JSON, PublicMode +from antarest.core.serialization import from_json from antarest.core.utils.utils import StopWatch, extract_zip, unzip, zip_dir from antarest.login.model import GroupDTO from antarest.study.common.studystorage import IStudyStorageService, T @@ -87,8 +87,7 @@ def get_study_information( additional_data = study.additional_data or StudyAdditionalData() try: - patch_obj = json.loads(additional_data.patch or "{}") - patch = Patch.model_validate(patch_obj) + patch = Patch.model_validate(from_json(additional_data.patch or "{}")) except ValueError as e: # The conversion to JSON and the parsing can fail if the patch is not valid logger.warning(f"Failed to parse patch for study {study.id}", exc_info=e) diff --git a/antarest/study/storage/patch_service.py b/antarest/study/storage/patch_service.py index 0f3eb68c05..1c44e1ddc9 100644 --- a/antarest/study/storage/patch_service.py +++ b/antarest/study/storage/patch_service.py @@ -10,10 +10,10 @@ # # This file is part of the Antares project. -import json import typing as t from pathlib import Path +from antarest.core.serialization import from_json from antarest.study.model import Patch, PatchOutputs, RawStudy, StudyAdditionalData from antarest.study.repository import StudyMetadataRepository from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy @@ -34,8 +34,7 @@ def get(self, study: t.Union[RawStudy, VariantStudy], get_from_file: bool = Fals if not get_from_file and study.additional_data is not None: # the `study.additional_data.patch` field is optional if study.additional_data.patch: - patch_obj = json.loads(study.additional_data.patch or "{}") - return Patch.model_validate(patch_obj) + return Patch.model_validate(from_json(study.additional_data.patch)) patch = Patch() patch_path = Path(study.path) / PATCH_JSON diff --git a/antarest/study/storage/rawstudy/model/filesystem/config/files.py b/antarest/study/storage/rawstudy/model/filesystem/config/files.py index 15856dbf60..6cfed5b9bc 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/config/files.py +++ b/antarest/study/storage/rawstudy/model/filesystem/config/files.py @@ -21,6 +21,7 @@ from pathlib import Path from antarest.core.model import JSON +from antarest.core.serialization import from_json from antarest.study.storage.rawstudy.ini_reader import IniReader from antarest.study.storage.rawstudy.model.filesystem.config.binding_constraint import ( DEFAULT_GROUP, @@ -330,7 +331,7 @@ def _parse_xpansion_version(path: Path) -> str: xpansion_json = path / "expansion" / "out.json" try: content = xpansion_json.read_text(encoding="utf-8") - obj = json.loads(content) + obj = from_json(content) return str(obj["antares_xpansion"]["version"]) except FileNotFoundError: return "" diff --git a/antarest/study/storage/rawstudy/model/filesystem/config/ini_properties.py b/antarest/study/storage/rawstudy/model/filesystem/config/ini_properties.py index 5464975bbf..e731ea203b 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/config/ini_properties.py +++ b/antarest/study/storage/rawstudy/model/filesystem/config/ini_properties.py @@ -10,11 +10,12 @@ # # This file is part of the Antares project. -import json import typing as t from pydantic import BaseModel +from antarest.core.serialization import from_json, to_json + class IniProperties( BaseModel, @@ -49,7 +50,7 @@ def to_config(self) -> t.Dict[str, t.Any]: if isinstance(value, IniProperties): config[alias] = value.to_config() else: - config[alias] = json.loads(json.dumps(value)) + config[alias] = from_json(to_json(value)) return config @classmethod diff --git a/antarest/study/storage/rawstudy/model/filesystem/ini_file_node.py b/antarest/study/storage/rawstudy/model/filesystem/ini_file_node.py index e5443eb37f..bf9eecc574 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/ini_file_node.py +++ b/antarest/study/storage/rawstudy/model/filesystem/ini_file_node.py @@ -13,18 +13,18 @@ import contextlib import functools import io -import json import logging import os import tempfile import typing as t import zipfile -from json import JSONDecodeError from pathlib import Path +import pydantic_core from filelock import FileLock from antarest.core.model import JSON, SUB_JSON +from antarest.core.serialization import from_json from antarest.study.storage.rawstudy.ini_reader import IniReader, IReader from antarest.study.storage.rawstudy.ini_writer import IniWriter from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfig @@ -190,8 +190,8 @@ def save(self, data: SUB_JSON, url: t.Optional[t.List[str]] = None) -> None: info = self.reader.read(self.path) if self.path.exists() else {} obj = data if isinstance(data, str): - with contextlib.suppress(JSONDecodeError): - obj = json.loads(data) + with contextlib.suppress(pydantic_core.ValidationError): + obj = from_json(data) if len(url) == 2: if url[0] not in info: info[url[0]] = {} diff --git a/antarest/study/storage/rawstudy/model/filesystem/json_file_node.py b/antarest/study/storage/rawstudy/model/filesystem/json_file_node.py index ad95ee3187..54333e2c4b 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/json_file_node.py +++ b/antarest/study/storage/rawstudy/model/filesystem/json_file_node.py @@ -15,6 +15,7 @@ from pathlib import Path from antarest.core.model import JSON +from antarest.core.serialization import from_json, to_json from antarest.study.storage.rawstudy.ini_reader import IReader from antarest.study.storage.rawstudy.ini_writer import IniWriter from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfig @@ -47,7 +48,7 @@ def read(self, path: t.Any, **kwargs: t.Any) -> JSON: raise TypeError(repr(type(path))) try: - return t.cast(JSON, json.loads(content)) + return t.cast(JSON, from_json(content)) except json.JSONDecodeError as exc: err_msg = f"Failed to parse JSON file '{path}'" raise ValueError(err_msg) from exc @@ -59,8 +60,8 @@ class JsonWriter(IniWriter): """ def write(self, data: JSON, path: Path) -> None: - with open(path, "w") as fh: - json.dump(data, fh) + with open(path, "wb") as fh: + fh.write(to_json(data)) class JsonFileNode(IniFileNode): diff --git a/antarest/study/storage/study_download_utils.py b/antarest/study/storage/study_download_utils.py index 91b2b4f9af..9c5f6beed3 100644 --- a/antarest/study/storage/study_download_utils.py +++ b/antarest/study/storage/study_download_utils.py @@ -11,7 +11,6 @@ # This file is part of the Antares project. import csv -import json import logging import os import re @@ -26,6 +25,7 @@ from fastapi import HTTPException from antarest.core.exceptions import ChildNotFoundError +from antarest.core.serialization import to_json from antarest.study.model import ( ExportFormat, MatrixAggregationResult, @@ -343,15 +343,8 @@ def export( target_file: Path, ) -> None: if filetype == ExportFormat.JSON: - with open(target_file, "w") as fh: - json.dump( - matrix.model_dump(), - fh, - ensure_ascii=False, - allow_nan=True, - indent=None, - separators=(",", ":"), - ) + with open(target_file, "wb") as fh: + fh.write(to_json(matrix.model_dump())) else: StudyDownloader.write_inside_archive(target_file, filetype, matrix) diff --git a/antarest/study/storage/variantstudy/command_factory.py b/antarest/study/storage/variantstudy/command_factory.py index d178cfa79f..409cf81bb5 100644 --- a/antarest/study/storage/variantstudy/command_factory.py +++ b/antarest/study/storage/variantstudy/command_factory.py @@ -10,8 +10,8 @@ # # This file is part of the Antares project. -import typing as t import copy +import typing as t from antarest.core.model import JSON from antarest.matrixstore.service import ISimpleMatrixService diff --git a/antarest/study/storage/variantstudy/model/dbmodel.py b/antarest/study/storage/variantstudy/model/dbmodel.py index 061c586e03..421caf87d7 100644 --- a/antarest/study/storage/variantstudy/model/dbmodel.py +++ b/antarest/study/storage/variantstudy/model/dbmodel.py @@ -11,7 +11,6 @@ # This file is part of the Antares project. import datetime -import json import typing as t import uuid from pathlib import Path @@ -20,6 +19,7 @@ from sqlalchemy.orm import relationship # type: ignore from antarest.core.persistence import Base +from antarest.core.serialization import from_json from antarest.study.model import Study from antarest.study.storage.variantstudy.model.model import CommandDTO @@ -69,7 +69,7 @@ class CommandBlock(Base): # type: ignore def to_dto(self) -> CommandDTO: # Database may lack a version number, defaulting to 1 if so. version = self.version or 1 - return CommandDTO(id=self.id, action=self.command, args=json.loads(self.args), version=version) + return CommandDTO(id=self.id, action=self.command, args=from_json(self.args), version=version) def __str__(self) -> str: return ( diff --git a/antarest/study/storage/variantstudy/variant_study_service.py b/antarest/study/storage/variantstudy/variant_study_service.py index 34241f8552..4433a6ac07 100644 --- a/antarest/study/storage/variantstudy/variant_study_service.py +++ b/antarest/study/storage/variantstudy/variant_study_service.py @@ -11,7 +11,6 @@ # This file is part of the Antares project. import concurrent.futures -import json import logging import re import shutil @@ -43,6 +42,7 @@ from antarest.core.jwt import DEFAULT_ADMIN_USER from antarest.core.model import JSON, PermissionInfo, PublicMode, StudyPermissionType from antarest.core.requests import RequestParameters, UserHasNotPermissionError +from antarest.core.serialization import to_json_string from antarest.core.tasks.model import CustomTaskEventMessages, TaskDTO, TaskResult, TaskType from antarest.core.tasks.service import DEFAULT_AWAIT_MAX_TIMEOUT, ITaskService, TaskUpdateNotifier, noop_notifier from antarest.core.utils.utils import assert_this, suppress_exception @@ -188,7 +188,10 @@ def append_commands( # noinspection PyArgumentList new_commands = [ CommandBlock( - command=command.action, args=json.dumps(command.args), index=(first_index + i), version=command.version + command=command.action, + args=to_json_string(command.args), + index=(first_index + i), + version=command.version, ) for i, command in enumerate(validated_commands) ] @@ -223,7 +226,7 @@ def replace_commands( validated_commands = transform_command_to_dto(command_objs, commands) # noinspection PyArgumentList study.commands = [ - CommandBlock(command=command.action, args=json.dumps(command.args), index=i, version=command.version) + CommandBlock(command=command.action, args=to_json_string(command.args), index=i, version=command.version) for i, command in enumerate(validated_commands) ] self.invalidate_cache(study, invalidate_self_snapshot=True) @@ -314,7 +317,7 @@ def update_command( index = [command.id for command in study.commands].index(command_id) if index >= 0: study.commands[index].command = validated_commands[0].action - study.commands[index].args = json.dumps(validated_commands[0].args) + study.commands[index].args = to_json_string(validated_commands[0].args) self.invalidate_cache(study, invalidate_self_snapshot=True) def export_commands_matrices(self, study_id: str, params: RequestParameters) -> FileDownloadTaskDTO: diff --git a/antarest/study/web/raw_studies_blueprint.py b/antarest/study/web/raw_studies_blueprint.py index dc8554e55d..c76bce3e77 100644 --- a/antarest/study/web/raw_studies_blueprint.py +++ b/antarest/study/web/raw_studies_blueprint.py @@ -13,7 +13,6 @@ import collections import http import io -import json import logging import typing as t from pathlib import Path, PurePosixPath @@ -26,6 +25,7 @@ from antarest.core.jwt import JWTUser from antarest.core.model import SUB_JSON from antarest.core.requests import RequestParameters +from antarest.core.serialization import from_json, to_json from antarest.core.swagger import get_path_examples from antarest.core.utils.utils import sanitize_string, sanitize_uuid from antarest.core.utils.web import APITag @@ -148,7 +148,7 @@ def get_study( # Use `JSONResponse` to ensure to return a valid JSON response # that checks `NaN` and `Infinity` values. try: - output = json.loads(output) + output = from_json(output) return JSONResponse(content=output) except ValueError as exc: raise HTTPException( @@ -182,13 +182,7 @@ def get_study( # even though they are not standard JSON values because they are supported in JavaScript. # Additionally, we cannot use `orjson` because, despite its superior performance, it converts # `NaN` and other values to `null`, even when using a custom encoder. - json_response = json.dumps( - output, - ensure_ascii=False, - allow_nan=True, - indent=None, - separators=(",", ":"), - ).encode("utf-8") + json_response = to_json(output) return Response(content=json_response, media_type="application/json") @bp.get( diff --git a/antarest/study/web/xpansion_studies_blueprint.py b/antarest/study/web/xpansion_studies_blueprint.py index 93b60f01ff..775505baad 100644 --- a/antarest/study/web/xpansion_studies_blueprint.py +++ b/antarest/study/web/xpansion_studies_blueprint.py @@ -10,7 +10,6 @@ # # This file is part of the Antares project. -import json import logging import typing as t @@ -21,6 +20,7 @@ from antarest.core.jwt import JWTUser from antarest.core.model import JSON, StudyPermissionType from antarest.core.requests import RequestParameters +from antarest.core.serialization import to_json from antarest.core.utils.web import APITag from antarest.login.auth import Auth from antarest.study.business.xpansion_management import ( @@ -282,13 +282,7 @@ def get_resource_content( except (AttributeError, UnicodeDecodeError): pass - json_response = json.dumps( - output, - ensure_ascii=False, - allow_nan=True, - indent=None, - separators=(",", ":"), - ).encode("utf-8") + json_response = to_json(output) return Response(content=json_response, media_type="application/json") @bp.get( diff --git a/antarest/tools/lib.py b/antarest/tools/lib.py index 6bfd3df997..5f3aafc74a 100644 --- a/antarest/tools/lib.py +++ b/antarest/tools/lib.py @@ -24,6 +24,7 @@ from antarest.core.cache.business.local_chache import LocalCache from antarest.core.config import CacheConfig +from antarest.core.serialization import from_json, to_json_string from antarest.core.tasks.model import TaskDTO from antarest.core.utils.utils import StopWatch, get_local_path from antarest.matrixstore.repository import MatrixContentRepository @@ -117,7 +118,7 @@ def apply_commands( # This should not happen, but if it does, we return a failed result return GenerationResultInfoDTO(success=False, details=[]) - info = json.loads(task_result.result.return_value) + info = from_json(task_result.result.return_value) return GenerationResultInfoDTO(**info) def build_url(self, url: str) -> str: @@ -207,10 +208,7 @@ def extract_commands(study_path: Path, commands_output_dir: Path) -> None: command_list = extractor.extract(study) (commands_output_dir / COMMAND_FILE).write_text( - json.dumps( - [command.model_dump(exclude={"id"}) for command in command_list], - indent=2, - ) + to_json_string([command.model_dump(exclude={"id"}) for command in command_list], indent=2) ) @@ -299,10 +297,7 @@ def generate_diff( ) (output_dir / COMMAND_FILE).write_text( - json.dumps( - [command.to_dto().model_dump(exclude={"id"}) for command in diff_commands], - indent=2, - ) + to_json_string([command.to_dto().model_dump(exclude={"id"}) for command in diff_commands], indent=2) ) needed_matrices: Set[str] = set() diff --git a/antarest/worker/archive_worker_service.py b/antarest/worker/archive_worker_service.py index 587b6d15d6..b8e505fa8c 100644 --- a/antarest/worker/archive_worker_service.py +++ b/antarest/worker/archive_worker_service.py @@ -19,7 +19,7 @@ from antarest.core.config import Config from antarest.core.logging.utils import configure_logger from antarest.core.utils.utils import get_local_path -from antarest.utils import create_archive_worker +from antarest.service_creator import create_archive_worker # use the real module name instead of `__name__` (because `__name__ == "__main__"`) logger = logging.getLogger("antarest.worker.archive_worker_service") diff --git a/tests/cache/test_redis_cache.py b/tests/cache/test_redis_cache.py index 211de6c689..b3d9cabefd 100644 --- a/tests/cache/test_redis_cache.py +++ b/tests/cache/test_redis_cache.py @@ -10,11 +10,11 @@ # # This file is part of the Antares project. -import json from pathlib import Path from unittest.mock import Mock from antarest.core.cache.business.redis_cache import RedisCache, RedisCacheElement +from antarest.core.serialization import from_json from antarest.study.storage.rawstudy.model.filesystem.config.model import Area, FileStudyTreeConfigDTO @@ -44,7 +44,7 @@ def test_lifecycle(): # GET redis_client.get.return_value = cache_element - load = json.loads(cache_element) + load = from_json(cache_element) assert cache.get(id=id) == load["data"] redis_client.expire.assert_called_with(redis_key, duration) redis_client.get.assert_called_once_with(redis_key) diff --git a/tests/core/test_tasks.py b/tests/core/test_tasks.py index 89bc2ddfc2..cb2c635177 100644 --- a/tests/core/test_tasks.py +++ b/tests/core/test_tasks.py @@ -42,8 +42,8 @@ from antarest.eventbus.business.local_eventbus import LocalEventBus from antarest.eventbus.service import EventBusService from antarest.login.model import User +from antarest.service_creator import SESSION_ARGS from antarest.study.model import RawStudy -from antarest.utils import SESSION_ARGS from antarest.worker.worker import AbstractWorker, WorkerTaskCommand from tests.helpers import with_db_context diff --git a/tests/login/test_model.py b/tests/login/test_model.py index f8dde20c47..a37cdb7bd5 100644 --- a/tests/login/test_model.py +++ b/tests/login/test_model.py @@ -24,7 +24,7 @@ User, init_admin_user, ) -from antarest.utils import SESSION_ARGS +from antarest.service_creator import SESSION_ARGS TEST_ADMIN_PASS_WORD = "test" From 6ace98ed2bec4f29b931412fb4bb3d701846ac97 Mon Sep 17 00:00:00 2001 From: Sylvain Leclerc Date: Wed, 18 Sep 2024 15:25:16 +0200 Subject: [PATCH 004/182] fix(ci): multiply timeouts on windows platform (#2137) The aim is to solve irrelevant failures on windows CI. It often fails when waiting for study upgrades, in particular. The PR re-activates the use of more workers (logical cores instead of CPUs). ANT-2043 --------- Signed-off-by: Sylvain Leclerc --- .github/workflows/main.yml | 2 +- tests/integration/prepare_proxy.py | 4 +-- .../test_download_matrices.py | 4 +-- tests/integration/utils.py | 33 ++++++++++++------- 4 files changed, 26 insertions(+), 17 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 91523a511d..604f8e54d1 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -53,7 +53,7 @@ jobs: pip install -r requirements-dev.txt - name: Test with pytest run: | - pytest --cov antarest --cov-report xml -n auto + pytest --cov antarest --cov-report xml -n logical - name: Archive code coverage results if: matrix.os == 'ubuntu-20.04' uses: actions/upload-artifact@v4 diff --git a/tests/integration/prepare_proxy.py b/tests/integration/prepare_proxy.py index 8fc52f2f55..47e5a33294 100644 --- a/tests/integration/prepare_proxy.py +++ b/tests/integration/prepare_proxy.py @@ -90,7 +90,7 @@ def copy_study_and_upgrade(self, ref_study_id: str, target_version: int) -> str: task_id = res.json() assert task_id - task = wait_task_completion(self.client, self.user_access_token, task_id, timeout=20) + task = wait_task_completion(self.client, self.user_access_token, task_id, base_timeout=20) assert task.status == TaskStatus.COMPLETED return study_id @@ -173,7 +173,7 @@ def generate_snapshot(self, variant_id: str, denormalize: bool = False, from_scr task_id = res.json() assert task_id - task = wait_task_completion(self.client, self.user_access_token, task_id, timeout=20) + task = wait_task_completion(self.client, self.user_access_token, task_id, base_timeout=20) assert task.status == TaskStatus.COMPLETED def create_area(self, study_id: str, *, name: str, country: str = "FR") -> t.Dict[str, t.Any]: diff --git a/tests/integration/raw_studies_blueprint/test_download_matrices.py b/tests/integration/raw_studies_blueprint/test_download_matrices.py index 2228a71388..499bd8b587 100644 --- a/tests/integration/raw_studies_blueprint/test_download_matrices.py +++ b/tests/integration/raw_studies_blueprint/test_download_matrices.py @@ -53,7 +53,7 @@ def copy_upgrade_study(self, ref_study_id, target_version=820): task_id = res.json() assert task_id - task = wait_task_completion(self.client, self.user_access_token, task_id, timeout=20) + task = wait_task_completion(self.client, self.user_access_token, task_id, base_timeout=20) assert task.status == TaskStatus.COMPLETED return study_820_id @@ -91,7 +91,7 @@ def generate_snapshot(self, variant_id: str, denormalize=False, from_scratch=Tru task_id = res.json() assert task_id - task = wait_task_completion(self.client, self.user_access_token, task_id, timeout=20) + task = wait_task_completion(self.client, self.user_access_token, task_id, base_timeout=20) assert task.status == TaskStatus.COMPLETED def create_area(self, parent_id, *, name: str, country: str = "FR") -> str: diff --git a/tests/integration/utils.py b/tests/integration/utils.py index 7812f4d371..fa5a34f286 100644 --- a/tests/integration/utils.py +++ b/tests/integration/utils.py @@ -11,6 +11,7 @@ # This file is part of the Antares project. import contextlib +import os import time from typing import Callable @@ -29,24 +30,32 @@ def wait_for(predicate: Callable[[], bool], timeout: float = 10, sleep_time: flo raise TimeoutError(f"task is still in progress after {timeout} seconds") +IS_WINDOWS = os.name == "nt" +TIMEOUT_MULTIPLIER = 2 if IS_WINDOWS else 1 + + def wait_task_completion( client: TestClient, access_token: str, task_id: str, *, - timeout: float = 10, + base_timeout: float = 10, ) -> TaskDTO: - end_time = time.time() + timeout - while time.time() < end_time: - time.sleep(0.1) - res = client.request( - "GET", - f"/v1/tasks/{task_id}", - headers={"Authorization": f"Bearer {access_token}"}, - json={"wait_for_completion": True}, - ) - assert res.status_code == 200 + """ + base_timeout is multiplied by 2 on windows to cope with slow CI + """ + timeout = TIMEOUT_MULTIPLIER * base_timeout + params = {"wait_for_completion": True, "timeout": timeout} + res = client.request( + "GET", + f"/v1/tasks/{task_id}", + headers={"Authorization": f"Bearer {access_token}"}, + params=params, + ) + if res.status_code == 200: task = TaskDTO(**res.json()) if task.status not in {TaskStatus.PENDING, TaskStatus.RUNNING}: return task - raise TimeoutError(f"{timeout} seconds") + elif res.status_code == 408: + raise TimeoutError(f"{timeout} seconds") + raise ValueError(f"Unexpected status code {res.status_code}") From fa1661978a8b27ee3e7ca3c14df41d83167a3d10 Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Wed, 18 Sep 2024 15:45:33 +0200 Subject: [PATCH 005/182] chore(front-end): add license headers inside front-end (#2145) Fix [ANT-1916] for the front-end part --- .github/workflows/license_header.yml | 1 + scripts/license_checker_and_adder.py | 51 +++++++++++++++---- webapp/src/common/types.ts | 13 +++++ webapp/src/components/App/Api.tsx | 13 +++++ .../src/components/App/Data/DataListing.tsx | 13 +++++ .../src/components/App/Data/DataPropsView.tsx | 13 +++++ .../App/Data/DatasetCreationDialog.tsx | 13 +++++ .../src/components/App/Data/MatrixDialog.tsx | 13 +++++ webapp/src/components/App/Data/index.tsx | 13 +++++ webapp/src/components/App/Data/styles.ts | 13 +++++ webapp/src/components/App/Data/utils.tsx | 13 +++++ .../components/App/Settings/Groups/Header.tsx | 13 +++++ .../Groups/dialog/CreateGroupDialog.tsx | 13 +++++ .../dialog/GroupFormDialog/GroupForm.tsx | 13 +++++ .../Groups/dialog/GroupFormDialog/index.tsx | 13 +++++ .../Groups/dialog/UpdateGroupDialog.tsx | 13 +++++ .../components/App/Settings/Groups/index.tsx | 13 +++++ .../App/Settings/Maintenance/index.tsx | 13 +++++ .../components/App/Settings/Tokens/Header.tsx | 13 +++++ .../Tokens/dialog/CreateTokenDialog.tsx | 13 +++++ .../dialog/TokenFormDialog/TokenForm.tsx | 13 +++++ .../Tokens/dialog/TokenFormDialog/index.tsx | 13 +++++ .../Tokens/dialog/TokenInfoDialog.tsx | 13 +++++ .../components/App/Settings/Tokens/index.tsx | 13 +++++ .../components/App/Settings/Users/Header.tsx | 13 +++++ .../Users/dialog/CreateUserDialog.tsx | 13 +++++ .../Users/dialog/UpdateUserDialog.tsx | 13 +++++ .../Users/dialog/UserFormDialog/UserForm.tsx | 13 +++++ .../Users/dialog/UserFormDialog/index.tsx | 13 +++++ .../components/App/Settings/Users/index.tsx | 13 +++++ webapp/src/components/App/Settings/index.tsx | 13 +++++ webapp/src/components/App/Settings/utils.ts | 13 +++++ .../DraggableCommands/CommandImportButton.tsx | 13 +++++ .../CommandListItem/CommandMatrixViewer.tsx | 13 +++++ .../CommandListItem/index.tsx | 13 +++++ .../CommandListItem/style.ts | 13 +++++ .../DraggableCommands/CommandListView.tsx | 13 +++++ .../Commands/Edition/commandTypes.ts | 13 +++++ .../Singlestudy/Commands/Edition/index.tsx | 13 +++++ .../App/Singlestudy/Commands/Edition/style.ts | 13 +++++ .../App/Singlestudy/Commands/Edition/utils.ts | 13 +++++ .../App/Singlestudy/Commands/index.tsx | 13 +++++ .../App/Singlestudy/Commands/style.ts | 13 +++++ .../InformationView/CreateVariantDialog.tsx | 13 +++++ .../LauncherHistory/JobStepper.tsx | 13 +++++ .../InformationView/LauncherHistory/index.tsx | 13 +++++ .../InformationView/LauncherHistory/style.ts | 13 +++++ .../InformationView/Notes/DetailsList.tsx | 13 +++++ .../Notes/NodeEditorModal/index.tsx | 13 +++++ .../Notes/NodeEditorModal/style.ts | 13 +++++ .../HomeView/InformationView/Notes/index.tsx | 13 +++++ .../HomeView/InformationView/Notes/utils.ts | 13 +++++ .../HomeView/InformationView/index.tsx | 13 +++++ .../HomeView/StudyTreeView/index.tsx | 13 +++++ .../HomeView/StudyTreeView/treeconfig.ts | 13 +++++ .../HomeView/StudyTreeView/utils.ts | 13 +++++ .../App/Singlestudy/HomeView/index.tsx | 13 +++++ .../App/Singlestudy/NavHeader/Actions.tsx | 13 +++++ .../App/Singlestudy/NavHeader/ActionsMenu.tsx | 13 +++++ .../App/Singlestudy/NavHeader/Details.tsx | 13 +++++ .../App/Singlestudy/NavHeader/index.tsx | 13 +++++ .../App/Singlestudy/PropertiesDialog.tsx | 13 +++++ .../App/Singlestudy/UpgradeDialog.tsx | 13 +++++ .../Configuration/AdequacyPatch/Fields.tsx | 13 +++++ .../Configuration/AdequacyPatch/index.tsx | 13 +++++ .../Configuration/AdequacyPatch/utils.ts | 13 +++++ .../AdvancedParameters/Fields.tsx | 13 +++++ .../AdvancedParameters/index.tsx | 13 +++++ .../Configuration/AdvancedParameters/utils.ts | 13 +++++ .../explore/Configuration/General/Fields.tsx | 13 +++++ .../dialogs/ScenarioBuilderDialog/Table.tsx | 13 +++++ .../dialogs/ScenarioBuilderDialog/index.tsx | 13 +++++ .../dialogs/ScenarioBuilderDialog/utils.ts | 13 +++++ .../ScenarioBuilderDialog/withAreas.tsx | 13 +++++ .../dialogs/ScenarioPlaylistDialog/index.tsx | 13 +++++ .../dialogs/ScenarioPlaylistDialog/utils.ts | 13 +++++ .../dialogs/ThematicTrimmingDialog/index.tsx | 13 +++++ .../dialogs/ThematicTrimmingDialog/utils.ts | 13 +++++ .../explore/Configuration/General/index.tsx | 13 +++++ .../explore/Configuration/General/styles.ts | 13 +++++ .../explore/Configuration/General/utils.ts | 13 +++++ .../Configuration/Optimization/Fields.tsx | 13 +++++ .../Configuration/Optimization/index.tsx | 13 +++++ .../Configuration/Optimization/utils.ts | 13 +++++ .../TimeSeriesManagement/Fields.tsx | 13 +++++ .../TimeSeriesManagement/index.tsx | 13 +++++ .../TimeSeriesManagement/utils.ts | 13 +++++ .../explore/Configuration/index.tsx | 13 +++++ .../Singlestudy/explore/Debug/Data/Json.tsx | 13 +++++ .../Singlestudy/explore/Debug/Data/Matrix.tsx | 13 +++++ .../Singlestudy/explore/Debug/Data/Text.tsx | 13 +++++ .../Singlestudy/explore/Debug/Data/index.tsx | 13 +++++ .../Singlestudy/explore/Debug/Data/style.ts | 13 +++++ .../Singlestudy/explore/Debug/DebugContext.ts | 13 +++++ .../explore/Debug/Tree/FileTreeItem.tsx | 13 +++++ .../Singlestudy/explore/Debug/Tree/index.tsx | 13 +++++ .../App/Singlestudy/explore/Debug/index.tsx | 13 +++++ .../App/Singlestudy/explore/Debug/utils.ts | 13 +++++ .../Modelization/Areas/AreaPropsView.tsx | 13 +++++ .../explore/Modelization/Areas/AreasTab.tsx | 13 +++++ .../Hydro/Allocation/AllocationField.tsx | 13 +++++ .../Areas/Hydro/Allocation/Fields.tsx | 13 +++++ .../Areas/Hydro/Allocation/index.tsx | 13 +++++ .../Areas/Hydro/Allocation/utils.ts | 13 +++++ .../Hydro/Correlation/CorrelationField.tsx | 13 +++++ .../Areas/Hydro/Correlation/Fields.tsx | 13 +++++ .../Areas/Hydro/Correlation/index.tsx | 13 +++++ .../Areas/Hydro/Correlation/utils.ts | 13 +++++ .../Modelization/Areas/Hydro/HydroMatrix.tsx | 13 +++++ .../Areas/Hydro/HydroMatrixDialog.tsx | 13 +++++ .../Areas/Hydro/InflowStructure/index.tsx | 13 +++++ .../Areas/Hydro/InflowStructure/utils.ts | 13 +++++ .../Areas/Hydro/ManagementOptions/Fields.tsx | 13 +++++ .../Areas/Hydro/ManagementOptions/index.tsx | 13 +++++ .../Areas/Hydro/ManagementOptions/utils.ts | 13 +++++ .../Areas/Hydro/SplitHydroMatrix.tsx | 13 +++++ .../Areas/Hydro/ViewMatrixButton.tsx | 13 +++++ .../Areas/Hydro/hooks/useAreasOptions.ts | 13 +++++ .../Modelization/Areas/Hydro/index.tsx | 13 +++++ .../explore/Modelization/Areas/Hydro/style.ts | 13 +++++ .../explore/Modelization/Areas/Hydro/utils.ts | 13 +++++ .../explore/Modelization/Areas/Load.tsx | 13 +++++ .../explore/Modelization/Areas/MiscGen.tsx | 13 +++++ .../Modelization/Areas/Properties/Fields.tsx | 13 +++++ .../Modelization/Areas/Properties/index.tsx | 13 +++++ .../Modelization/Areas/Properties/utils.ts | 13 +++++ .../Modelization/Areas/Renewables/Fields.tsx | 13 +++++ .../Modelization/Areas/Renewables/Form.tsx | 13 +++++ .../Modelization/Areas/Renewables/Matrix.tsx | 13 +++++ .../Modelization/Areas/Renewables/index.tsx | 13 +++++ .../Modelization/Areas/Renewables/utils.ts | 13 +++++ .../explore/Modelization/Areas/Reserve.tsx | 13 +++++ .../explore/Modelization/Areas/Solar.tsx | 13 +++++ .../Modelization/Areas/Storages/Fields.tsx | 13 +++++ .../Modelization/Areas/Storages/Form.tsx | 13 +++++ .../Modelization/Areas/Storages/Matrix.tsx | 13 +++++ .../Modelization/Areas/Storages/index.tsx | 13 +++++ .../Modelization/Areas/Storages/utils.ts | 13 +++++ .../Modelization/Areas/Thermal/Fields.tsx | 13 +++++ .../Modelization/Areas/Thermal/Form.tsx | 13 +++++ .../Modelization/Areas/Thermal/Matrix.tsx | 13 +++++ .../Modelization/Areas/Thermal/index.tsx | 13 +++++ .../Modelization/Areas/Thermal/utils.ts | 13 +++++ .../explore/Modelization/Areas/Wind.tsx | 13 +++++ .../Areas/common/clustersUtils.ts | 13 +++++ .../explore/Modelization/Areas/index.tsx | 13 +++++ .../explore/Modelization/Areas/style.ts | 13 +++++ .../BindingConstraints/AddDialog.tsx | 13 +++++ .../BindingConstPropsView.tsx | 13 +++++ .../AddConstraintTermForm/OptionsList.tsx | 13 +++++ .../AddConstraintTermForm/index.tsx | 13 +++++ .../AddConstraintTermDialog/index.tsx | 13 +++++ .../BindingConstView/BindingConstForm.tsx | 13 +++++ .../BindingConstView/ConstraintFields.tsx | 13 +++++ .../ConstraintTerm/OptionsList.tsx | 13 +++++ .../BindingConstView/ConstraintTerm/index.tsx | 13 +++++ .../BindingConstView/Matrix.tsx | 13 +++++ .../constraintviews/ConstraintElement.tsx | 13 +++++ .../constraintviews/OffsetInput.tsx | 13 +++++ .../BindingConstView/constraintviews/style.ts | 13 +++++ .../BindingConstView/index.tsx | 13 +++++ .../BindingConstView/utils.ts | 13 +++++ .../Modelization/BindingConstraints/index.tsx | 13 +++++ .../Modelization/Links/LinkPropsView.tsx | 13 +++++ .../Modelization/Links/LinkView/LinkForm.tsx | 13 +++++ .../Links/LinkView/LinkMatrixView.tsx | 13 +++++ .../Modelization/Links/LinkView/index.tsx | 13 +++++ .../Modelization/Links/LinkView/utils.ts | 13 +++++ .../explore/Modelization/Links/index.tsx | 13 +++++ .../Modelization/Map/Areas/AreaConfig.tsx | 13 +++++ .../Modelization/Map/Areas/AreaLink.tsx | 13 +++++ .../Modelization/Map/Areas/AreaLinks.tsx | 13 +++++ .../Map/Areas/DeleteAreaDialog.tsx | 13 +++++ .../explore/Modelization/Map/Areas/index.tsx | 13 +++++ .../explore/Modelization/Map/Areas/style.ts | 13 +++++ .../Modelization/Map/CreateAreaDialog.tsx | 13 +++++ .../Districts/CreateDistrictDialog.tsx | 13 +++++ .../Districts/UpdateDistrictDialog.tsx | 13 +++++ .../Map/MapConfig/Districts/index.tsx | 13 +++++ .../MapConfig/Layers/CreateLayerDialog.tsx | 13 +++++ .../MapConfig/Layers/UpdateLayerDialog.tsx | 13 +++++ .../Map/MapConfig/Layers/index.tsx | 13 +++++ .../Modelization/Map/MapConfig/index.tsx | 13 +++++ .../Modelization/Map/MapControlButtons.tsx | 13 +++++ .../explore/Modelization/Map/MapGraph.tsx | 13 +++++ .../explore/Modelization/Map/MapHeader.tsx | 13 +++++ .../explore/Modelization/Map/Node.tsx | 13 +++++ .../explore/Modelization/Map/index.tsx | 13 +++++ .../explore/Modelization/Map/style.ts | 13 +++++ .../explore/Modelization/Map/utils.ts | 13 +++++ .../explore/Modelization/index.tsx | 13 +++++ .../explore/Results/ResultDetails/index.tsx | 13 +++++ .../explore/Results/ResultDetails/utils.ts | 13 +++++ .../App/Singlestudy/explore/Results/index.tsx | 13 +++++ .../App/Singlestudy/explore/TabWrapper.tsx | 13 +++++ .../dialogs/CreateTemplateTableDialog.tsx | 13 +++++ .../dialogs/TableTemplateFormDialog.tsx | 13 +++++ .../dialogs/UpdateTemplateTableDialog.tsx | 13 +++++ .../explore/TableModeList/index.tsx | 13 +++++ .../explore/TableModeList/utils.ts | 13 +++++ .../Xpansion/Candidates/CandidateForm.tsx | 13 +++++ .../Candidates/CreateCandidateDialog.tsx | 13 +++++ .../Xpansion/Candidates/XpansionPropsView.tsx | 13 +++++ .../explore/Xpansion/Candidates/index.tsx | 13 +++++ .../explore/Xpansion/Capacities.tsx | 13 +++++ .../explore/Xpansion/Constraints.tsx | 13 +++++ .../Singlestudy/explore/Xpansion/FileList.tsx | 13 +++++ .../Xpansion/Settings/SettingsForm.tsx | 13 +++++ .../explore/Xpansion/Settings/index.tsx | 13 +++++ .../Singlestudy/explore/Xpansion/Weights.tsx | 13 +++++ .../Singlestudy/explore/Xpansion/index.tsx | 13 +++++ .../explore/Xpansion/share/styles.ts | 13 +++++ .../App/Singlestudy/explore/Xpansion/types.ts | 13 +++++ .../explore/common/ListElement.tsx | 13 +++++ .../explore/common/OutputFilters.tsx | 13 +++++ .../App/Singlestudy/explore/common/types.ts | 13 +++++ .../src/components/App/Singlestudy/index.tsx | 13 +++++ .../components/App/Studies/BatchModeMenu.tsx | 13 +++++ .../App/Studies/CreateStudyDialog.tsx | 13 +++++ .../Filter/MultipleLinkElement/index.tsx | 13 +++++ .../Filter/MultipleLinkElement/style.ts | 13 +++++ .../Filter/SingleLinkElement/index.tsx | 13 +++++ .../Filter/SingleLinkElement/style.ts | 13 +++++ .../ExportModal/ExportFilter/Filter/index.tsx | 13 +++++ .../ExportModal/ExportFilter/Filter/style.ts | 13 +++++ .../ExportFilter/TagSelect/index.tsx | 13 +++++ .../ExportFilter/TagSelect/style.ts | 13 +++++ .../ExportModal/ExportFilter/index.tsx | 13 +++++ .../App/Studies/ExportModal/index.tsx | 13 +++++ .../components/App/Studies/FilterDrawer.tsx | 13 +++++ .../components/App/Studies/HeaderBottom.tsx | 13 +++++ .../components/App/Studies/HeaderTopRight.tsx | 13 +++++ .../components/App/Studies/LauncherDialog.tsx | 13 +++++ .../App/Studies/MoveStudyDialog.tsx | 13 +++++ .../components/App/Studies/RefreshButton.tsx | 13 +++++ webapp/src/components/App/Studies/SideNav.tsx | 13 +++++ .../App/Studies/StudiesList/StudyCardCell.tsx | 13 +++++ .../App/Studies/StudiesList/index.tsx | 13 +++++ .../src/components/App/Studies/StudyCard.tsx | 13 +++++ .../src/components/App/Studies/StudyTree.tsx | 13 +++++ webapp/src/components/App/Studies/index.tsx | 13 +++++ webapp/src/components/App/Studies/utils.ts | 13 +++++ .../src/components/App/Tasks/JobTableView.tsx | 13 +++++ .../components/App/Tasks/LaunchJobLogView.tsx | 13 +++++ .../App/Tasks/NotificationBadge.tsx | 13 +++++ webapp/src/components/App/Tasks/index.tsx | 13 +++++ webapp/src/components/App/index.tsx | 13 +++++ webapp/src/components/common/ButtonBack.tsx | 13 +++++ webapp/src/components/common/DocLink.tsx | 13 +++++ webapp/src/components/common/DownloadLink.tsx | 13 +++++ .../common/DownloadMatrixButton.tsx | 13 +++++ .../common/DynamicDataTable/TableRowGroup.tsx | 13 +++++ .../common/DynamicDataTable/TableRowItem.tsx | 13 +++++ .../common/DynamicDataTable/TableToolbar.tsx | 13 +++++ .../common/DynamicDataTable/index.tsx | 13 +++++ .../common/DynamicDataTable/utils.ts | 13 +++++ webapp/src/components/common/DynamicList.tsx | 13 +++++ .../common/EditableMatrix/MatrixGraphView.tsx | 13 +++++ .../common/EditableMatrix/index.tsx | 13 +++++ .../components/common/EditableMatrix/style.ts | 13 +++++ .../components/common/EditableMatrix/utils.ts | 13 +++++ webapp/src/components/common/Fieldset.tsx | 13 +++++ webapp/src/components/common/FileTable.tsx | 13 +++++ .../components/common/Form/FormContext.tsx | 13 +++++ webapp/src/components/common/Form/index.tsx | 13 +++++ webapp/src/components/common/Form/types.ts | 13 +++++ .../components/common/Form/useFormApiPlus.ts | 13 +++++ .../components/common/Form/useFormUndoRedo.ts | 13 +++++ webapp/src/components/common/Form/utils.ts | 13 +++++ .../common/GroupedDataTable/CreateDialog.tsx | 13 +++++ .../GroupedDataTable/DuplicateDialog.tsx | 13 +++++ .../cellRenderers/BooleanCell.tsx | 13 +++++ .../common/GroupedDataTable/index.tsx | 13 +++++ .../common/GroupedDataTable/types.ts | 13 +++++ .../common/GroupedDataTable/utils.ts | 13 +++++ webapp/src/components/common/Handsontable.tsx | 13 +++++ .../components/common/JSONEditor/index.tsx | 13 +++++ .../common/LinearProgressWithLabel.tsx | 13 +++++ webapp/src/components/common/LogModal.tsx | 13 +++++ .../components/common/MatrixGrid/Matrix.tsx | 13 +++++ .../common/MatrixGrid/MatrixActions.tsx | 13 +++++ .../common/MatrixGrid/index.test.tsx | 13 +++++ .../components/common/MatrixGrid/index.tsx | 13 +++++ .../src/components/common/MatrixGrid/style.ts | 13 +++++ .../src/components/common/MatrixGrid/types.ts | 13 +++++ .../MatrixGrid/useColumnMapping.test.ts | 13 +++++ .../common/MatrixGrid/useColumnMapping.ts | 13 +++++ .../MatrixGrid/useGridCellContent.test.ts | 13 +++++ .../common/MatrixGrid/useGridCellContent.ts | 13 +++++ .../common/MatrixGrid/useMatrix.test.tsx | 13 +++++ .../components/common/MatrixGrid/useMatrix.ts | 13 +++++ .../common/MatrixGrid/utils.test.ts | 13 +++++ .../src/components/common/MatrixGrid/utils.ts | 13 +++++ .../common/MatrixInput/MatrixAssignDialog.tsx | 13 +++++ .../components/common/MatrixInput/index.tsx | 13 +++++ .../components/common/MatrixInput/style.ts | 13 +++++ .../src/components/common/PropertiesView.tsx | 13 +++++ webapp/src/components/common/SelectMulti.tsx | 13 +++++ webapp/src/components/common/SelectSingle.tsx | 13 +++++ .../components/common/SnackErrorMessage.tsx | 13 +++++ .../src/components/common/SplitLayoutView.tsx | 13 +++++ .../src/components/common/SplitView/index.tsx | 13 +++++ webapp/src/components/common/StarToggle.tsx | 13 +++++ .../src/components/common/TableForm/Table.tsx | 13 +++++ .../src/components/common/TableForm/index.tsx | 13 +++++ .../src/components/common/TableForm/utils.ts | 13 +++++ webapp/src/components/common/TableMode.tsx | 13 +++++ webapp/src/components/common/TabsView.tsx | 13 +++++ .../src/components/common/TextSeparator.tsx | 13 +++++ .../components/common/buttons/SplitButton.tsx | 13 +++++ .../components/common/dialogs/BasicDialog.tsx | 13 +++++ .../common/dialogs/ConfirmationDialog.tsx | 13 +++++ .../common/dialogs/DataViewerDialog/index.tsx | 13 +++++ .../common/dialogs/DataViewerDialog/styles.ts | 13 +++++ .../common/dialogs/DigestDialog.tsx | 13 +++++ .../components/common/dialogs/FormDialog.tsx | 13 +++++ .../common/dialogs/ImportDialog.tsx | 13 +++++ .../components/common/dialogs/OkDialog.tsx | 13 +++++ .../common/fieldEditors/BooleanFE.tsx | 13 +++++ .../common/fieldEditors/CheckBoxFE.tsx | 13 +++++ .../common/fieldEditors/CheckboxesTagsFE.tsx | 13 +++++ .../fieldEditors/ColorPickerFE/index.tsx | 13 +++++ .../fieldEditors/ColorPickerFE/utils.ts | 13 +++++ .../common/fieldEditors/ListFE/index.tsx | 13 +++++ .../common/fieldEditors/ListFE/utils.ts | 13 +++++ .../common/fieldEditors/NumberFE.tsx | 13 +++++ .../common/fieldEditors/PasswordFE.tsx | 13 +++++ .../common/fieldEditors/RadioFE.tsx | 13 +++++ .../common/fieldEditors/SearchFE.tsx | 13 +++++ .../common/fieldEditors/SelectFE.tsx | 13 +++++ .../common/fieldEditors/StringFE.tsx | 13 +++++ .../common/fieldEditors/SwitchFE.tsx | 13 +++++ .../components/common/loaders/AppLoader.tsx | 13 +++++ .../common/loaders/BackdropLoading.tsx | 13 +++++ .../common/loaders/GlobalPageLoadingError.tsx | 13 +++++ .../common/loaders/SimpleLoader.tsx | 13 +++++ .../src/components/common/page/BasicPage.tsx | 13 +++++ .../src/components/common/page/RootPage.tsx | 13 +++++ .../components/common/page/SimpleContent.tsx | 13 +++++ .../components/common/page/ViewWrapper.tsx | 13 +++++ .../common/utils/UsePromiseCond.tsx | 13 +++++ .../src/components/common/utils/constants.ts | 13 +++++ .../src/components/wrappers/LoginWrapper.tsx | 13 +++++ .../MaintenanceWrapper/MessageInfoDialog.tsx | 13 +++++ .../wrappers/MaintenanceWrapper/Stars.tsx | 13 +++++ .../wrappers/MaintenanceWrapper/index.tsx | 13 +++++ .../components/wrappers/MenuWrapper/index.tsx | 13 +++++ .../components/wrappers/MenuWrapper/styles.ts | 13 +++++ webapp/src/hoc/reactHookFormSupport.tsx | 13 +++++ webapp/src/hooks/useAutoUpdateRef.ts | 13 +++++ webapp/src/hooks/useBlocker.ts | 13 +++++ webapp/src/hooks/useDebounce.ts | 13 +++++ webapp/src/hooks/useDebouncedEffect.ts | 13 +++++ webapp/src/hooks/useDebouncedState.ts | 13 +++++ webapp/src/hooks/useEnqueueErrorSnackbar.tsx | 13 +++++ webapp/src/hooks/useMemoLocked.ts | 13 +++++ webapp/src/hooks/useNavigateOnCondition.ts | 13 +++++ .../src/hooks/useOperationInProgressCount.ts | 13 +++++ webapp/src/hooks/usePromise.ts | 13 +++++ .../src/hooks/usePromiseWithSnackbarError.ts | 13 +++++ webapp/src/hooks/usePrompt.ts | 13 +++++ webapp/src/hooks/useUpdateEffectOnce.ts | 13 +++++ webapp/src/i18n.ts | 13 +++++ webapp/src/index.test.tsx | 13 +++++ webapp/src/index.tsx | 13 +++++ .../components/UseAsyncAppSelectorCond.tsx | 13 +++++ webapp/src/redux/ducks/auth.ts | 13 +++++ webapp/src/redux/ducks/groups.ts | 13 +++++ webapp/src/redux/ducks/index.ts | 13 +++++ webapp/src/redux/ducks/studies.ts | 13 +++++ webapp/src/redux/ducks/studyMaps.ts | 13 +++++ webapp/src/redux/ducks/studySyntheses.ts | 13 +++++ webapp/src/redux/ducks/ui.ts | 13 +++++ webapp/src/redux/ducks/users.ts | 13 +++++ webapp/src/redux/hooks/useAppDispatch.ts | 13 +++++ webapp/src/redux/hooks/useAppSelector.ts | 13 +++++ webapp/src/redux/hooks/useAsyncAppSelector.ts | 13 +++++ webapp/src/redux/hooks/useStudyMaps.ts | 13 +++++ webapp/src/redux/hooks/useStudySynthesis.ts | 13 +++++ .../middlewares/localStorageMiddleware.ts | 13 +++++ webapp/src/redux/selectors.ts | 13 +++++ webapp/src/redux/store.ts | 13 +++++ webapp/src/redux/utils.ts | 13 +++++ webapp/src/services/api/auth.ts | 13 +++++ webapp/src/services/api/client.ts | 13 +++++ webapp/src/services/api/downloads.ts | 13 +++++ webapp/src/services/api/maintenance.ts | 13 +++++ webapp/src/services/api/matrix.ts | 13 +++++ webapp/src/services/api/misc.ts | 13 +++++ .../studies/config/thematicTrimming/index.ts | 13 +++++ .../studies/config/thematicTrimming/types.ts | 13 +++++ webapp/src/services/api/studies/raw/index.ts | 13 +++++ webapp/src/services/api/studies/raw/types.ts | 13 +++++ .../api/studies/tableMode/constants.ts | 13 +++++ .../services/api/studies/tableMode/index.ts | 13 +++++ .../services/api/studies/tableMode/types.ts | 13 +++++ webapp/src/services/api/study.ts | 13 +++++ webapp/src/services/api/studydata.ts | 13 +++++ webapp/src/services/api/tasks.ts | 13 +++++ webapp/src/services/api/user.ts | 13 +++++ webapp/src/services/api/variant.ts | 13 +++++ webapp/src/services/api/xpansion.ts | 13 +++++ webapp/src/services/config.ts | 13 +++++ webapp/src/services/utils/index.ts | 13 +++++ webapp/src/services/utils/localStorage.ts | 13 +++++ webapp/src/services/webSockets.ts | 13 +++++ .../tests/mocks/mockGetBoundingClientRect.ts | 13 +++++ .../src/tests/mocks/mockHTMLCanvasElement.ts | 13 +++++ webapp/src/tests/mocks/mockResizeObserver.ts | 13 +++++ webapp/src/tests/setup.ts | 13 +++++ webapp/src/theme.ts | 13 +++++ webapp/src/types/i18next.d.ts | 13 +++++ webapp/src/types/reset.d.ts | 13 +++++ webapp/src/utils/feUtils.ts | 13 +++++ webapp/src/utils/fileUtils.ts | 13 +++++ webapp/src/utils/fnUtils.ts | 13 +++++ webapp/src/utils/i18nUtils.ts | 13 +++++ webapp/src/utils/muiUtils.ts | 13 +++++ webapp/src/utils/reactUtils.ts | 13 +++++ webapp/src/utils/stringUtils.ts | 13 +++++ webapp/src/utils/studiesUtils.ts | 13 +++++ webapp/src/utils/tsUtils.ts | 13 +++++ webapp/src/utils/validationUtils.ts | 13 +++++ webapp/src/vite-env.d.ts | 13 +++++ 424 files changed, 5527 insertions(+), 11 deletions(-) diff --git a/.github/workflows/license_header.yml b/.github/workflows/license_header.yml index 03f707b4e3..51b8172825 100644 --- a/.github/workflows/license_header.yml +++ b/.github/workflows/license_header.yml @@ -22,4 +22,5 @@ jobs: run: | python license_checker_and_adder.py --path=../antarest/ --action=check-strict python license_checker_and_adder.py --path=../tests/ --action=check-strict + python license_checker_and_adder.py --path=../webapp/src --action=check-strict working-directory: scripts diff --git a/scripts/license_checker_and_adder.py b/scripts/license_checker_and_adder.py index 2eb388a20f..5fbfff0eeb 100755 --- a/scripts/license_checker_and_adder.py +++ b/scripts/license_checker_and_adder.py @@ -8,7 +8,7 @@ # Use to skip subtrees that have their own licenses (forks) LICENSE_FILE_PATTERN = re.compile("LICENSE.*") -ANTARES_LICENSE_HEADER = """# Copyright (c) 2024, RTE (https://www.rte-france.com) +BACKEND_LICENSE_HEADER = """# Copyright (c) 2024, RTE (https://www.rte-france.com) # # See AUTHORS.txt # @@ -21,17 +21,29 @@ # This file is part of the Antares project. """ -LICENSE_AS_LIST = ANTARES_LICENSE_HEADER.splitlines() -LICENSE_TO_SAVE = [header + "\n" for header in LICENSE_AS_LIST] + ["\n"] +FRONTEND_LICENSE_HEADER = """/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ +""" def is_license_file(filename: str) -> bool: return LICENSE_FILE_PATTERN.match(filename) is not None -def check_file(file_path: Path, action: str) -> bool: +def check_file(file_path: Path, action: str, license_as_list: List[str], license_to_save: List[str]) -> bool: file_content = file_path.read_text().splitlines() - if len(file_content) >= 11 and file_content[:11] == LICENSE_AS_LIST: + n = len(license_as_list) + if len(file_content) >= n and file_content[:n] == license_as_list: return True click.echo(f"{file_path} has no valid header.") new_lines = [] @@ -45,13 +57,21 @@ def check_file(file_path: Path, action: str) -> bool: if already_licensed: # I don't really know what to do here raise ValueError(f"File {file_path} already licensed.") else: - new_lines = LICENSE_TO_SAVE + lines + new_lines = license_to_save + lines if new_lines: with open(file_path, "w") as f: f.writelines(new_lines) -def check_dir(cwd: Path, dir_path: Path, action: str, invalid_files: List[Path]) -> None: +def check_dir( + cwd: Path, + dir_path: Path, + action: str, + invalid_files: List[Path], + suffixes: List[str], + license_as_list: List[str], + license_to_save: List[str], +) -> None: _, dirnames, filenames = next(os.walk(dir_path)) for f in filenames: if dir_path != cwd and is_license_file(f): @@ -61,14 +81,14 @@ def check_dir(cwd: Path, dir_path: Path, action: str, invalid_files: List[Path]) for f in filenames: file_path = dir_path / f - if file_path.suffixes != [".py"]: + if file_path.suffix not in suffixes: continue - if not check_file(file_path, action): + if not check_file(file_path, action, license_as_list, license_to_save): invalid_files.append(file_path) for d in dirnames: - check_dir(cwd, dir_path / d, action, invalid_files) + check_dir(cwd, dir_path / d, action, invalid_files, suffixes, license_as_list, license_to_save) @click.command("license_checker_and_adder") @@ -93,7 +113,16 @@ def cli(path: Path, action: str) -> None: invalid_files = [] cwd = Path.cwd() - check_dir(cwd, path, action, invalid_files) + # --------- infer which files to check and which license to add + suffixes = [".ts", ".tsx"] + license_header = FRONTEND_LICENSE_HEADER + if path.name in ["antarest", "tests"]: + suffixes = [".py"] + license_header = BACKEND_LICENSE_HEADER + license_as_list = license_header.splitlines() + license_to_save = [header + "\n" for header in license_as_list] + ["\n"] + # -------- + check_dir(cwd, path, action, invalid_files, suffixes, license_as_list, license_to_save) file_count = len(invalid_files) if file_count > 0: if action == "fix": diff --git a/webapp/src/common/types.ts b/webapp/src/common/types.ts index 7e62f614e4..ef080b087e 100644 --- a/webapp/src/common/types.ts +++ b/webapp/src/common/types.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { ReactNode } from "react"; export type IdType = number | string; diff --git a/webapp/src/components/App/Api.tsx b/webapp/src/components/App/Api.tsx index 612194c0b1..f8cf031998 100644 --- a/webapp/src/components/App/Api.tsx +++ b/webapp/src/components/App/Api.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box } from "@mui/material"; import SwaggerUI from "swagger-ui-react"; import "swagger-ui-react/swagger-ui.css"; diff --git a/webapp/src/components/App/Data/DataListing.tsx b/webapp/src/components/App/Data/DataListing.tsx index bf0ca2bf00..2a583d9c5e 100644 --- a/webapp/src/components/App/Data/DataListing.tsx +++ b/webapp/src/components/App/Data/DataListing.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { memo } from "react"; import { Typography, Box, styled } from "@mui/material"; import AutoSizer from "react-virtualized-auto-sizer"; diff --git a/webapp/src/components/App/Data/DataPropsView.tsx b/webapp/src/components/App/Data/DataPropsView.tsx index a5684facec..2d11b21174 100644 --- a/webapp/src/components/App/Data/DataPropsView.tsx +++ b/webapp/src/components/App/Data/DataPropsView.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useState } from "react"; import { MatrixDataSetDTO, MatrixInfoDTO } from "../../../common/types"; import PropertiesView from "../../common/PropertiesView"; diff --git a/webapp/src/components/App/Data/DatasetCreationDialog.tsx b/webapp/src/components/App/Data/DatasetCreationDialog.tsx index c10b1eaaf4..84b40d02da 100644 --- a/webapp/src/components/App/Data/DatasetCreationDialog.tsx +++ b/webapp/src/components/App/Data/DatasetCreationDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useState, useEffect, forwardRef, ChangeEvent } from "react"; import { Box, diff --git a/webapp/src/components/App/Data/MatrixDialog.tsx b/webapp/src/components/App/Data/MatrixDialog.tsx index df2b14ab99..7288dd024e 100644 --- a/webapp/src/components/App/Data/MatrixDialog.tsx +++ b/webapp/src/components/App/Data/MatrixDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useState, useEffect } from "react"; import { AxiosError } from "axios"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Data/index.tsx b/webapp/src/components/App/Data/index.tsx index 8f73e7a0b7..7739175bc3 100644 --- a/webapp/src/components/App/Data/index.tsx +++ b/webapp/src/components/App/Data/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useState, useEffect } from "react"; import { AxiosError } from "axios"; import { useSnackbar } from "notistack"; diff --git a/webapp/src/components/App/Data/styles.ts b/webapp/src/components/App/Data/styles.ts index ea28cf1208..0af8363446 100644 --- a/webapp/src/components/App/Data/styles.ts +++ b/webapp/src/components/App/Data/styles.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { styled, Box, Typography } from "@mui/material"; import DownloadIcon from "@mui/icons-material/Download"; diff --git a/webapp/src/components/App/Data/utils.tsx b/webapp/src/components/App/Data/utils.tsx index 3542b219be..c21f9ee0f3 100644 --- a/webapp/src/components/App/Data/utils.tsx +++ b/webapp/src/components/App/Data/utils.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { GroupDTO, MatrixDataSetDTO, diff --git a/webapp/src/components/App/Settings/Groups/Header.tsx b/webapp/src/components/App/Settings/Groups/Header.tsx index f15dd25eeb..b5020cc9b9 100644 --- a/webapp/src/components/App/Settings/Groups/Header.tsx +++ b/webapp/src/components/App/Settings/Groups/Header.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, Button } from "@mui/material"; import GroupAddIcon from "@mui/icons-material/GroupAdd"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Settings/Groups/dialog/CreateGroupDialog.tsx b/webapp/src/components/App/Settings/Groups/dialog/CreateGroupDialog.tsx index dd99768fce..e659a0ca02 100644 --- a/webapp/src/components/App/Settings/Groups/dialog/CreateGroupDialog.tsx +++ b/webapp/src/components/App/Settings/Groups/dialog/CreateGroupDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import GroupAddIcon from "@mui/icons-material/GroupAdd"; import { useSnackbar } from "notistack"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/GroupForm.tsx b/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/GroupForm.tsx index 39e8e26ca4..76db3f8e45 100644 --- a/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/GroupForm.tsx +++ b/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/GroupForm.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useTranslation } from "react-i18next"; import { useMemo, useRef, useState } from "react"; import { diff --git a/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/index.tsx b/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/index.tsx index 26ea1d5b65..4c87b3e0dd 100644 --- a/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/index.tsx +++ b/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import FormDialog, { FormDialogProps, } from "../../../../../common/dialogs/FormDialog"; diff --git a/webapp/src/components/App/Settings/Groups/dialog/UpdateGroupDialog.tsx b/webapp/src/components/App/Settings/Groups/dialog/UpdateGroupDialog.tsx index 2a85371138..284b482a44 100644 --- a/webapp/src/components/App/Settings/Groups/dialog/UpdateGroupDialog.tsx +++ b/webapp/src/components/App/Settings/Groups/dialog/UpdateGroupDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import EditIcon from "@mui/icons-material/Edit"; import { useMemo } from "react"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Settings/Groups/index.tsx b/webapp/src/components/App/Settings/Groups/index.tsx index b662134427..fac341a528 100644 --- a/webapp/src/components/App/Settings/Groups/index.tsx +++ b/webapp/src/components/App/Settings/Groups/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, CircularProgress, diff --git a/webapp/src/components/App/Settings/Maintenance/index.tsx b/webapp/src/components/App/Settings/Maintenance/index.tsx index 817c7ca690..0d89292813 100644 --- a/webapp/src/components/App/Settings/Maintenance/index.tsx +++ b/webapp/src/components/App/Settings/Maintenance/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Backdrop, Box, diff --git a/webapp/src/components/App/Settings/Tokens/Header.tsx b/webapp/src/components/App/Settings/Tokens/Header.tsx index cf1a6e3932..0ed3f0146d 100644 --- a/webapp/src/components/App/Settings/Tokens/Header.tsx +++ b/webapp/src/components/App/Settings/Tokens/Header.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, Button } from "@mui/material"; import TokenIcon from "@mui/icons-material/Token"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Settings/Tokens/dialog/CreateTokenDialog.tsx b/webapp/src/components/App/Settings/Tokens/dialog/CreateTokenDialog.tsx index 44e0ebbf33..342328d765 100644 --- a/webapp/src/components/App/Settings/Tokens/dialog/CreateTokenDialog.tsx +++ b/webapp/src/components/App/Settings/Tokens/dialog/CreateTokenDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import TokenIcon from "@mui/icons-material/Token"; import { IconButton, Paper, Tooltip } from "@mui/material"; import { useSnackbar } from "notistack"; diff --git a/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/TokenForm.tsx b/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/TokenForm.tsx index 128d963bde..b72c3f6780 100644 --- a/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/TokenForm.tsx +++ b/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/TokenForm.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, Button, diff --git a/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/index.tsx b/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/index.tsx index 6da35bd3ad..962cf8f370 100644 --- a/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/index.tsx +++ b/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import FormDialog, { FormDialogProps, } from "../../../../../common/dialogs/FormDialog"; diff --git a/webapp/src/components/App/Settings/Tokens/dialog/TokenInfoDialog.tsx b/webapp/src/components/App/Settings/Tokens/dialog/TokenInfoDialog.tsx index f880eeae74..7fe0faf19b 100644 --- a/webapp/src/components/App/Settings/Tokens/dialog/TokenInfoDialog.tsx +++ b/webapp/src/components/App/Settings/Tokens/dialog/TokenInfoDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { DialogContentText } from "@mui/material"; import { useTranslation } from "react-i18next"; import InfoIcon from "@mui/icons-material/Info"; diff --git a/webapp/src/components/App/Settings/Tokens/index.tsx b/webapp/src/components/App/Settings/Tokens/index.tsx index bbbe3d192e..6b1c466d81 100644 --- a/webapp/src/components/App/Settings/Tokens/index.tsx +++ b/webapp/src/components/App/Settings/Tokens/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, CircularProgress, diff --git a/webapp/src/components/App/Settings/Users/Header.tsx b/webapp/src/components/App/Settings/Users/Header.tsx index d8e1a58fb2..838af5450c 100644 --- a/webapp/src/components/App/Settings/Users/Header.tsx +++ b/webapp/src/components/App/Settings/Users/Header.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, Button } from "@mui/material"; import PersonAddAltIcon from "@mui/icons-material/PersonAddAlt"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Settings/Users/dialog/CreateUserDialog.tsx b/webapp/src/components/App/Settings/Users/dialog/CreateUserDialog.tsx index cf649266ee..acbd27af74 100644 --- a/webapp/src/components/App/Settings/Users/dialog/CreateUserDialog.tsx +++ b/webapp/src/components/App/Settings/Users/dialog/CreateUserDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import PersonAddIcon from "@mui/icons-material/PersonAdd"; import { useSnackbar } from "notistack"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Settings/Users/dialog/UpdateUserDialog.tsx b/webapp/src/components/App/Settings/Users/dialog/UpdateUserDialog.tsx index de42dad178..19117a054e 100644 --- a/webapp/src/components/App/Settings/Users/dialog/UpdateUserDialog.tsx +++ b/webapp/src/components/App/Settings/Users/dialog/UpdateUserDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import EditIcon from "@mui/icons-material/Edit"; import { useMemo } from "react"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/UserForm.tsx b/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/UserForm.tsx index 59acfc6dc5..7e59bba956 100644 --- a/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/UserForm.tsx +++ b/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/UserForm.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useTranslation } from "react-i18next"; import { useMemo, useRef, useState } from "react"; import { diff --git a/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/index.tsx b/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/index.tsx index f3d0d915c2..df0c81f8ea 100644 --- a/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/index.tsx +++ b/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { DialogContentText } from "@mui/material"; import FormDialog, { FormDialogProps, diff --git a/webapp/src/components/App/Settings/Users/index.tsx b/webapp/src/components/App/Settings/Users/index.tsx index 7af7ee658d..00f4b456d7 100644 --- a/webapp/src/components/App/Settings/Users/index.tsx +++ b/webapp/src/components/App/Settings/Users/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, CircularProgress, diff --git a/webapp/src/components/App/Settings/index.tsx b/webapp/src/components/App/Settings/index.tsx index 462a3ad428..f1ee82112f 100644 --- a/webapp/src/components/App/Settings/index.tsx +++ b/webapp/src/components/App/Settings/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import SettingsIcon from "@mui/icons-material/Settings"; import { TabContext, TabList, TabPanel } from "@mui/lab"; import { Box, Tab } from "@mui/material"; diff --git a/webapp/src/components/App/Settings/utils.ts b/webapp/src/components/App/Settings/utils.ts index 73969f176c..3cf7dfe518 100644 --- a/webapp/src/components/App/Settings/utils.ts +++ b/webapp/src/components/App/Settings/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import * as RA from "ramda-adjunct"; import { RoleType } from "../../../common/types"; diff --git a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandImportButton.tsx b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandImportButton.tsx index 87127a3cec..69d4dbd790 100644 --- a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandImportButton.tsx +++ b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandImportButton.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useRef } from "react"; import { useTranslation } from "react-i18next"; import { useSnackbar } from "notistack"; diff --git a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/CommandMatrixViewer.tsx b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/CommandMatrixViewer.tsx index 3d65703877..e21168f2b9 100644 --- a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/CommandMatrixViewer.tsx +++ b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/CommandMatrixViewer.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, Button } from "@mui/material"; import { isString } from "ramda-adjunct"; import { useState } from "react"; diff --git a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/index.tsx b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/index.tsx index 0867cfbf4b..708d0653e2 100644 --- a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/index.tsx +++ b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + // @flow import { CSSProperties, useState } from "react"; import { DraggableProvided } from "react-beautiful-dnd"; diff --git a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/style.ts b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/style.ts index 55b979cdfc..d5895e8ce6 100644 --- a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/style.ts +++ b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/style.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Accordion, Box, styled } from "@mui/material"; import DeleteIcon from "@mui/icons-material/HighlightOff"; import { PAPER_BACKGROUND_NO_TRANSPARENCY } from "../../../../../../../theme"; diff --git a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListView.tsx b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListView.tsx index a9b9d58168..f2dbcfe37e 100644 --- a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListView.tsx +++ b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListView.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { memo, useEffect, useRef } from "react"; import { FixedSizeList, areEqual, ListChildComponentProps } from "react-window"; import { diff --git a/webapp/src/components/App/Singlestudy/Commands/Edition/commandTypes.ts b/webapp/src/components/App/Singlestudy/Commands/Edition/commandTypes.ts index 89e368e793..854c9820b2 100644 --- a/webapp/src/components/App/Singlestudy/Commands/Edition/commandTypes.ts +++ b/webapp/src/components/App/Singlestudy/Commands/Edition/commandTypes.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { CommandResultDTO } from "../../../../../common/types"; export interface CommandItem { diff --git a/webapp/src/components/App/Singlestudy/Commands/Edition/index.tsx b/webapp/src/components/App/Singlestudy/Commands/Edition/index.tsx index 15934c4ad2..e5dba88227 100644 --- a/webapp/src/components/App/Singlestudy/Commands/Edition/index.tsx +++ b/webapp/src/components/App/Singlestudy/Commands/Edition/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useCallback, useEffect, useRef, useState } from "react"; import { useSnackbar } from "notistack"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Singlestudy/Commands/Edition/style.ts b/webapp/src/components/App/Singlestudy/Commands/Edition/style.ts index 6160ec5fca..3f7d81220c 100644 --- a/webapp/src/components/App/Singlestudy/Commands/Edition/style.ts +++ b/webapp/src/components/App/Singlestudy/Commands/Edition/style.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, styled } from "@mui/material"; export const Root = styled(Box)(({ theme }) => ({ diff --git a/webapp/src/components/App/Singlestudy/Commands/Edition/utils.ts b/webapp/src/components/App/Singlestudy/Commands/Edition/utils.ts index 69df4c61f4..319ce47eb3 100644 --- a/webapp/src/components/App/Singlestudy/Commands/Edition/utils.ts +++ b/webapp/src/components/App/Singlestudy/Commands/Edition/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { CommandDTO, CommandResultDTO, diff --git a/webapp/src/components/App/Singlestudy/Commands/index.tsx b/webapp/src/components/App/Singlestudy/Commands/index.tsx index 858e60bd84..d70a693a71 100644 --- a/webapp/src/components/App/Singlestudy/Commands/index.tsx +++ b/webapp/src/components/App/Singlestudy/Commands/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useTranslation } from "react-i18next"; import Toolbar from "@mui/material/Toolbar"; import Divider from "@mui/material/Divider"; diff --git a/webapp/src/components/App/Singlestudy/Commands/style.ts b/webapp/src/components/App/Singlestudy/Commands/style.ts index 61cfb7f180..134b31d3bb 100644 --- a/webapp/src/components/App/Singlestudy/Commands/style.ts +++ b/webapp/src/components/App/Singlestudy/Commands/style.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, Drawer, styled } from "@mui/material"; export const CommandDrawer = styled(Drawer)(({ theme }) => ({ diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/CreateVariantDialog.tsx b/webapp/src/components/App/Singlestudy/HomeView/InformationView/CreateVariantDialog.tsx index 7c23b14a4f..e1cfd19393 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/CreateVariantDialog.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/CreateVariantDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useEffect, useMemo, useState } from "react"; import { useNavigate } from "react-router"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/JobStepper.tsx b/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/JobStepper.tsx index 85f2edbf64..374ce57a9b 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/JobStepper.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/JobStepper.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import Stepper from "@mui/material/Stepper"; import Step from "@mui/material/Step"; import StepLabel from "@mui/material/StepLabel"; diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/index.tsx b/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/index.tsx index e5edcbad76..7af6f61cec 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/index.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, Paper, styled, Typography } from "@mui/material"; import { useCallback, useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/style.ts b/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/style.ts index 5b70ee2fca..7a52dbddc6 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/style.ts +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/style.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, StepConnector, diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/DetailsList.tsx b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/DetailsList.tsx index 55e6300dd7..43b7792d5b 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/DetailsList.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/DetailsList.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import List from "@mui/material/List"; import ListItem from "@mui/material/ListItem"; import ListItemText from "@mui/material/ListItemText"; diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/NodeEditorModal/index.tsx b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/NodeEditorModal/index.tsx index 54e85cd6cf..3d853ed085 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/NodeEditorModal/index.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/NodeEditorModal/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useEffect, useState } from "react"; import { Editor, EditorState, getDefaultKeyBinding, RichUtils } from "draft-js"; import { Button } from "@mui/material"; diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/NodeEditorModal/style.ts b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/NodeEditorModal/style.ts index 2b6b2e9bb8..1e7a8706e5 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/NodeEditorModal/style.ts +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/NodeEditorModal/style.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, styled, Typography } from "@mui/material"; export const Root = styled(Box)(({ theme }) => ({ diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/index.tsx b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/index.tsx index e49b5d2a15..789c8c80b0 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/index.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import { useSnackbar } from "notistack"; diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/utils.ts b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/utils.ts index 91ca0f7b57..2cecdef85d 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/utils.ts +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + /* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable no-param-reassign */ import { ContentState, convertToRaw, EditorState } from "draft-js"; diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/index.tsx b/webapp/src/components/App/Singlestudy/HomeView/InformationView/index.tsx index 590e271ac3..fbaf0d515c 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/index.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useState } from "react"; import { Paper, Button, Box, Divider } from "@mui/material"; import { useNavigate } from "react-router-dom"; diff --git a/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/index.tsx b/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/index.tsx index 284e53836e..c57e860a59 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/index.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useEffect, useMemo, useState } from "react"; import * as React from "react"; import { Box, styled } from "@mui/material"; diff --git a/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/treeconfig.ts b/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/treeconfig.ts index fd75119ad5..199db6680c 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/treeconfig.ts +++ b/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/treeconfig.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + export const colors = ["#24CF9D", "#F3C918", "#E317DA", "#00B2FF"]; export const TILE_SIZE_X = 50; diff --git a/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/utils.ts b/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/utils.ts index cb53646e0a..34cc75a64f 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/utils.ts +++ b/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + /* eslint-disable no-param-reassign */ import { GenericInfo, diff --git a/webapp/src/components/App/Singlestudy/HomeView/index.tsx b/webapp/src/components/App/Singlestudy/HomeView/index.tsx index 3f3c0806da..71f3219ce4 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/index.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useNavigate } from "react-router-dom"; import { Box } from "@mui/material"; import Split from "react-split"; diff --git a/webapp/src/components/App/Singlestudy/NavHeader/Actions.tsx b/webapp/src/components/App/Singlestudy/NavHeader/Actions.tsx index b922b7589c..6d17c267cb 100644 --- a/webapp/src/components/App/Singlestudy/NavHeader/Actions.tsx +++ b/webapp/src/components/App/Singlestudy/NavHeader/Actions.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, Tooltip, Typography, Chip, Button, Divider } from "@mui/material"; import HistoryOutlinedIcon from "@mui/icons-material/HistoryOutlined"; import ContentCopyIcon from "@mui/icons-material/ContentCopy"; diff --git a/webapp/src/components/App/Singlestudy/NavHeader/ActionsMenu.tsx b/webapp/src/components/App/Singlestudy/NavHeader/ActionsMenu.tsx index f72b73860c..c08e8dd87b 100644 --- a/webapp/src/components/App/Singlestudy/NavHeader/ActionsMenu.tsx +++ b/webapp/src/components/App/Singlestudy/NavHeader/ActionsMenu.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Menu, MenuItem, ListItemIcon, ListItemText } from "@mui/material"; import { SvgIconComponent } from "@mui/icons-material"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Singlestudy/NavHeader/Details.tsx b/webapp/src/components/App/Singlestudy/NavHeader/Details.tsx index 3da34c1f23..de23b9b696 100644 --- a/webapp/src/components/App/Singlestudy/NavHeader/Details.tsx +++ b/webapp/src/components/App/Singlestudy/NavHeader/Details.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import ScheduleOutlinedIcon from "@mui/icons-material/ScheduleOutlined"; import UpdateOutlinedIcon from "@mui/icons-material/UpdateOutlined"; import AltRouteOutlinedIcon from "@mui/icons-material/AltRouteOutlined"; diff --git a/webapp/src/components/App/Singlestudy/NavHeader/index.tsx b/webapp/src/components/App/Singlestudy/NavHeader/index.tsx index 8518e8112e..4a0cc3acbd 100644 --- a/webapp/src/components/App/Singlestudy/NavHeader/index.tsx +++ b/webapp/src/components/App/Singlestudy/NavHeader/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useState, MouseEvent } from "react"; import debug from "debug"; import { useSnackbar } from "notistack"; diff --git a/webapp/src/components/App/Singlestudy/PropertiesDialog.tsx b/webapp/src/components/App/Singlestudy/PropertiesDialog.tsx index 30b345ee28..a3e6e150df 100644 --- a/webapp/src/components/App/Singlestudy/PropertiesDialog.tsx +++ b/webapp/src/components/App/Singlestudy/PropertiesDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import debug from "debug"; import * as R from "ramda"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Singlestudy/UpgradeDialog.tsx b/webapp/src/components/App/Singlestudy/UpgradeDialog.tsx index 7828d1b4c0..902eb53157 100644 --- a/webapp/src/components/App/Singlestudy/UpgradeDialog.tsx +++ b/webapp/src/components/App/Singlestudy/UpgradeDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import UpgradeIcon from "@mui/icons-material/Upgrade"; import { useMemo } from "react"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/Fields.tsx index d60eb0089f..6b1cc244e9 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/Fields.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box } from "@mui/material"; import { useTranslation } from "react-i18next"; import { useOutletContext } from "react-router"; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/index.tsx index cdb28df743..e01ef5240c 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useOutletContext } from "react-router"; import { useTranslation } from "react-i18next"; import { StudyMetadata } from "../../../../../../common/types"; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/utils.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/utils.ts index 4e869bba6c..3a5e4a7ebf 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { StudyMetadata } from "../../../../../../common/types"; import client from "../../../../../../services/api/client"; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/Fields.tsx index 8c2482b7f2..a3938a84f8 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/Fields.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box } from "@mui/material"; import { useTranslation } from "react-i18next"; import NumberFE from "../../../../../common/fieldEditors/NumberFE"; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/index.tsx index 0e8f90cd71..c43fe83d8c 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useOutletContext } from "react-router"; import { StudyMetadata } from "../../../../../../common/types"; import { updateStudySynthesis } from "../../../../../../redux/ducks/studySyntheses"; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/utils.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/utils.ts index 4a8b69e918..09a80e6031 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { DeepPartial } from "react-hook-form"; import { StudyMetadata } from "../../../../../../common/types"; import client from "../../../../../../services/api/client"; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/General/Fields.tsx index 3bd79f0c94..3570e5b1f0 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/Fields.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, Button, Divider } from "@mui/material"; import { useTranslation } from "react-i18next"; import SettingsIcon from "@mui/icons-material/Settings"; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/Table.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/Table.tsx index 4abd82eb73..53fb6d8b65 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/Table.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/Table.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useTranslation } from "react-i18next"; import TableForm from "../../../../../../../common/TableForm"; import { diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/index.tsx index e6499f591a..f9d1b9b98f 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { TabContext, TabList, TabListProps, TabPanel } from "@mui/lab"; import { Box, Button, Tab, Skeleton } from "@mui/material"; import { useState } from "react"; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/utils.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/utils.ts index d59661fe60..cbb1d02ca9 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { AxiosResponse } from "axios"; import { StudyMetadata } from "../../../../../../../../common/types"; import client from "../../../../../../../../services/api/client"; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/withAreas.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/withAreas.tsx index 2862d14c13..e9dc9434fd 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/withAreas.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/withAreas.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { ComponentType, useEffect, useMemo, useState } from "react"; import { Box } from "@mui/material"; import SplitView from "../../../../../../../common/SplitView"; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioPlaylistDialog/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioPlaylistDialog/index.tsx index 6edda44cfb..e1e056efb8 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioPlaylistDialog/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioPlaylistDialog/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, Button, Divider } from "@mui/material"; import { useRef } from "react"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioPlaylistDialog/utils.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioPlaylistDialog/utils.ts index d2098e2f4e..ce5a6c08cc 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioPlaylistDialog/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioPlaylistDialog/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { StudyMetadata } from "../../../../../../../../common/types"; import client from "../../../../../../../../services/api/client"; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/index.tsx index 182aad6bcc..bf0d6437b9 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Accordion, AccordionDetails, diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/utils.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/utils.ts index 61b29afa09..05b9d7ad5c 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import * as R from "ramda"; import { ThematicTrimmingConfig } from "../../../../../../../../services/api/studies/config/thematicTrimming/types"; import { O } from "ts-toolbelt"; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/General/index.tsx index 312abef7d6..172973c4cd 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useOutletContext } from "react-router"; import * as R from "ramda"; import { useState } from "react"; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/styles.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/General/styles.ts index db13197036..2f51a56de5 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/styles.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/styles.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { styled } from "@mui/material"; export const FieldWithButton = styled("div")(({ theme }) => ({ diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/utils.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/General/utils.ts index 41a9c218cf..a09888c463 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import * as R from "ramda"; import { StudyMetadata } from "../../../../../../common/types"; import client from "../../../../../../services/api/client"; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/Fields.tsx index 2686de44f9..902d0b2ad0 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/Fields.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box } from "@mui/material"; import { useTranslation } from "react-i18next"; import { StudyMetadata } from "../../../../../../common/types"; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/index.tsx index 081f190175..72b0ea49ff 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useOutletContext } from "react-router"; import { StudyMetadata } from "../../../../../../common/types"; import Form from "../../../../../common/Form"; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/utils.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/utils.ts index 7d0fbad5c9..833e148aa4 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import * as R from "ramda"; //////////////////////////////////////////////////////////////// diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/Fields.tsx index d62aeffbc3..c31ddf63b8 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/Fields.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Table, TableBody, diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/index.tsx index 045296b256..de302de896 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useOutletContext } from "react-router"; import { StudyMetadata } from "../../../../../../common/types"; import Form from "../../../../../common/Form"; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/utils.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/utils.ts index f962a46d86..6102660dd7 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { DeepPartial } from "react-hook-form"; import { StudyMetadata } from "../../../../../../common/types"; import client from "../../../../../../services/api/client"; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/index.tsx index 96bc285952..fd79248869 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import * as R from "ramda"; import { useMemo, useState } from "react"; import { useOutletContext } from "react-router"; diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Json.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Json.tsx index 3923ce319a..c68676aba0 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Json.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Json.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useState } from "react"; import { useTranslation } from "react-i18next"; import { AxiosError } from "axios"; diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx index c09b8c645f..9cf26fafca 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useOutletContext } from "react-router"; import { MatrixStats, StudyMetadata } from "../../../../../../common/types"; import { Root, Content } from "./style"; diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Text.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Text.tsx index 7f24d01f99..fa7fd3c366 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Text.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Text.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useState } from "react"; import { useTranslation } from "react-i18next"; import { Button } from "@mui/material"; diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Data/index.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Data/index.tsx index 0cb75a3eab..5b96956379 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Data/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Data/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import Text from "./Text"; import Json from "./Json"; import Matrix from "./Matrix"; diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Data/style.ts b/webapp/src/components/App/Singlestudy/explore/Debug/Data/style.ts index b0143fdec8..334251e5dc 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Data/style.ts +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Data/style.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { styled, Box, Paper } from "@mui/material"; export const Root = styled(Box)(({ theme }) => ({ diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/DebugContext.ts b/webapp/src/components/App/Singlestudy/explore/Debug/DebugContext.ts index c602e0e98f..66c94f01dd 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/DebugContext.ts +++ b/webapp/src/components/App/Singlestudy/explore/Debug/DebugContext.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { createContext, useContext } from "react"; import type { File } from "./utils"; import { voidFn } from "../../../../../utils/fnUtils"; diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Tree/FileTreeItem.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Tree/FileTreeItem.tsx index b9e40f6a3d..77fb7e7f6d 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Tree/FileTreeItem.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Tree/FileTreeItem.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box } from "@mui/material"; import { TreeItem } from "@mui/x-tree-view"; import { TreeData, determineFileType, getFileIcon } from "../utils"; diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Tree/index.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Tree/index.tsx index 577f388efb..a9e3aa0d1f 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Tree/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Tree/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { TreeView } from "@mui/x-tree-view"; import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; import ChevronRightIcon from "@mui/icons-material/ChevronRight"; diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/index.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/index.tsx index 1f6ae3cc2d..3b64991899 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; import { useOutletContext } from "react-router-dom"; diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/utils.ts b/webapp/src/components/App/Singlestudy/explore/Debug/utils.ts index a6e3798806..458b0ab2e8 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Debug/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import DataObjectIcon from "@mui/icons-material/DataObject"; import TextSnippetIcon from "@mui/icons-material/TextSnippet"; import FolderIcon from "@mui/icons-material/Folder"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreaPropsView.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreaPropsView.tsx index 0976bf3e36..67e9896b74 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreaPropsView.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreaPropsView.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useEffect, useState } from "react"; import { Area } from "../../../../../../common/types"; import PropertiesView from "../../../../../common/PropertiesView"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreasTab.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreasTab.tsx index 0bc26081dc..2ad02d1ff2 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreasTab.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreasTab.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useEffect, useMemo } from "react"; import { useLocation, useNavigate, useOutletContext } from "react-router-dom"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/AllocationField.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/AllocationField.tsx index 40b99c009a..708e5f14e7 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/AllocationField.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/AllocationField.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Typography, Grid } from "@mui/material"; import { t } from "i18next"; import { FieldArrayWithId } from "react-hook-form"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/Fields.tsx index e6ed81c9f6..6b70bf098b 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/Fields.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useFieldArray } from "react-hook-form"; import { useOutletContext } from "react-router"; import { useFormContextPlus } from "../../../../../../../common/Form"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/index.tsx index 4e12df8757..f452664caf 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Grid } from "@mui/material"; import { useOutletContext } from "react-router"; import { useState } from "react"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts index 5544255e52..d560ef223c 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { StudyMetadata, Area, diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/CorrelationField.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/CorrelationField.tsx index 98be0f2d7c..eea01c8876 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/CorrelationField.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/CorrelationField.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Typography, Grid } from "@mui/material"; import { FieldArrayWithId } from "react-hook-form"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/Fields.tsx index 6a45074fd7..e686e9ef4c 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/Fields.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useFieldArray } from "react-hook-form"; import { useOutletContext } from "react-router"; import { StudyMetadata } from "../../../../../../../../common/types"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/index.tsx index 631398ff0a..12a626b6fe 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Grid } from "@mui/material"; import { useOutletContext } from "react-router"; import { useState } from "react"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts index bd5e574389..fe79096e04 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { StudyMetadata, Area, diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx index 2a8796074c..b1bdbdd35f 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useOutletContext } from "react-router"; import { StudyMetadata } from "../../../../../../../common/types"; import useAppSelector from "../../../../../../../redux/hooks/useAppSelector"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrixDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrixDialog.tsx index 3a2a1fefd6..2085ed8174 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrixDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrixDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Button, Box } from "@mui/material"; import { useTranslation } from "react-i18next"; import BasicDialog, { diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/index.tsx index 79bef831a5..563d211aca 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useOutletContext } from "react-router"; import { StudyMetadata } from "../../../../../../../../common/types"; import useAppSelector from "../../../../../../../../redux/hooks/useAppSelector"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/utils.ts index e8fdc21be5..a66f43e037 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { type StudyMetadata } from "../../../../../../../../common/types"; import client from "../../../../../../../../services/api/client"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/Fields.tsx index fb8869a760..b3dc4759a4 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/Fields.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import NumberFE from "../../../../../../../common/fieldEditors/NumberFE"; import SelectFE from "../../../../../../../common/fieldEditors/SelectFE"; import SwitchFE from "../../../../../../../common/fieldEditors/SwitchFE"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/index.tsx index 1c1cd56489..d86e478758 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useOutletContext } from "react-router"; import { StudyMetadata } from "../../../../../../../../common/types"; import useAppSelector from "../../../../../../../../redux/hooks/useAppSelector"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/utils.ts index 1616fb3e92..5dc79fee53 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Area, StudyMetadata } from "../../../../../../../../common/types"; import client from "../../../../../../../../services/api/client"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/SplitHydroMatrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/SplitHydroMatrix.tsx index 6d64a3f378..e9d02d84c4 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/SplitHydroMatrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/SplitHydroMatrix.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box } from "@mui/material"; import SplitView, { SplitViewProps } from "../../../../../../common/SplitView"; import HydroMatrix from "./HydroMatrix"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ViewMatrixButton.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ViewMatrixButton.tsx index 89e5bb7c14..6be2da1159 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ViewMatrixButton.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ViewMatrixButton.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Button } from "@mui/material"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/hooks/useAreasOptions.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/hooks/useAreasOptions.ts index 4678358d00..0c71e9b3a2 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/hooks/useAreasOptions.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/hooks/useAreasOptions.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useMemo } from "react"; import { useOutletContext } from "react-router"; import { StudyMetadata } from "../../../../../../../../common/types"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/index.tsx index cca7f9519a..f5d01248f6 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useMemo } from "react"; import { useOutletContext } from "react-router"; import { StudyMetadata } from "../../../../../../../common/types"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/style.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/style.ts index 84ff8c71fe..9c522b6ef0 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/style.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/style.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { styled, Box, Paper } from "@mui/material"; export const Root = styled(Box)(({ theme }) => ({ diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts index 7b4878aa73..7e1669b91a 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { MatrixStats, MatrixType } from "../../../../../../../common/types"; import { SplitViewProps } from "../../../../../../common/SplitView"; import { getAllocationMatrix } from "./Allocation/utils"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx index 0271e3b5a8..feca1d59b6 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../redux/selectors"; import Matrix from "../../../../../common/MatrixGrid/Matrix"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx index f1c41d6344..6070afebe6 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useOutletContext } from "react-router"; import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../redux/selectors"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/Fields.tsx index 01a98538be..5432c2dfc5 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/Fields.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useTranslation } from "react-i18next"; import { useOutletContext } from "react-router"; import { useMemo } from "react"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/index.tsx index 3efe409b9e..ab56ff55bd 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Paper } from "@mui/material"; import { useOutletContext } from "react-router"; import { StudyMetadata } from "../../../../../../../common/types"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/utils.ts index 1abe75682a..a87302e267 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + //////////////////////////////////////////////////////////////// // Enums //////////////////////////////////////////////////////////////// diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Fields.tsx index 7b7ea9774c..3b44702a53 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Fields.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useTranslation } from "react-i18next"; import NumberFE from "../../../../../../common/fieldEditors/NumberFE"; import SelectFE from "../../../../../../common/fieldEditors/SelectFE"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Form.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Form.tsx index fe39be2fc8..ff3d7b187f 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Form.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Form.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useCallback } from "react"; import { Box, Button } from "@mui/material"; import { useParams, useOutletContext, useNavigate } from "react-router-dom"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Matrix.tsx index 0a3e269c85..0ab412fb81 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Matrix.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import * as React from "react"; import Tabs from "@mui/material/Tabs"; import Tab from "@mui/material/Tab"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/index.tsx index 97637987d3..2a95c23ce1 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useMemo, useState } from "react"; import { createMRTColumnHelper } from "material-react-table"; import { Box } from "@mui/material"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/utils.ts index 0c0418d8d3..0699253549 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Area, Cluster, diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Reserve.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Reserve.tsx index 1e45906346..5057118c00 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Reserve.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Reserve.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useOutletContext } from "react-router"; import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../redux/selectors"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Solar.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Solar.tsx index 5e03558b39..22eece2602 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Solar.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Solar.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useOutletContext } from "react-router"; import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../redux/selectors"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Fields.tsx index 13af55156e..ce73ceac8b 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Fields.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useTranslation } from "react-i18next"; import { Box, Tooltip } from "@mui/material"; import NumberFE from "../../../../../../common/fieldEditors/NumberFE"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Form.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Form.tsx index 38a4bb2bc2..4bfd611b9c 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Form.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Form.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useCallback } from "react"; import { Box, Button } from "@mui/material"; import { useParams, useOutletContext, useNavigate } from "react-router-dom"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Matrix.tsx index 63ff535498..70dc2f8dc0 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Matrix.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import * as React from "react"; import * as R from "ramda"; import Tabs from "@mui/material/Tabs"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/index.tsx index 6c19931d74..f99fdaa221 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; import { createMRTColumnHelper } from "material-react-table"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/utils.ts index 04864fdc97..ccdc0dfd42 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { StudyMetadata, Area } from "../../../../../../../common/types"; import client from "../../../../../../../services/api/client"; import type { PartialExceptFor } from "../../../../../../../utils/tsUtils"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Fields.tsx index 7f026c3c72..bd6d0f7257 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Fields.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useTranslation } from "react-i18next"; import { useOutletContext } from "react-router"; import { StudyMetadata } from "../../../../../../../common/types"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Form.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Form.tsx index e37f4749dd..80e0b119ae 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Form.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Form.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useCallback } from "react"; import { Box, Button } from "@mui/material"; import { useParams, useOutletContext, useNavigate } from "react-router-dom"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Matrix.tsx index 7b703cc3f5..63421020b1 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Matrix.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useMemo, useState } from "react"; import Tabs from "@mui/material/Tabs"; import Tab from "@mui/material/Tab"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/index.tsx index 3a7cfd6801..e67e2fa175 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useMemo, useState } from "react"; import { createMRTColumnHelper } from "material-react-table"; import { Box } from "@mui/material"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/utils.ts index b5b0526ded..c14b57eb37 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Area, Cluster, diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Wind.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Wind.tsx index 61298c83ce..35e2bbc781 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Wind.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Wind.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useOutletContext } from "react-router"; import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../redux/selectors"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/common/clustersUtils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/common/clustersUtils.ts index 3d5c80dd30..b84054ccbe 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/common/clustersUtils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/common/clustersUtils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { MRT_AggregationFn } from "material-react-table"; import { ThermalClusterWithCapacity } from "../Thermal/utils"; import { RenewableClusterWithCapacity } from "../Renewables/utils"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/index.tsx index be71efeb87..637b456f74 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useOutletContext } from "react-router"; import { StudyMetadata } from "../../../../../../common/types"; import EmptyView from "../../../../../common/page/SimpleContent"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/style.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/style.ts index ba2de46bd6..c5ccf2ee73 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/style.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/style.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { styled, Box } from "@mui/material"; export const Root = styled(Box)(({ theme }) => ({ diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/AddDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/AddDialog.tsx index 6891123b8c..d87d6273d9 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/AddDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/AddDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useMemo } from "react"; import { Box } from "@mui/material"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstPropsView.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstPropsView.tsx index 86269f33c6..6564204701 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstPropsView.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstPropsView.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useEffect, useMemo, useState } from "react"; import PropertiesView from "../../../../../common/PropertiesView"; import ListElement from "../../common/ListElement"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/AddConstraintTermForm/OptionsList.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/AddConstraintTermForm/OptionsList.tsx index ec6c8bc91b..3a640fa608 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/AddConstraintTermForm/OptionsList.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/AddConstraintTermForm/OptionsList.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useEffect } from "react"; import { useTranslation } from "react-i18next"; import { useFormContext } from "react-hook-form"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/AddConstraintTermForm/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/AddConstraintTermForm/index.tsx index 4290b3e599..71940c4556 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/AddConstraintTermForm/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/AddConstraintTermForm/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useState } from "react"; import { Box, Button, Typography } from "@mui/material"; import AddCircleOutlineRoundedIcon from "@mui/icons-material/AddCircleOutlineRounded"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/index.tsx index f6a5d6ed59..b0ae6e8c15 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { AxiosError } from "axios"; import { useTranslation } from "react-i18next"; import { useSnackbar } from "notistack"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/BindingConstForm.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/BindingConstForm.tsx index a28a2644fc..d658f620a6 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/BindingConstForm.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/BindingConstForm.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { AxiosError } from "axios"; import { useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintFields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintFields.tsx index 7677a78c4f..1cc6d4580e 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintFields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintFields.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { BindingConstraint, OPERATORS, diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintTerm/OptionsList.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintTerm/OptionsList.tsx index 3927abadbd..209aa979e1 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintTerm/OptionsList.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintTerm/OptionsList.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useMemo } from "react"; import { useTranslation } from "react-i18next"; import { AllClustersAndLinks } from "../../../../../../../../common/types"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintTerm/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintTerm/index.tsx index 48b2886008..c2eaa09eee 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintTerm/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintTerm/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { ChangeEvent, useMemo, useState } from "react"; import { Box, Button, TextField, Typography } from "@mui/material"; import AddCircleOutlineRoundedIcon from "@mui/icons-material/AddCircleOutlineRounded"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/Matrix.tsx index ba9776cd1b..356edfdbb9 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/Matrix.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useTranslation } from "react-i18next"; import { MatrixStats, StudyMetadata } from "../../../../../../../common/types"; import MatrixInput from "../../../../../../common/MatrixInput"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/ConstraintElement.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/ConstraintElement.tsx index 02b104c14f..abecf943c6 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/ConstraintElement.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/ConstraintElement.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { FormControlLabel, Switch, Typography } from "@mui/material"; import { ReactNode } from "react"; import { ConstraintElementData, ConstraintElementRoot } from "./style"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/OffsetInput.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/OffsetInput.tsx index c2e7715f7b..d3e2771076 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/OffsetInput.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/OffsetInput.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import HighlightOffIcon from "@mui/icons-material/HighlightOff"; import { Box } from "@mui/material"; import { PropsWithChildren } from "react"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/style.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/style.ts index f413ceb412..d43c23db2e 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/style.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/style.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, Paper, styled } from "@mui/material"; export const ConstraintElementRoot = styled(Paper)(({ theme }) => ({ diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/index.tsx index 43dd656e8a..795f8e8cd6 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { BindingConstraint } from "./utils"; import { Box, Button, Paper, Skeleton } from "@mui/material"; import Form from "../../../../../../common/Form"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/utils.ts index 2c6bcdb00d..bf865e44b4 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + //////////////////////////////////////////////////////////////// // Constants //////////////////////////////////////////////////////////////// diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/index.tsx index f4348d786c..5b52cf0ec7 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box } from "@mui/material"; import { useOutletContext } from "react-router"; import { StudyMetadata } from "../../../../../../common/types"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkPropsView.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkPropsView.tsx index 8ae6564e26..fbdaa32cf3 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkPropsView.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkPropsView.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useEffect, useState } from "react"; import PropertiesView from "../../../../../common/PropertiesView"; import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkForm.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkForm.tsx index 039c2d8478..50d0a66947 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkForm.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkForm.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box } from "@mui/material"; import { AxiosError } from "axios"; import { useMemo } from "react"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkMatrixView.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkMatrixView.tsx index 2a2a792b47..9aede084fd 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkMatrixView.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkMatrixView.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import * as React from "react"; import { Divider, styled } from "@mui/material"; import Tabs from "@mui/material/Tabs"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/index.tsx index b2cf965232..f3cfaeb260 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useOutletContext } from "react-router"; import { LinkElement, StudyMetadata } from "../../../../../../../common/types"; import usePromise from "../../../../../../../hooks/usePromise"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/utils.ts index 19d6bcd4fc..1dcb581ec0 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { FieldValues } from "react-hook-form"; import { getStudyData } from "../../../../../../../services/api/study"; import { FilteringType } from "../../../common/types"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/index.tsx index fdc2a487c9..555c67f187 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useOutletContext } from "react-router"; import { StudyMetadata } from "../../../../../../common/types"; import EmptyView from "../../../../../common/page/SimpleContent"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaConfig.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaConfig.tsx index 9faac8b9ac..814d6ef975 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaConfig.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaConfig.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useEffect, useState } from "react"; import { ColorResult, MaterialPicker } from "react-color"; import { Box, TextField, Divider } from "@mui/material"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaLink.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaLink.tsx index 884ea1b280..b534b59b02 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaLink.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaLink.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useTranslation } from "react-i18next"; import { LinkElement } from "../../../../../../../common/types"; import { diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaLinks.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaLinks.tsx index 62ffb760a8..83828059dc 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaLinks.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaLinks.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useTranslation } from "react-i18next"; import { useOutletContext } from "react-router-dom"; import { StudyMetadata } from "../../../../../../../common/types"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/DeleteAreaDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/DeleteAreaDialog.tsx index 40d37b520f..458f0ad049 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/DeleteAreaDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/DeleteAreaDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, Button, Typography } from "@mui/material"; import { AxiosError } from "axios"; import { useState } from "react"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/index.tsx index a605bd9247..e3e05ebfbc 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useEffect, useState } from "react"; import { useOutletContext } from "react-router-dom"; import { StudyMetadata, UpdateAreaUi } from "../../../../../../../common/types"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/style.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/style.ts index 58b439392b..3fb0c402eb 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/style.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/style.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { styled, Box } from "@mui/material"; import { HuePicker } from "react-color"; import DeleteIcon from "@mui/icons-material/Delete"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/CreateAreaDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/CreateAreaDialog.tsx index 0233fd313c..b4b2472534 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/CreateAreaDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/CreateAreaDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useTranslation } from "react-i18next"; import AddCircleIcon from "@mui/icons-material/AddCircle"; import FormDialog from "../../../../../common/dialogs/FormDialog"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/CreateDistrictDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/CreateDistrictDialog.tsx index f8b4191ac2..8099d07ad1 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/CreateDistrictDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/CreateDistrictDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useTranslation } from "react-i18next"; import AddCircleIcon from "@mui/icons-material/AddCircle"; import { useOutletContext } from "react-router"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/UpdateDistrictDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/UpdateDistrictDialog.tsx index d99e37fc91..43ab5eb97b 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/UpdateDistrictDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/UpdateDistrictDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useTranslation } from "react-i18next"; import { useOutletContext } from "react-router"; import { Delete, Edit } from "@mui/icons-material"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/index.tsx index 901f6f3dec..7f1c80f53d 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, Button } from "@mui/material"; import { useMemo, useState } from "react"; import { useOutletContext } from "react-router"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/CreateLayerDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/CreateLayerDialog.tsx index 46c01c2b45..2b04b22efa 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/CreateLayerDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/CreateLayerDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useTranslation } from "react-i18next"; import AddCircleIcon from "@mui/icons-material/AddCircle"; import { useOutletContext } from "react-router"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/UpdateLayerDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/UpdateLayerDialog.tsx index aa1c97b4eb..1daf4b5cab 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/UpdateLayerDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/UpdateLayerDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useTranslation } from "react-i18next"; import { useOutletContext } from "react-router"; import { Delete, Edit } from "@mui/icons-material"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/index.tsx index 84ad34f15c..cda4b98626 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, Button } from "@mui/material"; import { useMemo, useState } from "react"; import { useOutletContext } from "react-router"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/index.tsx index 9e3a23f083..c88cc1349b 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, Button, Tab } from "@mui/material"; import ArrowBackIcon from "@mui/icons-material/ArrowBack"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapControlButtons.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapControlButtons.tsx index da11175123..a375310fd9 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapControlButtons.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapControlButtons.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import Button from "@mui/material/Button"; import ButtonGroup from "@mui/material/ButtonGroup"; import SettingsIcon from "@mui/icons-material/Settings"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapGraph.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapGraph.tsx index 7991a612f6..be1f7672c8 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapGraph.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapGraph.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { AxiosError } from "axios"; import { DebouncedFunc } from "lodash"; import { RefObject, useEffect, useState } from "react"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapHeader.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapHeader.tsx index 8824b7a3f1..495e5f957e 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapHeader.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapHeader.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, Chip, Typography } from "@mui/material"; import { useTranslation } from "react-i18next"; import { LinkProperties } from "../../../../../../common/types"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Node.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Node.tsx index cd2775308a..773a5abab3 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Node.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Node.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import AddLinkIcon from "@mui/icons-material/AddLink"; import { StudyMapNode } from "../../../../../../redux/ducks/studyMaps"; import { NodeContainer, NodeDefault, NodeHighlighted } from "./style"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/index.tsx index ac02d2ded0..5d7ef59084 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useEffect, useMemo, useRef, useState } from "react"; import { useOutletContext } from "react-router-dom"; import AutoSizer from "react-virtualized-auto-sizer"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/style.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/style.ts index ca4a986c01..72cc1548a8 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/style.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/style.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { styled, Box, Chip } from "@mui/material"; import mapbackground from "../../../../../../assets/img/mapbackground.png"; import { getTextColor, RGB } from "./utils"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/utils.ts index 1117d461a5..fd46f15a4c 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useMemo } from "react"; import { StudyLayer } from "../../../../../../common/types"; import { StudyMapNode } from "../../../../../../redux/ducks/studyMaps"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/index.tsx index 435d8b59c2..454ed7bc54 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useEffect, useMemo } from "react"; import { useNavigate, useOutletContext, useParams } from "react-router-dom"; import { Box } from "@mui/material"; diff --git a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx index daa10520c2..6951d3fb07 100644 --- a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, Skeleton, diff --git a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/utils.ts b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/utils.ts index cba62478c8..c63ede4ba8 100644 --- a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Area, LinkElement, Simulation } from "../../../../../../common/types"; export enum OutputItemType { diff --git a/webapp/src/components/App/Singlestudy/explore/Results/index.tsx b/webapp/src/components/App/Singlestudy/explore/Results/index.tsx index fa760c41ad..cbbcf0fb47 100644 --- a/webapp/src/components/App/Singlestudy/explore/Results/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Results/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, CircularProgress, diff --git a/webapp/src/components/App/Singlestudy/explore/TabWrapper.tsx b/webapp/src/components/App/Singlestudy/explore/TabWrapper.tsx index 3f04932134..46c9a63f04 100644 --- a/webapp/src/components/App/Singlestudy/explore/TabWrapper.tsx +++ b/webapp/src/components/App/Singlestudy/explore/TabWrapper.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useEffect, useState } from "react"; import * as React from "react"; import { styled, SxProps, Theme } from "@mui/material"; diff --git a/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/CreateTemplateTableDialog.tsx b/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/CreateTemplateTableDialog.tsx index 9e5c223f6f..2dcff5fe43 100644 --- a/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/CreateTemplateTableDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/CreateTemplateTableDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useTranslation } from "react-i18next"; import AddCircleIcon from "@mui/icons-material/AddCircle"; import { createTableTemplate, type TableTemplate } from "../utils"; diff --git a/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/TableTemplateFormDialog.tsx b/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/TableTemplateFormDialog.tsx index 0b49e7335c..fe19ba810d 100644 --- a/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/TableTemplateFormDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/TableTemplateFormDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box } from "@mui/material"; import { startCase } from "lodash"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/UpdateTemplateTableDialog.tsx b/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/UpdateTemplateTableDialog.tsx index ba8569d0a3..84d9d4f123 100644 --- a/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/UpdateTemplateTableDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/UpdateTemplateTableDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useTranslation } from "react-i18next"; import EditIcon from "@mui/icons-material/Edit"; import TableTemplateFormDialog, { diff --git a/webapp/src/components/App/Singlestudy/explore/TableModeList/index.tsx b/webapp/src/components/App/Singlestudy/explore/TableModeList/index.tsx index 161fe55c2f..3316ce9b50 100644 --- a/webapp/src/components/App/Singlestudy/explore/TableModeList/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/TableModeList/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useState } from "react"; import { MenuItem } from "@mui/material"; import { useOutletContext } from "react-router"; diff --git a/webapp/src/components/App/Singlestudy/explore/TableModeList/utils.ts b/webapp/src/components/App/Singlestudy/explore/TableModeList/utils.ts index e09d068ab2..6294baa905 100644 --- a/webapp/src/components/App/Singlestudy/explore/TableModeList/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/TableModeList/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { v4 as uuidv4 } from "uuid"; import { TableModeColumnsForType, diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/CandidateForm.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/CandidateForm.tsx index f2bdb8c89f..90a3e9c993 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/CandidateForm.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/CandidateForm.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useState, useEffect } from "react"; import { Box, diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/CreateCandidateDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/CreateCandidateDialog.tsx index eca88218e4..358c662c7f 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/CreateCandidateDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/CreateCandidateDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useMemo, useState } from "react"; import { Button, ButtonGroup } from "@mui/material"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/XpansionPropsView.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/XpansionPropsView.tsx index c2bd1f5b70..1816645386 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/XpansionPropsView.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/XpansionPropsView.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useCallback, useEffect, useState } from "react"; import { Box, Button } from "@mui/material"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/index.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/index.tsx index 42e7307f1d..b455c0dd09 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useState } from "react"; import { useOutletContext, useNavigate } from "react-router-dom"; import { AxiosError } from "axios"; diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/Capacities.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/Capacities.tsx index cf56870b35..1a4077b47a 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/Capacities.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/Capacities.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { getAllCapacities, deleteCapacity, diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/Constraints.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/Constraints.tsx index 65af583a90..1dddebfb1c 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/Constraints.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/Constraints.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { getAllConstraints, deleteConstraints, diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/FileList.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/FileList.tsx index 2c80263fa8..c27f972b36 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/FileList.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/FileList.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useState } from "react"; import { useOutletContext } from "react-router-dom"; import { AxiosError } from "axios"; diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/Settings/SettingsForm.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/Settings/SettingsForm.tsx index 8a7298e2e5..2084eaca5a 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/Settings/SettingsForm.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/Settings/SettingsForm.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useState, useEffect } from "react"; import { Box, Divider, Typography, Button, TextField } from "@mui/material"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/Settings/index.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/Settings/index.tsx index aee2c9f4c7..3c363b4263 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/Settings/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/Settings/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useState } from "react"; import { useOutletContext } from "react-router-dom"; import { AxiosError } from "axios"; diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/Weights.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/Weights.tsx index 83d3693f98..a8bded4638 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/Weights.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/Weights.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { addWeight, deleteWeight, diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/index.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/index.tsx index e242532f23..a9d8293aad 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + /* eslint-disable react-hooks/exhaustive-deps */ import { useEffect, useMemo, useState } from "react"; import { AxiosError } from "axios"; diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/share/styles.ts b/webapp/src/components/App/Singlestudy/explore/Xpansion/share/styles.ts index 864b9e084a..1140da4900 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/share/styles.ts +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/share/styles.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, Typography, Button, styled } from "@mui/material"; import VisibilityIcon from "@mui/icons-material/Visibility"; import DeleteIcon from "@mui/icons-material/Delete"; diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/types.ts b/webapp/src/components/App/Singlestudy/explore/Xpansion/types.ts index b8e7a39888..7a92ec5a87 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/types.ts +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/types.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + export interface XpansionSensitivitySettings { epsilon: number; capex: boolean; diff --git a/webapp/src/components/App/Singlestudy/explore/common/ListElement.tsx b/webapp/src/components/App/Singlestudy/explore/common/ListElement.tsx index 4292cd7324..7afb1fcac1 100644 --- a/webapp/src/components/App/Singlestudy/explore/common/ListElement.tsx +++ b/webapp/src/components/App/Singlestudy/explore/common/ListElement.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, ListItemButton, diff --git a/webapp/src/components/App/Singlestudy/explore/common/OutputFilters.tsx b/webapp/src/components/App/Singlestudy/explore/common/OutputFilters.tsx index 046ada24c3..d44c62bbbc 100644 --- a/webapp/src/components/App/Singlestudy/explore/common/OutputFilters.tsx +++ b/webapp/src/components/App/Singlestudy/explore/common/OutputFilters.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useMemo } from "react"; import { FieldPath } from "react-hook-form"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Singlestudy/explore/common/types.ts b/webapp/src/components/App/Singlestudy/explore/common/types.ts index 7dbbc82e08..5a24dfa66f 100644 --- a/webapp/src/components/App/Singlestudy/explore/common/types.ts +++ b/webapp/src/components/App/Singlestudy/explore/common/types.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + export type FilteringType = | "hourly" | "daily" diff --git a/webapp/src/components/App/Singlestudy/index.tsx b/webapp/src/components/App/Singlestudy/index.tsx index 1900d81cfb..047526b274 100644 --- a/webapp/src/components/App/Singlestudy/index.tsx +++ b/webapp/src/components/App/Singlestudy/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + /* eslint-disable react-hooks/exhaustive-deps */ import { useEffect, useCallback, useMemo, useState } from "react"; import { useParams } from "react-router-dom"; diff --git a/webapp/src/components/App/Studies/BatchModeMenu.tsx b/webapp/src/components/App/Studies/BatchModeMenu.tsx index c7bdf92e28..5eca4ce1a3 100644 --- a/webapp/src/components/App/Studies/BatchModeMenu.tsx +++ b/webapp/src/components/App/Studies/BatchModeMenu.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import BoltIcon from "@mui/icons-material/Bolt"; import { Box, Button, IconButton, Tooltip } from "@mui/material"; import { t } from "i18next"; diff --git a/webapp/src/components/App/Studies/CreateStudyDialog.tsx b/webapp/src/components/App/Studies/CreateStudyDialog.tsx index 97ef0399cf..8e95ab9257 100644 --- a/webapp/src/components/App/Studies/CreateStudyDialog.tsx +++ b/webapp/src/components/App/Studies/CreateStudyDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import debug from "debug"; import { useSnackbar } from "notistack"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/MultipleLinkElement/index.tsx b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/MultipleLinkElement/index.tsx index 446bef67a9..a9be97fbf5 100644 --- a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/MultipleLinkElement/index.tsx +++ b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/MultipleLinkElement/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, Chip, ListItem } from "@mui/material"; import { useState } from "react"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/MultipleLinkElement/style.ts b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/MultipleLinkElement/style.ts index 7feae7fb79..94c030e673 100644 --- a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/MultipleLinkElement/style.ts +++ b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/MultipleLinkElement/style.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, List, styled } from "@mui/material"; export const Root = styled(Box)(({ theme }) => ({ diff --git a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/SingleLinkElement/index.tsx b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/SingleLinkElement/index.tsx index 0cef1d0190..8458c975e6 100644 --- a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/SingleLinkElement/index.tsx +++ b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/SingleLinkElement/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, TextField } from "@mui/material"; import { useState } from "react"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/SingleLinkElement/style.ts b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/SingleLinkElement/style.ts index f964d5e250..c077d84fff 100644 --- a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/SingleLinkElement/style.ts +++ b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/SingleLinkElement/style.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, styled } from "@mui/material"; export const Root = styled(Box)(({ theme }) => ({ diff --git a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/index.tsx b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/index.tsx index cffc673c9e..2d76e252fd 100644 --- a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/index.tsx +++ b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import { TextField } from "@mui/material"; diff --git a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/style.ts b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/style.ts index 48549e3035..08186f67af 100644 --- a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/style.ts +++ b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/style.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, styled } from "@mui/material"; export const Root = styled(Box)(({ theme }) => ({ diff --git a/webapp/src/components/App/Studies/ExportModal/ExportFilter/TagSelect/index.tsx b/webapp/src/components/App/Studies/ExportModal/ExportFilter/TagSelect/index.tsx index ba4d1bca14..310dd8d2d8 100644 --- a/webapp/src/components/App/Studies/ExportModal/ExportFilter/TagSelect/index.tsx +++ b/webapp/src/components/App/Studies/ExportModal/ExportFilter/TagSelect/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useState } from "react"; import { Chip, ListItem, TextField } from "@mui/material"; import { AddIcon, InputContainer, Root, TagContainer } from "./style"; diff --git a/webapp/src/components/App/Studies/ExportModal/ExportFilter/TagSelect/style.ts b/webapp/src/components/App/Studies/ExportModal/ExportFilter/TagSelect/style.ts index dae66af295..22cf6667c9 100644 --- a/webapp/src/components/App/Studies/ExportModal/ExportFilter/TagSelect/style.ts +++ b/webapp/src/components/App/Studies/ExportModal/ExportFilter/TagSelect/style.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, List, styled } from "@mui/material"; import AddCircleOutlinedIcon from "@mui/icons-material/AddCircleOutlined"; diff --git a/webapp/src/components/App/Studies/ExportModal/ExportFilter/index.tsx b/webapp/src/components/App/Studies/ExportModal/ExportFilter/index.tsx index e7a7fc9e85..bbfb43d893 100644 --- a/webapp/src/components/App/Studies/ExportModal/ExportFilter/index.tsx +++ b/webapp/src/components/App/Studies/ExportModal/ExportFilter/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import _ from "lodash"; diff --git a/webapp/src/components/App/Studies/ExportModal/index.tsx b/webapp/src/components/App/Studies/ExportModal/index.tsx index aa0805437f..58ba26da72 100644 --- a/webapp/src/components/App/Studies/ExportModal/index.tsx +++ b/webapp/src/components/App/Studies/ExportModal/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { ReactNode, useEffect, useState } from "react"; import * as R from "ramda"; import { AxiosError } from "axios"; diff --git a/webapp/src/components/App/Studies/FilterDrawer.tsx b/webapp/src/components/App/Studies/FilterDrawer.tsx index 5a613d7a6a..7ea53ba926 100644 --- a/webapp/src/components/App/Studies/FilterDrawer.tsx +++ b/webapp/src/components/App/Studies/FilterDrawer.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useTranslation } from "react-i18next"; import Box from "@mui/material/Box"; import Toolbar from "@mui/material/Toolbar"; diff --git a/webapp/src/components/App/Studies/HeaderBottom.tsx b/webapp/src/components/App/Studies/HeaderBottom.tsx index da107facd7..bac3d5fa01 100644 --- a/webapp/src/components/App/Studies/HeaderBottom.tsx +++ b/webapp/src/components/App/Studies/HeaderBottom.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, Button, Chip, Divider } from "@mui/material"; import { useTranslation } from "react-i18next"; import { indigo, purple } from "@mui/material/colors"; diff --git a/webapp/src/components/App/Studies/HeaderTopRight.tsx b/webapp/src/components/App/Studies/HeaderTopRight.tsx index 86b5228758..6290be11eb 100644 --- a/webapp/src/components/App/Studies/HeaderTopRight.tsx +++ b/webapp/src/components/App/Studies/HeaderTopRight.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Button } from "@mui/material"; import { useState } from "react"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Studies/LauncherDialog.tsx b/webapp/src/components/App/Studies/LauncherDialog.tsx index 670cb54cdc..92b24e1dce 100644 --- a/webapp/src/components/App/Studies/LauncherDialog.tsx +++ b/webapp/src/components/App/Studies/LauncherDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useState } from "react"; import { Box, diff --git a/webapp/src/components/App/Studies/MoveStudyDialog.tsx b/webapp/src/components/App/Studies/MoveStudyDialog.tsx index e451c31215..d0e4f833fc 100644 --- a/webapp/src/components/App/Studies/MoveStudyDialog.tsx +++ b/webapp/src/components/App/Studies/MoveStudyDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { DialogProps } from "@mui/material"; import TextField from "@mui/material/TextField"; import { useSnackbar } from "notistack"; diff --git a/webapp/src/components/App/Studies/RefreshButton.tsx b/webapp/src/components/App/Studies/RefreshButton.tsx index 122ab202bb..b595463998 100644 --- a/webapp/src/components/App/Studies/RefreshButton.tsx +++ b/webapp/src/components/App/Studies/RefreshButton.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Button, Tooltip } from "@mui/material"; import RefreshIcon from "@mui/icons-material/Refresh"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Studies/SideNav.tsx b/webapp/src/components/App/Studies/SideNav.tsx index d1e2f7ac38..19551f7487 100644 --- a/webapp/src/components/App/Studies/SideNav.tsx +++ b/webapp/src/components/App/Studies/SideNav.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useNavigate } from "react-router"; import { Box, Typography, List, ListItem, ListItemText } from "@mui/material"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Studies/StudiesList/StudyCardCell.tsx b/webapp/src/components/App/Studies/StudiesList/StudyCardCell.tsx index cf5dd75955..e3ce4e7eb1 100644 --- a/webapp/src/components/App/Studies/StudiesList/StudyCardCell.tsx +++ b/webapp/src/components/App/Studies/StudiesList/StudyCardCell.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { memo } from "react"; import { Box, Skeleton } from "@mui/material"; import { GridChildComponentProps, areEqual } from "react-window"; diff --git a/webapp/src/components/App/Studies/StudiesList/index.tsx b/webapp/src/components/App/Studies/StudiesList/index.tsx index 65c8befbf9..ef7d5ad077 100644 --- a/webapp/src/components/App/Studies/StudiesList/index.tsx +++ b/webapp/src/components/App/Studies/StudiesList/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { Box, diff --git a/webapp/src/components/App/Studies/StudyCard.tsx b/webapp/src/components/App/Studies/StudyCard.tsx index 4df2222511..19d60ffe3e 100644 --- a/webapp/src/components/App/Studies/StudyCard.tsx +++ b/webapp/src/components/App/Studies/StudyCard.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { memo, useState } from "react"; import { NavLink, useNavigate } from "react-router-dom"; import { AxiosError } from "axios"; diff --git a/webapp/src/components/App/Studies/StudyTree.tsx b/webapp/src/components/App/Studies/StudyTree.tsx index e4876e8790..bd44edcae0 100644 --- a/webapp/src/components/App/Studies/StudyTree.tsx +++ b/webapp/src/components/App/Studies/StudyTree.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useCallback, Fragment } from "react"; import { Typography } from "@mui/material"; import TreeView from "@mui/lab/TreeView"; diff --git a/webapp/src/components/App/Studies/index.tsx b/webapp/src/components/App/Studies/index.tsx index c0ac35eac9..cf194aec46 100644 --- a/webapp/src/components/App/Studies/index.tsx +++ b/webapp/src/components/App/Studies/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useState } from "react"; import { Box, Divider } from "@mui/material"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Studies/utils.ts b/webapp/src/components/App/Studies/utils.ts index 9da96074a5..ddb62d3c7a 100644 --- a/webapp/src/components/App/Studies/utils.ts +++ b/webapp/src/components/App/Studies/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { StudyMetadata } from "../../../common/types"; export interface StudyTreeNode { diff --git a/webapp/src/components/App/Tasks/JobTableView.tsx b/webapp/src/components/App/Tasks/JobTableView.tsx index 506c95762e..66e2ba2385 100644 --- a/webapp/src/components/App/Tasks/JobTableView.tsx +++ b/webapp/src/components/App/Tasks/JobTableView.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useCallback, useEffect, useState } from "react"; import moment from "moment"; import { diff --git a/webapp/src/components/App/Tasks/LaunchJobLogView.tsx b/webapp/src/components/App/Tasks/LaunchJobLogView.tsx index 0fc2869005..5a7062195e 100644 --- a/webapp/src/components/App/Tasks/LaunchJobLogView.tsx +++ b/webapp/src/components/App/Tasks/LaunchJobLogView.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useState } from "react"; import { AxiosError } from "axios"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/App/Tasks/NotificationBadge.tsx b/webapp/src/components/App/Tasks/NotificationBadge.tsx index 6a7715fa98..e9c7b76ce8 100644 --- a/webapp/src/components/App/Tasks/NotificationBadge.tsx +++ b/webapp/src/components/App/Tasks/NotificationBadge.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { ReactNode, useCallback, useEffect, useRef } from "react"; import debug from "debug"; import { Box, Typography } from "@mui/material"; diff --git a/webapp/src/components/App/Tasks/index.tsx b/webapp/src/components/App/Tasks/index.tsx index 11c8a7f525..467730bbd2 100644 --- a/webapp/src/components/App/Tasks/index.tsx +++ b/webapp/src/components/App/Tasks/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + /* eslint-disable react-hooks/exhaustive-deps */ import { useState, useEffect, useMemo } from "react"; import { AxiosError } from "axios"; diff --git a/webapp/src/components/App/index.tsx b/webapp/src/components/App/index.tsx index 35e1714e09..39b3865486 100644 --- a/webapp/src/components/App/index.tsx +++ b/webapp/src/components/App/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { BrowserRouter as Router, Navigate, diff --git a/webapp/src/components/common/ButtonBack.tsx b/webapp/src/components/common/ButtonBack.tsx index 0af4de5418..d4e181fdfe 100644 --- a/webapp/src/components/common/ButtonBack.tsx +++ b/webapp/src/components/common/ButtonBack.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, Button } from "@mui/material"; import ArrowBackIcon from "@mui/icons-material/ArrowBack"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/common/DocLink.tsx b/webapp/src/components/common/DocLink.tsx index aa2e811fc9..19861f9484 100644 --- a/webapp/src/components/common/DocLink.tsx +++ b/webapp/src/components/common/DocLink.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Help } from "@mui/icons-material"; import { Tooltip, IconButton, SxProps, Theme } from "@mui/material"; diff --git a/webapp/src/components/common/DownloadLink.tsx b/webapp/src/components/common/DownloadLink.tsx index ec67f0b674..8e0fa39333 100644 --- a/webapp/src/components/common/DownloadLink.tsx +++ b/webapp/src/components/common/DownloadLink.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { IconButton, Tooltip } from "@mui/material"; import { ReactElement } from "react"; import { refresh } from "../../redux/ducks/auth"; diff --git a/webapp/src/components/common/DownloadMatrixButton.tsx b/webapp/src/components/common/DownloadMatrixButton.tsx index 49551eb0f7..9f8cd67fd7 100644 --- a/webapp/src/components/common/DownloadMatrixButton.tsx +++ b/webapp/src/components/common/DownloadMatrixButton.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import FileUploadIcon from "@mui/icons-material/FileUpload"; import SplitButton from "./buttons/SplitButton.tsx"; import { downloadMatrix } from "../../services/api/studies/raw/index.ts"; diff --git a/webapp/src/components/common/DynamicDataTable/TableRowGroup.tsx b/webapp/src/components/common/DynamicDataTable/TableRowGroup.tsx index 6022a6e3a0..83b6fadb64 100644 --- a/webapp/src/components/common/DynamicDataTable/TableRowGroup.tsx +++ b/webapp/src/components/common/DynamicDataTable/TableRowGroup.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { TableRow, TableCell, diff --git a/webapp/src/components/common/DynamicDataTable/TableRowItem.tsx b/webapp/src/components/common/DynamicDataTable/TableRowItem.tsx index fa7ad0047b..860977c1b1 100644 --- a/webapp/src/components/common/DynamicDataTable/TableRowItem.tsx +++ b/webapp/src/components/common/DynamicDataTable/TableRowItem.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { TableCell, Checkbox, Chip, TableRow } from "@mui/material"; import { ChangeEvent, memo, useCallback } from "react"; import { Item, Column } from "./utils"; diff --git a/webapp/src/components/common/DynamicDataTable/TableToolbar.tsx b/webapp/src/components/common/DynamicDataTable/TableToolbar.tsx index 25efc3fb09..91a8a9f19e 100644 --- a/webapp/src/components/common/DynamicDataTable/TableToolbar.tsx +++ b/webapp/src/components/common/DynamicDataTable/TableToolbar.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Toolbar, alpha, diff --git a/webapp/src/components/common/DynamicDataTable/index.tsx b/webapp/src/components/common/DynamicDataTable/index.tsx index 96d67feeb9..c7b017785c 100644 --- a/webapp/src/components/common/DynamicDataTable/index.tsx +++ b/webapp/src/components/common/DynamicDataTable/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import Box from "@mui/material/Box"; import Table from "@mui/material/Table"; import TableBody from "@mui/material/TableBody"; diff --git a/webapp/src/components/common/DynamicDataTable/utils.ts b/webapp/src/components/common/DynamicDataTable/utils.ts index b805053234..00b1a62902 100644 --- a/webapp/src/components/common/DynamicDataTable/utils.ts +++ b/webapp/src/components/common/DynamicDataTable/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { ChipProps } from "@mui/material"; //////////////////////////////////////////////////////////////// diff --git a/webapp/src/components/common/DynamicList.tsx b/webapp/src/components/common/DynamicList.tsx index db4198c956..4b4e51bde8 100644 --- a/webapp/src/components/common/DynamicList.tsx +++ b/webapp/src/components/common/DynamicList.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import React from "react"; import { Grid, Divider, IconButton } from "@mui/material"; import { t } from "i18next"; diff --git a/webapp/src/components/common/EditableMatrix/MatrixGraphView.tsx b/webapp/src/components/common/EditableMatrix/MatrixGraphView.tsx index b6fd0b33b3..26e7dbc444 100644 --- a/webapp/src/components/common/EditableMatrix/MatrixGraphView.tsx +++ b/webapp/src/components/common/EditableMatrix/MatrixGraphView.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useState } from "react"; import Plot from "react-plotly.js"; import AutoSizer from "react-virtualized-auto-sizer"; diff --git a/webapp/src/components/common/EditableMatrix/index.tsx b/webapp/src/components/common/EditableMatrix/index.tsx index 7916fa2a1f..c64cb75400 100644 --- a/webapp/src/components/common/EditableMatrix/index.tsx +++ b/webapp/src/components/common/EditableMatrix/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useEffect, useState, useRef } from "react"; import debug from "debug"; import HT from "handsontable"; diff --git a/webapp/src/components/common/EditableMatrix/style.ts b/webapp/src/components/common/EditableMatrix/style.ts index dd62aecfd2..6b5f07298d 100644 --- a/webapp/src/components/common/EditableMatrix/style.ts +++ b/webapp/src/components/common/EditableMatrix/style.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { styled, Box, Button } from "@mui/material"; export const Root = styled(Box)(({ theme }) => ({ diff --git a/webapp/src/components/common/EditableMatrix/utils.ts b/webapp/src/components/common/EditableMatrix/utils.ts index 3daa633e8f..aad2068833 100644 --- a/webapp/src/components/common/EditableMatrix/utils.ts +++ b/webapp/src/components/common/EditableMatrix/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import _ from "lodash"; import moment, { DurationInputArg2 } from "moment"; import HT from "handsontable"; diff --git a/webapp/src/components/common/Fieldset.tsx b/webapp/src/components/common/Fieldset.tsx index 442e4078b6..d5939df5b1 100644 --- a/webapp/src/components/common/Fieldset.tsx +++ b/webapp/src/components/common/Fieldset.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, BoxProps, Divider, Typography } from "@mui/material"; import * as RA from "ramda-adjunct"; import { mergeSxProp } from "../../utils/muiUtils"; diff --git a/webapp/src/components/common/FileTable.tsx b/webapp/src/components/common/FileTable.tsx index bec4ed2338..4b504b018f 100644 --- a/webapp/src/components/common/FileTable.tsx +++ b/webapp/src/components/common/FileTable.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { ReactNode, useState } from "react"; import { Box, diff --git a/webapp/src/components/common/Form/FormContext.tsx b/webapp/src/components/common/Form/FormContext.tsx index 9a4d8bc376..46fe7da6dc 100644 --- a/webapp/src/components/common/Form/FormContext.tsx +++ b/webapp/src/components/common/Form/FormContext.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { createContext } from "react"; const FormContext = createContext({ isAutoSubmitEnabled: false }); diff --git a/webapp/src/components/common/Form/index.tsx b/webapp/src/components/common/Form/index.tsx index c14bc783be..a8c76432e4 100644 --- a/webapp/src/components/common/Form/index.tsx +++ b/webapp/src/components/common/Form/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + /* eslint-disable @typescript-eslint/no-explicit-any */ import { FormEvent, useEffect, useMemo, useRef, useState } from "react"; import { diff --git a/webapp/src/components/common/Form/types.ts b/webapp/src/components/common/Form/types.ts index 0d8010e287..7c8baef759 100644 --- a/webapp/src/components/common/Form/types.ts +++ b/webapp/src/components/common/Form/types.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + /* eslint-disable @typescript-eslint/no-explicit-any */ import { Control, diff --git a/webapp/src/components/common/Form/useFormApiPlus.ts b/webapp/src/components/common/Form/useFormApiPlus.ts index f0b7a3947d..d4ac79e62f 100644 --- a/webapp/src/components/common/Form/useFormApiPlus.ts +++ b/webapp/src/components/common/Form/useFormApiPlus.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { BatchFieldArrayUpdate, FieldPath, diff --git a/webapp/src/components/common/Form/useFormUndoRedo.ts b/webapp/src/components/common/Form/useFormUndoRedo.ts index db435d1395..66801a1bfb 100644 --- a/webapp/src/components/common/Form/useFormUndoRedo.ts +++ b/webapp/src/components/common/Form/useFormUndoRedo.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import useUndo, { Actions } from "use-undo"; import { FieldValues } from "react-hook-form"; import { useCallback, useEffect, useRef } from "react"; diff --git a/webapp/src/components/common/Form/utils.ts b/webapp/src/components/common/Form/utils.ts index 3a07564d39..c5d8909b45 100644 --- a/webapp/src/components/common/Form/utils.ts +++ b/webapp/src/components/common/Form/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import * as RA from "ramda-adjunct"; import { AutoSubmitConfig, FormProps } from "."; diff --git a/webapp/src/components/common/GroupedDataTable/CreateDialog.tsx b/webapp/src/components/common/GroupedDataTable/CreateDialog.tsx index 9df4f4e2c5..fb9dda4a73 100644 --- a/webapp/src/components/common/GroupedDataTable/CreateDialog.tsx +++ b/webapp/src/components/common/GroupedDataTable/CreateDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import AddCircleIcon from "@mui/icons-material/AddCircle"; import FormDialog from "../dialogs/FormDialog"; import StringFE from "../fieldEditors/StringFE"; diff --git a/webapp/src/components/common/GroupedDataTable/DuplicateDialog.tsx b/webapp/src/components/common/GroupedDataTable/DuplicateDialog.tsx index 099748ef9a..ae1ce03c1a 100644 --- a/webapp/src/components/common/GroupedDataTable/DuplicateDialog.tsx +++ b/webapp/src/components/common/GroupedDataTable/DuplicateDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useTranslation } from "react-i18next"; import ContentCopyIcon from "@mui/icons-material/ContentCopy"; import Fieldset from "../Fieldset"; diff --git a/webapp/src/components/common/GroupedDataTable/cellRenderers/BooleanCell.tsx b/webapp/src/components/common/GroupedDataTable/cellRenderers/BooleanCell.tsx index deb28e01a2..c9bc471dea 100644 --- a/webapp/src/components/common/GroupedDataTable/cellRenderers/BooleanCell.tsx +++ b/webapp/src/components/common/GroupedDataTable/cellRenderers/BooleanCell.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Chip } from "@mui/material"; import type { MRT_Cell, MRT_RowData } from "material-react-table"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/common/GroupedDataTable/index.tsx b/webapp/src/components/common/GroupedDataTable/index.tsx index 6aed12cc32..d6c40fd19a 100644 --- a/webapp/src/components/common/GroupedDataTable/index.tsx +++ b/webapp/src/components/common/GroupedDataTable/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import Box from "@mui/material/Box"; import AddCircleOutlineIcon from "@mui/icons-material/AddCircleOutline"; import ContentCopyIcon from "@mui/icons-material/ContentCopy"; diff --git a/webapp/src/components/common/GroupedDataTable/types.ts b/webapp/src/components/common/GroupedDataTable/types.ts index 6f91852cb4..95a0a71d9d 100644 --- a/webapp/src/components/common/GroupedDataTable/types.ts +++ b/webapp/src/components/common/GroupedDataTable/types.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + export interface TRow { name: string; group: T; diff --git a/webapp/src/components/common/GroupedDataTable/utils.ts b/webapp/src/components/common/GroupedDataTable/utils.ts index f209d83bae..9191ca87df 100644 --- a/webapp/src/components/common/GroupedDataTable/utils.ts +++ b/webapp/src/components/common/GroupedDataTable/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import * as R from "ramda"; import { TableCellProps } from "@mui/material"; import type { TRow } from "./types"; diff --git a/webapp/src/components/common/Handsontable.tsx b/webapp/src/components/common/Handsontable.tsx index 2434eff01d..6ae7eac2ff 100644 --- a/webapp/src/components/common/Handsontable.tsx +++ b/webapp/src/components/common/Handsontable.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { registerAllModules } from "handsontable/registry"; import HotTable, { HotTableProps } from "@handsontable/react"; import { styled } from "@mui/material"; diff --git a/webapp/src/components/common/JSONEditor/index.tsx b/webapp/src/components/common/JSONEditor/index.tsx index 6c7a0c19b5..d7c8b3e775 100644 --- a/webapp/src/components/common/JSONEditor/index.tsx +++ b/webapp/src/components/common/JSONEditor/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import JSONEditorLib, { JSONEditorOptions } from "jsoneditor"; import { useRef } from "react"; import { useDeepCompareEffect, useMount } from "react-use"; diff --git a/webapp/src/components/common/LinearProgressWithLabel.tsx b/webapp/src/components/common/LinearProgressWithLabel.tsx index 853f8eab5a..2dd9155581 100644 --- a/webapp/src/components/common/LinearProgressWithLabel.tsx +++ b/webapp/src/components/common/LinearProgressWithLabel.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Tooltip, Box, diff --git a/webapp/src/components/common/LogModal.tsx b/webapp/src/components/common/LogModal.tsx index 9c386e494c..6667e94a65 100644 --- a/webapp/src/components/common/LogModal.tsx +++ b/webapp/src/components/common/LogModal.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useCallback, useEffect, diff --git a/webapp/src/components/common/MatrixGrid/Matrix.tsx b/webapp/src/components/common/MatrixGrid/Matrix.tsx index 97973650d1..2930726ba0 100644 --- a/webapp/src/components/common/MatrixGrid/Matrix.tsx +++ b/webapp/src/components/common/MatrixGrid/Matrix.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Divider, Skeleton } from "@mui/material"; import MatrixGrid from "."; import { useMatrix } from "./useMatrix"; diff --git a/webapp/src/components/common/MatrixGrid/MatrixActions.tsx b/webapp/src/components/common/MatrixGrid/MatrixActions.tsx index 4d135c6da2..d48261b443 100644 --- a/webapp/src/components/common/MatrixGrid/MatrixActions.tsx +++ b/webapp/src/components/common/MatrixGrid/MatrixActions.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, Divider, IconButton, Tooltip } from "@mui/material"; import SplitButton from "../buttons/SplitButton"; import DownloadMatrixButton from "../DownloadMatrixButton"; diff --git a/webapp/src/components/common/MatrixGrid/index.test.tsx b/webapp/src/components/common/MatrixGrid/index.test.tsx index e7189ad93c..88db7ad21f 100644 --- a/webapp/src/components/common/MatrixGrid/index.test.tsx +++ b/webapp/src/components/common/MatrixGrid/index.test.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { render } from "@testing-library/react"; import MatrixGrid, { MatrixGridProps } from "."; import Box from "@mui/material/Box"; diff --git a/webapp/src/components/common/MatrixGrid/index.tsx b/webapp/src/components/common/MatrixGrid/index.tsx index 70acbabd1e..b22d36bc3a 100644 --- a/webapp/src/components/common/MatrixGrid/index.tsx +++ b/webapp/src/components/common/MatrixGrid/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import "@glideapps/glide-data-grid/dist/index.css"; import DataEditor, { CompactSelection, diff --git a/webapp/src/components/common/MatrixGrid/style.ts b/webapp/src/components/common/MatrixGrid/style.ts index 2b0d3f76ff..74b6f5770f 100644 --- a/webapp/src/components/common/MatrixGrid/style.ts +++ b/webapp/src/components/common/MatrixGrid/style.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import styled from "@emotion/styled"; import { Box, Typography } from "@mui/material"; diff --git a/webapp/src/components/common/MatrixGrid/types.ts b/webapp/src/components/common/MatrixGrid/types.ts index 2183801db5..4e3ab2aa53 100644 --- a/webapp/src/components/common/MatrixGrid/types.ts +++ b/webapp/src/components/common/MatrixGrid/types.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { BaseGridColumn, EditableGridCell, diff --git a/webapp/src/components/common/MatrixGrid/useColumnMapping.test.ts b/webapp/src/components/common/MatrixGrid/useColumnMapping.test.ts index df476b482d..8270abb3b1 100644 --- a/webapp/src/components/common/MatrixGrid/useColumnMapping.test.ts +++ b/webapp/src/components/common/MatrixGrid/useColumnMapping.test.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { renderHook } from "@testing-library/react"; import { describe, test, expect } from "vitest"; import { useColumnMapping } from "./useColumnMapping"; diff --git a/webapp/src/components/common/MatrixGrid/useColumnMapping.ts b/webapp/src/components/common/MatrixGrid/useColumnMapping.ts index ab46b4db5e..1ad1cb5932 100644 --- a/webapp/src/components/common/MatrixGrid/useColumnMapping.ts +++ b/webapp/src/components/common/MatrixGrid/useColumnMapping.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useMemo } from "react"; import { Item } from "@glideapps/glide-data-grid"; import { EnhancedGridColumn, ColumnTypes } from "./types"; diff --git a/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts b/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts index ccb0736fb5..cf4ef08867 100644 --- a/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts +++ b/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { renderHook } from "@testing-library/react"; import { useGridCellContent } from "./useGridCellContent"; import { ColumnTypes, type EnhancedGridColumn } from "./types"; diff --git a/webapp/src/components/common/MatrixGrid/useGridCellContent.ts b/webapp/src/components/common/MatrixGrid/useGridCellContent.ts index 09f6d06451..000f180da5 100644 --- a/webapp/src/components/common/MatrixGrid/useGridCellContent.ts +++ b/webapp/src/components/common/MatrixGrid/useGridCellContent.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useCallback, useMemo } from "react"; import { GridCell, GridCellKind, Item } from "@glideapps/glide-data-grid"; import { type EnhancedGridColumn, type ColumnType, ColumnTypes } from "./types"; diff --git a/webapp/src/components/common/MatrixGrid/useMatrix.test.tsx b/webapp/src/components/common/MatrixGrid/useMatrix.test.tsx index 2fe6599aca..c78e275ab3 100644 --- a/webapp/src/components/common/MatrixGrid/useMatrix.test.tsx +++ b/webapp/src/components/common/MatrixGrid/useMatrix.test.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { renderHook, act, waitFor } from "@testing-library/react"; import { vi, describe, expect, beforeEach } from "vitest"; import { useMatrix } from "./useMatrix"; diff --git a/webapp/src/components/common/MatrixGrid/useMatrix.ts b/webapp/src/components/common/MatrixGrid/useMatrix.ts index ff16f05b09..129fb8c848 100644 --- a/webapp/src/components/common/MatrixGrid/useMatrix.ts +++ b/webapp/src/components/common/MatrixGrid/useMatrix.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useCallback, useEffect, useMemo, useState } from "react"; import { AxiosError } from "axios"; import { enqueueSnackbar } from "notistack"; diff --git a/webapp/src/components/common/MatrixGrid/utils.test.ts b/webapp/src/components/common/MatrixGrid/utils.test.ts index 26e42ff6eb..5645a7736d 100644 --- a/webapp/src/components/common/MatrixGrid/utils.test.ts +++ b/webapp/src/components/common/MatrixGrid/utils.test.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { MatrixIndex, StudyOutputDownloadLevelDTO, diff --git a/webapp/src/components/common/MatrixGrid/utils.ts b/webapp/src/components/common/MatrixGrid/utils.ts index 8dfefd802f..7c479d4130 100644 --- a/webapp/src/components/common/MatrixGrid/utils.ts +++ b/webapp/src/components/common/MatrixGrid/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import moment from "moment"; import { DateIncrementStrategy, diff --git a/webapp/src/components/common/MatrixInput/MatrixAssignDialog.tsx b/webapp/src/components/common/MatrixInput/MatrixAssignDialog.tsx index c8553eda09..8259be7858 100644 --- a/webapp/src/components/common/MatrixInput/MatrixAssignDialog.tsx +++ b/webapp/src/components/common/MatrixInput/MatrixAssignDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, Button, Divider, Typography } from "@mui/material"; import { AxiosError } from "axios"; import { useSnackbar } from "notistack"; diff --git a/webapp/src/components/common/MatrixInput/index.tsx b/webapp/src/components/common/MatrixInput/index.tsx index d035a94cce..a24244401a 100644 --- a/webapp/src/components/common/MatrixInput/index.tsx +++ b/webapp/src/components/common/MatrixInput/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useTranslation } from "react-i18next"; import { useSnackbar } from "notistack"; import { useState } from "react"; diff --git a/webapp/src/components/common/MatrixInput/style.ts b/webapp/src/components/common/MatrixInput/style.ts index 72b77419cb..5fd35f0fef 100644 --- a/webapp/src/components/common/MatrixInput/style.ts +++ b/webapp/src/components/common/MatrixInput/style.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { styled, Box, Button } from "@mui/material"; export const Root = styled(Box)(({ theme }) => ({ diff --git a/webapp/src/components/common/PropertiesView.tsx b/webapp/src/components/common/PropertiesView.tsx index 2fc9dbf90d..3a0754b9ab 100644 --- a/webapp/src/components/common/PropertiesView.tsx +++ b/webapp/src/components/common/PropertiesView.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { ReactNode } from "react"; import { Box, Button, SxProps, Theme } from "@mui/material"; import SearchFE from "./fieldEditors/SearchFE"; diff --git a/webapp/src/components/common/SelectMulti.tsx b/webapp/src/components/common/SelectMulti.tsx index 5f916bd3f7..680cc32e11 100644 --- a/webapp/src/components/common/SelectMulti.tsx +++ b/webapp/src/components/common/SelectMulti.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import * as React from "react"; import { Box, diff --git a/webapp/src/components/common/SelectSingle.tsx b/webapp/src/components/common/SelectSingle.tsx index 2ada882027..acce4b22b9 100644 --- a/webapp/src/components/common/SelectSingle.tsx +++ b/webapp/src/components/common/SelectSingle.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { FormControl, InputLabel, diff --git a/webapp/src/components/common/SnackErrorMessage.tsx b/webapp/src/components/common/SnackErrorMessage.tsx index f87e67faf4..a4607d4d5d 100644 --- a/webapp/src/components/common/SnackErrorMessage.tsx +++ b/webapp/src/components/common/SnackErrorMessage.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useState, forwardRef, useCallback } from "react"; import * as React from "react"; import { useSnackbar, SnackbarContent } from "notistack"; diff --git a/webapp/src/components/common/SplitLayoutView.tsx b/webapp/src/components/common/SplitLayoutView.tsx index 5df41be676..4a870bd460 100644 --- a/webapp/src/components/common/SplitLayoutView.tsx +++ b/webapp/src/components/common/SplitLayoutView.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { ReactNode } from "react"; import { Divider, Box, SxProps, Theme } from "@mui/material"; diff --git a/webapp/src/components/common/SplitView/index.tsx b/webapp/src/components/common/SplitView/index.tsx index 19a708ff90..d21dd0175e 100644 --- a/webapp/src/components/common/SplitView/index.tsx +++ b/webapp/src/components/common/SplitView/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import React, { useEffect, useState } from "react"; import Split, { SplitProps } from "react-split"; import { Box } from "@mui/material"; diff --git a/webapp/src/components/common/StarToggle.tsx b/webapp/src/components/common/StarToggle.tsx index 69ad85f751..97af3b3bca 100644 --- a/webapp/src/components/common/StarToggle.tsx +++ b/webapp/src/components/common/StarToggle.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Tooltip } from "@mui/material"; import StarPurple500OutlinedIcon from "@mui/icons-material/StarPurple500Outlined"; import StarOutlineOutlinedIcon from "@mui/icons-material/StarOutlineOutlined"; diff --git a/webapp/src/components/common/TableForm/Table.tsx b/webapp/src/components/common/TableForm/Table.tsx index 5e41d8a297..d304cfb8af 100644 --- a/webapp/src/components/common/TableForm/Table.tsx +++ b/webapp/src/components/common/TableForm/Table.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import HT from "handsontable"; import * as RA from "ramda-adjunct"; import { useMemo } from "react"; diff --git a/webapp/src/components/common/TableForm/index.tsx b/webapp/src/components/common/TableForm/index.tsx index 44fb08ad1e..c8cb615c66 100644 --- a/webapp/src/components/common/TableForm/index.tsx +++ b/webapp/src/components/common/TableForm/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import * as RA from "ramda-adjunct"; import HT from "handsontable"; import { startCase } from "lodash"; diff --git a/webapp/src/components/common/TableForm/utils.ts b/webapp/src/components/common/TableForm/utils.ts index 79663993c1..2919d2de9b 100644 --- a/webapp/src/components/common/TableForm/utils.ts +++ b/webapp/src/components/common/TableForm/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import * as R from "ramda"; import * as RA from "ramda-adjunct"; diff --git a/webapp/src/components/common/TableMode.tsx b/webapp/src/components/common/TableMode.tsx index 7d40d5511f..217e436d98 100644 --- a/webapp/src/components/common/TableMode.tsx +++ b/webapp/src/components/common/TableMode.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useEffect, useState } from "react"; import { StudyMetadata } from "../../common/types"; import usePromise from "../../hooks/usePromise"; diff --git a/webapp/src/components/common/TabsView.tsx b/webapp/src/components/common/TabsView.tsx index 5c96248c8d..bc04cef8df 100644 --- a/webapp/src/components/common/TabsView.tsx +++ b/webapp/src/components/common/TabsView.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { TabContext, TabList, TabListProps, TabPanel } from "@mui/lab"; import { Box, Tab } from "@mui/material"; import { useState } from "react"; diff --git a/webapp/src/components/common/TextSeparator.tsx b/webapp/src/components/common/TextSeparator.tsx index 635a89d8e8..09337c7a82 100644 --- a/webapp/src/components/common/TextSeparator.tsx +++ b/webapp/src/components/common/TextSeparator.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { SxProps, Theme, Divider, Typography, Box } from "@mui/material"; interface Props { diff --git a/webapp/src/components/common/buttons/SplitButton.tsx b/webapp/src/components/common/buttons/SplitButton.tsx index 684e74f212..643e62c7f6 100644 --- a/webapp/src/components/common/buttons/SplitButton.tsx +++ b/webapp/src/components/common/buttons/SplitButton.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import Button from "@mui/material/Button"; import ButtonGroup, { ButtonGroupProps } from "@mui/material/ButtonGroup"; import ArrowDropDownIcon from "@mui/icons-material/ArrowDropDown"; diff --git a/webapp/src/components/common/dialogs/BasicDialog.tsx b/webapp/src/components/common/dialogs/BasicDialog.tsx index 196d4b1b9c..1b93953696 100644 --- a/webapp/src/components/common/dialogs/BasicDialog.tsx +++ b/webapp/src/components/common/dialogs/BasicDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Dialog, DialogActions, diff --git a/webapp/src/components/common/dialogs/ConfirmationDialog.tsx b/webapp/src/components/common/dialogs/ConfirmationDialog.tsx index 769fe36a62..361f3c1739 100644 --- a/webapp/src/components/common/dialogs/ConfirmationDialog.tsx +++ b/webapp/src/components/common/dialogs/ConfirmationDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Button } from "@mui/material"; import { useTranslation } from "react-i18next"; import BasicDialog, { BasicDialogProps } from "./BasicDialog"; diff --git a/webapp/src/components/common/dialogs/DataViewerDialog/index.tsx b/webapp/src/components/common/dialogs/DataViewerDialog/index.tsx index ca2cd4384e..db8dbee0c5 100644 --- a/webapp/src/components/common/dialogs/DataViewerDialog/index.tsx +++ b/webapp/src/components/common/dialogs/DataViewerDialog/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useTranslation } from "react-i18next"; import { Box, IconButton, Tooltip, Typography } from "@mui/material"; import { useSnackbar } from "notistack"; diff --git a/webapp/src/components/common/dialogs/DataViewerDialog/styles.ts b/webapp/src/components/common/dialogs/DataViewerDialog/styles.ts index 6ed0e5e442..10709d3ea8 100644 --- a/webapp/src/components/common/dialogs/DataViewerDialog/styles.ts +++ b/webapp/src/components/common/dialogs/DataViewerDialog/styles.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, Button, styled } from "@mui/material"; export const Code = styled(Box)({ diff --git a/webapp/src/components/common/dialogs/DigestDialog.tsx b/webapp/src/components/common/dialogs/DigestDialog.tsx index c735986144..2f0658cbdd 100644 --- a/webapp/src/components/common/dialogs/DigestDialog.tsx +++ b/webapp/src/components/common/dialogs/DigestDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Skeleton } from "@mui/material"; import OkDialog, { OkDialogProps } from "./OkDialog"; import EditableMatrix from "../EditableMatrix"; diff --git a/webapp/src/components/common/dialogs/FormDialog.tsx b/webapp/src/components/common/dialogs/FormDialog.tsx index d58f09983a..1cf91d304d 100644 --- a/webapp/src/components/common/dialogs/FormDialog.tsx +++ b/webapp/src/components/common/dialogs/FormDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + /* eslint-disable @typescript-eslint/no-explicit-any */ import { Button } from "@mui/material"; import { useId, useState } from "react"; diff --git a/webapp/src/components/common/dialogs/ImportDialog.tsx b/webapp/src/components/common/dialogs/ImportDialog.tsx index e300015c7e..c25dbacedd 100644 --- a/webapp/src/components/common/dialogs/ImportDialog.tsx +++ b/webapp/src/components/common/dialogs/ImportDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useEffect, useState } from "react"; import { Box, Button, LinearProgress, Paper, Typography } from "@mui/material"; import { FileRejection, useDropzone, type Accept } from "react-dropzone"; diff --git a/webapp/src/components/common/dialogs/OkDialog.tsx b/webapp/src/components/common/dialogs/OkDialog.tsx index b40854e5ac..ce859a960b 100644 --- a/webapp/src/components/common/dialogs/OkDialog.tsx +++ b/webapp/src/components/common/dialogs/OkDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Button, ButtonProps } from "@mui/material"; import { useTranslation } from "react-i18next"; import BasicDialog, { BasicDialogProps } from "./BasicDialog"; diff --git a/webapp/src/components/common/fieldEditors/BooleanFE.tsx b/webapp/src/components/common/fieldEditors/BooleanFE.tsx index 08ecb5dcb3..c5acb101be 100644 --- a/webapp/src/components/common/fieldEditors/BooleanFE.tsx +++ b/webapp/src/components/common/fieldEditors/BooleanFE.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { SelectProps } from "@mui/material"; import * as RA from "ramda-adjunct"; import reactHookFormSupport from "../../../hoc/reactHookFormSupport"; diff --git a/webapp/src/components/common/fieldEditors/CheckBoxFE.tsx b/webapp/src/components/common/fieldEditors/CheckBoxFE.tsx index 6e15d7c116..40e8b8b40e 100644 --- a/webapp/src/components/common/fieldEditors/CheckBoxFE.tsx +++ b/webapp/src/components/common/fieldEditors/CheckBoxFE.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Checkbox, CheckboxProps, diff --git a/webapp/src/components/common/fieldEditors/CheckboxesTagsFE.tsx b/webapp/src/components/common/fieldEditors/CheckboxesTagsFE.tsx index 42e3a7e3fb..90373aa35a 100644 --- a/webapp/src/components/common/fieldEditors/CheckboxesTagsFE.tsx +++ b/webapp/src/components/common/fieldEditors/CheckboxesTagsFE.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Autocomplete, AutocompleteProps, diff --git a/webapp/src/components/common/fieldEditors/ColorPickerFE/index.tsx b/webapp/src/components/common/fieldEditors/ColorPickerFE/index.tsx index e0d39b342e..9f0f11d120 100644 --- a/webapp/src/components/common/fieldEditors/ColorPickerFE/index.tsx +++ b/webapp/src/components/common/fieldEditors/ColorPickerFE/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, TextField, TextFieldProps, InputAdornment } from "@mui/material"; import { ChangeEvent, useRef, useState } from "react"; import { ColorResult, SketchPicker } from "react-color"; diff --git a/webapp/src/components/common/fieldEditors/ColorPickerFE/utils.ts b/webapp/src/components/common/fieldEditors/ColorPickerFE/utils.ts index a42276f7f4..319c8c3a68 100644 --- a/webapp/src/components/common/fieldEditors/ColorPickerFE/utils.ts +++ b/webapp/src/components/common/fieldEditors/ColorPickerFE/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { ColorResult } from "react-color"; export function stringToRGB(color: string): ColorResult["rgb"] | undefined { diff --git a/webapp/src/components/common/fieldEditors/ListFE/index.tsx b/webapp/src/components/common/fieldEditors/ListFE/index.tsx index 29f3518e26..6a411577a2 100644 --- a/webapp/src/components/common/fieldEditors/ListFE/index.tsx +++ b/webapp/src/components/common/fieldEditors/ListFE/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Autocomplete, Box, diff --git a/webapp/src/components/common/fieldEditors/ListFE/utils.ts b/webapp/src/components/common/fieldEditors/ListFE/utils.ts index fd5591a30d..54b3e7c69d 100644 --- a/webapp/src/components/common/fieldEditors/ListFE/utils.ts +++ b/webapp/src/components/common/fieldEditors/ListFE/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { v4 as uuidv4 } from "uuid"; import * as RA from "ramda-adjunct"; diff --git a/webapp/src/components/common/fieldEditors/NumberFE.tsx b/webapp/src/components/common/fieldEditors/NumberFE.tsx index eb1de8ea53..d3152cb391 100644 --- a/webapp/src/components/common/fieldEditors/NumberFE.tsx +++ b/webapp/src/components/common/fieldEditors/NumberFE.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { TextField, TextFieldProps } from "@mui/material"; import * as RA from "ramda-adjunct"; import reactHookFormSupport from "../../../hoc/reactHookFormSupport"; diff --git a/webapp/src/components/common/fieldEditors/PasswordFE.tsx b/webapp/src/components/common/fieldEditors/PasswordFE.tsx index 4a0d1447cf..e552f6c784 100644 --- a/webapp/src/components/common/fieldEditors/PasswordFE.tsx +++ b/webapp/src/components/common/fieldEditors/PasswordFE.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { TextField, TextFieldProps } from "@mui/material"; import reactHookFormSupport from "../../../hoc/reactHookFormSupport"; diff --git a/webapp/src/components/common/fieldEditors/RadioFE.tsx b/webapp/src/components/common/fieldEditors/RadioFE.tsx index ae296f64f3..32335abac0 100644 --- a/webapp/src/components/common/fieldEditors/RadioFE.tsx +++ b/webapp/src/components/common/fieldEditors/RadioFE.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { FormControl, FormControlLabel, diff --git a/webapp/src/components/common/fieldEditors/SearchFE.tsx b/webapp/src/components/common/fieldEditors/SearchFE.tsx index e9d76c96da..bd47494343 100644 --- a/webapp/src/components/common/fieldEditors/SearchFE.tsx +++ b/webapp/src/components/common/fieldEditors/SearchFE.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { IconButton, InputAdornment } from "@mui/material"; import SearchIcon from "@mui/icons-material/Search"; import ClearIcon from "@mui/icons-material/Clear"; diff --git a/webapp/src/components/common/fieldEditors/SelectFE.tsx b/webapp/src/components/common/fieldEditors/SelectFE.tsx index 938f94f499..9ed8b22cba 100644 --- a/webapp/src/components/common/fieldEditors/SelectFE.tsx +++ b/webapp/src/components/common/fieldEditors/SelectFE.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { FormControl, FormHelperText, diff --git a/webapp/src/components/common/fieldEditors/StringFE.tsx b/webapp/src/components/common/fieldEditors/StringFE.tsx index a915a40289..e1115c2961 100644 --- a/webapp/src/components/common/fieldEditors/StringFE.tsx +++ b/webapp/src/components/common/fieldEditors/StringFE.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { TextField, TextFieldProps } from "@mui/material"; import reactHookFormSupport from "../../../hoc/reactHookFormSupport"; diff --git a/webapp/src/components/common/fieldEditors/SwitchFE.tsx b/webapp/src/components/common/fieldEditors/SwitchFE.tsx index 4abed57c0c..4e29f701e1 100644 --- a/webapp/src/components/common/fieldEditors/SwitchFE.tsx +++ b/webapp/src/components/common/fieldEditors/SwitchFE.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { FormControl, FormControlLabel, diff --git a/webapp/src/components/common/loaders/AppLoader.tsx b/webapp/src/components/common/loaders/AppLoader.tsx index 57230f7e2f..aa60c31a99 100644 --- a/webapp/src/components/common/loaders/AppLoader.tsx +++ b/webapp/src/components/common/loaders/AppLoader.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import { Box, Typography } from "@mui/material"; diff --git a/webapp/src/components/common/loaders/BackdropLoading.tsx b/webapp/src/components/common/loaders/BackdropLoading.tsx index 57ebdcd1d7..eea54b6229 100644 --- a/webapp/src/components/common/loaders/BackdropLoading.tsx +++ b/webapp/src/components/common/loaders/BackdropLoading.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Backdrop, Box, CircularProgress } from "@mui/material"; interface BackdropLoadingProps { diff --git a/webapp/src/components/common/loaders/GlobalPageLoadingError.tsx b/webapp/src/components/common/loaders/GlobalPageLoadingError.tsx index a595345bcb..7771f6c06f 100644 --- a/webapp/src/components/common/loaders/GlobalPageLoadingError.tsx +++ b/webapp/src/components/common/loaders/GlobalPageLoadingError.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, Typography } from "@mui/material"; import topRightBackground from "../../../assets/img/top-right-background.png"; diff --git a/webapp/src/components/common/loaders/SimpleLoader.tsx b/webapp/src/components/common/loaders/SimpleLoader.tsx index e1785cc000..b4dab0707d 100644 --- a/webapp/src/components/common/loaders/SimpleLoader.tsx +++ b/webapp/src/components/common/loaders/SimpleLoader.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useTranslation } from "react-i18next"; import { Box, CircularProgress } from "@mui/material"; diff --git a/webapp/src/components/common/page/BasicPage.tsx b/webapp/src/components/common/page/BasicPage.tsx index 1adec419e2..52dbc0f239 100644 --- a/webapp/src/components/common/page/BasicPage.tsx +++ b/webapp/src/components/common/page/BasicPage.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, Divider } from "@mui/material"; import { PropsWithChildren, ReactNode } from "react"; diff --git a/webapp/src/components/common/page/RootPage.tsx b/webapp/src/components/common/page/RootPage.tsx index a06d1b6e18..f1f09c6d36 100644 --- a/webapp/src/components/common/page/RootPage.tsx +++ b/webapp/src/components/common/page/RootPage.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { SvgIconComponent } from "@mui/icons-material"; import { Box, Typography } from "@mui/material"; import BasicPage from "./BasicPage"; diff --git a/webapp/src/components/common/page/SimpleContent.tsx b/webapp/src/components/common/page/SimpleContent.tsx index 03c8525eec..b21b79342b 100644 --- a/webapp/src/components/common/page/SimpleContent.tsx +++ b/webapp/src/components/common/page/SimpleContent.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useTranslation } from "react-i18next"; import LiveHelpRoundedIcon from "@mui/icons-material/LiveHelpRounded"; import { Box } from "@mui/material"; diff --git a/webapp/src/components/common/page/ViewWrapper.tsx b/webapp/src/components/common/page/ViewWrapper.tsx index f0800405e8..98dac4e8fd 100644 --- a/webapp/src/components/common/page/ViewWrapper.tsx +++ b/webapp/src/components/common/page/ViewWrapper.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Paper } from "@mui/material"; export interface ViewWrapperProps { diff --git a/webapp/src/components/common/utils/UsePromiseCond.tsx b/webapp/src/components/common/utils/UsePromiseCond.tsx index 2ee30ef8da..e03afeb170 100644 --- a/webapp/src/components/common/utils/UsePromiseCond.tsx +++ b/webapp/src/components/common/utils/UsePromiseCond.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import * as R from "ramda"; import { PromiseStatus, UsePromiseResponse } from "../../../hooks/usePromise"; import SimpleLoader from "../loaders/SimpleLoader"; diff --git a/webapp/src/components/common/utils/constants.ts b/webapp/src/components/common/utils/constants.ts index ac3e4b2b06..40e26fb77e 100644 --- a/webapp/src/components/common/utils/constants.ts +++ b/webapp/src/components/common/utils/constants.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { GenericInfo } from "../../../common/types"; export const PUBLIC_MODE_LIST: GenericInfo[] = [ diff --git a/webapp/src/components/wrappers/LoginWrapper.tsx b/webapp/src/components/wrappers/LoginWrapper.tsx index de64f4ddcd..6c318c70f7 100644 --- a/webapp/src/components/wrappers/LoginWrapper.tsx +++ b/webapp/src/components/wrappers/LoginWrapper.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box, Typography } from "@mui/material"; import { useTranslation } from "react-i18next"; import LoginIcon from "@mui/icons-material/Login"; diff --git a/webapp/src/components/wrappers/MaintenanceWrapper/MessageInfoDialog.tsx b/webapp/src/components/wrappers/MaintenanceWrapper/MessageInfoDialog.tsx index c0050b272e..95b6dfd9ab 100644 --- a/webapp/src/components/wrappers/MaintenanceWrapper/MessageInfoDialog.tsx +++ b/webapp/src/components/wrappers/MaintenanceWrapper/MessageInfoDialog.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useEffect, useState } from "react"; import { Box, styled, Typography } from "@mui/material"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/wrappers/MaintenanceWrapper/Stars.tsx b/webapp/src/components/wrappers/MaintenanceWrapper/Stars.tsx index cab80b6deb..1d8f8dfdfc 100644 --- a/webapp/src/components/wrappers/MaintenanceWrapper/Stars.tsx +++ b/webapp/src/components/wrappers/MaintenanceWrapper/Stars.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import "./Stars.css"; function Stars() { diff --git a/webapp/src/components/wrappers/MaintenanceWrapper/index.tsx b/webapp/src/components/wrappers/MaintenanceWrapper/index.tsx index 7249cb0a21..e805853b20 100644 --- a/webapp/src/components/wrappers/MaintenanceWrapper/index.tsx +++ b/webapp/src/components/wrappers/MaintenanceWrapper/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + /* eslint-disable react-hooks/exhaustive-deps */ import { ReactNode, useEffect } from "react"; import { useTranslation } from "react-i18next"; diff --git a/webapp/src/components/wrappers/MenuWrapper/index.tsx b/webapp/src/components/wrappers/MenuWrapper/index.tsx index 7426442e92..2e562739b0 100644 --- a/webapp/src/components/wrappers/MenuWrapper/index.tsx +++ b/webapp/src/components/wrappers/MenuWrapper/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { FunctionComponent, ReactNode, useState } from "react"; import { useTranslation } from "react-i18next"; import { NavLink } from "react-router-dom"; diff --git a/webapp/src/components/wrappers/MenuWrapper/styles.ts b/webapp/src/components/wrappers/MenuWrapper/styles.ts index f7f39a869f..bf6f5a0eab 100644 --- a/webapp/src/components/wrappers/MenuWrapper/styles.ts +++ b/webapp/src/components/wrappers/MenuWrapper/styles.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { NavLink } from "react-router-dom"; import Drawer from "@mui/material/Drawer"; import ListItem from "@mui/material/ListItem"; diff --git a/webapp/src/hoc/reactHookFormSupport.tsx b/webapp/src/hoc/reactHookFormSupport.tsx index a0aec8f2b2..903152a507 100644 --- a/webapp/src/hoc/reactHookFormSupport.tsx +++ b/webapp/src/hoc/reactHookFormSupport.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + /* eslint-disable @typescript-eslint/no-explicit-any */ import hoistNonReactStatics from "hoist-non-react-statics"; import React, { useContext, useMemo } from "react"; diff --git a/webapp/src/hooks/useAutoUpdateRef.ts b/webapp/src/hooks/useAutoUpdateRef.ts index 70d489b5b2..44a0e09af5 100644 --- a/webapp/src/hooks/useAutoUpdateRef.ts +++ b/webapp/src/hooks/useAutoUpdateRef.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useEffect, useRef } from "react"; function useAutoUpdateRef(value: T): React.MutableRefObject { diff --git a/webapp/src/hooks/useBlocker.ts b/webapp/src/hooks/useBlocker.ts index b942611443..c0a8cc2abc 100644 --- a/webapp/src/hooks/useBlocker.ts +++ b/webapp/src/hooks/useBlocker.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { History, Transition } from "history"; import { useContext, useEffect } from "react"; import { UNSAFE_NavigationContext as NavigationContext } from "react-router-dom"; diff --git a/webapp/src/hooks/useDebounce.ts b/webapp/src/hooks/useDebounce.ts index b854f42d30..94198fd955 100644 --- a/webapp/src/hooks/useDebounce.ts +++ b/webapp/src/hooks/useDebounce.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { debounce, DebouncedFunc, diff --git a/webapp/src/hooks/useDebouncedEffect.ts b/webapp/src/hooks/useDebouncedEffect.ts index a4850c9531..46e4c5e0c2 100644 --- a/webapp/src/hooks/useDebouncedEffect.ts +++ b/webapp/src/hooks/useDebouncedEffect.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import * as R from "ramda"; import * as RA from "ramda-adjunct"; import { useEffect } from "react"; diff --git a/webapp/src/hooks/useDebouncedState.ts b/webapp/src/hooks/useDebouncedState.ts index 7a3dd7cb15..30a30c56e7 100644 --- a/webapp/src/hooks/useDebouncedState.ts +++ b/webapp/src/hooks/useDebouncedState.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { DebouncedFunc, DebouncedFuncLeading, diff --git a/webapp/src/hooks/useEnqueueErrorSnackbar.tsx b/webapp/src/hooks/useEnqueueErrorSnackbar.tsx index 7108492f9e..4d2ca520a6 100644 --- a/webapp/src/hooks/useEnqueueErrorSnackbar.tsx +++ b/webapp/src/hooks/useEnqueueErrorSnackbar.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { ProviderContext, useSnackbar } from "notistack"; import { useCallback } from "react"; import { L } from "ts-toolbelt"; diff --git a/webapp/src/hooks/useMemoLocked.ts b/webapp/src/hooks/useMemoLocked.ts index b6e03535f9..f352f59dad 100644 --- a/webapp/src/hooks/useMemoLocked.ts +++ b/webapp/src/hooks/useMemoLocked.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useState } from "react"; /* diff --git a/webapp/src/hooks/useNavigateOnCondition.ts b/webapp/src/hooks/useNavigateOnCondition.ts index 036ce0e72f..13e85c830e 100644 --- a/webapp/src/hooks/useNavigateOnCondition.ts +++ b/webapp/src/hooks/useNavigateOnCondition.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { DependencyList } from "react"; import { useNavigate, To } from "react-router-dom"; import { useUpdateEffect } from "react-use"; diff --git a/webapp/src/hooks/useOperationInProgressCount.ts b/webapp/src/hooks/useOperationInProgressCount.ts index bc71fb677a..524717464a 100644 --- a/webapp/src/hooks/useOperationInProgressCount.ts +++ b/webapp/src/hooks/useOperationInProgressCount.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useMemo, useState } from "react"; import * as R from "ramda"; diff --git a/webapp/src/hooks/usePromise.ts b/webapp/src/hooks/usePromise.ts index 890874e4fa..e0c05118f8 100644 --- a/webapp/src/hooks/usePromise.ts +++ b/webapp/src/hooks/usePromise.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useCallback, useEffect, useState } from "react"; import { usePromise as usePromiseWrapper } from "react-use"; import { isDependencyList } from "../utils/reactUtils"; diff --git a/webapp/src/hooks/usePromiseWithSnackbarError.ts b/webapp/src/hooks/usePromiseWithSnackbarError.ts index e8e9ba0e17..1e13fbe5b9 100644 --- a/webapp/src/hooks/usePromiseWithSnackbarError.ts +++ b/webapp/src/hooks/usePromiseWithSnackbarError.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useEffect } from "react"; import useEnqueueErrorSnackbar from "./useEnqueueErrorSnackbar"; import usePromise, { UsePromiseResponse, UsePromiseParams } from "./usePromise"; diff --git a/webapp/src/hooks/usePrompt.ts b/webapp/src/hooks/usePrompt.ts index 460e0bcb0d..68d4b3eef9 100644 --- a/webapp/src/hooks/usePrompt.ts +++ b/webapp/src/hooks/usePrompt.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import useBlocker from "./useBlocker"; // * Workaround until it will be supported by react-router v6. diff --git a/webapp/src/hooks/useUpdateEffectOnce.ts b/webapp/src/hooks/useUpdateEffectOnce.ts index 61fedd115e..27b1913a61 100644 --- a/webapp/src/hooks/useUpdateEffectOnce.ts +++ b/webapp/src/hooks/useUpdateEffectOnce.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useEffect, useRef } from "react"; import { useUpdateEffect } from "react-use"; diff --git a/webapp/src/i18n.ts b/webapp/src/i18n.ts index 980cffbf89..f5c222afb7 100644 --- a/webapp/src/i18n.ts +++ b/webapp/src/i18n.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import i18n from "i18next"; import Backend from "i18next-http-backend"; import LanguageDetector from "i18next-browser-languagedetector"; diff --git a/webapp/src/index.test.tsx b/webapp/src/index.test.tsx index 6317806c00..c6b4528b47 100644 --- a/webapp/src/index.test.tsx +++ b/webapp/src/index.test.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { render } from "@testing-library/react"; import { Provider } from "react-redux"; import { StyledEngineProvider } from "@mui/material"; diff --git a/webapp/src/index.tsx b/webapp/src/index.tsx index 2c6792f7a8..ce6b458f1e 100644 --- a/webapp/src/index.tsx +++ b/webapp/src/index.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { createRoot } from "react-dom/client"; import { Provider } from "react-redux"; import { StyledEngineProvider } from "@mui/material"; diff --git a/webapp/src/redux/components/UseAsyncAppSelectorCond.tsx b/webapp/src/redux/components/UseAsyncAppSelectorCond.tsx index 7244b74c37..1c56dff90d 100644 --- a/webapp/src/redux/components/UseAsyncAppSelectorCond.tsx +++ b/webapp/src/redux/components/UseAsyncAppSelectorCond.tsx @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import * as R from "ramda"; import { UseAsyncEntityStateResponse } from "../hooks/useAsyncAppSelector"; import { FetchStatus } from "../utils"; diff --git a/webapp/src/redux/ducks/auth.ts b/webapp/src/redux/ducks/auth.ts index f2eadef4d2..f64615ead5 100644 --- a/webapp/src/redux/ducks/auth.ts +++ b/webapp/src/redux/ducks/auth.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { createAsyncThunk, createReducer, isAnyOf } from "@reduxjs/toolkit"; import jwtDecode, { JwtPayload } from "jwt-decode"; import { UserInfo } from "../../common/types"; diff --git a/webapp/src/redux/ducks/groups.ts b/webapp/src/redux/ducks/groups.ts index 08e932a4d6..d3053bb9c6 100644 --- a/webapp/src/redux/ducks/groups.ts +++ b/webapp/src/redux/ducks/groups.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { createAsyncThunk, createEntityAdapter, diff --git a/webapp/src/redux/ducks/index.ts b/webapp/src/redux/ducks/index.ts index cbe18b24f7..e042661755 100644 --- a/webapp/src/redux/ducks/index.ts +++ b/webapp/src/redux/ducks/index.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Action, combineReducers } from "redux"; import { L } from "ts-toolbelt"; import studies from "./studies"; diff --git a/webapp/src/redux/ducks/studies.ts b/webapp/src/redux/ducks/studies.ts index 2a52eda706..5983a5b1f1 100644 --- a/webapp/src/redux/ducks/studies.ts +++ b/webapp/src/redux/ducks/studies.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { createAction, createAsyncThunk, diff --git a/webapp/src/redux/ducks/studyMaps.ts b/webapp/src/redux/ducks/studyMaps.ts index 3075e0dbff..5825471851 100644 --- a/webapp/src/redux/ducks/studyMaps.ts +++ b/webapp/src/redux/ducks/studyMaps.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { createAction, createAsyncThunk, diff --git a/webapp/src/redux/ducks/studySyntheses.ts b/webapp/src/redux/ducks/studySyntheses.ts index a7ae6cdc52..67b4b20b1b 100644 --- a/webapp/src/redux/ducks/studySyntheses.ts +++ b/webapp/src/redux/ducks/studySyntheses.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { createAction, createAsyncThunk, diff --git a/webapp/src/redux/ducks/ui.ts b/webapp/src/redux/ducks/ui.ts index 85b428c858..2146894e61 100644 --- a/webapp/src/redux/ducks/ui.ts +++ b/webapp/src/redux/ducks/ui.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { createAction, createReducer } from "@reduxjs/toolkit"; import { makeActionName } from "../utils"; diff --git a/webapp/src/redux/ducks/users.ts b/webapp/src/redux/ducks/users.ts index 1ad9f7e124..5a53925c88 100644 --- a/webapp/src/redux/ducks/users.ts +++ b/webapp/src/redux/ducks/users.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { createAsyncThunk, createEntityAdapter, diff --git a/webapp/src/redux/hooks/useAppDispatch.ts b/webapp/src/redux/hooks/useAppDispatch.ts index 6c73d110fa..3d73afd0ad 100644 --- a/webapp/src/redux/hooks/useAppDispatch.ts +++ b/webapp/src/redux/hooks/useAppDispatch.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useDispatch } from "react-redux"; import { AppDispatch } from "../store"; diff --git a/webapp/src/redux/hooks/useAppSelector.ts b/webapp/src/redux/hooks/useAppSelector.ts index 8b0bcb08b0..fde4f7b514 100644 --- a/webapp/src/redux/hooks/useAppSelector.ts +++ b/webapp/src/redux/hooks/useAppSelector.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { TypedUseSelectorHook, useSelector } from "react-redux"; import { AppState } from "../ducks"; diff --git a/webapp/src/redux/hooks/useAsyncAppSelector.ts b/webapp/src/redux/hooks/useAsyncAppSelector.ts index 831cb294a1..1d478472e0 100644 --- a/webapp/src/redux/hooks/useAsyncAppSelector.ts +++ b/webapp/src/redux/hooks/useAsyncAppSelector.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { AsyncThunk } from "@reduxjs/toolkit"; import { useEffect } from "react"; import { AppState } from "../ducks"; diff --git a/webapp/src/redux/hooks/useStudyMaps.ts b/webapp/src/redux/hooks/useStudyMaps.ts index 0057ee95e0..10e417351c 100644 --- a/webapp/src/redux/hooks/useStudyMaps.ts +++ b/webapp/src/redux/hooks/useStudyMaps.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useState } from "react"; import { StudyMetadata } from "../../common/types"; import { AppState } from "../ducks"; diff --git a/webapp/src/redux/hooks/useStudySynthesis.ts b/webapp/src/redux/hooks/useStudySynthesis.ts index 0dcf068c6b..c81db5e610 100644 --- a/webapp/src/redux/hooks/useStudySynthesis.ts +++ b/webapp/src/redux/hooks/useStudySynthesis.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { useState } from "react"; import { useAsync } from "react-use"; import { StudyMetadata } from "../../common/types"; diff --git a/webapp/src/redux/middlewares/localStorageMiddleware.ts b/webapp/src/redux/middlewares/localStorageMiddleware.ts index 2cd2a288e9..fcb7b889bc 100644 --- a/webapp/src/redux/middlewares/localStorageMiddleware.ts +++ b/webapp/src/redux/middlewares/localStorageMiddleware.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { createListenerMiddleware, isAnyOf } from "@reduxjs/toolkit"; import { UserInfo } from "../../common/types"; import storage, { StorageKey } from "../../services/utils/localStorage"; diff --git a/webapp/src/redux/selectors.ts b/webapp/src/redux/selectors.ts index 61c0c71f59..b95bedddb3 100644 --- a/webapp/src/redux/selectors.ts +++ b/webapp/src/redux/selectors.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { createEntityAdapter, createSelector } from "@reduxjs/toolkit"; import { last } from "ramda"; import { diff --git a/webapp/src/redux/store.ts b/webapp/src/redux/store.ts index 0fc727390b..764ea38fc9 100644 --- a/webapp/src/redux/store.ts +++ b/webapp/src/redux/store.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { configureStore } from "@reduxjs/toolkit"; import { ThunkAction } from "redux-thunk"; import { AnyAction } from "redux"; diff --git a/webapp/src/redux/utils.ts b/webapp/src/redux/utils.ts index 66f2c890f8..8362c71b35 100644 --- a/webapp/src/redux/utils.ts +++ b/webapp/src/redux/utils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { createAction, ActionCreatorWithPayload, diff --git a/webapp/src/services/api/auth.ts b/webapp/src/services/api/auth.ts index 038f4c55ed..97e6185486 100644 --- a/webapp/src/services/api/auth.ts +++ b/webapp/src/services/api/auth.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import axios from "axios"; import client from "./client"; import { RefreshDTO as UserTokensDTO } from "../../common/types"; diff --git a/webapp/src/services/api/client.ts b/webapp/src/services/api/client.ts index 5ff02eb13b..3c2f8ee499 100644 --- a/webapp/src/services/api/client.ts +++ b/webapp/src/services/api/client.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import axios from "axios"; import debug from "debug"; import Cookies from "js-cookie"; diff --git a/webapp/src/services/api/downloads.ts b/webapp/src/services/api/downloads.ts index 4961bd1b3d..86c4f39037 100644 --- a/webapp/src/services/api/downloads.ts +++ b/webapp/src/services/api/downloads.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { getConfig } from "../config"; import client from "./client"; diff --git a/webapp/src/services/api/maintenance.ts b/webapp/src/services/api/maintenance.ts index 5cc707a1b7..bb9c331f43 100644 --- a/webapp/src/services/api/maintenance.ts +++ b/webapp/src/services/api/maintenance.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import client from "./client"; export const getMaintenanceMode = async (): Promise => { diff --git a/webapp/src/services/api/matrix.ts b/webapp/src/services/api/matrix.ts index 54e028b2ef..9449a7ee50 100644 --- a/webapp/src/services/api/matrix.ts +++ b/webapp/src/services/api/matrix.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { AxiosRequestConfig } from "axios"; import client from "./client"; import { diff --git a/webapp/src/services/api/misc.ts b/webapp/src/services/api/misc.ts index b4bbe4dff0..27f0427b24 100644 --- a/webapp/src/services/api/misc.ts +++ b/webapp/src/services/api/misc.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import client from "./client"; export interface APIVersion { diff --git a/webapp/src/services/api/studies/config/thematicTrimming/index.ts b/webapp/src/services/api/studies/config/thematicTrimming/index.ts index 0228eb98fc..7fb76588db 100644 --- a/webapp/src/services/api/studies/config/thematicTrimming/index.ts +++ b/webapp/src/services/api/studies/config/thematicTrimming/index.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import type { GetThematicTrimmingConfigParams, SetThematicTrimmingConfigParams, diff --git a/webapp/src/services/api/studies/config/thematicTrimming/types.ts b/webapp/src/services/api/studies/config/thematicTrimming/types.ts index 1137a9536f..c2dee142b9 100644 --- a/webapp/src/services/api/studies/config/thematicTrimming/types.ts +++ b/webapp/src/services/api/studies/config/thematicTrimming/types.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { StudyMetadata } from "../../../../../common/types"; export interface ThematicTrimmingConfig { diff --git a/webapp/src/services/api/studies/raw/index.ts b/webapp/src/services/api/studies/raw/index.ts index 63e46dc31a..dd53e3cf53 100644 --- a/webapp/src/services/api/studies/raw/index.ts +++ b/webapp/src/services/api/studies/raw/index.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import client from "../../client"; import type { DownloadMatrixParams } from "./types"; diff --git a/webapp/src/services/api/studies/raw/types.ts b/webapp/src/services/api/studies/raw/types.ts index e524fbdc72..4acaa7313e 100644 --- a/webapp/src/services/api/studies/raw/types.ts +++ b/webapp/src/services/api/studies/raw/types.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import type { StudyMetadata } from "../../../../common/types"; export interface DownloadMatrixParams { diff --git a/webapp/src/services/api/studies/tableMode/constants.ts b/webapp/src/services/api/studies/tableMode/constants.ts index acef3d51f6..9a60bb25e5 100644 --- a/webapp/src/services/api/studies/tableMode/constants.ts +++ b/webapp/src/services/api/studies/tableMode/constants.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + const AREA = "areas"; const LINK = "links"; const THERMAL = "thermals"; diff --git a/webapp/src/services/api/studies/tableMode/index.ts b/webapp/src/services/api/studies/tableMode/index.ts index 03915b259e..16d98a1b80 100644 --- a/webapp/src/services/api/studies/tableMode/index.ts +++ b/webapp/src/services/api/studies/tableMode/index.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import client from "../../client"; import { format } from "../../../../utils/stringUtils"; import type { diff --git a/webapp/src/services/api/studies/tableMode/types.ts b/webapp/src/services/api/studies/tableMode/types.ts index e20a167e27..0ce8591501 100644 --- a/webapp/src/services/api/studies/tableMode/types.ts +++ b/webapp/src/services/api/studies/tableMode/types.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { DeepPartial } from "react-hook-form"; import type { StudyMetadata } from "../../../../common/types"; import { TABLE_MODE_COLUMNS_BY_TYPE, TABLE_MODE_TYPES } from "./constants"; diff --git a/webapp/src/services/api/study.ts b/webapp/src/services/api/study.ts index a060bd8a16..1ec0abb24e 100644 --- a/webapp/src/services/api/study.ts +++ b/webapp/src/services/api/study.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { AxiosRequestConfig } from "axios"; import { isBoolean, trimCharsStart } from "ramda-adjunct"; import client from "./client"; diff --git a/webapp/src/services/api/studydata.ts b/webapp/src/services/api/studydata.ts index a39b55f20b..cce5d3c36f 100644 --- a/webapp/src/services/api/studydata.ts +++ b/webapp/src/services/api/studydata.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { LinkCreationInfoDTO, LinkInfoWithUI, diff --git a/webapp/src/services/api/tasks.ts b/webapp/src/services/api/tasks.ts index 27b0bec58f..75176b0be1 100644 --- a/webapp/src/services/api/tasks.ts +++ b/webapp/src/services/api/tasks.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { TaskDTO, TaskStatus } from "../../common/types"; import client from "./client"; diff --git a/webapp/src/services/api/user.ts b/webapp/src/services/api/user.ts index e8382bc180..df80a1f076 100644 --- a/webapp/src/services/api/user.ts +++ b/webapp/src/services/api/user.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import * as RA from "ramda-adjunct"; import client from "./client"; import { diff --git a/webapp/src/services/api/variant.ts b/webapp/src/services/api/variant.ts index 3e8f76132e..a3ec3bd202 100644 --- a/webapp/src/services/api/variant.ts +++ b/webapp/src/services/api/variant.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import client from "./client"; import { CommandDTO, diff --git a/webapp/src/services/api/xpansion.ts b/webapp/src/services/api/xpansion.ts index fb66a08a9a..1e69fb56fb 100644 --- a/webapp/src/services/api/xpansion.ts +++ b/webapp/src/services/api/xpansion.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { AxiosRequestConfig } from "axios"; import { MatrixType } from "../../common/types"; import { diff --git a/webapp/src/services/config.ts b/webapp/src/services/config.ts index 4f93290c8b..ab35b873c1 100644 --- a/webapp/src/services/config.ts +++ b/webapp/src/services/config.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import debug from "debug"; import axios from "axios"; import moment from "moment"; diff --git a/webapp/src/services/utils/index.ts b/webapp/src/services/utils/index.ts index f7980ee2bd..877f6e11f7 100644 --- a/webapp/src/services/utils/index.ts +++ b/webapp/src/services/utils/index.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import moment from "moment"; import debug from "debug"; import i18n, { TFunction } from "i18next"; diff --git a/webapp/src/services/utils/localStorage.ts b/webapp/src/services/utils/localStorage.ts index f55586feba..2c56058981 100644 --- a/webapp/src/services/utils/localStorage.ts +++ b/webapp/src/services/utils/localStorage.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import * as RA from "ramda-adjunct"; import packages from "../../../package.json"; import { UserInfo } from "../../common/types"; diff --git a/webapp/src/services/webSockets.ts b/webapp/src/services/webSockets.ts index e61bf0f4b7..7ead3aea69 100644 --- a/webapp/src/services/webSockets.ts +++ b/webapp/src/services/webSockets.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import debug from "debug"; import * as RA from "ramda-adjunct"; import { diff --git a/webapp/src/tests/mocks/mockGetBoundingClientRect.ts b/webapp/src/tests/mocks/mockGetBoundingClientRect.ts index 9297a4b1fe..de50849a3f 100644 --- a/webapp/src/tests/mocks/mockGetBoundingClientRect.ts +++ b/webapp/src/tests/mocks/mockGetBoundingClientRect.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + /** * Mocks the `getBoundingClientRect` method of the Element prototype. * diff --git a/webapp/src/tests/mocks/mockHTMLCanvasElement.ts b/webapp/src/tests/mocks/mockHTMLCanvasElement.ts index a31b128d40..dd498b7924 100644 --- a/webapp/src/tests/mocks/mockHTMLCanvasElement.ts +++ b/webapp/src/tests/mocks/mockHTMLCanvasElement.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + /** * Creates a mock for the HTML Canvas API in a testing environment. * diff --git a/webapp/src/tests/mocks/mockResizeObserver.ts b/webapp/src/tests/mocks/mockResizeObserver.ts index fc4c132eba..44a81c245d 100644 --- a/webapp/src/tests/mocks/mockResizeObserver.ts +++ b/webapp/src/tests/mocks/mockResizeObserver.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + /** * This is a mock implementation of the global `ResizeObserver`. * ResizeObserver is a web API used to monitor changes in an element's size. diff --git a/webapp/src/tests/setup.ts b/webapp/src/tests/setup.ts index 8f6da9b8c2..72b714e6e2 100644 --- a/webapp/src/tests/setup.ts +++ b/webapp/src/tests/setup.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import "@testing-library/jest-dom/vitest"; import { expect, afterEach } from "vitest"; import { cleanup } from "@testing-library/react"; diff --git a/webapp/src/theme.ts b/webapp/src/theme.ts index efbe96392a..18d42e5073 100644 --- a/webapp/src/theme.ts +++ b/webapp/src/theme.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import * as React from "react"; import { createTheme } from "@mui/material/styles"; diff --git a/webapp/src/types/i18next.d.ts b/webapp/src/types/i18next.d.ts index 557b3de4e2..d011ef2665 100644 --- a/webapp/src/types/i18next.d.ts +++ b/webapp/src/types/i18next.d.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import "i18next"; declare module "i18next" { diff --git a/webapp/src/types/reset.d.ts b/webapp/src/types/reset.d.ts index 875dabbf65..c739024785 100644 --- a/webapp/src/types/reset.d.ts +++ b/webapp/src/types/reset.d.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import "@total-typescript/ts-reset/array-includes"; import "@total-typescript/ts-reset/array-index-of"; import "@total-typescript/ts-reset/filter-boolean"; diff --git a/webapp/src/utils/feUtils.ts b/webapp/src/utils/feUtils.ts index 636fcb82ea..8d6cc00282 100644 --- a/webapp/src/utils/feUtils.ts +++ b/webapp/src/utils/feUtils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { HTMLInputTypeAttribute } from "react"; export interface InputObject { diff --git a/webapp/src/utils/fileUtils.ts b/webapp/src/utils/fileUtils.ts index 0233d6f984..6b9d7d120f 100644 --- a/webapp/src/utils/fileUtils.ts +++ b/webapp/src/utils/fileUtils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + /** * Triggers the download of a file with the given data and name. * diff --git a/webapp/src/utils/fnUtils.ts b/webapp/src/utils/fnUtils.ts index dd32ac4c97..81d35982de 100644 --- a/webapp/src/utils/fnUtils.ts +++ b/webapp/src/utils/fnUtils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + /** * A utility function designed to be used as a placeholder or stub. It can be used in situations where you might * otherwise be tempted to disable an ESLint rule temporarily, such as when you need to pass a function that diff --git a/webapp/src/utils/i18nUtils.ts b/webapp/src/utils/i18nUtils.ts index c613deab68..a13ca51c31 100644 --- a/webapp/src/utils/i18nUtils.ts +++ b/webapp/src/utils/i18nUtils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import i18n from "../i18n"; /** diff --git a/webapp/src/utils/muiUtils.ts b/webapp/src/utils/muiUtils.ts index e99d875109..5fb865b4a5 100644 --- a/webapp/src/utils/muiUtils.ts +++ b/webapp/src/utils/muiUtils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { SxProps, Theme } from "@mui/material"; export function mergeSxProp( diff --git a/webapp/src/utils/reactUtils.ts b/webapp/src/utils/reactUtils.ts index 0821bd4b82..44b04bd8fd 100644 --- a/webapp/src/utils/reactUtils.ts +++ b/webapp/src/utils/reactUtils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { setRef } from "@mui/material"; export function isDependencyList( diff --git a/webapp/src/utils/stringUtils.ts b/webapp/src/utils/stringUtils.ts index 823829fb29..bfe8d06f40 100644 --- a/webapp/src/utils/stringUtils.ts +++ b/webapp/src/utils/stringUtils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { deburr } from "lodash"; import * as R from "ramda"; import * as RA from "ramda-adjunct"; diff --git a/webapp/src/utils/studiesUtils.ts b/webapp/src/utils/studiesUtils.ts index 4072e09c51..164d851334 100644 --- a/webapp/src/utils/studiesUtils.ts +++ b/webapp/src/utils/studiesUtils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import moment from "moment"; import * as R from "ramda"; import * as RA from "ramda-adjunct"; diff --git a/webapp/src/utils/tsUtils.ts b/webapp/src/utils/tsUtils.ts index f368e9b8a4..180a7543f5 100644 --- a/webapp/src/utils/tsUtils.ts +++ b/webapp/src/utils/tsUtils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { O } from "ts-toolbelt"; /** diff --git a/webapp/src/utils/validationUtils.ts b/webapp/src/utils/validationUtils.ts index e6d85c21ba..1195fe8416 100644 --- a/webapp/src/utils/validationUtils.ts +++ b/webapp/src/utils/validationUtils.ts @@ -1,3 +1,16 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { t } from "i18next"; //////////////////////////////////////////////////////////////// diff --git a/webapp/src/vite-env.d.ts b/webapp/src/vite-env.d.ts index 11f02fe2a0..6868cb120f 100644 --- a/webapp/src/vite-env.d.ts +++ b/webapp/src/vite-env.d.ts @@ -1 +1,14 @@ +/** Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + /// From 00a52f3586b759326e9823242e9a12b4630014e9 Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Wed, 18 Sep 2024 18:26:16 +0200 Subject: [PATCH 006/182] chore(variants): increase timeout duration for variant generation (#2144) --- antarest/study/storage/variantstudy/variant_study_service.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/antarest/study/storage/variantstudy/variant_study_service.py b/antarest/study/storage/variantstudy/variant_study_service.py index 4433a6ac07..1e26a20c8a 100644 --- a/antarest/study/storage/variantstudy/variant_study_service.py +++ b/antarest/study/storage/variantstudy/variant_study_service.py @@ -497,7 +497,7 @@ def get( Returns: study data formatted in json """ - self._safe_generation(metadata, timeout=60) + self._safe_generation(metadata, timeout=600) self.repository.refresh(metadata) return super().get( metadata=metadata, @@ -939,7 +939,7 @@ def get_study_sim_result(self, study: VariantStudy) -> t.List[StudySimResultDTO] study: study Returns: study output data """ - self._safe_generation(study, timeout=60) + self._safe_generation(study, timeout=600) return super().get_study_sim_result(study=study) def set_reference_output(self, metadata: VariantStudy, output_id: str, status: bool) -> None: From 37561763e14772c02addaff637ccb1e6cabf6e0f Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Thu, 19 Sep 2024 10:39:53 +0200 Subject: [PATCH 007/182] style(license): reformat license header inside front-end (#2148) --- scripts/license_checker_and_adder.py | 16 +++------------- webapp/license-header.js | 13 +++++++++++++ webapp/src/common/types.ts | 3 ++- webapp/src/components/App/Api.tsx | 3 ++- webapp/src/components/App/Data/DataListing.tsx | 3 ++- webapp/src/components/App/Data/DataPropsView.tsx | 3 ++- .../App/Data/DatasetCreationDialog.tsx | 3 ++- webapp/src/components/App/Data/MatrixDialog.tsx | 3 ++- webapp/src/components/App/Data/index.tsx | 3 ++- webapp/src/components/App/Data/styles.ts | 3 ++- webapp/src/components/App/Data/utils.tsx | 3 ++- .../components/App/Settings/Groups/Header.tsx | 3 ++- .../Settings/Groups/dialog/CreateGroupDialog.tsx | 3 ++- .../Groups/dialog/GroupFormDialog/GroupForm.tsx | 3 ++- .../Groups/dialog/GroupFormDialog/index.tsx | 3 ++- .../Settings/Groups/dialog/UpdateGroupDialog.tsx | 3 ++- .../src/components/App/Settings/Groups/index.tsx | 3 ++- .../App/Settings/Maintenance/index.tsx | 3 ++- .../components/App/Settings/Tokens/Header.tsx | 3 ++- .../Settings/Tokens/dialog/CreateTokenDialog.tsx | 3 ++- .../Tokens/dialog/TokenFormDialog/TokenForm.tsx | 3 ++- .../Tokens/dialog/TokenFormDialog/index.tsx | 3 ++- .../Settings/Tokens/dialog/TokenInfoDialog.tsx | 3 ++- .../src/components/App/Settings/Tokens/index.tsx | 3 ++- .../src/components/App/Settings/Users/Header.tsx | 3 ++- .../Settings/Users/dialog/CreateUserDialog.tsx | 3 ++- .../Settings/Users/dialog/UpdateUserDialog.tsx | 3 ++- .../Users/dialog/UserFormDialog/UserForm.tsx | 3 ++- .../Users/dialog/UserFormDialog/index.tsx | 3 ++- .../src/components/App/Settings/Users/index.tsx | 3 ++- webapp/src/components/App/Settings/index.tsx | 3 ++- webapp/src/components/App/Settings/utils.ts | 3 ++- .../DraggableCommands/CommandImportButton.tsx | 3 ++- .../CommandListItem/CommandMatrixViewer.tsx | 3 ++- .../DraggableCommands/CommandListItem/index.tsx | 3 ++- .../DraggableCommands/CommandListItem/style.ts | 3 ++- .../DraggableCommands/CommandListView.tsx | 3 ++- .../Singlestudy/Commands/Edition/commandTypes.ts | 3 ++- .../App/Singlestudy/Commands/Edition/index.tsx | 3 ++- .../App/Singlestudy/Commands/Edition/style.ts | 3 ++- .../App/Singlestudy/Commands/Edition/utils.ts | 3 ++- .../App/Singlestudy/Commands/index.tsx | 3 ++- .../components/App/Singlestudy/Commands/style.ts | 3 ++- .../InformationView/CreateVariantDialog.tsx | 3 ++- .../LauncherHistory/JobStepper.tsx | 3 ++- .../InformationView/LauncherHistory/index.tsx | 3 ++- .../InformationView/LauncherHistory/style.ts | 3 ++- .../InformationView/Notes/DetailsList.tsx | 3 ++- .../Notes/NodeEditorModal/index.tsx | 3 ++- .../Notes/NodeEditorModal/style.ts | 3 ++- .../HomeView/InformationView/Notes/index.tsx | 3 ++- .../HomeView/InformationView/Notes/utils.ts | 3 ++- .../HomeView/InformationView/index.tsx | 3 ++- .../Singlestudy/HomeView/StudyTreeView/index.tsx | 3 ++- .../HomeView/StudyTreeView/treeconfig.ts | 3 ++- .../Singlestudy/HomeView/StudyTreeView/utils.ts | 3 ++- .../App/Singlestudy/HomeView/index.tsx | 3 ++- .../App/Singlestudy/NavHeader/Actions.tsx | 3 ++- .../App/Singlestudy/NavHeader/ActionsMenu.tsx | 3 ++- .../App/Singlestudy/NavHeader/Details.tsx | 3 ++- .../App/Singlestudy/NavHeader/index.tsx | 3 ++- .../App/Singlestudy/PropertiesDialog.tsx | 3 ++- .../components/App/Singlestudy/UpgradeDialog.tsx | 3 ++- .../Configuration/AdequacyPatch/Fields.tsx | 3 ++- .../Configuration/AdequacyPatch/index.tsx | 3 ++- .../explore/Configuration/AdequacyPatch/utils.ts | 3 ++- .../Configuration/AdvancedParameters/Fields.tsx | 3 ++- .../Configuration/AdvancedParameters/index.tsx | 3 ++- .../Configuration/AdvancedParameters/utils.ts | 3 ++- .../explore/Configuration/General/Fields.tsx | 3 ++- .../dialogs/ScenarioBuilderDialog/Table.tsx | 3 ++- .../dialogs/ScenarioBuilderDialog/index.tsx | 3 ++- .../dialogs/ScenarioBuilderDialog/utils.ts | 3 ++- .../dialogs/ScenarioBuilderDialog/withAreas.tsx | 3 ++- .../dialogs/ScenarioPlaylistDialog/index.tsx | 3 ++- .../dialogs/ScenarioPlaylistDialog/utils.ts | 3 ++- .../dialogs/ThematicTrimmingDialog/index.tsx | 3 ++- .../dialogs/ThematicTrimmingDialog/utils.ts | 3 ++- .../explore/Configuration/General/index.tsx | 3 ++- .../explore/Configuration/General/styles.ts | 3 ++- .../explore/Configuration/General/utils.ts | 3 ++- .../Configuration/Optimization/Fields.tsx | 3 ++- .../explore/Configuration/Optimization/index.tsx | 3 ++- .../explore/Configuration/Optimization/utils.ts | 3 ++- .../TimeSeriesManagement/Fields.tsx | 3 ++- .../Configuration/TimeSeriesManagement/index.tsx | 3 ++- .../Configuration/TimeSeriesManagement/utils.ts | 3 ++- .../Singlestudy/explore/Configuration/index.tsx | 3 ++- .../App/Singlestudy/explore/Debug/Data/Json.tsx | 3 ++- .../Singlestudy/explore/Debug/Data/Matrix.tsx | 3 ++- .../App/Singlestudy/explore/Debug/Data/Text.tsx | 3 ++- .../App/Singlestudy/explore/Debug/Data/index.tsx | 3 ++- .../App/Singlestudy/explore/Debug/Data/style.ts | 3 ++- .../Singlestudy/explore/Debug/DebugContext.ts | 3 ++- .../explore/Debug/Tree/FileTreeItem.tsx | 3 ++- .../App/Singlestudy/explore/Debug/Tree/index.tsx | 3 ++- .../App/Singlestudy/explore/Debug/index.tsx | 3 ++- .../App/Singlestudy/explore/Debug/utils.ts | 3 ++- .../explore/Modelization/Areas/AreaPropsView.tsx | 3 ++- .../explore/Modelization/Areas/AreasTab.tsx | 3 ++- .../Areas/Hydro/Allocation/AllocationField.tsx | 3 ++- .../Areas/Hydro/Allocation/Fields.tsx | 3 ++- .../Areas/Hydro/Allocation/index.tsx | 3 ++- .../Modelization/Areas/Hydro/Allocation/utils.ts | 3 ++- .../Areas/Hydro/Correlation/CorrelationField.tsx | 3 ++- .../Areas/Hydro/Correlation/Fields.tsx | 3 ++- .../Areas/Hydro/Correlation/index.tsx | 3 ++- .../Areas/Hydro/Correlation/utils.ts | 3 ++- .../Modelization/Areas/Hydro/HydroMatrix.tsx | 3 ++- .../Areas/Hydro/HydroMatrixDialog.tsx | 3 ++- .../Areas/Hydro/InflowStructure/index.tsx | 3 ++- .../Areas/Hydro/InflowStructure/utils.ts | 3 ++- .../Areas/Hydro/ManagementOptions/Fields.tsx | 3 ++- .../Areas/Hydro/ManagementOptions/index.tsx | 3 ++- .../Areas/Hydro/ManagementOptions/utils.ts | 3 ++- .../Areas/Hydro/SplitHydroMatrix.tsx | 3 ++- .../Areas/Hydro/ViewMatrixButton.tsx | 3 ++- .../Areas/Hydro/hooks/useAreasOptions.ts | 3 ++- .../explore/Modelization/Areas/Hydro/index.tsx | 3 ++- .../explore/Modelization/Areas/Hydro/style.ts | 3 ++- .../explore/Modelization/Areas/Hydro/utils.ts | 3 ++- .../explore/Modelization/Areas/Load.tsx | 3 ++- .../explore/Modelization/Areas/MiscGen.tsx | 3 ++- .../Modelization/Areas/Properties/Fields.tsx | 3 ++- .../Modelization/Areas/Properties/index.tsx | 3 ++- .../Modelization/Areas/Properties/utils.ts | 3 ++- .../Modelization/Areas/Renewables/Fields.tsx | 3 ++- .../Modelization/Areas/Renewables/Form.tsx | 3 ++- .../Modelization/Areas/Renewables/Matrix.tsx | 3 ++- .../Modelization/Areas/Renewables/index.tsx | 3 ++- .../Modelization/Areas/Renewables/utils.ts | 3 ++- .../explore/Modelization/Areas/Reserve.tsx | 3 ++- .../explore/Modelization/Areas/Solar.tsx | 3 ++- .../Modelization/Areas/Storages/Fields.tsx | 3 ++- .../explore/Modelization/Areas/Storages/Form.tsx | 3 ++- .../Modelization/Areas/Storages/Matrix.tsx | 3 ++- .../Modelization/Areas/Storages/index.tsx | 3 ++- .../explore/Modelization/Areas/Storages/utils.ts | 3 ++- .../Modelization/Areas/Thermal/Fields.tsx | 3 ++- .../explore/Modelization/Areas/Thermal/Form.tsx | 3 ++- .../Modelization/Areas/Thermal/Matrix.tsx | 3 ++- .../explore/Modelization/Areas/Thermal/index.tsx | 3 ++- .../explore/Modelization/Areas/Thermal/utils.ts | 3 ++- .../explore/Modelization/Areas/Wind.tsx | 3 ++- .../Modelization/Areas/common/clustersUtils.ts | 3 ++- .../explore/Modelization/Areas/index.tsx | 3 ++- .../explore/Modelization/Areas/style.ts | 3 ++- .../BindingConstraints/AddDialog.tsx | 3 ++- .../BindingConstraints/BindingConstPropsView.tsx | 3 ++- .../AddConstraintTermForm/OptionsList.tsx | 3 ++- .../AddConstraintTermForm/index.tsx | 3 ++- .../AddConstraintTermDialog/index.tsx | 3 ++- .../BindingConstView/BindingConstForm.tsx | 3 ++- .../BindingConstView/ConstraintFields.tsx | 3 ++- .../ConstraintTerm/OptionsList.tsx | 3 ++- .../BindingConstView/ConstraintTerm/index.tsx | 3 ++- .../BindingConstView/Matrix.tsx | 3 ++- .../constraintviews/ConstraintElement.tsx | 3 ++- .../constraintviews/OffsetInput.tsx | 3 ++- .../BindingConstView/constraintviews/style.ts | 3 ++- .../BindingConstView/index.tsx | 3 ++- .../BindingConstraints/BindingConstView/utils.ts | 3 ++- .../Modelization/BindingConstraints/index.tsx | 3 ++- .../explore/Modelization/Links/LinkPropsView.tsx | 3 ++- .../Modelization/Links/LinkView/LinkForm.tsx | 3 ++- .../Links/LinkView/LinkMatrixView.tsx | 3 ++- .../Modelization/Links/LinkView/index.tsx | 3 ++- .../explore/Modelization/Links/LinkView/utils.ts | 3 ++- .../explore/Modelization/Links/index.tsx | 3 ++- .../Modelization/Map/Areas/AreaConfig.tsx | 3 ++- .../explore/Modelization/Map/Areas/AreaLink.tsx | 3 ++- .../explore/Modelization/Map/Areas/AreaLinks.tsx | 3 ++- .../Modelization/Map/Areas/DeleteAreaDialog.tsx | 3 ++- .../explore/Modelization/Map/Areas/index.tsx | 3 ++- .../explore/Modelization/Map/Areas/style.ts | 3 ++- .../Modelization/Map/CreateAreaDialog.tsx | 3 ++- .../MapConfig/Districts/CreateDistrictDialog.tsx | 3 ++- .../MapConfig/Districts/UpdateDistrictDialog.tsx | 3 ++- .../Map/MapConfig/Districts/index.tsx | 3 ++- .../Map/MapConfig/Layers/CreateLayerDialog.tsx | 3 ++- .../Map/MapConfig/Layers/UpdateLayerDialog.tsx | 3 ++- .../Modelization/Map/MapConfig/Layers/index.tsx | 3 ++- .../explore/Modelization/Map/MapConfig/index.tsx | 3 ++- .../Modelization/Map/MapControlButtons.tsx | 3 ++- .../explore/Modelization/Map/MapGraph.tsx | 3 ++- .../explore/Modelization/Map/MapHeader.tsx | 3 ++- .../explore/Modelization/Map/Node.tsx | 3 ++- .../explore/Modelization/Map/index.tsx | 3 ++- .../explore/Modelization/Map/style.ts | 3 ++- .../explore/Modelization/Map/utils.ts | 3 ++- .../Singlestudy/explore/Modelization/index.tsx | 3 ++- .../explore/Results/ResultDetails/index.tsx | 3 ++- .../explore/Results/ResultDetails/utils.ts | 3 ++- .../App/Singlestudy/explore/Results/index.tsx | 3 ++- .../App/Singlestudy/explore/TabWrapper.tsx | 3 ++- .../dialogs/CreateTemplateTableDialog.tsx | 3 ++- .../dialogs/TableTemplateFormDialog.tsx | 3 ++- .../dialogs/UpdateTemplateTableDialog.tsx | 3 ++- .../Singlestudy/explore/TableModeList/index.tsx | 3 ++- .../Singlestudy/explore/TableModeList/utils.ts | 3 ++- .../Xpansion/Candidates/CandidateForm.tsx | 3 ++- .../Candidates/CreateCandidateDialog.tsx | 3 ++- .../Xpansion/Candidates/XpansionPropsView.tsx | 3 ++- .../explore/Xpansion/Candidates/index.tsx | 3 ++- .../Singlestudy/explore/Xpansion/Capacities.tsx | 3 ++- .../Singlestudy/explore/Xpansion/Constraints.tsx | 3 ++- .../Singlestudy/explore/Xpansion/FileList.tsx | 3 ++- .../explore/Xpansion/Settings/SettingsForm.tsx | 3 ++- .../explore/Xpansion/Settings/index.tsx | 3 ++- .../App/Singlestudy/explore/Xpansion/Weights.tsx | 3 ++- .../App/Singlestudy/explore/Xpansion/index.tsx | 3 ++- .../Singlestudy/explore/Xpansion/share/styles.ts | 3 ++- .../App/Singlestudy/explore/Xpansion/types.ts | 3 ++- .../Singlestudy/explore/common/ListElement.tsx | 3 ++- .../Singlestudy/explore/common/OutputFilters.tsx | 3 ++- .../App/Singlestudy/explore/common/types.ts | 3 ++- webapp/src/components/App/Singlestudy/index.tsx | 3 ++- .../src/components/App/Studies/BatchModeMenu.tsx | 3 ++- .../components/App/Studies/CreateStudyDialog.tsx | 3 ++- .../Filter/MultipleLinkElement/index.tsx | 3 ++- .../Filter/MultipleLinkElement/style.ts | 3 ++- .../Filter/SingleLinkElement/index.tsx | 3 ++- .../Filter/SingleLinkElement/style.ts | 3 ++- .../ExportModal/ExportFilter/Filter/index.tsx | 3 ++- .../ExportModal/ExportFilter/Filter/style.ts | 3 ++- .../ExportModal/ExportFilter/TagSelect/index.tsx | 3 ++- .../ExportModal/ExportFilter/TagSelect/style.ts | 3 ++- .../Studies/ExportModal/ExportFilter/index.tsx | 3 ++- .../components/App/Studies/ExportModal/index.tsx | 3 ++- .../src/components/App/Studies/FilterDrawer.tsx | 3 ++- .../src/components/App/Studies/HeaderBottom.tsx | 3 ++- .../components/App/Studies/HeaderTopRight.tsx | 3 ++- .../components/App/Studies/LauncherDialog.tsx | 3 ++- .../components/App/Studies/MoveStudyDialog.tsx | 3 ++- .../src/components/App/Studies/RefreshButton.tsx | 3 ++- webapp/src/components/App/Studies/SideNav.tsx | 3 ++- .../App/Studies/StudiesList/StudyCardCell.tsx | 3 ++- .../components/App/Studies/StudiesList/index.tsx | 3 ++- webapp/src/components/App/Studies/StudyCard.tsx | 3 ++- webapp/src/components/App/Studies/StudyTree.tsx | 3 ++- webapp/src/components/App/Studies/index.tsx | 3 ++- webapp/src/components/App/Studies/utils.ts | 3 ++- webapp/src/components/App/Tasks/JobTableView.tsx | 3 ++- .../components/App/Tasks/LaunchJobLogView.tsx | 3 ++- .../components/App/Tasks/NotificationBadge.tsx | 3 ++- webapp/src/components/App/Tasks/index.tsx | 3 ++- webapp/src/components/App/index.tsx | 3 ++- webapp/src/components/common/ButtonBack.tsx | 3 ++- webapp/src/components/common/DocLink.tsx | 3 ++- webapp/src/components/common/DownloadLink.tsx | 3 ++- .../components/common/DownloadMatrixButton.tsx | 3 ++- .../common/DynamicDataTable/TableRowGroup.tsx | 3 ++- .../common/DynamicDataTable/TableRowItem.tsx | 3 ++- .../common/DynamicDataTable/TableToolbar.tsx | 3 ++- .../components/common/DynamicDataTable/index.tsx | 3 ++- .../components/common/DynamicDataTable/utils.ts | 3 ++- webapp/src/components/common/DynamicList.tsx | 3 ++- .../common/EditableMatrix/MatrixGraphView.tsx | 3 ++- .../components/common/EditableMatrix/index.tsx | 3 ++- .../components/common/EditableMatrix/style.ts | 3 ++- .../components/common/EditableMatrix/utils.ts | 3 ++- webapp/src/components/common/Fieldset.tsx | 3 ++- webapp/src/components/common/FileTable.tsx | 3 ++- .../src/components/common/Form/FormContext.tsx | 3 ++- webapp/src/components/common/Form/index.tsx | 3 ++- webapp/src/components/common/Form/types.ts | 3 ++- .../src/components/common/Form/useFormApiPlus.ts | 3 ++- .../components/common/Form/useFormUndoRedo.ts | 3 ++- webapp/src/components/common/Form/utils.ts | 3 ++- .../common/GroupedDataTable/CreateDialog.tsx | 3 ++- .../common/GroupedDataTable/DuplicateDialog.tsx | 3 ++- .../cellRenderers/BooleanCell.tsx | 3 ++- .../components/common/GroupedDataTable/index.tsx | 3 ++- .../components/common/GroupedDataTable/types.ts | 3 ++- .../components/common/GroupedDataTable/utils.ts | 3 ++- webapp/src/components/common/Handsontable.tsx | 3 ++- .../src/components/common/JSONEditor/index.tsx | 3 ++- .../common/LinearProgressWithLabel.tsx | 3 ++- webapp/src/components/common/LogModal.tsx | 3 ++- .../src/components/common/MatrixGrid/Matrix.tsx | 3 ++- .../common/MatrixGrid/MatrixActions.tsx | 3 ++- .../components/common/MatrixGrid/index.test.tsx | 3 ++- .../src/components/common/MatrixGrid/index.tsx | 3 ++- webapp/src/components/common/MatrixGrid/style.ts | 3 ++- webapp/src/components/common/MatrixGrid/types.ts | 3 ++- .../common/MatrixGrid/useColumnMapping.test.ts | 3 ++- .../common/MatrixGrid/useColumnMapping.ts | 3 ++- .../common/MatrixGrid/useGridCellContent.test.ts | 3 ++- .../common/MatrixGrid/useGridCellContent.ts | 3 ++- .../common/MatrixGrid/useMatrix.test.tsx | 3 ++- .../components/common/MatrixGrid/useMatrix.ts | 3 ++- .../components/common/MatrixGrid/utils.test.ts | 3 ++- webapp/src/components/common/MatrixGrid/utils.ts | 3 ++- .../common/MatrixInput/MatrixAssignDialog.tsx | 3 ++- .../src/components/common/MatrixInput/index.tsx | 3 ++- .../src/components/common/MatrixInput/style.ts | 3 ++- webapp/src/components/common/PropertiesView.tsx | 3 ++- webapp/src/components/common/SelectMulti.tsx | 3 ++- webapp/src/components/common/SelectSingle.tsx | 3 ++- .../src/components/common/SnackErrorMessage.tsx | 3 ++- webapp/src/components/common/SplitLayoutView.tsx | 3 ++- webapp/src/components/common/SplitView/index.tsx | 3 ++- webapp/src/components/common/StarToggle.tsx | 3 ++- webapp/src/components/common/TableForm/Table.tsx | 3 ++- webapp/src/components/common/TableForm/index.tsx | 3 ++- webapp/src/components/common/TableForm/utils.ts | 3 ++- webapp/src/components/common/TableMode.tsx | 3 ++- webapp/src/components/common/TabsView.tsx | 3 ++- webapp/src/components/common/TextSeparator.tsx | 3 ++- .../components/common/buttons/SplitButton.tsx | 3 ++- .../components/common/dialogs/BasicDialog.tsx | 3 ++- .../common/dialogs/ConfirmationDialog.tsx | 3 ++- .../common/dialogs/DataViewerDialog/index.tsx | 3 ++- .../common/dialogs/DataViewerDialog/styles.ts | 3 ++- .../components/common/dialogs/DigestDialog.tsx | 3 ++- .../src/components/common/dialogs/FormDialog.tsx | 3 ++- .../components/common/dialogs/ImportDialog.tsx | 3 ++- .../src/components/common/dialogs/OkDialog.tsx | 3 ++- .../components/common/fieldEditors/BooleanFE.tsx | 3 ++- .../common/fieldEditors/CheckBoxFE.tsx | 3 ++- .../common/fieldEditors/CheckboxesTagsFE.tsx | 3 ++- .../common/fieldEditors/ColorPickerFE/index.tsx | 3 ++- .../common/fieldEditors/ColorPickerFE/utils.ts | 3 ++- .../common/fieldEditors/ListFE/index.tsx | 3 ++- .../common/fieldEditors/ListFE/utils.ts | 3 ++- .../components/common/fieldEditors/NumberFE.tsx | 3 ++- .../common/fieldEditors/PasswordFE.tsx | 3 ++- .../components/common/fieldEditors/RadioFE.tsx | 3 ++- .../components/common/fieldEditors/SearchFE.tsx | 3 ++- .../components/common/fieldEditors/SelectFE.tsx | 3 ++- .../components/common/fieldEditors/StringFE.tsx | 3 ++- .../components/common/fieldEditors/SwitchFE.tsx | 3 ++- .../src/components/common/loaders/AppLoader.tsx | 3 ++- .../common/loaders/BackdropLoading.tsx | 3 ++- .../common/loaders/GlobalPageLoadingError.tsx | 3 ++- .../components/common/loaders/SimpleLoader.tsx | 3 ++- webapp/src/components/common/page/BasicPage.tsx | 3 ++- webapp/src/components/common/page/RootPage.tsx | 3 ++- .../src/components/common/page/SimpleContent.tsx | 3 ++- .../src/components/common/page/ViewWrapper.tsx | 3 ++- .../components/common/utils/UsePromiseCond.tsx | 3 ++- webapp/src/components/common/utils/constants.ts | 3 ++- webapp/src/components/wrappers/LoginWrapper.tsx | 3 ++- .../MaintenanceWrapper/MessageInfoDialog.tsx | 3 ++- .../wrappers/MaintenanceWrapper/Stars.tsx | 3 ++- .../wrappers/MaintenanceWrapper/index.tsx | 3 ++- .../components/wrappers/MenuWrapper/index.tsx | 3 ++- .../components/wrappers/MenuWrapper/styles.ts | 3 ++- webapp/src/hoc/reactHookFormSupport.tsx | 3 ++- webapp/src/hooks/useAutoUpdateRef.ts | 3 ++- webapp/src/hooks/useBlocker.ts | 3 ++- webapp/src/hooks/useDebounce.ts | 3 ++- webapp/src/hooks/useDebouncedEffect.ts | 3 ++- webapp/src/hooks/useDebouncedState.ts | 3 ++- webapp/src/hooks/useEnqueueErrorSnackbar.tsx | 3 ++- webapp/src/hooks/useMemoLocked.ts | 3 ++- webapp/src/hooks/useNavigateOnCondition.ts | 3 ++- webapp/src/hooks/useOperationInProgressCount.ts | 3 ++- webapp/src/hooks/usePromise.ts | 3 ++- webapp/src/hooks/usePromiseWithSnackbarError.ts | 3 ++- webapp/src/hooks/usePrompt.ts | 3 ++- webapp/src/hooks/useUpdateEffectOnce.ts | 3 ++- webapp/src/i18n.ts | 3 ++- webapp/src/index.test.tsx | 3 ++- webapp/src/index.tsx | 3 ++- .../redux/components/UseAsyncAppSelectorCond.tsx | 3 ++- webapp/src/redux/ducks/auth.ts | 3 ++- webapp/src/redux/ducks/groups.ts | 3 ++- webapp/src/redux/ducks/index.ts | 3 ++- webapp/src/redux/ducks/studies.ts | 3 ++- webapp/src/redux/ducks/studyMaps.ts | 3 ++- webapp/src/redux/ducks/studySyntheses.ts | 3 ++- webapp/src/redux/ducks/ui.ts | 3 ++- webapp/src/redux/ducks/users.ts | 3 ++- webapp/src/redux/hooks/useAppDispatch.ts | 3 ++- webapp/src/redux/hooks/useAppSelector.ts | 3 ++- webapp/src/redux/hooks/useAsyncAppSelector.ts | 3 ++- webapp/src/redux/hooks/useStudyMaps.ts | 3 ++- webapp/src/redux/hooks/useStudySynthesis.ts | 3 ++- .../redux/middlewares/localStorageMiddleware.ts | 3 ++- webapp/src/redux/selectors.ts | 3 ++- webapp/src/redux/store.ts | 3 ++- webapp/src/redux/utils.ts | 3 ++- webapp/src/services/api/auth.ts | 3 ++- webapp/src/services/api/client.ts | 3 ++- webapp/src/services/api/downloads.ts | 3 ++- webapp/src/services/api/maintenance.ts | 3 ++- webapp/src/services/api/matrix.ts | 3 ++- webapp/src/services/api/misc.ts | 3 ++- .../api/studies/config/thematicTrimming/index.ts | 3 ++- .../api/studies/config/thematicTrimming/types.ts | 3 ++- webapp/src/services/api/studies/raw/index.ts | 3 ++- webapp/src/services/api/studies/raw/types.ts | 3 ++- .../services/api/studies/tableMode/constants.ts | 3 ++- .../src/services/api/studies/tableMode/index.ts | 3 ++- .../src/services/api/studies/tableMode/types.ts | 3 ++- webapp/src/services/api/study.ts | 3 ++- webapp/src/services/api/studydata.ts | 3 ++- webapp/src/services/api/tasks.ts | 3 ++- webapp/src/services/api/user.ts | 3 ++- webapp/src/services/api/variant.ts | 3 ++- webapp/src/services/api/xpansion.ts | 3 ++- webapp/src/services/config.ts | 3 ++- webapp/src/services/utils/index.ts | 3 ++- webapp/src/services/utils/localStorage.ts | 3 ++- webapp/src/services/webSockets.ts | 3 ++- .../src/tests/mocks/mockGetBoundingClientRect.ts | 3 ++- webapp/src/tests/mocks/mockHTMLCanvasElement.ts | 3 ++- webapp/src/tests/mocks/mockResizeObserver.ts | 3 ++- webapp/src/tests/setup.ts | 3 ++- webapp/src/theme.ts | 3 ++- webapp/src/types/i18next.d.ts | 3 ++- webapp/src/types/reset.d.ts | 3 ++- webapp/src/utils/feUtils.ts | 3 ++- webapp/src/utils/fileUtils.ts | 3 ++- webapp/src/utils/fnUtils.ts | 3 ++- webapp/src/utils/i18nUtils.ts | 3 ++- webapp/src/utils/muiUtils.ts | 3 ++- webapp/src/utils/reactUtils.ts | 3 ++- webapp/src/utils/stringUtils.ts | 3 ++- webapp/src/utils/studiesUtils.ts | 3 ++- webapp/src/utils/tsUtils.ts | 3 ++- webapp/src/utils/validationUtils.ts | 3 ++- webapp/src/vite-env.d.ts | 3 ++- 424 files changed, 860 insertions(+), 435 deletions(-) create mode 100644 webapp/license-header.js diff --git a/scripts/license_checker_and_adder.py b/scripts/license_checker_and_adder.py index 5fbfff0eeb..31139ae87a 100755 --- a/scripts/license_checker_and_adder.py +++ b/scripts/license_checker_and_adder.py @@ -21,19 +21,9 @@ # This file is part of the Antares project. """ -FRONTEND_LICENSE_HEADER = """/** Copyright (c) 2024, RTE (https://www.rte-france.com) - * - * See AUTHORS.txt - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * SPDX-License-Identifier: MPL-2.0 - * - * This file is part of the Antares project. - */ -""" + +front_license_path = Path(__file__).resolve().parent.parent / "webapp" / "license-header.js" +FRONTEND_LICENSE_HEADER = front_license_path.read_text() def is_license_file(filename: str) -> bool: diff --git a/webapp/license-header.js b/webapp/license-header.js new file mode 100644 index 0000000000..a5bb574db3 --- /dev/null +++ b/webapp/license-header.js @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ \ No newline at end of file diff --git a/webapp/src/common/types.ts b/webapp/src/common/types.ts index ef080b087e..20893f0abe 100644 --- a/webapp/src/common/types.ts +++ b/webapp/src/common/types.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Api.tsx b/webapp/src/components/App/Api.tsx index f8cf031998..837b80e729 100644 --- a/webapp/src/components/App/Api.tsx +++ b/webapp/src/components/App/Api.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Data/DataListing.tsx b/webapp/src/components/App/Data/DataListing.tsx index 2a583d9c5e..30968f4f30 100644 --- a/webapp/src/components/App/Data/DataListing.tsx +++ b/webapp/src/components/App/Data/DataListing.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Data/DataPropsView.tsx b/webapp/src/components/App/Data/DataPropsView.tsx index 2d11b21174..c4b5215cf5 100644 --- a/webapp/src/components/App/Data/DataPropsView.tsx +++ b/webapp/src/components/App/Data/DataPropsView.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Data/DatasetCreationDialog.tsx b/webapp/src/components/App/Data/DatasetCreationDialog.tsx index 84b40d02da..90764a1977 100644 --- a/webapp/src/components/App/Data/DatasetCreationDialog.tsx +++ b/webapp/src/components/App/Data/DatasetCreationDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Data/MatrixDialog.tsx b/webapp/src/components/App/Data/MatrixDialog.tsx index 7288dd024e..c02bf8a6c1 100644 --- a/webapp/src/components/App/Data/MatrixDialog.tsx +++ b/webapp/src/components/App/Data/MatrixDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Data/index.tsx b/webapp/src/components/App/Data/index.tsx index 7739175bc3..ea35d174f2 100644 --- a/webapp/src/components/App/Data/index.tsx +++ b/webapp/src/components/App/Data/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Data/styles.ts b/webapp/src/components/App/Data/styles.ts index 0af8363446..fe3be93d6b 100644 --- a/webapp/src/components/App/Data/styles.ts +++ b/webapp/src/components/App/Data/styles.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Data/utils.tsx b/webapp/src/components/App/Data/utils.tsx index c21f9ee0f3..a05c03a790 100644 --- a/webapp/src/components/App/Data/utils.tsx +++ b/webapp/src/components/App/Data/utils.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Settings/Groups/Header.tsx b/webapp/src/components/App/Settings/Groups/Header.tsx index b5020cc9b9..509763f096 100644 --- a/webapp/src/components/App/Settings/Groups/Header.tsx +++ b/webapp/src/components/App/Settings/Groups/Header.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Settings/Groups/dialog/CreateGroupDialog.tsx b/webapp/src/components/App/Settings/Groups/dialog/CreateGroupDialog.tsx index e659a0ca02..c35544a668 100644 --- a/webapp/src/components/App/Settings/Groups/dialog/CreateGroupDialog.tsx +++ b/webapp/src/components/App/Settings/Groups/dialog/CreateGroupDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/GroupForm.tsx b/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/GroupForm.tsx index 76db3f8e45..9027ee1bcd 100644 --- a/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/GroupForm.tsx +++ b/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/GroupForm.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/index.tsx b/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/index.tsx index 4c87b3e0dd..4f96b8a077 100644 --- a/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/index.tsx +++ b/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Settings/Groups/dialog/UpdateGroupDialog.tsx b/webapp/src/components/App/Settings/Groups/dialog/UpdateGroupDialog.tsx index 284b482a44..42e4541ed9 100644 --- a/webapp/src/components/App/Settings/Groups/dialog/UpdateGroupDialog.tsx +++ b/webapp/src/components/App/Settings/Groups/dialog/UpdateGroupDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Settings/Groups/index.tsx b/webapp/src/components/App/Settings/Groups/index.tsx index fac341a528..dd28441273 100644 --- a/webapp/src/components/App/Settings/Groups/index.tsx +++ b/webapp/src/components/App/Settings/Groups/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Settings/Maintenance/index.tsx b/webapp/src/components/App/Settings/Maintenance/index.tsx index 0d89292813..624006a4e6 100644 --- a/webapp/src/components/App/Settings/Maintenance/index.tsx +++ b/webapp/src/components/App/Settings/Maintenance/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Settings/Tokens/Header.tsx b/webapp/src/components/App/Settings/Tokens/Header.tsx index 0ed3f0146d..a64c3cc599 100644 --- a/webapp/src/components/App/Settings/Tokens/Header.tsx +++ b/webapp/src/components/App/Settings/Tokens/Header.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Settings/Tokens/dialog/CreateTokenDialog.tsx b/webapp/src/components/App/Settings/Tokens/dialog/CreateTokenDialog.tsx index 342328d765..c735ddb702 100644 --- a/webapp/src/components/App/Settings/Tokens/dialog/CreateTokenDialog.tsx +++ b/webapp/src/components/App/Settings/Tokens/dialog/CreateTokenDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/TokenForm.tsx b/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/TokenForm.tsx index b72c3f6780..44018200dd 100644 --- a/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/TokenForm.tsx +++ b/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/TokenForm.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/index.tsx b/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/index.tsx index 962cf8f370..8d30e9dd56 100644 --- a/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/index.tsx +++ b/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Settings/Tokens/dialog/TokenInfoDialog.tsx b/webapp/src/components/App/Settings/Tokens/dialog/TokenInfoDialog.tsx index 7fe0faf19b..2929cfd18c 100644 --- a/webapp/src/components/App/Settings/Tokens/dialog/TokenInfoDialog.tsx +++ b/webapp/src/components/App/Settings/Tokens/dialog/TokenInfoDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Settings/Tokens/index.tsx b/webapp/src/components/App/Settings/Tokens/index.tsx index 6b1c466d81..ea8639c808 100644 --- a/webapp/src/components/App/Settings/Tokens/index.tsx +++ b/webapp/src/components/App/Settings/Tokens/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Settings/Users/Header.tsx b/webapp/src/components/App/Settings/Users/Header.tsx index 838af5450c..fa4317eade 100644 --- a/webapp/src/components/App/Settings/Users/Header.tsx +++ b/webapp/src/components/App/Settings/Users/Header.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Settings/Users/dialog/CreateUserDialog.tsx b/webapp/src/components/App/Settings/Users/dialog/CreateUserDialog.tsx index acbd27af74..298b7fb84d 100644 --- a/webapp/src/components/App/Settings/Users/dialog/CreateUserDialog.tsx +++ b/webapp/src/components/App/Settings/Users/dialog/CreateUserDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Settings/Users/dialog/UpdateUserDialog.tsx b/webapp/src/components/App/Settings/Users/dialog/UpdateUserDialog.tsx index 19117a054e..1f8f6afabb 100644 --- a/webapp/src/components/App/Settings/Users/dialog/UpdateUserDialog.tsx +++ b/webapp/src/components/App/Settings/Users/dialog/UpdateUserDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/UserForm.tsx b/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/UserForm.tsx index 7e59bba956..dbe75b017f 100644 --- a/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/UserForm.tsx +++ b/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/UserForm.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/index.tsx b/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/index.tsx index df0c81f8ea..a5d54fd5eb 100644 --- a/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/index.tsx +++ b/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Settings/Users/index.tsx b/webapp/src/components/App/Settings/Users/index.tsx index 00f4b456d7..ebca615afc 100644 --- a/webapp/src/components/App/Settings/Users/index.tsx +++ b/webapp/src/components/App/Settings/Users/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Settings/index.tsx b/webapp/src/components/App/Settings/index.tsx index f1ee82112f..0f3781212c 100644 --- a/webapp/src/components/App/Settings/index.tsx +++ b/webapp/src/components/App/Settings/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Settings/utils.ts b/webapp/src/components/App/Settings/utils.ts index 3cf7dfe518..b074304987 100644 --- a/webapp/src/components/App/Settings/utils.ts +++ b/webapp/src/components/App/Settings/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandImportButton.tsx b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandImportButton.tsx index 69d4dbd790..3c0912d1f4 100644 --- a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandImportButton.tsx +++ b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandImportButton.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/CommandMatrixViewer.tsx b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/CommandMatrixViewer.tsx index e21168f2b9..d57efcec10 100644 --- a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/CommandMatrixViewer.tsx +++ b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/CommandMatrixViewer.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/index.tsx b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/index.tsx index 708d0653e2..c53d7b7ef1 100644 --- a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/index.tsx +++ b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/style.ts b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/style.ts index d5895e8ce6..e0d056e66c 100644 --- a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/style.ts +++ b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/style.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListView.tsx b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListView.tsx index f2dbcfe37e..5ba09ec873 100644 --- a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListView.tsx +++ b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListView.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/Commands/Edition/commandTypes.ts b/webapp/src/components/App/Singlestudy/Commands/Edition/commandTypes.ts index 854c9820b2..76d63180d0 100644 --- a/webapp/src/components/App/Singlestudy/Commands/Edition/commandTypes.ts +++ b/webapp/src/components/App/Singlestudy/Commands/Edition/commandTypes.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/Commands/Edition/index.tsx b/webapp/src/components/App/Singlestudy/Commands/Edition/index.tsx index e5dba88227..cdb2098be6 100644 --- a/webapp/src/components/App/Singlestudy/Commands/Edition/index.tsx +++ b/webapp/src/components/App/Singlestudy/Commands/Edition/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/Commands/Edition/style.ts b/webapp/src/components/App/Singlestudy/Commands/Edition/style.ts index 3f7d81220c..50163125c0 100644 --- a/webapp/src/components/App/Singlestudy/Commands/Edition/style.ts +++ b/webapp/src/components/App/Singlestudy/Commands/Edition/style.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/Commands/Edition/utils.ts b/webapp/src/components/App/Singlestudy/Commands/Edition/utils.ts index 319ce47eb3..5d19407ad5 100644 --- a/webapp/src/components/App/Singlestudy/Commands/Edition/utils.ts +++ b/webapp/src/components/App/Singlestudy/Commands/Edition/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/Commands/index.tsx b/webapp/src/components/App/Singlestudy/Commands/index.tsx index d70a693a71..ef595a8eed 100644 --- a/webapp/src/components/App/Singlestudy/Commands/index.tsx +++ b/webapp/src/components/App/Singlestudy/Commands/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/Commands/style.ts b/webapp/src/components/App/Singlestudy/Commands/style.ts index 134b31d3bb..fab386d705 100644 --- a/webapp/src/components/App/Singlestudy/Commands/style.ts +++ b/webapp/src/components/App/Singlestudy/Commands/style.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/CreateVariantDialog.tsx b/webapp/src/components/App/Singlestudy/HomeView/InformationView/CreateVariantDialog.tsx index e1cfd19393..06526db96e 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/CreateVariantDialog.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/CreateVariantDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/JobStepper.tsx b/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/JobStepper.tsx index 374ce57a9b..80ce0830c3 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/JobStepper.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/JobStepper.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/index.tsx b/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/index.tsx index 7af6f61cec..263a12d1a5 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/index.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/style.ts b/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/style.ts index 7a52dbddc6..296d4a5cb1 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/style.ts +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/style.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/DetailsList.tsx b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/DetailsList.tsx index 43b7792d5b..295e521547 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/DetailsList.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/DetailsList.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/NodeEditorModal/index.tsx b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/NodeEditorModal/index.tsx index 3d853ed085..f940943899 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/NodeEditorModal/index.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/NodeEditorModal/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/NodeEditorModal/style.ts b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/NodeEditorModal/style.ts index 1e7a8706e5..c5848881b5 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/NodeEditorModal/style.ts +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/NodeEditorModal/style.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/index.tsx b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/index.tsx index 789c8c80b0..9491982e92 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/index.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/utils.ts b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/utils.ts index 2cecdef85d..4f2d146330 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/utils.ts +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/index.tsx b/webapp/src/components/App/Singlestudy/HomeView/InformationView/index.tsx index fbaf0d515c..52b57f4935 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/index.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/index.tsx b/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/index.tsx index c57e860a59..3e483c8e21 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/index.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/treeconfig.ts b/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/treeconfig.ts index 199db6680c..75fdc12ca7 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/treeconfig.ts +++ b/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/treeconfig.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/utils.ts b/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/utils.ts index 34cc75a64f..f9225289fb 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/utils.ts +++ b/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/HomeView/index.tsx b/webapp/src/components/App/Singlestudy/HomeView/index.tsx index 71f3219ce4..83f4d765a5 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/index.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/NavHeader/Actions.tsx b/webapp/src/components/App/Singlestudy/NavHeader/Actions.tsx index 6d17c267cb..fb9dca2669 100644 --- a/webapp/src/components/App/Singlestudy/NavHeader/Actions.tsx +++ b/webapp/src/components/App/Singlestudy/NavHeader/Actions.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/NavHeader/ActionsMenu.tsx b/webapp/src/components/App/Singlestudy/NavHeader/ActionsMenu.tsx index c08e8dd87b..7e0c7b9135 100644 --- a/webapp/src/components/App/Singlestudy/NavHeader/ActionsMenu.tsx +++ b/webapp/src/components/App/Singlestudy/NavHeader/ActionsMenu.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/NavHeader/Details.tsx b/webapp/src/components/App/Singlestudy/NavHeader/Details.tsx index de23b9b696..2a59f1dca5 100644 --- a/webapp/src/components/App/Singlestudy/NavHeader/Details.tsx +++ b/webapp/src/components/App/Singlestudy/NavHeader/Details.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/NavHeader/index.tsx b/webapp/src/components/App/Singlestudy/NavHeader/index.tsx index 4a0cc3acbd..decab0bfa8 100644 --- a/webapp/src/components/App/Singlestudy/NavHeader/index.tsx +++ b/webapp/src/components/App/Singlestudy/NavHeader/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/PropertiesDialog.tsx b/webapp/src/components/App/Singlestudy/PropertiesDialog.tsx index a3e6e150df..c1600bf399 100644 --- a/webapp/src/components/App/Singlestudy/PropertiesDialog.tsx +++ b/webapp/src/components/App/Singlestudy/PropertiesDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/UpgradeDialog.tsx b/webapp/src/components/App/Singlestudy/UpgradeDialog.tsx index 902eb53157..48663558b6 100644 --- a/webapp/src/components/App/Singlestudy/UpgradeDialog.tsx +++ b/webapp/src/components/App/Singlestudy/UpgradeDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/Fields.tsx index 6b1cc244e9..8c6e2e411b 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/Fields.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/index.tsx index e01ef5240c..8b8b178543 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/utils.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/utils.ts index 3a5e4a7ebf..3fb10e2782 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/Fields.tsx index a3938a84f8..19a19d41a9 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/Fields.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/index.tsx index c43fe83d8c..28e5ef9ee2 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/utils.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/utils.ts index 09a80e6031..addfec700c 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/General/Fields.tsx index 3570e5b1f0..f4d23505b4 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/Fields.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/Table.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/Table.tsx index 53fb6d8b65..9b0648912a 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/Table.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/Table.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/index.tsx index f9d1b9b98f..3f86bc643c 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/utils.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/utils.ts index cbb1d02ca9..87e4f5a979 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/withAreas.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/withAreas.tsx index e9dc9434fd..05dfcb013f 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/withAreas.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/withAreas.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioPlaylistDialog/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioPlaylistDialog/index.tsx index e1e056efb8..80f78ef82c 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioPlaylistDialog/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioPlaylistDialog/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioPlaylistDialog/utils.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioPlaylistDialog/utils.ts index ce5a6c08cc..bd7c015df8 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioPlaylistDialog/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioPlaylistDialog/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/index.tsx index bf0d6437b9..1449479876 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/utils.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/utils.ts index 05b9d7ad5c..a3a16e5661 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/General/index.tsx index 172973c4cd..9d9ea519d9 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/styles.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/General/styles.ts index 2f51a56de5..702ed0e462 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/styles.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/styles.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/utils.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/General/utils.ts index a09888c463..612e43080f 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/Fields.tsx index 902d0b2ad0..143b3108ed 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/Fields.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/index.tsx index 72b0ea49ff..775665d746 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/utils.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/utils.ts index 833e148aa4..319509ac63 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/Fields.tsx index c31ddf63b8..d70ab020a4 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/Fields.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/index.tsx index de302de896..2619fe284c 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/utils.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/utils.ts index 6102660dd7..19e42b5b33 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/index.tsx index fd79248869..2cb4312daa 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Json.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Json.tsx index c68676aba0..a80dfde726 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Json.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Json.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx index 9cf26fafca..43151e9d48 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Text.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Text.tsx index fa7fd3c366..39d1406f4d 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Text.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Text.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Data/index.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Data/index.tsx index 5b96956379..2147bba078 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Data/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Data/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Data/style.ts b/webapp/src/components/App/Singlestudy/explore/Debug/Data/style.ts index 334251e5dc..a69299b931 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Data/style.ts +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Data/style.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/DebugContext.ts b/webapp/src/components/App/Singlestudy/explore/Debug/DebugContext.ts index 66c94f01dd..50642cba08 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/DebugContext.ts +++ b/webapp/src/components/App/Singlestudy/explore/Debug/DebugContext.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Tree/FileTreeItem.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Tree/FileTreeItem.tsx index 77fb7e7f6d..13a5b00028 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Tree/FileTreeItem.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Tree/FileTreeItem.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Tree/index.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Tree/index.tsx index a9e3aa0d1f..6d2604b97f 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Tree/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Tree/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/index.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/index.tsx index 3b64991899..7e42a8303b 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/utils.ts b/webapp/src/components/App/Singlestudy/explore/Debug/utils.ts index 458b0ab2e8..894f51dd78 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Debug/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreaPropsView.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreaPropsView.tsx index 67e9896b74..790ff7a6f6 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreaPropsView.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreaPropsView.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreasTab.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreasTab.tsx index 2ad02d1ff2..508e75705a 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreasTab.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreasTab.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/AllocationField.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/AllocationField.tsx index 708e5f14e7..8c43074be9 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/AllocationField.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/AllocationField.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/Fields.tsx index 6b70bf098b..ce708a4771 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/Fields.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/index.tsx index f452664caf..8231ad0613 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts index d560ef223c..46041fdcc2 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/CorrelationField.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/CorrelationField.tsx index eea01c8876..929cca3bb9 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/CorrelationField.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/CorrelationField.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/Fields.tsx index e686e9ef4c..60a99464c7 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/Fields.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/index.tsx index 12a626b6fe..d6dce25747 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts index fe79096e04..dc2b547e63 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx index b1bdbdd35f..ff6218de35 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrixDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrixDialog.tsx index 2085ed8174..85223c55db 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrixDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrixDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/index.tsx index 563d211aca..d63487a116 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/utils.ts index a66f43e037..0c0525059a 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/Fields.tsx index b3dc4759a4..91d3cdb6ee 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/Fields.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/index.tsx index d86e478758..6b778d69da 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/utils.ts index 5dc79fee53..ebb3a34512 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/SplitHydroMatrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/SplitHydroMatrix.tsx index e9d02d84c4..1adbc4e2b9 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/SplitHydroMatrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/SplitHydroMatrix.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ViewMatrixButton.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ViewMatrixButton.tsx index 6be2da1159..e049eec4c2 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ViewMatrixButton.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ViewMatrixButton.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/hooks/useAreasOptions.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/hooks/useAreasOptions.ts index 0c71e9b3a2..611c671625 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/hooks/useAreasOptions.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/hooks/useAreasOptions.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/index.tsx index f5d01248f6..4209e439bf 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/style.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/style.ts index 9c522b6ef0..b707cafec5 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/style.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/style.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts index 7e1669b91a..316745826e 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx index feca1d59b6..a9d67519de 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx index 6070afebe6..46451653a9 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/Fields.tsx index 5432c2dfc5..7055f2e792 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/Fields.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/index.tsx index ab56ff55bd..d654ba80c7 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/utils.ts index a87302e267..5eef82d3f7 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Fields.tsx index 3b44702a53..0ee371d7fa 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Fields.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Form.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Form.tsx index ff3d7b187f..0d3b21cf17 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Form.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Form.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Matrix.tsx index 0ab412fb81..4de557f4e5 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Matrix.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/index.tsx index 2a95c23ce1..873774c391 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/utils.ts index 0699253549..f3e2520aa2 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Reserve.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Reserve.tsx index 5057118c00..0aae3af44d 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Reserve.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Reserve.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Solar.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Solar.tsx index 22eece2602..2aeddedd2d 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Solar.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Solar.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Fields.tsx index ce73ceac8b..c492d318de 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Fields.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Form.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Form.tsx index 4bfd611b9c..daa773bf9d 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Form.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Form.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Matrix.tsx index 70dc2f8dc0..4fb27fdb55 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Matrix.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/index.tsx index f99fdaa221..9ffc3c4b27 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/utils.ts index ccdc0dfd42..83bd3c60f7 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Fields.tsx index bd6d0f7257..c8c15c8780 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Fields.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Form.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Form.tsx index 80e0b119ae..a549ff650f 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Form.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Form.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Matrix.tsx index 63421020b1..e735f20402 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Matrix.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/index.tsx index e67e2fa175..1b71f18651 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/utils.ts index c14b57eb37..3a5895c8f6 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Wind.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Wind.tsx index 35e2bbc781..39339779c4 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Wind.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Wind.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/common/clustersUtils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/common/clustersUtils.ts index b84054ccbe..56d94c7497 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/common/clustersUtils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/common/clustersUtils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/index.tsx index 637b456f74..11536b3276 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/style.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/style.ts index c5ccf2ee73..73594af06e 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/style.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/style.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/AddDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/AddDialog.tsx index d87d6273d9..ca5540e438 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/AddDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/AddDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstPropsView.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstPropsView.tsx index 6564204701..e750c0a1aa 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstPropsView.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstPropsView.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/AddConstraintTermForm/OptionsList.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/AddConstraintTermForm/OptionsList.tsx index 3a640fa608..63a33457a3 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/AddConstraintTermForm/OptionsList.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/AddConstraintTermForm/OptionsList.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/AddConstraintTermForm/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/AddConstraintTermForm/index.tsx index 71940c4556..f70facc13a 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/AddConstraintTermForm/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/AddConstraintTermForm/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/index.tsx index b0ae6e8c15..2326e00edc 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/BindingConstForm.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/BindingConstForm.tsx index d658f620a6..d821dfe10d 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/BindingConstForm.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/BindingConstForm.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintFields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintFields.tsx index 1cc6d4580e..6eca935f4c 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintFields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintFields.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintTerm/OptionsList.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintTerm/OptionsList.tsx index 209aa979e1..f6777e5f66 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintTerm/OptionsList.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintTerm/OptionsList.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintTerm/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintTerm/index.tsx index c2eaa09eee..04bb4e22b9 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintTerm/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintTerm/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/Matrix.tsx index 356edfdbb9..a3fd0f5cac 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/Matrix.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/ConstraintElement.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/ConstraintElement.tsx index abecf943c6..5ae1d1c31c 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/ConstraintElement.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/ConstraintElement.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/OffsetInput.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/OffsetInput.tsx index d3e2771076..f63a7288c1 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/OffsetInput.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/OffsetInput.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/style.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/style.ts index d43c23db2e..46d9d65f72 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/style.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/style.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/index.tsx index 795f8e8cd6..8b55779179 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/utils.ts index bf865e44b4..30b7dbc06e 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/index.tsx index 5b52cf0ec7..f272e92f75 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkPropsView.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkPropsView.tsx index fbdaa32cf3..610dff4c74 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkPropsView.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkPropsView.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkForm.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkForm.tsx index 50d0a66947..6bae8f2f63 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkForm.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkForm.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkMatrixView.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkMatrixView.tsx index 9aede084fd..7cb84b4ae6 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkMatrixView.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkMatrixView.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/index.tsx index f3cfaeb260..bc2090ccff 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/utils.ts index 1dcb581ec0..d2cc46d077 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/index.tsx index 555c67f187..7d805ee3ba 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaConfig.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaConfig.tsx index 814d6ef975..db30224399 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaConfig.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaConfig.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaLink.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaLink.tsx index b534b59b02..87f38baf9f 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaLink.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaLink.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaLinks.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaLinks.tsx index 83828059dc..8f4f5dba3f 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaLinks.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaLinks.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/DeleteAreaDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/DeleteAreaDialog.tsx index 458f0ad049..fd7f4350ad 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/DeleteAreaDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/DeleteAreaDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/index.tsx index e3e05ebfbc..b92d5a2c96 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/style.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/style.ts index 3fb0c402eb..aabe4c4bf2 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/style.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/style.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/CreateAreaDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/CreateAreaDialog.tsx index b4b2472534..3acf5026ea 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/CreateAreaDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/CreateAreaDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/CreateDistrictDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/CreateDistrictDialog.tsx index 8099d07ad1..133f17c19e 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/CreateDistrictDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/CreateDistrictDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/UpdateDistrictDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/UpdateDistrictDialog.tsx index 43ab5eb97b..b930986b51 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/UpdateDistrictDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/UpdateDistrictDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/index.tsx index 7f1c80f53d..dae45e1dda 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/CreateLayerDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/CreateLayerDialog.tsx index 2b04b22efa..90b4ee39a1 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/CreateLayerDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/CreateLayerDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/UpdateLayerDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/UpdateLayerDialog.tsx index 1daf4b5cab..643e74cb33 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/UpdateLayerDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/UpdateLayerDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/index.tsx index cda4b98626..aff05df5c4 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/index.tsx index c88cc1349b..e52842abc5 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapControlButtons.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapControlButtons.tsx index a375310fd9..973245da0f 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapControlButtons.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapControlButtons.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapGraph.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapGraph.tsx index be1f7672c8..d416128028 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapGraph.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapGraph.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapHeader.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapHeader.tsx index 495e5f957e..e0d965f0cd 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapHeader.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapHeader.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Node.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Node.tsx index 773a5abab3..2b55de00c4 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Node.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Node.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/index.tsx index 5d7ef59084..462d80aac6 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/style.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/style.ts index 72cc1548a8..e3ebde2a05 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/style.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/style.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/utils.ts index fd46f15a4c..2025d4a71d 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/index.tsx index 454ed7bc54..629e345f3c 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx index 6951d3fb07..767a5faa07 100644 --- a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/utils.ts b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/utils.ts index c63ede4ba8..042cc80bba 100644 --- a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Results/index.tsx b/webapp/src/components/App/Singlestudy/explore/Results/index.tsx index cbbcf0fb47..ea3c94a351 100644 --- a/webapp/src/components/App/Singlestudy/explore/Results/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Results/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/TabWrapper.tsx b/webapp/src/components/App/Singlestudy/explore/TabWrapper.tsx index 46c9a63f04..5c7ac6dd03 100644 --- a/webapp/src/components/App/Singlestudy/explore/TabWrapper.tsx +++ b/webapp/src/components/App/Singlestudy/explore/TabWrapper.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/CreateTemplateTableDialog.tsx b/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/CreateTemplateTableDialog.tsx index 2dcff5fe43..34da75ba1a 100644 --- a/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/CreateTemplateTableDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/CreateTemplateTableDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/TableTemplateFormDialog.tsx b/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/TableTemplateFormDialog.tsx index fe19ba810d..f019b529d5 100644 --- a/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/TableTemplateFormDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/TableTemplateFormDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/UpdateTemplateTableDialog.tsx b/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/UpdateTemplateTableDialog.tsx index 84d9d4f123..bf602db8dd 100644 --- a/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/UpdateTemplateTableDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/UpdateTemplateTableDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/TableModeList/index.tsx b/webapp/src/components/App/Singlestudy/explore/TableModeList/index.tsx index 3316ce9b50..ab4dcd787c 100644 --- a/webapp/src/components/App/Singlestudy/explore/TableModeList/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/TableModeList/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/TableModeList/utils.ts b/webapp/src/components/App/Singlestudy/explore/TableModeList/utils.ts index 6294baa905..8ded338463 100644 --- a/webapp/src/components/App/Singlestudy/explore/TableModeList/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/TableModeList/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/CandidateForm.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/CandidateForm.tsx index 90a3e9c993..bb74aac2ad 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/CandidateForm.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/CandidateForm.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/CreateCandidateDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/CreateCandidateDialog.tsx index 358c662c7f..8cda654de0 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/CreateCandidateDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/CreateCandidateDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/XpansionPropsView.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/XpansionPropsView.tsx index 1816645386..6da12c7a73 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/XpansionPropsView.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/XpansionPropsView.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/index.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/index.tsx index b455c0dd09..66d41de0c2 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/Capacities.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/Capacities.tsx index 1a4077b47a..8d6fbdeb92 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/Capacities.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/Capacities.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/Constraints.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/Constraints.tsx index 1dddebfb1c..9143c0abe7 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/Constraints.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/Constraints.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/FileList.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/FileList.tsx index c27f972b36..e4e291caf1 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/FileList.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/FileList.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/Settings/SettingsForm.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/Settings/SettingsForm.tsx index 2084eaca5a..259845da99 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/Settings/SettingsForm.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/Settings/SettingsForm.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/Settings/index.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/Settings/index.tsx index 3c363b4263..a3b01a4b9b 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/Settings/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/Settings/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/Weights.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/Weights.tsx index a8bded4638..3e18632c72 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/Weights.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/Weights.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/index.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/index.tsx index a9d8293aad..6f56a96318 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/share/styles.ts b/webapp/src/components/App/Singlestudy/explore/Xpansion/share/styles.ts index 1140da4900..96fb5dbd31 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/share/styles.ts +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/share/styles.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/types.ts b/webapp/src/components/App/Singlestudy/explore/Xpansion/types.ts index 7a92ec5a87..84b190dda5 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/types.ts +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/types.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/common/ListElement.tsx b/webapp/src/components/App/Singlestudy/explore/common/ListElement.tsx index 7afb1fcac1..69b9254d61 100644 --- a/webapp/src/components/App/Singlestudy/explore/common/ListElement.tsx +++ b/webapp/src/components/App/Singlestudy/explore/common/ListElement.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/common/OutputFilters.tsx b/webapp/src/components/App/Singlestudy/explore/common/OutputFilters.tsx index d44c62bbbc..39cef64ff6 100644 --- a/webapp/src/components/App/Singlestudy/explore/common/OutputFilters.tsx +++ b/webapp/src/components/App/Singlestudy/explore/common/OutputFilters.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/common/types.ts b/webapp/src/components/App/Singlestudy/explore/common/types.ts index 5a24dfa66f..c9ae042882 100644 --- a/webapp/src/components/App/Singlestudy/explore/common/types.ts +++ b/webapp/src/components/App/Singlestudy/explore/common/types.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/index.tsx b/webapp/src/components/App/Singlestudy/index.tsx index 047526b274..7748369a48 100644 --- a/webapp/src/components/App/Singlestudy/index.tsx +++ b/webapp/src/components/App/Singlestudy/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/BatchModeMenu.tsx b/webapp/src/components/App/Studies/BatchModeMenu.tsx index 5eca4ce1a3..a301b4e27f 100644 --- a/webapp/src/components/App/Studies/BatchModeMenu.tsx +++ b/webapp/src/components/App/Studies/BatchModeMenu.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/CreateStudyDialog.tsx b/webapp/src/components/App/Studies/CreateStudyDialog.tsx index 8e95ab9257..c90a52cf5a 100644 --- a/webapp/src/components/App/Studies/CreateStudyDialog.tsx +++ b/webapp/src/components/App/Studies/CreateStudyDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/MultipleLinkElement/index.tsx b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/MultipleLinkElement/index.tsx index a9be97fbf5..91b0c285b6 100644 --- a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/MultipleLinkElement/index.tsx +++ b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/MultipleLinkElement/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/MultipleLinkElement/style.ts b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/MultipleLinkElement/style.ts index 94c030e673..4528d39b84 100644 --- a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/MultipleLinkElement/style.ts +++ b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/MultipleLinkElement/style.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/SingleLinkElement/index.tsx b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/SingleLinkElement/index.tsx index 8458c975e6..961d7a6929 100644 --- a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/SingleLinkElement/index.tsx +++ b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/SingleLinkElement/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/SingleLinkElement/style.ts b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/SingleLinkElement/style.ts index c077d84fff..5c9b66e87a 100644 --- a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/SingleLinkElement/style.ts +++ b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/SingleLinkElement/style.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/index.tsx b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/index.tsx index 2d76e252fd..d64fc9665d 100644 --- a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/index.tsx +++ b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/style.ts b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/style.ts index 08186f67af..870740514c 100644 --- a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/style.ts +++ b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/style.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/ExportModal/ExportFilter/TagSelect/index.tsx b/webapp/src/components/App/Studies/ExportModal/ExportFilter/TagSelect/index.tsx index 310dd8d2d8..4ea269470f 100644 --- a/webapp/src/components/App/Studies/ExportModal/ExportFilter/TagSelect/index.tsx +++ b/webapp/src/components/App/Studies/ExportModal/ExportFilter/TagSelect/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/ExportModal/ExportFilter/TagSelect/style.ts b/webapp/src/components/App/Studies/ExportModal/ExportFilter/TagSelect/style.ts index 22cf6667c9..b043b11320 100644 --- a/webapp/src/components/App/Studies/ExportModal/ExportFilter/TagSelect/style.ts +++ b/webapp/src/components/App/Studies/ExportModal/ExportFilter/TagSelect/style.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/ExportModal/ExportFilter/index.tsx b/webapp/src/components/App/Studies/ExportModal/ExportFilter/index.tsx index bbfb43d893..a03d0f22fe 100644 --- a/webapp/src/components/App/Studies/ExportModal/ExportFilter/index.tsx +++ b/webapp/src/components/App/Studies/ExportModal/ExportFilter/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/ExportModal/index.tsx b/webapp/src/components/App/Studies/ExportModal/index.tsx index 58ba26da72..d9d24714cf 100644 --- a/webapp/src/components/App/Studies/ExportModal/index.tsx +++ b/webapp/src/components/App/Studies/ExportModal/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/FilterDrawer.tsx b/webapp/src/components/App/Studies/FilterDrawer.tsx index 7ea53ba926..676fb27f91 100644 --- a/webapp/src/components/App/Studies/FilterDrawer.tsx +++ b/webapp/src/components/App/Studies/FilterDrawer.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/HeaderBottom.tsx b/webapp/src/components/App/Studies/HeaderBottom.tsx index bac3d5fa01..bfab7c6511 100644 --- a/webapp/src/components/App/Studies/HeaderBottom.tsx +++ b/webapp/src/components/App/Studies/HeaderBottom.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/HeaderTopRight.tsx b/webapp/src/components/App/Studies/HeaderTopRight.tsx index 6290be11eb..117658f834 100644 --- a/webapp/src/components/App/Studies/HeaderTopRight.tsx +++ b/webapp/src/components/App/Studies/HeaderTopRight.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/LauncherDialog.tsx b/webapp/src/components/App/Studies/LauncherDialog.tsx index 92b24e1dce..5a000a9a7d 100644 --- a/webapp/src/components/App/Studies/LauncherDialog.tsx +++ b/webapp/src/components/App/Studies/LauncherDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/MoveStudyDialog.tsx b/webapp/src/components/App/Studies/MoveStudyDialog.tsx index d0e4f833fc..e3698438a5 100644 --- a/webapp/src/components/App/Studies/MoveStudyDialog.tsx +++ b/webapp/src/components/App/Studies/MoveStudyDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/RefreshButton.tsx b/webapp/src/components/App/Studies/RefreshButton.tsx index b595463998..cf158c4fe7 100644 --- a/webapp/src/components/App/Studies/RefreshButton.tsx +++ b/webapp/src/components/App/Studies/RefreshButton.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/SideNav.tsx b/webapp/src/components/App/Studies/SideNav.tsx index 19551f7487..c0009ce7d2 100644 --- a/webapp/src/components/App/Studies/SideNav.tsx +++ b/webapp/src/components/App/Studies/SideNav.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/StudiesList/StudyCardCell.tsx b/webapp/src/components/App/Studies/StudiesList/StudyCardCell.tsx index e3ce4e7eb1..64cfec20c3 100644 --- a/webapp/src/components/App/Studies/StudiesList/StudyCardCell.tsx +++ b/webapp/src/components/App/Studies/StudiesList/StudyCardCell.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/StudiesList/index.tsx b/webapp/src/components/App/Studies/StudiesList/index.tsx index ef7d5ad077..a6c412e625 100644 --- a/webapp/src/components/App/Studies/StudiesList/index.tsx +++ b/webapp/src/components/App/Studies/StudiesList/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/StudyCard.tsx b/webapp/src/components/App/Studies/StudyCard.tsx index 19d60ffe3e..79c0c6b991 100644 --- a/webapp/src/components/App/Studies/StudyCard.tsx +++ b/webapp/src/components/App/Studies/StudyCard.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/StudyTree.tsx b/webapp/src/components/App/Studies/StudyTree.tsx index bd44edcae0..01a6200d85 100644 --- a/webapp/src/components/App/Studies/StudyTree.tsx +++ b/webapp/src/components/App/Studies/StudyTree.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/index.tsx b/webapp/src/components/App/Studies/index.tsx index cf194aec46..f422ce3249 100644 --- a/webapp/src/components/App/Studies/index.tsx +++ b/webapp/src/components/App/Studies/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/utils.ts b/webapp/src/components/App/Studies/utils.ts index ddb62d3c7a..dc2d1c5396 100644 --- a/webapp/src/components/App/Studies/utils.ts +++ b/webapp/src/components/App/Studies/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Tasks/JobTableView.tsx b/webapp/src/components/App/Tasks/JobTableView.tsx index 66e2ba2385..5f8a34b674 100644 --- a/webapp/src/components/App/Tasks/JobTableView.tsx +++ b/webapp/src/components/App/Tasks/JobTableView.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Tasks/LaunchJobLogView.tsx b/webapp/src/components/App/Tasks/LaunchJobLogView.tsx index 5a7062195e..44d2b8f643 100644 --- a/webapp/src/components/App/Tasks/LaunchJobLogView.tsx +++ b/webapp/src/components/App/Tasks/LaunchJobLogView.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Tasks/NotificationBadge.tsx b/webapp/src/components/App/Tasks/NotificationBadge.tsx index e9c7b76ce8..499a327d71 100644 --- a/webapp/src/components/App/Tasks/NotificationBadge.tsx +++ b/webapp/src/components/App/Tasks/NotificationBadge.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Tasks/index.tsx b/webapp/src/components/App/Tasks/index.tsx index 467730bbd2..6f756c49b6 100644 --- a/webapp/src/components/App/Tasks/index.tsx +++ b/webapp/src/components/App/Tasks/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/index.tsx b/webapp/src/components/App/index.tsx index 39b3865486..18cb04f537 100644 --- a/webapp/src/components/App/index.tsx +++ b/webapp/src/components/App/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/ButtonBack.tsx b/webapp/src/components/common/ButtonBack.tsx index d4e181fdfe..49fd1a5355 100644 --- a/webapp/src/components/common/ButtonBack.tsx +++ b/webapp/src/components/common/ButtonBack.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/DocLink.tsx b/webapp/src/components/common/DocLink.tsx index 19861f9484..48e5468701 100644 --- a/webapp/src/components/common/DocLink.tsx +++ b/webapp/src/components/common/DocLink.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/DownloadLink.tsx b/webapp/src/components/common/DownloadLink.tsx index 8e0fa39333..1f3b45894d 100644 --- a/webapp/src/components/common/DownloadLink.tsx +++ b/webapp/src/components/common/DownloadLink.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/DownloadMatrixButton.tsx b/webapp/src/components/common/DownloadMatrixButton.tsx index 9f8cd67fd7..560a4b1dae 100644 --- a/webapp/src/components/common/DownloadMatrixButton.tsx +++ b/webapp/src/components/common/DownloadMatrixButton.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/DynamicDataTable/TableRowGroup.tsx b/webapp/src/components/common/DynamicDataTable/TableRowGroup.tsx index 83b6fadb64..523694704a 100644 --- a/webapp/src/components/common/DynamicDataTable/TableRowGroup.tsx +++ b/webapp/src/components/common/DynamicDataTable/TableRowGroup.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/DynamicDataTable/TableRowItem.tsx b/webapp/src/components/common/DynamicDataTable/TableRowItem.tsx index 860977c1b1..214a84a730 100644 --- a/webapp/src/components/common/DynamicDataTable/TableRowItem.tsx +++ b/webapp/src/components/common/DynamicDataTable/TableRowItem.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/DynamicDataTable/TableToolbar.tsx b/webapp/src/components/common/DynamicDataTable/TableToolbar.tsx index 91a8a9f19e..7364176e7b 100644 --- a/webapp/src/components/common/DynamicDataTable/TableToolbar.tsx +++ b/webapp/src/components/common/DynamicDataTable/TableToolbar.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/DynamicDataTable/index.tsx b/webapp/src/components/common/DynamicDataTable/index.tsx index c7b017785c..6d00babf94 100644 --- a/webapp/src/components/common/DynamicDataTable/index.tsx +++ b/webapp/src/components/common/DynamicDataTable/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/DynamicDataTable/utils.ts b/webapp/src/components/common/DynamicDataTable/utils.ts index 00b1a62902..3818fc3bd8 100644 --- a/webapp/src/components/common/DynamicDataTable/utils.ts +++ b/webapp/src/components/common/DynamicDataTable/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/DynamicList.tsx b/webapp/src/components/common/DynamicList.tsx index 4b4e51bde8..d0ce83e085 100644 --- a/webapp/src/components/common/DynamicList.tsx +++ b/webapp/src/components/common/DynamicList.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/EditableMatrix/MatrixGraphView.tsx b/webapp/src/components/common/EditableMatrix/MatrixGraphView.tsx index 26e7dbc444..765f991b03 100644 --- a/webapp/src/components/common/EditableMatrix/MatrixGraphView.tsx +++ b/webapp/src/components/common/EditableMatrix/MatrixGraphView.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/EditableMatrix/index.tsx b/webapp/src/components/common/EditableMatrix/index.tsx index c64cb75400..42802118eb 100644 --- a/webapp/src/components/common/EditableMatrix/index.tsx +++ b/webapp/src/components/common/EditableMatrix/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/EditableMatrix/style.ts b/webapp/src/components/common/EditableMatrix/style.ts index 6b5f07298d..dcd6dc3159 100644 --- a/webapp/src/components/common/EditableMatrix/style.ts +++ b/webapp/src/components/common/EditableMatrix/style.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/EditableMatrix/utils.ts b/webapp/src/components/common/EditableMatrix/utils.ts index aad2068833..aed63af7e7 100644 --- a/webapp/src/components/common/EditableMatrix/utils.ts +++ b/webapp/src/components/common/EditableMatrix/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/Fieldset.tsx b/webapp/src/components/common/Fieldset.tsx index d5939df5b1..7652ba5abb 100644 --- a/webapp/src/components/common/Fieldset.tsx +++ b/webapp/src/components/common/Fieldset.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/FileTable.tsx b/webapp/src/components/common/FileTable.tsx index 4b504b018f..6f8b3e40ae 100644 --- a/webapp/src/components/common/FileTable.tsx +++ b/webapp/src/components/common/FileTable.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/Form/FormContext.tsx b/webapp/src/components/common/Form/FormContext.tsx index 46fe7da6dc..64ecd0d35e 100644 --- a/webapp/src/components/common/Form/FormContext.tsx +++ b/webapp/src/components/common/Form/FormContext.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/Form/index.tsx b/webapp/src/components/common/Form/index.tsx index a8c76432e4..da4bcca048 100644 --- a/webapp/src/components/common/Form/index.tsx +++ b/webapp/src/components/common/Form/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/Form/types.ts b/webapp/src/components/common/Form/types.ts index 7c8baef759..d7f27f94fb 100644 --- a/webapp/src/components/common/Form/types.ts +++ b/webapp/src/components/common/Form/types.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/Form/useFormApiPlus.ts b/webapp/src/components/common/Form/useFormApiPlus.ts index d4ac79e62f..be3239d69a 100644 --- a/webapp/src/components/common/Form/useFormApiPlus.ts +++ b/webapp/src/components/common/Form/useFormApiPlus.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/Form/useFormUndoRedo.ts b/webapp/src/components/common/Form/useFormUndoRedo.ts index 66801a1bfb..9d3fec2158 100644 --- a/webapp/src/components/common/Form/useFormUndoRedo.ts +++ b/webapp/src/components/common/Form/useFormUndoRedo.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/Form/utils.ts b/webapp/src/components/common/Form/utils.ts index c5d8909b45..e01e882708 100644 --- a/webapp/src/components/common/Form/utils.ts +++ b/webapp/src/components/common/Form/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/GroupedDataTable/CreateDialog.tsx b/webapp/src/components/common/GroupedDataTable/CreateDialog.tsx index fb9dda4a73..60a23e7c58 100644 --- a/webapp/src/components/common/GroupedDataTable/CreateDialog.tsx +++ b/webapp/src/components/common/GroupedDataTable/CreateDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/GroupedDataTable/DuplicateDialog.tsx b/webapp/src/components/common/GroupedDataTable/DuplicateDialog.tsx index ae1ce03c1a..5043bc8d53 100644 --- a/webapp/src/components/common/GroupedDataTable/DuplicateDialog.tsx +++ b/webapp/src/components/common/GroupedDataTable/DuplicateDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/GroupedDataTable/cellRenderers/BooleanCell.tsx b/webapp/src/components/common/GroupedDataTable/cellRenderers/BooleanCell.tsx index c9bc471dea..b59c496854 100644 --- a/webapp/src/components/common/GroupedDataTable/cellRenderers/BooleanCell.tsx +++ b/webapp/src/components/common/GroupedDataTable/cellRenderers/BooleanCell.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/GroupedDataTable/index.tsx b/webapp/src/components/common/GroupedDataTable/index.tsx index d6c40fd19a..f24ab3f016 100644 --- a/webapp/src/components/common/GroupedDataTable/index.tsx +++ b/webapp/src/components/common/GroupedDataTable/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/GroupedDataTable/types.ts b/webapp/src/components/common/GroupedDataTable/types.ts index 95a0a71d9d..ba267f9f4b 100644 --- a/webapp/src/components/common/GroupedDataTable/types.ts +++ b/webapp/src/components/common/GroupedDataTable/types.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/GroupedDataTable/utils.ts b/webapp/src/components/common/GroupedDataTable/utils.ts index 9191ca87df..07b670d25a 100644 --- a/webapp/src/components/common/GroupedDataTable/utils.ts +++ b/webapp/src/components/common/GroupedDataTable/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/Handsontable.tsx b/webapp/src/components/common/Handsontable.tsx index 6ae7eac2ff..0e6d6c3f8a 100644 --- a/webapp/src/components/common/Handsontable.tsx +++ b/webapp/src/components/common/Handsontable.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/JSONEditor/index.tsx b/webapp/src/components/common/JSONEditor/index.tsx index d7c8b3e775..0b1e291add 100644 --- a/webapp/src/components/common/JSONEditor/index.tsx +++ b/webapp/src/components/common/JSONEditor/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/LinearProgressWithLabel.tsx b/webapp/src/components/common/LinearProgressWithLabel.tsx index 2dd9155581..642efd3a4d 100644 --- a/webapp/src/components/common/LinearProgressWithLabel.tsx +++ b/webapp/src/components/common/LinearProgressWithLabel.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/LogModal.tsx b/webapp/src/components/common/LogModal.tsx index 6667e94a65..dc94255215 100644 --- a/webapp/src/components/common/LogModal.tsx +++ b/webapp/src/components/common/LogModal.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/MatrixGrid/Matrix.tsx b/webapp/src/components/common/MatrixGrid/Matrix.tsx index 2930726ba0..128bf480cc 100644 --- a/webapp/src/components/common/MatrixGrid/Matrix.tsx +++ b/webapp/src/components/common/MatrixGrid/Matrix.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/MatrixGrid/MatrixActions.tsx b/webapp/src/components/common/MatrixGrid/MatrixActions.tsx index d48261b443..b15634d03d 100644 --- a/webapp/src/components/common/MatrixGrid/MatrixActions.tsx +++ b/webapp/src/components/common/MatrixGrid/MatrixActions.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/MatrixGrid/index.test.tsx b/webapp/src/components/common/MatrixGrid/index.test.tsx index 88db7ad21f..363ae7b8c2 100644 --- a/webapp/src/components/common/MatrixGrid/index.test.tsx +++ b/webapp/src/components/common/MatrixGrid/index.test.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/MatrixGrid/index.tsx b/webapp/src/components/common/MatrixGrid/index.tsx index b22d36bc3a..d894b8d4ab 100644 --- a/webapp/src/components/common/MatrixGrid/index.tsx +++ b/webapp/src/components/common/MatrixGrid/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/MatrixGrid/style.ts b/webapp/src/components/common/MatrixGrid/style.ts index 74b6f5770f..d99c3ad7d6 100644 --- a/webapp/src/components/common/MatrixGrid/style.ts +++ b/webapp/src/components/common/MatrixGrid/style.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/MatrixGrid/types.ts b/webapp/src/components/common/MatrixGrid/types.ts index 4e3ab2aa53..af94b98d97 100644 --- a/webapp/src/components/common/MatrixGrid/types.ts +++ b/webapp/src/components/common/MatrixGrid/types.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/MatrixGrid/useColumnMapping.test.ts b/webapp/src/components/common/MatrixGrid/useColumnMapping.test.ts index 8270abb3b1..e88473b9a6 100644 --- a/webapp/src/components/common/MatrixGrid/useColumnMapping.test.ts +++ b/webapp/src/components/common/MatrixGrid/useColumnMapping.test.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/MatrixGrid/useColumnMapping.ts b/webapp/src/components/common/MatrixGrid/useColumnMapping.ts index 1ad1cb5932..522f93d025 100644 --- a/webapp/src/components/common/MatrixGrid/useColumnMapping.ts +++ b/webapp/src/components/common/MatrixGrid/useColumnMapping.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts b/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts index cf4ef08867..084a52d429 100644 --- a/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts +++ b/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/MatrixGrid/useGridCellContent.ts b/webapp/src/components/common/MatrixGrid/useGridCellContent.ts index 000f180da5..ca610950a8 100644 --- a/webapp/src/components/common/MatrixGrid/useGridCellContent.ts +++ b/webapp/src/components/common/MatrixGrid/useGridCellContent.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/MatrixGrid/useMatrix.test.tsx b/webapp/src/components/common/MatrixGrid/useMatrix.test.tsx index c78e275ab3..61b09b9be2 100644 --- a/webapp/src/components/common/MatrixGrid/useMatrix.test.tsx +++ b/webapp/src/components/common/MatrixGrid/useMatrix.test.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/MatrixGrid/useMatrix.ts b/webapp/src/components/common/MatrixGrid/useMatrix.ts index 129fb8c848..6da3a43c6b 100644 --- a/webapp/src/components/common/MatrixGrid/useMatrix.ts +++ b/webapp/src/components/common/MatrixGrid/useMatrix.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/MatrixGrid/utils.test.ts b/webapp/src/components/common/MatrixGrid/utils.test.ts index 5645a7736d..afe4e21c5c 100644 --- a/webapp/src/components/common/MatrixGrid/utils.test.ts +++ b/webapp/src/components/common/MatrixGrid/utils.test.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/MatrixGrid/utils.ts b/webapp/src/components/common/MatrixGrid/utils.ts index 7c479d4130..ed3e1094ee 100644 --- a/webapp/src/components/common/MatrixGrid/utils.ts +++ b/webapp/src/components/common/MatrixGrid/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/MatrixInput/MatrixAssignDialog.tsx b/webapp/src/components/common/MatrixInput/MatrixAssignDialog.tsx index 8259be7858..8cdede9119 100644 --- a/webapp/src/components/common/MatrixInput/MatrixAssignDialog.tsx +++ b/webapp/src/components/common/MatrixInput/MatrixAssignDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/MatrixInput/index.tsx b/webapp/src/components/common/MatrixInput/index.tsx index a24244401a..798b2f9b93 100644 --- a/webapp/src/components/common/MatrixInput/index.tsx +++ b/webapp/src/components/common/MatrixInput/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/MatrixInput/style.ts b/webapp/src/components/common/MatrixInput/style.ts index 5fd35f0fef..148f1b191d 100644 --- a/webapp/src/components/common/MatrixInput/style.ts +++ b/webapp/src/components/common/MatrixInput/style.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/PropertiesView.tsx b/webapp/src/components/common/PropertiesView.tsx index 3a0754b9ab..dc8fb61ab7 100644 --- a/webapp/src/components/common/PropertiesView.tsx +++ b/webapp/src/components/common/PropertiesView.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/SelectMulti.tsx b/webapp/src/components/common/SelectMulti.tsx index 680cc32e11..6512206708 100644 --- a/webapp/src/components/common/SelectMulti.tsx +++ b/webapp/src/components/common/SelectMulti.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/SelectSingle.tsx b/webapp/src/components/common/SelectSingle.tsx index acce4b22b9..c79374adaf 100644 --- a/webapp/src/components/common/SelectSingle.tsx +++ b/webapp/src/components/common/SelectSingle.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/SnackErrorMessage.tsx b/webapp/src/components/common/SnackErrorMessage.tsx index a4607d4d5d..28dbd01c0d 100644 --- a/webapp/src/components/common/SnackErrorMessage.tsx +++ b/webapp/src/components/common/SnackErrorMessage.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/SplitLayoutView.tsx b/webapp/src/components/common/SplitLayoutView.tsx index 4a870bd460..4145a9e13d 100644 --- a/webapp/src/components/common/SplitLayoutView.tsx +++ b/webapp/src/components/common/SplitLayoutView.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/SplitView/index.tsx b/webapp/src/components/common/SplitView/index.tsx index d21dd0175e..bfbc05d39b 100644 --- a/webapp/src/components/common/SplitView/index.tsx +++ b/webapp/src/components/common/SplitView/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/StarToggle.tsx b/webapp/src/components/common/StarToggle.tsx index 97af3b3bca..44698cbf96 100644 --- a/webapp/src/components/common/StarToggle.tsx +++ b/webapp/src/components/common/StarToggle.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/TableForm/Table.tsx b/webapp/src/components/common/TableForm/Table.tsx index d304cfb8af..70bfdd5e75 100644 --- a/webapp/src/components/common/TableForm/Table.tsx +++ b/webapp/src/components/common/TableForm/Table.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/TableForm/index.tsx b/webapp/src/components/common/TableForm/index.tsx index c8cb615c66..6ce8841bdc 100644 --- a/webapp/src/components/common/TableForm/index.tsx +++ b/webapp/src/components/common/TableForm/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/TableForm/utils.ts b/webapp/src/components/common/TableForm/utils.ts index 2919d2de9b..ff47af9481 100644 --- a/webapp/src/components/common/TableForm/utils.ts +++ b/webapp/src/components/common/TableForm/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/TableMode.tsx b/webapp/src/components/common/TableMode.tsx index 217e436d98..fa309dc01f 100644 --- a/webapp/src/components/common/TableMode.tsx +++ b/webapp/src/components/common/TableMode.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/TabsView.tsx b/webapp/src/components/common/TabsView.tsx index bc04cef8df..cfee995bbf 100644 --- a/webapp/src/components/common/TabsView.tsx +++ b/webapp/src/components/common/TabsView.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/TextSeparator.tsx b/webapp/src/components/common/TextSeparator.tsx index 09337c7a82..51a1a40612 100644 --- a/webapp/src/components/common/TextSeparator.tsx +++ b/webapp/src/components/common/TextSeparator.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/buttons/SplitButton.tsx b/webapp/src/components/common/buttons/SplitButton.tsx index 643e62c7f6..45fa9c74c2 100644 --- a/webapp/src/components/common/buttons/SplitButton.tsx +++ b/webapp/src/components/common/buttons/SplitButton.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/dialogs/BasicDialog.tsx b/webapp/src/components/common/dialogs/BasicDialog.tsx index 1b93953696..de9e3e0806 100644 --- a/webapp/src/components/common/dialogs/BasicDialog.tsx +++ b/webapp/src/components/common/dialogs/BasicDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/dialogs/ConfirmationDialog.tsx b/webapp/src/components/common/dialogs/ConfirmationDialog.tsx index 361f3c1739..d237a535f0 100644 --- a/webapp/src/components/common/dialogs/ConfirmationDialog.tsx +++ b/webapp/src/components/common/dialogs/ConfirmationDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/dialogs/DataViewerDialog/index.tsx b/webapp/src/components/common/dialogs/DataViewerDialog/index.tsx index db8dbee0c5..fc1816d0e4 100644 --- a/webapp/src/components/common/dialogs/DataViewerDialog/index.tsx +++ b/webapp/src/components/common/dialogs/DataViewerDialog/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/dialogs/DataViewerDialog/styles.ts b/webapp/src/components/common/dialogs/DataViewerDialog/styles.ts index 10709d3ea8..cd499db66a 100644 --- a/webapp/src/components/common/dialogs/DataViewerDialog/styles.ts +++ b/webapp/src/components/common/dialogs/DataViewerDialog/styles.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/dialogs/DigestDialog.tsx b/webapp/src/components/common/dialogs/DigestDialog.tsx index 2f0658cbdd..adaed84ce6 100644 --- a/webapp/src/components/common/dialogs/DigestDialog.tsx +++ b/webapp/src/components/common/dialogs/DigestDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/dialogs/FormDialog.tsx b/webapp/src/components/common/dialogs/FormDialog.tsx index 1cf91d304d..4980244f5d 100644 --- a/webapp/src/components/common/dialogs/FormDialog.tsx +++ b/webapp/src/components/common/dialogs/FormDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/dialogs/ImportDialog.tsx b/webapp/src/components/common/dialogs/ImportDialog.tsx index c25dbacedd..a16bbf6df6 100644 --- a/webapp/src/components/common/dialogs/ImportDialog.tsx +++ b/webapp/src/components/common/dialogs/ImportDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/dialogs/OkDialog.tsx b/webapp/src/components/common/dialogs/OkDialog.tsx index ce859a960b..d43c147b50 100644 --- a/webapp/src/components/common/dialogs/OkDialog.tsx +++ b/webapp/src/components/common/dialogs/OkDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/fieldEditors/BooleanFE.tsx b/webapp/src/components/common/fieldEditors/BooleanFE.tsx index c5acb101be..56846ead2a 100644 --- a/webapp/src/components/common/fieldEditors/BooleanFE.tsx +++ b/webapp/src/components/common/fieldEditors/BooleanFE.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/fieldEditors/CheckBoxFE.tsx b/webapp/src/components/common/fieldEditors/CheckBoxFE.tsx index 40e8b8b40e..a104d50692 100644 --- a/webapp/src/components/common/fieldEditors/CheckBoxFE.tsx +++ b/webapp/src/components/common/fieldEditors/CheckBoxFE.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/fieldEditors/CheckboxesTagsFE.tsx b/webapp/src/components/common/fieldEditors/CheckboxesTagsFE.tsx index 90373aa35a..1b2b8f9326 100644 --- a/webapp/src/components/common/fieldEditors/CheckboxesTagsFE.tsx +++ b/webapp/src/components/common/fieldEditors/CheckboxesTagsFE.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/fieldEditors/ColorPickerFE/index.tsx b/webapp/src/components/common/fieldEditors/ColorPickerFE/index.tsx index 9f0f11d120..54bc1bc754 100644 --- a/webapp/src/components/common/fieldEditors/ColorPickerFE/index.tsx +++ b/webapp/src/components/common/fieldEditors/ColorPickerFE/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/fieldEditors/ColorPickerFE/utils.ts b/webapp/src/components/common/fieldEditors/ColorPickerFE/utils.ts index 319c8c3a68..8508a629cd 100644 --- a/webapp/src/components/common/fieldEditors/ColorPickerFE/utils.ts +++ b/webapp/src/components/common/fieldEditors/ColorPickerFE/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/fieldEditors/ListFE/index.tsx b/webapp/src/components/common/fieldEditors/ListFE/index.tsx index 6a411577a2..94082376a5 100644 --- a/webapp/src/components/common/fieldEditors/ListFE/index.tsx +++ b/webapp/src/components/common/fieldEditors/ListFE/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/fieldEditors/ListFE/utils.ts b/webapp/src/components/common/fieldEditors/ListFE/utils.ts index 54b3e7c69d..0496f1f066 100644 --- a/webapp/src/components/common/fieldEditors/ListFE/utils.ts +++ b/webapp/src/components/common/fieldEditors/ListFE/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/fieldEditors/NumberFE.tsx b/webapp/src/components/common/fieldEditors/NumberFE.tsx index d3152cb391..40947322c1 100644 --- a/webapp/src/components/common/fieldEditors/NumberFE.tsx +++ b/webapp/src/components/common/fieldEditors/NumberFE.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/fieldEditors/PasswordFE.tsx b/webapp/src/components/common/fieldEditors/PasswordFE.tsx index e552f6c784..7723ab0366 100644 --- a/webapp/src/components/common/fieldEditors/PasswordFE.tsx +++ b/webapp/src/components/common/fieldEditors/PasswordFE.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/fieldEditors/RadioFE.tsx b/webapp/src/components/common/fieldEditors/RadioFE.tsx index 32335abac0..2b8fa016c4 100644 --- a/webapp/src/components/common/fieldEditors/RadioFE.tsx +++ b/webapp/src/components/common/fieldEditors/RadioFE.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/fieldEditors/SearchFE.tsx b/webapp/src/components/common/fieldEditors/SearchFE.tsx index bd47494343..39b1e1d626 100644 --- a/webapp/src/components/common/fieldEditors/SearchFE.tsx +++ b/webapp/src/components/common/fieldEditors/SearchFE.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/fieldEditors/SelectFE.tsx b/webapp/src/components/common/fieldEditors/SelectFE.tsx index 9ed8b22cba..56ce7c30b4 100644 --- a/webapp/src/components/common/fieldEditors/SelectFE.tsx +++ b/webapp/src/components/common/fieldEditors/SelectFE.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/fieldEditors/StringFE.tsx b/webapp/src/components/common/fieldEditors/StringFE.tsx index e1115c2961..1f60a0f5ee 100644 --- a/webapp/src/components/common/fieldEditors/StringFE.tsx +++ b/webapp/src/components/common/fieldEditors/StringFE.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/fieldEditors/SwitchFE.tsx b/webapp/src/components/common/fieldEditors/SwitchFE.tsx index 4e29f701e1..30d3edd60f 100644 --- a/webapp/src/components/common/fieldEditors/SwitchFE.tsx +++ b/webapp/src/components/common/fieldEditors/SwitchFE.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/loaders/AppLoader.tsx b/webapp/src/components/common/loaders/AppLoader.tsx index aa60c31a99..b8ab955ff3 100644 --- a/webapp/src/components/common/loaders/AppLoader.tsx +++ b/webapp/src/components/common/loaders/AppLoader.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/loaders/BackdropLoading.tsx b/webapp/src/components/common/loaders/BackdropLoading.tsx index eea54b6229..29218a2c4e 100644 --- a/webapp/src/components/common/loaders/BackdropLoading.tsx +++ b/webapp/src/components/common/loaders/BackdropLoading.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/loaders/GlobalPageLoadingError.tsx b/webapp/src/components/common/loaders/GlobalPageLoadingError.tsx index 7771f6c06f..f31dc03b1d 100644 --- a/webapp/src/components/common/loaders/GlobalPageLoadingError.tsx +++ b/webapp/src/components/common/loaders/GlobalPageLoadingError.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/loaders/SimpleLoader.tsx b/webapp/src/components/common/loaders/SimpleLoader.tsx index b4dab0707d..8493b99327 100644 --- a/webapp/src/components/common/loaders/SimpleLoader.tsx +++ b/webapp/src/components/common/loaders/SimpleLoader.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/page/BasicPage.tsx b/webapp/src/components/common/page/BasicPage.tsx index 52dbc0f239..1d368850ad 100644 --- a/webapp/src/components/common/page/BasicPage.tsx +++ b/webapp/src/components/common/page/BasicPage.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/page/RootPage.tsx b/webapp/src/components/common/page/RootPage.tsx index f1f09c6d36..fb72759b8a 100644 --- a/webapp/src/components/common/page/RootPage.tsx +++ b/webapp/src/components/common/page/RootPage.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/page/SimpleContent.tsx b/webapp/src/components/common/page/SimpleContent.tsx index b21b79342b..cd4804272c 100644 --- a/webapp/src/components/common/page/SimpleContent.tsx +++ b/webapp/src/components/common/page/SimpleContent.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/page/ViewWrapper.tsx b/webapp/src/components/common/page/ViewWrapper.tsx index 98dac4e8fd..33cf4df198 100644 --- a/webapp/src/components/common/page/ViewWrapper.tsx +++ b/webapp/src/components/common/page/ViewWrapper.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/utils/UsePromiseCond.tsx b/webapp/src/components/common/utils/UsePromiseCond.tsx index e03afeb170..83189e0c82 100644 --- a/webapp/src/components/common/utils/UsePromiseCond.tsx +++ b/webapp/src/components/common/utils/UsePromiseCond.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/utils/constants.ts b/webapp/src/components/common/utils/constants.ts index 40e26fb77e..99f60d6782 100644 --- a/webapp/src/components/common/utils/constants.ts +++ b/webapp/src/components/common/utils/constants.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/wrappers/LoginWrapper.tsx b/webapp/src/components/wrappers/LoginWrapper.tsx index 6c318c70f7..4523f8e8ed 100644 --- a/webapp/src/components/wrappers/LoginWrapper.tsx +++ b/webapp/src/components/wrappers/LoginWrapper.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/wrappers/MaintenanceWrapper/MessageInfoDialog.tsx b/webapp/src/components/wrappers/MaintenanceWrapper/MessageInfoDialog.tsx index 95b6dfd9ab..4068e2a70a 100644 --- a/webapp/src/components/wrappers/MaintenanceWrapper/MessageInfoDialog.tsx +++ b/webapp/src/components/wrappers/MaintenanceWrapper/MessageInfoDialog.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/wrappers/MaintenanceWrapper/Stars.tsx b/webapp/src/components/wrappers/MaintenanceWrapper/Stars.tsx index 1d8f8dfdfc..644a9a5a07 100644 --- a/webapp/src/components/wrappers/MaintenanceWrapper/Stars.tsx +++ b/webapp/src/components/wrappers/MaintenanceWrapper/Stars.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/wrappers/MaintenanceWrapper/index.tsx b/webapp/src/components/wrappers/MaintenanceWrapper/index.tsx index e805853b20..5147037af7 100644 --- a/webapp/src/components/wrappers/MaintenanceWrapper/index.tsx +++ b/webapp/src/components/wrappers/MaintenanceWrapper/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/wrappers/MenuWrapper/index.tsx b/webapp/src/components/wrappers/MenuWrapper/index.tsx index 2e562739b0..2b3f7c6a16 100644 --- a/webapp/src/components/wrappers/MenuWrapper/index.tsx +++ b/webapp/src/components/wrappers/MenuWrapper/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/wrappers/MenuWrapper/styles.ts b/webapp/src/components/wrappers/MenuWrapper/styles.ts index bf6f5a0eab..4ed92477f9 100644 --- a/webapp/src/components/wrappers/MenuWrapper/styles.ts +++ b/webapp/src/components/wrappers/MenuWrapper/styles.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/hoc/reactHookFormSupport.tsx b/webapp/src/hoc/reactHookFormSupport.tsx index 903152a507..3e0e65145d 100644 --- a/webapp/src/hoc/reactHookFormSupport.tsx +++ b/webapp/src/hoc/reactHookFormSupport.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/hooks/useAutoUpdateRef.ts b/webapp/src/hooks/useAutoUpdateRef.ts index 44a0e09af5..df1d460401 100644 --- a/webapp/src/hooks/useAutoUpdateRef.ts +++ b/webapp/src/hooks/useAutoUpdateRef.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/hooks/useBlocker.ts b/webapp/src/hooks/useBlocker.ts index c0a8cc2abc..e4fce66307 100644 --- a/webapp/src/hooks/useBlocker.ts +++ b/webapp/src/hooks/useBlocker.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/hooks/useDebounce.ts b/webapp/src/hooks/useDebounce.ts index 94198fd955..231c4849a2 100644 --- a/webapp/src/hooks/useDebounce.ts +++ b/webapp/src/hooks/useDebounce.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/hooks/useDebouncedEffect.ts b/webapp/src/hooks/useDebouncedEffect.ts index 46e4c5e0c2..90fdbdeb3d 100644 --- a/webapp/src/hooks/useDebouncedEffect.ts +++ b/webapp/src/hooks/useDebouncedEffect.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/hooks/useDebouncedState.ts b/webapp/src/hooks/useDebouncedState.ts index 30a30c56e7..470248a02d 100644 --- a/webapp/src/hooks/useDebouncedState.ts +++ b/webapp/src/hooks/useDebouncedState.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/hooks/useEnqueueErrorSnackbar.tsx b/webapp/src/hooks/useEnqueueErrorSnackbar.tsx index 4d2ca520a6..51dcec46d7 100644 --- a/webapp/src/hooks/useEnqueueErrorSnackbar.tsx +++ b/webapp/src/hooks/useEnqueueErrorSnackbar.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/hooks/useMemoLocked.ts b/webapp/src/hooks/useMemoLocked.ts index f352f59dad..1d536c92a7 100644 --- a/webapp/src/hooks/useMemoLocked.ts +++ b/webapp/src/hooks/useMemoLocked.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/hooks/useNavigateOnCondition.ts b/webapp/src/hooks/useNavigateOnCondition.ts index 13e85c830e..3608856916 100644 --- a/webapp/src/hooks/useNavigateOnCondition.ts +++ b/webapp/src/hooks/useNavigateOnCondition.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/hooks/useOperationInProgressCount.ts b/webapp/src/hooks/useOperationInProgressCount.ts index 524717464a..26be81248b 100644 --- a/webapp/src/hooks/useOperationInProgressCount.ts +++ b/webapp/src/hooks/useOperationInProgressCount.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/hooks/usePromise.ts b/webapp/src/hooks/usePromise.ts index e0c05118f8..8769a05128 100644 --- a/webapp/src/hooks/usePromise.ts +++ b/webapp/src/hooks/usePromise.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/hooks/usePromiseWithSnackbarError.ts b/webapp/src/hooks/usePromiseWithSnackbarError.ts index 1e13fbe5b9..346d7568a6 100644 --- a/webapp/src/hooks/usePromiseWithSnackbarError.ts +++ b/webapp/src/hooks/usePromiseWithSnackbarError.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/hooks/usePrompt.ts b/webapp/src/hooks/usePrompt.ts index 68d4b3eef9..6f0d1d0d76 100644 --- a/webapp/src/hooks/usePrompt.ts +++ b/webapp/src/hooks/usePrompt.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/hooks/useUpdateEffectOnce.ts b/webapp/src/hooks/useUpdateEffectOnce.ts index 27b1913a61..c8ec4d7808 100644 --- a/webapp/src/hooks/useUpdateEffectOnce.ts +++ b/webapp/src/hooks/useUpdateEffectOnce.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/i18n.ts b/webapp/src/i18n.ts index f5c222afb7..f1012a8238 100644 --- a/webapp/src/i18n.ts +++ b/webapp/src/i18n.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/index.test.tsx b/webapp/src/index.test.tsx index c6b4528b47..e2c5ffa601 100644 --- a/webapp/src/index.test.tsx +++ b/webapp/src/index.test.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/index.tsx b/webapp/src/index.tsx index ce6b458f1e..4a3d8d1d42 100644 --- a/webapp/src/index.tsx +++ b/webapp/src/index.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/redux/components/UseAsyncAppSelectorCond.tsx b/webapp/src/redux/components/UseAsyncAppSelectorCond.tsx index 1c56dff90d..9e62e3bddd 100644 --- a/webapp/src/redux/components/UseAsyncAppSelectorCond.tsx +++ b/webapp/src/redux/components/UseAsyncAppSelectorCond.tsx @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/redux/ducks/auth.ts b/webapp/src/redux/ducks/auth.ts index f64615ead5..e77351b6c8 100644 --- a/webapp/src/redux/ducks/auth.ts +++ b/webapp/src/redux/ducks/auth.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/redux/ducks/groups.ts b/webapp/src/redux/ducks/groups.ts index d3053bb9c6..0d487f3a35 100644 --- a/webapp/src/redux/ducks/groups.ts +++ b/webapp/src/redux/ducks/groups.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/redux/ducks/index.ts b/webapp/src/redux/ducks/index.ts index e042661755..7fe58f0a35 100644 --- a/webapp/src/redux/ducks/index.ts +++ b/webapp/src/redux/ducks/index.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/redux/ducks/studies.ts b/webapp/src/redux/ducks/studies.ts index 5983a5b1f1..6260a002f0 100644 --- a/webapp/src/redux/ducks/studies.ts +++ b/webapp/src/redux/ducks/studies.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/redux/ducks/studyMaps.ts b/webapp/src/redux/ducks/studyMaps.ts index 5825471851..9b5d1303dd 100644 --- a/webapp/src/redux/ducks/studyMaps.ts +++ b/webapp/src/redux/ducks/studyMaps.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/redux/ducks/studySyntheses.ts b/webapp/src/redux/ducks/studySyntheses.ts index 67b4b20b1b..00beb748b4 100644 --- a/webapp/src/redux/ducks/studySyntheses.ts +++ b/webapp/src/redux/ducks/studySyntheses.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/redux/ducks/ui.ts b/webapp/src/redux/ducks/ui.ts index 2146894e61..18d4886b55 100644 --- a/webapp/src/redux/ducks/ui.ts +++ b/webapp/src/redux/ducks/ui.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/redux/ducks/users.ts b/webapp/src/redux/ducks/users.ts index 5a53925c88..89922f8018 100644 --- a/webapp/src/redux/ducks/users.ts +++ b/webapp/src/redux/ducks/users.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/redux/hooks/useAppDispatch.ts b/webapp/src/redux/hooks/useAppDispatch.ts index 3d73afd0ad..62c5305391 100644 --- a/webapp/src/redux/hooks/useAppDispatch.ts +++ b/webapp/src/redux/hooks/useAppDispatch.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/redux/hooks/useAppSelector.ts b/webapp/src/redux/hooks/useAppSelector.ts index fde4f7b514..54a95cf219 100644 --- a/webapp/src/redux/hooks/useAppSelector.ts +++ b/webapp/src/redux/hooks/useAppSelector.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/redux/hooks/useAsyncAppSelector.ts b/webapp/src/redux/hooks/useAsyncAppSelector.ts index 1d478472e0..2d01ab895a 100644 --- a/webapp/src/redux/hooks/useAsyncAppSelector.ts +++ b/webapp/src/redux/hooks/useAsyncAppSelector.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/redux/hooks/useStudyMaps.ts b/webapp/src/redux/hooks/useStudyMaps.ts index 10e417351c..5e187fed1f 100644 --- a/webapp/src/redux/hooks/useStudyMaps.ts +++ b/webapp/src/redux/hooks/useStudyMaps.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/redux/hooks/useStudySynthesis.ts b/webapp/src/redux/hooks/useStudySynthesis.ts index c81db5e610..57fdf75931 100644 --- a/webapp/src/redux/hooks/useStudySynthesis.ts +++ b/webapp/src/redux/hooks/useStudySynthesis.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/redux/middlewares/localStorageMiddleware.ts b/webapp/src/redux/middlewares/localStorageMiddleware.ts index fcb7b889bc..2e0e4baded 100644 --- a/webapp/src/redux/middlewares/localStorageMiddleware.ts +++ b/webapp/src/redux/middlewares/localStorageMiddleware.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/redux/selectors.ts b/webapp/src/redux/selectors.ts index b95bedddb3..5fb8947726 100644 --- a/webapp/src/redux/selectors.ts +++ b/webapp/src/redux/selectors.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/redux/store.ts b/webapp/src/redux/store.ts index 764ea38fc9..35c9296570 100644 --- a/webapp/src/redux/store.ts +++ b/webapp/src/redux/store.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/redux/utils.ts b/webapp/src/redux/utils.ts index 8362c71b35..ff8fe037db 100644 --- a/webapp/src/redux/utils.ts +++ b/webapp/src/redux/utils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/services/api/auth.ts b/webapp/src/services/api/auth.ts index 97e6185486..f5ec9407df 100644 --- a/webapp/src/services/api/auth.ts +++ b/webapp/src/services/api/auth.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/services/api/client.ts b/webapp/src/services/api/client.ts index 3c2f8ee499..1eae8d860e 100644 --- a/webapp/src/services/api/client.ts +++ b/webapp/src/services/api/client.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/services/api/downloads.ts b/webapp/src/services/api/downloads.ts index 86c4f39037..452df236a0 100644 --- a/webapp/src/services/api/downloads.ts +++ b/webapp/src/services/api/downloads.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/services/api/maintenance.ts b/webapp/src/services/api/maintenance.ts index bb9c331f43..f0bcd0ee99 100644 --- a/webapp/src/services/api/maintenance.ts +++ b/webapp/src/services/api/maintenance.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/services/api/matrix.ts b/webapp/src/services/api/matrix.ts index 9449a7ee50..e7d6bee7a5 100644 --- a/webapp/src/services/api/matrix.ts +++ b/webapp/src/services/api/matrix.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/services/api/misc.ts b/webapp/src/services/api/misc.ts index 27f0427b24..95c40fefaf 100644 --- a/webapp/src/services/api/misc.ts +++ b/webapp/src/services/api/misc.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/services/api/studies/config/thematicTrimming/index.ts b/webapp/src/services/api/studies/config/thematicTrimming/index.ts index 7fb76588db..c6a8bc8992 100644 --- a/webapp/src/services/api/studies/config/thematicTrimming/index.ts +++ b/webapp/src/services/api/studies/config/thematicTrimming/index.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/services/api/studies/config/thematicTrimming/types.ts b/webapp/src/services/api/studies/config/thematicTrimming/types.ts index c2dee142b9..4edbc2075f 100644 --- a/webapp/src/services/api/studies/config/thematicTrimming/types.ts +++ b/webapp/src/services/api/studies/config/thematicTrimming/types.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/services/api/studies/raw/index.ts b/webapp/src/services/api/studies/raw/index.ts index dd53e3cf53..c0138c2581 100644 --- a/webapp/src/services/api/studies/raw/index.ts +++ b/webapp/src/services/api/studies/raw/index.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/services/api/studies/raw/types.ts b/webapp/src/services/api/studies/raw/types.ts index 4acaa7313e..cf8bcf6285 100644 --- a/webapp/src/services/api/studies/raw/types.ts +++ b/webapp/src/services/api/studies/raw/types.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/services/api/studies/tableMode/constants.ts b/webapp/src/services/api/studies/tableMode/constants.ts index 9a60bb25e5..d2271a109d 100644 --- a/webapp/src/services/api/studies/tableMode/constants.ts +++ b/webapp/src/services/api/studies/tableMode/constants.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/services/api/studies/tableMode/index.ts b/webapp/src/services/api/studies/tableMode/index.ts index 16d98a1b80..c20d54dbeb 100644 --- a/webapp/src/services/api/studies/tableMode/index.ts +++ b/webapp/src/services/api/studies/tableMode/index.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/services/api/studies/tableMode/types.ts b/webapp/src/services/api/studies/tableMode/types.ts index 0ce8591501..cfea92f8e7 100644 --- a/webapp/src/services/api/studies/tableMode/types.ts +++ b/webapp/src/services/api/studies/tableMode/types.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/services/api/study.ts b/webapp/src/services/api/study.ts index 1ec0abb24e..bdb8dde28b 100644 --- a/webapp/src/services/api/study.ts +++ b/webapp/src/services/api/study.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/services/api/studydata.ts b/webapp/src/services/api/studydata.ts index cce5d3c36f..a230be85bf 100644 --- a/webapp/src/services/api/studydata.ts +++ b/webapp/src/services/api/studydata.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/services/api/tasks.ts b/webapp/src/services/api/tasks.ts index 75176b0be1..3629646b00 100644 --- a/webapp/src/services/api/tasks.ts +++ b/webapp/src/services/api/tasks.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/services/api/user.ts b/webapp/src/services/api/user.ts index df80a1f076..0217bd26ed 100644 --- a/webapp/src/services/api/user.ts +++ b/webapp/src/services/api/user.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/services/api/variant.ts b/webapp/src/services/api/variant.ts index a3ec3bd202..0825ef7d1b 100644 --- a/webapp/src/services/api/variant.ts +++ b/webapp/src/services/api/variant.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/services/api/xpansion.ts b/webapp/src/services/api/xpansion.ts index 1e69fb56fb..841d280d17 100644 --- a/webapp/src/services/api/xpansion.ts +++ b/webapp/src/services/api/xpansion.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/services/config.ts b/webapp/src/services/config.ts index ab35b873c1..2eed7bff46 100644 --- a/webapp/src/services/config.ts +++ b/webapp/src/services/config.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/services/utils/index.ts b/webapp/src/services/utils/index.ts index 877f6e11f7..27cb441d65 100644 --- a/webapp/src/services/utils/index.ts +++ b/webapp/src/services/utils/index.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/services/utils/localStorage.ts b/webapp/src/services/utils/localStorage.ts index 2c56058981..11bd432e0d 100644 --- a/webapp/src/services/utils/localStorage.ts +++ b/webapp/src/services/utils/localStorage.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/services/webSockets.ts b/webapp/src/services/webSockets.ts index 7ead3aea69..18a250f019 100644 --- a/webapp/src/services/webSockets.ts +++ b/webapp/src/services/webSockets.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/tests/mocks/mockGetBoundingClientRect.ts b/webapp/src/tests/mocks/mockGetBoundingClientRect.ts index de50849a3f..a66544a9d0 100644 --- a/webapp/src/tests/mocks/mockGetBoundingClientRect.ts +++ b/webapp/src/tests/mocks/mockGetBoundingClientRect.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/tests/mocks/mockHTMLCanvasElement.ts b/webapp/src/tests/mocks/mockHTMLCanvasElement.ts index dd498b7924..84e22dd58e 100644 --- a/webapp/src/tests/mocks/mockHTMLCanvasElement.ts +++ b/webapp/src/tests/mocks/mockHTMLCanvasElement.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/tests/mocks/mockResizeObserver.ts b/webapp/src/tests/mocks/mockResizeObserver.ts index 44a81c245d..588233a277 100644 --- a/webapp/src/tests/mocks/mockResizeObserver.ts +++ b/webapp/src/tests/mocks/mockResizeObserver.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/tests/setup.ts b/webapp/src/tests/setup.ts index 72b714e6e2..5512f0a058 100644 --- a/webapp/src/tests/setup.ts +++ b/webapp/src/tests/setup.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/theme.ts b/webapp/src/theme.ts index 18d42e5073..a33788da8e 100644 --- a/webapp/src/theme.ts +++ b/webapp/src/theme.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/types/i18next.d.ts b/webapp/src/types/i18next.d.ts index d011ef2665..a9f77c3835 100644 --- a/webapp/src/types/i18next.d.ts +++ b/webapp/src/types/i18next.d.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/types/reset.d.ts b/webapp/src/types/reset.d.ts index c739024785..ceb285f769 100644 --- a/webapp/src/types/reset.d.ts +++ b/webapp/src/types/reset.d.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/utils/feUtils.ts b/webapp/src/utils/feUtils.ts index 8d6cc00282..8d6c75de6f 100644 --- a/webapp/src/utils/feUtils.ts +++ b/webapp/src/utils/feUtils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/utils/fileUtils.ts b/webapp/src/utils/fileUtils.ts index 6b9d7d120f..f7d3895817 100644 --- a/webapp/src/utils/fileUtils.ts +++ b/webapp/src/utils/fileUtils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/utils/fnUtils.ts b/webapp/src/utils/fnUtils.ts index 81d35982de..426dc01179 100644 --- a/webapp/src/utils/fnUtils.ts +++ b/webapp/src/utils/fnUtils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/utils/i18nUtils.ts b/webapp/src/utils/i18nUtils.ts index a13ca51c31..185f3dbe26 100644 --- a/webapp/src/utils/i18nUtils.ts +++ b/webapp/src/utils/i18nUtils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/utils/muiUtils.ts b/webapp/src/utils/muiUtils.ts index 5fb865b4a5..6ab5f19169 100644 --- a/webapp/src/utils/muiUtils.ts +++ b/webapp/src/utils/muiUtils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/utils/reactUtils.ts b/webapp/src/utils/reactUtils.ts index 44b04bd8fd..a7b71b5468 100644 --- a/webapp/src/utils/reactUtils.ts +++ b/webapp/src/utils/reactUtils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/utils/stringUtils.ts b/webapp/src/utils/stringUtils.ts index bfe8d06f40..6c829d37aa 100644 --- a/webapp/src/utils/stringUtils.ts +++ b/webapp/src/utils/stringUtils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/utils/studiesUtils.ts b/webapp/src/utils/studiesUtils.ts index 164d851334..774e80ed13 100644 --- a/webapp/src/utils/studiesUtils.ts +++ b/webapp/src/utils/studiesUtils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/utils/tsUtils.ts b/webapp/src/utils/tsUtils.ts index 180a7543f5..730c211486 100644 --- a/webapp/src/utils/tsUtils.ts +++ b/webapp/src/utils/tsUtils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/utils/validationUtils.ts b/webapp/src/utils/validationUtils.ts index 1195fe8416..3d4c168697 100644 --- a/webapp/src/utils/validationUtils.ts +++ b/webapp/src/utils/validationUtils.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/vite-env.d.ts b/webapp/src/vite-env.d.ts index 6868cb120f..53c83e842c 100644 --- a/webapp/src/vite-env.d.ts +++ b/webapp/src/vite-env.d.ts @@ -1,4 +1,5 @@ -/** Copyright (c) 2024, RTE (https://www.rte-france.com) +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) * * See AUTHORS.txt * From 6a4bc9cc8fdab24d31163b7777735a58221a48c1 Mon Sep 17 00:00:00 2001 From: Samir Kamal <1954121+skamril@users.noreply.github.com> Date: Thu, 19 Sep 2024 16:12:22 +0200 Subject: [PATCH 008/182] chore(license): add a new ESLint rule to check license header (#2150) --- webapp/.eslintrc.cjs | 14 +++++++++++--- webapp/.prettierignore | 1 + webapp/package-lock.json | 19 +++++++++++++++++++ webapp/package.json | 1 + webapp/src/vite-env.d.ts | 15 --------------- webapp/tsconfig.json | 12 ++++++++++-- webapp/tsconfig.node.json | 5 ++++- webapp/vite.config.ts | 15 ++++++++++++++- 8 files changed, 60 insertions(+), 22 deletions(-) create mode 100644 webapp/.prettierignore delete mode 100644 webapp/src/vite-env.d.ts diff --git a/webapp/.eslintrc.cjs b/webapp/.eslintrc.cjs index 8a4e508acb..29270da704 100644 --- a/webapp/.eslintrc.cjs +++ b/webapp/.eslintrc.cjs @@ -12,10 +12,17 @@ module.exports = { "plugin:react/jsx-runtime", "plugin:react-hooks/recommended", "plugin:jsdoc/recommended-typescript", - "plugin:prettier/recommended", + "plugin:prettier/recommended", // Must be the last one + ], + plugins: [ + "license-header", + "react-refresh", + ], + ignorePatterns: [ + "dist", + "license-header.js", + ".eslintrc.cjs", ], - plugins: ["react-refresh"], - ignorePatterns: ["dist", ".eslintrc.cjs"], parser: "@typescript-eslint/parser", parserOptions: { // `ecmaVersion` is automatically sets by `esXXXX` in `env` @@ -48,6 +55,7 @@ module.exports = { "jsdoc/require-jsdoc": "off", "jsdoc/require-hyphen-before-param-description": "warn", "jsdoc/tag-lines": ["warn", "any", { startLines: 1 }], // Expected 1 line after block description + "license-header/header": ["error", "license-header.js"], "no-console": "warn", "no-param-reassign": [ "error", diff --git a/webapp/.prettierignore b/webapp/.prettierignore new file mode 100644 index 0000000000..f8b474f9c3 --- /dev/null +++ b/webapp/.prettierignore @@ -0,0 +1 @@ +license-header.js diff --git a/webapp/package-lock.json b/webapp/package-lock.json index c326297735..a829e29345 100644 --- a/webapp/package-lock.json +++ b/webapp/package-lock.json @@ -100,6 +100,7 @@ "eslint": "8.55.0", "eslint-config-prettier": "9.0.0", "eslint-plugin-jsdoc": "48.2.0", + "eslint-plugin-license-header": "0.6.1", "eslint-plugin-prettier": "5.0.0", "eslint-plugin-react": "7.33.2", "eslint-plugin-react-hooks": "4.6.0", @@ -6754,6 +6755,15 @@ "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, + "node_modules/eslint-plugin-license-header": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-license-header/-/eslint-plugin-license-header-0.6.1.tgz", + "integrity": "sha512-9aIz8q3OaMr1/uQmCGCWySjTs5nEXUJexNegz/8lluNcZbEl82Ag1Vyr1Hu3oIveRW1NbXDPs6nu4zu9mbrmWA==", + "dev": true, + "dependencies": { + "requireindex": "^1.2.0" + } + }, "node_modules/eslint-plugin-prettier": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz", @@ -11604,6 +11614,15 @@ "node": ">=0.10" } }, + "node_modules/requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "dev": true, + "engines": { + "node": ">=0.10.5" + } + }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", diff --git a/webapp/package.json b/webapp/package.json index 0cac1710ac..7f535f238a 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -106,6 +106,7 @@ "eslint": "8.55.0", "eslint-config-prettier": "9.0.0", "eslint-plugin-jsdoc": "48.2.0", + "eslint-plugin-license-header": "0.6.1", "eslint-plugin-prettier": "5.0.0", "eslint-plugin-react": "7.33.2", "eslint-plugin-react-hooks": "4.6.0", diff --git a/webapp/src/vite-env.d.ts b/webapp/src/vite-env.d.ts deleted file mode 100644 index 53c83e842c..0000000000 --- a/webapp/src/vite-env.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Copyright (c) 2024, RTE (https://www.rte-france.com) - * - * See AUTHORS.txt - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * SPDX-License-Identifier: MPL-2.0 - * - * This file is part of the Antares project. - */ - -/// diff --git a/webapp/tsconfig.json b/webapp/tsconfig.json index 3a20f675ad..c9e8d32271 100644 --- a/webapp/tsconfig.json +++ b/webapp/tsconfig.json @@ -2,7 +2,11 @@ "compilerOptions": { "target": "es2022", "useDefineForClassFields": true, - "lib": ["ES2022", "DOM", "DOM.Iterable"], + "lib": [ + "ES2022", + "DOM", + "DOM.Iterable", + ], "module": "ESNext", "skipLibCheck": true, @@ -13,7 +17,11 @@ "isolatedModules": true, "noEmit": true, "jsx": "react-jsx", - "types": ["vitest/globals", "vitest/jsdom"], + "types": [ + "vite/client", + "vitest/globals", + "vitest/jsdom", + ], /* Linting */ "strict": true, diff --git a/webapp/tsconfig.node.json b/webapp/tsconfig.node.json index b1b8569880..15b8ba2c14 100644 --- a/webapp/tsconfig.node.json +++ b/webapp/tsconfig.node.json @@ -5,7 +5,10 @@ "module": "ESNext", "moduleResolution": "bundler", "allowSyntheticDefaultImports": true, - "types": ["vitest/globals", "vitest/jsdom"] + "types": [ + "vitest/globals", + "vitest/jsdom", + ] }, "include": ["vite.config.ts"] } diff --git a/webapp/vite.config.ts b/webapp/vite.config.ts index 1dfeadfd8a..8dac6c2f4e 100644 --- a/webapp/vite.config.ts +++ b/webapp/vite.config.ts @@ -1,4 +1,17 @@ -/// +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { defineConfig } from "vite"; import react from "@vitejs/plugin-react-swc"; From c1f7e965615d40a3a038be57c75f164669beea42 Mon Sep 17 00:00:00 2001 From: Sylvain Leclerc Date: Mon, 23 Sep 2024 15:02:27 +0200 Subject: [PATCH 009/182] ci(tests): reduce number of workers for tests (#2149) The use of as many workers as logical cores seems to cause significant increases of some monitored durations, including on Linux, which causes irrelevant CI failures. We revert to using as many workers as actual CPUs. Also, load balancing of tests is improved using worksteal, which works far better with our tests which have very different execution times (integration tests are far longer than unit tests). --------- Signed-off-by: Sylvain Leclerc --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 604f8e54d1..7a590a8214 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -53,7 +53,7 @@ jobs: pip install -r requirements-dev.txt - name: Test with pytest run: | - pytest --cov antarest --cov-report xml -n logical + pytest --cov antarest --cov-report xml -n auto --dist=worksteal - name: Archive code coverage results if: matrix.os == 'ubuntu-20.04' uses: actions/upload-artifact@v4 From 664a55c944dbe0e5471cc6e17a10052eef97f88b Mon Sep 17 00:00:00 2001 From: mabw-rte <41002227+mabw-rte@users.noreply.github.com> Date: Mon, 23 Sep 2024 15:14:23 +0200 Subject: [PATCH 010/182] feat(aggregation-api): delete index from the response file (#2151) --- antarest/study/web/raw_studies_blueprint.py | 8 ++-- .../test_aggregate_raw_data.py | 40 ++++++++----------- 2 files changed, 20 insertions(+), 28 deletions(-) diff --git a/antarest/study/web/raw_studies_blueprint.py b/antarest/study/web/raw_studies_blueprint.py index c76bce3e77..44aedba903 100644 --- a/antarest/study/web/raw_studies_blueprint.py +++ b/antarest/study/web/raw_studies_blueprint.py @@ -248,7 +248,7 @@ def aggregate_areas_raw_data( df_matrix, study_service.file_transfer_manager, export_format, - True, + False, True, download_name, download_log, @@ -317,7 +317,7 @@ def aggregate_links_raw_data( df_matrix, study_service.file_transfer_manager, export_format, - True, + False, True, download_name, download_log, @@ -384,7 +384,7 @@ def aggregate_areas_raw_data__all( df_matrix, study_service.file_transfer_manager, export_format, - True, + False, True, download_name, download_log, @@ -450,7 +450,7 @@ def aggregate_links_raw_data__all( df_matrix, study_service.file_transfer_manager, export_format, - True, + False, True, download_name, download_log, diff --git a/tests/integration/raw_studies_blueprint/test_aggregate_raw_data.py b/tests/integration/raw_studies_blueprint/test_aggregate_raw_data.py index 9d9f47e120..d1b1f304bf 100644 --- a/tests/integration/raw_studies_blueprint/test_aggregate_raw_data.py +++ b/tests/integration/raw_studies_blueprint/test_aggregate_raw_data.py @@ -454,7 +454,7 @@ def test_area_aggregation( res = client.get(f"/v1/studies/{internal_study_id}/areas/aggregate/mc-ind/{output_id}", params=params) assert res.status_code == 200, res.json() content = io.BytesIO(res.content) - df = pd.read_csv(content, index_col=0, sep=",") + df = pd.read_csv(content, sep=",") resource_file = ASSETS_DIR.joinpath(f"aggregate_areas_raw_data/{expected_result_filename}") resource_file.parent.mkdir(exist_ok=True, parents=True) if not resource_file.exists(): @@ -483,7 +483,7 @@ def test_links_aggregation( res = client.get(f"/v1/studies/{internal_study_id}/links/aggregate/mc-ind/{output_id}", params=params) assert res.status_code == 200, res.json() content = io.BytesIO(res.content) - df = pd.read_csv(content, index_col=0, sep=",") + df = pd.read_csv(content, sep=",") resource_file = ASSETS_DIR.joinpath(f"aggregate_links_raw_data/{expected_result_filename}") resource_file.parent.mkdir(exist_ok=True, parents=True) if not resource_file.exists(): @@ -514,11 +514,11 @@ def test_different_formats( content = io.BytesIO(res.content) export_format = params["format"] if export_format == TableExportFormat.CSV.value: - df = pd.read_csv(content, index_col=0, sep=",") + df = pd.read_csv(content, sep=",") elif export_format == TableExportFormat.TSV.value: - df = pd.read_csv(content, index_col=0, sep="\t") + df = pd.read_csv(content, sep="\t") else: - df = pd.read_excel(content, index_col=0) # type: ignore + df = pd.read_excel(content) # type: ignore resource_file = ASSETS_DIR.joinpath(f"aggregate_links_raw_data/{expected_result_filename}") resource_file.parent.mkdir(exist_ok=True, parents=True) if not resource_file.exists(): @@ -542,9 +542,7 @@ def test_aggregation_with_incoherent_bodies( output_id = params.pop("output_id") res = client.get(f"/v1/studies/{internal_study_id}/links/aggregate/mc-ind/{output_id}", params=params) assert res.status_code == 200, res.json() - content = io.BytesIO(res.content) - df = pd.read_csv(content, index_col=0, sep=",") - assert df.empty + assert res.content.strip() == b"" def test_wrongly_typed_request(self, client: TestClient, user_access_token: str, internal_study_id: str): """ @@ -603,8 +601,7 @@ def test_empty_columns(self, client: TestClient, user_access_token: str, interna }, ) assert res.status_code == 200, res.json() - df = pd.read_csv(io.BytesIO(res.content), index_col=0, sep=",") - assert df.empty + assert res.content.strip() == b"" # test for links res = client.get( @@ -616,8 +613,7 @@ def test_empty_columns(self, client: TestClient, user_access_token: str, interna }, ) assert res.status_code == 200, res.json() - df = pd.read_csv(io.BytesIO(res.content), index_col=0, sep=",") - assert df.empty + assert res.content.strip() == b"" def test_non_existing_folder( self, tmp_path: Path, client: TestClient, user_access_token: str, internal_study_id: str @@ -662,7 +658,7 @@ def test_area_aggregation( res = client.get(f"/v1/studies/{internal_study_id}/areas/aggregate/mc-all/{output_id}", params=params) assert res.status_code == 200, res.json() content = io.BytesIO(res.content) - df = pd.read_csv(content, index_col=0, sep=",") + df = pd.read_csv(content, sep=",") resource_file = ASSETS_DIR.joinpath(f"aggregate_areas_raw_data/{expected_result_filename}") resource_file.parent.mkdir(exist_ok=True, parents=True) if not resource_file.exists(): @@ -691,7 +687,7 @@ def test_links_aggregation( res = client.get(f"/v1/studies/{internal_study_id}/links/aggregate/mc-all/{output_id}", params=params) assert res.status_code == 200, res.json() content = io.BytesIO(res.content) - df = pd.read_csv(content, index_col=0, sep=",") + df = pd.read_csv(content, sep=",") resource_file = ASSETS_DIR.joinpath(f"aggregate_links_raw_data/{expected_result_filename}") resource_file.parent.mkdir(exist_ok=True, parents=True) if not resource_file.exists(): @@ -722,11 +718,11 @@ def test_different_formats( content = io.BytesIO(res.content) export_format = params["format"] if export_format == TableExportFormat.CSV.value: - df = pd.read_csv(content, index_col=0, sep=",") + df = pd.read_csv(content, sep=",") elif export_format == TableExportFormat.TSV.value: - df = pd.read_csv(content, index_col=0, sep="\t") + df = pd.read_csv(content, sep="\t") else: - df = pd.read_excel(content, index_col=0) # type: ignore + df = pd.read_excel(content) # type: ignore resource_file = ASSETS_DIR.joinpath(f"aggregate_links_raw_data/{expected_result_filename}") resource_file.parent.mkdir(exist_ok=True, parents=True) if not resource_file.exists(): @@ -750,9 +746,7 @@ def test_aggregation_with_incoherent_bodies( output_id = params.pop("output_id") res = client.get(f"/v1/studies/{internal_study_id}/links/aggregate/mc-all/{output_id}", params=params) assert res.status_code == 200, res.json() - content = io.BytesIO(res.content) - df = pd.read_csv(content, index_col=0, sep=",") - assert df.empty + assert res.content.strip() == b"" def test_wrongly_typed_request(self, client: TestClient, user_access_token: str, internal_study_id: str): """ @@ -812,8 +806,7 @@ def test_empty_columns(self, client: TestClient, user_access_token: str, interna }, ) assert res.status_code == 200, res.json() - df = pd.read_csv(io.BytesIO(res.content), index_col=0, sep=",") - assert df.empty + assert res.content.strip() == b"" # test for links res = client.get( @@ -825,8 +818,7 @@ def test_empty_columns(self, client: TestClient, user_access_token: str, interna }, ) assert res.status_code == 200, res.json() - df = pd.read_csv(io.BytesIO(res.content), index_col=0, sep=",") - assert df.empty + assert res.content.strip() == b"" def test_non_existing_folder( self, tmp_path: Path, client: TestClient, user_access_token: str, internal_study_id: str From 749cb289f04283b22926f7ed591e3ccda01968b8 Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Mon, 23 Sep 2024 16:45:44 +0200 Subject: [PATCH 011/182] fix(playlist): change response model to accept optional answers (#2152) --- antarest/study/web/study_data_blueprint.py | 4 +- .../study_data_blueprint/test_playlist.py | 44 +++++++++++++++++++ tests/integration/test_integration.py | 22 ---------- 3 files changed, 46 insertions(+), 24 deletions(-) create mode 100644 tests/integration/study_data_blueprint/test_playlist.py diff --git a/antarest/study/web/study_data_blueprint.py b/antarest/study/web/study_data_blueprint.py index 9b1cca0fc5..c8a8d7fe7f 100644 --- a/antarest/study/web/study_data_blueprint.py +++ b/antarest/study/web/study_data_blueprint.py @@ -629,12 +629,12 @@ def set_playlist( "/studies/{uuid}/config/playlist", tags=[APITag.study_data], summary="Get playlist config", - response_model=t.Dict[int, float], + response_model=t.Optional[t.Dict[int, float]], ) def get_playlist_config( uuid: str, current_user: JWTUser = Depends(auth.get_current_user), - ) -> t.Any: + ) -> t.Optional[t.Dict[int, float]]: logger.info( f"Fetching playlist config for study {uuid}", extra={"user": current_user.id}, diff --git a/tests/integration/study_data_blueprint/test_playlist.py b/tests/integration/study_data_blueprint/test_playlist.py new file mode 100644 index 0000000000..93bc1c9624 --- /dev/null +++ b/tests/integration/study_data_blueprint/test_playlist.py @@ -0,0 +1,44 @@ +# Copyright (c) 2024, RTE (https://www.rte-france.com) +# +# See AUTHORS.txt +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +# This file is part of the Antares project. + +from starlette.testclient import TestClient + + +class TestConfigPlaylist: + """ + Test the end points related to the playlist. + """ + + def test_nominal_case(self, client: TestClient, user_access_token: str): + client.headers = {"Authorization": f"Bearer {user_access_token}"} + + base_study_res = client.post("/v1/studies?name=foo") + study_id = base_study_res.json() + + res = client.get(f"/v1/studies/{study_id}/config/playlist") + assert res.status_code == 200 + assert res.json() is None + + res = client.post(f"/v1/studies/{study_id}/raw?path=settings/generaldata/general/nbyears", json=5) + assert res.status_code == 204 + + res = client.put( + f"/v1/studies/{study_id}/config/playlist", + json={"playlist": [1, 2], "weights": {1: 8.0, 3: 9.0}}, + ) + assert res.status_code == 200 + + res = client.get( + f"/v1/studies/{study_id}/config/playlist", + ) + assert res.status_code == 200 + assert res.json() == {"1": 8.0, "2": 1.0} diff --git a/tests/integration/test_integration.py b/tests/integration/test_integration.py index a136184969..baf7a6610d 100644 --- a/tests/integration/test_integration.py +++ b/tests/integration/test_integration.py @@ -109,28 +109,6 @@ def test_main(client: TestClient, admin_access_token: str) -> None: ) assert res.status_code == 200, res.json() - # playlist - res = client.post( - f"/v1/studies/{study_id}/raw?path=settings/generaldata/general/nbyears", - headers={"Authorization": f'Bearer {george_credentials["access_token"]}'}, - json=5, - ) - assert res.status_code == 204 - - res = client.put( - f"/v1/studies/{study_id}/config/playlist", - headers={"Authorization": f'Bearer {george_credentials["access_token"]}'}, - json={"playlist": [1, 2], "weights": {1: 8.0, 3: 9.0}}, - ) - assert res.status_code == 200 - - res = client.get( - f"/v1/studies/{study_id}/config/playlist", - headers={"Authorization": f'Bearer {george_credentials["access_token"]}'}, - ) - assert res.status_code == 200 - assert res.json() == {"1": 8.0, "2": 1.0} - # Update the active ruleset active_ruleset_name = "ruleset test" res = client.post( From 1c27c6e67c0b76137517b1a3530aa7f8874f2a80 Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Tue, 24 Sep 2024 13:21:57 +0200 Subject: [PATCH 012/182] style(api): change apidoc example to make it work (#2155) [ANT-1993] --- antarest/study/business/general_management.py | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/antarest/study/business/general_management.py b/antarest/study/business/general_management.py index 53e1b9a2ed..088f8708fe 100644 --- a/antarest/study/business/general_management.py +++ b/antarest/study/business/general_management.py @@ -87,6 +87,32 @@ class GeneralFormFields(FormFieldsBaseModel): geographic_trimming: StrictBool thematic_trimming: StrictBool + model_config = { + "json_schema_extra": { + "examples": [ + { + "mode": "Economy", + "first_day": 1, + "last_day": 365, + "horizon": "2020", + "first_month": "january", + "first_week_day": "Monday", + "first_january": "Monday", + "leap_year": True, + "nb_years": 5, + "building_mode": "Automatic", + "selection_mode": True, + "year_by_year": True, + "simulation_synthesis": True, + "mc_scenario": True, + "filtering": True, + "geographic_trimming": True, + "thematic_trimming": True, + } + ] + } + } + @model_validator(mode="before") def day_fields_validation(cls, values: Union[Dict[str, Any], ValidationInfo]) -> Dict[str, Any]: new_values = values if isinstance(values, dict) else values.data From 9c94118d8629de0f7ff0ed3e46e46c8e5a49f078 Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Wed, 25 Sep 2024 13:40:37 +0200 Subject: [PATCH 013/182] fix(api): allow `nominalcapacity` to be a float inside API response (#2158) It also removes useless xpansion code that was unreachable Fix [ANT-2214] --- antarest/study/business/area_management.py | 2 +- antarest/study/business/xpansion_management.py | 14 -------------- antarest/study/web/studies_blueprint.py | 2 +- antarest/study/web/study_data_blueprint.py | 6 +++--- antarest/study/web/xpansion_studies_blueprint.py | 4 +--- tests/integration/test_integration.py | 6 +++--- tests/storage/business/test_xpansion_manager.py | 11 ----------- 7 files changed, 9 insertions(+), 36 deletions(-) diff --git a/antarest/study/business/area_management.py b/antarest/study/business/area_management.py index e79f2df575..5682a6fa60 100644 --- a/antarest/study/business/area_management.py +++ b/antarest/study/business/area_management.py @@ -60,7 +60,7 @@ class ClusterInfoDTO(PatchCluster): name: str enabled: bool = True unitcount: int = 0 - nominalcapacity: int = 0 + nominalcapacity: float = 0 group: t.Optional[str] = None min_stable_power: t.Optional[int] = None min_up_time: t.Optional[int] = None diff --git a/antarest/study/business/xpansion_management.py b/antarest/study/business/xpansion_management.py index 6c02724afd..ad459d036f 100644 --- a/antarest/study/business/xpansion_management.py +++ b/antarest/study/business/xpansion_management.py @@ -26,10 +26,7 @@ from antarest.study.business.all_optional_meta import all_optional_model from antarest.study.business.enum_ignore_case import EnumIgnoreCase from antarest.study.model import Study -from antarest.study.storage.rawstudy.model.filesystem.bucket_node import BucketNode from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy -from antarest.study.storage.rawstudy.model.filesystem.folder_node import FolderNode -from antarest.study.storage.rawstudy.model.filesystem.root.user.expansion.expansion import Expansion from antarest.study.storage.storage_service import StudyStorageService from antarest.study.storage.utils import fix_study_root @@ -715,17 +712,6 @@ def list_resources(self, study: Study, resource_type: XpansionResourceFileType) except ChildNotFoundError: return [] - def list_root_files(self, study: Study) -> t.List[str]: - logger.info(f"Getting xpansion root resources file from study '{study.id}'") - file_study = self.study_storage_service.get_storage(study).get_raw(study) - registered_filenames = [registered_file.key for registered_file in Expansion.registered_files] - root_files = [ - key - for key, node in t.cast(FolderNode, file_study.tree.get_node(["user", "expansion"])).build().items() - if key not in registered_filenames and not isinstance(node, BucketNode) - ] - return root_files - @staticmethod def _is_constraints_file_used(file_study: FileStudy, filename: str) -> bool: # type: ignore with contextlib.suppress(KeyError): diff --git a/antarest/study/web/studies_blueprint.py b/antarest/study/web/studies_blueprint.py index f532ac3051..41398dee6a 100644 --- a/antarest/study/web/studies_blueprint.py +++ b/antarest/study/web/studies_blueprint.py @@ -98,7 +98,7 @@ def get_studies( exists: t.Optional[bool] = Query(None, description="Filter studies based on their existence on disk."), workspace: str = Query("", description="Filter studies based on their workspace."), folder: str = Query("", description="Filter studies based on their folder."), - sort_by: t.Optional[StudySortBy] = Query( + sort_by: StudySortBy = Query( None, description="Sort studies based on their name (case-insensitive) or creation date.", alias="sortBy", diff --git a/antarest/study/web/study_data_blueprint.py b/antarest/study/web/study_data_blueprint.py index c8a8d7fe7f..2128ed849c 100644 --- a/antarest/study/web/study_data_blueprint.py +++ b/antarest/study/web/study_data_blueprint.py @@ -131,7 +131,7 @@ def create_study_data_routes(study_service: StudyService, config: Config) -> API ) def get_areas( uuid: str, - type: t.Optional[AreaType] = None, + type: AreaType = Query(None), ui: bool = False, current_user: JWTUser = Depends(auth.get_current_user), ) -> t.Union[t.List[AreaInfoDTO], t.Dict[str, t.Any]]: @@ -1095,10 +1095,10 @@ def update_version( def get_binding_constraint_list( uuid: str, enabled: t.Optional[bool] = Query(None, description="Filter results based on enabled status"), - operator: t.Optional[BindingConstraintOperator] = Query(None, description="Filter results based on operator"), + operator: BindingConstraintOperator = Query(None, description="Filter results based on operator"), comments: str = Query("", description="Filter results based on comments (word match)"), group: str = Query("", description="filter binding constraints based on group name (exact match)"), - time_step: t.Optional[BindingConstraintFrequency] = Query( + time_step: BindingConstraintFrequency = Query( None, description="Filter results based on time step", alias="timeStep", diff --git a/antarest/study/web/xpansion_studies_blueprint.py b/antarest/study/web/xpansion_studies_blueprint.py index 775505baad..5372fb0cea 100644 --- a/antarest/study/web/xpansion_studies_blueprint.py +++ b/antarest/study/web/xpansion_studies_blueprint.py @@ -292,7 +292,7 @@ def get_resource_content( ) def list_resources( uuid: str, - resource_type: t.Optional[XpansionResourceFileType] = None, + resource_type: XpansionResourceFileType, current_user: JWTUser = Depends(auth.get_current_user), ) -> t.Any: logger.info( @@ -304,8 +304,6 @@ def list_resources( StudyPermissionType.READ, RequestParameters(user=current_user), ) - if resource_type is None: - return study_service.xpansion_manager.list_root_files(study) return study_service.xpansion_manager.list_resources(study, resource_type) return bp diff --git a/tests/integration/test_integration.py b/tests/integration/test_integration.py index baf7a6610d..42b8cb2407 100644 --- a/tests/integration/test_integration.py +++ b/tests/integration/test_integration.py @@ -453,7 +453,7 @@ def test_area_management(client: TestClient, admin_access_token: str) -> None: "args": { "area_id": "area 2", "cluster_name": "cluster 2", - "parameters": {}, + "parameters": {"nominalcapacity": 2.5}, }, } ], @@ -566,7 +566,7 @@ def test_area_management(client: TestClient, admin_access_token: str) -> None: "min-stable-power": None, "min-up-time": None, "name": "cluster 2", - "nominalcapacity": 0, + "nominalcapacity": 2.5, "spinning": None, "spread-cost": None, "type": None, @@ -1466,7 +1466,7 @@ def test_area_management(client: TestClient, admin_access_token: str) -> None: "min-stable-power": None, "min-up-time": None, "name": "cluster 2", - "nominalcapacity": 0, + "nominalcapacity": 2.5, "spinning": None, "spread-cost": None, "type": None, diff --git a/tests/storage/business/test_xpansion_manager.py b/tests/storage/business/test_xpansion_manager.py index 5c08c72242..9c4cc56e07 100644 --- a/tests/storage/business/test_xpansion_manager.py +++ b/tests/storage/business/test_xpansion_manager.py @@ -512,17 +512,6 @@ def test_add_resources(tmp_path: Path) -> None: xpansion_manager.delete_resource(study, XpansionResourceFileType.WEIGHTS, filename3) -@pytest.mark.unit_test -def test_list_root_resources(tmp_path: Path) -> None: - empty_study, study, xpansion_manager = set_up_xpansion_manager(tmp_path) - - constraints_file_content = b"0" - constraints_file_name = "unknownfile.txt" - - empty_study.tree.save({"user": {"expansion": {constraints_file_name: constraints_file_content}}}) - assert [constraints_file_name] == xpansion_manager.list_root_files(study) - - @pytest.mark.unit_test def test_get_single_constraints(tmp_path: Path) -> None: empty_study, study, xpansion_manager = set_up_xpansion_manager(tmp_path) From eb92a05f01c49bfbcec4c5049bb82482ad0cc7ec Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Thu, 26 Sep 2024 09:18:39 +0200 Subject: [PATCH 014/182] fix(adq_patch): set default value for field `enable-first-step` to False (#2160) Fix [ANT-2218] --- requirements.txt | 2 +- resources/empty_study_860.zip | Bin 64654 -> 64589 bytes resources/empty_study_870.zip | Bin 64653 -> 64588 bytes resources/empty_study_880.zip | Bin 64609 -> 64544 bytes .../business/test_study_version_upgrader.py | 2 +- 5 files changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index 4659b879ba..2a7ff60a2d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ Antares-Launcher~=1.3.2 -antares-study-version~=1.0.3 +antares-study-version==1.0.6 antares-timeseries-generation~=0.1.5 # When you install `fastapi[all]`, you get FastAPI along with additional dependencies: diff --git a/resources/empty_study_860.zip b/resources/empty_study_860.zip index 50ee0b283e73e0cb0bf9ee69c9ae95c065eefd02..1ef7d7bc0aa183977d73b0c50df26a0ce05482a3 100644 GIT binary patch delta 1919 zcmZ`)X;@Qd7QVSRfh3R+hX9g71Yv4`LI4|fW72Op093n#_R}iN^4VN5-F7c zGOePn#*$$IzWi%e7X9ya1Ke(Jnz+y-x4SYvKoQ% z1(tYEVC%QKc8uOxy|;wvmg70vJtnzFuXuzdW!;jmPRlU7Rwi$CRYaL(T@9_3%e~wO zjGUoUXd2?S&vl=J#W~yWZQ|69-oe{l>3*%xC$$2@6Uu5fPlsG6RMbkU^2hH#b(9-) z`DA9yNe|t9$h4-(N4~niuMT!mO22JE);$y(X3t&Urz2CC4%{0ki|8@fF;jW`>;17! z8><>bom;GUB$2l79h=&@9Zrg0?mib?xY)ec=tS-iuZEd{_OkVm`rGJd?jlxjlFX9dz3NIN^ zn>p^_BpsCN8jJorMuA57%+qQQFQ7$oC61)V4LF;JQ z_9Hxwqs^VRj5@`j3f=Ix7sYYMOfAR<#INxg#fv(=#TcKYQv%P>&_~$#gmIB+|TVy-BjQE$!buv7emM z_xI~E?g*Dm>AsSARQ>owEs{FREs)erzl* zR`WgUh23Y=!vQ6QHaw3y*$GwNk#k)_OSSO8lCAHhv19X`pLKmJ&v?|2v8D1tWpIyw zd1rQKB5EzF*z)g(XYbXw8vH~o4gK`zbHzOK7-%OYH<<_CN@zW)$~D`VR`^^0v-Yt! zuOF-WD2jp~c!K5>MxTBJZRk8nwD-0+ua^|{IdzYp^%Lp(tVOT&jX?!fIbo&_H;ZFu zbOaxlt@pk8+tw}5I?6&VTYnHlJo;%^BZ%F7+UwXZpY&%9Rt=d;Bc+n&4c*m@lc&1) z@l=ZKu!^uMVx~xTQTJ3$?3n-#x3uNlVcIRtjArN5K>ok88=r`n*G! zDMm9Pu0Ez_r6D$Xvd8Dm7XA@#L#(&%{;M#uB!42df*HT@Jm=GZuCoV|47u5_D8|9h zBFg6MqV?j#=!;W&9!@@PuQO79{C#U6MY@ZSC`f+mSSJ%dDypmNv2JKz%T*7~)@C$o zp1$&**_edCw2m$1i`B{pG^@d-j)Asg13xB_WXabpiuD#R=a)_F z?Xh>M5knM})tIRF{g7my0lza-L2uL_;>Ow`a?}e3XEaVKh%mUsMiB(2mUwV^ng~|o zZ0s6>NQ^CT2P%m1D@s5lQQY_bOc)=hV}3Ytkq3+g2Dr;v*ku9&Is_ir&S~R6FrZdW zM|Y#pA&*0EE*~F(yCM?x#NRfB!wQMZ1RFhyLD+;hq$t_wuNX`#_28^>6Tu#)l)fhw zOi(E3=usjpDWb4xA_A2d6CRV+zE6S-qDgJ2dr8MUNy{d$6=oegQXdJpN)O=7vQf4M zY@Fpo1x}Tq0oNyj(0UCpocudV(1gs%FR&w;2vlhBR#YCq{hw-rbT$m-km22|060@@ zY!4YPi^j5WD)=w5u}=KX*L3)E4h#wcM>OB(z?ove8YLYo#xZ^JvMUu_=h)~=3WU#z zP!}q+&BdcY1v9k|2vm$!bi@St@V)UEry{VEZ1;hIIm1GET3|a9gSBhn+!Q`;;b5z@ z5jak9S_v*tvC&v<5UHZjE81{f6@(!)1ol&xb>Zz@t`rLkz@dJs=Sr0-R1Ba@($Ob0 z7<;v0rCph7I%-LW!)hU#Oow08A`I0*Ad1deVMv*0qux4jVqS<9;P5#8lMkUy7FgI2 z4%zBB;Gu~ecZ~UeHjMcn5>0ZdbG=tB?;CUKAHoUv0?N6+W^t#^Q^KE5kjRZ7Vv$bx z90nHkAxH0j{cl=i5sGjS9~Cl;<9U!q5l}J(D-u~tY(gG5FKt*JZ;RJ#>>+O4H)gY9 b%*Mz4^ca*bS-?MEQ>h|d1bH&HoZf!{%8gnC delta 1936 zcmY*ado+~m8vo||=5Bn(2_YtXw)RfBWLl-?9D;Y_|Zjf74sMwO2U3AoHBOVo@ z!$hdVHo5Dp=^_=CjOuhjyF%lVYhuQzb3S&hbN2K8@vh%*J?r`X-eSn+=Cqcy$%|5DC_k*`UJC!77{#XE86}kF%?fQG-a;B6=JNB3bNeOwAI5Ot3)Dha%i0I&Yz?C|pM6dh5ELp?q`LJ>do01H#b<^pw>M6+!mG@Gd z9rU*!*{nEi^LbVn&Cw6fuPnYvae4g~Jz~4Hu(7-?&txJ@@{<--5idc-AR#G*$VYIjobq1-GC=XIKQ8p$SMK8$i;T? z>%Mj3xZj<=R|t<8lqXHjZEDG^)i+<=byXqRR zW*)!BC0Dn*>h$sp`v&&JYyNviV#2)Sv#GkDw6$n&qjYI`mc8d9AJM~@@C&X@)$&X% zWjdfmy2eIY#ZTB6#Ve2Qvz0WFcQapf<-g(94xOnB>FaQ=$aiWxb2XZuAFOxyJV_+D zywl3q(pWFGP`XT_Hx$83k9pu%wws|0h@4KJRk#iY(RQTu-FYR>p*-~%etD)~wMk6P zI*CquUPE^m+o;R`hRwFLK^4U{s$1(1`SFoG$=A+x{%Cxnvq-`$yVNHHU`~AO#l(n}acW_3~t2oEH?sfE3 zS^tt4PPDAy(1D^P&CZ9G2`f5&Y_J{d6|A}>GmS;ddEY(OSIX z;fK7$WiCq>$Gl3}&kHlSFV0r^B)9T1J)`h?qqJ_>Pr z^mIc%_oZoTa?m&CUb{##T=@8YwzFvTo-SVS?)ca)hc_jivPzq?KmQtJe0XcA>58_j z{PSiNdc!P-j|s(WjcEH9tKYRgA9D8dNxL<8^L1^rd3)OL3@6OjQ%86Ii_jz7jE=j7 z>9-f(8XI`a@jFr4|4;k6n>EJ$CxiUSC$2EQHI6TDx$TzkyZqf?Rzg{?adl#8xS{Bj zd~@*RmQiUhn|bsXJE2)vau37l>~F>WHHv@OCMuiw{+vv|;3TJ{E{AiaZ}+RUySJ3? z*=?MonysNm+^ZccXz>r7UVAToB1w2H5L;LOQTb^o-SP@$?kaWT$it3jR#SEnG_#8r z6&iv~GMpQB} zwaA&wCg_p>3# z6axEG92bf`qi8|KBooshBQQkd+?Y~>y7wBOK8s@k1os*H${Au30=tv#h&oKd1P4{4 zfW~`gz{faf00qp)ys>f$0_{|*FG^Y!FOII7D8?P+f`kO`5~LR7+p_UV17wHnyW*h9@I2Ro&P zfHif#jZ9)?aImKYR?v70_yd8tECihCf8y>*4jRRRxyhZVlm&htLNOh61gebtste#3Tg$8_rvJzNLbLI^p1<@IX^>C{}o)4{%T_yhw|{UAZ3E!*rwhW%U35 zYqoenGkNN@OFTU70HoILsP;f9Wqs1)PDeKRhC*5>b&-9;_O(2AWH}5 G(SHHF%vd-8 diff --git a/resources/empty_study_870.zip b/resources/empty_study_870.zip index 78381529946171a8e3ac0b1be0c8c301d0b8aeaa..1a06576b52e3af8a4f9f00ea965cf49c02aa81b0 100644 GIT binary patch delta 1910 zcmZ`)YgAKL7QVTcgd~IzO9GNg+I5H zYw8PRt^JSf{*wl9WRL6I}*;LzBTMh0&fwcEm(G8SO`PNthvqAY`Nx+#*u7FZzt& zD3yXB>k+74X6Nq@={lqD$QWK=trA{$o-CjZnG~M5<`tEmcU!VPTWEB>TGHhqjW^Hh zj%=1ld^V46aD)C}(+JOl9tWMRFF5>QpR9864d3lS59oR!*9nPEt!~=>I-;>m+AOLs zo_+YtMPfMMmn&SXJ9hsu(@s}1wXc!i5biFkJJX3+KF&8fw0Ps7o>*!+`e3v=cE~VP zQG4?1!%0`S*0;s<@37?&V`%<&?VA@vU8TR?e-YDospG(gQ-$Na9!9iB%g}fC-GasM zHXeW34BH+O{W9+iShm#-nz5JZtoHoj8OVsX*=BP>2^k#mr$M&j*p4|gsl*`P{ zR3Cv+n5FI^rzxJ5i~ZdmVT*K3iEjD)WkqtSsWtgX{#%0t+Xo$c1r@s&gLr(`4Gs0v zo`THP{;$6Z-5#H@YZ%=hB!6TdU{h07ICZKbM<`GD^qD6?HIp77*0*{usw=uaoGv!& z?EUVklYHJFFkryAFIqIO|3>8A-D#1VHDWE*nNDQq6@2{utE8hofe*8D_AuM}7g8f% z)+@R{GS071@x5Dv2hXV{gDT7Hd0s8zQ_7;_7Y2fDRKZ8o4*r*CN|&sD(f6-C=hZsH zsgsn+!iNHD`VaM|p>{Fncl`75_YYdT41dSE&wFRyy`50rqex4BQ5laR&@kCR3Qy&PooDr0H$MlroL z)%w}G+4p=Sn3)?C5gvY~=2a2)MdFEz=F5MJw%2O48~jUfTxIcG(s^de){9o31Py$D zG~I}M=ncg<{CRBkqGJLpC5pZ>&+>Bh^L#7J{OOOKA(Xm3gfv0Ms!NMF|4DgE%aC1L zuNhZ0w$Lo>&^~+ZUkiz;A9Rw7?Zy()4#|yIOWLNrxD_hdBVF4ub>C=D>F7`CL~+Iq z>k8J&mE!8T14B;kP5BT{Ww)oXei#=mG2jno7O*aq%3ECi(e~BH}M&LY&r!iTG=Rebi+Jz|8 ziVUj@0@^6sTaP@&gYgV;vnaLH_%_^O~h1@CDgX<4Rw_MtM5GRU~4)ItcJ7 zd`-0p1qWM4L*OLERf9d095jgr(aL!A8V&lDVHl!|z+o!xMRPQ4EC|OVRBugxHA)7M z<#hC^E=<4Kg5M_tgep44hK?Y6<8zbuLE(xM+*GmA3_47zVlY$>fq1%=Mk!;7gZk>h z$)#Yd1gB@|A8RBwF0-+596RVa;}Tj{n=$7987mfl8Z{|sDD+*oHe@WQf7&PDQ>Q@C zh^6X1Bm8d!$5%Fl&tPQ5018Yv|vZ%u1aA delta 1866 zcmYjSdo_pUb87g z7ZK`m3@VRxbtDxcQn!R|#WaSHNett5?{Lmp>wNbgpYLaX_x|qvUHiNCej>rLS22F) za}>&z8E~3PZ*Ih&!ht280aEM=?55-4GUf$^Bu4W&VhFC8E0>IeSSq6#lQ+RYkLU~n zQVEn%7(k@V0Tst+cAyh6OGHj4D<17fkl$AX89`JLZRBKFVq#=$#7X0bu-LE@!O@|? ziNQvZv5{VfX$Yw)Dn3+Y2PBA;xoKYgKWUg#CqD05!j|~6dt6l}%qFU@h6^VNj&|xt z&K!{BS$$m#jAyDxmNry%5uDz>N6%OvDz6&9^l5l#K6k=g%YG?i`e@UF$*(&1)3pm( zU#%}hrzPEdr8X<*do2Gz|CKur?YMECE8gK8U|o|JZneu?c#6xtWNSFC{|A56aU&{$!x`#a-%<+6qa8i~yK z;nq_pD$*674Va|v9QwZ1S~Tgt`^KxlZQ@b10;wJDwrRdy;fc5zOwa*I~0 zu&0%TwfosyvWL~CXg^feA9{JXAn6*)n{MojkGPq$+Ig>oKqM6M;>O}n>G2A+4j7kEvd8}u2)vN zJ{vC9YxW4N4X-G>v^7)9n-~Olm@~O9#Da765p2*3kVXjYK>=Wp` zHt5X=`NqiWC~lY@IMQF>$en+zN-z6xe&MLyyXt4d4OW+b{CkM*=|eRJJNtO0C5H8C zvsAk;sZ|Vxc-v9a552Eu9Q}Q=?~A(L-tIOU%>IS!fcbfGw?k3pIj&+TQ7E(G^?_;ovXaB7du!QrGjqwbW1VgNT<}JE_~8Ruieky(BykDn2;h zImw`${mCZKFd}1u>~Q(#DnX0nAJ%EB?Q9M+-#;|nA$`p5O3nKO`9Zgyn&ZcGi==BU z#Hh!&7s`4#;mdm-r!1xib_8R4?|xbR?@W%#Ey8*easS-F&`Yx=n<$du_3IJ^cNdae zk%>q7B!(axUBcZ3!z%%iqzD?qlOV+_HAg5{4TGUn6)J@mn;ofq+5)tRcv;KB=Tq8Y zLf8R+6Y1d)2oQN<4hRC0_Kz#}k2U_-o^0xcgI zKwYC_K{DM}><=9i8C(3*J~A0f9lH8BeSZ|5~PF zt1`+Y*=;68TVOzdOqW4Kpq6ANyF`5>Npyq=af?2f772lIIW|wMhsDaahGhFqFSo_b zRM1rtl!*6%+!7OYmIJ*dKlHL3WG;oET4WH(-~<^CehEf<$iSC@Dg~65z0qI_#4HD* zd-s!dSq0NftU`$7YZ<^>5fut# Zhn#6>k(wwGh#Rp@W#YR9L71Wq_J6xXJSzYI diff --git a/resources/empty_study_880.zip b/resources/empty_study_880.zip index 3667408c59c3839d51f785f484464d892f90f46e..3e20e25f1872e46feeee6fa238d292ebc20a9105 100644 GIT binary patch delta 1207 zcmaF(gL%OZ<_%tg^~?+m91Ke*TSjKEFLyo%kFchbjlw{_m7we~|=A{-T z=AXozoc^S*e`-2rD?P_dl%ruu7tk6sSZtfZpV#DXN^TGRi?$DTwd8@oXMy{Ol zdhNu;tuL?MHh(34)UC4O+oF!k*F|)BUp*;WX|*K6`t71=I~dfjOV)lnP{V)!wc`0J z=jX+r5D)vbu)n!3WsAq+O|koZwM|)LdE8Iwt^F2e@%rB72eB(xZ!MFV(0I{ww?K@| z`V%uRTL$0%E8qQi?PRa3tZoJM$B(LST69J^+5ETSv-3I1|eYtgTl zN%vpPEn4WG?0#@clx%KlM@P(@C*PIL!!)wmUh%iCKe{-_s{Emm{M&_HzpcM1Gbz-s zdTwtOY~ww5$?lM&;hgJ4c4Ro)N`|ZR)*3xA)iBpPwYy^d>kFTm9D*LtPVH6H*;IWNpRF+cDOQ)$5aYkEFf^XE1`nJ~M&;(e0K zZ9B&AFS2~@3v2wJxTs~{nXLOtJNC@HW%T}oSiQf`QQ5sQ6F&%lnP|Ohhe~DfInCGH z&y%I98+88XrL;NwUo9!m7TL7_Yev-L#h-Sm$8{Wfr4_oDZQ#wB6*g)2ss9N6D0@=kDxz@%PWo&u2MbcdaqC-C7`U zRxF;tw5ul+zcgM0$-XrW4TP=%2t+t7|Pj8&K+a<6f&~EqI<(hYyJ8Yx|{YW>3_fQb#28~_UYRn zeND~~+QHGPdm$;a_Py-Cu1(J!^=E&7dyQB7!tcH3clVw@l*M{K|A6Lf(O(-{=dr&l zJ7HwKs($iE7P-x9L_a^CJoh(89A^DBXI*5uw_nT)KHzXQpZ$%(&{n65vceDrrLbJ`1r$tPZDO!oc5 O#g!<`z_9WK$XEahx-;(p delta 1216 zcmV;x1V8(r_yghi1F%XFJOBs)2mtp{x>f)H00000003tR000;OAOLe^baZKMXLB!S zWo~71VQge!bYU)OZfR9i4FCtSYH(y0CzCo`po-8J2% zn`YVEKZ$=;s45M251F05$6(YT4mRZ?eGH|O zHh)My7vSVNqIa)EC-`219I1Zt{7bn^fqgi#3|TNk^;M?g@5uVN?ksukY+tAH|KbNe~T=MZlO8bEwV~^ z3ody#NSPSiu#hO8ZRl%x5!UyyDGH`oOS9zxQlV_Qz8|TQKvNS~f6a7ho=Up2=aB=1 z_F%=nH$A?vHhV{JGO2LnKC!w4XbRceoZ%w1>Xo)-WEpyz0e?`c zT{R>zBpHXGz9q34>S{8Mbj(|*XbJgXZuXA)_)6(x2U(5e#@?cs1=UgO+LfI%DRi_t zu@=soxZK+iAlqNSJyeb9`vppG+!WvEh3#tumseeCq77cdfmF7r6<0+3c)6!eoo(d0 zDW#a?nbJNs4JboDtJ1@+S4DR(%YP}#{FKeKoR7}S5@o2)$pFR<31i-OL$=&H2#3+- z8+0CU(YSbWp?(q4%`tl_&_=jE>Elo^rqL{Q0;w`4(;E5bx4-|n5rJeCNS!ZBN_V7B zY#E_L4Vq=TT0=ZG(HZ0oNusS%*Hn~so&u8Su*z^}s*d@-zq?;W7@K*m$$wG8o;jO+ zB}g9^bl!w``EYGPojQW&+d3gTL!B@PxV4l(}`Bx|5@# zqD|7#nH*oOapSH%9HMO**-=f{!&t6;bXN0LP+CXNTMK)&6$%D0+*1H^&t*-|)j{PV z+APU~V<9e8Vgb<(Uen8zMSt$d7!IB0h3{fQ;ib~iu057qfMXeTUd?4>A~Q&!!FK^uL(p0T2mGnaoJ{kB9G9=ppL{B!tdzf z9$Sc~<*Y!q!L%ghiDO>`h^q-BBzdXD#7&%9DCX&sd#K|ivwf#&9e<1GOl0y-?!My? z3W0V%UM**X-3dgNjHKnX_@6#~`MNe=9+6vQenfuTLYJrFaSP5*#iwg%B$)g9v<7O( zweOw9UuO0=$a(R8Ub|rfI=A)t{pyY}s|EbB21o79(APEeKWYapqoeo_P)i30m@!eH z;{yNyX9)lRP)h>@6qEJ@8M9{<^W&4y^8}MH^aLFDQMy)`F;Sr70{{SL2><{X03ZMW z000000001!e)%2?Ra6ZC2eN8#WELlrLFqA*-1!axj+5*8U;*EgO!{d7N|UzwX#vTT eAp2qh9O#pT`&|L6lj8d{3SAQb0Pg4j0000Wmp)zq diff --git a/tests/storage/business/test_study_version_upgrader.py b/tests/storage/business/test_study_version_upgrader.py index 4fa7e940ec..39ce1da653 100644 --- a/tests/storage/business/test_study_version_upgrader.py +++ b/tests/storage/business/test_study_version_upgrader.py @@ -188,7 +188,7 @@ def assert_settings_are_updated(tmp_path: Path, old_values: List[str]) -> None: assert adequacy_patch["threshold-initiate-curtailment-sharing-rule"] == 0.0 assert adequacy_patch["threshold-display-local-matching-rule-violations"] == 0.0 assert adequacy_patch["threshold-csr-variable-bounds-relaxation"] == 3 - assert adequacy_patch["enable-first-step"] + assert not adequacy_patch["enable-first-step"] def get_old_settings_values(tmp_path: Path) -> List[str]: From 049ddd5d51b72ab5ba4186381a0db78e72725bd9 Mon Sep 17 00:00:00 2001 From: Samir Kamal <1954121+skamril@users.noreply.github.com> Date: Thu, 26 Sep 2024 15:48:46 +0200 Subject: [PATCH 015/182] build(ui): fix rollup issue see https://github.com/vitejs/vite/issues/18179 --- webapp/package-lock.json | 716 ++++++++++++++++++++------------------- webapp/package.json | 7 +- 2 files changed, 365 insertions(+), 358 deletions(-) diff --git a/webapp/package-lock.json b/webapp/package-lock.json index bf12406e03..3fea1937e4 100644 --- a/webapp/package-lock.json +++ b/webapp/package-lock.json @@ -96,7 +96,7 @@ "@types/uuid": "9.0.4", "@typescript-eslint/eslint-plugin": "6.14.0", "@typescript-eslint/parser": "6.14.0", - "@vitejs/plugin-react-swc": "3.5.0", + "@vitejs/plugin-react-swc": "3.7.0", "@vitest/coverage-v8": "1.6.0", "@vitest/ui": "1.6.0", "eslint": "8.55.0", @@ -111,7 +111,7 @@ "jsdom": "24.1.0", "prettier": "3.0.3", "typescript": "5.2.2", - "vite": "5.0.8", + "vite": "5.4.8", "vitest": "1.6.0" }, "engines": { @@ -627,9 +627,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", - "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", "cpu": [ "ppc64" ], @@ -643,9 +643,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", - "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", "cpu": [ "arm" ], @@ -659,9 +659,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", - "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", "cpu": [ "arm64" ], @@ -675,9 +675,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", - "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", "cpu": [ "x64" ], @@ -691,9 +691,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", - "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", "cpu": [ "arm64" ], @@ -707,9 +707,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", - "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", "cpu": [ "x64" ], @@ -723,9 +723,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", - "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", "cpu": [ "arm64" ], @@ -739,9 +739,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", - "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", "cpu": [ "x64" ], @@ -755,9 +755,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", - "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", "cpu": [ "arm" ], @@ -771,9 +771,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", - "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", "cpu": [ "arm64" ], @@ -787,9 +787,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", - "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", "cpu": [ "ia32" ], @@ -803,9 +803,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", - "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", "cpu": [ "loong64" ], @@ -819,9 +819,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", - "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", "cpu": [ "mips64el" ], @@ -835,9 +835,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", - "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", "cpu": [ "ppc64" ], @@ -851,9 +851,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", - "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", "cpu": [ "riscv64" ], @@ -867,9 +867,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", - "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", "cpu": [ "s390x" ], @@ -883,9 +883,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", - "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", "cpu": [ "x64" ], @@ -899,9 +899,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", - "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", "cpu": [ "x64" ], @@ -915,9 +915,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", - "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", "cpu": [ "x64" ], @@ -931,9 +931,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", - "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", "cpu": [ "x64" ], @@ -947,9 +947,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", - "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", "cpu": [ "arm64" ], @@ -963,9 +963,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", - "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", "cpu": [ "ia32" ], @@ -979,9 +979,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", - "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", "cpu": [ "x64" ], @@ -2382,214 +2382,6 @@ "url": "https://opencollective.com/immer" } }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.4.tgz", - "integrity": "sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.4.tgz", - "integrity": "sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.4.tgz", - "integrity": "sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.4.tgz", - "integrity": "sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.4.tgz", - "integrity": "sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.4.tgz", - "integrity": "sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.4.tgz", - "integrity": "sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.4.tgz", - "integrity": "sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.4.tgz", - "integrity": "sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.4.tgz", - "integrity": "sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.4.tgz", - "integrity": "sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.4.tgz", - "integrity": "sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.4.tgz", - "integrity": "sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.4.tgz", - "integrity": "sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.4.tgz", - "integrity": "sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.4.tgz", - "integrity": "sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -5629,12 +5421,12 @@ "dev": true }, "node_modules/@vitejs/plugin-react-swc": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.5.0.tgz", - "integrity": "sha512-1PrOvAaDpqlCV+Up8RkAh9qaiUjoDUcjtttyhXDKw53XA6Ve16SOp6cCOpRs8Dj8DqUQs6eTW5YkLcLJjrXAig==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.7.0.tgz", + "integrity": "sha512-yrknSb3Dci6svCd/qhHqhFPDSw0QtjumcqdKMoNNzmOl5lMXTTiqzjWtG4Qask2HdvvzaNgSunbQGet8/GrKdA==", "dev": true, "dependencies": { - "@swc/core": "^1.3.96" + "@swc/core": "^1.5.7" }, "peerDependencies": { "vite": "^4 || ^5" @@ -7786,9 +7578,9 @@ } }, "node_modules/esbuild": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", - "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, "hasInstallScript": true, "bin": { @@ -7798,29 +7590,29 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.12", - "@esbuild/android-arm": "0.19.12", - "@esbuild/android-arm64": "0.19.12", - "@esbuild/android-x64": "0.19.12", - "@esbuild/darwin-arm64": "0.19.12", - "@esbuild/darwin-x64": "0.19.12", - "@esbuild/freebsd-arm64": "0.19.12", - "@esbuild/freebsd-x64": "0.19.12", - "@esbuild/linux-arm": "0.19.12", - "@esbuild/linux-arm64": "0.19.12", - "@esbuild/linux-ia32": "0.19.12", - "@esbuild/linux-loong64": "0.19.12", - "@esbuild/linux-mips64el": "0.19.12", - "@esbuild/linux-ppc64": "0.19.12", - "@esbuild/linux-riscv64": "0.19.12", - "@esbuild/linux-s390x": "0.19.12", - "@esbuild/linux-x64": "0.19.12", - "@esbuild/netbsd-x64": "0.19.12", - "@esbuild/openbsd-x64": "0.19.12", - "@esbuild/sunos-x64": "0.19.12", - "@esbuild/win32-arm64": "0.19.12", - "@esbuild/win32-ia32": "0.19.12", - "@esbuild/win32-x64": "0.19.12" + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" } }, "node_modules/escalade": { @@ -13262,47 +13054,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rollup": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.4.tgz", - "integrity": "sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A==", - "dev": true, - "dependencies": { - "@types/estree": "1.0.5" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.22.4", - "@rollup/rollup-android-arm64": "4.22.4", - "@rollup/rollup-darwin-arm64": "4.22.4", - "@rollup/rollup-darwin-x64": "4.22.4", - "@rollup/rollup-linux-arm-gnueabihf": "4.22.4", - "@rollup/rollup-linux-arm-musleabihf": "4.22.4", - "@rollup/rollup-linux-arm64-gnu": "4.22.4", - "@rollup/rollup-linux-arm64-musl": "4.22.4", - "@rollup/rollup-linux-powerpc64le-gnu": "4.22.4", - "@rollup/rollup-linux-riscv64-gnu": "4.22.4", - "@rollup/rollup-linux-s390x-gnu": "4.22.4", - "@rollup/rollup-linux-x64-gnu": "4.22.4", - "@rollup/rollup-linux-x64-musl": "4.22.4", - "@rollup/rollup-win32-arm64-msvc": "4.22.4", - "@rollup/rollup-win32-ia32-msvc": "4.22.4", - "@rollup/rollup-win32-x64-msvc": "4.22.4", - "fsevents": "~2.3.2" - } - }, - "node_modules/rollup/node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true - }, "node_modules/rrweb-cssom": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", @@ -14897,14 +14648,14 @@ } }, "node_modules/vite": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.8.tgz", - "integrity": "sha512-jYMALd8aeqR3yS9xlHd0OzQJndS9fH5ylVgWdB+pxTwxLKdO1pgC5Dlb398BUxpfaBxa4M9oT7j1g503Gaj5IQ==", + "version": "5.4.8", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.8.tgz", + "integrity": "sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==", "dev": true, "dependencies": { - "esbuild": "^0.19.3", - "postcss": "^8.4.32", - "rollup": "^4.2.0" + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" }, "bin": { "vite": "bin/vite.js" @@ -14923,6 +14674,7 @@ "less": "*", "lightningcss": "^1.21.0", "sass": "*", + "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.4.0" @@ -14940,6 +14692,9 @@ "sass": { "optional": true }, + "sass-embedded": { + "optional": true + }, "stylus": { "optional": true }, @@ -14973,6 +14728,255 @@ "url": "https://opencollective.com/vitest" } }, + "node_modules/vite/node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.0.tgz", + "integrity": "sha512-/IZQvg6ZR0tAkEi4tdXOraQoWeJy9gbQ/cx4I7k9dJaCk9qrXEcdouxRVz5kZXt5C2bQ9pILoAA+KB4C/d3pfw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/vite/node_modules/@rollup/rollup-android-arm64": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.0.tgz", + "integrity": "sha512-ETHi4bxrYnvOtXeM7d4V4kZWixib2jddFacJjsOjwbgYSRsyXYtZHC4ht134OsslPIcnkqT+TKV4eU8rNBKyyQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/vite/node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.0.tgz", + "integrity": "sha512-ZWgARzhSKE+gVUX7QWaECoRQsPwaD8ZR0Oxb3aUpzdErTvlEadfQpORPXkKSdKbFci9v8MJfkTtoEHnnW9Ulng==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/vite/node_modules/@rollup/rollup-darwin-x64": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.0.tgz", + "integrity": "sha512-h0ZAtOfHyio8Az6cwIGS+nHUfRMWBDO5jXB8PQCARVF6Na/G6XS2SFxDl8Oem+S5ZsHQgtsI7RT4JQnI1qrlaw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/vite/node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.0.tgz", + "integrity": "sha512-9pxQJSPwFsVi0ttOmqLY4JJ9pg9t1gKhK0JDbV1yUEETSx55fdyCjt39eBQ54OQCzAF0nVGO6LfEH1KnCPvelA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/vite/node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.0.tgz", + "integrity": "sha512-YJ5Ku5BmNJZb58A4qSEo3JlIG4d3G2lWyBi13ABlXzO41SsdnUKi3HQHe83VpwBVG4jHFTW65jOQb8qyoR+qzg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/vite/node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.0.tgz", + "integrity": "sha512-U4G4u7f+QCqHlVg1Nlx+qapZy+QoG+NV6ux+upo/T7arNGwKvKP2kmGM4W5QTbdewWFgudQxi3kDNST9GT1/mg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/vite/node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.0.tgz", + "integrity": "sha512-aQpNlKmx3amwkA3a5J6nlXSahE1ijl0L9KuIjVOUhfOh7uw2S4piR3mtpxpRtbnK809SBtyPsM9q15CPTsY7HQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/vite/node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.0.tgz", + "integrity": "sha512-9fx6Zj/7vve/Fp4iexUFRKb5+RjLCff6YTRQl4CoDhdMfDoobWmhAxQWV3NfShMzQk1Q/iCnageFyGfqnsmeqQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/vite/node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.0.tgz", + "integrity": "sha512-VWQiCcN7zBgZYLjndIEh5tamtnKg5TGxyZPWcN9zBtXBwfcGSZ5cHSdQZfQH/GB4uRxk0D3VYbOEe/chJhPGLQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/vite/node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.0.tgz", + "integrity": "sha512-EHmPnPWvyYqncObwqrosb/CpH3GOjE76vWVs0g4hWsDRUVhg61hBmlVg5TPXqF+g+PvIbqkC7i3h8wbn4Gp2Fg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/vite/node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.0.tgz", + "integrity": "sha512-tsSWy3YQzmpjDKnQ1Vcpy3p9Z+kMFbSIesCdMNgLizDWFhrLZIoN21JSq01g+MZMDFF+Y1+4zxgrlqPjid5ohg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/vite/node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.0.tgz", + "integrity": "sha512-anr1Y11uPOQrpuU8XOikY5lH4Qu94oS6j0xrulHk3NkLDq19MlX8Ng/pVipjxBJ9a2l3+F39REZYyWQFkZ4/fw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/vite/node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.0.tgz", + "integrity": "sha512-7LB+Bh+Ut7cfmO0m244/asvtIGQr5pG5Rvjz/l1Rnz1kDzM02pSX9jPaS0p+90H5I1x4d1FkCew+B7MOnoatNw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/vite/node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.0.tgz", + "integrity": "sha512-+3qZ4rer7t/QsC5JwMpcvCVPRcJt1cJrYS/TMJZzXIJbxWFQEVhrIc26IhB+5Z9fT9umfVc+Es2mOZgl+7jdJQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/vite/node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.0.tgz", + "integrity": "sha512-YdicNOSJONVx/vuPkgPTyRoAPx3GbknBZRCOUkK84FJ/YTfs/F0vl/YsMscrB6Y177d+yDRcj+JWMPMCgshwrA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/vite/node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/vite/node_modules/rollup": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.0.tgz", + "integrity": "sha512-W21MUIFPZ4+O2Je/EU+GP3iz7PH4pVPUXSbEZdatQnxo29+3rsUjgrJmzuAZU24z7yRAnFN6ukxeAhZh/c7hzg==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.22.0", + "@rollup/rollup-android-arm64": "4.22.0", + "@rollup/rollup-darwin-arm64": "4.22.0", + "@rollup/rollup-darwin-x64": "4.22.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.22.0", + "@rollup/rollup-linux-arm-musleabihf": "4.22.0", + "@rollup/rollup-linux-arm64-gnu": "4.22.0", + "@rollup/rollup-linux-arm64-musl": "4.22.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.22.0", + "@rollup/rollup-linux-riscv64-gnu": "4.22.0", + "@rollup/rollup-linux-s390x-gnu": "4.22.0", + "@rollup/rollup-linux-x64-gnu": "4.22.0", + "@rollup/rollup-linux-x64-musl": "4.22.0", + "@rollup/rollup-win32-arm64-msvc": "4.22.0", + "@rollup/rollup-win32-ia32-msvc": "4.22.0", + "@rollup/rollup-win32-x64-msvc": "4.22.0", + "fsevents": "~2.3.2" + } + }, "node_modules/vitest": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.6.0.tgz", diff --git a/webapp/package.json b/webapp/package.json index 92197c44b4..3ee3e81d4e 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -102,7 +102,7 @@ "@types/uuid": "9.0.4", "@typescript-eslint/eslint-plugin": "6.14.0", "@typescript-eslint/parser": "6.14.0", - "@vitejs/plugin-react-swc": "3.5.0", + "@vitejs/plugin-react-swc": "3.7.0", "@vitest/coverage-v8": "1.6.0", "@vitest/ui": "1.6.0", "eslint": "8.55.0", @@ -117,7 +117,7 @@ "jsdom": "24.1.0", "prettier": "3.0.3", "typescript": "5.2.2", - "vite": "5.0.8", + "vite": "5.4.8", "vitest": "1.6.0" }, "engines": { @@ -130,6 +130,9 @@ "react-json-view": { "react": "18.2.0", "react-dom": "18.2.0" + }, + "vite@5.4.8": { + "rollup": "4.22.0" } } } From 426a97a6572aea92b2d25fce3a22bd50d2b0646c Mon Sep 17 00:00:00 2001 From: maugde <167874615+maugde@users.noreply.github.com> Date: Fri, 27 Sep 2024 15:09:40 +0200 Subject: [PATCH 016/182] feat(variant): add new endpoint to clear snapshots (#2135) Adding the new endpoint "clear-snapshots" will allow admin users to clear old snapshots in order to easily gain disk usage. --------- Signed-off-by: Sylvain Leclerc Co-authored-by: Mohamed Abdel Wedoud Co-authored-by: Laurent LAPORTE <43534797+laurent-laporte-pro@users.noreply.github.com> Co-authored-by: belthlemar Co-authored-by: Sylvain Leclerc Co-authored-by: Hatim Dinia <33469289+hdinia@users.noreply.github.com> Co-authored-by: Samir Kamal <1954121+skamril@users.noreply.github.com> Co-authored-by: mabw-rte <41002227+mabw-rte@users.noreply.github.com> --- antarest/core/tasks/model.py | 1 + .../variantstudy/variant_study_service.py | 74 ++++++- antarest/study/web/variant_blueprint.py | 31 ++- installer | 2 +- .../variant_blueprint/test_variant_manager.py | 106 ++++++++++ .../test_variant_study_service.py | 192 +++++++++++++++++- 6 files changed, 398 insertions(+), 8 deletions(-) diff --git a/antarest/core/tasks/model.py b/antarest/core/tasks/model.py index 138344602a..a7ca9aedb9 100644 --- a/antarest/core/tasks/model.py +++ b/antarest/core/tasks/model.py @@ -37,6 +37,7 @@ class TaskType(str, Enum): SCAN = "SCAN" UPGRADE_STUDY = "UPGRADE_STUDY" THERMAL_CLUSTER_SERIES_GENERATION = "THERMAL_CLUSTER_SERIES_GENERATION" + SNAPSHOT_CLEARING = "SNAPSHOT_CLEARING" class TaskStatus(Enum): diff --git a/antarest/study/storage/variantstudy/variant_study_service.py b/antarest/study/storage/variantstudy/variant_study_service.py index 1e26a20c8a..8737824696 100644 --- a/antarest/study/storage/variantstudy/variant_study_service.py +++ b/antarest/study/storage/variantstudy/variant_study_service.py @@ -15,7 +15,7 @@ import re import shutil import typing as t -from datetime import datetime +from datetime import datetime, timedelta from functools import reduce from pathlib import Path from uuid import uuid4 @@ -45,9 +45,11 @@ from antarest.core.serialization import to_json_string from antarest.core.tasks.model import CustomTaskEventMessages, TaskDTO, TaskResult, TaskType from antarest.core.tasks.service import DEFAULT_AWAIT_MAX_TIMEOUT, ITaskService, TaskUpdateNotifier, noop_notifier +from antarest.core.utils.fastapi_sqlalchemy import db from antarest.core.utils.utils import assert_this, suppress_exception from antarest.matrixstore.service import MatrixService from antarest.study.model import RawStudy, Study, StudyAdditionalData, StudyMetadataDTO, StudySimResultDTO +from antarest.study.repository import AccessPermissions, StudyFilter from antarest.study.storage.abstract_storage_service import AbstractStorageService from antarest.study.storage.patch_service import PatchService from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfig, FileStudyTreeConfigDTO @@ -625,9 +627,9 @@ def callback(notifier: TaskUpdateNotifier) -> TaskResult: ) return TaskResult( success=generate_result.success, - message=f"{study_id} generated successfully" - if generate_result.success - else f"{study_id} not generated", + message=( + f"{study_id} generated successfully" if generate_result.success else f"{study_id} not generated" + ), return_value=generate_result.model_dump_json(), ) @@ -1053,3 +1055,67 @@ def initialize_additional_data(self, variant_study: VariantStudy) -> bool: exc_info=e, ) return False + + def clear_all_snapshots(self, retention_hours: timedelta, params: t.Optional[RequestParameters] = None) -> str: + """ + Admin command that clear all variant snapshots older than `retention_hours` (in hours). + Only available for admin users. + + Args: + retention_hours: number of retention hours + params: request parameters used to identify the user status + Returns: None + + Raises: + UserHasNotPermissionError + """ + if params is None or (params.user and not params.user.is_site_admin() and not params.user.is_admin_token()): + raise UserHasNotPermissionError() + + task_name = f"Cleaning all snapshot updated or accessed at least {retention_hours} hours ago." + + snapshot_clearing_task_instance = SnapshotCleanerTask( + variant_study_service=self, retention_hours=retention_hours + ) + + return self.task_service.add_task( + snapshot_clearing_task_instance, + task_name, + task_type=TaskType.SNAPSHOT_CLEARING, + ref_id="SNAPSHOT_CLEANING", + custom_event_messages=None, + request_params=params, + ) + + +class SnapshotCleanerTask: + def __init__( + self, + variant_study_service: VariantStudyService, + retention_hours: timedelta, + ) -> None: + self._variant_study_service = variant_study_service + self._retention_hours = retention_hours + + def _clear_all_snapshots(self) -> None: + with db(): + variant_list = self._variant_study_service.repository.get_all( + study_filter=StudyFilter( + variant=True, + access_permissions=AccessPermissions(is_admin=True), + ) + ) + for variant in variant_list: + if variant.updated_at and variant.updated_at < datetime.utcnow() - self._retention_hours: + if variant.last_access and variant.last_access < datetime.utcnow() - self._retention_hours: + self._variant_study_service.clear_snapshot(variant) + + def run_task(self, notifier: TaskUpdateNotifier) -> TaskResult: + msg = f"Start cleaning all snapshots updated or accessed {self._retention_hours} hours ago." + notifier(msg) + self._clear_all_snapshots() + msg = f"All selected snapshots were successfully cleared." + notifier(msg) + return TaskResult(success=True, message=msg) + + __call__ = run_task diff --git a/antarest/study/web/variant_blueprint.py b/antarest/study/web/variant_blueprint.py index 1c3c092a78..bc000fadf4 100644 --- a/antarest/study/web/variant_blueprint.py +++ b/antarest/study/web/variant_blueprint.py @@ -9,7 +9,7 @@ # SPDX-License-Identifier: MPL-2.0 # # This file is part of the Antares project. - +import datetime import logging from typing import List, Optional, Union @@ -416,4 +416,33 @@ def create_from_variant( params = RequestParameters(user=current_user) raise NotImplementedError() + @bp.put( + "/studies/variants/clear-snapshots", + tags=[APITag.study_variant_management], + summary="Clear variant snapshots", + responses={ + 200: { + "description": "Delete snapshots older than a specific number of hours. By default, this number is 24." + } + }, + ) + def clear_variant_snapshots( + hours: int = 24, + current_user: JWTUser = Depends(auth.get_current_user), + ) -> str: + """ + Endpoint that clear `limit` hours old and older variant snapshots. + + Args: limit (int, optional): Number of hours to clear. Defaults to 24. + + Returns: ID of the task running the snapshot clearing. + """ + retention_hours = datetime.timedelta(hours=hours) + logger.info( + f"Delete all variant snapshots older than {retention_hours} hours.", + extra={"user": current_user.id}, + ) + params = RequestParameters(user=current_user) + return variant_study_service.clear_all_snapshots(retention_hours, params) + return bp diff --git a/installer b/installer index e7552a8a66..bd51be05c7 160000 --- a/installer +++ b/installer @@ -1 +1 @@ -Subproject commit e7552a8a66bef72f9e4b8fc6e1b274895f15a180 +Subproject commit bd51be05c7f0f1c634f2cd0c564686ed34b3a6f7 diff --git a/tests/integration/variant_blueprint/test_variant_manager.py b/tests/integration/variant_blueprint/test_variant_manager.py index 435f7565ac..00c75e515c 100644 --- a/tests/integration/variant_blueprint/test_variant_manager.py +++ b/tests/integration/variant_blueprint/test_variant_manager.py @@ -10,16 +10,19 @@ # # This file is part of the Antares project. +import datetime import io import logging import time import typing as t +from pathlib import Path import pytest from starlette.testclient import TestClient from antarest.core.tasks.model import TaskDTO, TaskStatus from tests.integration.assets import ASSETS_DIR +from tests.integration.utils import wait_task_completion @pytest.fixture(name="base_study_id") @@ -45,6 +48,68 @@ def variant_id_fixture( return t.cast(str, res.json()) +@pytest.fixture(name="generate_snapshots") +def generate_snapshot_fixture( + client: TestClient, + admin_access_token: str, + base_study_id: str, + monkeypatch: pytest.MonkeyPatch, + caplog: t.Any, +) -> t.List[str]: + """Generate some snapshots with different date of update and last access""" + + class FakeDatetime: + """ + Class that handle fake timestamp creation/update of variant + """ + + fake_time: datetime.datetime + + @classmethod + def now(cls) -> datetime.datetime: + """Method used to get the custom timestamp""" + return cls.fake_time + + @classmethod + def utcnow(cls) -> datetime.datetime: + """Method used while a variant is created""" + return cls.now() + + # Initialize variant_ids list + variant_ids = [] + + admin_headers = {"Authorization": f"Bearer {admin_access_token}"} + + with caplog.at_level(level=logging.WARNING): + # Generate three different timestamp + older_time = datetime.datetime.utcnow() - datetime.timedelta( + hours=25 + ) # older than the default value which is 24 + old_time = datetime.datetime.utcnow() - datetime.timedelta(hours=8) # older than 6 hours + recent_time = datetime.datetime.utcnow() - datetime.timedelta(hours=2) # older than 0 hours + + with monkeypatch.context() as m: + # Patch the datetime import instance of the variant_study_service package to hack + # the `created_at` and `updated_at` fields + # useful when a variant is created + m.setattr("antarest.study.storage.variantstudy.variant_study_service.datetime", FakeDatetime) + # useful when a study is accessed + m.setattr("antarest.study.service.datetime", FakeDatetime) + + for index, different_time in enumerate([older_time, old_time, recent_time]): + FakeDatetime.fake_time = different_time + res = client.post(f"/v1/studies/{base_study_id}/variants?name=variant{index}", headers=admin_headers) + variant_ids.append(res.json()) + + # Generate snapshot for each variant + task_id = client.put(f"/v1/studies/{variant_ids[index]}/generate", headers=admin_headers) + wait_task_completion( + client, admin_access_token, task_id.json() + ) # wait for the filesystem to be updated + client.get(f"v1/studies/{variant_ids[index]}", headers=admin_headers) + return t.cast(t.List[str], variant_ids) + + def test_variant_manager( client: TestClient, admin_access_token: str, @@ -330,3 +395,44 @@ def test_outputs(client: TestClient, admin_access_token: str, variant_id: str, t assert res.status_code == 200, res.json() outputs = res.json() assert len(outputs) == 1 + + +def test_clear_snapshots( + client: TestClient, + admin_access_token: str, + tmp_path: Path, + generate_snapshots: t.List[str], + monkeypatch: pytest.MonkeyPatch, +) -> None: + """ + The `snapshot/` directory must not exist after a call to `clear-snapshot`. + """ + # Set up + admin_headers = {"Authorization": f"Bearer {admin_access_token}"} + + older = Path(tmp_path).joinpath(f"internal_workspace", generate_snapshots[0], "snapshot") + old = Path(tmp_path).joinpath(f"internal_workspace", generate_snapshots[1], "snapshot") + recent = Path(tmp_path).joinpath(f"internal_workspace", generate_snapshots[2], "snapshot") + + # Test + # Check initial data + assert older.exists() and old.exists() and recent.exists() + + # Delete the older snapshot (default retention hours implicitly equals to 24 hours) + # and check if it was successfully deleted + response = client.put(f"v1/studies/variants/clear-snapshots", headers=admin_headers) + task = response.json() + wait_task_completion(client, admin_access_token, task) + assert (not older.exists()) and old.exists() and recent.exists() + + # Delete the old snapshot and check if it was successfully deleted + response = client.put(f"v1/studies/variants/clear-snapshots?hours=6", headers=admin_headers) + task = response.json() + wait_task_completion(client, admin_access_token, task) + assert (not older.exists()) and (not old.exists()) and recent.exists() + + # Delete the recent snapshot and check if it was successfully deleted + response = client.put(f"v1/studies/variants/clear-snapshots?hours=-1", headers=admin_headers) + task = response.json() + wait_task_completion(client, admin_access_token, task) + assert not (older.exists() and old.exists() and recent.exists()) diff --git a/tests/study/storage/variantstudy/test_variant_study_service.py b/tests/study/storage/variantstudy/test_variant_study_service.py index 80a3de302d..cd8f9100c0 100644 --- a/tests/study/storage/variantstudy/test_variant_study_service.py +++ b/tests/study/storage/variantstudy/test_variant_study_service.py @@ -12,16 +12,19 @@ import datetime import re +import typing from pathlib import Path from unittest.mock import Mock import numpy as np import pytest +from antarest.core.jwt import DEFAULT_ADMIN_USER, JWTUser from antarest.core.model import PublicMode -from antarest.core.requests import RequestParameters +from antarest.core.requests import RequestParameters, UserHasNotPermissionError from antarest.core.utils.fastapi_sqlalchemy import db -from antarest.login.model import Group, User +from antarest.core.utils.utils import sanitize_uuid +from antarest.login.model import ADMIN_ID, ADMIN_NAME, Group, User from antarest.matrixstore.service import SimpleMatrixService from antarest.study.business.utils import execute_or_add_commands from antarest.study.model import RawStudy, StudyAdditionalData @@ -239,3 +242,188 @@ def test_generate_task( else: expected = EXPECTED_DENORMALIZED assert res_study_files == expected + + @with_db_context + def test_clear_all_snapshots( + self, + tmp_path: Path, + variant_study_service: VariantStudyService, + raw_study_service: RawStudyService, + monkeypatch: pytest.MonkeyPatch, + ) -> None: + """ + - Test return value in case the user is not allowed to call the function, + - Test return value in case the user give a bad argument (negative + integer or other type than integer) + - Test deletion of an old snapshot and a recent one + + In order to test date and time of objects, a FakeDateTime class is defined and used + by a monkeypatch context + """ + + class FakeDatetime: + """ + Class that handle fake timestamp creation/update of variant + """ + + fake_time: datetime.datetime + + @classmethod + def now(cls) -> datetime.datetime: + """Method used to get the custom timestamp""" + return datetime.datetime(2023, 12, 31) + + @classmethod + def utcnow(cls) -> datetime.datetime: + """Method used while a variant is created""" + return cls.now() + + # ============================= + # SET UP + # ============================= + # Create two users + # an admin user + # noinspection PyArgumentList + admin_user = User(id=ADMIN_ID, name=ADMIN_NAME) + db.session.add(admin_user) + db.session.commit() + + regular_user = User(id=99, name="regular") + db.session.add(regular_user) + db.session.commit() + + # noinspection PyArgumentList + group = Group(id="my-group", name="group") + db.session.add(group) + db.session.commit() + + # Create a raw study (root of the variant) + raw_study_path = tmp_path / "My RAW Study" + # noinspection PyArgumentList + raw_study = RawStudy( + id="my_raw_study", + name=raw_study_path.name, + version="860", + author="John Smith", + created_at=datetime.datetime(2023, 7, 15, 16, 45), + updated_at=datetime.datetime(2023, 7, 19, 8, 15), + last_access=datetime.datetime.utcnow(), + public_mode=PublicMode.FULL, + owner=admin_user, + groups=[group], + path=str(raw_study_path), + additional_data=StudyAdditionalData(author="John Smith"), + ) + + db.session.add(raw_study) + db.session.commit() + + # Set up the Raw Study + raw_study_service.create(raw_study) + + # Variant studies + variant_list = [] + + # For each variant created + with monkeypatch.context() as m: + # Set the system date older to create older variants + m.setattr("antarest.study.storage.variantstudy.variant_study_service.datetime", FakeDatetime) + m.setattr("antarest.study.service.datetime", FakeDatetime) + + for index in range(3): + variant_list.append( + variant_study_service.create_variant_study( + raw_study.id, + "Variant{}".format(str(index)), + params=Mock( + spec=RequestParameters, + user=DEFAULT_ADMIN_USER, + ), + ) + ) + + # Generate a snapshot for each variant + variant_study_service.generate( + sanitize_uuid(variant_list[index].id), + False, + False, + params=Mock( + spec=RequestParameters, + user=Mock(spec=JWTUser, id=regular_user.id, impersonator=regular_user.id), + ), + ) + + variant_study_service.get(variant_list[index]) + + variant_study_path = Path(tmp_path).joinpath("internal_studies") + + # Check if everything was correctly initialized + assert len(list(variant_study_path.iterdir())) == 3 + + for variant in variant_study_path.iterdir(): + assert variant.is_dir() + assert list(variant.iterdir())[0].name == "snapshot" + + # ============================= + # TEST + # ============================= + # A user without rights cannot clear snapshots + with pytest.raises(UserHasNotPermissionError): + variant_study_service.clear_all_snapshots( + datetime.timedelta(1), + params=Mock( + spec=RequestParameters, + user=Mock( + spec=JWTUser, + id=regular_user.id, + is_site_admin=Mock(return_value=False), + is_admin_token=Mock(return_value=False), + ), + ), + ) + + # At this point, variants was not accessed yet + # Thus snapshot directories must exist still + for variant in variant_study_path.iterdir(): + assert variant.is_dir() + assert list(variant.iterdir()) + + # Simulate access for two old snapshots + variant_list[0].last_access = datetime.datetime.utcnow() - datetime.timedelta(days=60) + variant_list[1].last_access = datetime.datetime.utcnow() - datetime.timedelta(hours=6) + + # Simulate access for a recent one + variant_list[2].last_access = datetime.datetime.utcnow() - datetime.timedelta(hours=1) + db.session.commit() + + # Clear old snapshots + task_id = variant_study_service.clear_all_snapshots( + datetime.timedelta(hours=5), + Mock( + spec=RequestParameters, + user=DEFAULT_ADMIN_USER, + ), + ) + variant_study_service.task_service.await_task(task_id) + + # Check if old snapshots was successfully cleared + nb_snapshot_dir = 0 # after the for iterations, must equal 1 + for variant_path in variant_study_path.iterdir(): + if variant_path.joinpath("snapshot").exists(): + nb_snapshot_dir += 1 + assert nb_snapshot_dir == 1 + + # Clear most recent snapshots + task_id = variant_study_service.clear_all_snapshots( + datetime.timedelta(hours=-1), + Mock( + spec=RequestParameters, + user=DEFAULT_ADMIN_USER, + ), + ) + variant_study_service.task_service.await_task(task_id) + + # Check if all snapshots were cleared + nb_snapshot_dir = 0 # after the for iterations, must equal 0 + for variant_path in variant_study_path.iterdir(): + assert not variant_path.joinpath("snapshot").exists() From 0bbfde56279589a8e6458d8a164dbc1e9fadb7c6 Mon Sep 17 00:00:00 2001 From: Samir Kamal <1954121+skamril@users.noreply.github.com> Date: Mon, 30 Sep 2024 11:15:59 +0200 Subject: [PATCH 017/182] build(ui): fix issue with build result not working (#2163) --- webapp/package-lock.json | 6491 ++++++++--------- webapp/package.json | 144 +- webapp/src/components/App/Data/index.tsx | 13 +- .../components/App/Settings/Groups/Header.tsx | 8 - .../Groups/dialog/CreateGroupDialog.tsx | 8 - .../Groups/dialog/GroupFormDialog/index.tsx | 12 - .../components/App/Settings/Groups/index.tsx | 12 - .../components/App/Settings/Tokens/Header.tsx | 8 - .../dialog/TokenFormDialog/TokenForm.tsx | 5 - .../Tokens/dialog/TokenFormDialog/index.tsx | 12 - .../Tokens/dialog/TokenInfoDialog.tsx | 8 - .../components/App/Settings/Tokens/index.tsx | 12 - .../components/App/Settings/Users/Header.tsx | 8 - .../Users/dialog/UserFormDialog/UserForm.tsx | 4 - .../Users/dialog/UserFormDialog/index.tsx | 14 - .../components/App/Settings/Users/index.tsx | 12 - webapp/src/components/App/Settings/index.tsx | 4 - .../Notes/NodeEditorModal/index.tsx | 4 - .../dialogs/ThematicTrimmingDialog/index.tsx | 11 +- .../Modelization/Areas/AreaPropsView.tsx | 4 - .../Hydro/Allocation/AllocationField.tsx | 11 +- .../Hydro/Correlation/CorrelationField.tsx | 14 +- .../constraintviews/ConstraintElement.tsx | 8 +- .../src/components/App/Singlestudy/index.tsx | 4 - .../components/App/Tasks/LaunchJobLogView.tsx | 5 - webapp/src/components/common/Fieldset.tsx | 7 +- webapp/src/components/common/FileTable.tsx | 10 - .../common/GroupedDataTable/index.tsx | 2 +- webapp/src/components/common/LogModal.tsx | 8 - .../src/components/common/MatrixGrid/style.ts | 3 +- webapp/src/components/common/SelectMulti.tsx | 10 +- webapp/src/components/common/SelectSingle.tsx | 19 +- .../src/components/common/TextSeparator.tsx | 5 - .../components/common/TreeItemEnhanced.tsx | 4 +- .../components/common/dialogs/BasicDialog.tsx | 20 - .../common/dialogs/ConfirmationDialog.tsx | 13 - .../common/dialogs/DataViewerDialog/index.tsx | 4 - .../components/common/dialogs/OkDialog.tsx | 13 - .../common/loaders/SimpleLoader.tsx | 8 +- .../src/components/common/page/BasicPage.tsx | 13 - .../src/components/common/page/RootPage.tsx | 15 - webapp/src/hooks/useEnqueueErrorSnackbar.tsx | 8 - webapp/src/redux/ducks/auth.ts | 2 +- 43 files changed, 3085 insertions(+), 3915 deletions(-) diff --git a/webapp/package-lock.json b/webapp/package-lock.json index 3fea1937e4..c516722650 100644 --- a/webapp/package-lock.json +++ b/webapp/package-lock.json @@ -8,46 +8,46 @@ "name": "antares-web", "version": "2.17.6", "dependencies": { - "@emotion/react": "11.11.1", - "@emotion/styled": "11.11.0", + "@emotion/react": "11.13.3", + "@emotion/styled": "11.13.0", "@glideapps/glide-data-grid": "6.0.3", - "@handsontable/react": "14.1.0", - "@mui/icons-material": "5.16.1", - "@mui/lab": "5.0.0-alpha.172", - "@mui/material": "5.16.1", - "@mui/x-tree-view": "7.10.0", + "@handsontable/react": "14.5.0", + "@mui/icons-material": "6.1.1", + "@mui/lab": "6.0.0-beta.10", + "@mui/material": "6.1.1", + "@mui/x-tree-view": "7.18.0", "@reduxjs/toolkit": "1.9.6", - "axios": "1.5.1", - "clsx": "2.0.0", + "axios": "1.7.7", + "clsx": "2.1.1", "d3": "5.16.0", - "debug": "4.3.4", + "debug": "4.3.7", "draft-convert": "2.1.13", "draft-js": "0.11.7", "draftjs-to-html": "0.9.1", - "handsontable": "14.1.0", + "handsontable": "14.5.0", "hoist-non-react-statics": "3.3.2", - "i18next": "23.5.1", - "i18next-browser-languagedetector": "7.1.0", - "i18next-http-backend": "2.4.2", - "immer": "10.0.3", + "i18next": "23.15.1", + "i18next-browser-languagedetector": "8.0.0", + "i18next-http-backend": "2.6.1", + "immer": "10.1.1", "js-cookie": "3.0.5", - "jsoneditor": "9.10.4", - "jwt-decode": "3.1.2", + "jsoneditor": "10.1.0", + "jwt-decode": "4.0.0", "lodash": "4.17.21", - "material-react-table": "2.0.5", - "moment": "2.29.4", + "material-react-table": "3.0.1", + "moment": "2.30.1", "notistack": "3.0.1", - "plotly.js": "2.26.1", - "ramda": "0.29.0", - "ramda-adjunct": "4.1.1", - "react": "18.2.0", + "plotly.js": "2.35.2", + "ramda": "0.30.1", + "ramda-adjunct": "5.1.0", + "react": "18.3.1", "react-beautiful-dnd": "13.1.1", "react-color": "2.19.3", "react-d3-graph": "2.6.0", - "react-dom": "18.2.0", + "react-dom": "18.3.1", "react-dropzone": "14.2.3", - "react-hook-form": "7.47.0", - "react-i18next": "13.2.2", + "react-hook-form": "7.53.0", + "react-i18next": "15.0.2", "react-json-view": "1.21.3", "react-plotly.js": "2.6.0", "react-redux": "8.1.3", @@ -55,64 +55,63 @@ "react-router-dom": "6.3.0", "react-split": "2.0.14", "react-syntax-highlighter": "15.5.0", - "react-use": "17.4.0", - "react-virtualized-auto-sizer": "1.0.20", - "react-window": "1.8.9", + "react-use": "17.5.1", + "react-virtualized-auto-sizer": "1.0.24", + "react-window": "1.8.10", "redux": "4.2.1", "redux-thunk": "2.4.2", - "swagger-ui-react": "5.9.0", + "swagger-ui-react": "5.17.14", "ts-toolbelt": "9.6.0", "use-undo": "1.1.1", - "uuid": "9.0.1", + "uuid": "10.0.0", "xml-js": "1.6.11" }, "devDependencies": { - "@testing-library/jest-dom": "6.4.6", - "@testing-library/react": "16.0.0", + "@testing-library/jest-dom": "6.5.0", + "@testing-library/react": "16.0.1", "@testing-library/user-event": "14.5.2", - "@total-typescript/ts-reset": "0.5.1", + "@total-typescript/ts-reset": "0.6.1", "@types/d3": "5.16.0", - "@types/debug": "4.1.9", - "@types/draft-convert": "2.1.5", - "@types/draft-js": "0.11.13", - "@types/draftjs-to-html": "0.8.2", - "@types/js-cookie": "3.0.4", + "@types/debug": "4.1.12", + "@types/draft-convert": "2.1.8", + "@types/draft-js": "0.11.18", + "@types/draftjs-to-html": "0.8.4", + "@types/js-cookie": "3.0.6", "@types/jsoneditor": "9.9.5", - "@types/lodash": "4.14.199", - "@types/node": "18.16.1", - "@types/ramda": "0.29.5", - "@types/react": "18.2.24", - "@types/react-beautiful-dnd": "13.1.5", - "@types/react-color": "3.0.7", + "@types/lodash": "4.17.9", + "@types/node": "22.7.3", + "@types/ramda": "0.30.2", + "@types/react": "18.3.9", + "@types/react-beautiful-dnd": "13.1.8", + "@types/react-color": "3.0.12", "@types/react-d3-graph": "2.6.5", - "@types/react-dom": "18.2.8", - "@types/react-plotly.js": "2.6.1", + "@types/react-dom": "18.3.0", + "@types/react-plotly.js": "2.6.3", "@types/react-syntax-highlighter": "15.5.13", - "@types/react-virtualized-auto-sizer": "1.0.1", - "@types/react-window": "1.8.6", - "@types/redux-logger": "3.0.10", - "@types/swagger-ui-react": "4.18.1", + "@types/react-virtualized-auto-sizer": "1.0.4", + "@types/react-window": "1.8.8", + "@types/swagger-ui-react": "4.18.3", "@types/testing-library__jest-dom": "6.0.0", - "@types/uuid": "9.0.4", - "@typescript-eslint/eslint-plugin": "6.14.0", - "@typescript-eslint/parser": "6.14.0", + "@types/uuid": "10.0.0", + "@typescript-eslint/eslint-plugin": "7.2.0", + "@typescript-eslint/parser": "7.2.0", "@vitejs/plugin-react-swc": "3.7.0", - "@vitest/coverage-v8": "1.6.0", - "@vitest/ui": "1.6.0", - "eslint": "8.55.0", - "eslint-config-prettier": "9.0.0", - "eslint-plugin-jsdoc": "48.2.0", + "@vitest/coverage-v8": "2.1.1", + "@vitest/ui": "2.1.1", + "eslint": "8.57.1", + "eslint-config-prettier": "9.1.0", + "eslint-plugin-jsdoc": "48.10.0", "eslint-plugin-license-header": "0.6.1", - "eslint-plugin-prettier": "5.0.0", - "eslint-plugin-react": "7.33.2", - "eslint-plugin-react-hooks": "4.6.0", - "eslint-plugin-react-refresh": "0.4.5", - "husky": "8.0.3", - "jsdom": "24.1.0", - "prettier": "3.0.3", - "typescript": "5.2.2", + "eslint-plugin-prettier": "5.2.1", + "eslint-plugin-react": "7.37.0", + "eslint-plugin-react-hooks": "4.6.2", + "eslint-plugin-react-refresh": "0.4.12", + "husky": "9.1.6", + "jsdom": "25.0.1", + "prettier": "3.3.3", + "typescript": "5.4.5", "vite": "5.4.8", - "vitest": "1.6.0" + "vitest": "2.1.1" }, "engines": { "node": "18.16.1" @@ -459,9 +458,9 @@ "dev": true }, "node_modules/@braintree/sanitize-url": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz", - "integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==" + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.0.2.tgz", + "integrity": "sha512-NVf/1YycDMs6+FxS0Tb/W8MjJRDQdXF+tBfDtZ5UZeiRUkTmwKc4vmYCKZTyymfJk1gnMsauvZSX/HiV9jOABw==" }, "node_modules/@choojs/findup": { "version": "0.2.1", @@ -504,11 +503,6 @@ "stylis": "4.2.0" } }, - "node_modules/@emotion/cache/node_modules/@emotion/weak-memoize": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", - "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==" - }, "node_modules/@emotion/hash": { "version": "0.9.2", "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", @@ -528,17 +522,17 @@ "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==" }, "node_modules/@emotion/react": { - "version": "11.11.1", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz", - "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==", + "version": "11.13.3", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.3.tgz", + "integrity": "sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==", "dependencies": { "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.11.0", - "@emotion/cache": "^11.11.0", - "@emotion/serialize": "^1.1.2", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", - "@emotion/utils": "^1.2.1", - "@emotion/weak-memoize": "^0.3.1", + "@emotion/babel-plugin": "^11.12.0", + "@emotion/cache": "^11.13.0", + "@emotion/serialize": "^1.3.1", + "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", + "@emotion/utils": "^1.4.0", + "@emotion/weak-memoize": "^0.4.0", "hoist-non-react-statics": "^3.3.1" }, "peerDependencies": { @@ -568,16 +562,16 @@ "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==" }, "node_modules/@emotion/styled": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz", - "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==", + "version": "11.13.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.0.tgz", + "integrity": "sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==", "dependencies": { "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.11.0", - "@emotion/is-prop-valid": "^1.2.1", - "@emotion/serialize": "^1.1.2", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", - "@emotion/utils": "^1.2.1" + "@emotion/babel-plugin": "^11.12.0", + "@emotion/is-prop-valid": "^1.3.0", + "@emotion/serialize": "^1.3.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", + "@emotion/utils": "^1.4.0" }, "peerDependencies": { "@emotion/react": "^11.0.0-rc.0", @@ -608,18 +602,18 @@ "integrity": "sha512-BymCXzCG3r72VKJxaYVwOXATqXIZ85cuvg0YOUDxMGNrKc1DJRZk8MgV5wyXRyEayIMd4FuXJIUgTBXvDNW5cA==" }, "node_modules/@emotion/weak-memoize": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", - "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==" }, "node_modules/@es-joy/jsdoccomment": { - "version": "0.42.0", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.42.0.tgz", - "integrity": "sha512-R1w57YlVA6+YE01wch3GPYn6bCsrOV3YW/5oGGE2tmX6JcL9Nr+b5IikrjMPF+v9CV3ay+obImEdsDhovhJrzw==", + "version": "0.46.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.46.0.tgz", + "integrity": "sha512-C3Axuq1xd/9VqFZpW4YAzOx5O9q/LP46uIQy/iNDpHG3fmPa6TBtvfglMCs3RBiBxAIi0Go97r8+jvTt55XMyQ==", "dev": true, "dependencies": { "comment-parser": "1.4.1", - "esquery": "^1.5.0", + "esquery": "^1.6.0", "jsdoc-type-pratt-parser": "~4.0.0" }, "engines": { @@ -1079,9 +1073,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz", - "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1144,21 +1138,21 @@ "integrity": "sha512-1VN6N38t5/DcjJ7y7XUYrDx1LuzvvzlrFdBdMG90Qo1xc8+LXHqbWbsTEm5Ec5gXTEbDEO53vUT35R+2COmOyg==" }, "node_modules/@handsontable/react": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@handsontable/react/-/react-14.1.0.tgz", - "integrity": "sha512-tgqeiiVIG1PBczaq5/pwtQBlhmldej4wEfqx3L7aJn1fcbArGGsCbRdNd6aneH4BP79aC/ajiwr2vVx7NeAcgg==", + "version": "14.5.0", + "resolved": "https://registry.npmjs.org/@handsontable/react/-/react-14.5.0.tgz", + "integrity": "sha512-Z6weZTELY1hqgW8TDno000xScd+I1sQ0DcswX2AdnCCwvvQkmC74xmIREalwtFE9CCi0Y/kiSvq/G0bYgl//pQ==", "peerDependencies": { "handsontable": ">=14.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", "deprecated": "Use @eslint/config-array instead", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", + "@humanwhocodes/object-schema": "^2.0.3", "debug": "^4.3.1", "minimatch": "^3.0.5" }, @@ -1216,25 +1210,57 @@ "react": "*" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, "engines": { - "node": ">=8" + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, "dependencies": { - "@sinclair/typebox": "^0.27.8" + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, "node_modules/@jridgewell/gen-mapping": { @@ -1266,6 +1292,16 @@ "node": ">=6.0.0" } }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "peer": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", @@ -1424,72 +1460,60 @@ "node": ">=6.0.0" } }, - "node_modules/@mui/base": { - "version": "5.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.40.tgz", - "integrity": "sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ==", + "node_modules/@maplibre/maplibre-gl-style-spec": { + "version": "20.3.1", + "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-20.3.1.tgz", + "integrity": "sha512-5ueL4UDitzVtceQ8J4kY+Px3WK+eZTsmGwha3MBKHKqiHvKrjWWwBCIl1K8BuJSc5OFh83uI8IFNoFvQxX2uUw==", "dependencies": { - "@babel/runtime": "^7.23.9", - "@floating-ui/react-dom": "^2.0.8", - "@mui/types": "^7.2.14", - "@mui/utils": "^5.15.14", - "@popperjs/core": "^2.11.8", - "clsx": "^2.1.0", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" + "@mapbox/jsonlint-lines-primitives": "~2.0.2", + "@mapbox/unitbezier": "^0.0.1", + "json-stringify-pretty-compact": "^4.0.0", + "minimist": "^1.2.8", + "quickselect": "^2.0.0", + "rw": "^1.3.3", + "sort-object": "^3.0.3", + "tinyqueue": "^3.0.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "bin": { + "gl-style-format": "dist/gl-style-format.mjs", + "gl-style-migrate": "dist/gl-style-migrate.mjs", + "gl-style-validate": "dist/gl-style-validate.mjs" } }, - "node_modules/@mui/base/node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "engines": { - "node": ">=6" - } + "node_modules/@maplibre/maplibre-gl-style-spec/node_modules/@mapbox/unitbezier": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.1.tgz", + "integrity": "sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==" }, - "node_modules/@mui/core-downloads-tracker": { - "version": "5.16.7", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.16.7.tgz", - "integrity": "sha512-RtsCt4Geed2/v74sbihWzzRs+HsIQCfclHeORh5Ynu2fS4icIKozcSubwuG7vtzq2uW3fOR1zITSP84TNt2GoQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - } + "node_modules/@maplibre/maplibre-gl-style-spec/node_modules/tinyqueue": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-3.0.0.tgz", + "integrity": "sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g==" }, - "node_modules/@mui/icons-material": { - "version": "5.16.1", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.16.1.tgz", - "integrity": "sha512-ogQPweYba4+5XZykilwxn2/oS78uwoQ0BVBpOhhCJo0ooZsqTTsalhzP2qD/RdGqMQ8xyXPz1sYM2djTruVVVA==", + "node_modules/@mui/base": { + "version": "5.0.0-beta.58", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.58.tgz", + "integrity": "sha512-P0E7ZrxOuyYqBvVv9w8k7wm+Xzx/KRu+BGgFcR2htTsGCpJNQJCSUXNUZ50MUmSU9hzqhwbQWNXhV1MBTl6F7A==", "dependencies": { - "@babel/runtime": "^7.23.9" + "@babel/runtime": "^7.25.0", + "@floating-ui/react-dom": "^2.1.1", + "@mui/types": "^7.2.15", + "@mui/utils": "6.0.0-rc.0", + "@popperjs/core": "^2.11.8", + "clsx": "^2.1.1", + "prop-types": "^15.8.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "@mui/material": "^5.0.0", "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0" + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -1497,119 +1521,84 @@ } } }, - "node_modules/@mui/lab": { - "version": "5.0.0-alpha.172", - "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.172.tgz", - "integrity": "sha512-stpa3WTsDE1HamFR4eeS6Bhxalm+u9FhzzNph/PrDMdWSRBHlJs2mqvZ6FEoO22O7MOCwNMqbXTkvEwsyEf0ew==", + "node_modules/@mui/base/node_modules/@mui/utils": { + "version": "6.0.0-rc.0", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.0.0-rc.0.tgz", + "integrity": "sha512-tBp0ILEXDL0bbDDT8PnZOjCqSm5Dfk2N0Z45uzRw+wVl6fVvloC9zw8avl+OdX1Bg3ubs/ttKn8nRNv17bpM5A==", "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/base": "5.0.0-beta.40", - "@mui/system": "^5.16.1", + "@babel/runtime": "^7.25.0", "@mui/types": "^7.2.15", - "@mui/utils": "^5.16.1", - "clsx": "^2.1.0", - "prop-types": "^15.8.1" + "@types/prop-types": "^15.7.12", + "clsx": "^2.1.1", + "prop-types": "^15.8.1", + "react-is": "^18.3.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "@emotion/react": "^11.5.0", - "@emotion/styled": "^11.3.0", - "@mui/material": ">=5.15.0", - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { - "@emotion/react": { - "optional": true - }, - "@emotion/styled": { - "optional": true - }, "@types/react": { "optional": true } } }, - "node_modules/@mui/lab/node_modules/@mui/private-theming": { - "version": "5.16.6", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.16.6.tgz", - "integrity": "sha512-rAk+Rh8Clg7Cd7shZhyt2HGTTE5wYKNSJ5sspf28Fqm/PZ69Er9o6KX25g03/FG2dfpg5GCwZh/xOojiTfm3hw==", - "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/utils": "^5.16.6", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=12.0.0" - }, + "node_modules/@mui/core-downloads-tracker": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.1.1.tgz", + "integrity": "sha512-VdQC1tPIIcZAnf62L2M1eQif0x2vlKg3YK4kGYbtijSH4niEgI21GnstykW1vQIs+Bc6L+Hua2GATYVjilJ22A==", "funding": { "type": "opencollective", "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } } }, - "node_modules/@mui/lab/node_modules/@mui/styled-engine": { - "version": "5.16.6", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.16.6.tgz", - "integrity": "sha512-zaThmS67ZmtHSWToTiHslbI8jwrmITcN93LQaR2lKArbvS7Z3iLkwRoiikNWutx9MBs8Q6okKvbZq1RQYB3v7g==", + "node_modules/@mui/icons-material": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.1.1.tgz", + "integrity": "sha512-sy/YKwcLPW8VcacNP2uWMYR9xyWuwO9NN9FXuGEU90bRshBXj8pdKk+joe3TCW7oviVS3zXLHlc94wQ0jNsQRQ==", "dependencies": { - "@babel/runtime": "^7.23.9", - "@emotion/cache": "^11.11.0", - "csstype": "^3.1.3", - "prop-types": "^15.8.1" + "@babel/runtime": "^7.25.6" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "@emotion/react": "^11.4.1", - "@emotion/styled": "^11.3.0", - "react": "^17.0.0 || ^18.0.0" + "@mui/material": "^6.1.1", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { - "@emotion/react": { - "optional": true - }, - "@emotion/styled": { + "@types/react": { "optional": true } } }, - "node_modules/@mui/lab/node_modules/@mui/system": { - "version": "5.16.7", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.16.7.tgz", - "integrity": "sha512-Jncvs/r/d/itkxh7O7opOunTqbbSSzMTHzZkNLM+FjAOg+cYAZHrPDlYe1ZGKUYORwwb2XexlWnpZp0kZ4AHuA==", + "node_modules/@mui/lab": { + "version": "6.0.0-beta.10", + "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-6.0.0-beta.10.tgz", + "integrity": "sha512-eqCBz5SZS8Un9To3UcjH01AxkOOgvme/g0ZstFC8Nz1Kg5/EJMA0ByhKS5AvUMzUKrv0FXMdbuPqbBvF3bVrXg==", "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/private-theming": "^5.16.6", - "@mui/styled-engine": "^5.16.6", - "@mui/types": "^7.2.15", - "@mui/utils": "^5.16.6", - "clsx": "^2.1.0", - "csstype": "^3.1.3", + "@babel/runtime": "^7.25.6", + "@mui/base": "5.0.0-beta.58", + "@mui/system": "^6.1.1", + "@mui/types": "^7.2.17", + "@mui/utils": "^6.1.1", + "clsx": "^2.1.1", "prop-types": "^15.8.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" }, "funding": { "type": "opencollective", @@ -1618,8 +1607,11 @@ "peerDependencies": { "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0" + "@mui/material": "^6.1.1", + "@mui/material-pigment-css": "^6.1.1", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@emotion/react": { @@ -1628,39 +1620,34 @@ "@emotion/styled": { "optional": true }, + "@mui/material-pigment-css": { + "optional": true + }, "@types/react": { "optional": true } } }, - "node_modules/@mui/lab/node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "engines": { - "node": ">=6" - } - }, "node_modules/@mui/material": { - "version": "5.16.1", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.16.1.tgz", - "integrity": "sha512-BGTgJRb0d/hX9tus5CEb6N/Fo8pE4tYA+s9r4/S0PCrtZ3urCLXlTH4qrAvggQbiF1cYRAbHCkVHoQ+4Pdxl+w==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.1.1.tgz", + "integrity": "sha512-b+eULldTqtqTCbN++2BtBWCir/1LwEYw+2mIlOt2GiEUh1EBBw4/wIukGKKNt3xrCZqRA80yLLkV6tF61Lq3cA==", "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/base": "5.0.0-beta.40", - "@mui/core-downloads-tracker": "^5.16.1", - "@mui/system": "^5.16.1", - "@mui/types": "^7.2.15", - "@mui/utils": "^5.16.1", - "@types/react-transition-group": "^4.4.10", - "clsx": "^2.1.0", + "@babel/runtime": "^7.25.6", + "@mui/core-downloads-tracker": "^6.1.1", + "@mui/system": "^6.1.1", + "@mui/types": "^7.2.17", + "@mui/utils": "^6.1.1", + "@popperjs/core": "^2.11.8", + "@types/react-transition-group": "^4.4.11", + "clsx": "^2.1.1", "csstype": "^3.1.3", "prop-types": "^15.8.1", "react-is": "^18.3.1", "react-transition-group": "^4.4.5" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" }, "funding": { "type": "opencollective", @@ -1669,9 +1656,10 @@ "peerDependencies": { "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" + "@mui/material-pigment-css": "^6.1.1", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@emotion/react": { @@ -1680,30 +1668,33 @@ "@emotion/styled": { "optional": true }, + "@mui/material-pigment-css": { + "optional": true + }, "@types/react": { "optional": true } } }, - "node_modules/@mui/material/node_modules/@mui/private-theming": { - "version": "5.16.6", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.16.6.tgz", - "integrity": "sha512-rAk+Rh8Clg7Cd7shZhyt2HGTTE5wYKNSJ5sspf28Fqm/PZ69Er9o6KX25g03/FG2dfpg5GCwZh/xOojiTfm3hw==", + "node_modules/@mui/private-theming": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.1.1.tgz", + "integrity": "sha512-JlrjIdhyZUtewtdAuUsvi3ZnO0YS49IW4Mfz19ZWTlQ0sDGga6LNPVwHClWr2/zJK2we2BQx9/i8M32rgKuzrg==", "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/utils": "^5.16.6", + "@babel/runtime": "^7.25.6", + "@mui/utils": "^6.1.1", "prop-types": "^15.8.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0" + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -1711,18 +1702,19 @@ } } }, - "node_modules/@mui/material/node_modules/@mui/styled-engine": { - "version": "5.16.6", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.16.6.tgz", - "integrity": "sha512-zaThmS67ZmtHSWToTiHslbI8jwrmITcN93LQaR2lKArbvS7Z3iLkwRoiikNWutx9MBs8Q6okKvbZq1RQYB3v7g==", + "node_modules/@mui/styled-engine": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.1.1.tgz", + "integrity": "sha512-HJyIoMpFb11fnHuRtUILOXgq6vj4LhIlE8maG4SwP/W+E5sa7HFexhnB3vOMT7bKys4UKNxhobC8jwWxYilGsA==", "dependencies": { - "@babel/runtime": "^7.23.9", - "@emotion/cache": "^11.11.0", + "@babel/runtime": "^7.25.6", + "@emotion/cache": "^11.13.1", + "@emotion/sheet": "^1.4.0", "csstype": "^3.1.3", "prop-types": "^15.8.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" }, "funding": { "type": "opencollective", @@ -1731,7 +1723,7 @@ "peerDependencies": { "@emotion/react": "^11.4.1", "@emotion/styled": "^11.3.0", - "react": "^17.0.0 || ^18.0.0" + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@emotion/react": { @@ -1742,22 +1734,22 @@ } } }, - "node_modules/@mui/material/node_modules/@mui/system": { - "version": "5.16.7", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.16.7.tgz", - "integrity": "sha512-Jncvs/r/d/itkxh7O7opOunTqbbSSzMTHzZkNLM+FjAOg+cYAZHrPDlYe1ZGKUYORwwb2XexlWnpZp0kZ4AHuA==", + "node_modules/@mui/system": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.1.1.tgz", + "integrity": "sha512-PaYsCz2tUOcpu3T0okDEsSuP/yCDIj9JZ4Tox1JovRSKIjltHpXPsXZSGr3RiWdtM1MTQMFMCZzu0+CKbyy+Kw==", "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/private-theming": "^5.16.6", - "@mui/styled-engine": "^5.16.6", - "@mui/types": "^7.2.15", - "@mui/utils": "^5.16.6", - "clsx": "^2.1.0", + "@babel/runtime": "^7.25.6", + "@mui/private-theming": "^6.1.1", + "@mui/styled-engine": "^6.1.1", + "@mui/types": "^7.2.17", + "@mui/utils": "^6.1.1", + "clsx": "^2.1.1", "csstype": "^3.1.3", "prop-types": "^15.8.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" }, "funding": { "type": "opencollective", @@ -1766,8 +1758,8 @@ "peerDependencies": { "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0" + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@emotion/react": { @@ -1781,46 +1773,23 @@ } } }, - "node_modules/@mui/material/node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "engines": { - "node": ">=6" + "node_modules/@mui/types": { + "version": "7.2.17", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.17.tgz", + "integrity": "sha512-oyumoJgB6jDV8JFzRqjBo2daUuHpzDjoO/e3IrRhhHo/FxJlaVhET6mcNrKHUq2E+R+q3ql0qAtvQ4rfWHhAeQ==", + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@mui/private-theming": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.1.1.tgz", - "integrity": "sha512-JlrjIdhyZUtewtdAuUsvi3ZnO0YS49IW4Mfz19ZWTlQ0sDGga6LNPVwHClWr2/zJK2we2BQx9/i8M32rgKuzrg==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.25.6", - "@mui/utils": "^6.1.1", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/private-theming/node_modules/@mui/utils": { + "node_modules/@mui/utils": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.1.1.tgz", "integrity": "sha512-HlRrgdJSPbYDXPpoVMWZV8AE7WcFtAk13rWNWAEVWKSanzBBkymjz3km+Th/Srowsh4pf1fTSP1B0L116wQBYw==", - "peer": true, "dependencies": { "@babel/runtime": "^7.25.6", "@mui/types": "^7.2.17", @@ -1846,26 +1815,19 @@ } } }, - "node_modules/@mui/private-theming/node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@mui/styled-engine": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.1.1.tgz", - "integrity": "sha512-HJyIoMpFb11fnHuRtUILOXgq6vj4LhIlE8maG4SwP/W+E5sa7HFexhnB3vOMT7bKys4UKNxhobC8jwWxYilGsA==", + "node_modules/@mui/x-date-pickers": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-7.18.0.tgz", + "integrity": "sha512-12tXIoMj9vpS8fS/bS3kWPCoVrH38vNGCxgplI0vOnUrN9rJuYJz3agLPJe1S0xciTw+9W8ZSe3soaW+owoz1Q==", "peer": true, "dependencies": { "@babel/runtime": "^7.25.6", - "@emotion/cache": "^11.13.1", - "@emotion/sheet": "^1.4.0", - "csstype": "^3.1.3", - "prop-types": "^15.8.1" + "@mui/utils": "^5.16.6", + "@mui/x-internals": "7.18.0", + "@types/react-transition-group": "^4.4.11", + "clsx": "^2.1.1", + "prop-types": "^15.8.1", + "react-transition-group": "^4.4.5" }, "engines": { "node": ">=14.0.0" @@ -1875,9 +1837,19 @@ "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "@emotion/react": "^11.4.1", - "@emotion/styled": "^11.3.0", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + "@emotion/react": "^11.9.0", + "@emotion/styled": "^11.8.1", + "@mui/material": "^5.15.14 || ^6.0.0", + "@mui/system": "^5.15.14 || ^6.0.0", + "date-fns": "^2.25.0 || ^3.2.0 || ^4.0.0", + "date-fns-jalali": "^2.13.0-0 || ^3.2.0-0", + "dayjs": "^1.10.7", + "luxon": "^3.0.2", + "moment": "^2.29.4", + "moment-hijri": "^2.1.2", + "moment-jalaali": "^0.7.4 || ^0.8.0 || ^0.9.0 || ^0.10.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { "@emotion/react": { @@ -1885,61 +1857,67 @@ }, "@emotion/styled": { "optional": true + }, + "date-fns": { + "optional": true + }, + "date-fns-jalali": { + "optional": true + }, + "dayjs": { + "optional": true + }, + "luxon": { + "optional": true + }, + "moment": { + "optional": true + }, + "moment-hijri": { + "optional": true + }, + "moment-jalaali": { + "optional": true } } }, - "node_modules/@mui/system": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.1.1.tgz", - "integrity": "sha512-PaYsCz2tUOcpu3T0okDEsSuP/yCDIj9JZ4Tox1JovRSKIjltHpXPsXZSGr3RiWdtM1MTQMFMCZzu0+CKbyy+Kw==", + "node_modules/@mui/x-date-pickers/node_modules/@mui/utils": { + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.16.6.tgz", + "integrity": "sha512-tWiQqlhxAt3KENNiSRL+DIn9H5xNVK6Jjf70x3PnfQPz1MPBdh7yyIcAyVBT9xiw7hP3SomRhPR7hzBMBCjqEA==", "peer": true, "dependencies": { - "@babel/runtime": "^7.25.6", - "@mui/private-theming": "^6.1.1", - "@mui/styled-engine": "^6.1.1", - "@mui/types": "^7.2.17", - "@mui/utils": "^6.1.1", + "@babel/runtime": "^7.23.9", + "@mui/types": "^7.2.15", + "@types/prop-types": "^15.7.12", "clsx": "^2.1.1", - "csstype": "^3.1.3", - "prop-types": "^15.8.1" + "prop-types": "^15.8.1", + "react-is": "^18.3.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=12.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "@emotion/react": "^11.5.0", - "@emotion/styled": "^11.3.0", - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { - "@emotion/react": { - "optional": true - }, - "@emotion/styled": { - "optional": true - }, "@types/react": { "optional": true } } }, - "node_modules/@mui/system/node_modules/@mui/utils": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.1.1.tgz", - "integrity": "sha512-HlRrgdJSPbYDXPpoVMWZV8AE7WcFtAk13rWNWAEVWKSanzBBkymjz3km+Th/Srowsh4pf1fTSP1B0L116wQBYw==", - "peer": true, + "node_modules/@mui/x-internals": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@mui/x-internals/-/x-internals-7.18.0.tgz", + "integrity": "sha512-lzCHOWIR0cAIY1bGrWSprYerahbnH5C31ql/2OWCEjcngL2NAV1M6oKI2Vp4HheqzJ822c60UyWyapvyjSzY/A==", "dependencies": { "@babel/runtime": "^7.25.6", - "@mui/types": "^7.2.17", - "@types/prop-types": "^15.7.12", - "clsx": "^2.1.1", - "prop-types": "^15.8.1", - "react-is": "^18.3.1" + "@mui/utils": "^5.16.6" }, "engines": { "node": ">=14.0.0" @@ -1949,38 +1927,10 @@ "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/system/node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@mui/types": { - "version": "7.2.17", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.17.tgz", - "integrity": "sha512-oyumoJgB6jDV8JFzRqjBo2daUuHpzDjoO/e3IrRhhHo/FxJlaVhET6mcNrKHUq2E+R+q3ql0qAtvQ4rfWHhAeQ==", - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "react": "^17.0.0 || ^18.0.0" } }, - "node_modules/@mui/utils": { + "node_modules/@mui/x-internals/node_modules/@mui/utils": { "version": "5.16.6", "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.16.6.tgz", "integrity": "sha512-tWiQqlhxAt3KENNiSRL+DIn9H5xNVK6Jjf70x3PnfQPz1MPBdh7yyIcAyVBT9xiw7hP3SomRhPR7hzBMBCjqEA==", @@ -2009,19 +1959,10 @@ } } }, - "node_modules/@mui/utils/node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/@mui/x-date-pickers": { + "node_modules/@mui/x-tree-view": { "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-7.18.0.tgz", - "integrity": "sha512-12tXIoMj9vpS8fS/bS3kWPCoVrH38vNGCxgplI0vOnUrN9rJuYJz3agLPJe1S0xciTw+9W8ZSe3soaW+owoz1Q==", - "peer": true, + "resolved": "https://registry.npmjs.org/@mui/x-tree-view/-/x-tree-view-7.18.0.tgz", + "integrity": "sha512-3UJAYtBquc0SzKxEEdM68XlKOuuCl70ktZPqqI3z4wTZ0HK445XXc32t/s0VPIL94kRxWQcGPpgWFauScDwhug==", "dependencies": { "@babel/runtime": "^7.25.6", "@mui/utils": "^5.16.6", @@ -2043,13 +1984,6 @@ "@emotion/styled": "^11.8.1", "@mui/material": "^5.15.14 || ^6.0.0", "@mui/system": "^5.15.14 || ^6.0.0", - "date-fns": "^2.25.0 || ^3.2.0 || ^4.0.0", - "date-fns-jalali": "^2.13.0-0 || ^3.2.0-0", - "dayjs": "^1.10.7", - "luxon": "^3.0.2", - "moment": "^2.29.4", - "moment-hijri": "^2.1.2", - "moment-jalaali": "^0.7.4 || ^0.8.0 || ^0.9.0 || ^0.10.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0" }, @@ -2059,200 +1993,46 @@ }, "@emotion/styled": { "optional": true - }, - "date-fns": { - "optional": true - }, - "date-fns-jalali": { - "optional": true - }, - "dayjs": { - "optional": true - }, - "luxon": { - "optional": true - }, - "moment": { - "optional": true - }, - "moment-hijri": { - "optional": true - }, - "moment-jalaali": { - "optional": true } } }, - "node_modules/@mui/x-date-pickers/node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@mui/x-internals": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@mui/x-internals/-/x-internals-7.18.0.tgz", - "integrity": "sha512-lzCHOWIR0cAIY1bGrWSprYerahbnH5C31ql/2OWCEjcngL2NAV1M6oKI2Vp4HheqzJ822c60UyWyapvyjSzY/A==", - "peer": true, + "node_modules/@mui/x-tree-view/node_modules/@mui/utils": { + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.16.6.tgz", + "integrity": "sha512-tWiQqlhxAt3KENNiSRL+DIn9H5xNVK6Jjf70x3PnfQPz1MPBdh7yyIcAyVBT9xiw7hP3SomRhPR7hzBMBCjqEA==", "dependencies": { - "@babel/runtime": "^7.25.6", - "@mui/utils": "^5.16.6" + "@babel/runtime": "^7.23.9", + "@mui/types": "^7.2.15", + "@types/prop-types": "^15.7.12", + "clsx": "^2.1.1", + "prop-types": "^15.8.1", + "react-is": "^18.3.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=12.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/mui-org" }, "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@mui/x-tree-view": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@mui/x-tree-view/-/x-tree-view-7.10.0.tgz", - "integrity": "sha512-9OCAIb0wS5uuEDyjcSwSturrB4RUXBfE0UO/xpKjrMvRzCaAvxbCf2aFILP8uH9NyynYZkIGYfGnlqdAPy2OLg==", - "dependencies": { - "@babel/runtime": "^7.24.7", - "@mui/base": "^5.0.0-beta.40", - "@mui/system": "^5.16.0", - "@mui/utils": "^5.16.0", - "@types/react-transition-group": "^4.4.10", - "clsx": "^2.1.1", - "prop-types": "^15.8.1", - "react-transition-group": "^4.4.5" - }, - "engines": { - "node": ">=14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@emotion/react": "^11.9.0", - "@emotion/styled": "^11.8.1", - "@mui/material": "^5.15.14", - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" - } - }, - "node_modules/@mui/x-tree-view/node_modules/@mui/private-theming": { - "version": "5.16.6", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.16.6.tgz", - "integrity": "sha512-rAk+Rh8Clg7Cd7shZhyt2HGTTE5wYKNSJ5sspf28Fqm/PZ69Er9o6KX25g03/FG2dfpg5GCwZh/xOojiTfm3hw==", - "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/utils": "^5.16.6", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/x-tree-view/node_modules/@mui/styled-engine": { - "version": "5.16.6", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.16.6.tgz", - "integrity": "sha512-zaThmS67ZmtHSWToTiHslbI8jwrmITcN93LQaR2lKArbvS7Z3iLkwRoiikNWutx9MBs8Q6okKvbZq1RQYB3v7g==", - "dependencies": { - "@babel/runtime": "^7.23.9", - "@emotion/cache": "^11.11.0", - "csstype": "^3.1.3", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@emotion/react": "^11.4.1", - "@emotion/styled": "^11.3.0", - "react": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@emotion/react": { - "optional": true - }, - "@emotion/styled": { - "optional": true - } - } - }, - "node_modules/@mui/x-tree-view/node_modules/@mui/system": { - "version": "5.16.7", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.16.7.tgz", - "integrity": "sha512-Jncvs/r/d/itkxh7O7opOunTqbbSSzMTHzZkNLM+FjAOg+cYAZHrPDlYe1ZGKUYORwwb2XexlWnpZp0kZ4AHuA==", - "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/private-theming": "^5.16.6", - "@mui/styled-engine": "^5.16.6", - "@mui/types": "^7.2.15", - "@mui/utils": "^5.16.6", - "clsx": "^2.1.0", - "csstype": "^3.1.3", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@emotion/react": "^11.5.0", - "@emotion/styled": "^11.3.0", - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@emotion/react": { - "optional": true - }, - "@emotion/styled": { - "optional": true - }, - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/x-tree-view/node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { "node": ">= 8" @@ -2280,6 +2060,16 @@ "node": ">= 8" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@pkgr/core": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", @@ -2293,9 +2083,9 @@ } }, "node_modules/@plotly/d3": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@plotly/d3/-/d3-3.8.1.tgz", - "integrity": "sha512-x49ThEu1FRA00kTso4Jdfyf2byaCPLBGmLjAYQz5OzaPyLUhHesX3/Nfv2OHEhynhdy2UB39DLXq6thYe2L2kg==" + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/@plotly/d3/-/d3-3.8.2.tgz", + "integrity": "sha512-wvsNmh1GYjyJfyEBPKJLTMzgf2c2bEbSIL50lmqVUi+o1NHaLPi1Lb4v7VxXXJn043BhNyrxUrWI85Q+zmjOVA==" }, "node_modules/@plotly/d3-sankey": { "version": "0.7.2", @@ -2318,6 +2108,38 @@ "elementary-circuits-directed-graph": "^1.0.4" } }, + "node_modules/@plotly/mapbox-gl": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/@plotly/mapbox-gl/-/mapbox-gl-1.13.4.tgz", + "integrity": "sha512-sR3/Pe5LqT/fhYgp4rT4aSFf1rTsxMbGiH6Hojc7PH36ny5Bn17iVFUjpzycafETURuFbLZUfjODO8LvSI+5zQ==", + "dependencies": { + "@mapbox/geojson-rewind": "^0.5.2", + "@mapbox/geojson-types": "^1.0.2", + "@mapbox/jsonlint-lines-primitives": "^2.0.2", + "@mapbox/mapbox-gl-supported": "^1.5.0", + "@mapbox/point-geometry": "^0.1.0", + "@mapbox/tiny-sdf": "^1.1.1", + "@mapbox/unitbezier": "^0.0.0", + "@mapbox/vector-tile": "^1.3.1", + "@mapbox/whoots-js": "^3.1.0", + "csscolorparser": "~1.0.3", + "earcut": "^2.2.2", + "geojson-vt": "^3.2.1", + "gl-matrix": "^3.2.1", + "grid-index": "^1.1.0", + "murmurhash-js": "^1.0.0", + "pbf": "^3.2.1", + "potpack": "^1.0.1", + "quickselect": "^2.0.0", + "rw": "^1.3.3", + "supercluster": "^7.1.0", + "tinyqueue": "^2.0.3", + "vt-pbf": "^3.1.1" + }, + "engines": { + "node": ">=6.4.0" + } + }, "node_modules/@plotly/point-cluster": { "version": "3.1.9", "resolved": "https://registry.npmjs.org/@plotly/point-cluster/-/point-cluster-3.1.9.tgz", @@ -2382,124 +2204,246 @@ "url": "https://opencollective.com/immer" } }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.5.tgz", + "integrity": "sha512-SU5cvamg0Eyu/F+kLeMXS7GoahL+OoizlclVFX3l5Ql6yNlywJJ0OuqTzUx0v+aHhPHEB/56CT06GQrRrGNYww==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@sphinxxxx/color-conversion": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@sphinxxxx/color-conversion/-/color-conversion-2.2.2.tgz", - "integrity": "sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==" + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.5.tgz", + "integrity": "sha512-S4pit5BP6E5R5C8S6tgU/drvgjtYW76FBuG6+ibG3tMvlD1h9LHVF9KmlmaUBQ8Obou7hEyS+0w+IR/VtxwNMQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@swagger-api/apidom-ast": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ast/-/apidom-ast-1.0.0-alpha.9.tgz", - "integrity": "sha512-SAOQrFSFwgDiI4QSIPDwAIJEb4Za+8bu45sNojgV3RMtCz+n4Agw66iqGsDib5YSI/Cg1h4AKFovT3iWdfGWfw==", - "dependencies": { - "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-error": "^1.0.0-alpha.9", - "@types/ramda": "~0.30.0", - "ramda": "~0.30.0", - "ramda-adjunct": "^5.0.0", - "unraw": "^3.0.0" - } + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.5.tgz", + "integrity": "sha512-250ZGg4ipTL0TGvLlfACkIxS9+KLtIbn7BCZjsZj88zSg2Lvu3Xdw6dhAhfe/FjjXPVNCtcSp+WZjVsD3a/Zlw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@swagger-api/apidom-ast/node_modules/@types/ramda": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", - "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", - "dependencies": { - "types-ramda": "^0.30.1" - } + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.5.tgz", + "integrity": "sha512-D8brJEFg5D+QxFcW6jYANu+Rr9SlKtTenmsX5hOSzNYVrK5oLAEMTUgKWYJP+wdKyCdeSwnapLsn+OVRFycuQg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@swagger-api/apidom-ast/node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.5.tgz", + "integrity": "sha512-PNqXYmdNFyWNg0ma5LdY8wP+eQfdvyaBAojAXgO7/gs0Q/6TQJVXAXe8gwW9URjbS0YAammur0fynYGiWsKlXw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@swagger-api/apidom-ast/node_modules/ramda-adjunct": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", - "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", - "engines": { - "node": ">=0.10.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda-adjunct" - }, - "peerDependencies": { - "ramda": ">= 0.30.0" - } + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.5.tgz", + "integrity": "sha512-kSSCZOKz3HqlrEuwKd9TYv7vxPYD77vHSUvM2y0YaTGnFc8AdI5TTQRrM1yIp3tXCKrSL9A7JLoILjtad5t8pQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@swagger-api/apidom-ast/node_modules/types-ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", - "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", - "dependencies": { - "ts-toolbelt": "^9.6.0" - } + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.5.tgz", + "integrity": "sha512-oTXQeJHRbOnwRnRffb6bmqmUugz0glXaPyspp4gbQOPVApdpRrY/j7KP3lr7M8kTfQTyrBUzFjj5EuHAhqH4/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@swagger-api/apidom-core": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-core/-/apidom-core-1.0.0-alpha.9.tgz", - "integrity": "sha512-vGl8BWRf6ODl39fxElcIOjRE2QG5AJhn8tTNMqjjHB/2WppNBuxOVStYZeVJoWfK03OPK8v4Fp/TAcaP9+R7DQ==", - "dependencies": { - "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^1.0.0-alpha.9", - "@swagger-api/apidom-error": "^1.0.0-alpha.9", - "@types/ramda": "~0.30.0", - "minim": "~0.23.8", - "ramda": "~0.30.0", - "ramda-adjunct": "^5.0.0", - "short-unique-id": "^5.0.2", - "ts-mixer": "^6.0.3" - } + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.5.tgz", + "integrity": "sha512-qnOTIIs6tIGFKCHdhYitgC2XQ2X25InIbZFor5wh+mALH84qnFHvc+vmWUpyX97B0hNvwNUL4B+MB8vJvH65Fw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@swagger-api/apidom-core/node_modules/@types/ramda": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", - "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", - "dependencies": { - "types-ramda": "^0.30.1" - } + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.5.tgz", + "integrity": "sha512-TMYu+DUdNlgBXING13rHSfUc3Ky5nLPbWs4bFnT+R6Vu3OvXkTkixvvBKk8uO4MT5Ab6lC3U7x8S8El2q5o56w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@swagger-api/apidom-core/node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.5.tgz", + "integrity": "sha512-PTQq1Kz22ZRvuhr3uURH+U/Q/a0pbxJoICGSprNLAoBEkyD3Sh9qP5I0Asn0y0wejXQBbsVMRZRxlbGFD9OK4A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@swagger-api/apidom-core/node_modules/ramda-adjunct": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", - "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", - "engines": { - "node": ">=0.10.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda-adjunct" - }, - "peerDependencies": { - "ramda": ">= 0.30.0" + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.5.tgz", + "integrity": "sha512-bR5nCojtpuMss6TDEmf/jnBnzlo+6n1UhgwqUvRoe4VIotC7FG1IKkyJbwsT7JDsF2jxR+NTnuOwiGv0hLyDoQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.5.tgz", + "integrity": "sha512-N0jPPhHjGShcB9/XXZQWuWBKZQnC1F36Ce3sDqWpujsGjDz/CQtOL9LgTrJ+rJC8MJeesMWrMWVLKKNR/tMOCA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.5.tgz", + "integrity": "sha512-uBa2e28ohzNNwjr6Uxm4XyaA1M/8aTgfF2T7UIlElLaeXkgpmIJ2EitVNQxjO9xLLLy60YqAgKn/AqSpCUkE9g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.5.tgz", + "integrity": "sha512-RXT8S1HP8AFN/Kr3tg4fuYrNxZ/pZf1HemC5Tsddc6HzgGnJm0+Lh5rAHJkDuW3StI0ynNXukidROMXYl6ew8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.5.tgz", + "integrity": "sha512-ElTYOh50InL8kzyUD6XsnPit7jYCKrphmddKAe1/Ytt74apOxDq5YEcbsiKs0fR3vff3jEneMM+3I7jbqaMyBg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.5.tgz", + "integrity": "sha512-+lvL/4mQxSV8MukpkKyyvfwhH266COcWlXE/1qxwN08ajovta3459zrjLghYMgDerlzNwLAcFpvU+WWE5y6nAQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@sphinxxxx/color-conversion": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@sphinxxxx/color-conversion/-/color-conversion-2.2.2.tgz", + "integrity": "sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==" + }, + "node_modules/@swagger-api/apidom-ast": { + "version": "1.0.0-alpha.9", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ast/-/apidom-ast-1.0.0-alpha.9.tgz", + "integrity": "sha512-SAOQrFSFwgDiI4QSIPDwAIJEb4Za+8bu45sNojgV3RMtCz+n4Agw66iqGsDib5YSI/Cg1h4AKFovT3iWdfGWfw==", + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-error": "^1.0.0-alpha.9", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", + "unraw": "^3.0.0" } }, - "node_modules/@swagger-api/apidom-core/node_modules/types-ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", - "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", + "node_modules/@swagger-api/apidom-core": { + "version": "1.0.0-alpha.9", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-core/-/apidom-core-1.0.0-alpha.9.tgz", + "integrity": "sha512-vGl8BWRf6ODl39fxElcIOjRE2QG5AJhn8tTNMqjjHB/2WppNBuxOVStYZeVJoWfK03OPK8v4Fp/TAcaP9+R7DQ==", "dependencies": { - "ts-toolbelt": "^9.6.0" + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-ast": "^1.0.0-alpha.9", + "@swagger-api/apidom-error": "^1.0.0-alpha.9", + "@types/ramda": "~0.30.0", + "minim": "~0.23.8", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", + "short-unique-id": "^5.0.2", + "ts-mixer": "^6.0.3" } }, "node_modules/@swagger-api/apidom-error": { @@ -2523,46 +2467,6 @@ "ramda-adjunct": "^5.0.0" } }, - "node_modules/@swagger-api/apidom-json-pointer/node_modules/@types/ramda": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", - "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", - "dependencies": { - "types-ramda": "^0.30.1" - } - }, - "node_modules/@swagger-api/apidom-json-pointer/node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, - "node_modules/@swagger-api/apidom-json-pointer/node_modules/ramda-adjunct": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", - "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", - "engines": { - "node": ">=0.10.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda-adjunct" - }, - "peerDependencies": { - "ramda": ">= 0.30.0" - } - }, - "node_modules/@swagger-api/apidom-json-pointer/node_modules/types-ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", - "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", - "dependencies": { - "ts-toolbelt": "^9.6.0" - } - }, "node_modules/@swagger-api/apidom-ns-api-design-systems": { "version": "1.0.0-alpha.9", "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-api-design-systems/-/apidom-ns-api-design-systems-1.0.0-alpha.9.tgz", @@ -2579,50 +2483,6 @@ "ts-mixer": "^6.0.3" } }, - "node_modules/@swagger-api/apidom-ns-api-design-systems/node_modules/@types/ramda": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", - "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", - "optional": true, - "dependencies": { - "types-ramda": "^0.30.1" - } - }, - "node_modules/@swagger-api/apidom-ns-api-design-systems/node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "optional": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, - "node_modules/@swagger-api/apidom-ns-api-design-systems/node_modules/ramda-adjunct": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", - "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", - "optional": true, - "engines": { - "node": ">=0.10.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda-adjunct" - }, - "peerDependencies": { - "ramda": ">= 0.30.0" - } - }, - "node_modules/@swagger-api/apidom-ns-api-design-systems/node_modules/types-ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", - "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", - "optional": true, - "dependencies": { - "ts-toolbelt": "^9.6.0" - } - }, "node_modules/@swagger-api/apidom-ns-asyncapi-2": { "version": "1.0.0-alpha.9", "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-asyncapi-2/-/apidom-ns-asyncapi-2-1.0.0-alpha.9.tgz", @@ -2634,106 +2494,22 @@ "@swagger-api/apidom-ns-json-schema-draft-7": "^1.0.0-alpha.9", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", - "ramda-adjunct": "^5.0.0", - "ts-mixer": "^6.0.3" - } - }, - "node_modules/@swagger-api/apidom-ns-asyncapi-2/node_modules/@types/ramda": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", - "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", - "optional": true, - "dependencies": { - "types-ramda": "^0.30.1" - } - }, - "node_modules/@swagger-api/apidom-ns-asyncapi-2/node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "optional": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, - "node_modules/@swagger-api/apidom-ns-asyncapi-2/node_modules/ramda-adjunct": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", - "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", - "optional": true, - "engines": { - "node": ">=0.10.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda-adjunct" - }, - "peerDependencies": { - "ramda": ">= 0.30.0" - } - }, - "node_modules/@swagger-api/apidom-ns-asyncapi-2/node_modules/types-ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", - "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", - "optional": true, - "dependencies": { - "ts-toolbelt": "^9.6.0" - } - }, - "node_modules/@swagger-api/apidom-ns-json-schema-draft-4": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-4/-/apidom-ns-json-schema-draft-4-1.0.0-alpha.9.tgz", - "integrity": "sha512-OfX4UBb08C0xD5+F80dQAM2yt5lXxcURWkVEeCwxz7i23BB3nNEbnZXNV91Qo9eaJflPh8dO9iiHQxvfw5IgSg==", - "dependencies": { - "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^1.0.0-alpha.9", - "@swagger-api/apidom-core": "^1.0.0-alpha.9", - "@types/ramda": "~0.30.0", - "ramda": "~0.30.0", - "ramda-adjunct": "^5.0.0", - "ts-mixer": "^6.0.4" - } - }, - "node_modules/@swagger-api/apidom-ns-json-schema-draft-4/node_modules/@types/ramda": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", - "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", - "dependencies": { - "types-ramda": "^0.30.1" - } - }, - "node_modules/@swagger-api/apidom-ns-json-schema-draft-4/node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, - "node_modules/@swagger-api/apidom-ns-json-schema-draft-4/node_modules/ramda-adjunct": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", - "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", - "engines": { - "node": ">=0.10.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda-adjunct" - }, - "peerDependencies": { - "ramda": ">= 0.30.0" + "ramda-adjunct": "^5.0.0", + "ts-mixer": "^6.0.3" } }, - "node_modules/@swagger-api/apidom-ns-json-schema-draft-4/node_modules/types-ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", - "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", + "node_modules/@swagger-api/apidom-ns-json-schema-draft-4": { + "version": "1.0.0-alpha.9", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-4/-/apidom-ns-json-schema-draft-4-1.0.0-alpha.9.tgz", + "integrity": "sha512-OfX4UBb08C0xD5+F80dQAM2yt5lXxcURWkVEeCwxz7i23BB3nNEbnZXNV91Qo9eaJflPh8dO9iiHQxvfw5IgSg==", "dependencies": { - "ts-toolbelt": "^9.6.0" + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-ast": "^1.0.0-alpha.9", + "@swagger-api/apidom-core": "^1.0.0-alpha.9", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", + "ts-mixer": "^6.0.4" } }, "node_modules/@swagger-api/apidom-ns-json-schema-draft-6": { @@ -2752,50 +2528,6 @@ "ts-mixer": "^6.0.4" } }, - "node_modules/@swagger-api/apidom-ns-json-schema-draft-6/node_modules/@types/ramda": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", - "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", - "optional": true, - "dependencies": { - "types-ramda": "^0.30.1" - } - }, - "node_modules/@swagger-api/apidom-ns-json-schema-draft-6/node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "optional": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, - "node_modules/@swagger-api/apidom-ns-json-schema-draft-6/node_modules/ramda-adjunct": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", - "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", - "optional": true, - "engines": { - "node": ">=0.10.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda-adjunct" - }, - "peerDependencies": { - "ramda": ">= 0.30.0" - } - }, - "node_modules/@swagger-api/apidom-ns-json-schema-draft-6/node_modules/types-ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", - "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", - "optional": true, - "dependencies": { - "ts-toolbelt": "^9.6.0" - } - }, "node_modules/@swagger-api/apidom-ns-json-schema-draft-7": { "version": "1.0.0-alpha.9", "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-7/-/apidom-ns-json-schema-draft-7-1.0.0-alpha.9.tgz", @@ -2812,50 +2544,6 @@ "ts-mixer": "^6.0.4" } }, - "node_modules/@swagger-api/apidom-ns-json-schema-draft-7/node_modules/@types/ramda": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", - "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", - "optional": true, - "dependencies": { - "types-ramda": "^0.30.1" - } - }, - "node_modules/@swagger-api/apidom-ns-json-schema-draft-7/node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "optional": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, - "node_modules/@swagger-api/apidom-ns-json-schema-draft-7/node_modules/ramda-adjunct": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", - "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", - "optional": true, - "engines": { - "node": ">=0.10.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda-adjunct" - }, - "peerDependencies": { - "ramda": ">= 0.30.0" - } - }, - "node_modules/@swagger-api/apidom-ns-json-schema-draft-7/node_modules/types-ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", - "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", - "optional": true, - "dependencies": { - "ts-toolbelt": "^9.6.0" - } - }, "node_modules/@swagger-api/apidom-ns-openapi-2": { "version": "1.0.0-alpha.9", "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-2/-/apidom-ns-openapi-2-1.0.0-alpha.9.tgz", @@ -2872,50 +2560,6 @@ "ts-mixer": "^6.0.3" } }, - "node_modules/@swagger-api/apidom-ns-openapi-2/node_modules/@types/ramda": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", - "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", - "optional": true, - "dependencies": { - "types-ramda": "^0.30.1" - } - }, - "node_modules/@swagger-api/apidom-ns-openapi-2/node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "optional": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, - "node_modules/@swagger-api/apidom-ns-openapi-2/node_modules/ramda-adjunct": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", - "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", - "optional": true, - "engines": { - "node": ">=0.10.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda-adjunct" - }, - "peerDependencies": { - "ramda": ">= 0.30.0" - } - }, - "node_modules/@swagger-api/apidom-ns-openapi-2/node_modules/types-ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", - "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", - "optional": true, - "dependencies": { - "ts-toolbelt": "^9.6.0" - } - }, "node_modules/@swagger-api/apidom-ns-openapi-3-0": { "version": "1.0.0-alpha.9", "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-0/-/apidom-ns-openapi-3-0-1.0.0-alpha.9.tgz", @@ -2931,46 +2575,6 @@ "ts-mixer": "^6.0.3" } }, - "node_modules/@swagger-api/apidom-ns-openapi-3-0/node_modules/@types/ramda": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", - "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", - "dependencies": { - "types-ramda": "^0.30.1" - } - }, - "node_modules/@swagger-api/apidom-ns-openapi-3-0/node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, - "node_modules/@swagger-api/apidom-ns-openapi-3-0/node_modules/ramda-adjunct": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", - "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", - "engines": { - "node": ">=0.10.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda-adjunct" - }, - "peerDependencies": { - "ramda": ">= 0.30.0" - } - }, - "node_modules/@swagger-api/apidom-ns-openapi-3-0/node_modules/types-ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", - "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", - "dependencies": { - "ts-toolbelt": "^9.6.0" - } - }, "node_modules/@swagger-api/apidom-ns-openapi-3-1": { "version": "1.0.0-alpha.9", "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-1/-/apidom-ns-openapi-3-1-1.0.0-alpha.9.tgz", @@ -2987,103 +2591,19 @@ "ts-mixer": "^6.0.3" } }, - "node_modules/@swagger-api/apidom-ns-openapi-3-1/node_modules/@types/ramda": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", - "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", - "dependencies": { - "types-ramda": "^0.30.1" - } - }, - "node_modules/@swagger-api/apidom-ns-openapi-3-1/node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, - "node_modules/@swagger-api/apidom-ns-openapi-3-1/node_modules/ramda-adjunct": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", - "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", - "engines": { - "node": ">=0.10.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda-adjunct" - }, - "peerDependencies": { - "ramda": ">= 0.30.0" - } - }, - "node_modules/@swagger-api/apidom-ns-openapi-3-1/node_modules/types-ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", - "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", - "dependencies": { - "ts-toolbelt": "^9.6.0" - } - }, "node_modules/@swagger-api/apidom-ns-workflows-1": { "version": "1.0.0-alpha.9", "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-workflows-1/-/apidom-ns-workflows-1-1.0.0-alpha.9.tgz", - "integrity": "sha512-yKo0p8OkQmDib93Kt1yqWmI7JsD6D9qUHxr/SCuAmNNWny1hxm7cZGoKJwJlGd0uAg84j4vmzWOlG3AsJbnT8g==", - "optional": true, - "dependencies": { - "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^1.0.0-alpha.9", - "@swagger-api/apidom-ns-openapi-3-1": "^1.0.0-alpha.9", - "@types/ramda": "~0.30.0", - "ramda": "~0.30.0", - "ramda-adjunct": "^5.0.0", - "ts-mixer": "^6.0.3" - } - }, - "node_modules/@swagger-api/apidom-ns-workflows-1/node_modules/@types/ramda": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", - "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", - "optional": true, - "dependencies": { - "types-ramda": "^0.30.1" - } - }, - "node_modules/@swagger-api/apidom-ns-workflows-1/node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "optional": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, - "node_modules/@swagger-api/apidom-ns-workflows-1/node_modules/ramda-adjunct": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", - "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", - "optional": true, - "engines": { - "node": ">=0.10.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda-adjunct" - }, - "peerDependencies": { - "ramda": ">= 0.30.0" - } - }, - "node_modules/@swagger-api/apidom-ns-workflows-1/node_modules/types-ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", - "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", + "integrity": "sha512-yKo0p8OkQmDib93Kt1yqWmI7JsD6D9qUHxr/SCuAmNNWny1hxm7cZGoKJwJlGd0uAg84j4vmzWOlG3AsJbnT8g==", "optional": true, "dependencies": { - "ts-toolbelt": "^9.6.0" + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-core": "^1.0.0-alpha.9", + "@swagger-api/apidom-ns-openapi-3-1": "^1.0.0-alpha.9", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", + "ts-mixer": "^6.0.3" } }, "node_modules/@swagger-api/apidom-parser-adapter-api-design-systems-json": { @@ -3101,50 +2621,6 @@ "ramda-adjunct": "^5.0.0" } }, - "node_modules/@swagger-api/apidom-parser-adapter-api-design-systems-json/node_modules/@types/ramda": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", - "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", - "optional": true, - "dependencies": { - "types-ramda": "^0.30.1" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-api-design-systems-json/node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "optional": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-api-design-systems-json/node_modules/ramda-adjunct": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", - "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", - "optional": true, - "engines": { - "node": ">=0.10.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda-adjunct" - }, - "peerDependencies": { - "ramda": ">= 0.30.0" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-api-design-systems-json/node_modules/types-ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", - "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", - "optional": true, - "dependencies": { - "ts-toolbelt": "^9.6.0" - } - }, "node_modules/@swagger-api/apidom-parser-adapter-api-design-systems-yaml": { "version": "1.0.0-alpha.9", "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/-/apidom-parser-adapter-api-design-systems-yaml-1.0.0-alpha.9.tgz", @@ -3160,50 +2636,6 @@ "ramda-adjunct": "^5.0.0" } }, - "node_modules/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/node_modules/@types/ramda": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", - "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", - "optional": true, - "dependencies": { - "types-ramda": "^0.30.1" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "optional": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/node_modules/ramda-adjunct": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", - "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", - "optional": true, - "engines": { - "node": ">=0.10.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda-adjunct" - }, - "peerDependencies": { - "ramda": ">= 0.30.0" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/node_modules/types-ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", - "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", - "optional": true, - "dependencies": { - "ts-toolbelt": "^9.6.0" - } - }, "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-json-2": { "version": "1.0.0-alpha.9", "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-json-2/-/apidom-parser-adapter-asyncapi-json-2-1.0.0-alpha.9.tgz", @@ -3219,50 +2651,6 @@ "ramda-adjunct": "^5.0.0" } }, - "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-json-2/node_modules/@types/ramda": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", - "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", - "optional": true, - "dependencies": { - "types-ramda": "^0.30.1" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-json-2/node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "optional": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-json-2/node_modules/ramda-adjunct": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", - "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", - "optional": true, - "engines": { - "node": ">=0.10.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda-adjunct" - }, - "peerDependencies": { - "ramda": ">= 0.30.0" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-json-2/node_modules/types-ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", - "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", - "optional": true, - "dependencies": { - "ts-toolbelt": "^9.6.0" - } - }, "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": { "version": "1.0.0-alpha.9", "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/-/apidom-parser-adapter-asyncapi-yaml-2-1.0.0-alpha.9.tgz", @@ -3278,50 +2666,6 @@ "ramda-adjunct": "^5.0.0" } }, - "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/node_modules/@types/ramda": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", - "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", - "optional": true, - "dependencies": { - "types-ramda": "^0.30.1" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "optional": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/node_modules/ramda-adjunct": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", - "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", - "optional": true, - "engines": { - "node": ">=0.10.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda-adjunct" - }, - "peerDependencies": { - "ramda": ">= 0.30.0" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/node_modules/types-ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", - "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", - "optional": true, - "dependencies": { - "ts-toolbelt": "^9.6.0" - } - }, "node_modules/@swagger-api/apidom-parser-adapter-json": { "version": "1.0.0-alpha.9", "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-json/-/apidom-parser-adapter-json-1.0.0-alpha.9.tgz", @@ -3340,107 +2684,19 @@ "web-tree-sitter": "=0.20.3" } }, - "node_modules/@swagger-api/apidom-parser-adapter-json/node_modules/@types/ramda": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", - "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", - "optional": true, - "dependencies": { - "types-ramda": "^0.30.1" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-json/node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "optional": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-json/node_modules/ramda-adjunct": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", - "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", - "optional": true, - "engines": { - "node": ">=0.10.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda-adjunct" - }, - "peerDependencies": { - "ramda": ">= 0.30.0" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-json/node_modules/types-ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", - "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", - "optional": true, - "dependencies": { - "ts-toolbelt": "^9.6.0" - } - }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-2": { "version": "1.0.0-alpha.9", "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-2/-/apidom-parser-adapter-openapi-json-2-1.0.0-alpha.9.tgz", "integrity": "sha512-zgtsAfkplCFusX2P/saqdn10J8P3kQizCXxHLvxd2j0EhMJk2wfu4HYN5Pej/7/qf/OR1QZxqtacwebd4RfpXA==", "optional": true, "dependencies": { - "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^1.0.0-alpha.9", - "@swagger-api/apidom-ns-openapi-2": "^1.0.0-alpha.9", - "@swagger-api/apidom-parser-adapter-json": "^1.0.0-alpha.9", - "@types/ramda": "~0.30.0", - "ramda": "~0.30.0", - "ramda-adjunct": "^5.0.0" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-2/node_modules/@types/ramda": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", - "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", - "optional": true, - "dependencies": { - "types-ramda": "^0.30.1" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-2/node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "optional": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-2/node_modules/ramda-adjunct": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", - "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", - "optional": true, - "engines": { - "node": ">=0.10.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda-adjunct" - }, - "peerDependencies": { - "ramda": ">= 0.30.0" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-2/node_modules/types-ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", - "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", - "optional": true, - "dependencies": { - "ts-toolbelt": "^9.6.0" + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-core": "^1.0.0-alpha.9", + "@swagger-api/apidom-ns-openapi-2": "^1.0.0-alpha.9", + "@swagger-api/apidom-parser-adapter-json": "^1.0.0-alpha.9", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-0": { @@ -3458,50 +2714,6 @@ "ramda-adjunct": "^5.0.0" } }, - "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-0/node_modules/@types/ramda": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", - "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", - "optional": true, - "dependencies": { - "types-ramda": "^0.30.1" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-0/node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "optional": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-0/node_modules/ramda-adjunct": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", - "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", - "optional": true, - "engines": { - "node": ">=0.10.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda-adjunct" - }, - "peerDependencies": { - "ramda": ">= 0.30.0" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-0/node_modules/types-ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", - "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", - "optional": true, - "dependencies": { - "ts-toolbelt": "^9.6.0" - } - }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-1": { "version": "1.0.0-alpha.9", "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-1/-/apidom-parser-adapter-openapi-json-3-1-1.0.0-alpha.9.tgz", @@ -3517,50 +2729,6 @@ "ramda-adjunct": "^5.0.0" } }, - "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-1/node_modules/@types/ramda": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", - "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", - "optional": true, - "dependencies": { - "types-ramda": "^0.30.1" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-1/node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "optional": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-1/node_modules/ramda-adjunct": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", - "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", - "optional": true, - "engines": { - "node": ">=0.10.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda-adjunct" - }, - "peerDependencies": { - "ramda": ">= 0.30.0" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-1/node_modules/types-ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", - "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", - "optional": true, - "dependencies": { - "ts-toolbelt": "^9.6.0" - } - }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-2": { "version": "1.0.0-alpha.9", "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-2/-/apidom-parser-adapter-openapi-yaml-2-1.0.0-alpha.9.tgz", @@ -3576,50 +2744,6 @@ "ramda-adjunct": "^5.0.0" } }, - "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-2/node_modules/@types/ramda": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", - "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", - "optional": true, - "dependencies": { - "types-ramda": "^0.30.1" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-2/node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "optional": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-2/node_modules/ramda-adjunct": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", - "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", - "optional": true, - "engines": { - "node": ">=0.10.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda-adjunct" - }, - "peerDependencies": { - "ramda": ">= 0.30.0" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-2/node_modules/types-ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", - "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", - "optional": true, - "dependencies": { - "ts-toolbelt": "^9.6.0" - } - }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": { "version": "1.0.0-alpha.9", "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/-/apidom-parser-adapter-openapi-yaml-3-0-1.0.0-alpha.9.tgz", @@ -3635,50 +2759,6 @@ "ramda-adjunct": "^5.0.0" } }, - "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/node_modules/@types/ramda": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", - "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", - "optional": true, - "dependencies": { - "types-ramda": "^0.30.1" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "optional": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/node_modules/ramda-adjunct": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", - "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", - "optional": true, - "engines": { - "node": ">=0.10.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda-adjunct" - }, - "peerDependencies": { - "ramda": ">= 0.30.0" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/node_modules/types-ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", - "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", - "optional": true, - "dependencies": { - "ts-toolbelt": "^9.6.0" - } - }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": { "version": "1.0.0-alpha.9", "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/-/apidom-parser-adapter-openapi-yaml-3-1-1.0.0-alpha.9.tgz", @@ -3694,107 +2774,19 @@ "ramda-adjunct": "^5.0.0" } }, - "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/node_modules/@types/ramda": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", - "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", - "optional": true, - "dependencies": { - "types-ramda": "^0.30.1" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "optional": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/node_modules/ramda-adjunct": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", - "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", - "optional": true, - "engines": { - "node": ">=0.10.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda-adjunct" - }, - "peerDependencies": { - "ramda": ">= 0.30.0" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/node_modules/types-ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", - "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", - "optional": true, - "dependencies": { - "ts-toolbelt": "^9.6.0" - } - }, "node_modules/@swagger-api/apidom-parser-adapter-workflows-json-1": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-workflows-json-1/-/apidom-parser-adapter-workflows-json-1-1.0.0-alpha.9.tgz", - "integrity": "sha512-LylC2cQdAmvR7bXqwMwBt6FHTMVGinwIdI8pjl4EbPT9hCVm1rdED53caTYM4gCm+CJGRw20r4gb9vn3+N6RrA==", - "optional": true, - "dependencies": { - "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^1.0.0-alpha.9", - "@swagger-api/apidom-ns-workflows-1": "^1.0.0-alpha.9", - "@swagger-api/apidom-parser-adapter-json": "^1.0.0-alpha.9", - "@types/ramda": "~0.30.0", - "ramda": "~0.30.0", - "ramda-adjunct": "^5.0.0" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-workflows-json-1/node_modules/@types/ramda": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", - "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", - "optional": true, - "dependencies": { - "types-ramda": "^0.30.1" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-workflows-json-1/node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "optional": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-workflows-json-1/node_modules/ramda-adjunct": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", - "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", - "optional": true, - "engines": { - "node": ">=0.10.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda-adjunct" - }, - "peerDependencies": { - "ramda": ">= 0.30.0" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-workflows-json-1/node_modules/types-ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", - "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", + "version": "1.0.0-alpha.9", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-workflows-json-1/-/apidom-parser-adapter-workflows-json-1-1.0.0-alpha.9.tgz", + "integrity": "sha512-LylC2cQdAmvR7bXqwMwBt6FHTMVGinwIdI8pjl4EbPT9hCVm1rdED53caTYM4gCm+CJGRw20r4gb9vn3+N6RrA==", "optional": true, "dependencies": { - "ts-toolbelt": "^9.6.0" + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-core": "^1.0.0-alpha.9", + "@swagger-api/apidom-ns-workflows-1": "^1.0.0-alpha.9", + "@swagger-api/apidom-parser-adapter-json": "^1.0.0-alpha.9", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-workflows-yaml-1": { @@ -3812,50 +2804,6 @@ "ramda-adjunct": "^5.0.0" } }, - "node_modules/@swagger-api/apidom-parser-adapter-workflows-yaml-1/node_modules/@types/ramda": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", - "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", - "optional": true, - "dependencies": { - "types-ramda": "^0.30.1" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-workflows-yaml-1/node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "optional": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-workflows-yaml-1/node_modules/ramda-adjunct": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", - "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", - "optional": true, - "engines": { - "node": ">=0.10.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda-adjunct" - }, - "peerDependencies": { - "ramda": ">= 0.30.0" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-workflows-yaml-1/node_modules/types-ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", - "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", - "optional": true, - "dependencies": { - "ts-toolbelt": "^9.6.0" - } - }, "node_modules/@swagger-api/apidom-parser-adapter-yaml-1-2": { "version": "1.0.0-alpha.9", "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-yaml-1-2/-/apidom-parser-adapter-yaml-1-2-1.0.0-alpha.9.tgz", @@ -3874,50 +2822,6 @@ "web-tree-sitter": "=0.20.3" } }, - "node_modules/@swagger-api/apidom-parser-adapter-yaml-1-2/node_modules/@types/ramda": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", - "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", - "optional": true, - "dependencies": { - "types-ramda": "^0.30.1" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-yaml-1-2/node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "optional": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-yaml-1-2/node_modules/ramda-adjunct": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", - "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", - "optional": true, - "engines": { - "node": ">=0.10.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda-adjunct" - }, - "peerDependencies": { - "ramda": ">= 0.30.0" - } - }, - "node_modules/@swagger-api/apidom-parser-adapter-yaml-1-2/node_modules/types-ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", - "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", - "optional": true, - "dependencies": { - "ts-toolbelt": "^9.6.0" - } - }, "node_modules/@swagger-api/apidom-reference": { "version": "1.0.0-alpha.9", "resolved": "https://registry.npmjs.org/@swagger-api/apidom-reference/-/apidom-reference-1.0.0-alpha.9.tgz", @@ -3956,14 +2860,6 @@ "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-alpha.1" } }, - "node_modules/@swagger-api/apidom-reference/node_modules/@types/ramda": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", - "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", - "dependencies": { - "types-ramda": "^0.30.1" - } - }, "node_modules/@swagger-api/apidom-reference/node_modules/minimatch": { "version": "7.4.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", @@ -3978,42 +2874,10 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@swagger-api/apidom-reference/node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, - "node_modules/@swagger-api/apidom-reference/node_modules/ramda-adjunct": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", - "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", - "engines": { - "node": ">=0.10.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda-adjunct" - }, - "peerDependencies": { - "ramda": ">= 0.30.0" - } - }, - "node_modules/@swagger-api/apidom-reference/node_modules/types-ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", - "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", - "dependencies": { - "ts-toolbelt": "^9.6.0" - } - }, "node_modules/@swc/core": { - "version": "1.7.28", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.7.28.tgz", - "integrity": "sha512-XapcMgsOS0cKh01AFEj+qXOk6KM4NZhp7a5vPicdhkRR8RzvjrCa7DTtijMxfotU8bqaEHguxmiIag2HUlT8QQ==", + "version": "1.7.26", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.7.26.tgz", + "integrity": "sha512-f5uYFf+TmMQyYIoxkn/evWhNGuUzC730dFwAKGwBVHHVoPyak1/GvJUm6i1SKl+2Hrj9oN0i3WSoWWZ4pgI8lw==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -4028,16 +2892,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.7.28", - "@swc/core-darwin-x64": "1.7.28", - "@swc/core-linux-arm-gnueabihf": "1.7.28", - "@swc/core-linux-arm64-gnu": "1.7.28", - "@swc/core-linux-arm64-musl": "1.7.28", - "@swc/core-linux-x64-gnu": "1.7.28", - "@swc/core-linux-x64-musl": "1.7.28", - "@swc/core-win32-arm64-msvc": "1.7.28", - "@swc/core-win32-ia32-msvc": "1.7.28", - "@swc/core-win32-x64-msvc": "1.7.28" + "@swc/core-darwin-arm64": "1.7.26", + "@swc/core-darwin-x64": "1.7.26", + "@swc/core-linux-arm-gnueabihf": "1.7.26", + "@swc/core-linux-arm64-gnu": "1.7.26", + "@swc/core-linux-arm64-musl": "1.7.26", + "@swc/core-linux-x64-gnu": "1.7.26", + "@swc/core-linux-x64-musl": "1.7.26", + "@swc/core-win32-arm64-msvc": "1.7.26", + "@swc/core-win32-ia32-msvc": "1.7.26", + "@swc/core-win32-x64-msvc": "1.7.26" }, "peerDependencies": { "@swc/helpers": "*" @@ -4049,9 +2913,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.7.28", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.28.tgz", - "integrity": "sha512-BNkj6enHo2pdzOpCtQGKZbXT2A/qWIr0CVtbTM4WkJ3MCK/glbFsyO6X59p1r8+gfaZG4bWYnTTu+RuUAcsL5g==", + "version": "1.7.26", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.26.tgz", + "integrity": "sha512-FF3CRYTg6a7ZVW4yT9mesxoVVZTrcSWtmZhxKCYJX9brH4CS/7PRPjAKNk6kzWgWuRoglP7hkjQcd6EpMcZEAw==", "cpu": [ "arm64" ], @@ -4065,9 +2929,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.7.28", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.7.28.tgz", - "integrity": "sha512-96zQ+X5Fd6P/RNPkOyikTJgEc2M4TzznfYvjRd2hye5h22jhxCLL/csoauDgN7lYfd7mwsZ/sVXwJTMKl+vZSA==", + "version": "1.7.26", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.7.26.tgz", + "integrity": "sha512-az3cibZdsay2HNKmc4bjf62QVukuiMRh5sfM5kHR/JMTrLyS6vSw7Ihs3UTkZjUxkLTT8ro54LI6sV6sUQUbLQ==", "cpu": [ "x64" ], @@ -4081,9 +2945,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.7.28", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.28.tgz", - "integrity": "sha512-l2100Wx6LdXMOmOW3+KoHhBhyZrGdz8ylkygcVOC0QHp6YIATfuG+rRHksfyEWCSOdL3anM9MJZJX26KT/s+XQ==", + "version": "1.7.26", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.26.tgz", + "integrity": "sha512-VYPFVJDO5zT5U3RpCdHE5v1gz4mmR8BfHecUZTmD2v1JeFY6fv9KArJUpjrHEEsjK/ucXkQFmJ0jaiWXmpOV9Q==", "cpu": [ "arm" ], @@ -4097,9 +2961,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.7.28", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.28.tgz", - "integrity": "sha512-03m6iQ5Bv9u2VPnNRyaBmE8eHi056eE39L0gXcqGoo46GAGuoqYHt9pDz8wS6EgoN4t85iBMUZrkCNqFKkN6ZQ==", + "version": "1.7.26", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.26.tgz", + "integrity": "sha512-YKevOV7abpjcAzXrhsl+W48Z9mZvgoVs2eP5nY+uoMAdP2b3GxC0Df1Co0I90o2lkzO4jYBpTMcZlmUXLdXn+Q==", "cpu": [ "arm64" ], @@ -4113,9 +2977,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.7.28", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.28.tgz", - "integrity": "sha512-vqVOpG/jc8mvTKQjaPBLhr7tnWyzuztOHsPnJqMWmg7zGcMeQC/2c5pU4uzRAfXMTp25iId6s4Y4wWfPS1EeDw==", + "version": "1.7.26", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.26.tgz", + "integrity": "sha512-3w8iZICMkQQON0uIcvz7+Q1MPOW6hJ4O5ETjA0LSP/tuKqx30hIniCGOgPDnv3UTMruLUnQbtBwVCZTBKR3Rkg==", "cpu": [ "arm64" ], @@ -4129,9 +2993,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.7.28", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.28.tgz", - "integrity": "sha512-HGwpWuB83Kr+V0E+zT5UwIIY9OxiS8aLd0UVMRVWuO8SrQyKm9HKJ46+zoAb8tfJrpZftfxvbn2ayZWR7gqosA==", + "version": "1.7.26", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.26.tgz", + "integrity": "sha512-c+pp9Zkk2lqb06bNGkR2Looxrs7FtGDMA4/aHjZcCqATgp348hOKH5WPvNLBl+yPrISuWjbKDVn3NgAvfvpH4w==", "cpu": [ "x64" ], @@ -4145,9 +3009,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.7.28", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.28.tgz", - "integrity": "sha512-q2Y2T8y8EgFtIiRyInnAXNe94aaHX74F0ha1Bl9VdRxE0u1/So+3VLbPvtp4V3Z6pj5pOePfCQJKifnllgAQ9A==", + "version": "1.7.26", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.26.tgz", + "integrity": "sha512-PgtyfHBF6xG87dUSSdTJHwZ3/8vWZfNIXQV2GlwEpslrOkGqy+WaiiyE7Of7z9AvDILfBBBcJvJ/r8u980wAfQ==", "cpu": [ "x64" ], @@ -4161,9 +3025,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.7.28", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.28.tgz", - "integrity": "sha512-bCqh4uBT/59h3dWK1v91In6qzz8rKoWoFRxCtNQLIK4jP55K0U231ZK9oN7neZD6bzcOUeFvOGgcyMAgDfFWfA==", + "version": "1.7.26", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.26.tgz", + "integrity": "sha512-9TNXPIJqFynlAOrRD6tUQjMq7KApSklK3R/tXgIxc7Qx+lWu8hlDQ/kVPLpU7PWvMMwC/3hKBW+p5f+Tms1hmA==", "cpu": [ "arm64" ], @@ -4177,9 +3041,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.7.28", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.28.tgz", - "integrity": "sha512-XTHbHrksnrqK3JSJ2sbuMWvdJ6/G0roRpgyVTmNDfhTYPOwcVaL/mSrPGLwbksYUbq7ckwoKzrobhdxvQzPsDA==", + "version": "1.7.26", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.26.tgz", + "integrity": "sha512-9YngxNcG3177GYdsTum4V98Re+TlCeJEP4kEwEg9EagT5s3YejYdKwVAkAsJszzkXuyRDdnHUpYbTrPG6FiXrQ==", "cpu": [ "ia32" ], @@ -4193,9 +3057,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.7.28", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.28.tgz", - "integrity": "sha512-jyXeoq6nX8abiCy2EpporsC5ywNENs4ocYuvxo1LSxDktWN1E2MTXq3cdJcEWB2Vydxq0rDcsGyzkRPMzFhkZw==", + "version": "1.7.26", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.26.tgz", + "integrity": "sha512-VR+hzg9XqucgLjXxA13MtV5O3C0bK0ywtLIBw/+a+O+Oc6mxFWHtdUeXDbIi5AiPbn0fjgVJMqYnyjGyyX8u0w==", "cpu": [ "x64" ], @@ -4224,26 +3088,26 @@ } }, "node_modules/@tanstack/match-sorter-utils": { - "version": "8.8.4", - "resolved": "https://registry.npmjs.org/@tanstack/match-sorter-utils/-/match-sorter-utils-8.8.4.tgz", - "integrity": "sha512-rKH8LjZiszWEvmi01NR72QWZ8m4xmXre0OOwlRGnjU01Eqz/QnN+cqpty2PJ0efHblq09+KilvyR7lsbzmXVEw==", + "version": "8.19.4", + "resolved": "https://registry.npmjs.org/@tanstack/match-sorter-utils/-/match-sorter-utils-8.19.4.tgz", + "integrity": "sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==", "dependencies": { - "remove-accents": "0.4.2" + "remove-accents": "0.5.0" }, "engines": { "node": ">=12" }, "funding": { "type": "github", - "url": "https://github.com/sponsors/kentcdodds" + "url": "https://github.com/sponsors/tannerlinsley" } }, "node_modules/@tanstack/react-table": { - "version": "8.10.7", - "resolved": "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.10.7.tgz", - "integrity": "sha512-bXhjA7xsTcsW8JPTTYlUg/FuBpn8MNjiEPhkNhIGCUR6iRQM2+WEco4OBpvDeVcR9SE+bmWLzdfiY7bCbCSVuA==", + "version": "8.20.5", + "resolved": "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.20.5.tgz", + "integrity": "sha512-WEHopKw3znbUZ61s9i0+i9g8drmDo6asTWbrQh8Us63DAk/M0FkmIqERew6P71HI75ksZ2Pxyuf4vvKh9rAkiA==", "dependencies": { - "@tanstack/table-core": "8.10.7" + "@tanstack/table-core": "8.20.5" }, "engines": { "node": ">=12" @@ -4253,16 +3117,16 @@ "url": "https://github.com/sponsors/tannerlinsley" }, "peerDependencies": { - "react": ">=16", - "react-dom": ">=16" + "react": ">=16.8", + "react-dom": ">=16.8" } }, "node_modules/@tanstack/react-virtual": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.0.1.tgz", - "integrity": "sha512-IFOFuRUTaiM/yibty9qQ9BfycQnYXIDHGP2+cU+0LrFFGNhVxCXSQnaY6wkX8uJVteFEBjUondX0Hmpp7TNcag==", + "version": "3.10.6", + "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.10.6.tgz", + "integrity": "sha512-xaSy6uUxB92O8mngHZ6CvbhGuqxQ5lIZWCBy+FjhrbHmOwc6BnOnKkYm2FsB1/BpKw/+FVctlMbEtI+F6I1aJg==", "dependencies": { - "@tanstack/virtual-core": "3.0.0" + "@tanstack/virtual-core": "3.10.6" }, "funding": { "type": "github", @@ -4274,9 +3138,9 @@ } }, "node_modules/@tanstack/table-core": { - "version": "8.10.7", - "resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.10.7.tgz", - "integrity": "sha512-KQk5OMg5OH6rmbHZxuNROvdI+hKDIUxANaHlV+dPlNN7ED3qYQ/WkpY2qlXww1SIdeMlkIhpN/2L00rof0fXFw==", + "version": "8.20.5", + "resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.20.5.tgz", + "integrity": "sha512-P9dF7XbibHph2PFRz8gfBKEXEY/HJPOhym8CHmjF8y3q5mWpKx9xtZapXQUWCgkqvsK0R46Azuz+VaxD4Xl+Tg==", "engines": { "node": ">=12" }, @@ -4286,9 +3150,9 @@ } }, "node_modules/@tanstack/virtual-core": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.0.0.tgz", - "integrity": "sha512-SYXOBTjJb05rXa2vl55TTwO40A6wKu0R5i1qQwhJYNDIqaIGF7D0HsLw+pJAyi2OvntlEIVusx3xtbbgSUi6zg==", + "version": "3.10.6", + "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.10.6.tgz", + "integrity": "sha512-1giLc4dzgEKLMx5pgKjL6HlG5fjZMgCjzlKAlpr7yoUtetVPELgER1NtephAI910nMwfPTHNyWKSFmJdHkz2Cw==", "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" @@ -4391,13 +3255,12 @@ } }, "node_modules/@testing-library/jest-dom": { - "version": "6.4.6", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.4.6.tgz", - "integrity": "sha512-8qpnGVincVDLEcQXWaHOf6zmlbwTKc6Us6PPu4CRnPXCzo2OGBS5cwgMMOWdxDpEz1mkbvXHpEy99M5Yvt682w==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.5.0.tgz", + "integrity": "sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==", "dev": true, "dependencies": { "@adobe/css-tools": "^4.4.0", - "@babel/runtime": "^7.9.2", "aria-query": "^5.0.0", "chalk": "^3.0.0", "css.escape": "^1.5.1", @@ -4409,30 +3272,6 @@ "node": ">=14", "npm": ">=6", "yarn": ">=1" - }, - "peerDependencies": { - "@jest/globals": ">= 28", - "@types/bun": "latest", - "@types/jest": ">= 28", - "jest": ">= 28", - "vitest": ">= 0.32" - }, - "peerDependenciesMeta": { - "@jest/globals": { - "optional": true - }, - "@types/bun": { - "optional": true - }, - "@types/jest": { - "optional": true - }, - "jest": { - "optional": true - }, - "vitest": { - "optional": true - } } }, "node_modules/@testing-library/jest-dom/node_modules/ansi-styles": { @@ -4509,9 +3348,9 @@ } }, "node_modules/@testing-library/react": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.0.0.tgz", - "integrity": "sha512-guuxUKRWQ+FgNX0h0NS0FIq3Q3uLtWVpBzcLOggmfMoUpgBnzBzvLLd4fbm6yS8ydJd94cIfY4yP9qUQjM2KwQ==", + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.0.1.tgz", + "integrity": "sha512-dSmwJVtJXmku+iocRhWOUFbrERC76TX2Mnf0ATODz8brzAZrMBbzLwQixlBSanZxR6LddK3eiwpSFZgDET1URg==", "dev": true, "dependencies": { "@babel/runtime": "^7.12.5" @@ -4549,61 +3388,72 @@ } }, "node_modules/@total-typescript/ts-reset": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@total-typescript/ts-reset/-/ts-reset-0.5.1.tgz", - "integrity": "sha512-AqlrT8YA1o7Ff5wPfMOL0pvL+1X+sw60NN6CcOCqs658emD6RfiXhF7Gu9QcfKBH7ELY2nInLhKSCWVoNL70MQ==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@total-typescript/ts-reset/-/ts-reset-0.6.1.tgz", + "integrity": "sha512-cka47fVSo6lfQDIATYqb/vO1nvFfbPw7uWLayIXIhGETj0wcOOlrlkobOMDNQOFr9QOafegUPq13V2+6vtD7yg==", "dev": true }, "node_modules/@turf/area": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/area/-/area-6.5.0.tgz", - "integrity": "sha512-xCZdiuojokLbQ+29qR6qoMD89hv+JAgWjLrwSEWL+3JV8IXKeNFl6XkEJz9HGkVpnXvQKJoRz4/liT+8ZZ5Jyg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/area/-/area-7.1.0.tgz", + "integrity": "sha512-w91FEe02/mQfMPRX2pXua48scFuKJ2dSVMF2XmJ6+BJfFiCPxp95I3+Org8+ZsYv93CDNKbf0oLNEPnuQdgs2g==", "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" }, "funding": { "url": "https://opencollective.com/turf" } }, "node_modules/@turf/bbox": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-6.5.0.tgz", - "integrity": "sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-7.1.0.tgz", + "integrity": "sha512-PdWPz9tW86PD78vSZj2fiRaB8JhUHy6piSa/QXb83lucxPK+HTAdzlDQMTKj5okRCU8Ox/25IR2ep9T8NdopRA==", "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" }, "funding": { "url": "https://opencollective.com/turf" } }, "node_modules/@turf/centroid": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-6.5.0.tgz", - "integrity": "sha512-MwE1oq5E3isewPprEClbfU5pXljIK/GUOMbn22UM3IFPDJX0KeoyLNwghszkdmFp/qMGL/M13MMWvU+GNLXP/A==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-7.1.0.tgz", + "integrity": "sha512-1Y1b2l+ZB1CZ+ITjUCsGqC4/tSjwm/R4OUfDztVqyyCq/VvezkLmTNqvXTGXgfP0GXkpv68iCfxF5M7QdM5pJQ==", "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" }, "funding": { "url": "https://opencollective.com/turf" } }, "node_modules/@turf/helpers": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", - "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.1.0.tgz", + "integrity": "sha512-dTeILEUVeNbaEeoZUOhxH5auv7WWlOShbx7QSd4s0T4Z0/iz90z9yaVCtZOLbU89umKotwKaJQltBNO9CzVgaQ==", + "dependencies": { + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, "funding": { "url": "https://opencollective.com/turf" } }, "node_modules/@turf/meta": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.5.0.tgz", - "integrity": "sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.1.0.tgz", + "integrity": "sha512-ZgGpWWiKz797Fe8lfRj7HKCkGR+nSJ/5aKXMyofCvLSc2PuYJs/qyyifDPWjASQQCzseJ7AlF2Pc/XQ/3XkkuA==", "dependencies": { - "@turf/helpers": "^6.5.0" + "@turf/helpers": "^7.1.0", + "@types/geojson": "^7946.0.10" }, "funding": { "url": "https://opencollective.com/turf" @@ -4883,18 +3733,18 @@ } }, "node_modules/@types/debug": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.9.tgz", - "integrity": "sha512-8Hz50m2eoS56ldRlepxSBa6PWEVCtzUo/92HgLc2qTMnotJNIm7xP+UZhyWoYsyOdd5dxZ+NZLb24rsKyFs2ow==", + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", "dev": true, "dependencies": { "@types/ms": "*" } }, "node_modules/@types/draft-convert": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@types/draft-convert/-/draft-convert-2.1.5.tgz", - "integrity": "sha512-gRJphK0P4yl/Px5iVZXJFB5ojq4aF91QL77vR0lBth9w66dnceOFn5lj3WoKdr5fXIaPKQoA4JRxRtdNoAr1TQ==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@types/draft-convert/-/draft-convert-2.1.8.tgz", + "integrity": "sha512-gzHXLnOhDqdDv3ieMCZjqbmP992MBBn1u9HrhrCQ4+sip2pFz7d+fXL4GqaBgFjM/A5+iSNRhkr4ZP4tMR3jWw==", "dev": true, "dependencies": { "@types/draft-js": "*", @@ -4902,9 +3752,9 @@ } }, "node_modules/@types/draft-js": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@types/draft-js/-/draft-js-0.11.13.tgz", - "integrity": "sha512-4cMlNWoKwcRwkA+GtCD53u5Dj78n9Z8hScB5rZYKw4Q3UZxh0h1Fm4ezLgGjAHkhsdrviWQm3MPuUi/jLOuq8A==", + "version": "0.11.18", + "resolved": "https://registry.npmjs.org/@types/draft-js/-/draft-js-0.11.18.tgz", + "integrity": "sha512-lP6yJ+EKv5tcG1dflWgDKeezdwBa8wJ7KkiNrrHqXuXhl/VGes1SKjEfKHDZqOz19KQbrAhFvNhDPWwnQXYZGQ==", "dev": true, "dependencies": { "@types/react": "*", @@ -4912,9 +3762,9 @@ } }, "node_modules/@types/draftjs-to-html": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/@types/draftjs-to-html/-/draftjs-to-html-0.8.2.tgz", - "integrity": "sha512-bjxcYNJJ7RTvYFx+P557aHs8TIVqqzJsl1kkxt4r9r+StxIdsTcrHZ2fhGKJ+jZRLsD5o+LReDFGeqzNghrGHQ==", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@types/draftjs-to-html/-/draftjs-to-html-0.8.4.tgz", + "integrity": "sha512-5FZcjFoJL57N/IttLCTCNI0krX+181oCl5hf76u3TqPkqBAphHrJAO9ReYesx9138kcObaYmpnWC2Yrqxoqd2Q==", "dev": true, "dependencies": { "@types/draft-js": "*" @@ -4923,14 +3773,20 @@ "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==" }, "node_modules/@types/geojson": { "version": "7946.0.14", "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", - "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==", - "dev": true + "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==" + }, + "node_modules/@types/geojson-vt": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@types/geojson-vt/-/geojson-vt-3.2.5.tgz", + "integrity": "sha512-qDO7wqtprzlpe8FfQ//ClPV9xiuoh2nkIgiouIptON9w5jvD/fA4szvP9GBlDVdJ5dldAl0kX/sy3URbWwLx0g==", + "dependencies": { + "@types/geojson": "*" + } }, "node_modules/@types/hast": { "version": "2.3.10", @@ -4950,16 +3806,15 @@ } }, "node_modules/@types/js-cookie": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-3.0.4.tgz", - "integrity": "sha512-vMMnFF+H5KYqdd/myCzq6wLDlPpteJK+jGFgBus3Da7lw+YsDmx2C8feGTzY2M3Fo823yON+HC2CL240j4OV+w==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-3.0.6.tgz", + "integrity": "sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==", "dev": true }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" }, "node_modules/@types/jsoneditor": { "version": "9.9.5", @@ -4972,11 +3827,26 @@ } }, "node_modules/@types/lodash": { - "version": "4.14.199", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz", - "integrity": "sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg==", + "version": "4.17.9", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.9.tgz", + "integrity": "sha512-w9iWudx1XWOHW5lQRS9iKpK/XuRhnN+0T7HvdCCd802FYkT1AMTnxndJHGrNJwRoRHkslGr4S29tjm1cT7x/7w==", "dev": true }, + "node_modules/@types/mapbox__point-geometry": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@types/mapbox__point-geometry/-/mapbox__point-geometry-0.1.4.tgz", + "integrity": "sha512-mUWlSxAmYLfwnRBmgYV86tgYmMIICX4kza8YnE/eIlywGe2XoOxlpVnXWwir92xRLjwyarqwpu2EJKD2pk0IUA==" + }, + "node_modules/@types/mapbox__vector-tile": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@types/mapbox__vector-tile/-/mapbox__vector-tile-1.3.4.tgz", + "integrity": "sha512-bpd8dRn9pr6xKvuEBQup8pwQfD4VUyqO/2deGjfpe6AwC8YRlyEipvefyRJUSiCJTZuCb8Pl1ciVV5ekqJ96Bg==", + "dependencies": { + "@types/geojson": "*", + "@types/mapbox__point-geometry": "*", + "@types/pbf": "*" + } + }, "node_modules/@types/ms": { "version": "0.7.34", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", @@ -4984,16 +3854,23 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.16.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.1.tgz", - "integrity": "sha512-DZxSZWXxFfOlx7k7Rv4LAyiMroaxa3Ly/7OOzZO8cBNho0YzAi4qlbrx8W27JGqG57IgR/6J7r+nOJWw6kcvZA==", - "dev": true + "version": "22.7.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.3.tgz", + "integrity": "sha512-qXKfhXXqGTyBskvWEzJZPUxSslAiLaB6JGP1ic/XTH9ctGgzdgYguuLP1C601aRTSDNlLb0jbKqXjZ48GNraSA==", + "dependencies": { + "undici-types": "~6.19.2" + } }, "node_modules/@types/parse-json": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" }, + "node_modules/@types/pbf": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/pbf/-/pbf-3.0.5.tgz", + "integrity": "sha512-j3pOPiEcWZ34R6a6mN07mUkM4o4Lwf6hPNt8eilOeZhTFbxFXmKhvXl9Y28jotFPaI1bpPDJsbCprUoNke6OrA==" + }, "node_modules/@types/pikaday": { "version": "1.7.4", "resolved": "https://registry.npmjs.org/@types/pikaday/-/pikaday-1.7.4.tgz", @@ -5014,37 +3891,35 @@ "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==" }, "node_modules/@types/ramda": { - "version": "0.29.5", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.29.5.tgz", - "integrity": "sha512-oBBdRfoZoCl/aBIpBbct/uUHAbJ5i7vSOHK83SvH2Qr9ermYITRNKnEYgGJlnkagUY2cu8L2//Jq7o1355Go5A==", - "dev": true, + "version": "0.30.2", + "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", + "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", "dependencies": { - "types-ramda": "^0.29.4" + "types-ramda": "^0.30.1" } }, "node_modules/@types/react": { - "version": "18.2.24", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.24.tgz", - "integrity": "sha512-Ee0Jt4sbJxMu1iDcetZEIKQr99J1Zfb6D4F3qfUWoR1JpInkY1Wdg4WwCyBjL257D0+jGqSl1twBjV8iCaC0Aw==", + "version": "18.3.9", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.9.tgz", + "integrity": "sha512-+BpAVyTpJkNWWSSnaLBk6ePpHLOGJKnEQNbINNovPWzvEUyAe3e+/d494QdEh71RekM/qV7lw6jzf1HGrJyAtQ==", "dependencies": { "@types/prop-types": "*", - "@types/scheduler": "*", "csstype": "^3.0.2" } }, "node_modules/@types/react-beautiful-dnd": { - "version": "13.1.5", - "resolved": "https://registry.npmjs.org/@types/react-beautiful-dnd/-/react-beautiful-dnd-13.1.5.tgz", - "integrity": "sha512-mzohmMtV48b0bXF2dP8188LzUv9HAGHKucOORYsd5Sqq830pJ4gseFyDDAH0TR4TeD1ceG9DxTQ0FOFbtCSy4Q==", + "version": "13.1.8", + "resolved": "https://registry.npmjs.org/@types/react-beautiful-dnd/-/react-beautiful-dnd-13.1.8.tgz", + "integrity": "sha512-E3TyFsro9pQuK4r8S/OL6G99eq7p8v29sX0PM7oT8Z+PJfZvSQTx4zTQbUJ+QZXioAF0e7TGBEcA1XhYhCweyQ==", "dev": true, "dependencies": { "@types/react": "*" } }, "node_modules/@types/react-color": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/react-color/-/react-color-3.0.7.tgz", - "integrity": "sha512-IGZA7e8Oia0+Sb3/1KP0qTThGelZ9DRspfeLrFWQWv5vXHiYlJJQMC2kgQr75CtP4uL8/kvT8qBgrOVlxVoNTw==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@types/react-color/-/react-color-3.0.12.tgz", + "integrity": "sha512-pr3uKE3lSvf7GFo1Rn2K3QktiZQFFrSgSGJ/3iMvSOYWt2pPAJ97rVdVfhWxYJZ8prAEXzoP2XX//3qGSQgu7Q==", "dev": true, "dependencies": { "@types/react": "*", @@ -5061,18 +3936,18 @@ } }, "node_modules/@types/react-dom": { - "version": "18.2.8", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.8.tgz", - "integrity": "sha512-bAIvO5lN/U8sPGvs1Xm61rlRHHaq5rp5N3kp9C+NJ/Q41P8iqjkXSu0+/qu8POsjH9pNWb0OYabFez7taP7omw==", + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", "devOptional": true, "dependencies": { "@types/react": "*" } }, "node_modules/@types/react-plotly.js": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@types/react-plotly.js/-/react-plotly.js-2.6.1.tgz", - "integrity": "sha512-vFJZRCC2Pav0NdrFm0grPMm9+67ejGZZglDBWqo+J6VFbB4CAatjoNiowfardznuujaaoDNoZ4MSCFwYyVk4aA==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@types/react-plotly.js/-/react-plotly.js-2.6.3.tgz", + "integrity": "sha512-HBQwyGuu/dGXDsWhnQrhH+xcJSsHvjkwfSRjP+YpOsCCWryIuXF78ZCBjpfgO3sCc0Jo8sYp4NOGtqT7Cn3epQ==", "dev": true, "dependencies": { "@types/plotly.js": "*", @@ -5108,18 +3983,18 @@ } }, "node_modules/@types/react-virtualized-auto-sizer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.1.tgz", - "integrity": "sha512-GH8sAnBEM5GV9LTeiz56r4ZhMOUSrP43tAQNSRVxNexDjcNKLCEtnxusAItg1owFUFE6k0NslV26gqVClVvong==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.4.tgz", + "integrity": "sha512-nhYwlFiYa8M3S+O2T9QO/e1FQUYMr/wJENUdf/O0dhRi1RS/93rjrYQFYdbUqtdFySuhrtnEDX29P6eKOttY+A==", "dev": true, "dependencies": { "@types/react": "*" } }, "node_modules/@types/react-window": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@types/react-window/-/react-window-1.8.6.tgz", - "integrity": "sha512-AVJr3A5rIO9dQQu5TwTN0lP2c1RtuqyyZGCt7PGP8e5gUpn1PuQRMJb/u3UpdbwTHh4wbEi33UMW5NI0IXt1Mg==", + "version": "1.8.8", + "resolved": "https://registry.npmjs.org/@types/react-window/-/react-window-1.8.8.tgz", + "integrity": "sha512-8Ls660bHR1AUA2kuRvVG9D/4XpRC6wjAaPT9dil7Ckc76eP9TKWZwwmgfq8Q1LANX3QNDnoU4Zp48A3w+zK69Q==", "dev": true, "dependencies": { "@types/react": "*" @@ -5134,30 +4009,24 @@ "@types/react": "*" } }, - "node_modules/@types/redux-logger": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/redux-logger/-/redux-logger-3.0.10.tgz", - "integrity": "sha512-wjcuptRVZQoWjbwKdLrEnit9A7TvW0HD6ZYNQGWRRCUBBux2RT8JxqwYemaS2fTQT3ebOvsszt2L/Hrylxh5PA==", - "dev": true, - "dependencies": { - "redux": "^4.0.0" - } - }, - "node_modules/@types/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-YIoDCTH3Af6XM5VuwGG/QL/CJqga1Zm3NkU3HZ4ZHK2fRMPYP1VczsTUqtsf43PH/iJNVlPHAo2oWX7BSdB2Hw==" - }, "node_modules/@types/semver": { "version": "7.5.8", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", "dev": true }, + "node_modules/@types/supercluster": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/supercluster/-/supercluster-7.1.3.tgz", + "integrity": "sha512-Z0pOY34GDFl3Q6hUFYf3HkTwKEE02e7QgtJppBt+beEAxnyOpJua+voGFvxINBHa06GwLFFym7gRPY2SiKIfIA==", + "dependencies": { + "@types/geojson": "*" + } + }, "node_modules/@types/swagger-ui-react": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@types/swagger-ui-react/-/swagger-ui-react-4.18.1.tgz", - "integrity": "sha512-nYhNi+cyN78vve1/QY5PNKYzHYlDKETtXj+gQAhuoCRB+GxGT3MVJUj8WCdwYj4vF0s1j68qkLv/66DGe5ZlnA==", + "version": "4.18.3", + "resolved": "https://registry.npmjs.org/@types/swagger-ui-react/-/swagger-ui-react-4.18.3.tgz", + "integrity": "sha512-Mo/R7IjDVwtiFPs84pWvh5pI9iyNGBjmfielxqbOh2Jv+8WVSDVe8Nu25kb5BOuV2xmGS3o33jr6nwDJMBcX+Q==", "dev": true, "dependencies": { "@types/react": "*" @@ -5184,22 +4053,22 @@ "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" }, "node_modules/@types/uuid": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.4.tgz", - "integrity": "sha512-zAuJWQflfx6dYJM62vna+Sn5aeSWhh3OB+wfUEACNcqUSc0AGc5JKl+ycL1vrH7frGTXhJchYjE1Hak8L819dA==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.14.0.tgz", - "integrity": "sha512-1ZJBykBCXaSHG94vMMKmiHoL0MhNHKSVlcHVYZNw+BKxufhqQVTOawNpwwI1P5nIFZ/4jLVop0mcY6mJJDFNaw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.2.0.tgz", + "integrity": "sha512-mdekAHOqS9UjlmyF/LSs6AIEvfceV749GFxoBAjwAv0nkevfKHWQFDMcBZWUiIC5ft6ePWivXoS36aKQ0Cy3sw==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.14.0", - "@typescript-eslint/type-utils": "6.14.0", - "@typescript-eslint/utils": "6.14.0", - "@typescript-eslint/visitor-keys": "6.14.0", + "@typescript-eslint/scope-manager": "7.2.0", + "@typescript-eslint/type-utils": "7.2.0", + "@typescript-eslint/utils": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -5215,8 +4084,8 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -5237,15 +4106,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.14.0.tgz", - "integrity": "sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.2.0.tgz", + "integrity": "sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.14.0", - "@typescript-eslint/types": "6.14.0", - "@typescript-eslint/typescript-estree": "6.14.0", - "@typescript-eslint/visitor-keys": "6.14.0", + "@typescript-eslint/scope-manager": "7.2.0", + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/typescript-estree": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0", "debug": "^4.3.4" }, "engines": { @@ -5256,7 +4125,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -5265,13 +4134,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.14.0.tgz", - "integrity": "sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.2.0.tgz", + "integrity": "sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.14.0", - "@typescript-eslint/visitor-keys": "6.14.0" + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -5282,13 +4151,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.14.0.tgz", - "integrity": "sha512-x6OC9Q7HfYKqjnuNu5a7kffIYs3No30isapRBJl1iCHLitD8O0lFbRcVGiOcuyN837fqXzPZ1NS10maQzZMKqw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.2.0.tgz", + "integrity": "sha512-xHi51adBHo9O9330J8GQYQwrKBqbIPJGZZVQTHHmy200hvkLZFWJIFtAG/7IYTWUyun6DE6w5InDReePJYJlJA==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.14.0", - "@typescript-eslint/utils": "6.14.0", + "@typescript-eslint/typescript-estree": "7.2.0", + "@typescript-eslint/utils": "7.2.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -5300,7 +4169,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -5309,9 +4178,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.14.0.tgz", - "integrity": "sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.2.0.tgz", + "integrity": "sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -5322,16 +4191,17 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.14.0.tgz", - "integrity": "sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.2.0.tgz", + "integrity": "sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.14.0", - "@typescript-eslint/visitor-keys": "6.14.0", + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", + "minimatch": "9.0.3", "semver": "^7.5.4", "ts-api-utils": "^1.0.1" }, @@ -5348,6 +4218,21 @@ } } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", @@ -5361,17 +4246,17 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.14.0.tgz", - "integrity": "sha512-XwRTnbvRr7Ey9a1NT6jqdKX8y/atWG+8fAIu3z73HSP8h06i3r/ClMhmaF/RGWGW1tHJEwij1uEg2GbEmPYvYg==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.2.0.tgz", + "integrity": "sha512-YfHpnMAGb1Eekpm3XRK8hcMwGLGsnT6L+7b2XyRv6ouDuJU1tZir1GS2i0+VXRatMwSI1/UfcyPe53ADkU+IuA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.14.0", - "@typescript-eslint/types": "6.14.0", - "@typescript-eslint/typescript-estree": "6.14.0", + "@typescript-eslint/scope-manager": "7.2.0", + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/typescript-estree": "7.2.0", "semver": "^7.5.4" }, "engines": { @@ -5382,7 +4267,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" } }, "node_modules/@typescript-eslint/utils/node_modules/semver": { @@ -5398,12 +4283,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.14.0.tgz", - "integrity": "sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz", + "integrity": "sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.14.0", + "@typescript-eslint/types": "7.2.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -5433,199 +4318,309 @@ } }, "node_modules/@vitest/coverage-v8": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-1.6.0.tgz", - "integrity": "sha512-KvapcbMY/8GYIG0rlwwOKCVNRc0OL20rrhFkg/CHNzncV03TE2XWvO5w9uZYoxNiMEBacAJt3unSOiZ7svePew==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-2.1.1.tgz", + "integrity": "sha512-md/A7A3c42oTT8JUHSqjP5uKTWJejzUW4jalpvs+rZ27gsURsMU8DEb+8Jf8C6Kj2gwfSHJqobDNBuoqlm0cFw==", "dev": true, "dependencies": { - "@ampproject/remapping": "^2.2.1", + "@ampproject/remapping": "^2.3.0", "@bcoe/v8-coverage": "^0.2.3", - "debug": "^4.3.4", + "debug": "^4.3.6", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", - "istanbul-lib-source-maps": "^5.0.4", - "istanbul-reports": "^3.1.6", - "magic-string": "^0.30.5", - "magicast": "^0.3.3", - "picocolors": "^1.0.0", - "std-env": "^3.5.0", - "strip-literal": "^2.0.0", - "test-exclude": "^6.0.0" + "istanbul-lib-source-maps": "^5.0.6", + "istanbul-reports": "^3.1.7", + "magic-string": "^0.30.11", + "magicast": "^0.3.4", + "std-env": "^3.7.0", + "test-exclude": "^7.0.1", + "tinyrainbow": "^1.2.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "vitest": "1.6.0" - } - }, - "node_modules/@vitest/expect": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.0.tgz", - "integrity": "sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==", - "dev": true, - "dependencies": { - "@vitest/spy": "1.6.0", - "@vitest/utils": "1.6.0", - "chai": "^4.3.10" + "@vitest/browser": "2.1.1", + "vitest": "2.1.1" }, - "funding": { - "url": "https://opencollective.com/vitest" + "peerDependenciesMeta": { + "@vitest/browser": { + "optional": true + } } }, - "node_modules/@vitest/runner": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.6.0.tgz", - "integrity": "sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==", + "node_modules/@vitest/expect": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.1.tgz", + "integrity": "sha512-YeueunS0HiHiQxk+KEOnq/QMzlUuOzbU1Go+PgAsHvvv3tUkJPm9xWt+6ITNTlzsMXUjmgm5T+U7KBPK2qQV6w==", "dev": true, "dependencies": { - "@vitest/utils": "1.6.0", - "p-limit": "^5.0.0", - "pathe": "^1.1.1" + "@vitest/spy": "2.1.1", + "@vitest/utils": "2.1.1", + "chai": "^5.1.1", + "tinyrainbow": "^1.2.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, - "node_modules/@vitest/runner/node_modules/p-limit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", - "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@vitest/runner/node_modules/yocto-queue": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", - "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "node_modules/@vitest/mocker": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.1.tgz", + "integrity": "sha512-LNN5VwOEdJqCmJ/2XJBywB11DLlkbY0ooDJW3uRX5cZyYCrc4PI/ePX0iQhE3BiEGiQmK4GE7Q/PqCkkaiPnrA==", "dev": true, - "engines": { - "node": ">=12.20" + "dependencies": { + "@vitest/spy": "^2.1.0-beta.1", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.11" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@vitest/spy": "2.1.1", + "msw": "^2.3.5", + "vite": "^5.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } } }, - "node_modules/@vitest/snapshot": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.0.tgz", - "integrity": "sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==", + "node_modules/@vitest/pretty-format": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.1.tgz", + "integrity": "sha512-SjxPFOtuINDUW8/UkElJYQSFtnWX7tMksSGW0vfjxMneFqxVr8YJ979QpMbDW7g+BIiq88RAGDjf7en6rvLPPQ==", "dev": true, "dependencies": { - "magic-string": "^0.30.5", - "pathe": "^1.1.1", - "pretty-format": "^29.7.0" + "tinyrainbow": "^1.2.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, - "node_modules/@vitest/snapshot/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/@vitest/runner": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.1.tgz", + "integrity": "sha512-uTPuY6PWOYitIkLPidaY5L3t0JJITdGTSwBtwMjKzo5O6RCOEncz9PUN+0pDidX8kTHYjO0EwUIvhlGpnGpxmA==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "@vitest/utils": "2.1.1", + "pathe": "^1.1.2" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://opencollective.com/vitest" } }, - "node_modules/@vitest/snapshot/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/@vitest/snapshot": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.1.tgz", + "integrity": "sha512-BnSku1WFy7r4mm96ha2FzN99AZJgpZOWrAhtQfoxjUU5YMRpq1zmHRq7a5K9/NjqonebO7iVDla+VvZS8BOWMw==", "dev": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@vitest/pretty-format": "2.1.1", + "magic-string": "^0.30.11", + "pathe": "^1.1.2" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/spy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.0.tgz", - "integrity": "sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.1.tgz", + "integrity": "sha512-ZM39BnZ9t/xZ/nF4UwRH5il0Sw93QnZXd9NAZGRpIgj0yvVwPpLd702s/Cx955rGaMlyBQkZJ2Ir7qyY48VZ+g==", "dev": true, "dependencies": { - "tinyspy": "^2.2.0" + "tinyspy": "^3.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/ui": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-1.6.0.tgz", - "integrity": "sha512-k3Lyo+ONLOgylctiGovRKy7V4+dIN2yxstX3eY5cWFXH6WP+ooVX79YSyi0GagdTQzLmT43BF27T0s6dOIPBXA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-2.1.1.tgz", + "integrity": "sha512-IIxo2LkQDA+1TZdPLYPclzsXukBWd5dX2CKpGqH8CCt8Wh0ZuDn4+vuQ9qlppEju6/igDGzjWF/zyorfsf+nHg==", "dev": true, "dependencies": { - "@vitest/utils": "1.6.0", - "fast-glob": "^3.3.2", - "fflate": "^0.8.1", - "flatted": "^3.2.9", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", - "sirv": "^2.0.4" + "@vitest/utils": "2.1.1", + "fflate": "^0.8.2", + "flatted": "^3.3.1", + "pathe": "^1.1.2", + "sirv": "^2.0.4", + "tinyglobby": "^0.2.6", + "tinyrainbow": "^1.2.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "vitest": "1.6.0" + "vitest": "2.1.1" } }, "node_modules/@vitest/utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.0.tgz", - "integrity": "sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.1.tgz", + "integrity": "sha512-Y6Q9TsI+qJ2CC0ZKj6VBb+T8UPz593N113nnUykqwANqhgf3QkZeHFlusgKLTqrnVHbj/XDKZcDHol+dxVT+rQ==", "dev": true, "dependencies": { - "diff-sequences": "^29.6.3", - "estree-walker": "^3.0.3", - "loupe": "^2.3.7", - "pretty-format": "^29.7.0" + "@vitest/pretty-format": "2.1.1", + "loupe": "^3.1.1", + "tinyrainbow": "^1.2.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, - "node_modules/@vitest/utils/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node_modules/@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "peer": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, - "node_modules/@vitest/utils/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "peer": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "peer": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "peer": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "peer": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "peer": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "peer": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "peer": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "peer": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" } }, "node_modules/@xobotyi/scrollbar-width": { @@ -5633,10 +4628,17 @@ "resolved": "https://registry.npmjs.org/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz", "integrity": "sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==" }, - "node_modules/@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==" + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "peer": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "peer": true }, "node_modules/abs-svg-path": { "version": "0.1.1", @@ -5652,7 +4654,6 @@ "version": "8.12.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", - "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -5660,6 +4661,15 @@ "node": ">=0.4.0" } }, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "peer": true, + "peerDependencies": { + "acorn": "^8" + } + }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -5669,18 +4679,6 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", - "dev": true, - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/agent-base": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", @@ -5708,6 +4706,15 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peer": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, "node_modules/almost-equal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/almost-equal/-/almost-equal-1.1.0.tgz", @@ -5761,6 +4768,14 @@ "dequal": "^2.0.3" } }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/array-bounds": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-bounds/-/array-bounds-1.0.1.tgz", @@ -5837,6 +4852,26 @@ "node": ">=8" } }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array.prototype.flat": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", @@ -5917,12 +4952,20 @@ "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" }, "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true, "engines": { - "node": "*" + "node": ">=12" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "engines": { + "node": ">=0.10.0" } }, "node_modules/asynckit": { @@ -5930,14 +4973,6 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/attr-accept": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", @@ -5970,11 +5005,11 @@ } }, "node_modules/axios": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz", - "integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==", + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", "dependencies": { - "follow-redirects": "^1.15.0", + "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -6016,6 +5051,14 @@ "resolved": "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz", "integrity": "sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==" }, + "node_modules/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -6079,6 +5122,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, "dependencies": { "fill-range": "^7.1.1" }, @@ -6146,16 +5190,21 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/bytewise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/bytewise/-/bytewise-1.1.0.tgz", + "integrity": "sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ==", + "dependencies": { + "bytewise-core": "^1.2.2", + "typewise": "^1.0.3" + } + }, + "node_modules/bytewise-core": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bytewise-core/-/bytewise-core-1.2.3.tgz", + "integrity": "sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA==", + "dependencies": { + "typewise-core": "^1.2" } }, "node_modules/cac": { @@ -6171,6 +5220,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -6226,21 +5276,19 @@ "integrity": "sha512-+VsMpRr64jYgKq2IeFUNel3vCZH/IzS+iXSHxmUV3IUH5dXlC9xHz4AwtPZisDxZ5MWcuK0V+TXgPKFPiZnxzg==" }, "node_modules/chai": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", - "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.1.tgz", + "integrity": "sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==", "dev": true, "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.3", - "deep-eql": "^4.1.3", - "get-func-name": "^2.0.2", - "loupe": "^2.3.6", - "pathval": "^1.1.1", - "type-detect": "^4.1.0" + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=12" } }, "node_modules/chalk": { @@ -6292,15 +5340,12 @@ } }, "node_modules/check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", "dev": true, - "dependencies": { - "get-func-name": "^2.0.2" - }, "engines": { - "node": "*" + "node": ">= 16" } }, "node_modules/chevrotain": { @@ -6318,18 +5363,13 @@ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "optional": true }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "peer": true, "engines": { - "node": ">=8" + "node": ">=6.0" } }, "node_modules/clamp": { @@ -6343,9 +5383,9 @@ "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" }, "node_modules/clsx": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", - "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", "engines": { "node": ">=6" } @@ -6358,6 +5398,14 @@ "color-parse": "^1.3.8" } }, + "node_modules/color-alpha/node_modules/color-parse": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/color-parse/-/color-parse-1.4.3.tgz", + "integrity": "sha512-BADfVl/FHkQkyo8sRBwMYBqemqsgnu7JZAwUgvBvuwwuNUZAhSvLTbsEErS5bQXzOjDR0dWzJ4vXN2Q+QoPx0A==", + "dependencies": { + "color-name": "^1.0.0" + } + }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -6390,13 +5438,11 @@ } }, "node_modules/color-parse": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/color-parse/-/color-parse-1.3.8.tgz", - "integrity": "sha512-1Y79qFv0n1xair3lNMTNeoFvmc3nirMVBij24zbs1f13+7fPpQClMg5b4AuKXLt3szj7BRlHMCXHplkce6XlmA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/color-parse/-/color-parse-2.0.0.tgz", + "integrity": "sha512-g2Z+QnWsdHLppAbrpcFWo629kLOnOPtpxYV69GCqm92gqSgyXbzlfyN3MXs0412fPBkFmiuS+rXposgBgBa6Kg==", "dependencies": { - "color-name": "^1.0.0", - "defined": "^1.0.0", - "is-plain-obj": "^1.1.0" + "color-name": "^1.0.0" } }, "node_modules/color-rgba": { @@ -6409,6 +5455,14 @@ "color-space": "^1.14.6" } }, + "node_modules/color-rgba/node_modules/color-parse": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/color-parse/-/color-parse-1.4.3.tgz", + "integrity": "sha512-BADfVl/FHkQkyo8sRBwMYBqemqsgnu7JZAwUgvBvuwwuNUZAhSvLTbsEErS5bQXzOjDR0dWzJ4vXN2Q+QoPx0A==", + "dependencies": { + "color-name": "^1.0.0" + } + }, "node_modules/color-space": { "version": "1.16.0", "resolved": "https://registry.npmjs.org/color-space/-/color-space-1.16.0.tgz", @@ -6455,7 +5509,8 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true }, "node_modules/concat-stream": { "version": "1.6.2", @@ -6471,12 +5526,6 @@ "typedarray": "^0.0.6" } }, - "node_modules/confbox": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.7.tgz", - "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==", - "dev": true - }, "node_modules/convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", @@ -6555,6 +5604,7 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -6621,6 +5671,51 @@ "hyphenate-style-name": "^1.0.3" } }, + "node_modules/css-loader": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", + "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.27.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-loader/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/css-system-font-keywords": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/css-system-font-keywords/-/css-system-font-keywords-1.0.0.tgz", @@ -6656,6 +5751,17 @@ "resolved": "https://registry.npmjs.org/csscolorparser/-/csscolorparser-1.0.3.tgz", "integrity": "sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w==" }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/cssstyle": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.1.0.tgz", @@ -7043,11 +6149,11 @@ } }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -7080,13 +6186,10 @@ } }, "node_modules/deep-eql": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", - "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", "dev": true, - "dependencies": { - "type-detect": "^4.0.0" - }, "engines": { "node": ">=6" } @@ -7117,6 +6220,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -7185,15 +6289,6 @@ "node": ">=8" } }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -7235,9 +6330,9 @@ } }, "node_modules/dompurify": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.5.6.tgz", - "integrity": "sha512-zUTaUBO8pY4+iJMPE1B9XlO2tXVYIcEA4SNGtvDELzTSCQO7RzH+j7S180BmhmJId78lqGU2z19vgVx2Sxs/PQ==" + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.5.7.tgz", + "integrity": "sha512-2q4bEI+coQM8f5ez7kt2xclg1XsecaV9ASJk/54vwlfRRNQfDqJz2pzQ8t0Ix/ToBpXlVjrRIx7pFC/o8itG2Q==" }, "node_modules/draft-convert": { "version": "2.1.13", @@ -7319,6 +6414,12 @@ "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "node_modules/electron-to-chromium": { "version": "1.5.29", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.29.tgz", @@ -7337,6 +6438,12 @@ "strongly-connected-components": "^1.0.1" } }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -7345,6 +6452,19 @@ "once": "^1.4.0" } }, + "node_modules/enhanced-resolve": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -7437,6 +6557,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, "dependencies": { "get-intrinsic": "^1.2.4" }, @@ -7448,6 +6569,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, "engines": { "node": ">= 0.4" } @@ -7477,6 +6599,11 @@ "node": ">= 0.4" } }, + "node_modules/es-module-lexer": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==" + }, "node_modules/es-object-atoms": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", @@ -7664,16 +6791,16 @@ } }, "node_modules/eslint": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz", - "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.55.0", - "@humanwhocodes/config-array": "^0.11.13", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", @@ -7719,9 +6846,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", - "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" @@ -7731,20 +6858,21 @@ } }, "node_modules/eslint-plugin-jsdoc": { - "version": "48.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-48.2.0.tgz", - "integrity": "sha512-O2B1XLBJnUCRkggFzUQ+PBYJDit8iAgXdlu8ucolqGrbmOWPvttZQZX8d1sC0MbqDMSLs8SHSQxaNPRY1RQREg==", + "version": "48.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-48.10.0.tgz", + "integrity": "sha512-BEli0k8E0dzhJairAllwlkGnyYDZVKNn4WDmyKy+v6J5qGNuofjzxwNUi+55BOGmyO9mKBhqaidwGy+dxndn/Q==", "dev": true, "dependencies": { - "@es-joy/jsdoccomment": "~0.42.0", + "@es-joy/jsdoccomment": "~0.46.0", "are-docs-informative": "^0.0.2", "comment-parser": "1.4.1", - "debug": "^4.3.4", + "debug": "^4.3.5", "escape-string-regexp": "^4.0.0", - "esquery": "^1.5.0", - "is-builtin-module": "^3.2.1", - "semver": "^7.6.0", - "spdx-expression-parse": "^4.0.0" + "esquery": "^1.6.0", + "parse-imports": "^2.1.1", + "semver": "^7.6.3", + "spdx-expression-parse": "^4.0.0", + "synckit": "^0.9.1" }, "engines": { "node": ">=18" @@ -7775,23 +6903,24 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz", - "integrity": "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", + "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", "dev": true, "dependencies": { "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.8.5" + "synckit": "^0.9.1" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/prettier" + "url": "https://opencollective.com/eslint-plugin-prettier" }, "peerDependencies": { "@types/eslint": ">=8.0.0", "eslint": ">=8.0.0", + "eslint-config-prettier": "*", "prettier": ">=3.0.0" }, "peerDependenciesMeta": { @@ -7804,39 +6933,41 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.33.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", - "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", + "version": "7.37.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.0.tgz", + "integrity": "sha512-IHBePmfWH5lKhJnJ7WB1V+v/GolbB0rjS8XYVCSQCZKaQCAUhMoVoOEn1Ef8Z8Wf0a7l8KTJvuZg5/e4qrZ6nA==", "dev": true, "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.12", + "es-iterator-helpers": "^1.0.19", "estraverse": "^5.3.0", + "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.0", "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", + "resolve": "^2.0.0-next.5", "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.8" + "string.prototype.matchall": "^4.0.11", + "string.prototype.repeat": "^1.0.0" }, "engines": { "node": ">=4" }, "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", "dev": true, "engines": { "node": ">=10" @@ -7846,9 +6977,9 @@ } }, "node_modules/eslint-plugin-react-refresh": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.5.tgz", - "integrity": "sha512-D53FYKJa+fDmZMtriODxvhwrO+IOqrxoEo21gMA0sjHdU6dPVH4OhyFip9ypl8HOF5RV5KdTo+rBQLvnY2cO8w==", + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.12.tgz", + "integrity": "sha512-9neVjoGv20FwYtCP6CB1dzR1vr57ZDNOXst21wd2xJ/cTlM2xLq0GWVlSNTdMn/4BtP6cHYBMCSp1wFBJ9jBsg==", "dev": true, "peerDependencies": { "eslint": ">=7" @@ -8099,7 +7230,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, "dependencies": { "estraverse": "^5.2.0" }, @@ -8149,41 +7279,6 @@ "node": ">=0.8.x" } }, - "node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/execa/node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "dev": true, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/expand-template": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", @@ -8201,6 +7296,25 @@ "type": "^2.7.2" } }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extend-shallow/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/falafel": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.5.tgz", @@ -8418,6 +7532,7 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -8445,14 +7560,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/find-yarn-workspace-root": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", - "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", - "dependencies": { - "micromatch": "^4.0.2" - } - }, "node_modules/flat-cache": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", @@ -8576,6 +7683,22 @@ "is-callable": "^1.1.3" } }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -8612,24 +7735,11 @@ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "optional": true }, - "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true }, "node_modules/fsevents": { "version": "2.3.3", @@ -8711,6 +7821,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", @@ -8753,6 +7864,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/github-from-package": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", @@ -8812,6 +7931,7 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -8839,10 +7959,17 @@ "node": ">=10.13.0" } }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "peer": true + }, "node_modules/glob/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -8852,6 +7979,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -8859,6 +7987,41 @@ "node": "*" } }, + "node_modules/global-prefix": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-4.0.0.tgz", + "integrity": "sha512-w0Uf9Y9/nyHinEk5vMJKRie+wa4kR5hmDbEhGGds/kG1PwGLLHKRoNMeJOyCQjjBkANlnScqgzcFwGHgmgLkVA==", + "dependencies": { + "ini": "^4.1.3", + "kind-of": "^6.0.3", + "which": "^4.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/global-prefix/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "engines": { + "node": ">=16" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -9096,6 +8259,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -9120,20 +8284,20 @@ "integrity": "sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA==" }, "node_modules/handsontable": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/handsontable/-/handsontable-14.1.0.tgz", - "integrity": "sha512-7j6rvOTyNoz84u6ZjCluGhQp+VCVGi0bg2Os5cCTaStyDjyB5y/b0En8qWMyXMTcXzN+GeDn8eB+N6dqSYPnTg==", + "version": "14.5.0", + "resolved": "https://registry.npmjs.org/handsontable/-/handsontable-14.5.0.tgz", + "integrity": "sha512-fxCjDZS4z2LFwrmHXqtEKIcfrPxoD8+5AmX7r3pEYp2rjIhmtYKA45DFQ/3PP8PYvSFW8BGR58ZaKecMpGfJXg==", "dependencies": { "@handsontable/pikaday": "^1.0.0", "@types/pikaday": "1.7.4", - "core-js": "^3.31.1", + "core-js": "^3.37.0", "dompurify": "^2.1.1", - "moment": "2.29.4", + "moment": "2.30.1", "numbro": "2.1.2", "pikaday": "1.8.2" }, "optionalDependencies": { - "hyperformula": "^2.4.0" + "hyperformula": "^2.6.2" } }, "node_modules/has-bigints": { @@ -9173,6 +8337,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, "dependencies": { "es-define-property": "^1.0.0" }, @@ -9184,6 +8349,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -9195,6 +8361,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -9353,25 +8520,16 @@ "node": ">= 14" } }, - "node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "dev": true, - "engines": { - "node": ">=16.17.0" - } - }, "node_modules/husky": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", - "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.6.tgz", + "integrity": "sha512-sqbjZKK7kf44hfdE94EoX8MZNk0n7HeW37O4YrVGCF4wzgQjp+akPAkfUK5LZ6KuR/6sqeAVuXHji+RzQgOn5A==", "dev": true, "bin": { - "husky": "lib/bin.js" + "husky": "bin.js" }, "engines": { - "node": ">=14" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/typicode" @@ -9393,9 +8551,9 @@ "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==" }, "node_modules/i18next": { - "version": "23.5.1", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.5.1.tgz", - "integrity": "sha512-JelYzcaCoFDaa+Ysbfz2JsGAKkrHiMG6S61+HLBUEIPaF40WMwW9hCPymlQGrP+wWawKxKPuSuD71WZscCsWHg==", + "version": "23.15.1", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.15.1.tgz", + "integrity": "sha512-wB4abZ3uK7EWodYisHl/asf8UYEhrI/vj/8aoSsrj/ZDxj4/UXPOa1KvFt1Fq5hkUHquNqwFlDprmjZ8iySgYA==", "funding": [ { "type": "individual", @@ -9411,21 +8569,21 @@ } ], "dependencies": { - "@babel/runtime": "^7.22.5" + "@babel/runtime": "^7.23.2" } }, "node_modules/i18next-browser-languagedetector": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-7.1.0.tgz", - "integrity": "sha512-cr2k7u1XJJ4HTOjM9GyOMtbOA47RtUoWRAtt52z43r3AoMs2StYKyjS3URPhzHaf+mn10hY9dZWamga5WPQjhA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-8.0.0.tgz", + "integrity": "sha512-zhXdJXTTCoG39QsrOCiOabnWj2jecouOqbchu3EfhtSHxIB5Uugnm9JaizenOy39h7ne3+fLikIjeW88+rgszw==", "dependencies": { - "@babel/runtime": "^7.19.4" + "@babel/runtime": "^7.23.2" } }, "node_modules/i18next-http-backend": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-2.4.2.tgz", - "integrity": "sha512-wKrgGcaFQ4EPjfzBTjzMU0rbFTYpa0S5gv9N/d8WBmWS64+IgJb7cHddMvV+tUkse7vUfco3eVs2lB+nJhPo3w==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-2.6.1.tgz", + "integrity": "sha512-rCilMAnlEQNeKOZY1+x8wLM5IpYOj10guGvEpeC59tNjj6MMreLIjIW8D1RclhD3ifLwn6d/Y9HEM1RUE6DSog==", "dependencies": { "cross-fetch": "4.0.0" } @@ -9449,6 +8607,17 @@ "node": ">=0.10.0" } }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -9478,9 +8647,9 @@ } }, "node_modules/immer": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/immer/-/immer-10.0.3.tgz", - "integrity": "sha512-pwupu3eWfouuaowscykeckFmVTpqbzW+rXFCX8rQLkZzM9ftBmU/++Ra+o+L27mz03zJTlyV4UUr+fdKNffo4A==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz", + "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==", "funding": { "type": "opencollective", "url": "https://opencollective.com/immer" @@ -9532,6 +8701,7 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -9543,10 +8713,12 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "optional": true + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", + "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } }, "node_modules/inline-style-prefixer": { "version": "7.0.1", @@ -9669,21 +8841,6 @@ "resolved": "https://registry.npmjs.org/is-browser/-/is-browser-2.1.0.tgz", "integrity": "sha512-F5rTJxDQ2sW81fcfOR1GnCXT6sVJC104fCyfj+mjpwNEwaPYSn5fte5jiHmBg3DHsIoL/l8Kvw5VN5SsTRcRFQ==" }, - "node_modules/is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", - "dev": true, - "dependencies": { - "builtin-modules": "^3.3.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -9749,20 +8906,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-extendable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", @@ -9814,6 +8957,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-generator-function": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", @@ -9891,6 +9043,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, "engines": { "node": ">=0.12.0" } @@ -9995,18 +9148,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-string": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", @@ -10102,17 +9243,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", @@ -10121,7 +9251,8 @@ "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true }, "node_modules/isobject": { "version": "3.0.1", @@ -10215,11 +9346,64 @@ "set-function-name": "^2.0.1" } }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/javascript-natural-sort": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==" }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "peer": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, "node_modules/jmespath": { "version": "0.16.0", "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", @@ -10267,31 +9451,31 @@ } }, "node_modules/jsdom": { - "version": "24.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.1.0.tgz", - "integrity": "sha512-6gpM7pRXCwIOKxX47cgOyvyQDN/Eh0f1MeKySBV2xGdKtqJBLj8P25eY3EVCWo2mglDDzozR2r2MW4T+JiNUZA==", + "version": "25.0.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-25.0.1.tgz", + "integrity": "sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==", "dev": true, "dependencies": { - "cssstyle": "^4.0.1", + "cssstyle": "^4.1.0", "data-urls": "^5.0.0", "decimal.js": "^10.4.3", "form-data": "^4.0.0", "html-encoding-sniffer": "^4.0.0", "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.4", + "https-proxy-agent": "^7.0.5", "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.10", + "nwsapi": "^2.2.12", "parse5": "^7.1.2", - "rrweb-cssom": "^0.7.0", + "rrweb-cssom": "^0.7.1", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.4", + "tough-cookie": "^5.0.0", "w3c-xmlserializer": "^5.0.0", "webidl-conversions": "^7.0.0", "whatwg-encoding": "^3.1.1", "whatwg-mimetype": "^4.0.0", "whatwg-url": "^14.0.0", - "ws": "^8.17.0", + "ws": "^8.18.0", "xml-name-validator": "^5.0.0" }, "engines": { @@ -10328,39 +9512,27 @@ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/json-source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/json-source-map/-/json-source-map-0.6.1.tgz", - "integrity": "sha512-1QoztHPsMQqhDq0hlXY5ZqcEdUzxQEIxgFkKl4WUp2pgShObl+9ovi4kRh2TfvAfxAoHOJ9vIMEqk3k4iex7tg==" - }, - "node_modules/json-stable-stringify": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz", - "integrity": "sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg==", - "dependencies": { - "call-bind": "^1.0.5", - "isarray": "^2.0.5", - "jsonify": "^0.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json-source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/json-source-map/-/json-source-map-0.6.1.tgz", + "integrity": "sha512-1QoztHPsMQqhDq0hlXY5ZqcEdUzxQEIxgFkKl4WUp2pgShObl+9ovi4kRh2TfvAfxAoHOJ9vIMEqk3k4iex7tg==" + }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, + "node_modules/json-stringify-pretty-compact": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-4.0.0.tgz", + "integrity": "sha512-3CNZ2DnrpByG9Nqj6Xo8vqbjT4F6N+tb4Gb28ESAZjYZ5yqvmc56J+/kuIwkaAMOyblTQhUW7PxMkUb8Q36N3Q==" + }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -10373,38 +9545,19 @@ } }, "node_modules/jsoneditor": { - "version": "9.10.4", - "resolved": "https://registry.npmjs.org/jsoneditor/-/jsoneditor-9.10.4.tgz", - "integrity": "sha512-tr7dSARLHM65OQTE81zo5fQAjLzijLl+u/z+pcJaeaFzgkey59Gi8TDCYIejQ/plvm6RLVmuEeqgDhsQdayhiQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/jsoneditor/-/jsoneditor-10.1.0.tgz", + "integrity": "sha512-s+BP/x9Rx9ukNyTjeWCvIAGTEvXwCw6l4NX4mlxXfkK87F1ZgsesHbD9SsyZDLP27dvcFgr9H/j1jy/Bzzk07Q==", "dependencies": { - "ace-builds": "^1.31.1", + "ace-builds": "^1.35.0", "ajv": "^6.12.6", "javascript-natural-sort": "^0.7.1", "jmespath": "^0.16.0", "json-source-map": "^0.6.1", - "jsonrepair": "^3.4.0", + "jsonrepair": "^3.8.0", "mobius1-selectr": "^2.4.13", "picomodal": "^3.0.0", - "vanilla-picker": "^2.12.2" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", - "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "vanilla-picker": "^2.12.3" } }, "node_modules/jsonrepair": { @@ -10431,14 +9584,17 @@ } }, "node_modules/jwt-decode": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", - "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz", + "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==", + "engines": { + "node": ">=18" + } }, "node_modules/kdbush": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-3.0.0.tgz", - "integrity": "sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew==" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-4.0.2.tgz", + "integrity": "sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==" }, "node_modules/keyv": { "version": "4.5.4", @@ -10449,12 +9605,12 @@ "json-buffer": "3.0.1" } }, - "node_modules/klaw-sync": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", - "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", - "dependencies": { - "graceful-fs": "^4.1.11" + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" } }, "node_modules/levn": { @@ -10475,20 +9631,13 @@ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, - "node_modules/local-pkg": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", - "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", - "dev": true, - "dependencies": { - "mlly": "^1.4.2", - "pkg-types": "^1.0.3" - }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "peer": true, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "node": ">=6.11.5" } }, "node_modules/locate-path": { @@ -10547,9 +9696,9 @@ } }, "node_modules/loupe": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", - "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.1.tgz", + "integrity": "sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==", "dev": true, "dependencies": { "get-func-name": "^2.0.1" @@ -10650,11 +9799,12 @@ } }, "node_modules/mapbox-gl": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-1.10.1.tgz", - "integrity": "sha512-0aHt+lFUpYfvh0kMIqXqNXqoYMuhuAsMlw87TbhWrw78Tx2zfuPI0Lx31/YPUgJ+Ire0tzQ4JnuBL7acDNXmMg==", + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-1.13.3.tgz", + "integrity": "sha512-p8lJFEiqmEQlyv+DQxFAOG/XPWN0Wp7j/Psq93Zywz7qt9CcUKFYDBOoOEKzqe6gudHVJY8/Bhqw6VDpX2lSBg==", + "peer": true, "dependencies": { - "@mapbox/geojson-rewind": "^0.5.0", + "@mapbox/geojson-rewind": "^0.5.2", "@mapbox/geojson-types": "^1.0.2", "@mapbox/jsonlint-lines-primitives": "^2.0.2", "@mapbox/mapbox-gl-supported": "^1.5.0", @@ -10668,13 +9818,12 @@ "geojson-vt": "^3.2.1", "gl-matrix": "^3.2.1", "grid-index": "^1.1.0", - "minimist": "^1.2.5", "murmurhash-js": "^1.0.0", "pbf": "^3.2.1", "potpack": "^1.0.1", "quickselect": "^2.0.0", "rw": "^1.3.3", - "supercluster": "^7.0.0", + "supercluster": "^7.1.0", "tinyqueue": "^2.0.3", "vt-pbf": "^3.1.1" }, @@ -10682,6 +9831,89 @@ "node": ">=6.4.0" } }, + "node_modules/maplibre-gl": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/maplibre-gl/-/maplibre-gl-4.7.1.tgz", + "integrity": "sha512-lgL7XpIwsgICiL82ITplfS7IGwrB1OJIw/pCvprDp2dhmSSEBgmPzYRvwYYYvJGJD7fxUv1Tvpih4nZ6VrLuaA==", + "dependencies": { + "@mapbox/geojson-rewind": "^0.5.2", + "@mapbox/jsonlint-lines-primitives": "^2.0.2", + "@mapbox/point-geometry": "^0.1.0", + "@mapbox/tiny-sdf": "^2.0.6", + "@mapbox/unitbezier": "^0.0.1", + "@mapbox/vector-tile": "^1.3.1", + "@mapbox/whoots-js": "^3.1.0", + "@maplibre/maplibre-gl-style-spec": "^20.3.1", + "@types/geojson": "^7946.0.14", + "@types/geojson-vt": "3.2.5", + "@types/mapbox__point-geometry": "^0.1.4", + "@types/mapbox__vector-tile": "^1.3.4", + "@types/pbf": "^3.0.5", + "@types/supercluster": "^7.1.3", + "earcut": "^3.0.0", + "geojson-vt": "^4.0.2", + "gl-matrix": "^3.4.3", + "global-prefix": "^4.0.0", + "kdbush": "^4.0.2", + "murmurhash-js": "^1.0.0", + "pbf": "^3.3.0", + "potpack": "^2.0.0", + "quickselect": "^3.0.0", + "supercluster": "^8.0.1", + "tinyqueue": "^3.0.0", + "vt-pbf": "^3.1.3" + }, + "engines": { + "node": ">=16.14.0", + "npm": ">=8.1.0" + }, + "funding": { + "url": "https://github.com/maplibre/maplibre-gl-js?sponsor=1" + } + }, + "node_modules/maplibre-gl/node_modules/@mapbox/tiny-sdf": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-2.0.6.tgz", + "integrity": "sha512-qMqa27TLw+ZQz5Jk+RcwZGH7BQf5G/TrutJhspsca/3SHwmgKQ1iq+d3Jxz5oysPVYTGP6aXxCo5Lk9Er6YBAA==" + }, + "node_modules/maplibre-gl/node_modules/@mapbox/unitbezier": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.1.tgz", + "integrity": "sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==" + }, + "node_modules/maplibre-gl/node_modules/earcut": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-3.0.0.tgz", + "integrity": "sha512-41Fs7Q/PLq1SDbqjsgcY7GA42T0jvaCNGXgGtsNdvg+Yv8eIu06bxv4/PoREkZ9nMDNwnUSG9OFB9+yv8eKhDg==" + }, + "node_modules/maplibre-gl/node_modules/geojson-vt": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/geojson-vt/-/geojson-vt-4.0.2.tgz", + "integrity": "sha512-AV9ROqlNqoZEIJGfm1ncNjEXfkz2hdFlZf0qkVfmkwdKa8vj7H16YUOT81rJw1rdFhyEDlN2Tds91p/glzbl5A==" + }, + "node_modules/maplibre-gl/node_modules/potpack": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/potpack/-/potpack-2.0.0.tgz", + "integrity": "sha512-Q+/tYsFU9r7xoOJ+y/ZTtdVQwTWfzjbiXBDMM/JKUux3+QPP02iUuIoeBQ+Ot6oEDlC+/PGjB/5A3K7KKb7hcw==" + }, + "node_modules/maplibre-gl/node_modules/quickselect": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-3.0.0.tgz", + "integrity": "sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==" + }, + "node_modules/maplibre-gl/node_modules/supercluster": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-8.0.1.tgz", + "integrity": "sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==", + "dependencies": { + "kdbush": "^4.0.2" + } + }, + "node_modules/maplibre-gl/node_modules/tinyqueue": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-3.0.0.tgz", + "integrity": "sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g==" + }, "node_modules/marked": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", @@ -10700,13 +9932,13 @@ "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==" }, "node_modules/material-react-table": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/material-react-table/-/material-react-table-2.0.5.tgz", - "integrity": "sha512-axRrqa/2QQ+AO3SiJbOtSyemlHX0S03X+IXW72z344d3LT+u/jsKiAmdWMLTN8ARScYMAN5NgrArujiLEmftSQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/material-react-table/-/material-react-table-3.0.1.tgz", + "integrity": "sha512-RP+bnpsOAH5j6zwP04u9HB37fyqbd6mVv9mkT4IUJC3e3gEqixZmkNdJMVM1ZVHoq7yIaM381xf22mpBVe0IaA==", "dependencies": { - "@tanstack/match-sorter-utils": "8.8.4", - "@tanstack/react-table": "8.10.7", - "@tanstack/react-virtual": "3.0.1", + "@tanstack/match-sorter-utils": "8.19.4", + "@tanstack/react-table": "8.20.5", + "@tanstack/react-virtual": "3.10.6", "highlight-words": "1.2.2" }, "engines": { @@ -10717,11 +9949,11 @@ "url": "https://github.com/sponsors/kevinvandy" }, "peerDependencies": { - "@emotion/react": ">=11.11", - "@emotion/styled": ">=11.11", - "@mui/icons-material": ">=5.11", - "@mui/material": ">=5.13", - "@mui/x-date-pickers": ">=6.15.0", + "@emotion/react": ">=11.13", + "@emotion/styled": ">=11.13", + "@mui/icons-material": ">=6", + "@mui/material": ">=6", + "@mui/x-date-pickers": ">=7.15", "react": ">=18.0", "react-dom": ">=18.0" } @@ -10748,7 +9980,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "peer": true }, "node_modules/merge2": { "version": "1.4.1", @@ -10763,6 +9995,7 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -10790,18 +10023,6 @@ "node": ">= 0.6" } }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/mimic-response": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", @@ -10856,33 +10077,30 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/mkdirp-classic": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", "optional": true }, - "node_modules/mlly": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.1.tgz", - "integrity": "sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==", - "dev": true, - "dependencies": { - "acorn": "^8.11.3", - "pathe": "^1.1.2", - "pkg-types": "^1.1.1", - "ufo": "^1.5.3" - } - }, "node_modules/mobius1-selectr": { "version": "2.4.13", "resolved": "https://registry.npmjs.org/mobius1-selectr/-/mobius1-selectr-2.4.13.tgz", "integrity": "sha512-Mk9qDrvU44UUL0EBhbAA1phfQZ7aMZPjwtL7wkpiBzGh8dETGqfsh50mWoX9EkjDlkONlErWXArHCKfoxVg0Bw==" }, "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", "engines": { "node": "*" } @@ -10925,9 +10143,9 @@ } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/mumath": { "version": "3.3.4", @@ -10977,7 +10195,6 @@ "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, "funding": [ { "type": "github", @@ -11032,6 +10249,12 @@ "ms": "^2.1.1" } }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "peer": true + }, "node_modules/neotraverse": { "version": "0.6.18", "resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-0.6.18.tgz", @@ -11185,33 +10408,6 @@ "node": ">=6" } }, - "node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", - "dev": true, - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/number-is-integer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-integer/-/number-is-integer-1.0.1.tgz", @@ -11235,9 +10431,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.12", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.12.tgz", - "integrity": "sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==", + "version": "2.2.13", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.13.tgz", + "integrity": "sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==", "dev": true }, "node_modules/object-assign": { @@ -11264,6 +10460,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, "engines": { "node": ">= 0.4" } @@ -11318,23 +10515,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.hasown": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", - "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", - "dev": true, - "dependencies": { - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/object.omit": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-3.0.0.tgz", @@ -11371,36 +10551,6 @@ "wrappy": "1" } }, - "node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", - "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/openapi-path-templating": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/openapi-path-templating/-/openapi-path-templating-1.6.0.tgz", @@ -11440,14 +10590,6 @@ "node": ">= 0.8.0" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -11476,6 +10618,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -11509,186 +10657,64 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse-rect": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/parse-rect/-/parse-rect-1.2.0.tgz", - "integrity": "sha512-4QZ6KYbnE6RTwg9E0HpLchUM9EZt6DnDxajFZZDSV4p/12ZJEvPO702DZpGvRYEPo00yKDys7jASi+/w7aO8LA==", - "dependencies": { - "pick-by-alias": "^1.2.0" - } - }, - "node_modules/parse-svg-path": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/parse-svg-path/-/parse-svg-path-0.1.2.tgz", - "integrity": "sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==" - }, - "node_modules/parse-unit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-unit/-/parse-unit-1.0.1.tgz", - "integrity": "sha512-hrqldJHokR3Qj88EIlV/kAyAi/G5R2+R56TBANxNMy0uPlYcttx0jnMW6Yx5KsKPSbC3KddM/7qQm3+0wEXKxg==" - }, - "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dev": true, - "dependencies": { - "entities": "^4.4.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/patch-package": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.0.tgz", - "integrity": "sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA==", - "dependencies": { - "@yarnpkg/lockfile": "^1.1.0", - "chalk": "^4.1.2", - "ci-info": "^3.7.0", - "cross-spawn": "^7.0.3", - "find-yarn-workspace-root": "^2.0.0", - "fs-extra": "^9.0.0", - "json-stable-stringify": "^1.0.2", - "klaw-sync": "^6.0.0", - "minimist": "^1.2.6", - "open": "^7.4.2", - "rimraf": "^2.6.3", - "semver": "^7.5.3", - "slash": "^2.0.0", - "tmp": "^0.0.33", - "yaml": "^2.2.2" - }, - "bin": { - "patch-package": "index.js" - }, - "engines": { - "node": ">=14", - "npm": ">5" - } - }, - "node_modules/patch-package/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/patch-package/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/patch-package/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/parse-imports": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/parse-imports/-/parse-imports-2.2.1.tgz", + "integrity": "sha512-OL/zLggRp8mFhKL0rNORUTR4yBYujK/uU+xZL+/0Rgm2QE4nLO9v8PzEweSJEbMGKmDRjJE4R3IMJlL2di4JeQ==", + "dev": true, "dependencies": { - "color-name": "~1.1.4" + "es-module-lexer": "^1.5.3", + "slashes": "^3.0.12" }, "engines": { - "node": ">=7.0.0" + "node": ">= 18" } }, - "node_modules/patch-package/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/patch-package/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/patch-package/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", + "node_modules/parse-rect": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parse-rect/-/parse-rect-1.2.0.tgz", + "integrity": "sha512-4QZ6KYbnE6RTwg9E0HpLchUM9EZt6DnDxajFZZDSV4p/12ZJEvPO702DZpGvRYEPo00yKDys7jASi+/w7aO8LA==", "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "pick-by-alias": "^1.2.0" } }, - "node_modules/patch-package/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } + "node_modules/parse-svg-path": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/parse-svg-path/-/parse-svg-path-0.1.2.tgz", + "integrity": "sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==" }, - "node_modules/patch-package/node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "engines": { - "node": ">=6" - } + "node_modules/parse-unit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-unit/-/parse-unit-1.0.1.tgz", + "integrity": "sha512-hrqldJHokR3Qj88EIlV/kAyAi/G5R2+R56TBANxNMy0uPlYcttx0jnMW6Yx5KsKPSbC3KddM/7qQm3+0wEXKxg==" }, - "node_modules/patch-package/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/patch-package/node_modules/yaml": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", - "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", - "bin": { - "yaml": "bin.mjs" + "entities": "^4.4.0" }, - "engines": { - "node": ">= 14" + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, "node_modules/path-exists": { @@ -11703,6 +10729,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -11711,6 +10738,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, "engines": { "node": ">=8" } @@ -11720,6 +10748,28 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -11735,12 +10785,12 @@ "dev": true }, "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", "dev": true, "engines": { - "node": "*" + "node": ">= 14.16" } }, "node_modules/pbf": { @@ -11774,6 +10824,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "engines": { "node": ">=8.6" }, @@ -11791,34 +10842,26 @@ "resolved": "https://registry.npmjs.org/pikaday/-/pikaday-1.8.2.tgz", "integrity": "sha512-TNtsE+34BIax3WtkB/qqu5uepV1McKYEgvL3kWzU7aqPCpMEN6rBF3AOwu4WCwAealWlBGobXny/9kJb49C1ew==" }, - "node_modules/pkg-types": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.2.0.tgz", - "integrity": "sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==", - "dev": true, - "dependencies": { - "confbox": "^0.1.7", - "mlly": "^1.7.1", - "pathe": "^1.1.2" - } - }, "node_modules/plotly.js": { - "version": "2.26.1", - "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.26.1.tgz", - "integrity": "sha512-aZgY5NEbuwgsnbTNmMy3BXPkx/QK+wuSnnEWvEeeUnhEZK+fTKazx6zCsbImLPinOvQtTdOXH4LhqrTYcYd69g==", + "version": "2.35.2", + "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.35.2.tgz", + "integrity": "sha512-s0knlWzRvLQXxzf3JQ6qbm8FpwKuMjkr+6r04f8/yCEByAQ+I0jkUzY/hSGRGb+u7iljTh9hgpEiiJP90vjyeQ==", "dependencies": { - "@plotly/d3": "3.8.1", + "@plotly/d3": "3.8.2", "@plotly/d3-sankey": "0.7.2", "@plotly/d3-sankey-circular": "0.33.1", - "@turf/area": "^6.4.0", - "@turf/bbox": "^6.4.0", - "@turf/centroid": "^6.0.2", + "@plotly/mapbox-gl": "1.13.4", + "@turf/area": "^7.1.0", + "@turf/bbox": "^7.1.0", + "@turf/centroid": "^7.1.0", + "base64-arraybuffer": "^1.0.2", "canvas-fit": "^1.5.0", "color-alpha": "1.0.4", "color-normalize": "1.5.0", - "color-parse": "1.3.8", + "color-parse": "2.0.0", "color-rgba": "2.1.1", "country-regex": "^1.1.0", + "css-loader": "^7.1.2", "d3-force": "^1.2.1", "d3-format": "^1.4.5", "d3-geo": "^1.12.1", @@ -11829,26 +10872,26 @@ "d3-time-format": "^2.2.3", "fast-isnumeric": "^1.1.4", "gl-mat4": "^1.2.0", - "gl-text": "^1.3.1", - "glslify": "^7.1.1", + "gl-text": "^1.4.0", "has-hover": "^1.0.1", "has-passive-events": "^1.0.0", "is-mobile": "^4.0.0", - "mapbox-gl": "1.10.1", + "maplibre-gl": "^4.5.2", "mouse-change": "^1.4.0", "mouse-event-offset": "^3.0.2", "mouse-wheel": "^1.2.0", "native-promise-only": "^0.8.1", "parse-svg-path": "^0.1.2", "point-in-polygon": "^1.1.0", - "polybooljs": "^1.2.0", + "polybooljs": "^1.2.2", "probe-image-size": "^7.2.3", "regl": "npm:@plotly/regl@^2.1.2", "regl-error2d": "^2.0.12", - "regl-line2d": "^3.1.2", - "regl-scatter2d": "^3.2.9", + "regl-line2d": "^3.1.3", + "regl-scatter2d": "^3.3.1", "regl-splom": "^1.0.14", "strongly-connected-components": "^1.0.1", + "style-loader": "^4.0.0", "superscript-text": "^1.0.0", "svg-path-sdf": "^1.1.3", "tinycolor2": "^1.4.2", @@ -11892,7 +10935,6 @@ "version": "8.4.47", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", - "dev": true, "funding": [ { "type": "opencollective", @@ -11916,6 +10958,78 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", + "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", + "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, "node_modules/potpack": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/potpack/-/potpack-1.0.2.tgz", @@ -11957,9 +11071,9 @@ } }, "node_modules/prettier": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", - "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -12094,12 +11208,6 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, "node_modules/pump": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", @@ -12167,18 +11275,18 @@ "integrity": "sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==" }, "node_modules/ramda": { - "version": "0.29.0", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.29.0.tgz", - "integrity": "sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==", + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", + "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", "funding": { "type": "opencollective", "url": "https://opencollective.com/ramda" } }, "node_modules/ramda-adjunct": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-4.1.1.tgz", - "integrity": "sha512-BnCGsZybQZMDGram9y7RiryoRHS5uwx8YeGuUeDKuZuvK38XO6JJfmK85BwRWAKFA6pZ5nZBO/HBFtExVaf31w==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", + "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", "engines": { "node": ">=0.10.3" }, @@ -12187,7 +11295,7 @@ "url": "https://opencollective.com/ramda-adjunct" }, "peerDependencies": { - "ramda": ">= 0.29.0" + "ramda": ">= 0.30.0" } }, "node_modules/randexp": { @@ -12225,6 +11333,12 @@ "rc": "cli.js" } }, + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "optional": true + }, "node_modules/rc/node_modules/strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", @@ -12235,9 +11349,9 @@ } }, "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "dependencies": { "loose-envify": "^1.1.0" }, @@ -12357,15 +11471,15 @@ } }, "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "dependencies": { "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" + "scheduler": "^0.23.2" }, "peerDependencies": { - "react": "^18.2.0" + "react": "^18.3.1" } }, "node_modules/react-dropzone": { @@ -12397,18 +11511,18 @@ } }, "node_modules/react-hook-form": { - "version": "7.47.0", - "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.47.0.tgz", - "integrity": "sha512-F/TroLjTICipmHeFlMrLtNLceO2xr1jU3CyiNla5zdwsGUGu2UOxxR4UyJgLlhMwLW/Wzp4cpJ7CPfgJIeKdSg==", + "version": "7.53.0", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.53.0.tgz", + "integrity": "sha512-M1n3HhqCww6S2hxLxciEXy2oISPnAzxY7gvwVPrtlczTM/1dDadXgUxDpHMrMTblDOcm/AXtXxHwZ3jpg1mqKQ==", "engines": { - "node": ">=12.22.0" + "node": ">=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/react-hook-form" }, "peerDependencies": { - "react": "^16.8.0 || ^17 || ^18" + "react": "^16.8.0 || ^17 || ^18 || ^19" } }, "node_modules/react-html-attributes": { @@ -12420,11 +11534,11 @@ } }, "node_modules/react-i18next": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-13.2.2.tgz", - "integrity": "sha512-+nFUkbRByFwnrfDcYqvzBuaeZb+nACHx+fAWN/pZMddWOCJH5hoc21+Sa/N/Lqi6ne6/9wC/qRGOoQhJa6IkEQ==", + "version": "15.0.2", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-15.0.2.tgz", + "integrity": "sha512-z0W3/RES9Idv3MmJUcf0mDNeeMOUXe+xoL0kPfQPbDoZHmni/XsIoq5zgT2MCFUiau283GuBUK578uD/mkAbLQ==", "dependencies": { - "@babel/runtime": "^7.22.5", + "@babel/runtime": "^7.25.0", "html-parse-stringify": "^3.0.1" }, "peerDependencies": { @@ -12656,9 +11770,9 @@ } }, "node_modules/react-use": { - "version": "17.4.0", - "resolved": "https://registry.npmjs.org/react-use/-/react-use-17.4.0.tgz", - "integrity": "sha512-TgbNTCA33Wl7xzIJegn1HndB4qTS9u03QUwyNycUnXaweZkE4Kq2SB+Yoxx8qbshkZGYBDvUXbXWRUmQDcZZ/Q==", + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/react-use/-/react-use-17.5.1.tgz", + "integrity": "sha512-LG/uPEVRflLWMwi3j/sZqR00nF6JGqTTDblkXK2nzXsIvij06hXl1V/MZIlwj1OKIQUtlh1l9jK8gLsRyCQxMg==", "dependencies": { "@types/js-cookie": "^2.2.6", "@xobotyi/scrollbar-width": "^1.9.5", @@ -12666,7 +11780,7 @@ "fast-deep-equal": "^3.1.3", "fast-shallow-equal": "^1.0.0", "js-cookie": "^2.2.1", - "nano-css": "^5.3.1", + "nano-css": "^5.6.2", "react-universal-interface": "^0.6.2", "resize-observer-polyfill": "^1.5.1", "screenfull": "^5.1.0", @@ -12676,8 +11790,8 @@ "tslib": "^2.1.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "*", + "react-dom": "*" } }, "node_modules/react-use/node_modules/@types/js-cookie": { @@ -12691,18 +11805,18 @@ "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==" }, "node_modules/react-virtualized-auto-sizer": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.20.tgz", - "integrity": "sha512-OdIyHwj4S4wyhbKHOKM1wLSj/UDXm839Z3Cvfg2a9j+He6yDa6i5p0qQvEiCnyQlGO/HyfSnigQwuxvYalaAXA==", + "version": "1.0.24", + "resolved": "https://registry.npmjs.org/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.24.tgz", + "integrity": "sha512-3kCn7N9NEb3FlvJrSHWGQ4iVl+ydQObq2fHMn12i5wbtm74zHOPhz/i64OL3c1S1vi9i2GXtZqNqUJTQ+BnNfg==", "peerDependencies": { - "react": "^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0-rc", - "react-dom": "^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0-rc" + "react": "^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0", + "react-dom": "^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0" } }, "node_modules/react-window": { - "version": "1.8.9", - "resolved": "https://registry.npmjs.org/react-window/-/react-window-1.8.9.tgz", - "integrity": "sha512-+Eqx/fj1Aa5WnhRfj9dJg4VYATGwIUP2ItwItiJ6zboKWA6EX3lYDAXfGF2hyNqplEprhbtjbipiADEcwQ823Q==", + "version": "1.8.10", + "resolved": "https://registry.npmjs.org/react-window/-/react-window-1.8.10.tgz", + "integrity": "sha512-Y0Cx+dnU6NLa5/EvoHukUD0BklJ8qITCtVEPY1C/nL8wwoZ0b5aEw8Ff1dOVHw7fCzMt55XfJDd8S8W8LCaUCg==", "dependencies": { "@babel/runtime": "^7.0.0", "memoize-one": ">=3.1.1 <6" @@ -12947,9 +12061,9 @@ } }, "node_modules/remove-accents": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz", - "integrity": "sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==" + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.5.0.tgz", + "integrity": "sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==" }, "node_modules/repeat-string": { "version": "1.6.1", @@ -13054,6 +12168,41 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rollup": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.5.tgz", + "integrity": "sha512-WoinX7GeQOFMGznEcWA1WrTQCd/tpEbMkc3nuMs9BT0CPjMdSjPMTVClwWd4pgSQwJdP65SK9mTCNvItlr5o7w==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.22.5", + "@rollup/rollup-android-arm64": "4.22.5", + "@rollup/rollup-darwin-arm64": "4.22.5", + "@rollup/rollup-darwin-x64": "4.22.5", + "@rollup/rollup-linux-arm-gnueabihf": "4.22.5", + "@rollup/rollup-linux-arm-musleabihf": "4.22.5", + "@rollup/rollup-linux-arm64-gnu": "4.22.5", + "@rollup/rollup-linux-arm64-musl": "4.22.5", + "@rollup/rollup-linux-powerpc64le-gnu": "4.22.5", + "@rollup/rollup-linux-riscv64-gnu": "4.22.5", + "@rollup/rollup-linux-s390x-gnu": "4.22.5", + "@rollup/rollup-linux-x64-gnu": "4.22.5", + "@rollup/rollup-linux-x64-musl": "4.22.5", + "@rollup/rollup-win32-arm64-msvc": "4.22.5", + "@rollup/rollup-win32-ia32-msvc": "4.22.5", + "@rollup/rollup-win32-x64-msvc": "4.22.5", + "fsevents": "~2.3.2" + } + }, "node_modules/rrweb-cssom": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", @@ -13180,6 +12329,24 @@ "loose-envify": "^1.1.0" } }, + "node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/screenfull": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/screenfull/-/screenfull-5.2.0.tgz", @@ -13213,10 +12380,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "peer": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -13252,6 +12429,28 @@ "node": ">=6.9" } }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -13278,6 +12477,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -13289,6 +12489,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, "engines": { "node": ">=8" } @@ -13411,6 +12612,52 @@ "node": ">=8" } }, + "node_modules/slashes": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/slashes/-/slashes-3.0.12.tgz", + "integrity": "sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==", + "dev": true + }, + "node_modules/sort-asc": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/sort-asc/-/sort-asc-0.2.0.tgz", + "integrity": "sha512-umMGhjPeHAI6YjABoSTrFp2zaBtXBej1a0yKkuMUyjjqu6FJsTF+JYwCswWDg+zJfk/5npWUUbd33HH/WLzpaA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-desc": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/sort-desc/-/sort-desc-0.2.0.tgz", + "integrity": "sha512-NqZqyvL4VPW+RAxxXnB8gvE1kyikh8+pR+T+CXLksVRN9eiQqkQlPwqWYU0mF9Jm7UnctShlxLyAt1CaBOTL1w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-object": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sort-object/-/sort-object-3.0.3.tgz", + "integrity": "sha512-nK7WOY8jik6zaG9CRwZTaD5O7ETWDLZYMM12pqY8htll+7dYeqGfEUPcUBHOpSJg2vJOrvFIY2Dl5cX2ih1hAQ==", + "dependencies": { + "bytewise": "^1.1.0", + "get-value": "^2.0.2", + "is-extendable": "^0.1.1", + "sort-asc": "^0.2.0", + "sort-desc": "^0.2.0", + "union-value": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-object/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -13423,7 +12670,25 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "peer": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -13453,11 +12718,34 @@ "spdx-license-ids": "^3.0.0" } }, - "node_modules/spdx-license-ids": { - "version": "3.0.20", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", - "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", - "dev": true + "node_modules/spdx-license-ids": { + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", + "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", + "dev": true + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/split.js": { "version": "1.6.5", @@ -13584,6 +12872,71 @@ "parenthesis": "^3.1.5" } }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/string.prototype.matchall": { "version": "4.0.11", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", @@ -13610,6 +12963,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, "node_modules/string.prototype.trim": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", @@ -13671,16 +13034,17 @@ "node": ">=8" } }, - "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "engines": { - "node": ">=12" + "dependencies": { + "ansi-regex": "^5.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8" } }, "node_modules/strip-indent": { @@ -13707,29 +13071,26 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strip-literal": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz", - "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==", - "dev": true, - "dependencies": { - "js-tokens": "^9.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/strip-literal/node_modules/js-tokens": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz", - "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==", - "dev": true - }, "node_modules/strongly-connected-components": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/strongly-connected-components/-/strongly-connected-components-1.0.1.tgz", "integrity": "sha512-i0TFx4wPcO0FwX+4RkLJi1MxmcTv90jNZgxMu9XRnMXMeFUY1VJlIoXpZunPUvUUqbCT1pg5PEkFqqpcaElNaA==" }, + "node_modules/style-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-4.0.0.tgz", + "integrity": "sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA==", + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.27.0" + } + }, "node_modules/stylis": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", @@ -13743,6 +13104,11 @@ "kdbush": "^3.0.0" } }, + "node_modules/supercluster/node_modules/kdbush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-3.0.0.tgz", + "integrity": "sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew==" + }, "node_modules/superscript-text": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/superscript-text/-/superscript-text-1.0.0.tgz", @@ -13838,48 +13204,23 @@ "node": ">=0.10.0" } }, - "node_modules/swagger-client/node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, - "node_modules/swagger-client/node_modules/ramda-adjunct": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", - "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", - "engines": { - "node": ">=0.10.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda-adjunct" - }, - "peerDependencies": { - "ramda": ">= 0.30.0" - } - }, "node_modules/swagger-ui-react": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-5.9.0.tgz", - "integrity": "sha512-j45ceuGHMRmI8nhOaG71VeQwrPutFHDq6QhgrxOmf4BRMOdOQgVY1POQY9ksnXZtskbD9J2NHURs4BLEDIs8gA==", + "version": "5.17.14", + "resolved": "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-5.17.14.tgz", + "integrity": "sha512-mCXerZrbcn4ftPYifUF0+iKIRTHoVCv0HcJc/sXl9nCe3oeWdsjmOWVqKabzzAkAa0NwsbKNJFv2UL/Ivnf6VQ==", "dependencies": { - "@babel/runtime-corejs3": "^7.23.1", - "@braintree/sanitize-url": "=6.0.4", + "@babel/runtime-corejs3": "^7.24.5", + "@braintree/sanitize-url": "=7.0.2", "base64-js": "^1.5.1", - "classnames": "^2.3.1", + "classnames": "^2.5.1", "css.escape": "1.5.1", "deep-extend": "0.6.0", - "dompurify": "=3.0.6", + "dompurify": "=3.1.4", "ieee754": "^1.2.1", "immutable": "^3.x.x", "js-file-download": "^0.4.12", "js-yaml": "=4.1.0", "lodash": "^4.17.21", - "patch-package": "^8.0.0", "prop-types": "^15.8.1", "randexp": "^0.5.3", "randombytes": "^2.1.0", @@ -13888,29 +13229,29 @@ "react-immutable-proptypes": "2.2.0", "react-immutable-pure-component": "^2.2.0", "react-inspector": "^6.0.1", - "react-redux": "^8.1.2", + "react-redux": "^9.1.2", "react-syntax-highlighter": "^15.5.0", - "redux": "^4.1.2", + "redux": "^5.0.1", "redux-immutable": "^4.0.0", "remarkable": "^2.0.1", - "reselect": "^4.1.8", + "reselect": "^5.1.0", "serialize-error": "^8.1.0", "sha.js": "^2.4.11", - "swagger-client": "^3.22.3", + "swagger-client": "^3.28.1", "url-parse": "^1.5.10", "xml": "=1.0.1", "xml-but-prettier": "^1.0.1", "zenscroll": "^4.0.2" }, "peerDependencies": { - "react": ">=17.0.0", - "react-dom": ">=17.0.0" + "react": ">=16.8.0 <19", + "react-dom": ">=16.8.0 <19" } }, "node_modules/swagger-ui-react/node_modules/dompurify": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.6.tgz", - "integrity": "sha512-ilkD8YEnnGh1zJ240uJsW7AzE+2qpbOUYjacomn3AvJ6J4JhKGSZ2nh4wUIXPZrEPppaCLx5jFe8T89Rk8tQ7w==" + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.4.tgz", + "integrity": "sha512-2gnshi6OshmuKil8rMZuQCGiUF3cUxHY3NGDzUAdUx/NPEe5DVnO8BDoAQouvgwnx0R/+a6jUn36Z0FSdq8vww==" }, "node_modules/swagger-ui-react/node_modules/immutable": { "version": "3.8.2", @@ -13920,6 +13261,33 @@ "node": ">=0.10.0" } }, + "node_modules/swagger-ui-react/node_modules/react-redux": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz", + "integrity": "sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w==", + "dependencies": { + "@types/use-sync-external-store": "^0.0.3", + "use-sync-external-store": "^1.0.0" + }, + "peerDependencies": { + "@types/react": "^18.2.25", + "react": "^18.0", + "redux": "^5.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "redux": { + "optional": true + } + } + }, + "node_modules/swagger-ui-react/node_modules/redux": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==" + }, "node_modules/swagger-ui-react/node_modules/redux-immutable": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/redux-immutable/-/redux-immutable-4.0.0.tgz", @@ -13928,6 +13296,11 @@ "immutable": "^3.8.1 || ^4.0.0-rc.1" } }, + "node_modules/swagger-ui-react/node_modules/reselect": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz", + "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==" + }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -13935,9 +13308,9 @@ "dev": true }, "node_modules/synckit": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", - "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", + "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==", "dev": true, "dependencies": { "@pkgr/core": "^0.1.0", @@ -13950,6 +13323,15 @@ "url": "https://opencollective.com/unts" } }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "peer": true, + "engines": { + "node": ">=6" + } + }, "node_modules/tar-fs": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", @@ -14003,40 +13385,90 @@ "node": ">= 6" } }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, + "node_modules/terser": { + "version": "5.34.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.34.1.tgz", + "integrity": "sha512-FsJZ7iZLd/BXkz+4xrRTGJ26o/6VTjQytUk8b8OxkwcD2I+79VPJlz7qss1+zE7h8GNIScFqXcDyJ/KqBYZFVA==", + "peer": true, "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "peer": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } } }, - "node_modules/test-exclude/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/test-exclude": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", + "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "@istanbuljs/schema": "^0.1.2", + "glob": "^10.4.1", + "minimatch": "^9.0.4" }, "engines": { - "node": "*" + "node": ">=18" + } + }, + "node_modules/test-exclude/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/text-table": { @@ -14084,13 +13516,58 @@ "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" }, + "node_modules/tinyexec": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.0.tgz", + "integrity": "sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==", + "dev": true + }, + "node_modules/tinyglobby": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.6.tgz", + "integrity": "sha512-NbBoFBpqfcgd1tCiO8Lkfdk+xrA7mlLR9zgvZcZWQQwU63XAfUePyd6wZBaU93Hqw347lHnwFzttAkemHzzz4g==", + "dev": true, + "dependencies": { + "fdir": "^6.3.0", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.3.0.tgz", + "integrity": "sha512-QOnuT+BOtivR77wYvCWHfGt9s4Pz1VIMbD463vegT5MLqNXy8rYFT/lPVEqf/bhYeT6qmqrNHhsX+rWwe3rOCQ==", + "dev": true, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/tinypool": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz", - "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.1.tgz", + "integrity": "sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==", "dev": true, "engines": { - "node": ">=14.0.0" + "node": "^18.0.0 || >=20.0.0" } }, "node_modules/tinyqueue": { @@ -14098,26 +13575,42 @@ "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz", "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==" }, + "node_modules/tinyrainbow": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", + "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/tinyspy": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", - "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", + "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", "dev": true, "engines": { "node": ">=14.0.0" } }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "node_modules/tldts": { + "version": "6.1.48", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.48.tgz", + "integrity": "sha512-SPbnh1zaSzi/OsmHb1vrPNnYuwJbdWjwo5TbBYYMlTtH3/1DSb41t8bcSxkwDmmbG2q6VLPVvQc7Yf23T+1EEw==", + "dev": true, "dependencies": { - "os-tmpdir": "~1.0.2" + "tldts-core": "^6.1.48" }, - "engines": { - "node": ">=0.6.0" + "bin": { + "tldts": "bin/cli.js" } }, + "node_modules/tldts-core": { + "version": "6.1.48", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.48.tgz", + "integrity": "sha512-3gD9iKn/n2UuFH1uilBviK9gvTNT6iYwdqrj1Vr5mh8FuelvpRNaYVH4pNYqUgOGU4aAdL9X35eLuuj0gRsx+A==", + "dev": true + }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -14143,6 +13636,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -14178,27 +13672,15 @@ } }, "node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.0.0.tgz", + "integrity": "sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==", "dev": true, "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" + "tldts": "^6.1.32" }, "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" + "node": ">=16" } }, "node_modules/tr46": { @@ -14316,15 +13798,6 @@ "node": ">= 0.8.0" } }, - "node_modules/type-detect": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", - "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", @@ -14424,18 +13897,17 @@ } }, "node_modules/types-ramda": { - "version": "0.29.10", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.29.10.tgz", - "integrity": "sha512-5PJiW/eiTPyXXBYGZOYGezMl6qj7keBiZheRwfjJZY26QPHsNrjfJnz0mru6oeqqoTHOni893Jfd6zyUXfQRWg==", - "dev": true, + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", + "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", "dependencies": { "ts-toolbelt": "^9.6.0" } }, "node_modules/typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -14445,6 +13917,19 @@ "node": ">=14.17" } }, + "node_modules/typewise": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typewise/-/typewise-1.0.3.tgz", + "integrity": "sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ==", + "dependencies": { + "typewise-core": "^1.2.0" + } + }, + "node_modules/typewise-core": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/typewise-core/-/typewise-core-1.2.0.tgz", + "integrity": "sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg==" + }, "node_modules/ua-parser-js": { "version": "0.7.39", "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.39.tgz", @@ -14470,12 +13955,6 @@ "node": "*" } }, - "node_modules/ufo": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", - "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==", - "dev": true - }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -14491,12 +13970,31 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/union-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "engines": { - "node": ">= 10.0.0" + "node": ">=0.10.0" } }, "node_modules/unquote": { @@ -14510,9 +14008,9 @@ "integrity": "sha512-08/DA66UF65OlpUDIQtbJyrqTR0jTAlJ+jsnkQ4jxR7+K5g5YG1APZKQSMCE1vqqmD+2pv6+IdEjmopFatacvg==" }, "node_modules/update-browserslist-db": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", "funding": [ { "type": "opencollective", @@ -14528,8 +14026,8 @@ } ], "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" + "escalade": "^3.2.0", + "picocolors": "^1.1.0" }, "bin": { "update-browserslist-db": "cli.js" @@ -14607,402 +14105,151 @@ }, "node_modules/use-sync-external-store": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", - "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/use-undo": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/use-undo/-/use-undo-1.1.1.tgz", - "integrity": "sha512-2NNpJv7TDQpyETgRTG5I/CsABX5nhExpx8PEhWiDsnW9C5BA6Xnn8G9u/lPeg3+JsBrBtUx8/5bMbGmpnWz1Cw==", - "peerDependencies": { - "react": ">=16.8.6", - "react-dom": ">=16.8.6" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/vanilla-picker": { - "version": "2.12.3", - "resolved": "https://registry.npmjs.org/vanilla-picker/-/vanilla-picker-2.12.3.tgz", - "integrity": "sha512-qVkT1E7yMbUsB2mmJNFmaXMWE2hF8ffqzMMwe9zdAikd8u2VfnsVY2HQcOUi2F38bgbxzlJBEdS1UUhOXdF9GQ==", - "dependencies": { - "@sphinxxxx/color-conversion": "^2.2.2" - } - }, - "node_modules/vite": { - "version": "5.4.8", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.8.tgz", - "integrity": "sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==", - "dev": true, - "dependencies": { - "esbuild": "^0.21.3", - "postcss": "^8.4.43", - "rollup": "^4.20.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/vite-node": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.6.0.tgz", - "integrity": "sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==", - "dev": true, - "dependencies": { - "cac": "^6.7.14", - "debug": "^4.3.4", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", - "vite": "^5.0.0" - }, - "bin": { - "vite-node": "vite-node.mjs" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/vite/node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.0.tgz", - "integrity": "sha512-/IZQvg6ZR0tAkEi4tdXOraQoWeJy9gbQ/cx4I7k9dJaCk9qrXEcdouxRVz5kZXt5C2bQ9pILoAA+KB4C/d3pfw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-android-arm64": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.0.tgz", - "integrity": "sha512-ETHi4bxrYnvOtXeM7d4V4kZWixib2jddFacJjsOjwbgYSRsyXYtZHC4ht134OsslPIcnkqT+TKV4eU8rNBKyyQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.0.tgz", - "integrity": "sha512-ZWgARzhSKE+gVUX7QWaECoRQsPwaD8ZR0Oxb3aUpzdErTvlEadfQpORPXkKSdKbFci9v8MJfkTtoEHnnW9Ulng==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-darwin-x64": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.0.tgz", - "integrity": "sha512-h0ZAtOfHyio8Az6cwIGS+nHUfRMWBDO5jXB8PQCARVF6Na/G6XS2SFxDl8Oem+S5ZsHQgtsI7RT4JQnI1qrlaw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.0.tgz", - "integrity": "sha512-9pxQJSPwFsVi0ttOmqLY4JJ9pg9t1gKhK0JDbV1yUEETSx55fdyCjt39eBQ54OQCzAF0nVGO6LfEH1KnCPvelA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.0.tgz", - "integrity": "sha512-YJ5Ku5BmNJZb58A4qSEo3JlIG4d3G2lWyBi13ABlXzO41SsdnUKi3HQHe83VpwBVG4jHFTW65jOQb8qyoR+qzg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.0.tgz", - "integrity": "sha512-U4G4u7f+QCqHlVg1Nlx+qapZy+QoG+NV6ux+upo/T7arNGwKvKP2kmGM4W5QTbdewWFgudQxi3kDNST9GT1/mg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.0.tgz", - "integrity": "sha512-aQpNlKmx3amwkA3a5J6nlXSahE1ijl0L9KuIjVOUhfOh7uw2S4piR3mtpxpRtbnK809SBtyPsM9q15CPTsY7HQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.0.tgz", - "integrity": "sha512-9fx6Zj/7vve/Fp4iexUFRKb5+RjLCff6YTRQl4CoDhdMfDoobWmhAxQWV3NfShMzQk1Q/iCnageFyGfqnsmeqQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.0.tgz", - "integrity": "sha512-VWQiCcN7zBgZYLjndIEh5tamtnKg5TGxyZPWcN9zBtXBwfcGSZ5cHSdQZfQH/GB4uRxk0D3VYbOEe/chJhPGLQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.0.tgz", - "integrity": "sha512-EHmPnPWvyYqncObwqrosb/CpH3GOjE76vWVs0g4hWsDRUVhg61hBmlVg5TPXqF+g+PvIbqkC7i3h8wbn4Gp2Fg==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.0.tgz", - "integrity": "sha512-tsSWy3YQzmpjDKnQ1Vcpy3p9Z+kMFbSIesCdMNgLizDWFhrLZIoN21JSq01g+MZMDFF+Y1+4zxgrlqPjid5ohg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.0.tgz", - "integrity": "sha512-anr1Y11uPOQrpuU8XOikY5lH4Qu94oS6j0xrulHk3NkLDq19MlX8Ng/pVipjxBJ9a2l3+F39REZYyWQFkZ4/fw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.0.tgz", - "integrity": "sha512-7LB+Bh+Ut7cfmO0m244/asvtIGQr5pG5Rvjz/l1Rnz1kDzM02pSX9jPaS0p+90H5I1x4d1FkCew+B7MOnoatNw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", + "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } }, - "node_modules/vite/node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.0.tgz", - "integrity": "sha512-+3qZ4rer7t/QsC5JwMpcvCVPRcJt1cJrYS/TMJZzXIJbxWFQEVhrIc26IhB+5Z9fT9umfVc+Es2mOZgl+7jdJQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] + "node_modules/use-undo": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/use-undo/-/use-undo-1.1.1.tgz", + "integrity": "sha512-2NNpJv7TDQpyETgRTG5I/CsABX5nhExpx8PEhWiDsnW9C5BA6Xnn8G9u/lPeg3+JsBrBtUx8/5bMbGmpnWz1Cw==", + "peerDependencies": { + "react": ">=16.8.6", + "react-dom": ">=16.8.6" + } }, - "node_modules/vite/node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.0.tgz", - "integrity": "sha512-YdicNOSJONVx/vuPkgPTyRoAPx3GbknBZRCOUkK84FJ/YTfs/F0vl/YsMscrB6Y177d+yDRcj+JWMPMCgshwrA==", - "cpu": [ - "x64" + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] + "bin": { + "uuid": "dist/bin/uuid" + } }, - "node_modules/vite/node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true + "node_modules/vanilla-picker": { + "version": "2.12.3", + "resolved": "https://registry.npmjs.org/vanilla-picker/-/vanilla-picker-2.12.3.tgz", + "integrity": "sha512-qVkT1E7yMbUsB2mmJNFmaXMWE2hF8ffqzMMwe9zdAikd8u2VfnsVY2HQcOUi2F38bgbxzlJBEdS1UUhOXdF9GQ==", + "dependencies": { + "@sphinxxxx/color-conversion": "^2.2.2" + } }, - "node_modules/vite/node_modules/rollup": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.0.tgz", - "integrity": "sha512-W21MUIFPZ4+O2Je/EU+GP3iz7PH4pVPUXSbEZdatQnxo29+3rsUjgrJmzuAZU24z7yRAnFN6ukxeAhZh/c7hzg==", + "node_modules/vite": { + "version": "5.4.8", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.8.tgz", + "integrity": "sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==", "dev": true, "dependencies": { - "@types/estree": "1.0.5" + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" }, "bin": { - "rollup": "dist/bin/rollup" + "vite": "bin/vite.js" }, "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.22.0", - "@rollup/rollup-android-arm64": "4.22.0", - "@rollup/rollup-darwin-arm64": "4.22.0", - "@rollup/rollup-darwin-x64": "4.22.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.22.0", - "@rollup/rollup-linux-arm-musleabihf": "4.22.0", - "@rollup/rollup-linux-arm64-gnu": "4.22.0", - "@rollup/rollup-linux-arm64-musl": "4.22.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.22.0", - "@rollup/rollup-linux-riscv64-gnu": "4.22.0", - "@rollup/rollup-linux-s390x-gnu": "4.22.0", - "@rollup/rollup-linux-x64-gnu": "4.22.0", - "@rollup/rollup-linux-x64-musl": "4.22.0", - "@rollup/rollup-win32-arm64-msvc": "4.22.0", - "@rollup/rollup-win32-ia32-msvc": "4.22.0", - "@rollup/rollup-win32-x64-msvc": "4.22.0", - "fsevents": "~2.3.2" + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } } }, - "node_modules/vitest": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.6.0.tgz", - "integrity": "sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==", + "node_modules/vite-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.1.tgz", + "integrity": "sha512-N/mGckI1suG/5wQI35XeR9rsMsPqKXzq1CdUndzVstBj/HvyxxGctwnK6WX43NGt5L3Z5tcRf83g4TITKJhPrA==", "dev": true, "dependencies": { - "@vitest/expect": "1.6.0", - "@vitest/runner": "1.6.0", - "@vitest/snapshot": "1.6.0", - "@vitest/spy": "1.6.0", - "@vitest/utils": "1.6.0", - "acorn-walk": "^8.3.2", - "chai": "^4.3.10", - "debug": "^4.3.4", - "execa": "^8.0.1", - "local-pkg": "^0.5.0", - "magic-string": "^0.30.5", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", - "std-env": "^3.5.0", - "strip-literal": "^2.0.0", - "tinybench": "^2.5.1", - "tinypool": "^0.8.3", + "cac": "^6.7.14", + "debug": "^4.3.6", + "pathe": "^1.1.2", + "vite": "^5.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vitest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.1.tgz", + "integrity": "sha512-97We7/VC0e9X5zBVkvt7SGQMGrRtn3KtySFQG5fpaMlS+l62eeXRQO633AYhSTC3z7IMebnPPNjGXVGNRFlxBA==", + "dev": true, + "dependencies": { + "@vitest/expect": "2.1.1", + "@vitest/mocker": "2.1.1", + "@vitest/pretty-format": "^2.1.1", + "@vitest/runner": "2.1.1", + "@vitest/snapshot": "2.1.1", + "@vitest/spy": "2.1.1", + "@vitest/utils": "2.1.1", + "chai": "^5.1.1", + "debug": "^4.3.6", + "magic-string": "^0.30.11", + "pathe": "^1.1.2", + "std-env": "^3.7.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.0", + "tinypool": "^1.0.0", + "tinyrainbow": "^1.2.0", "vite": "^5.0.0", - "vite-node": "1.6.0", - "why-is-node-running": "^2.2.2" + "vite-node": "2.1.1", + "why-is-node-running": "^2.3.0" }, "bin": { "vitest": "vitest.mjs" @@ -15016,8 +14263,8 @@ "peerDependencies": { "@edge-runtime/vm": "*", "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "1.6.0", - "@vitest/ui": "1.6.0", + "@vitest/browser": "2.1.1", + "@vitest/ui": "2.1.1", "happy-dom": "*", "jsdom": "*" }, @@ -15072,6 +14319,19 @@ "node": ">=18" } }, + "node_modules/watchpack": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "peer": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/weak-map": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/weak-map/-/weak-map-1.0.8.tgz", @@ -15108,6 +14368,83 @@ "node": ">=12" } }, + "node_modules/webpack": { + "version": "5.95.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz", + "integrity": "sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==", + "peer": true, + "dependencies": { + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "peer": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "peer": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "peer": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/whatwg-encoding": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", @@ -15158,6 +14495,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -15280,6 +14618,133 @@ "object-assign": "^4.1.0" } }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/webapp/package.json b/webapp/package.json index 3ee3e81d4e..da78848498 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -14,46 +14,46 @@ "test:ui": "vitest --ui" }, "dependencies": { - "@emotion/react": "11.11.1", - "@emotion/styled": "11.11.0", + "@emotion/react": "11.13.3", + "@emotion/styled": "11.13.0", "@glideapps/glide-data-grid": "6.0.3", - "@handsontable/react": "14.1.0", - "@mui/icons-material": "5.16.1", - "@mui/lab": "5.0.0-alpha.172", - "@mui/material": "5.16.1", - "@mui/x-tree-view": "7.10.0", + "@handsontable/react": "14.5.0", + "@mui/icons-material": "6.1.1", + "@mui/lab": "6.0.0-beta.10", + "@mui/material": "6.1.1", + "@mui/x-tree-view": "7.18.0", "@reduxjs/toolkit": "1.9.6", - "axios": "1.5.1", - "clsx": "2.0.0", + "axios": "1.7.7", + "clsx": "2.1.1", "d3": "5.16.0", - "debug": "4.3.4", + "debug": "4.3.7", "draft-convert": "2.1.13", "draft-js": "0.11.7", "draftjs-to-html": "0.9.1", - "handsontable": "14.1.0", + "handsontable": "14.5.0", "hoist-non-react-statics": "3.3.2", - "i18next": "23.5.1", - "i18next-browser-languagedetector": "7.1.0", - "i18next-http-backend": "2.4.2", - "immer": "10.0.3", + "i18next": "23.15.1", + "i18next-browser-languagedetector": "8.0.0", + "i18next-http-backend": "2.6.1", + "immer": "10.1.1", "js-cookie": "3.0.5", - "jsoneditor": "9.10.4", - "jwt-decode": "3.1.2", + "jsoneditor": "10.1.0", + "jwt-decode": "4.0.0", "lodash": "4.17.21", - "material-react-table": "2.0.5", - "moment": "2.29.4", + "material-react-table": "3.0.1", + "moment": "2.30.1", "notistack": "3.0.1", - "plotly.js": "2.26.1", - "ramda": "0.29.0", - "ramda-adjunct": "4.1.1", - "react": "18.2.0", + "plotly.js": "2.35.2", + "ramda": "0.30.1", + "ramda-adjunct": "5.1.0", + "react": "18.3.1", "react-beautiful-dnd": "13.1.1", "react-color": "2.19.3", "react-d3-graph": "2.6.0", - "react-dom": "18.2.0", + "react-dom": "18.3.1", "react-dropzone": "14.2.3", - "react-hook-form": "7.47.0", - "react-i18next": "13.2.2", + "react-hook-form": "7.53.0", + "react-i18next": "15.0.2", "react-json-view": "1.21.3", "react-plotly.js": "2.6.0", "react-redux": "8.1.3", @@ -61,78 +61,74 @@ "react-router-dom": "6.3.0", "react-split": "2.0.14", "react-syntax-highlighter": "15.5.0", - "react-use": "17.4.0", - "react-virtualized-auto-sizer": "1.0.20", - "react-window": "1.8.9", + "react-use": "17.5.1", + "react-virtualized-auto-sizer": "1.0.24", + "react-window": "1.8.10", "redux": "4.2.1", "redux-thunk": "2.4.2", - "swagger-ui-react": "5.9.0", + "swagger-ui-react": "5.17.14", "ts-toolbelt": "9.6.0", "use-undo": "1.1.1", - "uuid": "9.0.1", + "uuid": "10.0.0", "xml-js": "1.6.11" }, "devDependencies": { - "@testing-library/jest-dom": "6.4.6", - "@testing-library/react": "16.0.0", + "@testing-library/jest-dom": "6.5.0", + "@testing-library/react": "16.0.1", "@testing-library/user-event": "14.5.2", - "@total-typescript/ts-reset": "0.5.1", + "@total-typescript/ts-reset": "0.6.1", "@types/d3": "5.16.0", - "@types/debug": "4.1.9", - "@types/draft-convert": "2.1.5", - "@types/draft-js": "0.11.13", - "@types/draftjs-to-html": "0.8.2", - "@types/js-cookie": "3.0.4", + "@types/debug": "4.1.12", + "@types/draft-convert": "2.1.8", + "@types/draft-js": "0.11.18", + "@types/draftjs-to-html": "0.8.4", + "@types/js-cookie": "3.0.6", "@types/jsoneditor": "9.9.5", - "@types/lodash": "4.14.199", - "@types/node": "18.16.1", - "@types/ramda": "0.29.5", - "@types/react": "18.2.24", - "@types/react-beautiful-dnd": "13.1.5", - "@types/react-color": "3.0.7", + "@types/lodash": "4.17.9", + "@types/node": "22.7.3", + "@types/ramda": "0.30.2", + "@types/react": "18.3.9", + "@types/react-beautiful-dnd": "13.1.8", + "@types/react-color": "3.0.12", "@types/react-d3-graph": "2.6.5", - "@types/react-dom": "18.2.8", - "@types/react-plotly.js": "2.6.1", + "@types/react-dom": "18.3.0", + "@types/react-plotly.js": "2.6.3", "@types/react-syntax-highlighter": "15.5.13", - "@types/react-virtualized-auto-sizer": "1.0.1", - "@types/react-window": "1.8.6", - "@types/redux-logger": "3.0.10", - "@types/swagger-ui-react": "4.18.1", + "@types/react-virtualized-auto-sizer": "1.0.4", + "@types/react-window": "1.8.8", + "@types/swagger-ui-react": "4.18.3", "@types/testing-library__jest-dom": "6.0.0", - "@types/uuid": "9.0.4", - "@typescript-eslint/eslint-plugin": "6.14.0", - "@typescript-eslint/parser": "6.14.0", + "@types/uuid": "10.0.0", + "@typescript-eslint/eslint-plugin": "7.2.0", + "@typescript-eslint/parser": "7.2.0", "@vitejs/plugin-react-swc": "3.7.0", - "@vitest/coverage-v8": "1.6.0", - "@vitest/ui": "1.6.0", - "eslint": "8.55.0", - "eslint-config-prettier": "9.0.0", - "eslint-plugin-jsdoc": "48.2.0", + "@vitest/coverage-v8": "2.1.1", + "@vitest/ui": "2.1.1", + "eslint": "8.57.1", + "eslint-config-prettier": "9.1.0", + "eslint-plugin-jsdoc": "48.10.0", "eslint-plugin-license-header": "0.6.1", - "eslint-plugin-prettier": "5.0.0", - "eslint-plugin-react": "7.33.2", - "eslint-plugin-react-hooks": "4.6.0", - "eslint-plugin-react-refresh": "0.4.5", - "husky": "8.0.3", - "jsdom": "24.1.0", - "prettier": "3.0.3", - "typescript": "5.2.2", + "eslint-plugin-prettier": "5.2.1", + "eslint-plugin-react": "7.37.0", + "eslint-plugin-react-hooks": "4.6.2", + "eslint-plugin-react-refresh": "0.4.12", + "husky": "9.1.6", + "jsdom": "25.0.1", + "prettier": "3.3.3", + "typescript": "5.4.5", "vite": "5.4.8", - "vitest": "1.6.0" + "vitest": "2.1.1" }, "engines": { "node": "18.16.1" }, "overrides": { "react-d3-graph": { - "react": "18.2.0" + "react": "18.3.1" }, "react-json-view": { - "react": "18.2.0", - "react-dom": "18.2.0" - }, - "vite@5.4.8": { - "rollup": "4.22.0" + "react": "18.3.1", + "react-dom": "18.3.1" } } } diff --git a/webapp/src/components/App/Data/index.tsx b/webapp/src/components/App/Data/index.tsx index ea35d174f2..9055a3e2b4 100644 --- a/webapp/src/components/App/Data/index.tsx +++ b/webapp/src/components/App/Data/index.tsx @@ -188,9 +188,10 @@ function Data() { lineHeight: 1.334, }} > - {`Matrices - ${dataList.find( - (item) => item.id === selectedItem, - )?.name}`} + {`Matrices - ${ + dataList.find((item) => item.id === selectedItem) + ?.name + }`} @@ -237,9 +238,9 @@ function Data() { alignItems: "center", }} > - {`Matrices - ${dataList.find( - (item) => item.id === selectedItem, - )?.name}`} + {`Matrices - ${ + dataList.find((item) => item.id === selectedItem)?.name + }`} ) } diff --git a/webapp/src/components/App/Settings/Groups/Header.tsx b/webapp/src/components/App/Settings/Groups/Header.tsx index 509763f096..f73f783ef9 100644 --- a/webapp/src/components/App/Settings/Groups/Header.tsx +++ b/webapp/src/components/App/Settings/Groups/Header.tsx @@ -22,20 +22,12 @@ import { isAuthUserAdmin } from "../../../../redux/selectors"; import useAppSelector from "../../../../redux/hooks/useAppSelector"; import SearchFE from "../../../common/fieldEditors/SearchFE"; -/** - * Types - */ - interface Props { setSearchValue: (v: string) => void; addGroup: (user: GroupDetailsDTO) => void; reloadFetchGroups: () => void; } -/** - * Component - */ - function Header(props: Props) { const { setSearchValue, addGroup, reloadFetchGroups } = props; const { t } = useTranslation(); diff --git a/webapp/src/components/App/Settings/Groups/dialog/CreateGroupDialog.tsx b/webapp/src/components/App/Settings/Groups/dialog/CreateGroupDialog.tsx index c35544a668..3b3abd1485 100644 --- a/webapp/src/components/App/Settings/Groups/dialog/CreateGroupDialog.tsx +++ b/webapp/src/components/App/Settings/Groups/dialog/CreateGroupDialog.tsx @@ -27,10 +27,6 @@ import { createGroup, createRole } from "../../../../../services/api/user"; import { SubmitHandlerPlus } from "../../../../common/Form/types"; import GroupFormDialog, { GroupFormDialogProps } from "./GroupFormDialog"; -/** - * Types - */ - type InheritPropsToOmit = "title" | "titleIcon" | "onSubmit" | "onCancel"; interface Props extends Omit { @@ -39,10 +35,6 @@ interface Props extends Omit { closeDialog: VoidFunction; } -/** - * Component - */ - function CreateGroupDialog(props: Props) { const { addGroup, reloadFetchGroups, closeDialog, ...dialogProps } = props; const { enqueueSnackbar } = useSnackbar(); diff --git a/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/index.tsx b/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/index.tsx index 4f96b8a077..ef29ca1722 100644 --- a/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/index.tsx +++ b/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/index.tsx @@ -18,10 +18,6 @@ import FormDialog, { import { RoleType, UserDTO } from "../../../../../../common/types"; import GroupForm from "./GroupForm"; -/** - * Types - */ - export interface GroupFormDialogProps extends Omit { defaultValues?: { @@ -30,10 +26,6 @@ export interface GroupFormDialogProps }; } -/** - * Component - */ - function GroupFormDialog(props: GroupFormDialogProps) { const { defaultValues, ...dialogProps } = props; @@ -44,8 +36,4 @@ function GroupFormDialog(props: GroupFormDialogProps) { ); } -GroupFormDialog.defaultProps = { - defaultValues: undefined, -}; - export default GroupFormDialog; diff --git a/webapp/src/components/App/Settings/Groups/index.tsx b/webapp/src/components/App/Settings/Groups/index.tsx index dd28441273..b92e62ffe8 100644 --- a/webapp/src/components/App/Settings/Groups/index.tsx +++ b/webapp/src/components/App/Settings/Groups/index.tsx @@ -47,10 +47,6 @@ import { getAuthUser } from "../../../../redux/selectors"; import useAppSelector from "../../../../redux/hooks/useAppSelector"; import { isSearchMatching } from "../../../../utils/stringUtils"; -/** - * Types - */ - enum GroupActionKind { ADD = "ADD", EDIT = "EDIT", @@ -70,10 +66,6 @@ interface GroupAction extends Action { | GroupEdit; } -/** - * Utils - */ - const reducer = produce((draft, action) => { const { payload } = action; @@ -102,10 +94,6 @@ const reducer = produce((draft, action) => { } }); -/** - * Component - */ - function Groups() { const [groupToDelete, setGroupToDelete] = useState(); const [groupToEdit, setGroupToEdit] = useState(); diff --git a/webapp/src/components/App/Settings/Tokens/Header.tsx b/webapp/src/components/App/Settings/Tokens/Header.tsx index a64c3cc599..0cf3d3e329 100644 --- a/webapp/src/components/App/Settings/Tokens/Header.tsx +++ b/webapp/src/components/App/Settings/Tokens/Header.tsx @@ -20,20 +20,12 @@ import { BotDTO } from "../../../../common/types"; import CreateTokenDialog from "./dialog/CreateTokenDialog"; import SearchFE from "../../../common/fieldEditors/SearchFE"; -/** - * Types - */ - interface Props { setSearchValue: (v: string) => void; addToken: (user: BotDTO) => void; reloadFetchTokens: () => void; } -/** - * Component - */ - function Header(props: Props) { const { setSearchValue, addToken, reloadFetchTokens } = props; const { t } = useTranslation(); diff --git a/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/TokenForm.tsx b/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/TokenForm.tsx index 44018200dd..08b8fa928c 100644 --- a/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/TokenForm.tsx +++ b/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/TokenForm.tsx @@ -256,9 +256,4 @@ function TokenForm(props: Props) { ); } -TokenForm.defaultProps = { - onlyPermissions: false, - readOnly: false, -}; - export default TokenForm; diff --git a/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/index.tsx b/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/index.tsx index 8d30e9dd56..24516f6b7e 100644 --- a/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/index.tsx +++ b/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/index.tsx @@ -17,19 +17,11 @@ import FormDialog, { } from "../../../../../common/dialogs/FormDialog"; import TokenForm from "./TokenForm"; -/** - * Types - */ - export interface TokenFormDialogProps extends Omit { onlyPermissions?: boolean; } -/** - * Component - */ - function TokenFormDialog(props: TokenFormDialogProps) { const { onlyPermissions, ...dialogProps } = props; @@ -42,8 +34,4 @@ function TokenFormDialog(props: TokenFormDialogProps) { ); } -TokenFormDialog.defaultProps = { - onlyPermissions: false, -}; - export default TokenFormDialog; diff --git a/webapp/src/components/App/Settings/Tokens/dialog/TokenInfoDialog.tsx b/webapp/src/components/App/Settings/Tokens/dialog/TokenInfoDialog.tsx index 2929cfd18c..23f12dc088 100644 --- a/webapp/src/components/App/Settings/Tokens/dialog/TokenInfoDialog.tsx +++ b/webapp/src/components/App/Settings/Tokens/dialog/TokenInfoDialog.tsx @@ -22,18 +22,10 @@ import OkDialog, { OkDialogProps } from "../../../../common/dialogs/OkDialog"; import TokenForm from "./TokenFormDialog/TokenForm"; import Form from "../../../../common/Form"; -/** - * Types - */ - interface Props extends Omit { token: BotDetailsDTO; } -/** - * Component - */ - function TokenInfoDialog(props: Props) { const { token, ...dialogProps } = props; diff --git a/webapp/src/components/App/Settings/Tokens/index.tsx b/webapp/src/components/App/Settings/Tokens/index.tsx index ea8639c808..18aa3b4d9a 100644 --- a/webapp/src/components/App/Settings/Tokens/index.tsx +++ b/webapp/src/components/App/Settings/Tokens/index.tsx @@ -51,10 +51,6 @@ import TokenInfoDialog from "./dialog/TokenInfoDialog"; import useAppSelector from "../../../../redux/hooks/useAppSelector"; import { isSearchMatching } from "../../../../utils/stringUtils"; -/** - * Types - */ - interface BotDetailsDtoWithUser extends BotDetailsDTO { user: UserDTO; } @@ -69,10 +65,6 @@ interface TokenAction extends Action { payload?: BotDTO["id"] | BotDTO | BotDTO[]; } -/** - * Utils - */ - const reducer = produce( (draft, action) => { const { payload } = action; @@ -95,10 +87,6 @@ const reducer = produce( }, ); -/** - * Component - */ - function Tokens() { const [tokenToDisplayInfo, setTokenToDisplayInfo] = useState(); const [tokenToDelete, setTokenToDelete] = useState(); diff --git a/webapp/src/components/App/Settings/Users/Header.tsx b/webapp/src/components/App/Settings/Users/Header.tsx index fa4317eade..47969745bf 100644 --- a/webapp/src/components/App/Settings/Users/Header.tsx +++ b/webapp/src/components/App/Settings/Users/Header.tsx @@ -20,20 +20,12 @@ import CreateUserDialog from "./dialog/CreateUserDialog"; import { UserDetailsDTO } from "../../../../common/types"; import SearchFE from "../../../common/fieldEditors/SearchFE"; -/** - * Types - */ - interface Props { setSearchValue: (v: string) => void; addUser: (user: UserDetailsDTO) => void; reloadFetchUsers: () => void; } -/** - * Component - */ - function Header(props: Props) { const { setSearchValue, addUser, reloadFetchUsers } = props; const { t } = useTranslation(); diff --git a/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/UserForm.tsx b/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/UserForm.tsx index dbe75b017f..9066989aa5 100644 --- a/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/UserForm.tsx +++ b/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/UserForm.tsx @@ -266,8 +266,4 @@ function UserForm(props: Props) { ); } -UserForm.defaultProps = { - onlyPermissions: false, -}; - export default UserForm; diff --git a/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/index.tsx b/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/index.tsx index a5d54fd5eb..cc2dd19efd 100644 --- a/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/index.tsx +++ b/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/index.tsx @@ -19,10 +19,6 @@ import FormDialog, { import { GroupDTO, RoleType } from "../../../../../../common/types"; import UserForm from "./UserForm"; -/** - * Types - */ - export interface UserFormDialogProps extends Omit { defaultValues?: { username?: string; @@ -33,10 +29,6 @@ export interface UserFormDialogProps extends Omit { subtitle?: string; } -/** - * Component - */ - function UserFormDialog(props: UserFormDialogProps) { const { defaultValues, onlyPermissions, subtitle, ...dialogProps } = props; @@ -52,10 +44,4 @@ function UserFormDialog(props: UserFormDialogProps) { ); } -UserFormDialog.defaultProps = { - defaultValues: undefined, - onlyPermissions: false, - subtitle: "", -}; - export default UserFormDialog; diff --git a/webapp/src/components/App/Settings/Users/index.tsx b/webapp/src/components/App/Settings/Users/index.tsx index ebca615afc..373ca36b84 100644 --- a/webapp/src/components/App/Settings/Users/index.tsx +++ b/webapp/src/components/App/Settings/Users/index.tsx @@ -45,10 +45,6 @@ import UpdateUserDialog from "./dialog/UpdateUserDialog"; import { sortByName } from "../../../../services/utils"; import { isSearchMatching } from "../../../../utils/stringUtils"; -/** - * Types - */ - enum UserActionKind { ADD = "ADD", EDIT = "EDIT", @@ -62,10 +58,6 @@ interface UserAction extends Action { payload?: UserDetailsDTO["id"] | UserDetailsDTO | UserDetailsDTO[] | UserEdit; } -/** - * Utils - */ - const reducer = produce((draft, action) => { const { payload } = action; @@ -94,10 +86,6 @@ const reducer = produce((draft, action) => { } }); -/** - * Component - */ - function Users() { const [userToDelete, setUserToDelete] = useState(); const [userToEdit, setUserToEdit] = useState(); diff --git a/webapp/src/components/App/Settings/index.tsx b/webapp/src/components/App/Settings/index.tsx index 0f3781212c..e1479ed8b8 100644 --- a/webapp/src/components/App/Settings/index.tsx +++ b/webapp/src/components/App/Settings/index.tsx @@ -29,10 +29,6 @@ import { } from "../../../redux/selectors"; import { tuple } from "../../../utils/tsUtils"; -/** - * Component - */ - function Settings() { const [tabValue, setTabValue] = useState("1"); const [t] = useTranslation(); diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/NodeEditorModal/index.tsx b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/NodeEditorModal/index.tsx index f940943899..7dae04424a 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/NodeEditorModal/index.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/NodeEditorModal/index.tsx @@ -154,8 +154,4 @@ function NoteEditorModal(props: Props) { ); } -NoteEditorModal.defaultProps = { - content: undefined, -}; - export default NoteEditorModal; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/index.tsx index 1449479876..19cbfdf8b9 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/index.tsx @@ -18,7 +18,7 @@ import { AccordionSummary, Button, Divider, - Unstable_Grid2 as Grid, + Grid2 as Grid, } from "@mui/material"; import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; import * as R from "ramda"; @@ -166,7 +166,7 @@ function ThematicTrimmingDialog(props: Props) { const fields = getFieldLabelsForGroup(api.getValues(), group) .filter(([, label]) => isSearchMatching(search, label)) .map(([name, label]) => ( - + )); @@ -186,12 +186,7 @@ function ThematicTrimmingDialog(props: Props) { )} - + {fields} diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreaPropsView.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreaPropsView.tsx index 790ff7a6f6..feb39df236 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreaPropsView.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreaPropsView.tsx @@ -70,8 +70,4 @@ function AreaPropsView(props: PropsType) { ); } -AreaPropsView.defaultProps = { - currentArea: undefined, -}; - export default AreaPropsView; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/AllocationField.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/AllocationField.tsx index 8c43074be9..f8cb147368 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/AllocationField.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/AllocationField.tsx @@ -13,11 +13,11 @@ */ import { Typography, Grid } from "@mui/material"; -import { t } from "i18next"; import { FieldArrayWithId } from "react-hook-form"; import NumberFE from "../../../../../../../common/fieldEditors/NumberFE"; import { useFormContextPlus } from "../../../../../../../common/Form"; import { AllocationFormFields } from "./utils"; +import { validateNumber } from "../../../../../../../../utils/validationUtils"; interface Props { field: FieldArrayWithId; @@ -48,15 +48,10 @@ function AllocationField({ field, index, label }: Props) { diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/CorrelationField.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/CorrelationField.tsx index 929cca3bb9..b1cdec1ac0 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/CorrelationField.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/CorrelationField.tsx @@ -20,6 +20,7 @@ import { CorrelationFormFields } from "./utils"; import { useFormContextPlus } from "../../../../../../../common/Form"; import useAppSelector from "../../../../../../../../redux/hooks/useAppSelector"; import { getCurrentArea } from "../../../../../../../../redux/selectors"; +import { validateNumber } from "../../../../../../../../utils/validationUtils"; interface Props { field: FieldArrayWithId; @@ -54,19 +55,10 @@ function CorrelationField({ field, index, label }: Props) { diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/ConstraintElement.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/ConstraintElement.tsx index 5ae1d1c31c..757c2eb019 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/ConstraintElement.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/ConstraintElement.tsx @@ -25,11 +25,11 @@ interface ElementProps { onToggleType?: () => void; } -export default function ConstraintElement({ +function ConstraintElement({ isLink, left, right, - operator, + operator = "x", onToggleType, }: ElementProps) { const { t } = useTranslation(); @@ -53,6 +53,4 @@ export default function ConstraintElement({ ); } -ConstraintElement.defaultProps = { - operator: "x", -}; +export default ConstraintElement; diff --git a/webapp/src/components/App/Singlestudy/index.tsx b/webapp/src/components/App/Singlestudy/index.tsx index 7748369a48..e7eedfe7a9 100644 --- a/webapp/src/components/App/Singlestudy/index.tsx +++ b/webapp/src/components/App/Singlestudy/index.tsx @@ -209,8 +209,4 @@ function SingleStudy(props: Props) { ); } -SingleStudy.defaultProps = { - isExplorer: undefined, -}; - export default SingleStudy; diff --git a/webapp/src/components/App/Tasks/LaunchJobLogView.tsx b/webapp/src/components/App/Tasks/LaunchJobLogView.tsx index 44d2b8f643..d7c5b4c22a 100644 --- a/webapp/src/components/App/Tasks/LaunchJobLogView.tsx +++ b/webapp/src/components/App/Tasks/LaunchJobLogView.tsx @@ -132,9 +132,4 @@ function LaunchJobLogView(props: PropsType) { ); } -LaunchJobLogView.defaultProps = { - logButton: false, - logErrorButton: false, -}; - export default LaunchJobLogView; diff --git a/webapp/src/components/common/Fieldset.tsx b/webapp/src/components/common/Fieldset.tsx index 88d2540ee9..081a9accce 100644 --- a/webapp/src/components/common/Fieldset.tsx +++ b/webapp/src/components/common/Fieldset.tsx @@ -12,16 +12,17 @@ * This file is part of the Antares project. */ -import { Box, BoxProps, Divider } from "@mui/material"; +import { Box, BoxProps, Divider, SxProps, Theme } from "@mui/material"; import * as RA from "ramda-adjunct"; import { mergeSxProp } from "../../utils/muiUtils"; -interface FieldsetProps extends Omit { +interface FieldsetProps { legend?: string | React.ReactNode; children: React.ReactNode; contentProps?: BoxProps; fullFieldWidth?: boolean; fieldWidth?: number; + sx?: SxProps; } function Fieldset(props: FieldsetProps) { @@ -32,12 +33,10 @@ function Fieldset(props: FieldsetProps) { contentProps, fullFieldWidth = false, fieldWidth = 220, - ...rest } = props; return ( {RA.isFunction(deleteConfirmationMessage) ? deleteConfirmationMessage(selectedRows.length) - : deleteConfirmationMessage ?? t("dialog.message.confirmDelete")} + : (deleteConfirmationMessage ?? t("dialog.message.confirmDelete"))} )} diff --git a/webapp/src/components/common/LogModal.tsx b/webapp/src/components/common/LogModal.tsx index dc94255215..b2b918a4db 100644 --- a/webapp/src/components/common/LogModal.tsx +++ b/webapp/src/components/common/LogModal.tsx @@ -210,12 +210,4 @@ function LogModal(props: Props) { ); } -LogModal.defaultProps = { - content: undefined, - jobId: undefined, - followLogs: false, - loading: false, - style: {}, -}; - export default LogModal; diff --git a/webapp/src/components/common/MatrixGrid/style.ts b/webapp/src/components/common/MatrixGrid/style.ts index d99c3ad7d6..7711a73c8e 100644 --- a/webapp/src/components/common/MatrixGrid/style.ts +++ b/webapp/src/components/common/MatrixGrid/style.ts @@ -12,8 +12,7 @@ * This file is part of the Antares project. */ -import styled from "@emotion/styled"; -import { Box, Typography } from "@mui/material"; +import { Box, styled, Typography } from "@mui/material"; export const MatrixContainer = styled(Box)(() => ({ width: "100%", diff --git a/webapp/src/components/common/SelectMulti.tsx b/webapp/src/components/common/SelectMulti.tsx index 6512206708..29f95fc5d1 100644 --- a/webapp/src/components/common/SelectMulti.tsx +++ b/webapp/src/components/common/SelectMulti.tsx @@ -27,6 +27,7 @@ import { Theme, } from "@mui/material"; import { GenericInfo } from "../../common/types"; +import { mergeSxProp } from "../../utils/muiUtils"; interface Props { name: string; @@ -79,7 +80,7 @@ function SelectMulti(props: Props) { .join(", "); return ( - + {name} { contentProps?: DialogContentProps; } -/** - * Styled - */ - const AlertBorder = styled("span", { shouldForwardProp: (prop: string) => !prop.startsWith("$"), })<{ $type: AlertValues }>(({ theme, $type }) => ({ @@ -67,10 +59,6 @@ const AlertBorder = styled("span", { ])(Alert[$type]), })); -/** - * Component - */ - function BasicDialog(props: BasicDialogProps) { const { title, @@ -118,12 +106,4 @@ function BasicDialog(props: BasicDialogProps) { ); } -BasicDialog.defaultProps = { - title: null, - titleIcon: null, - actions: null, - alert: false, - contentProps: null, -}; - export default BasicDialog; diff --git a/webapp/src/components/common/dialogs/ConfirmationDialog.tsx b/webapp/src/components/common/dialogs/ConfirmationDialog.tsx index d237a535f0..df8141906f 100644 --- a/webapp/src/components/common/dialogs/ConfirmationDialog.tsx +++ b/webapp/src/components/common/dialogs/ConfirmationDialog.tsx @@ -16,10 +16,6 @@ import { Button } from "@mui/material"; import { useTranslation } from "react-i18next"; import BasicDialog, { BasicDialogProps } from "./BasicDialog"; -/** - * Types - */ - export interface ConfirmationDialogProps extends Omit { cancelButtonText?: string; @@ -28,10 +24,6 @@ export interface ConfirmationDialogProps onCancel: VoidFunction; } -/** - * Component - */ - function ConfirmationDialog(props: ConfirmationDialogProps) { const { cancelButtonText, @@ -78,9 +70,4 @@ function ConfirmationDialog(props: ConfirmationDialogProps) { ); } -ConfirmationDialog.defaultProps = { - cancelButtonText: null, - confirmButtonText: null, -}; - export default ConfirmationDialog; diff --git a/webapp/src/components/common/dialogs/DataViewerDialog/index.tsx b/webapp/src/components/common/dialogs/DataViewerDialog/index.tsx index fc1816d0e4..156cfbe3e2 100644 --- a/webapp/src/components/common/dialogs/DataViewerDialog/index.tsx +++ b/webapp/src/components/common/dialogs/DataViewerDialog/index.tsx @@ -140,8 +140,4 @@ function DataViewerDialog(props: Props) { ); } -DataViewerDialog.defaultProps = { - isMatrix: false, -}; - export default DataViewerDialog; diff --git a/webapp/src/components/common/dialogs/OkDialog.tsx b/webapp/src/components/common/dialogs/OkDialog.tsx index d43c147b50..c8245eb533 100644 --- a/webapp/src/components/common/dialogs/OkDialog.tsx +++ b/webapp/src/components/common/dialogs/OkDialog.tsx @@ -16,20 +16,12 @@ import { Button, ButtonProps } from "@mui/material"; import { useTranslation } from "react-i18next"; import BasicDialog, { BasicDialogProps } from "./BasicDialog"; -/** - * Types - */ - export interface OkDialogProps extends Omit { okButtonText?: string; okButtonProps?: Omit; onOk: VoidFunction; } -/** - * Component - */ - function OkDialog(props: OkDialogProps) { const { okButtonText, okButtonProps, onOk, onClose, ...basicDialogProps } = props; @@ -63,9 +55,4 @@ function OkDialog(props: OkDialogProps) { ); } -OkDialog.defaultProps = { - okButtonText: null, - okButtonProps: null, -}; - export default OkDialog; diff --git a/webapp/src/components/common/loaders/SimpleLoader.tsx b/webapp/src/components/common/loaders/SimpleLoader.tsx index 8493b99327..94efbf71c2 100644 --- a/webapp/src/components/common/loaders/SimpleLoader.tsx +++ b/webapp/src/components/common/loaders/SimpleLoader.tsx @@ -23,7 +23,7 @@ interface PropTypes { function SimpleLoader(props: PropTypes) { const [t] = useTranslation(); - const { progress, message, color } = props; + const { progress, message, color = "rgba(0,0,0,0)" } = props; return ( ) { const { header, hideHeaderDivider, children } = props; @@ -44,9 +36,4 @@ function BasicPage(props: PropsWithChildren) { ); } -BasicPage.defaultProps = { - header: null, - hideHeaderDivider: false, -}; - export default BasicPage; diff --git a/webapp/src/components/common/page/RootPage.tsx b/webapp/src/components/common/page/RootPage.tsx index fb72759b8a..7d759a6321 100644 --- a/webapp/src/components/common/page/RootPage.tsx +++ b/webapp/src/components/common/page/RootPage.tsx @@ -16,10 +16,6 @@ import { SvgIconComponent } from "@mui/icons-material"; import { Box, Typography } from "@mui/material"; import BasicPage from "./BasicPage"; -/** - * Types - */ - interface Props { title: string; titleIcon?: SvgIconComponent; @@ -29,10 +25,6 @@ interface Props { children?: React.ReactNode; } -/** - * Component - */ - function RootPage(props: Props) { const { title, @@ -96,11 +88,4 @@ function RootPage(props: Props) { ); } -RootPage.defaultProps = { - titleIcon: null, - headerTopRight: null, - headerBottom: null, - hideHeaderDivider: false, -}; - export default RootPage; diff --git a/webapp/src/hooks/useEnqueueErrorSnackbar.tsx b/webapp/src/hooks/useEnqueueErrorSnackbar.tsx index 51dcec46d7..5b04adb42b 100644 --- a/webapp/src/hooks/useEnqueueErrorSnackbar.tsx +++ b/webapp/src/hooks/useEnqueueErrorSnackbar.tsx @@ -17,10 +17,6 @@ import { useCallback } from "react"; import { L } from "ts-toolbelt"; import SnackErrorMessage from "../components/common/SnackErrorMessage"; -/** - * Types - */ - type EnqueueErrorType = ProviderContext["enqueueSnackbar"]; type EnqueueErrorSnackbarType = ( @@ -28,10 +24,6 @@ type EnqueueErrorSnackbarType = ( details: string | Error, ) => ReturnType; -/** - * Hook - */ - function useEnqueueErrorSnackbar(): EnqueueErrorSnackbarType { const { enqueueSnackbar } = useSnackbar(); diff --git a/webapp/src/redux/ducks/auth.ts b/webapp/src/redux/ducks/auth.ts index e77351b6c8..308b802827 100644 --- a/webapp/src/redux/ducks/auth.ts +++ b/webapp/src/redux/ducks/auth.ts @@ -13,7 +13,7 @@ */ import { createAsyncThunk, createReducer, isAnyOf } from "@reduxjs/toolkit"; -import jwtDecode, { JwtPayload } from "jwt-decode"; +import { jwtDecode, type JwtPayload } from "jwt-decode"; import { UserInfo } from "../../common/types"; import * as authApi from "../../services/api/auth"; import * as clientApi from "../../services/api/client"; From 3b0dfffa1f219985f00ff1531109eed5ef187a77 Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Wed, 2 Oct 2024 10:46:59 +0200 Subject: [PATCH 018/182] fix(pydantic): allow `str` fields to be populated by `int` (#2166) --- antarest/core/cache/business/local_chache.py | 5 +- antarest/core/cache/business/redis_cache.py | 5 +- antarest/core/configdata/model.py | 4 +- antarest/core/core_blueprint.py | 4 +- antarest/core/filetransfer/model.py | 6 +- antarest/core/interfaces/eventbus.py | 5 +- antarest/core/jwt.py | 7 +- antarest/core/model.py | 4 +- antarest/core/serialization/__init__.py | 15 ++ antarest/core/tasks/model.py | 14 +- antarest/core/utils/__init__.py | 2 + antarest/core/utils/utils.py | 13 -- antarest/core/version_info.py | 4 +- antarest/eventbus/web.py | 5 +- antarest/front.py | 4 +- antarest/launcher/adapters/log_parser.py | 4 +- antarest/launcher/model.py | 16 +- antarest/launcher/ssh_config.py | 6 +- antarest/login/auth.py | 5 +- antarest/login/model.py | 26 +-- antarest/login/web.py | 5 +- antarest/matrixstore/matrix_editor.py | 10 +- antarest/matrixstore/model.py | 12 +- antarest/service_creator.py | 14 +- antarest/study/business/area_management.py | 9 +- .../business/areas/st_storage_management.py | 7 +- .../business/binding_constraint_management.py | 11 +- antarest/study/business/district_manager.py | 5 +- antarest/study/business/link_management.py | 7 +- .../study/business/xpansion_management.py | 9 +- antarest/study/model.py | 39 ++--- antarest/study/repository.py | 9 +- .../model/filesystem/config/cluster.py | 6 +- .../model/filesystem/config/identifier.py | 6 +- .../rawstudy/model/filesystem/config/model.py | 15 +- .../command/create_binding_constraint.py | 7 +- .../variantstudy/model/command_context.py | 5 +- .../study/storage/variantstudy/model/model.py | 8 +- antarest/worker/archive_worker.py | 5 +- antarest/worker/simulator_worker.py | 5 +- antarest/worker/worker.py | 7 +- .../study_data_blueprint/test_thermal.py | 149 +++++------------- .../business/test_all_optional_metaclass.py | 5 +- 43 files changed, 225 insertions(+), 284 deletions(-) diff --git a/antarest/core/cache/business/local_chache.py b/antarest/core/cache/business/local_chache.py index ac2a026db5..e903ff9080 100644 --- a/antarest/core/cache/business/local_chache.py +++ b/antarest/core/cache/business/local_chache.py @@ -15,16 +15,15 @@ import time from typing import Dict, List, Optional -from pydantic import BaseModel - from antarest.core.config import CacheConfig from antarest.core.interfaces.cache import ICache from antarest.core.model import JSON +from antarest.core.serialization import AntaresBaseModel logger = logging.getLogger(__name__) -class LocalCacheElement(BaseModel): +class LocalCacheElement(AntaresBaseModel): timeout: int duration: int data: JSON diff --git a/antarest/core/cache/business/redis_cache.py b/antarest/core/cache/business/redis_cache.py index 7793f280c7..11eb3fcffd 100644 --- a/antarest/core/cache/business/redis_cache.py +++ b/antarest/core/cache/business/redis_cache.py @@ -13,17 +13,16 @@ import logging from typing import List, Optional -from pydantic import BaseModel from redis.client import Redis from antarest.core.interfaces.cache import ICache from antarest.core.model import JSON -from antarest.core.serialization import from_json +from antarest.core.serialization import AntaresBaseModel, from_json logger = logging.getLogger(__name__) -class RedisCacheElement(BaseModel): +class RedisCacheElement(AntaresBaseModel): duration: int data: JSON diff --git a/antarest/core/configdata/model.py b/antarest/core/configdata/model.py index 3e0d6b970e..bd243387ec 100644 --- a/antarest/core/configdata/model.py +++ b/antarest/core/configdata/model.py @@ -13,13 +13,13 @@ from enum import Enum from typing import Any, Optional -from pydantic import BaseModel from sqlalchemy import Column, Integer, String # type: ignore from antarest.core.persistence import Base +from antarest.core.serialization import AntaresBaseModel -class ConfigDataDTO(BaseModel): +class ConfigDataDTO(AntaresBaseModel): key: str value: Optional[str] diff --git a/antarest/core/core_blueprint.py b/antarest/core/core_blueprint.py index 27f6591109..d344531699 100644 --- a/antarest/core/core_blueprint.py +++ b/antarest/core/core_blueprint.py @@ -13,14 +13,14 @@ from typing import Any from fastapi import APIRouter -from pydantic import BaseModel from antarest.core.config import Config +from antarest.core.serialization import AntaresBaseModel from antarest.core.utils.web import APITag from antarest.core.version_info import VersionInfoDTO, get_commit_id, get_dependencies -class StatusDTO(BaseModel): +class StatusDTO(AntaresBaseModel): status: str diff --git a/antarest/core/filetransfer/model.py b/antarest/core/filetransfer/model.py index 72463e0bad..6ce194ed19 100644 --- a/antarest/core/filetransfer/model.py +++ b/antarest/core/filetransfer/model.py @@ -15,10 +15,10 @@ from http.client import HTTPException from typing import Optional -from pydantic import BaseModel from sqlalchemy import Boolean, Column, DateTime, Integer, String # type: ignore from antarest.core.persistence import Base +from antarest.core.serialization import AntaresBaseModel class FileDownloadNotFound(HTTPException): @@ -37,7 +37,7 @@ def __init__(self) -> None: ) -class FileDownloadDTO(BaseModel): +class FileDownloadDTO(AntaresBaseModel): id: str name: str filename: str @@ -47,7 +47,7 @@ class FileDownloadDTO(BaseModel): error_message: str = "" -class FileDownloadTaskDTO(BaseModel): +class FileDownloadTaskDTO(AntaresBaseModel): file: FileDownloadDTO task: str diff --git a/antarest/core/interfaces/eventbus.py b/antarest/core/interfaces/eventbus.py index 10965ea831..6057a3bbb3 100644 --- a/antarest/core/interfaces/eventbus.py +++ b/antarest/core/interfaces/eventbus.py @@ -14,9 +14,8 @@ from enum import Enum from typing import Any, Awaitable, Callable, List, Optional -from pydantic import BaseModel - from antarest.core.model import PermissionInfo +from antarest.core.serialization import AntaresBaseModel class EventType(str, Enum): @@ -56,7 +55,7 @@ class EventChannelDirectory: STUDY_GENERATION = "GENERATION_TASK/" -class Event(BaseModel): +class Event(AntaresBaseModel): type: EventType payload: Any permissions: PermissionInfo diff --git a/antarest/core/jwt.py b/antarest/core/jwt.py index b42cc3273b..aa8323abb8 100644 --- a/antarest/core/jwt.py +++ b/antarest/core/jwt.py @@ -12,13 +12,12 @@ from typing import List, Union -from pydantic import BaseModel - from antarest.core.roles import RoleType +from antarest.core.serialization import AntaresBaseModel from antarest.login.model import ADMIN_ID, Group, Identity -class JWTGroup(BaseModel): +class JWTGroup(AntaresBaseModel): """ Sub JWT domain with groups data belongs to user """ @@ -28,7 +27,7 @@ class JWTGroup(BaseModel): role: RoleType -class JWTUser(BaseModel): +class JWTUser(AntaresBaseModel): """ JWT domain with user data. """ diff --git a/antarest/core/model.py b/antarest/core/model.py index b500e9a5c5..dd4ea511aa 100644 --- a/antarest/core/model.py +++ b/antarest/core/model.py @@ -13,7 +13,7 @@ import enum from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union -from pydantic import BaseModel +from antarest.core.serialization import AntaresBaseModel if TYPE_CHECKING: # These dependencies are only used for type checking with mypy. @@ -43,7 +43,7 @@ class StudyPermissionType(str, enum.Enum): MANAGE_PERMISSIONS = "MANAGE_PERMISSIONS" -class PermissionInfo(BaseModel): +class PermissionInfo(AntaresBaseModel): owner: Optional[int] = None groups: List[str] = [] public_mode: PublicMode = PublicMode.NONE diff --git a/antarest/core/serialization/__init__.py b/antarest/core/serialization/__init__.py index 6368c02f1e..a8616e3eae 100644 --- a/antarest/core/serialization/__init__.py +++ b/antarest/core/serialization/__init__.py @@ -32,3 +32,18 @@ def to_json(data: t.Any, indent: t.Optional[int] = None) -> bytes: def to_json_string(data: t.Any, indent: t.Optional[int] = None) -> str: return to_json(data, indent=indent).decode("utf-8") + + +class AntaresBaseModel(pydantic.BaseModel): + """ + Due to pydantic migration from v1 to v2, we can have this issue: + + class A(BaseModel): + a: str + + A(a=2) raises ValidationError as we give an int instead of a str + + To avoid this issue we created our own BaseModel class that inherits from BaseModel and allows such object creation. + """ + + model_config = pydantic.config.ConfigDict(coerce_numbers_to_str=True) diff --git a/antarest/core/tasks/model.py b/antarest/core/tasks/model.py index a7ca9aedb9..9bd921fd0c 100644 --- a/antarest/core/tasks/model.py +++ b/antarest/core/tasks/model.py @@ -15,12 +15,12 @@ from datetime import datetime from enum import Enum -from pydantic import BaseModel from sqlalchemy import Boolean, Column, DateTime, ForeignKey, Integer, Sequence, String # type: ignore from sqlalchemy.engine.base import Engine # type: ignore from sqlalchemy.orm import relationship, sessionmaker # type: ignore from antarest.core.persistence import Base +from antarest.core.serialization import AntaresBaseModel if t.TYPE_CHECKING: # avoid circular import @@ -57,30 +57,30 @@ def is_final(self) -> bool: ] -class TaskResult(BaseModel, extra="forbid"): +class TaskResult(AntaresBaseModel, extra="forbid"): success: bool message: str # Can be used to store json serialized result return_value: t.Optional[str] = None -class TaskLogDTO(BaseModel, extra="forbid"): +class TaskLogDTO(AntaresBaseModel, extra="forbid"): id: str message: str -class CustomTaskEventMessages(BaseModel, extra="forbid"): +class CustomTaskEventMessages(AntaresBaseModel, extra="forbid"): start: str running: str end: str -class TaskEventPayload(BaseModel, extra="forbid"): +class TaskEventPayload(AntaresBaseModel, extra="forbid"): id: str message: str -class TaskDTO(BaseModel, extra="forbid"): +class TaskDTO(AntaresBaseModel, extra="forbid"): id: str name: str owner: t.Optional[int] = None @@ -93,7 +93,7 @@ class TaskDTO(BaseModel, extra="forbid"): ref_id: t.Optional[str] = None -class TaskListFilter(BaseModel, extra="forbid"): +class TaskListFilter(AntaresBaseModel, extra="forbid"): status: t.List[TaskStatus] = [] name: t.Optional[str] = None type: t.List[TaskType] = [] diff --git a/antarest/core/utils/__init__.py b/antarest/core/utils/__init__.py index 058c6b221a..d1e93fb6a8 100644 --- a/antarest/core/utils/__init__.py +++ b/antarest/core/utils/__init__.py @@ -9,3 +9,5 @@ # SPDX-License-Identifier: MPL-2.0 # # This file is part of the Antares project. + +__all__ = "AntaresBaseModel" diff --git a/antarest/core/utils/utils.py b/antarest/core/utils/utils.py index 89002edcfe..63576fc1a4 100644 --- a/antarest/core/utils/utils.py +++ b/antarest/core/utils/utils.py @@ -24,10 +24,8 @@ from pathlib import Path import py7zr -import redis from fastapi import HTTPException -from antarest.core.config import RedisConfig from antarest.core.exceptions import ShouldNotHappenException logger = logging.getLogger(__name__) @@ -131,17 +129,6 @@ def get_local_path() -> Path: return filepath -def new_redis_instance(config: RedisConfig) -> redis.Redis: # type: ignore - redis_client = redis.Redis( - host=config.host, - port=config.port, - password=config.password, - db=0, - retry_on_error=[redis.ConnectionError, redis.TimeoutError], # type: ignore - ) - return redis_client # type: ignore - - class StopWatch: def __init__(self) -> None: self.current_time: float = time.time() diff --git a/antarest/core/version_info.py b/antarest/core/version_info.py index ea96eaf4ef..ec20a767c9 100644 --- a/antarest/core/version_info.py +++ b/antarest/core/version_info.py @@ -18,10 +18,10 @@ from pathlib import Path from typing import Dict -from pydantic import BaseModel +from antarest.core.serialization import AntaresBaseModel -class VersionInfoDTO(BaseModel): +class VersionInfoDTO(AntaresBaseModel): name: str = "AntaREST" version: str gitcommit: str diff --git a/antarest/eventbus/web.py b/antarest/eventbus/web.py index a04a4571bb..7f7050a793 100644 --- a/antarest/eventbus/web.py +++ b/antarest/eventbus/web.py @@ -17,7 +17,6 @@ from typing import List, Optional from fastapi import Depends, HTTPException, Query -from pydantic import BaseModel from starlette.websockets import WebSocket, WebSocketDisconnect from antarest.core.application import AppBuildContext @@ -26,7 +25,7 @@ from antarest.core.jwt import DEFAULT_ADMIN_USER, JWTUser from antarest.core.model import PermissionInfo, StudyPermissionType from antarest.core.permissions import check_permission -from antarest.core.serialization import to_json_string +from antarest.core.serialization import AntaresBaseModel, to_json_string from antarest.fastapi_jwt_auth import AuthJWT from antarest.login.auth import Auth @@ -38,7 +37,7 @@ class WebsocketMessageAction(str, Enum): UNSUBSCRIBE = "UNSUBSCRIBE" -class WebsocketMessage(BaseModel): +class WebsocketMessage(AntaresBaseModel): action: WebsocketMessageAction payload: str diff --git a/antarest/front.py b/antarest/front.py index 8de0f05e82..a0699812bf 100644 --- a/antarest/front.py +++ b/antarest/front.py @@ -25,13 +25,13 @@ from typing import Any, Optional, Sequence from fastapi import FastAPI -from pydantic import BaseModel from starlette.middleware.base import BaseHTTPMiddleware, DispatchFunction, RequestResponseEndpoint from starlette.requests import Request from starlette.responses import FileResponse from starlette.staticfiles import StaticFiles from starlette.types import ASGIApp +from antarest.core.serialization import AntaresBaseModel from antarest.core.utils.string import to_camel_case @@ -77,7 +77,7 @@ async def dispatch(self, request: Request, call_next: RequestResponseEndpoint) - return await call_next(request) -class BackEndConfig(BaseModel): +class BackEndConfig(AntaresBaseModel): """ Configuration about backend URLs served to the frontend. """ diff --git a/antarest/launcher/adapters/log_parser.py b/antarest/launcher/adapters/log_parser.py index efd73d1b70..16cadd74ea 100644 --- a/antarest/launcher/adapters/log_parser.py +++ b/antarest/launcher/adapters/log_parser.py @@ -14,7 +14,7 @@ import re import typing as t -from pydantic import BaseModel +from antarest.core.serialization import AntaresBaseModel _SearchFunc = t.Callable[[str], t.Optional[t.Match[str]]] @@ -63,7 +63,7 @@ ) -class LaunchProgressDTO(BaseModel): +class LaunchProgressDTO(AntaresBaseModel): """ Measure the progress of a study simulation. diff --git a/antarest/launcher/model.py b/antarest/launcher/model.py index d80400a4ba..d053a55c85 100644 --- a/antarest/launcher/model.py +++ b/antarest/launcher/model.py @@ -14,23 +14,23 @@ import typing as t from datetime import datetime -from pydantic import BaseModel, Field +from pydantic import Field from sqlalchemy import Column, DateTime, Enum, ForeignKey, Integer, Sequence, String # type: ignore from sqlalchemy.orm import relationship # type: ignore from antarest.core.persistence import Base -from antarest.core.serialization import from_json +from antarest.core.serialization import AntaresBaseModel, from_json from antarest.login.model import Identity, UserInfo from antarest.study.business.all_optional_meta import camel_case_model -class XpansionParametersDTO(BaseModel): +class XpansionParametersDTO(AntaresBaseModel): output_id: t.Optional[str] = None sensitivity_mode: bool = False enabled: bool = True -class LauncherParametersDTO(BaseModel): +class LauncherParametersDTO(AntaresBaseModel): # Warning ! This class must be retro-compatible (that's the reason for the weird bool/XpansionParametersDTO union) # The reason is that it's stored in json format in database and deserialized using the latest class version # If compatibility is to be broken, an (alembic) data migration script should be added @@ -91,7 +91,7 @@ class JobLogType(str, enum.Enum): AFTER = "AFTER" -class JobResultDTO(BaseModel): +class JobResultDTO(AntaresBaseModel): """ A data transfer object (DTO) representing the job result. @@ -232,16 +232,16 @@ def __repr__(self) -> str: ) -class JobCreationDTO(BaseModel): +class JobCreationDTO(AntaresBaseModel): job_id: str -class LauncherEnginesDTO(BaseModel): +class LauncherEnginesDTO(AntaresBaseModel): engines: t.List[str] @camel_case_model -class LauncherLoadDTO(BaseModel, extra="forbid", validate_assignment=True, populate_by_name=True): +class LauncherLoadDTO(AntaresBaseModel, extra="forbid", validate_assignment=True, populate_by_name=True): """ DTO representing the load of the SLURM cluster or local machine. diff --git a/antarest/launcher/ssh_config.py b/antarest/launcher/ssh_config.py index 5238e07608..7d4524d04d 100644 --- a/antarest/launcher/ssh_config.py +++ b/antarest/launcher/ssh_config.py @@ -14,10 +14,12 @@ from typing import Any, Dict, Optional import paramiko -from pydantic import BaseModel, model_validator +from pydantic import model_validator +from antarest.core.serialization import AntaresBaseModel -class SSHConfigDTO(BaseModel): + +class SSHConfigDTO(AntaresBaseModel): config_path: pathlib.Path username: str hostname: str diff --git a/antarest/login/auth.py b/antarest/login/auth.py index f86ca5903b..e0227a51f5 100644 --- a/antarest/login/auth.py +++ b/antarest/login/auth.py @@ -15,13 +15,12 @@ from typing import Any, Callable, Coroutine, Dict, Optional, Tuple, Union from fastapi import Depends -from pydantic import BaseModel from ratelimit.types import Scope # type: ignore from starlette.requests import Request from antarest.core.config import Config from antarest.core.jwt import DEFAULT_ADMIN_USER, JWTUser -from antarest.core.serialization import from_json +from antarest.core.serialization import AntaresBaseModel, from_json from antarest.fastapi_jwt_auth import AuthJWT logger = logging.getLogger(__name__) @@ -79,7 +78,7 @@ def get_user_from_token(token: str, jwt_manager: AuthJWT) -> Optional[JWTUser]: return None -class JwtSettings(BaseModel): +class JwtSettings(AntaresBaseModel): authjwt_secret_key: str authjwt_token_location: Tuple[str, ...] authjwt_access_token_expires: Union[int, timedelta] = Auth.ACCESS_TOKEN_DURATION diff --git a/antarest/login/model.py b/antarest/login/model.py index 4f85763c9b..11a3bef802 100644 --- a/antarest/login/model.py +++ b/antarest/login/model.py @@ -15,7 +15,6 @@ import uuid import bcrypt -from pydantic.main import BaseModel from sqlalchemy import Boolean, Column, Enum, ForeignKey, Integer, Sequence, String # type: ignore from sqlalchemy.engine.base import Engine # type: ignore from sqlalchemy.exc import IntegrityError # type: ignore @@ -24,6 +23,7 @@ from antarest.core.persistence import Base from antarest.core.roles import RoleType +from antarest.core.serialization import AntaresBaseModel if t.TYPE_CHECKING: # avoid circular import @@ -44,58 +44,58 @@ """Name of the site administrator.""" -class UserInfo(BaseModel): +class UserInfo(AntaresBaseModel): id: int name: str -class BotRoleCreateDTO(BaseModel): +class BotRoleCreateDTO(AntaresBaseModel): group: str role: int -class BotCreateDTO(BaseModel): +class BotCreateDTO(AntaresBaseModel): name: str roles: t.List[BotRoleCreateDTO] is_author: bool = True -class UserCreateDTO(BaseModel): +class UserCreateDTO(AntaresBaseModel): name: str password: str -class GroupDTO(BaseModel): +class GroupDTO(AntaresBaseModel): id: t.Optional[str] = None name: str -class RoleCreationDTO(BaseModel): +class RoleCreationDTO(AntaresBaseModel): type: RoleType group_id: str identity_id: int -class RoleDTO(BaseModel): +class RoleDTO(AntaresBaseModel): group_id: t.Optional[str] group_name: str identity_id: int type: RoleType -class IdentityDTO(BaseModel): +class IdentityDTO(AntaresBaseModel): id: int name: str roles: t.List[RoleDTO] -class RoleDetailDTO(BaseModel): +class RoleDetailDTO(AntaresBaseModel): group: GroupDTO identity: UserInfo type: RoleType -class BotIdentityDTO(BaseModel): +class BotIdentityDTO(AntaresBaseModel): id: int name: str isAuthor: bool @@ -107,7 +107,7 @@ class BotDTO(UserInfo): is_author: bool -class UserRoleDTO(BaseModel): +class UserRoleDTO(AntaresBaseModel): id: int name: str role: RoleType @@ -311,7 +311,7 @@ def to_dto(self) -> RoleDetailDTO: ) -class CredentialsDTO(BaseModel): +class CredentialsDTO(AntaresBaseModel): user: int access_token: str refresh_token: str diff --git a/antarest/login/web.py b/antarest/login/web.py index 5bc85c62a1..6f3968d6a9 100644 --- a/antarest/login/web.py +++ b/antarest/login/web.py @@ -16,13 +16,12 @@ from fastapi import APIRouter, Depends, HTTPException from markupsafe import escape -from pydantic import BaseModel from antarest.core.config import Config from antarest.core.jwt import JWTGroup, JWTUser from antarest.core.requests import RequestParameters, UserHasNotPermissionError from antarest.core.roles import RoleType -from antarest.core.serialization import from_json +from antarest.core.serialization import AntaresBaseModel, from_json from antarest.core.utils.web import APITag from antarest.fastapi_jwt_auth import AuthJWT from antarest.login.auth import Auth @@ -46,7 +45,7 @@ logger = logging.getLogger(__name__) -class UserCredentials(BaseModel): +class UserCredentials(AntaresBaseModel): username: str password: str diff --git a/antarest/matrixstore/matrix_editor.py b/antarest/matrixstore/matrix_editor.py index 838af83860..89bb866336 100644 --- a/antarest/matrixstore/matrix_editor.py +++ b/antarest/matrixstore/matrix_editor.py @@ -14,10 +14,12 @@ import operator from typing import Any, Dict, List, Optional, Tuple -from pydantic import BaseModel, Field, field_validator, model_validator +from pydantic import Field, field_validator, model_validator +from antarest.core.serialization import AntaresBaseModel -class MatrixSlice(BaseModel): + +class MatrixSlice(AntaresBaseModel): # NOTE: This Markdown documentation is reflected in the Swagger API """ Represents a group of cells in a matrix for updating. @@ -97,7 +99,7 @@ def check_values(cls, values: Dict[str, Any]) -> Dict[str, Any]: @functools.total_ordering -class Operation(BaseModel): +class Operation(AntaresBaseModel): # NOTE: This Markdown documentation is reflected in the Swagger API """ Represents an update operation to be performed on matrix cells. @@ -140,7 +142,7 @@ def __le__(self, other: Any) -> bool: return NotImplemented # pragma: no cover -class MatrixEditInstruction(BaseModel): +class MatrixEditInstruction(AntaresBaseModel): # NOTE: This Markdown documentation is reflected in the Swagger API """ Provides edit instructions to be applied to a matrix. diff --git a/antarest/matrixstore/model.py b/antarest/matrixstore/model.py index 244cafadca..2dccd350ab 100644 --- a/antarest/matrixstore/model.py +++ b/antarest/matrixstore/model.py @@ -14,11 +14,11 @@ import typing as t import uuid -from pydantic import BaseModel from sqlalchemy import Boolean, Column, DateTime, ForeignKey, Integer, String, Table # type: ignore from sqlalchemy.orm import relationship # type: ignore from antarest.core.persistence import Base +from antarest.core.serialization import AntaresBaseModel from antarest.login.model import GroupDTO, Identity, UserInfo @@ -58,12 +58,12 @@ def __eq__(self, other: t.Any) -> bool: return res -class MatrixInfoDTO(BaseModel): +class MatrixInfoDTO(AntaresBaseModel): id: str name: str -class MatrixDataSetDTO(BaseModel): +class MatrixDataSetDTO(AntaresBaseModel): id: str name: str matrices: t.List[MatrixInfoDTO] @@ -209,7 +209,7 @@ def __eq__(self, other: t.Any) -> bool: MatrixData = float -class MatrixDTO(BaseModel): +class MatrixDTO(AntaresBaseModel): width: int height: int index: t.List[str] @@ -219,7 +219,7 @@ class MatrixDTO(BaseModel): id: str = "" -class MatrixContent(BaseModel): +class MatrixContent(AntaresBaseModel): """ Matrix content (Data Frame array) @@ -234,7 +234,7 @@ class MatrixContent(BaseModel): columns: t.List[t.Union[int, str]] -class MatrixDataSetUpdateDTO(BaseModel): +class MatrixDataSetUpdateDTO(AntaresBaseModel): name: str groups: t.List[str] public: bool diff --git a/antarest/service_creator.py b/antarest/service_creator.py index 5859806a61..b942418b2c 100644 --- a/antarest/service_creator.py +++ b/antarest/service_creator.py @@ -25,7 +25,7 @@ from antarest.core.application import AppBuildContext from antarest.core.cache.main import build_cache -from antarest.core.config import Config +from antarest.core.config import Config, RedisConfig from antarest.core.filetransfer.main import build_filetransfer_service from antarest.core.filetransfer.service import FileTransferManager from antarest.core.interfaces.cache import ICache @@ -34,7 +34,6 @@ from antarest.core.persistence import upgrade_db from antarest.core.tasks.main import build_taskjob_manager from antarest.core.tasks.service import ITaskService -from antarest.core.utils.utils import new_redis_instance from antarest.eventbus.main import build_eventbus from antarest.launcher.main import build_launcher from antarest.login.main import build_login @@ -109,6 +108,17 @@ def init_db_engine( return engine +def new_redis_instance(config: RedisConfig) -> redis.Redis: # type: ignore + redis_client = redis.Redis( + host=config.host, + port=config.port, + password=config.password, + db=0, + retry_on_error=[redis.ConnectionError, redis.TimeoutError], # type: ignore + ) + return redis_client # type: ignore + + def create_event_bus(app_ctxt: t.Optional[AppBuildContext], config: Config) -> t.Tuple[IEventBus, t.Optional[redis.Redis]]: # type: ignore redis_client = new_redis_instance(config.redis) if config.redis is not None else None return ( diff --git a/antarest/study/business/area_management.py b/antarest/study/business/area_management.py index 5682a6fa60..992cc31984 100644 --- a/antarest/study/business/area_management.py +++ b/antarest/study/business/area_management.py @@ -15,10 +15,11 @@ import re import typing as t -from pydantic import BaseModel, Field +from pydantic import Field from antarest.core.exceptions import ConfigFileNotFound, DuplicateAreaName, LayerNotAllowedToBeDeleted, LayerNotFound from antarest.core.model import JSON +from antarest.core.serialization import AntaresBaseModel from antarest.study.business.all_optional_meta import all_optional_model, camel_case_model from antarest.study.business.utils import execute_or_add_commands from antarest.study.model import Patch, PatchArea, PatchCluster, RawStudy, Study @@ -47,7 +48,7 @@ class AreaType(enum.Enum): DISTRICT = "DISTRICT" -class AreaCreationDTO(BaseModel): +class AreaCreationDTO(AntaresBaseModel): name: str type: AreaType metadata: t.Optional[PatchArea] = None @@ -76,13 +77,13 @@ class AreaInfoDTO(AreaCreationDTO): thermals: t.Optional[t.List[ClusterInfoDTO]] = None -class LayerInfoDTO(BaseModel): +class LayerInfoDTO(AntaresBaseModel): id: str name: str areas: t.List[str] -class UpdateAreaUi(BaseModel, extra="forbid", populate_by_name=True): +class UpdateAreaUi(AntaresBaseModel, extra="forbid", populate_by_name=True): """ DTO for updating area UI diff --git a/antarest/study/business/areas/st_storage_management.py b/antarest/study/business/areas/st_storage_management.py index dcb5db5dc8..9f57cb50c1 100644 --- a/antarest/study/business/areas/st_storage_management.py +++ b/antarest/study/business/areas/st_storage_management.py @@ -15,7 +15,7 @@ import typing as t import numpy as np -from pydantic import BaseModel, field_validator, model_validator +from pydantic import field_validator, model_validator from typing_extensions import Literal from antarest.core.exceptions import ( @@ -28,6 +28,7 @@ ) from antarest.core.model import JSON from antarest.core.requests import CaseInsensitiveDict +from antarest.core.serialization import AntaresBaseModel from antarest.study.business.all_optional_meta import all_optional_model, camel_case_model from antarest.study.business.utils import execute_or_add_commands from antarest.study.model import Study @@ -117,7 +118,7 @@ def json_schema_extra(schema: t.MutableMapping[str, t.Any]) -> None: # ============= -class STStorageMatrix(BaseModel): +class STStorageMatrix(AntaresBaseModel): """ Short-Term Storage Matrix Model. @@ -157,7 +158,7 @@ def validate_time_series(cls, data: t.List[t.List[float]]) -> t.List[t.List[floa # noinspection SpellCheckingInspection -class STStorageMatrices(BaseModel): +class STStorageMatrices(AntaresBaseModel): """ Short-Term Storage Matrices Validation Model. diff --git a/antarest/study/business/binding_constraint_management.py b/antarest/study/business/binding_constraint_management.py index 4ef2a5fffc..5db14243ab 100644 --- a/antarest/study/business/binding_constraint_management.py +++ b/antarest/study/business/binding_constraint_management.py @@ -15,7 +15,7 @@ import typing as t import numpy as np -from pydantic import BaseModel, Field, field_validator, model_validator +from pydantic import Field, field_validator, model_validator from antarest.core.exceptions import ( BindingConstraintNotFound, @@ -30,6 +30,7 @@ ) from antarest.core.model import JSON from antarest.core.requests import CaseInsensitiveDict +from antarest.core.serialization import AntaresBaseModel from antarest.core.utils.string import to_camel_case from antarest.study.business.all_optional_meta import camel_case_model from antarest.study.business.utils import execute_or_add_commands @@ -79,7 +80,7 @@ } -class LinkTerm(BaseModel): +class LinkTerm(AntaresBaseModel): """ DTO for a constraint term on a link between two areas. @@ -98,7 +99,7 @@ def generate_id(self) -> str: return "%".join(ids) -class ClusterTerm(BaseModel): +class ClusterTerm(AntaresBaseModel): """ DTO for a constraint term on a cluster in an area. @@ -117,7 +118,7 @@ def generate_id(self) -> str: return ".".join(ids) -class ConstraintTerm(BaseModel): +class ConstraintTerm(AntaresBaseModel): """ DTO for a constraint term. @@ -147,7 +148,7 @@ def generate_id(self) -> str: return self.data.generate_id() -class ConstraintFilters(BaseModel, frozen=True, extra="forbid"): +class ConstraintFilters(AntaresBaseModel, frozen=True, extra="forbid"): """ Binding Constraint Filters gathering the main filtering parameters. diff --git a/antarest/study/business/district_manager.py b/antarest/study/business/district_manager.py index c642d61531..38a760b905 100644 --- a/antarest/study/business/district_manager.py +++ b/antarest/study/business/district_manager.py @@ -12,9 +12,8 @@ from typing import List -from pydantic import BaseModel - from antarest.core.exceptions import AreaNotFound, DistrictAlreadyExist, DistrictNotFound +from antarest.core.serialization import AntaresBaseModel from antarest.study.business.utils import execute_or_add_commands from antarest.study.model import Study from antarest.study.storage.rawstudy.model.filesystem.config.model import transform_name_to_id @@ -24,7 +23,7 @@ from antarest.study.storage.variantstudy.model.command.update_district import UpdateDistrict -class DistrictUpdateDTO(BaseModel): +class DistrictUpdateDTO(AntaresBaseModel): #: Indicates whether this district is used in the output (usually all #: districts are visible, but the user can decide to hide some of them). output: bool diff --git a/antarest/study/business/link_management.py b/antarest/study/business/link_management.py index 6f696d2a5e..f14c43ef07 100644 --- a/antarest/study/business/link_management.py +++ b/antarest/study/business/link_management.py @@ -12,10 +12,9 @@ import typing as t -from pydantic import BaseModel - from antarest.core.exceptions import ConfigFileNotFound from antarest.core.model import JSON +from antarest.core.serialization import AntaresBaseModel from antarest.study.business.all_optional_meta import all_optional_model, camel_case_model from antarest.study.business.utils import execute_or_add_commands from antarest.study.model import RawStudy @@ -28,13 +27,13 @@ _ALL_LINKS_PATH = "input/links" -class LinkUIDTO(BaseModel): +class LinkUIDTO(AntaresBaseModel): color: str width: float style: str -class LinkInfoDTO(BaseModel): +class LinkInfoDTO(AntaresBaseModel): area1: str area2: str ui: t.Optional[LinkUIDTO] = None diff --git a/antarest/study/business/xpansion_management.py b/antarest/study/business/xpansion_management.py index ad459d036f..318adde367 100644 --- a/antarest/study/business/xpansion_management.py +++ b/antarest/study/business/xpansion_management.py @@ -19,10 +19,11 @@ import zipfile from fastapi import HTTPException, UploadFile -from pydantic import BaseModel, Field, ValidationError, field_validator, model_validator +from pydantic import Field, ValidationError, field_validator, model_validator from antarest.core.exceptions import BadZipBinary, ChildNotFoundError from antarest.core.model import JSON +from antarest.core.serialization import AntaresBaseModel from antarest.study.business.all_optional_meta import all_optional_model from antarest.study.business.enum_ignore_case import EnumIgnoreCase from antarest.study.model import Study @@ -55,7 +56,7 @@ class Solver(EnumIgnoreCase): XPRESS = "Xpress" -class XpansionSensitivitySettings(BaseModel): +class XpansionSensitivitySettings(AntaresBaseModel): """ A DTO representing the sensitivity analysis settings used for Xpansion. @@ -76,7 +77,7 @@ def projection_validation(cls, v: t.Optional[t.Sequence[str]]) -> t.Sequence[str return [] if v is None else v -class XpansionSettings(BaseModel, extra="ignore", validate_assignment=True, populate_by_name=True): +class XpansionSettings(AntaresBaseModel, extra="ignore", validate_assignment=True, populate_by_name=True): """ A data transfer object representing the general settings used for Xpansion. @@ -230,7 +231,7 @@ class UpdateXpansionSettings(XpansionSettings): ) -class XpansionCandidateDTO(BaseModel): +class XpansionCandidateDTO(AntaresBaseModel): # The id of the candidate is irrelevant, so it should stay hidden for the user # The names should be the section titles of the file, and the id should be removed name: str diff --git a/antarest/study/model.py b/antarest/study/model.py index 081fd48b4a..5e528e57fb 100644 --- a/antarest/study/model.py +++ b/antarest/study/model.py @@ -18,7 +18,7 @@ from datetime import datetime, timedelta from pathlib import Path -from pydantic import BaseModel, field_validator +from pydantic import field_validator from sqlalchemy import ( # type: ignore Boolean, Column, @@ -34,6 +34,7 @@ from antarest.core.exceptions import ShouldNotHappenException from antarest.core.model import PublicMode from antarest.core.persistence import Base +from antarest.core.serialization import AntaresBaseModel from antarest.login.model import Group, GroupDTO, Identity from antarest.study.css4_colors import COLOR_NAMES @@ -150,7 +151,7 @@ class StudyContentStatus(enum.Enum): ERROR = "ERROR" -class CommentsDto(BaseModel): +class CommentsDto(AntaresBaseModel): comments: str @@ -299,7 +300,7 @@ class StudyFolder: groups: t.List[Group] -class PatchStudy(BaseModel): +class PatchStudy(AntaresBaseModel): scenario: t.Optional[str] = None doc: t.Optional[str] = None status: t.Optional[str] = None @@ -307,12 +308,12 @@ class PatchStudy(BaseModel): tags: t.List[str] = [] -class PatchArea(BaseModel): +class PatchArea(AntaresBaseModel): country: t.Optional[str] = None tags: t.List[str] = [] -class PatchCluster(BaseModel): +class PatchCluster(AntaresBaseModel): type: t.Optional[str] = None code_oi: t.Optional[str] = None @@ -322,23 +323,23 @@ def alias_generator(cls, string: str) -> str: return "-".join(string.split("_")) -class PatchOutputs(BaseModel): +class PatchOutputs(AntaresBaseModel): reference: t.Optional[str] = None -class Patch(BaseModel): +class Patch(AntaresBaseModel): study: t.Optional[PatchStudy] = None areas: t.Optional[t.Dict[str, PatchArea]] = None thermal_clusters: t.Optional[t.Dict[str, PatchCluster]] = None outputs: t.Optional[PatchOutputs] = None -class OwnerInfo(BaseModel): +class OwnerInfo(AntaresBaseModel): id: t.Optional[int] = None name: str -class StudyMetadataDTO(BaseModel): +class StudyMetadataDTO(AntaresBaseModel): id: str name: str version: int @@ -364,7 +365,7 @@ def transform_horizon_to_str(cls, val: t.Union[str, int, None]) -> t.Optional[st return str(val) if val else val # type: ignore -class StudyMetadataPatchDTO(BaseModel): +class StudyMetadataPatchDTO(AntaresBaseModel): name: t.Optional[str] = None author: t.Optional[str] = None horizon: t.Optional[str] = None @@ -387,7 +388,7 @@ def _normalize_tags(cls, v: t.List[str]) -> t.List[str]: return tags -class StudySimSettingsDTO(BaseModel): +class StudySimSettingsDTO(AntaresBaseModel): general: t.Dict[str, t.Any] input: t.Dict[str, t.Any] output: t.Dict[str, t.Any] @@ -398,7 +399,7 @@ class StudySimSettingsDTO(BaseModel): playlist: t.Optional[t.List[int]] = None -class StudySimResultDTO(BaseModel): +class StudySimResultDTO(AntaresBaseModel): name: str type: str settings: StudySimSettingsDTO @@ -478,7 +479,7 @@ def suffix(self) -> str: return mapping[self] -class StudyDownloadDTO(BaseModel): +class StudyDownloadDTO(AntaresBaseModel): """ DTO used to download outputs """ @@ -494,32 +495,32 @@ class StudyDownloadDTO(BaseModel): includeClusters: bool = False -class MatrixIndex(BaseModel): +class MatrixIndex(AntaresBaseModel): start_date: str = "" steps: int = 8760 first_week_size: int = 7 level: StudyDownloadLevelDTO = StudyDownloadLevelDTO.HOURLY -class TimeSerie(BaseModel): +class TimeSerie(AntaresBaseModel): name: str unit: str data: t.List[t.Optional[float]] = [] -class TimeSeriesData(BaseModel): +class TimeSeriesData(AntaresBaseModel): type: StudyDownloadType name: str data: t.Dict[str, t.List[TimeSerie]] = {} -class MatrixAggregationResultDTO(BaseModel): +class MatrixAggregationResultDTO(AntaresBaseModel): index: MatrixIndex data: t.List[TimeSeriesData] warnings: t.List[str] -class MatrixAggregationResult(BaseModel): +class MatrixAggregationResult(AntaresBaseModel): index: MatrixIndex data: t.Dict[t.Tuple[StudyDownloadType, str], t.Dict[str, t.List[TimeSerie]]] warnings: t.List[str] @@ -539,6 +540,6 @@ def to_dto(self) -> MatrixAggregationResultDTO: ) -class ReferenceStudy(BaseModel): +class ReferenceStudy(AntaresBaseModel): version: str template_name: str diff --git a/antarest/study/repository.py b/antarest/study/repository.py index f4d2e691c1..a485b24652 100644 --- a/antarest/study/repository.py +++ b/antarest/study/repository.py @@ -14,7 +14,7 @@ import enum import typing as t -from pydantic import BaseModel, NonNegativeInt +from pydantic import NonNegativeInt from sqlalchemy import and_, func, not_, or_, sql # type: ignore from sqlalchemy.orm import Query, Session, joinedload, with_polymorphic # type: ignore @@ -22,6 +22,7 @@ from antarest.core.jwt import JWTUser from antarest.core.model import PublicMode from antarest.core.requests import RequestParameters +from antarest.core.serialization import AntaresBaseModel from antarest.core.utils.fastapi_sqlalchemy import db from antarest.login.model import Group from antarest.study.model import DEFAULT_WORKSPACE_NAME, RawStudy, Study, StudyAdditionalData, Tag @@ -47,7 +48,7 @@ def escape_like(string: str, escape_char: str = "\\") -> str: return string.replace(escape_char, escape_char * 2).replace("%", escape_char + "%").replace("_", escape_char + "_") -class AccessPermissions(BaseModel, frozen=True, extra="forbid"): +class AccessPermissions(AntaresBaseModel, frozen=True, extra="forbid"): """ This class object is build to pass on the user identity and its associated groups information into the listing function get_all below @@ -84,7 +85,7 @@ def from_params(cls, params: t.Union[RequestParameters, JWTUser]) -> "AccessPerm return cls() -class StudyFilter(BaseModel, frozen=True, extra="forbid"): +class StudyFilter(AntaresBaseModel, frozen=True, extra="forbid"): """Study filter class gathering the main filtering parameters Attributes: @@ -127,7 +128,7 @@ class StudySortBy(str, enum.Enum): DATE_DESC = "-date" -class StudyPagination(BaseModel, frozen=True, extra="forbid"): +class StudyPagination(AntaresBaseModel, frozen=True, extra="forbid"): """ Pagination of a studies query results diff --git a/antarest/study/storage/rawstudy/model/filesystem/config/cluster.py b/antarest/study/storage/rawstudy/model/filesystem/config/cluster.py index 62393794e2..f2a6349d90 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/config/cluster.py +++ b/antarest/study/storage/rawstudy/model/filesystem/config/cluster.py @@ -19,12 +19,14 @@ import functools import typing as t -from pydantic import BaseModel, Field +from pydantic import Field + +from antarest.core.serialization import AntaresBaseModel @functools.total_ordering class ItemProperties( - BaseModel, + AntaresBaseModel, extra="forbid", validate_assignment=True, populate_by_name=True, diff --git a/antarest/study/storage/rawstudy/model/filesystem/config/identifier.py b/antarest/study/storage/rawstudy/model/filesystem/config/identifier.py index 2cb5d9ec64..ab428fca75 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/config/identifier.py +++ b/antarest/study/storage/rawstudy/model/filesystem/config/identifier.py @@ -12,13 +12,15 @@ import typing as t -from pydantic import BaseModel, Field, model_validator +from pydantic import Field, model_validator __all__ = ("IgnoreCaseIdentifier", "LowerCaseIdentifier") +from antarest.core.serialization import AntaresBaseModel + class IgnoreCaseIdentifier( - BaseModel, + AntaresBaseModel, extra="forbid", validate_assignment=True, populate_by_name=True, diff --git a/antarest/study/storage/rawstudy/model/filesystem/config/model.py b/antarest/study/storage/rawstudy/model/filesystem/config/model.py index d0abd57710..5b4bbcab8f 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/config/model.py +++ b/antarest/study/storage/rawstudy/model/filesystem/config/model.py @@ -14,8 +14,9 @@ import typing as t from pathlib import Path -from pydantic import BaseModel, Field, model_validator +from pydantic import Field, model_validator +from antarest.core.serialization import AntaresBaseModel from antarest.core.utils.utils import DTO from antarest.study.business.enum_ignore_case import EnumIgnoreCase @@ -49,7 +50,7 @@ def __str__(self) -> str: return self.value -class Link(BaseModel, extra="ignore"): +class Link(AntaresBaseModel, extra="ignore"): """ Object linked to /input/links//properties.ini information @@ -74,7 +75,7 @@ def validation(cls, values: t.MutableMapping[str, t.Any]) -> t.MutableMapping[st return values -class Area(BaseModel, extra="forbid"): +class Area(AntaresBaseModel, extra="forbid"): """ Object linked to /input//optimization.ini information """ @@ -89,7 +90,7 @@ class Area(BaseModel, extra="forbid"): st_storages: t.List[STStorageConfigType] = [] -class DistrictSet(BaseModel): +class DistrictSet(AntaresBaseModel): """ Object linked to /inputs/sets.ini information """ @@ -108,7 +109,7 @@ def get_areas(self, all_areas: t.List[str]) -> t.List[str]: return self.areas or [] -class Simulation(BaseModel): +class Simulation(AntaresBaseModel): """ Object linked to /output//about-the-study/** information """ @@ -130,7 +131,7 @@ def get_file(self) -> str: return f"{self.date}{modes[self.mode]}{dash}{self.name}" -class BindingConstraintDTO(BaseModel): +class BindingConstraintDTO(AntaresBaseModel): """ Object linked to `input/bindingconstraints/bindingconstraints.ini` information @@ -302,7 +303,7 @@ def transform_name_to_id(name: str, lower: bool = True) -> str: return valid_id.lower() if lower else valid_id -class FileStudyTreeConfigDTO(BaseModel): +class FileStudyTreeConfigDTO(AntaresBaseModel): study_path: Path path: Path study_id: str diff --git a/antarest/study/storage/variantstudy/model/command/create_binding_constraint.py b/antarest/study/storage/variantstudy/model/command/create_binding_constraint.py index 50ce659fd9..650a19898d 100644 --- a/antarest/study/storage/variantstudy/model/command/create_binding_constraint.py +++ b/antarest/study/storage/variantstudy/model/command/create_binding_constraint.py @@ -15,8 +15,9 @@ from enum import Enum import numpy as np -from pydantic import BaseModel, Field, field_validator, model_validator +from pydantic import Field, field_validator, model_validator +from antarest.core.serialization import AntaresBaseModel from antarest.matrixstore.model import MatrixData from antarest.study.business.all_optional_meta import all_optional_model, camel_case_model from antarest.study.storage.rawstudy.model.filesystem.config.binding_constraint import ( @@ -90,7 +91,7 @@ def check_matrix_values(time_step: BindingConstraintFrequency, values: MatrixTyp # ================================================================================= -class BindingConstraintPropertiesBase(BaseModel, extra="forbid", populate_by_name=True): +class BindingConstraintPropertiesBase(AntaresBaseModel, extra="forbid", populate_by_name=True): enabled: bool = True time_step: BindingConstraintFrequency = Field(DEFAULT_TIMESTEP, alias="type") operator: BindingConstraintOperator = DEFAULT_OPERATOR @@ -163,7 +164,7 @@ class OptionalProperties(BindingConstraintProperties870): @camel_case_model -class BindingConstraintMatrices(BaseModel, extra="forbid", populate_by_name=True): +class BindingConstraintMatrices(AntaresBaseModel, extra="forbid", populate_by_name=True): """ Class used to store the matrices of a binding constraint. """ diff --git a/antarest/study/storage/variantstudy/model/command_context.py b/antarest/study/storage/variantstudy/model/command_context.py index 5996e63528..f4b9d6f6c7 100644 --- a/antarest/study/storage/variantstudy/model/command_context.py +++ b/antarest/study/storage/variantstudy/model/command_context.py @@ -10,14 +10,13 @@ # # This file is part of the Antares project. -from pydantic import BaseModel - +from antarest.core.serialization import AntaresBaseModel from antarest.matrixstore.service import ISimpleMatrixService from antarest.study.storage.patch_service import PatchService from antarest.study.storage.variantstudy.business.matrix_constants_generator import GeneratorMatrixConstants -class CommandContext(BaseModel): +class CommandContext(AntaresBaseModel): generator_matrix_constants: GeneratorMatrixConstants matrix_service: ISimpleMatrixService patch_service: PatchService diff --git a/antarest/study/storage/variantstudy/model/model.py b/antarest/study/storage/variantstudy/model/model.py index 0be3c75353..3814b2519c 100644 --- a/antarest/study/storage/variantstudy/model/model.py +++ b/antarest/study/storage/variantstudy/model/model.py @@ -14,9 +14,9 @@ import uuid import typing_extensions as te -from pydantic import BaseModel from antarest.core.model import JSON +from antarest.core.serialization import AntaresBaseModel from antarest.study.model import StudyMetadataDTO LegacyDetailsDTO = t.Tuple[str, bool, str] @@ -45,7 +45,7 @@ class NewDetailsDTO(te.TypedDict): DetailsDTO = t.Union[LegacyDetailsDTO, NewDetailsDTO] -class GenerationResultInfoDTO(BaseModel): +class GenerationResultInfoDTO(AntaresBaseModel): """ Result information of a snapshot generation process. @@ -58,7 +58,7 @@ class GenerationResultInfoDTO(BaseModel): details: t.MutableSequence[DetailsDTO] -class CommandDTO(BaseModel): +class CommandDTO(AntaresBaseModel): """ This class represents a command. @@ -75,7 +75,7 @@ class CommandDTO(BaseModel): version: int = 1 -class CommandResultDTO(BaseModel): +class CommandResultDTO(AntaresBaseModel): """ This class represents the result of a command. diff --git a/antarest/worker/archive_worker.py b/antarest/worker/archive_worker.py index 4fbc6a0631..a488d42d0d 100644 --- a/antarest/worker/archive_worker.py +++ b/antarest/worker/archive_worker.py @@ -13,10 +13,9 @@ import logging from pathlib import Path -from pydantic import BaseModel - from antarest.core.config import Config from antarest.core.interfaces.eventbus import IEventBus +from antarest.core.serialization import AntaresBaseModel from antarest.core.tasks.model import TaskResult from antarest.core.utils.utils import StopWatch, unzip from antarest.worker.worker import AbstractWorker, WorkerTaskCommand @@ -24,7 +23,7 @@ logger = logging.getLogger(__name__) -class ArchiveTaskArgs(BaseModel): +class ArchiveTaskArgs(AntaresBaseModel): src: str dest: str remove_src: bool = False diff --git a/antarest/worker/simulator_worker.py b/antarest/worker/simulator_worker.py index 583f340e7a..5dba1d13db 100644 --- a/antarest/worker/simulator_worker.py +++ b/antarest/worker/simulator_worker.py @@ -18,11 +18,10 @@ from pathlib import Path from typing import cast -from pydantic import BaseModel - from antarest.core.cache.business.local_chache import LocalCache from antarest.core.config import Config, LocalConfig from antarest.core.interfaces.eventbus import IEventBus +from antarest.core.serialization import AntaresBaseModel from antarest.core.tasks.model import TaskResult from antarest.core.utils.fastapi_sqlalchemy import db from antarest.launcher.adapters.log_manager import follow @@ -38,7 +37,7 @@ GENERATE_KIRSHOFF_CONSTRAINTS_TASK_NAME = "generate-kirshoff-constraints" -class GenerateTimeseriesTaskArgs(BaseModel): +class GenerateTimeseriesTaskArgs(AntaresBaseModel): study_id: str study_path: str managed: bool diff --git a/antarest/worker/worker.py b/antarest/worker/worker.py index 7dc2534764..f73dd551f0 100644 --- a/antarest/worker/worker.py +++ b/antarest/worker/worker.py @@ -16,11 +16,10 @@ from concurrent.futures import Future, ThreadPoolExecutor from typing import Any, Dict, List, Union -from pydantic import BaseModel - from antarest.core.interfaces.eventbus import Event, EventType, IEventBus from antarest.core.interfaces.service import IService from antarest.core.model import PermissionInfo, PublicMode +from antarest.core.serialization import AntaresBaseModel from antarest.core.tasks.model import TaskResult logger = logging.getLogger(__name__) @@ -28,12 +27,12 @@ MAX_WORKERS = 10 -class WorkerTaskResult(BaseModel): +class WorkerTaskResult(AntaresBaseModel): task_id: str task_result: TaskResult -class WorkerTaskCommand(BaseModel): +class WorkerTaskCommand(AntaresBaseModel): task_id: str task_type: str task_args: Dict[str, Union[int, float, bool, str]] diff --git a/tests/integration/study_data_blueprint/test_thermal.py b/tests/integration/study_data_blueprint/test_thermal.py index 6567fc205f..de00145805 100644 --- a/tests/integration/study_data_blueprint/test_thermal.py +++ b/tests/integration/study_data_blueprint/test_thermal.py @@ -297,22 +297,17 @@ class TestThermal: @pytest.mark.parametrize( "version", [pytest.param(0, id="No Upgrade"), pytest.param(860, id="v8.6"), pytest.param(870, id="v8.7")] ) - def test_lifecycle( - self, client: TestClient, user_access_token: str, internal_study_id: str, admin_access_token: str, version: int - ) -> None: + def test_lifecycle(self, client: TestClient, user_access_token: str, internal_study_id: str, version: int) -> None: + client.headers = {"Authorization": f"Bearer {user_access_token}"} # ============================= # STUDY UPGRADE # ============================= if version != 0: - res = client.put( - f"/v1/studies/{internal_study_id}/upgrade", - headers={"Authorization": f"Bearer {admin_access_token}"}, - params={"target_version": version}, - ) + res = client.put(f"/v1/studies/{internal_study_id}/upgrade", params={"target_version": version}) res.raise_for_status() task_id = res.json() - task = wait_task_completion(client, admin_access_token, task_id) + task = wait_task_completion(client, user_access_token, task_id) from antarest.core.tasks.model import TaskStatus assert task.status == TaskStatus.COMPLETED, task @@ -347,14 +342,18 @@ def test_lifecycle( # or an invalid name should also raise a validation error. attempts = [{}, {"name": ""}, {"name": "!??"}] for attempt in attempts: - res = client.post( - f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal", - headers={"Authorization": f"Bearer {user_access_token}"}, - json=attempt, - ) + res = client.post(f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal", json=attempt) assert res.status_code == 422, res.json() assert res.json()["exception"] in {"ValidationError", "RequestValidationError"}, res.json() + # creating a thermal cluster with a name as a string should not raise an Exception + res = client.post(f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal", json={"name": 111}) + assert res.status_code == 200, res.json() + res = client.request( + "DELETE", f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal", json=["111"] + ) + assert res.status_code == 204, res.json() + # We can create a thermal cluster with the following properties: fr_gas_conventional_props = { **DEFAULT_PROPERTIES, @@ -371,9 +370,7 @@ def test_lifecycle( "marketBidCost": 181.267, } res = client.post( - f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal", - headers={"Authorization": f"Bearer {user_access_token}"}, - json=fr_gas_conventional_props, + f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal", json=fr_gas_conventional_props ) assert res.status_code == 200, res.json() fr_gas_conventional_id = res.json()["id"] @@ -395,10 +392,7 @@ def test_lifecycle( assert res.json() == fr_gas_conventional_cfg # reading the properties of a thermal cluster - res = client.get( - f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal/{fr_gas_conventional_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, - ) + res = client.get(f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal/{fr_gas_conventional_id}") assert res.status_code == 200, res.json() assert res.json() == fr_gas_conventional_cfg @@ -410,17 +404,11 @@ def test_lifecycle( matrix_path = f"input/thermal/prepro/{area_id}/{fr_gas_conventional_id.lower()}/data" args = {"target": matrix_path, "matrix": matrix} res = client.post( - f"/v1/studies/{internal_study_id}/commands", - json=[{"action": "replace_matrix", "args": args}], - headers={"Authorization": f"Bearer {user_access_token}"}, + f"/v1/studies/{internal_study_id}/commands", json=[{"action": "replace_matrix", "args": args}] ) assert res.status_code in {200, 201}, res.json() - res = client.get( - f"/v1/studies/{internal_study_id}/raw", - params={"path": matrix_path}, - headers={"Authorization": f"Bearer {user_access_token}"}, - ) + res = client.get(f"/v1/studies/{internal_study_id}/raw", params={"path": matrix_path}) assert res.status_code == 200 assert res.json()["data"] == matrix @@ -429,17 +417,13 @@ def test_lifecycle( # ================================== # Reading the list of thermal clusters - res = client.get( - f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal", - headers={"Authorization": f"Bearer {user_access_token}"}, - ) + res = client.get(f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal") assert res.status_code == 200, res.json() assert res.json() == EXISTING_CLUSTERS + [fr_gas_conventional_cfg] # updating properties res = client.patch( f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal/{fr_gas_conventional_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, json={ "name": "FR_Gas conventional old 1", "nominalCapacity": 32.1, @@ -453,10 +437,7 @@ def test_lifecycle( } assert res.json() == fr_gas_conventional_cfg - res = client.get( - f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal/{fr_gas_conventional_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, - ) + res = client.get(f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal/{fr_gas_conventional_id}") assert res.status_code == 200, res.json() assert res.json() == fr_gas_conventional_cfg @@ -467,7 +448,6 @@ def test_lifecycle( # updating properties res = client.patch( f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal/{fr_gas_conventional_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, json={ "marginalCost": 182.456, "startupCost": 6140.8, @@ -489,24 +469,19 @@ def test_lifecycle( bad_properties = {"unitCount": 0} res = client.patch( f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal/{fr_gas_conventional_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, json=bad_properties, ) assert res.status_code == 422, res.json() assert res.json()["exception"] == "RequestValidationError", res.json() # The thermal cluster properties should not have been updated. - res = client.get( - f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal/{fr_gas_conventional_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, - ) + res = client.get(f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal/{fr_gas_conventional_id}") assert res.status_code == 200, res.json() assert res.json() == fr_gas_conventional_cfg # Update with a pollutant. Should succeed even with versions prior to v8.6 res = client.patch( f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal/{fr_gas_conventional_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, json={"nox": 10.0}, ) assert res.status_code == 200 @@ -514,7 +489,6 @@ def test_lifecycle( # Update with the field `efficiency`. Should succeed even with versions prior to v8.7 res = client.patch( f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal/{fr_gas_conventional_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, json={"efficiency": 97.0}, ) assert res.status_code == 200 @@ -526,7 +500,6 @@ def test_lifecycle( new_name = "Duplicate of Fr_Gas_Conventional" res = client.post( f"/v1/studies/{internal_study_id}/areas/{area_id}/thermals/{fr_gas_conventional_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, params={"newName": new_name}, ) assert res.status_code in {200, 201}, res.json() @@ -544,11 +517,7 @@ def test_lifecycle( # asserts the matrix has also been duplicated new_cluster_matrix_path = f"input/thermal/prepro/{area_id}/{duplicated_id.lower()}/data" - res = client.get( - f"/v1/studies/{internal_study_id}/raw", - params={"path": new_cluster_matrix_path}, - headers={"Authorization": f"Bearer {user_access_token}"}, - ) + res = client.get(f"/v1/studies/{internal_study_id}/raw", params={"path": new_cluster_matrix_path}) assert res.status_code == 200 assert res.json()["data"] == matrix @@ -558,8 +527,7 @@ def test_lifecycle( # Everything is fine at the beginning res = client.get( - f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal/{fr_gas_conventional_id}/validate", - headers={"Authorization": f"Bearer {user_access_token}"}, + f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal/{fr_gas_conventional_id}/validate" ) assert res.status_code == 200 assert res.json() is True @@ -575,8 +543,7 @@ def test_lifecycle( # Validation should fail res = client.get( - f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal/{fr_gas_conventional_id}/validate", - headers={"Authorization": f"Bearer {user_access_token}"}, + f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal/{fr_gas_conventional_id}/validate" ) assert res.status_code == 422 obj = res.json() @@ -594,8 +561,7 @@ def test_lifecycle( # Validation should succeed again res = client.get( - f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal/{fr_gas_conventional_id}/validate", - headers={"Authorization": f"Bearer {user_access_token}"}, + f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal/{fr_gas_conventional_id}/validate" ) assert res.status_code == 200 assert res.json() is True @@ -612,8 +578,7 @@ def test_lifecycle( # Validation should fail res = client.get( - f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal/{fr_gas_conventional_id}/validate", - headers={"Authorization": f"Bearer {user_access_token}"}, + f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal/{fr_gas_conventional_id}/validate" ) assert res.status_code == 422 obj = res.json() @@ -648,19 +613,12 @@ def test_lifecycle( bc_obj["lessTermMatrix"] = matrix.tolist() # noinspection SpellCheckingInspection - res = client.post( - f"/v1/studies/{internal_study_id}/bindingconstraints", - json=bc_obj, - headers={"Authorization": f"Bearer {user_access_token}"}, - ) + res = client.post(f"/v1/studies/{internal_study_id}/bindingconstraints", json=bc_obj) assert res.status_code in {200, 201}, res.json() # verify that we can't delete the thermal cluster because it is referenced in a binding constraint res = client.request( - "DELETE", - f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal", - headers={"Authorization": f"Bearer {user_access_token}"}, - json=[fr_gas_conventional_id], + "DELETE", f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal", json=[fr_gas_conventional_id] ) assert res.status_code == 403, res.json() description = res.json()["description"] @@ -668,37 +626,23 @@ def test_lifecycle( assert res.json()["exception"] == "ReferencedObjectDeletionNotAllowed" # delete the binding constraint - res = client.delete( - f"/v1/studies/{internal_study_id}/bindingconstraints/{bc_obj['name']}", - headers={"Authorization": f"Bearer {user_access_token}"}, - ) + res = client.delete(f"/v1/studies/{internal_study_id}/bindingconstraints/{bc_obj['name']}") assert res.status_code == 200, res.json() # Now we can delete the thermal cluster res = client.request( - "DELETE", - f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal", - headers={"Authorization": f"Bearer {user_access_token}"}, - json=[fr_gas_conventional_id], + "DELETE", f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal", json=[fr_gas_conventional_id] ) assert res.status_code == 204, res.json() # check that the binding constraint has been deleted # noinspection SpellCheckingInspection - res = client.get( - f"/v1/studies/{internal_study_id}/bindingconstraints", - headers={"Authorization": f"Bearer {user_access_token}"}, - ) + res = client.get(f"/v1/studies/{internal_study_id}/bindingconstraints") assert res.status_code == 200, res.json() assert len(res.json()) == 0 # If the thermal cluster list is empty, the deletion should be a no-op. - res = client.request( - "DELETE", - f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal", - headers={"Authorization": f"Bearer {user_access_token}"}, - json=[], - ) + res = client.request("DELETE", f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal", json=[]) assert res.status_code == 204, res.json() assert res.text in {"", "null"} # Old FastAPI versions return 'null'. @@ -709,17 +653,13 @@ def test_lifecycle( res = client.request( "DELETE", f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal", - headers={"Authorization": f"Bearer {user_access_token}"}, json=[other_cluster_id1, other_cluster_id2], ) assert res.status_code == 204, res.json() assert res.text in {"", "null"} # Old FastAPI versions return 'null'. # The list of thermal clusters should not contain the deleted ones. - res = client.get( - f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal", - headers={"Authorization": f"Bearer {user_access_token}"}, - ) + res = client.get(f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal") assert res.status_code == 200, res.json() deleted_clusters = [other_cluster_id1, other_cluster_id2, fr_gas_conventional_id] for cluster in res.json(): @@ -734,7 +674,6 @@ def test_lifecycle( res = client.request( "DELETE", f"/v1/studies/{internal_study_id}/areas/{bad_area_id}/clusters/thermal", - headers={"Authorization": f"Bearer {user_access_token}"}, json=[fr_gas_conventional_id], ) assert res.status_code == 500, res.json() @@ -750,10 +689,7 @@ def test_lifecycle( # Check DELETE with the wrong value of `study_id` bad_study_id = "bad_study" res = client.request( - "DELETE", - f"/v1/studies/{bad_study_id}/areas/{area_id}/clusters/thermal", - headers={"Authorization": f"Bearer {user_access_token}"}, - json=[fr_gas_conventional_id], + "DELETE", f"/v1/studies/{bad_study_id}/areas/{area_id}/clusters/thermal", json=[fr_gas_conventional_id] ) obj = res.json() description = obj["description"] @@ -762,8 +698,7 @@ def test_lifecycle( # Check GET with wrong `area_id` res = client.get( - f"/v1/studies/{internal_study_id}/areas/{bad_area_id}/clusters/thermal/{fr_gas_conventional_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, + f"/v1/studies/{internal_study_id}/areas/{bad_area_id}/clusters/thermal/{fr_gas_conventional_id}" ) obj = res.json() description = obj["description"] @@ -771,10 +706,7 @@ def test_lifecycle( assert res.status_code == 404, res.json() # Check GET with wrong `study_id` - res = client.get( - f"/v1/studies/{bad_study_id}/areas/{area_id}/clusters/thermal/{fr_gas_conventional_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, - ) + res = client.get(f"/v1/studies/{bad_study_id}/areas/{area_id}/clusters/thermal/{fr_gas_conventional_id}") obj = res.json() description = obj["description"] assert res.status_code == 404, res.json() @@ -783,7 +715,6 @@ def test_lifecycle( # Check POST with wrong `study_id` res = client.post( f"/v1/studies/{bad_study_id}/areas/{area_id}/clusters/thermal", - headers={"Authorization": f"Bearer {user_access_token}"}, json={"name": fr_gas_conventional, "group": "Battery"}, ) obj = res.json() @@ -794,7 +725,6 @@ def test_lifecycle( # Check POST with wrong `area_id` res = client.post( f"/v1/studies/{internal_study_id}/areas/{bad_area_id}/clusters/thermal", - headers={"Authorization": f"Bearer {user_access_token}"}, json={ "name": fr_gas_conventional, "group": "Oil", @@ -817,7 +747,6 @@ def test_lifecycle( # Check POST with wrong `group` res = client.post( f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal", - headers={"Authorization": f"Bearer {user_access_token}"}, json={"name": fr_gas_conventional, "group": "GroupFoo"}, ) assert res.status_code == 200, res.json() @@ -828,7 +757,6 @@ def test_lifecycle( # Check PATCH with the wrong `area_id` res = client.patch( f"/v1/studies/{internal_study_id}/areas/{bad_area_id}/clusters/thermal/{fr_gas_conventional_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, json={ "group": "Oil", "unitCount": 1, @@ -850,7 +778,6 @@ def test_lifecycle( bad_cluster_id = "bad_cluster" res = client.patch( f"/v1/studies/{internal_study_id}/areas/{area_id}/clusters/thermal/{bad_cluster_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, json={ "group": "Oil", "unitCount": 1, @@ -871,7 +798,6 @@ def test_lifecycle( # Check PATCH with the wrong `study_id` res = client.patch( f"/v1/studies/{bad_study_id}/areas/{area_id}/clusters/thermal/{fr_gas_conventional_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, json={ "group": "Oil", "unitCount": 1, @@ -891,9 +817,7 @@ def test_lifecycle( # Cannot duplicate a fake cluster unknown_id = "unknown" res = client.post( - f"/v1/studies/{internal_study_id}/areas/{area_id}/thermals/{unknown_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, - params={"newName": "duplicate"}, + f"/v1/studies/{internal_study_id}/areas/{area_id}/thermals/{unknown_id}", params={"newName": "duplicate"} ) assert res.status_code == 404, res.json() obj = res.json() @@ -903,7 +827,6 @@ def test_lifecycle( # Cannot duplicate with an existing id res = client.post( f"/v1/studies/{internal_study_id}/areas/{area_id}/thermals/{duplicated_id}", - headers={"Authorization": f"Bearer {user_access_token}"}, params={"newName": new_name.upper()}, # different case but same ID ) assert res.status_code == 409, res.json() diff --git a/tests/study/business/test_all_optional_metaclass.py b/tests/study/business/test_all_optional_metaclass.py index b8d1197c5e..5001019595 100644 --- a/tests/study/business/test_all_optional_metaclass.py +++ b/tests/study/business/test_all_optional_metaclass.py @@ -10,12 +10,13 @@ # # This file is part of the Antares project. -from pydantic import BaseModel, Field +from pydantic import Field +from antarest.core.serialization import AntaresBaseModel from antarest.study.business.all_optional_meta import all_optional_model, camel_case_model -class Model(BaseModel): +class Model(AntaresBaseModel): float_with_default: float = 1 float_without_default: float boolean_with_default: bool = True From 85bf87081cc41d78dc566f04e6aa365ef686da4b Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Wed, 2 Oct 2024 11:10:51 +0200 Subject: [PATCH 019/182] fix(api): allow `min_stable_power` to be a float inside API response (#2167) --- antarest/study/business/area_management.py | 2 +- tests/integration/study_data_blueprint/test_thermal.py | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/antarest/study/business/area_management.py b/antarest/study/business/area_management.py index 992cc31984..9712a3daba 100644 --- a/antarest/study/business/area_management.py +++ b/antarest/study/business/area_management.py @@ -63,7 +63,7 @@ class ClusterInfoDTO(PatchCluster): unitcount: int = 0 nominalcapacity: float = 0 group: t.Optional[str] = None - min_stable_power: t.Optional[int] = None + min_stable_power: t.Optional[float] = None min_up_time: t.Optional[int] = None min_down_time: t.Optional[int] = None spinning: t.Optional[float] = None diff --git a/tests/integration/study_data_blueprint/test_thermal.py b/tests/integration/study_data_blueprint/test_thermal.py index de00145805..6328606247 100644 --- a/tests/integration/study_data_blueprint/test_thermal.py +++ b/tests/integration/study_data_blueprint/test_thermal.py @@ -396,6 +396,10 @@ def test_lifecycle(self, client: TestClient, user_access_token: str, internal_st assert res.status_code == 200, res.json() assert res.json() == fr_gas_conventional_cfg + # asserts it didn't break the allocation matrix + res = client.get(f"/v1/studies/{internal_study_id}/areas/{area_id}/hydro/allocation/form") + assert res.status_code == 200, res.json() + # ========================== # THERMAL CLUSTER MATRICES # ========================== From 31acc52f90c7d4dda323f123d3228c6b942e95b9 Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Wed, 2 Oct 2024 15:54:03 +0200 Subject: [PATCH 020/182] feat(version): use class StudyVersion to handle versions (#2156) --- .../launcher/adapters/abstractlauncher.py | 4 +- .../adapters/local_launcher/local_launcher.py | 6 +- .../adapters/slurm_launcher/slurm_launcher.py | 15 ++- antarest/launcher/service.py | 5 +- .../business/adequacy_patch_management.py | 22 ++-- .../advanced_parameters_management.py | 5 +- .../business/areas/properties_management.py | 4 +- .../business/areas/renewable_management.py | 18 +-- .../business/areas/st_storage_management.py | 24 ++-- .../business/areas/thermal_management.py | 25 +++-- .../business/binding_constraint_management.py | 37 ++++--- antarest/study/business/general_management.py | 11 +- .../study/business/optimization_management.py | 2 +- .../business/thematic_trimming_field_infos.py | 103 ++++++++++-------- .../business/thematic_trimming_management.py | 10 +- .../business/timeseries_config_management.py | 8 +- antarest/study/business/utils.py | 5 +- antarest/study/model.py | 67 ++++++++---- antarest/study/service.py | 4 +- .../study/storage/abstract_storage_service.py | 2 +- antarest/study/storage/matrix_profile.py | 26 +++-- .../rawstudy/model/filesystem/config/files.py | 15 ++- .../rawstudy/model/filesystem/config/model.py | 15 ++- .../model/filesystem/config/renewable.py | 9 +- .../model/filesystem/config/st_storage.py | 13 ++- .../model/filesystem/config/thermal.py | 10 +- .../filesystem/root/input/areas/item/item.py | 3 +- .../input/hydro/common/capacity/capacity.py | 16 ++- .../filesystem/root/input/hydro/hydro_ini.py | 5 +- .../root/input/hydro/series/area/area.py | 8 +- .../model/filesystem/root/input/input.py | 8 +- .../filesystem/root/input/link/area/area.py | 3 +- .../root/input/link/area/properties.py | 3 +- .../filesystem/root/settings/generaldata.py | 33 ++++-- .../root/settings/scenariobuilder.py | 17 ++- .../storage/rawstudy/raw_study_service.py | 6 +- .../study/storage/study_download_utils.py | 5 +- antarest/study/storage/utils.py | 4 +- .../business/command_extractor.py | 7 +- .../business/matrix_constants_generator.py | 14 ++- .../storage/variantstudy/business/utils.py | 3 +- .../variantstudy/model/command/create_area.py | 9 +- .../command/create_binding_constraint.py | 29 +++-- .../model/command/create_cluster.py | 3 +- .../variantstudy/model/command/create_link.py | 3 +- .../model/command/create_st_storage.py | 3 +- .../variantstudy/model/command/remove_area.py | 26 +++-- .../command/remove_binding_constraint.py | 3 +- .../variantstudy/model/command/remove_link.py | 3 +- .../model/command/remove_st_storage.py | 3 +- .../command/update_binding_constraint.py | 7 +- antarest/tools/cli.py | 12 +- antarest/tools/lib.py | 7 +- tests/cache/test_local_cache.py | 4 +- tests/cache/test_redis_cache.py | 4 +- .../studies_blueprint/test_study_version.py | 84 ++++++++++++++ .../test_integration_variantmanager_tool.py | 1 - tests/launcher/test_slurm_launcher.py | 3 +- tests/storage/business/test_config_manager.py | 12 +- .../business/test_raw_study_service.py | 2 +- .../filesystem/config/test_config_files.py | 10 +- tests/storage/test_service.py | 2 +- tests/storage/web/test_studies_bp.py | 2 +- 63 files changed, 528 insertions(+), 304 deletions(-) create mode 100644 tests/integration/studies_blueprint/test_study_version.py diff --git a/antarest/launcher/adapters/abstractlauncher.py b/antarest/launcher/adapters/abstractlauncher.py index 4b845f8de0..48f18e78e0 100644 --- a/antarest/launcher/adapters/abstractlauncher.py +++ b/antarest/launcher/adapters/abstractlauncher.py @@ -15,6 +15,8 @@ from pathlib import Path from typing import Callable, Dict, List, NamedTuple, Optional +from antares.study.version import SolverVersion + from antarest.core.config import Config from antarest.core.interfaces.cache import ICache from antarest.core.interfaces.eventbus import Event, EventChannelDirectory, EventType, IEventBus @@ -71,7 +73,7 @@ def run_study( self, study_uuid: str, job_id: str, - version: str, + version: SolverVersion, launcher_parameters: LauncherParametersDTO, params: RequestParameters, ) -> None: diff --git a/antarest/launcher/adapters/local_launcher/local_launcher.py b/antarest/launcher/adapters/local_launcher/local_launcher.py index 4db8beb5ae..a3ad8fc703 100644 --- a/antarest/launcher/adapters/local_launcher/local_launcher.py +++ b/antarest/launcher/adapters/local_launcher/local_launcher.py @@ -22,6 +22,8 @@ from typing import Callable, Dict, Optional, Tuple, cast from uuid import UUID +from antares.study.version import SolverVersion + from antarest.core.config import Config from antarest.core.interfaces.cache import ICache from antarest.core.interfaces.eventbus import IEventBus @@ -75,11 +77,11 @@ def run_study( self, study_uuid: str, job_id: str, - version: str, + version: SolverVersion, launcher_parameters: LauncherParametersDTO, params: RequestParameters, ) -> None: - antares_solver_path = self._select_best_binary(version) + antares_solver_path = self._select_best_binary(f"{version:ddd}") job = threading.Thread( target=LocalLauncher._compute, diff --git a/antarest/launcher/adapters/slurm_launcher/slurm_launcher.py b/antarest/launcher/adapters/slurm_launcher/slurm_launcher.py index 74132b89f0..577ee031b5 100644 --- a/antarest/launcher/adapters/slurm_launcher/slurm_launcher.py +++ b/antarest/launcher/adapters/slurm_launcher/slurm_launcher.py @@ -22,6 +22,7 @@ import typing as t from pathlib import Path +from antares.study.version import SolverVersion from antareslauncher.data_repo.data_repo_tinydb import DataRepoTinydb from antareslauncher.main import MainParameters, run_with from antareslauncher.main_option_parser import MainOptionParser, ParserParameters @@ -496,7 +497,7 @@ def _run_study( study_uuid: str, launch_uuid: str, launcher_params: LauncherParametersDTO, - version: str, + version: SolverVersion, ) -> None: study_path = Path(self.launcher_args.studies_in) / launch_uuid @@ -512,7 +513,7 @@ def _run_study( append_log(launch_uuid, "Checking study version...") available_versions = self.slurm_config.antares_versions_on_remote_server - if version not in available_versions: + if f"{version:ddd}" not in available_versions: raise VersionNotSupportedError( f"Study version '{version}' is not supported. Currently supported versions are" f" {', '.join(available_versions)}" @@ -591,7 +592,7 @@ def run_study( self, study_uuid: str, job_id: str, - version: str, + version: SolverVersion, launcher_parameters: LauncherParametersDTO, params: RequestParameters, ) -> None: @@ -644,11 +645,15 @@ def kill_job(self, job_id: str, dispatch: bool = True) -> None: ) -def _override_solver_version(study_path: Path, version: str) -> None: +def _override_solver_version(study_path: Path, version: SolverVersion) -> None: study_info_path = study_path / "study.antares" study_info = IniReader().read(study_info_path) if "antares" in study_info: - study_info["antares"]["solver_version"] = version + if version.major < 9: # should be written as XYZ + version_to_write = f"{version:ddd}" + else: # should be written as X.Y + version_to_write = f"{version:2d}" + study_info["antares"]["solver_version"] = version_to_write IniWriter().write(study_info, study_info_path) else: logger.warning("Failed to find antares study info") diff --git a/antarest/launcher/service.py b/antarest/launcher/service.py index 2dad1aef00..68be0b65a8 100644 --- a/antarest/launcher/service.py +++ b/antarest/launcher/service.py @@ -20,6 +20,7 @@ from typing import Dict, List, Optional, cast from uuid import UUID, uuid4 +from antares.study.version import SolverVersion from fastapi import HTTPException from antarest.core.config import Config, Launcher, NbCoresConfig @@ -228,7 +229,7 @@ def run_study( job_uuid = self._generate_new_id() logger.info(f"New study launch (study={study_uuid}, job_id={job_uuid})") study_info = self.study_service.get_study_information(uuid=study_uuid, params=params) - solver_version = study_version or study_info.version + solver_version = SolverVersion.parse(study_version or study_info.version) self._assert_launcher_is_initialized(launcher) assert_permission( @@ -252,7 +253,7 @@ def run_study( self.launchers[launcher].run_study( study_uuid, job_uuid, - str(solver_version), + solver_version, launcher_parameters, params, ) diff --git a/antarest/study/business/adequacy_patch_management.py b/antarest/study/business/adequacy_patch_management.py index ddc2214891..26dc1ec548 100644 --- a/antarest/study/business/adequacy_patch_management.py +++ b/antarest/study/business/adequacy_patch_management.py @@ -17,7 +17,7 @@ from antarest.study.business.all_optional_meta import all_optional_model from antarest.study.business.enum_ignore_case import EnumIgnoreCase from antarest.study.business.utils import GENERAL_DATA_PATH, FieldInfo, FormFieldsBaseModel, execute_or_add_commands -from antarest.study.model import Study +from antarest.study.model import STUDY_VERSION_8_3, STUDY_VERSION_8_5, Study from antarest.study.storage.storage_service import StudyStorageService from antarest.study.storage.variantstudy.model.command.update_config import UpdateConfig @@ -52,47 +52,47 @@ class AdequacyPatchFormFields(FormFieldsBaseModel): "enable_adequacy_patch": { "path": f"{ADEQUACY_PATCH_PATH}/include-adq-patch", "default_value": False, - "start_version": 830, + "start_version": STUDY_VERSION_8_3, }, "ntc_from_physical_areas_out_to_physical_areas_in_adequacy_patch": { "path": f"{ADEQUACY_PATCH_PATH}/set-to-null-ntc-from-physical-out-to-physical-in-for-first-step", "default_value": True, - "start_version": 830, + "start_version": STUDY_VERSION_8_3, }, "ntc_between_physical_areas_out_adequacy_patch": { "path": f"{ADEQUACY_PATCH_PATH}/set-to-null-ntc-between-physical-out-for-first-step", "default_value": True, - "start_version": 830, + "start_version": STUDY_VERSION_8_3, }, "price_taking_order": { "path": f"{ADEQUACY_PATCH_PATH}/price-taking-order", "default_value": PriceTakingOrder.DENS.value, - "start_version": 850, + "start_version": STUDY_VERSION_8_5, }, "include_hurdle_cost_csr": { "path": f"{ADEQUACY_PATCH_PATH}/include-hurdle-cost-csr", "default_value": False, - "start_version": 850, + "start_version": STUDY_VERSION_8_5, }, "check_csr_cost_function": { "path": f"{ADEQUACY_PATCH_PATH}/check-csr-cost-function", "default_value": False, - "start_version": 850, + "start_version": STUDY_VERSION_8_5, }, "threshold_initiate_curtailment_sharing_rule": { "path": f"{ADEQUACY_PATCH_PATH}/threshold-initiate-curtailment-sharing-rule", "default_value": 0.0, - "start_version": 850, + "start_version": STUDY_VERSION_8_5, }, "threshold_display_local_matching_rule_violations": { "path": f"{ADEQUACY_PATCH_PATH}/threshold-display-local-matching-rule-violations", "default_value": 0.0, - "start_version": 850, + "start_version": STUDY_VERSION_8_5, }, "threshold_csr_variable_bounds_relaxation": { "path": f"{ADEQUACY_PATCH_PATH}/threshold-csr-variable-bounds-relaxation", "default_value": 3, - "start_version": 850, + "start_version": STUDY_VERSION_8_5, }, } @@ -113,7 +113,7 @@ def get_value(field_info: FieldInfo) -> Any: path = field_info["path"] start_version = field_info.get("start_version", -1) target_name = path.split("/")[-1] - is_in_version = file_study.config.version >= start_version # type: ignore + is_in_version = file_study.config.version >= start_version return parent.get(target_name, field_info["default_value"]) if is_in_version else None diff --git a/antarest/study/business/advanced_parameters_management.py b/antarest/study/business/advanced_parameters_management.py index 3e68ff0aa1..87f6939a91 100644 --- a/antarest/study/business/advanced_parameters_management.py +++ b/antarest/study/business/advanced_parameters_management.py @@ -12,6 +12,7 @@ from typing import Any, Dict, List +from antares.study.version import StudyVersion from pydantic import field_validator from pydantic.types import StrictInt, StrictStr @@ -19,7 +20,7 @@ from antarest.study.business.all_optional_meta import all_optional_model from antarest.study.business.enum_ignore_case import EnumIgnoreCase from antarest.study.business.utils import GENERAL_DATA_PATH, FieldInfo, FormFieldsBaseModel, execute_or_add_commands -from antarest.study.model import Study +from antarest.study.model import STUDY_VERSION_8_8, Study from antarest.study.storage.storage_service import StudyStorageService from antarest.study.storage.variantstudy.model.command.update_config import UpdateConfig @@ -255,7 +256,7 @@ def set_field_values(self, study: Study, field_values: AdvancedParamsFormFields) if ( field_name == "unit_commitment_mode" and value == UnitCommitmentMode.MILP - and int(study.version) < 880 + and StudyVersion.parse(study.version) < STUDY_VERSION_8_8 ): raise InvalidFieldForVersionError("Unit commitment mode `MILP` only exists in v8.8+ studies") diff --git a/antarest/study/business/areas/properties_management.py b/antarest/study/business/areas/properties_management.py index ac3dbb902a..ae11112a28 100644 --- a/antarest/study/business/areas/properties_management.py +++ b/antarest/study/business/areas/properties_management.py @@ -19,7 +19,7 @@ from antarest.core.exceptions import ChildNotFoundError from antarest.study.business.all_optional_meta import all_optional_model from antarest.study.business.utils import FieldInfo, FormFieldsBaseModel, execute_or_add_commands -from antarest.study.model import Study +from antarest.study.model import STUDY_VERSION_8_3, Study from antarest.study.storage.rawstudy.model.filesystem.config.area import AdequacyPatchMode from antarest.study.storage.storage_service import StudyStorageService from antarest.study.storage.variantstudy.model.command.update_config import UpdateConfig @@ -113,7 +113,7 @@ def validation(cls, values: t.Dict[str, t.Any]) -> t.Dict[str, t.Any]: "adequacy_patch_mode": { "path": f"{AREA_PATH}/adequacy_patch/adequacy-patch/adequacy-patch-mode", "default_value": AdequacyPatchMode.OUTSIDE.value, - "start_version": 830, + "start_version": STUDY_VERSION_8_3, }, } diff --git a/antarest/study/business/areas/renewable_management.py b/antarest/study/business/areas/renewable_management.py index 12af8abdb5..f102c6a251 100644 --- a/antarest/study/business/areas/renewable_management.py +++ b/antarest/study/business/areas/renewable_management.py @@ -13,6 +13,7 @@ import collections import typing as t +from antares.study.version import StudyVersion from pydantic import field_validator from antarest.core.exceptions import DuplicateRenewableCluster, RenewableClusterConfigNotFound, RenewableClusterNotFound @@ -82,7 +83,7 @@ def validate_name(cls, name: t.Optional[str]) -> str: raise ValueError("name must not be empty") return name - def to_config(self, study_version: t.Union[str, int]) -> RenewableConfigType: + def to_config(self, study_version: StudyVersion) -> RenewableConfigType: values = self.model_dump(by_alias=False, exclude_none=True) return create_renewable_config(study_version=study_version, **values) @@ -109,11 +110,11 @@ def json_schema_extra(schema: t.MutableMapping[str, t.Any]) -> None: def create_renewable_output( - study_version: t.Union[str, int], + study_version: str, cluster_id: str, config: t.Mapping[str, t.Any], ) -> "RenewableClusterOutput": - obj = create_renewable_config(study_version=study_version, **config, id=cluster_id) + obj = create_renewable_config(study_version=StudyVersion.parse(study_version), **config, id=cluster_id) kwargs = obj.model_dump(by_alias=False) return RenewableClusterOutput(**kwargs) @@ -182,12 +183,11 @@ def get_all_renewables_props( except KeyError: raise RenewableClusterConfigNotFound(path) - study_version = study.version renewables_by_areas: t.MutableMapping[str, t.MutableMapping[str, RenewableClusterOutput]] renewables_by_areas = collections.defaultdict(dict) for area_id, cluster_obj in clusters.items(): for cluster_id, cluster in cluster_obj.items(): - renewables_by_areas[area_id][cluster_id] = create_renewable_output(study_version, cluster_id, cluster) + renewables_by_areas[area_id][cluster_id] = create_renewable_output(study.version, cluster_id, cluster) return renewables_by_areas @@ -206,7 +206,7 @@ def create_cluster( The newly created cluster. """ file_study = self._get_file_study(study) - cluster = cluster_data.to_config(study.version) + cluster = cluster_data.to_config(StudyVersion.parse(study.version)) command = self._make_create_cluster_cmd(area_id, cluster) execute_or_add_commands( study, @@ -272,7 +272,7 @@ def update_cluster( RenewableClusterNotFound: If the cluster to update is not found. """ - study_version = study.version + study_version = StudyVersion.parse(study.version) file_study = self._get_file_study(study) path = _CLUSTER_PATH.format(area_id=area_id, cluster_id=cluster_id) @@ -356,7 +356,7 @@ def duplicate_cluster( current_cluster = self.get_cluster(study, area_id, source_id) current_cluster.name = new_cluster_name creation_form = RenewableClusterCreation(**current_cluster.model_dump(by_alias=False, exclude={"id"})) - new_config = creation_form.to_config(study.version) + new_config = creation_form.to_config(StudyVersion.parse(study.version)) create_cluster_cmd = self._make_create_cluster_cmd(area_id, new_config) # Matrix edition @@ -395,7 +395,7 @@ def update_renewables_props( # Convert the DTO to a configuration object and update the configuration file. properties = create_renewable_config( - study.version, **new_cluster.model_dump(by_alias=False, exclude_none=True) + StudyVersion.parse(study.version), **new_cluster.model_dump(by_alias=False, exclude_none=True) ) path = _CLUSTER_PATH.format(area_id=area_id, cluster_id=renewable_id) cmd = UpdateConfig( diff --git a/antarest/study/business/areas/st_storage_management.py b/antarest/study/business/areas/st_storage_management.py index 9f57cb50c1..7592d50423 100644 --- a/antarest/study/business/areas/st_storage_management.py +++ b/antarest/study/business/areas/st_storage_management.py @@ -15,6 +15,7 @@ import typing as t import numpy as np +from antares.study.version import StudyVersion from pydantic import field_validator, model_validator from typing_extensions import Literal @@ -31,7 +32,7 @@ from antarest.core.serialization import AntaresBaseModel from antarest.study.business.all_optional_meta import all_optional_model, camel_case_model from antarest.study.business.utils import execute_or_add_commands -from antarest.study.model import Study +from antarest.study.model import STUDY_VERSION_8_8, Study from antarest.study.storage.rawstudy.model.filesystem.config.model import transform_name_to_id from antarest.study.storage.rawstudy.model.filesystem.config.st_storage import ( STStorage880Config, @@ -86,7 +87,7 @@ def validate_name(cls, name: t.Optional[str]) -> str: return name # noinspection PyUnusedLocal - def to_config(self, study_version: t.Union[str, int]) -> STStorageConfigType: + def to_config(self, study_version: StudyVersion) -> STStorageConfigType: values = self.model_dump(by_alias=False, exclude_none=True) return create_st_storage_config(study_version=study_version, **values) @@ -240,7 +241,7 @@ def _get_values_by_ids(file_study: FileStudy, area_id: str) -> t.Mapping[str, t. def create_storage_output( - study_version: t.Union[str, int], + study_version: StudyVersion, cluster_id: str, config: t.Mapping[str, t.Any], ) -> "STStorageOutput": @@ -284,7 +285,7 @@ def create_storage( file_study = self._get_file_study(study) values_by_ids = _get_values_by_ids(file_study, area_id) - storage = form.to_config(study.version) + storage = form.to_config(StudyVersion.parse(study.version)) values = values_by_ids.get(storage.id) if values is not None: raise DuplicateSTStorage(area_id, storage.id) @@ -334,7 +335,7 @@ def get_storages( # Sort STStorageConfig by groups and then by name order_by = operator.attrgetter("group", "name") - study_version = int(study.version) + study_version = StudyVersion.parse(study.version) storages = [create_storage_output(study_version, storage_id, options) for storage_id, options in config.items()] return sorted(storages, key=order_by) @@ -365,7 +366,7 @@ def get_all_storages_props( except KeyError: raise STStorageConfigNotFound(path) from None - study_version = study.version + study_version = StudyVersion.parse(study.version) storages_by_areas: t.MutableMapping[str, t.MutableMapping[str, STStorageOutput]] storages_by_areas = collections.defaultdict(dict) for area_id, cluster_obj in storages.items(): @@ -394,7 +395,7 @@ def update_storages_props( # Convert the DTO to a configuration object and update the configuration file. properties = create_st_storage_config( - study.version, **new_cluster.model_dump(by_alias=False, exclude_none=True) + StudyVersion.parse(study.version), **new_cluster.model_dump(by_alias=False, exclude_none=True) ) path = _STORAGE_LIST_PATH.format(area_id=area_id, storage_id=storage_id) cmd = UpdateConfig( @@ -433,7 +434,7 @@ def get_storage( config = file_study.tree.get(path.split("/"), depth=1) except KeyError: raise STStorageNotFound(path, storage_id) from None - return create_storage_output(int(study.version), storage_id, config) + return create_storage_output(StudyVersion.parse(study.version), storage_id, config) def update_storage( self, @@ -453,7 +454,7 @@ def update_storage( Returns: Updated form of short-term storage. """ - study_version = study.version + study_version = StudyVersion.parse(study.version) # For variants, this method requires generating a snapshot, which takes time. # But sadly, there's no other way to prevent creating wrong commands. @@ -548,11 +549,12 @@ def duplicate_cluster(self, study: Study, area_id: str, source_id: str, new_clus current_cluster.name = new_cluster_name fields_to_exclude = {"id"} # We should remove the field 'enabled' for studies before v8.8 as it didn't exist - if int(study.version) < 880: + study_version = StudyVersion.parse(study.version) + if study_version < STUDY_VERSION_8_8: fields_to_exclude.add("enabled") creation_form = STStorageCreation(**current_cluster.model_dump(by_alias=False, exclude=fields_to_exclude)) - new_config = creation_form.to_config(study.version) + new_config = creation_form.to_config(study_version) create_cluster_cmd = self._make_create_cluster_cmd(area_id, new_config) # Matrix edition diff --git a/antarest/study/business/areas/thermal_management.py b/antarest/study/business/areas/thermal_management.py index c1a06068aa..d9679355fd 100644 --- a/antarest/study/business/areas/thermal_management.py +++ b/antarest/study/business/areas/thermal_management.py @@ -14,6 +14,7 @@ import typing as t from pathlib import Path +from antares.study.version import StudyVersion from pydantic import field_validator from antarest.core.exceptions import ( @@ -26,7 +27,7 @@ from antarest.core.model import JSON from antarest.study.business.all_optional_meta import all_optional_model, camel_case_model from antarest.study.business.utils import execute_or_add_commands -from antarest.study.model import Study +from antarest.study.model import STUDY_VERSION_8_7, Study from antarest.study.storage.rawstudy.model.filesystem.config.model import transform_name_to_id from antarest.study.storage.rawstudy.model.filesystem.config.thermal import ( Thermal870Config, @@ -90,7 +91,7 @@ def validate_name(cls, name: t.Optional[str]) -> str: raise ValueError("name must not be empty") return name - def to_config(self, study_version: t.Union[str, int]) -> ThermalConfigType: + def to_config(self, study_version: StudyVersion) -> ThermalConfigType: values = self.model_dump(by_alias=False, exclude_none=True) return create_thermal_config(study_version=study_version, **values) @@ -118,7 +119,7 @@ def json_schema_extra(schema: t.MutableMapping[str, t.Any]) -> None: def create_thermal_output( - study_version: t.Union[str, int], + study_version: StudyVersion, cluster_id: str, config: t.Mapping[str, t.Any], ) -> "ThermalClusterOutput": @@ -172,7 +173,7 @@ def get_cluster(self, study: Study, area_id: str, cluster_id: str) -> ThermalClu cluster = file_study.tree.get(path.split("/"), depth=1) except KeyError: raise ThermalClusterNotFound(path, cluster_id) from None - study_version = study.version + study_version = StudyVersion.parse(study.version) return create_thermal_output(study_version, cluster_id, cluster) def get_clusters( @@ -200,7 +201,7 @@ def get_clusters( clusters = file_study.tree.get(path.split("/"), depth=3) except KeyError: raise ThermalClusterConfigNotFound(path, area_id) from None - study_version = study.version + study_version = StudyVersion.parse(study.version) return [create_thermal_output(study_version, cluster_id, cluster) for cluster_id, cluster in clusters.items()] def get_all_thermals_props( @@ -230,7 +231,7 @@ def get_all_thermals_props( except KeyError: raise ThermalClusterConfigNotFound(path) from None - study_version = study.version + study_version = StudyVersion.parse(study.version) thermals_by_areas: t.MutableMapping[str, t.MutableMapping[str, ThermalClusterOutput]] thermals_by_areas = collections.defaultdict(dict) for area_id, cluster_obj in clusters.items(): @@ -259,7 +260,7 @@ def update_thermals_props( # Convert the DTO to a configuration object and update the configuration file. properties = create_thermal_config( - study.version, **new_cluster.model_dump(by_alias=False, exclude_none=True) + StudyVersion.parse(study.version), **new_cluster.model_dump(by_alias=False, exclude_none=True) ) path = _CLUSTER_PATH.format(area_id=area_id, cluster_id=thermal_id) cmd = UpdateConfig( @@ -292,7 +293,7 @@ def create_cluster(self, study: Study, area_id: str, cluster_data: ThermalCluste """ file_study = self._get_file_study(study) - cluster = cluster_data.to_config(study.version) + cluster = cluster_data.to_config(StudyVersion.parse(study.version)) command = self._make_create_cluster_cmd(area_id, cluster) execute_or_add_commands( study, @@ -340,7 +341,7 @@ def update_cluster( in the provided cluster_data. """ - study_version = study.version + study_version = StudyVersion.parse(study.version) file_study = self._get_file_study(study) path = _CLUSTER_PATH.format(area_id=area_id, cluster_id=cluster_id) try: @@ -424,7 +425,7 @@ def duplicate_cluster( source_cluster = self.get_cluster(study, area_id, source_id) source_cluster.name = new_cluster_name creation_form = ThermalClusterCreation(**source_cluster.model_dump(by_alias=False, exclude={"id"})) - new_config = creation_form.to_config(study.version) + new_config = creation_form.to_config(StudyVersion.parse(study.version)) create_cluster_cmd = self._make_create_cluster_cmd(area_id, new_config) # Matrix edition @@ -439,7 +440,7 @@ def duplicate_cluster( f"input/thermal/prepro/{area_id}/{lower_new_id}/modulation", f"input/thermal/prepro/{area_id}/{lower_new_id}/data", ] - if int(study.version) >= 870: + if StudyVersion.parse(study.version) >= STUDY_VERSION_8_7: source_paths.append(f"input/thermal/series/{area_id}/{lower_source_id}/CO2Cost") source_paths.append(f"input/thermal/series/{area_id}/{lower_source_id}/fuelCost") new_paths.append(f"input/thermal/series/{area_id}/{lower_new_id}/CO2Cost") @@ -462,7 +463,7 @@ def validate_series(self, study: Study, area_id: str, cluster_id: str) -> bool: lower_cluster_id = cluster_id.lower() thermal_cluster_path = Path(f"input/thermal/series/{area_id}/{lower_cluster_id}") series_path = [thermal_cluster_path / "series"] - if int(study.version) >= 870: + if StudyVersion.parse(study.version) >= STUDY_VERSION_8_7: series_path.append(thermal_cluster_path / "CO2Cost") series_path.append(thermal_cluster_path / "fuelCost") diff --git a/antarest/study/business/binding_constraint_management.py b/antarest/study/business/binding_constraint_management.py index 5db14243ab..985123003d 100644 --- a/antarest/study/business/binding_constraint_management.py +++ b/antarest/study/business/binding_constraint_management.py @@ -15,6 +15,7 @@ import typing as t import numpy as np +from antares.study.version import StudyVersion from pydantic import Field, field_validator, model_validator from antarest.core.exceptions import ( @@ -34,7 +35,7 @@ from antarest.core.utils.string import to_camel_case from antarest.study.business.all_optional_meta import camel_case_model from antarest.study.business.utils import execute_or_add_commands -from antarest.study.model import Study +from antarest.study.model import STUDY_VERSION_8_3, STUDY_VERSION_8_7, Study from antarest.study.storage.rawstudy.model.filesystem.config.binding_constraint import ( DEFAULT_GROUP, DEFAULT_OPERATOR, @@ -462,7 +463,7 @@ def parse_and_add_terms(key: str, value: t.Any, adapted_constraint: ConstraintOu ) @staticmethod - def constraint_model_adapter(constraint: t.Mapping[str, t.Any], version: int) -> ConstraintOutput: + def constraint_model_adapter(constraint: t.Mapping[str, t.Any], study_version: StudyVersion) -> ConstraintOutput: """ Adapts a binding constraint configuration to the appropriate model version. @@ -470,7 +471,7 @@ def constraint_model_adapter(constraint: t.Mapping[str, t.Any], version: int) -> constraint: A dictionary or model representing the constraint to be adapted. This can either be a dictionary coming from client input or an existing model that needs reformatting. - version: An integer indicating the target version of the study configuration. This is used to + study_version: A StudyVersion object indicating the target version of the study configuration. This is used to determine which model class to instantiate and which default values to apply. Returns: @@ -494,19 +495,19 @@ def constraint_model_adapter(constraint: t.Mapping[str, t.Any], version: int) -> "terms": constraint.get("terms", []), } - if version >= 830: + if study_version >= STUDY_VERSION_8_3: _filter_year_by_year = constraint.get("filter_year_by_year") or constraint.get("filter-year-by-year", "") _filter_synthesis = constraint.get("filter_synthesis") or constraint.get("filter-synthesis", "") constraint_output["filter_year_by_year"] = _filter_year_by_year constraint_output["filter_synthesis"] = _filter_synthesis - if version >= 870: + if study_version >= STUDY_VERSION_8_7: constraint_output["group"] = constraint.get("group", DEFAULT_GROUP) # Choose the right model according to the version adapted_constraint: ConstraintOutput - if version >= 870: + if study_version >= STUDY_VERSION_8_7: adapted_constraint = ConstraintOutput870(**constraint_output) - elif version >= 830: + elif study_version >= STUDY_VERSION_8_3: adapted_constraint = ConstraintOutput830(**constraint_output) else: adapted_constraint = ConstraintOutputBase(**constraint_output) @@ -557,7 +558,7 @@ def get_binding_constraint(self, study: Study, bc_id: str) -> ConstraintOutput: constraints_by_id: t.Dict[str, ConstraintOutput] = CaseInsensitiveDict() # type: ignore for constraint in config.values(): - constraint_config = self.constraint_model_adapter(constraint, int(study.version)) + constraint_config = self.constraint_model_adapter(constraint, StudyVersion.parse(study.version)) constraints_by_id[constraint_config.id] = constraint_config if bc_id not in constraints_by_id: @@ -581,7 +582,7 @@ def get_binding_constraints( storage_service = self.storage_service.get_storage(study) file_study = storage_service.get_raw(study) config = file_study.tree.get(["input", "bindingconstraints", "bindingconstraints"]) - outputs = [self.constraint_model_adapter(c, int(study.version)) for c in config.values()] + outputs = [self.constraint_model_adapter(c, StudyVersion.parse(study.version)) for c in config.values()] filtered_constraints = list(filter(lambda c: filters.match_filters(c), outputs)) return filtered_constraints @@ -608,7 +609,7 @@ def get_grouped_constraints(self, study: Study) -> t.Mapping[str, t.Sequence[Con grouped_constraints = CaseInsensitiveDict() for constraint in config.values(): - constraint_config = self.constraint_model_adapter(constraint, int(study.version)) + constraint_config = self.constraint_model_adapter(constraint, StudyVersion.parse(study.version)) constraint_group = getattr(constraint_config, "group", DEFAULT_GROUP) grouped_constraints.setdefault(constraint_group, []).append(constraint_config) @@ -704,7 +705,7 @@ def create_binding_constraint( data: ConstraintCreation, ) -> ConstraintOutput: bc_id = transform_name_to_id(data.name) - version = int(study.version) + version = StudyVersion.parse(study.version) if not bc_id: raise InvalidConstraintName(f"Invalid binding constraint name: {data.name}.") @@ -750,7 +751,7 @@ def update_binding_constraint( file_study = self.storage_service.get_storage(study).get_raw(study) existing_constraint = self.get_binding_constraint(study, binding_constraint_id) - study_version = int(study.version) + study_version = StudyVersion.parse(study.version) check_attributes_coherence(data, study_version, data.operator or existing_constraint.operator) upd_constraint = { @@ -785,9 +786,9 @@ def update_binding_constraint( upd_constraint["type"] = upd_constraint.get("time_step", existing_constraint.time_step) upd_constraint["terms"] = data.terms or existing_constraint.terms new_fields = ["enabled", "operator", "comments", "terms"] - if study_version >= 830: + if study_version >= STUDY_VERSION_8_3: new_fields.extend(["filter_year_by_year", "filter_synthesis"]) - if study_version >= 870: + if study_version >= STUDY_VERSION_8_7: new_fields.append("group") for field in new_fields: if field not in upd_constraint: @@ -926,9 +927,9 @@ def get_table_schema() -> JSON: def _replace_matrices_according_to_frequency_and_version( - data: ConstraintInput, version: int, args: t.Dict[str, t.Any] + data: ConstraintInput, version: StudyVersion, args: t.Dict[str, t.Any] ) -> t.Dict[str, t.Any]: - if version < 870: + if version < STUDY_VERSION_8_7: if "values" not in args: matrix = { BindingConstraintFrequency.HOURLY.value: default_bc_hourly_86, @@ -950,10 +951,10 @@ def _replace_matrices_according_to_frequency_and_version( def check_attributes_coherence( data: t.Union[ConstraintCreation, ConstraintInput], - study_version: int, + study_version: StudyVersion, operator: BindingConstraintOperator, ) -> None: - if study_version < 870: + if study_version < STUDY_VERSION_8_7: if data.group: raise InvalidFieldForVersionError( f"You cannot specify a group as your study version is older than v8.7: {data.group}" diff --git a/antarest/study/business/general_management.py b/antarest/study/business/general_management.py index 088f8708fe..2c1d80fdd6 100644 --- a/antarest/study/business/general_management.py +++ b/antarest/study/business/general_management.py @@ -17,7 +17,7 @@ from antarest.study.business.all_optional_meta import all_optional_model from antarest.study.business.enum_ignore_case import EnumIgnoreCase from antarest.study.business.utils import GENERAL_DATA_PATH, FieldInfo, FormFieldsBaseModel, execute_or_add_commands -from antarest.study.model import Study +from antarest.study.model import STUDY_VERSION_7_1, STUDY_VERSION_8, Study from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy from antarest.study.storage.storage_service import StudyStorageService from antarest.study.storage.variantstudy.model.command.update_config import UpdateConfig @@ -148,7 +148,6 @@ def day_fields_validation(cls, values: Union[Dict[str, Any], ValidationInfo]) -> OUTPUT_PATH = f"{GENERAL_DATA_PATH}/{OUTPUT}" BUILDING_MODE = "building_mode" - FIELDS_INFO: Dict[str, FieldInfo] = { "mode": { "path": f"{GENERAL_PATH}/mode", @@ -201,17 +200,17 @@ def day_fields_validation(cls, values: Union[Dict[str, Any], ValidationInfo]) -> "filtering": { "path": f"{GENERAL_PATH}/filtering", "default_value": False, - "end_version": 710, + "end_version": STUDY_VERSION_7_1, }, "geographic_trimming": { "path": f"{GENERAL_PATH}/geographic-trimming", "default_value": False, - "start_version": 710, + "start_version": STUDY_VERSION_7_1, }, "thematic_trimming": { "path": f"{GENERAL_PATH}/thematic-trimming", "default_value": False, - "start_version": 710, + "start_version": STUDY_VERSION_7_1, }, "simulation_synthesis": { "path": f"{OUTPUT_PATH}/synthesis", @@ -303,7 +302,7 @@ def __get_building_mode_update_cmds( return [ UpdateConfig( target=f"{GENERAL_PATH}/custom-scenario" - if file_study.config.version >= 800 + if file_study.config.version >= STUDY_VERSION_8 else f"{GENERAL_PATH}/custom-ts-numbers", data=new_value == BuildingMode.CUSTOM, command_context=cmd_context, diff --git a/antarest/study/business/optimization_management.py b/antarest/study/business/optimization_management.py index cb599d12e2..a33236997b 100644 --- a/antarest/study/business/optimization_management.py +++ b/antarest/study/business/optimization_management.py @@ -132,7 +132,7 @@ def get_field_values(self, study: Study) -> OptimizationFormFields: def get_value(field_info: FieldInfo) -> Any: path = field_info["path"] study_ver = file_study.config.version - start_ver = cast(int, field_info.get("start_version", -1)) + start_ver = cast(int, field_info.get("start_version", 0)) target_name = path.split("/")[-1] is_in_version = start_ver <= study_ver diff --git a/antarest/study/business/thematic_trimming_field_infos.py b/antarest/study/business/thematic_trimming_field_infos.py index 06086005fd..9b2e0b06be 100644 --- a/antarest/study/business/thematic_trimming_field_infos.py +++ b/antarest/study/business/thematic_trimming_field_infos.py @@ -16,8 +16,11 @@ import typing as t +from antares.study.version import StudyVersion + from antarest.study.business.all_optional_meta import all_optional_model from antarest.study.business.utils import FormFieldsBaseModel +from antarest.study.model import STUDY_VERSION_8_1, STUDY_VERSION_8_3, STUDY_VERSION_8_6, STUDY_VERSION_8_8 @all_optional_model @@ -184,59 +187,63 @@ class ThematicTrimmingFormFields(FormFieldsBaseModel): "cong_prob_minus": {"topic": _GENERAL, "path": "CONG. PROB -", "default_value": True}, "hurdle_cost": {"topic": _GENERAL, "path": "HURDLE COST", "default_value": True}, # since v8.1 - "res_generation_by_plant": {"topic": _GENERAL, "path": "RES generation by plant", "default_value": True, "start_version": 810}, - "misc_dtg_2": {"topic": _GENERAL, "path": "MISC. DTG 2", "default_value": True, "start_version": 810}, - "misc_dtg_3": {"topic": _GENERAL, "path": "MISC. DTG 3", "default_value": True, "start_version": 810}, - "misc_dtg_4": {"topic": _GENERAL, "path": "MISC. DTG 4", "default_value": True, "start_version": 810}, - "wind_offshore": {"topic": _GENERAL, "path": "WIND OFFSHORE", "default_value": True, "start_version": 810}, - "wind_onshore": {"topic": _GENERAL, "path": "WIND ONSHORE", "default_value": True, "start_version": 810}, - "solar_concrt": {"topic": _GENERAL, "path": "SOLAR CONCRT.", "default_value": True, "start_version": 810}, - "solar_pv": {"topic": _GENERAL, "path": "SOLAR PV", "default_value": True, "start_version": 810}, - "solar_rooft": {"topic": _GENERAL, "path": "SOLAR ROOFT", "default_value": True, "start_version": 810}, - "renw_1": {"topic": _GENERAL, "path": "RENW. 1", "default_value": True, "start_version": 810}, - "renw_2": {"topic": _GENERAL, "path": "RENW. 2", "default_value": True, "start_version": 810}, - "renw_3": {"topic": _GENERAL, "path": "RENW. 3", "default_value": True, "start_version": 810}, - "renw_4": {"topic": _GENERAL, "path": "RENW. 4", "default_value": True, "start_version": 810}, + "res_generation_by_plant": {"topic": _GENERAL, "path": "RES generation by plant", "default_value": True, "start_version": STUDY_VERSION_8_1}, + "misc_dtg_2": {"topic": _GENERAL, "path": "MISC. DTG 2", "default_value": True, "start_version": STUDY_VERSION_8_1}, + "misc_dtg_3": {"topic": _GENERAL, "path": "MISC. DTG 3", "default_value": True, "start_version": STUDY_VERSION_8_1}, + "misc_dtg_4": {"topic": _GENERAL, "path": "MISC. DTG 4", "default_value": True, "start_version": STUDY_VERSION_8_1}, + "wind_offshore": {"topic": _GENERAL, "path": "WIND OFFSHORE", "default_value": True, "start_version": STUDY_VERSION_8_1}, + "wind_onshore": {"topic": _GENERAL, "path": "WIND ONSHORE", "default_value": True, "start_version": STUDY_VERSION_8_1}, + "solar_concrt": {"topic": _GENERAL, "path": "SOLAR CONCRT.", "default_value": True, "start_version": STUDY_VERSION_8_1}, + "solar_pv": {"topic": _GENERAL, "path": "SOLAR PV", "default_value": True, "start_version": STUDY_VERSION_8_1}, + "solar_rooft": {"topic": _GENERAL, "path": "SOLAR ROOFT", "default_value": True, "start_version": STUDY_VERSION_8_1}, + "renw_1": {"topic": _GENERAL, "path": "RENW. 1", "default_value": True, "start_version": STUDY_VERSION_8_1}, + "renw_2": {"topic": _GENERAL, "path": "RENW. 2", "default_value": True, "start_version": STUDY_VERSION_8_1}, + "renw_3": {"topic": _GENERAL, "path": "RENW. 3", "default_value": True, "start_version": STUDY_VERSION_8_1}, + "renw_4": {"topic": _GENERAL, "path": "RENW. 4", "default_value": True, "start_version": STUDY_VERSION_8_1}, # since v8.3 - "dens": {"topic": _GENERAL, "path": "DENS", "default_value": True, "start_version": 830}, - "profit_by_plant": {"topic": _GENERAL, "path": "Profit by plant", "default_value": True, "start_version": 830}, + "dens": {"topic": _GENERAL, "path": "DENS", "default_value": True, "start_version": STUDY_VERSION_8_3}, + "profit_by_plant": {"topic": _GENERAL, "path": "Profit by plant", "default_value": True, "start_version": STUDY_VERSION_8_3}, # topic: "Short-Term Storages" # since v8.6 - "sts_inj_by_plant": {"topic": _SHORT_TERM_STORAGES, "path": "STS inj by plant", "default_value": True, "start_version": 860}, - "sts_withdrawal_by_plant": {"topic": _SHORT_TERM_STORAGES, "path": "STS withdrawal by plant", "default_value": True, "start_version": 860}, - "sts_lvl_by_plant": {"topic": _SHORT_TERM_STORAGES, "path": "STS lvl by plant", "default_value": True, "start_version": 860}, - "sts_cashflow_by_cluster": {"topic": _SHORT_TERM_STORAGES, "path": "STS Cashflow By Cluster", "default_value": True, "start_version": 880}, + "sts_inj_by_plant": {"topic": _SHORT_TERM_STORAGES, "path": "STS inj by plant", "default_value": True, "start_version": STUDY_VERSION_8_6}, + "sts_withdrawal_by_plant": {"topic": _SHORT_TERM_STORAGES, "path": "STS withdrawal by plant", "default_value": True, "start_version": STUDY_VERSION_8_6}, + "sts_lvl_by_plant": {"topic": _SHORT_TERM_STORAGES, "path": "STS lvl by plant", "default_value": True, "start_version": STUDY_VERSION_8_6}, + "sts_cashflow_by_cluster": {"topic": _SHORT_TERM_STORAGES, "path": "STS Cashflow By Cluster", "default_value": True, "start_version": STUDY_VERSION_8_8}, # topic: "Short-Term Storages - Group" - "psp_open_injection": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "PSP_open_injection", "default_value": True, "start_version": 860}, - "psp_open_withdrawal": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "PSP_open_withdrawal", "default_value": True, "start_version": 860}, - "psp_open_level": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "PSP_open_level", "default_value": True, "start_version": 860}, - "psp_closed_injection": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "PSP_closed_injection", "default_value": True, "start_version": 860}, - "psp_closed_withdrawal": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "PSP_closed_withdrawal", "default_value": True, "start_version": 860}, - "psp_closed_level": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "PSP_closed_level", "default_value": True, "start_version": 860}, - "pondage_injection": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Pondage_injection", "default_value": True, "start_version": 860}, - "pondage_withdrawal": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Pondage_withdrawal", "default_value": True, "start_version": 860}, - "pondage_level": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Pondage_level", "default_value": True, "start_version": 860}, - "battery_injection": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Battery_injection", "default_value": True, "start_version": 860}, - "battery_withdrawal": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Battery_withdrawal", "default_value": True, "start_version": 860}, - "battery_level": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Battery_level", "default_value": True, "start_version": 860}, - "other1_injection": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Other1_injection", "default_value": True, "start_version": 860}, - "other1_withdrawal": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Other1_withdrawal", "default_value": True, "start_version": 860}, - "other1_level": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Other1_level", "default_value": True, "start_version": 860}, - "other2_injection": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Other2_injection", "default_value": True, "start_version": 860}, - "other2_withdrawal": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Other2_withdrawal", "default_value": True, "start_version": 860}, - "other2_level": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Other2_level", "default_value": True, "start_version": 860}, - "other3_injection": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Other3_injection", "default_value": True, "start_version": 860}, - "other3_withdrawal": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Other3_withdrawal", "default_value": True, "start_version": 860}, - "other3_level": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Other3_level", "default_value": True, "start_version": 860}, - "other4_injection": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Other4_injection", "default_value": True, "start_version": 860}, - "other4_withdrawal": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Other4_withdrawal", "default_value": True, "start_version": 860}, - "other4_level": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Other4_level", "default_value": True, "start_version": 860}, - "other5_injection": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Other5_injection", "default_value": True, "start_version": 860}, - "other5_withdrawal": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Other5_withdrawal", "default_value": True, "start_version": 860}, - "other5_level": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Other5_level", "default_value": True, "start_version": 860}, + "psp_open_injection": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "PSP_open_injection", "default_value": True, "start_version": STUDY_VERSION_8_6}, + "psp_open_withdrawal": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "PSP_open_withdrawal", "default_value": True, "start_version": STUDY_VERSION_8_6}, + "psp_open_level": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "PSP_open_level", "default_value": True, "start_version": STUDY_VERSION_8_6}, + "psp_closed_injection": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "PSP_closed_injection", "default_value": True, "start_version": STUDY_VERSION_8_6}, + "psp_closed_withdrawal": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "PSP_closed_withdrawal", "default_value": True, "start_version": STUDY_VERSION_8_6}, + "psp_closed_level": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "PSP_closed_level", "default_value": True, "start_version": STUDY_VERSION_8_6}, + "pondage_injection": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Pondage_injection", "default_value": True, "start_version": STUDY_VERSION_8_6}, + "pondage_withdrawal": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Pondage_withdrawal", "default_value": True, "start_version": STUDY_VERSION_8_6}, + "pondage_level": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Pondage_level", "default_value": True, "start_version": STUDY_VERSION_8_6}, + "battery_injection": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Battery_injection", "default_value": True, "start_version": STUDY_VERSION_8_6}, + "battery_withdrawal": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Battery_withdrawal", "default_value": True, "start_version": STUDY_VERSION_8_6}, + "battery_level": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Battery_level", "default_value": True, "start_version": STUDY_VERSION_8_6}, + "other1_injection": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Other1_injection", "default_value": True, "start_version": STUDY_VERSION_8_6}, + "other1_withdrawal": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Other1_withdrawal", "default_value": True, "start_version": STUDY_VERSION_8_6}, + "other1_level": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Other1_level", "default_value": True, "start_version": STUDY_VERSION_8_6}, + "other2_injection": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Other2_injection", "default_value": True, "start_version": STUDY_VERSION_8_6}, + "other2_withdrawal": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Other2_withdrawal", "default_value": True, "start_version": STUDY_VERSION_8_6}, + "other2_level": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Other2_level", "default_value": True, "start_version": STUDY_VERSION_8_6}, + "other3_injection": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Other3_injection", "default_value": True, "start_version": STUDY_VERSION_8_6}, + "other3_withdrawal": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Other3_withdrawal", "default_value": True, "start_version": STUDY_VERSION_8_6}, + "other3_level": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Other3_level", "default_value": True, "start_version": STUDY_VERSION_8_6}, + "other4_injection": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Other4_injection", "default_value": True, "start_version": STUDY_VERSION_8_6}, + "other4_withdrawal": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Other4_withdrawal", "default_value": True, "start_version": STUDY_VERSION_8_6}, + "other4_level": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Other4_level", "default_value": True, "start_version": STUDY_VERSION_8_6}, + "other5_injection": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Other5_injection", "default_value": True, "start_version": STUDY_VERSION_8_6}, + "other5_withdrawal": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Other5_withdrawal", "default_value": True, "start_version": STUDY_VERSION_8_6}, + "other5_level": {"topic": _SHORT_TERM_STORAGES_GROUP, "path": "Other5_level", "default_value": True, "start_version": STUDY_VERSION_8_6}, # fmt: on } -def get_fields_info(study_version: int) -> t.Mapping[str, t.Mapping[str, t.Any]]: - return {key: info for key, info in FIELDS_INFO.items() if (info.get("start_version") or 0) <= study_version} +def get_fields_info(study_version: StudyVersion) -> t.Mapping[str, t.Mapping[str, t.Any]]: + return { + key: info + for key, info in FIELDS_INFO.items() + if (info.get("start_version") or StudyVersion.parse(0)) <= study_version + } diff --git a/antarest/study/business/thematic_trimming_management.py b/antarest/study/business/thematic_trimming_management.py index 96bd5732d6..96fd8aa106 100644 --- a/antarest/study/business/thematic_trimming_management.py +++ b/antarest/study/business/thematic_trimming_management.py @@ -12,6 +12,8 @@ import typing as t +from antares.study.version import StudyVersion + from antarest.study.business.thematic_trimming_field_infos import ThematicTrimmingFormFields, get_fields_info from antarest.study.business.utils import GENERAL_DATA_PATH, execute_or_add_commands from antarest.study.model import Study @@ -34,13 +36,13 @@ def get_field_values(self, study: Study) -> ThematicTrimmingFormFields: include_vars = trimming_config.get("select_var +") or [] selected_vars_reset = trimming_config.get("selected_vars_reset", True) - def get_value(field_info: t.Mapping[str, t.Any]) -> t.Any: + def get_value(field_info: t.Mapping[str, t.Any]) -> bool: if selected_vars_reset is None: - return field_info["default_value"] + return t.cast(bool, field_info["default_value"]) var_name = field_info["path"] return var_name not in exclude_vars if selected_vars_reset else var_name in include_vars - fields_info = get_fields_info(int(study.version)) + fields_info = get_fields_info(StudyVersion.parse(study.version)) fields_values = {name: get_value(info) for name, info in fields_info.items()} return ThematicTrimmingFormFields(**fields_values) @@ -52,7 +54,7 @@ def set_field_values(self, study: Study, field_values: ThematicTrimmingFormField field_values_dict = field_values.model_dump() keys_by_bool: t.Dict[bool, t.List[t.Any]] = {True: [], False: []} - fields_info = get_fields_info(int(study.version)) + fields_info = get_fields_info(StudyVersion.parse(study.version)) for name, info in fields_info.items(): keys_by_bool[field_values_dict[name]].append(info["path"]) diff --git a/antarest/study/business/timeseries_config_management.py b/antarest/study/business/timeseries_config_management.py index 7e77612fd8..da28a5e468 100644 --- a/antarest/study/business/timeseries_config_management.py +++ b/antarest/study/business/timeseries_config_management.py @@ -18,7 +18,7 @@ from antarest.study.business.all_optional_meta import all_optional_model from antarest.study.business.enum_ignore_case import EnumIgnoreCase from antarest.study.business.utils import GENERAL_DATA_PATH, FormFieldsBaseModel, execute_or_add_commands -from antarest.study.model import Study +from antarest.study.model import STUDY_VERSION_8_1, STUDY_VERSION_8_2, Study from antarest.study.storage.rawstudy.model.filesystem.config.model import EnrModelling from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy from antarest.study.storage.storage_service import StudyStorageService @@ -210,7 +210,9 @@ def __get_form_fields_for_type( config = file_study.config study_version = config.version - has_renewables = config.version >= 810 and EnrModelling(config.enr_modelling) == EnrModelling.CLUSTERS + has_renewables = ( + study_version >= STUDY_VERSION_8_1 and EnrModelling(config.enr_modelling) == EnrModelling.CLUSTERS + ) if ts_type == TSType.RENEWABLES and not has_renewables: return None @@ -218,7 +220,7 @@ def __get_form_fields_for_type( if ts_type in [TSType.WIND, TSType.SOLAR] and has_renewables: return None - if ts_type == TSType.NTC and study_version < 820: + if ts_type == TSType.NTC and study_version < STUDY_VERSION_8_2: return None is_special_type = ts_type == TSType.RENEWABLES or ts_type == TSType.NTC diff --git a/antarest/study/business/utils.py b/antarest/study/business/utils.py index 1afacecc04..58682fd596 100644 --- a/antarest/study/business/utils.py +++ b/antarest/study/business/utils.py @@ -12,6 +12,7 @@ import typing as t +from antares.study.version import StudyVersion from pydantic import BaseModel from antarest.core.exceptions import CommandApplicationError @@ -84,8 +85,8 @@ class FormFieldsBaseModel( class FieldInfo(t.TypedDict, total=False): path: str default_value: t.Any - start_version: t.Optional[int] - end_version: t.Optional[int] + start_version: t.Optional[StudyVersion] + end_version: t.Optional[StudyVersion] # Workaround to replace Pydantic computed values which are ignored by FastAPI. # TODO: check @computed_field available in Pydantic v2 to remove it # (value) -> encoded_value diff --git a/antarest/study/model.py b/antarest/study/model.py index 5e528e57fb..fbeefef1f4 100644 --- a/antarest/study/model.py +++ b/antarest/study/model.py @@ -18,7 +18,8 @@ from datetime import datetime, timedelta from pathlib import Path -from pydantic import field_validator +from antares.study.version import StudyVersion +from pydantic import field_serializer, field_validator from sqlalchemy import ( # type: ignore Boolean, Column, @@ -44,26 +45,44 @@ DEFAULT_WORKSPACE_NAME = "default" -STUDY_REFERENCE_TEMPLATES: t.Mapping[str, str] = { - "600": "empty_study_613.zip", - "610": "empty_study_613.zip", - "640": "empty_study_613.zip", - "700": "empty_study_700.zip", - "710": "empty_study_710.zip", - "720": "empty_study_720.zip", - "800": "empty_study_803.zip", - "810": "empty_study_810.zip", - "820": "empty_study_820.zip", - "830": "empty_study_830.zip", - "840": "empty_study_840.zip", - "850": "empty_study_850.zip", - "860": "empty_study_860.zip", - "870": "empty_study_870.zip", - "880": "empty_study_880.zip", +NEW_DEFAULT_STUDY_VERSION: StudyVersion = StudyVersion.parse("8.8") +STUDY_VERSION_6_0 = StudyVersion.parse("6.0") +STUDY_VERSION_6_1 = StudyVersion.parse("6.1") +STUDY_VERSION_6_4 = StudyVersion.parse("6.4") +STUDY_VERSION_6_5 = StudyVersion.parse("6.5") +STUDY_VERSION_7_0 = StudyVersion.parse("7.0") +STUDY_VERSION_7_1 = StudyVersion.parse("7.1") +STUDY_VERSION_7_2 = StudyVersion.parse("7.2") +STUDY_VERSION_8 = StudyVersion.parse("8.0") +STUDY_VERSION_8_1 = StudyVersion.parse("8.1") +STUDY_VERSION_8_2 = StudyVersion.parse("8.2") +STUDY_VERSION_8_3 = StudyVersion.parse("8.3") +STUDY_VERSION_8_4 = StudyVersion.parse("8.4") +STUDY_VERSION_8_5 = StudyVersion.parse("8.5") +STUDY_VERSION_8_6 = StudyVersion.parse("8.6") +STUDY_VERSION_8_7 = StudyVersion.parse("8.7") +STUDY_VERSION_8_8 = NEW_DEFAULT_STUDY_VERSION +STUDY_VERSION_9_1 = StudyVersion.parse("9.1") +STUDY_VERSION_9_2 = StudyVersion.parse("9.2") + +STUDY_REFERENCE_TEMPLATES: t.Mapping[StudyVersion, str] = { + STUDY_VERSION_6_0: "empty_study_613.zip", + STUDY_VERSION_6_1: "empty_study_613.zip", + STUDY_VERSION_6_4: "empty_study_613.zip", + STUDY_VERSION_7_0: "empty_study_700.zip", + STUDY_VERSION_7_1: "empty_study_710.zip", + STUDY_VERSION_7_2: "empty_study_720.zip", + STUDY_VERSION_8: "empty_study_803.zip", + STUDY_VERSION_8_1: "empty_study_810.zip", + STUDY_VERSION_8_2: "empty_study_820.zip", + STUDY_VERSION_8_3: "empty_study_830.zip", + STUDY_VERSION_8_4: "empty_study_840.zip", + STUDY_VERSION_8_5: "empty_study_850.zip", + STUDY_VERSION_8_6: "empty_study_860.zip", + STUDY_VERSION_8_7: "empty_study_870.zip", + STUDY_VERSION_8_8: "empty_study_880.zip", } -NEW_DEFAULT_STUDY_VERSION: str = "880" - class StudyGroup(Base): # type:ignore """ @@ -342,7 +361,7 @@ class OwnerInfo(AntaresBaseModel): class StudyMetadataDTO(AntaresBaseModel): id: str name: str - version: int + version: StudyVersion created: str updated: str type: str @@ -359,11 +378,19 @@ class StudyMetadataDTO(AntaresBaseModel): folder: t.Optional[str] = None tags: t.List[str] = [] + @field_serializer("version") + def serialize_version(self, version: StudyVersion) -> int: + return version.__int__() + @field_validator("horizon", mode="before") def transform_horizon_to_str(cls, val: t.Union[str, int, None]) -> t.Optional[str]: # horizon can be an int. return str(val) if val else val # type: ignore + @field_validator("version", mode="before") + def _validate_version(cls, v: t.Any) -> StudyVersion: + return StudyVersion.parse(v) + class StudyMetadataPatchDTO(AntaresBaseModel): name: t.Optional[str] = None diff --git a/antarest/study/service.py b/antarest/study/service.py index 1f8ff6a09d..247ff4c8f3 100644 --- a/antarest/study/service.py +++ b/antarest/study/service.py @@ -744,7 +744,7 @@ def create_study( path=str(study_path), created_at=datetime.utcnow(), updated_at=datetime.utcnow(), - version=version or NEW_DEFAULT_STUDY_VERSION, + version=version or f"{NEW_DEFAULT_STUDY_VERSION:ddd}", additional_data=StudyAdditionalData(author=author), ) @@ -2154,7 +2154,7 @@ def _analyse_study(self, metadata: Study) -> StudyContentStatus: # noinspection PyUnusedLocal @staticmethod def get_studies_versions(params: RequestParameters) -> t.List[str]: - return list(STUDY_REFERENCE_TEMPLATES) + return [f"{v:ddd}" for v in STUDY_REFERENCE_TEMPLATES] def create_xpansion_configuration( self, diff --git a/antarest/study/storage/abstract_storage_service.py b/antarest/study/storage/abstract_storage_service.py index 967ece3ca6..d8d8993e2e 100644 --- a/antarest/study/storage/abstract_storage_service.py +++ b/antarest/study/storage/abstract_storage_service.py @@ -109,7 +109,7 @@ def get_study_information( return StudyMetadataDTO( id=study.id, name=study.name, - version=int(study.version), + version=study.version, created=str(study.created_at), updated=str(study.updated_at), workspace=study_workspace, diff --git a/antarest/study/storage/matrix_profile.py b/antarest/study/storage/matrix_profile.py index cd3780ae32..40dc42a6b0 100644 --- a/antarest/study/storage/matrix_profile.py +++ b/antarest/study/storage/matrix_profile.py @@ -18,6 +18,8 @@ import pandas as pd +from antarest.study.model import STUDY_VERSION_8_2, STUDY_VERSION_8_6, STUDY_VERSION_8_7 + class _MatrixProfile(t.NamedTuple): """ @@ -144,10 +146,10 @@ def _process_links_columns(self, matrix_path: str) -> t.Sequence[str]: ), } -_SPECIFIC_MATRICES_820 = copy.deepcopy(_SPECIFIC_MATRICES) +_SPECIFIC_MATRICES_8_2 = copy.deepcopy(_SPECIFIC_MATRICES) """Specific matrices for study version 8.2.""" -_SPECIFIC_MATRICES_820["input/links/*/*"] = _MatrixProfile( +_SPECIFIC_MATRICES_8_2["input/links/*/*"] = _MatrixProfile( cols=[ "Hurdle costs direct", "Hurdle costs indirect", @@ -160,19 +162,19 @@ def _process_links_columns(self, matrix_path: str) -> t.Sequence[str]: ) # Specific matrices for study version 8.6 -_SPECIFIC_MATRICES_860 = copy.deepcopy(_SPECIFIC_MATRICES_820) +_SPECIFIC_MATRICES_8_6 = copy.deepcopy(_SPECIFIC_MATRICES_8_2) """Specific matrices for study version 8.6.""" # noinspection SpellCheckingInspection # -_SPECIFIC_MATRICES_860["input/hydro/series/*/mingen"] = _MatrixProfile(cols=[], rows=[]) +_SPECIFIC_MATRICES_8_6["input/hydro/series/*/mingen"] = _MatrixProfile(cols=[], rows=[]) -_SPECIFIC_MATRICES_870 = copy.deepcopy(_SPECIFIC_MATRICES_820) +_SPECIFIC_MATRICES_8_7 = copy.deepcopy(_SPECIFIC_MATRICES_8_2) """Specific matrices for study version 8.7.""" # noinspection SpellCheckingInspection # Scenarized RHS for binding constraints -_SPECIFIC_MATRICES_870["input/bindingconstraints/*"] = _MatrixProfile(cols=[], rows=[]) +_SPECIFIC_MATRICES_8_7["input/bindingconstraints/*"] = _MatrixProfile(cols=[], rows=[]) def adjust_matrix_columns_index( @@ -191,14 +193,14 @@ def adjust_matrix_columns_index( study_version: The version of the study. """ # Get the matrix profiles for a given study version - if study_version < 820: + if study_version < STUDY_VERSION_8_2: matrix_profiles = _SPECIFIC_MATRICES - elif study_version < 860: - matrix_profiles = _SPECIFIC_MATRICES_820 - elif study_version < 870: - matrix_profiles = _SPECIFIC_MATRICES_860 + elif study_version < STUDY_VERSION_8_6: + matrix_profiles = _SPECIFIC_MATRICES_8_2 + elif study_version < STUDY_VERSION_8_7: + matrix_profiles = _SPECIFIC_MATRICES_8_6 else: - matrix_profiles = _SPECIFIC_MATRICES_870 + matrix_profiles = _SPECIFIC_MATRICES_8_7 # Apply the matrix profile to the dataframe to adjust the column names and index for pattern, matrix_profile in matrix_profiles.items(): diff --git a/antarest/study/storage/rawstudy/model/filesystem/config/files.py b/antarest/study/storage/rawstudy/model/filesystem/config/files.py index 6cfed5b9bc..73e67b1976 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/config/files.py +++ b/antarest/study/storage/rawstudy/model/filesystem/config/files.py @@ -20,8 +20,11 @@ from enum import Enum from pathlib import Path +from antares.study.version import StudyVersion + from antarest.core.model import JSON from antarest.core.serialization import from_json +from antarest.study.model import STUDY_VERSION_8_1, STUDY_VERSION_8_6 from antarest.study.storage.rawstudy.ini_reader import IniReader from antarest.study.storage.rawstudy.model.filesystem.config.binding_constraint import ( DEFAULT_GROUP, @@ -191,14 +194,16 @@ def _extract_data_from_file( raise NotImplementedError(file_type) -def _parse_version(path: Path) -> int: +def _parse_version(path: Path) -> StudyVersion: study_info = _extract_data_from_file( root=path, inside_root_path=Path("study.antares"), file_type=FileType.SIMPLE_INI, ) - version: int = study_info.get("antares", {}).get("version", -1) - return version + version = study_info.get("antares", {}).get("version", 0) + if isinstance(version, float): # study 9.0 or newer + version = str(version) + return StudyVersion.parse(version) def _parse_parameters(path: Path) -> t.Tuple[bool, t.List[str], str]: @@ -467,7 +472,7 @@ def _parse_renewables(root: Path, area: str) -> t.List[RenewableConfigType]: # Before version 8.1, we only have "Load", "Wind" and "Solar" objects. # We can't use renewable clusters. version = _parse_version(root) - if version < 810: + if version < STUDY_VERSION_8_1: return [] # Since version 8.1 of the solver, we can use "renewable clusters" objects. @@ -494,7 +499,7 @@ def _parse_st_storage(root: Path, area: str) -> t.List[STStorageConfigType]: # st_storage feature exists only since 8.6 version version = _parse_version(root) - if version < 860: + if version < STUDY_VERSION_8_6: return [] relpath = Path(f"input/st-storage/clusters/{area}/list.ini") diff --git a/antarest/study/storage/rawstudy/model/filesystem/config/model.py b/antarest/study/storage/rawstudy/model/filesystem/config/model.py index 5b4bbcab8f..f707ab4027 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/config/model.py +++ b/antarest/study/storage/rawstudy/model/filesystem/config/model.py @@ -14,7 +14,8 @@ import typing as t from pathlib import Path -from pydantic import Field, model_validator +from antares.study.version import StudyVersion +from pydantic import Field, field_serializer, field_validator, model_validator from antarest.core.serialization import AntaresBaseModel from antarest.core.utils.utils import DTO @@ -163,7 +164,7 @@ def __init__( study_path: Path, path: Path, study_id: str, - version: int, + version: StudyVersion, output_path: t.Optional[Path] = None, areas: t.Optional[t.Dict[str, Area]] = None, sets: t.Optional[t.Dict[str, DistrictSet]] = None, @@ -307,7 +308,7 @@ class FileStudyTreeConfigDTO(AntaresBaseModel): study_path: Path path: Path study_id: str - version: int + version: StudyVersion output_path: t.Optional[Path] = None areas: t.Dict[str, Area] = dict() sets: t.Dict[str, DistrictSet] = dict() @@ -318,6 +319,14 @@ class FileStudyTreeConfigDTO(AntaresBaseModel): enr_modelling: str = str(EnrModelling.AGGREGATED) zip_path: t.Optional[Path] = None + @field_serializer("version") + def serialize_version(self, version: StudyVersion) -> int: + return version.__int__() + + @field_validator("version", mode="before") + def _validate_version(cls, v: t.Any) -> StudyVersion: + return StudyVersion.parse(v) + @staticmethod def from_build_config( config: FileStudyTreeConfig, diff --git a/antarest/study/storage/rawstudy/model/filesystem/config/renewable.py b/antarest/study/storage/rawstudy/model/filesystem/config/renewable.py index b1acfe4492..e796ed1beb 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/config/renewable.py +++ b/antarest/study/storage/rawstudy/model/filesystem/config/renewable.py @@ -12,9 +12,11 @@ import typing as t +from antares.study.version import StudyVersion from pydantic import Field from antarest.study.business.enum_ignore_case import EnumIgnoreCase +from antarest.study.model import STUDY_VERSION_8_1 from antarest.study.storage.rawstudy.model.filesystem.config.cluster import ClusterProperties from antarest.study.storage.rawstudy.model.filesystem.config.identifier import IgnoreCaseIdentifier @@ -110,7 +112,7 @@ class RenewableConfig(RenewableProperties, IgnoreCaseIdentifier): RenewableConfigType = RenewableConfig -def get_renewable_config_cls(study_version: t.Union[str, int]) -> t.Type[RenewableConfig]: +def get_renewable_config_cls(study_version: StudyVersion) -> t.Type[RenewableConfig]: """ Retrieves the renewable configuration class based on the study version. @@ -120,13 +122,12 @@ def get_renewable_config_cls(study_version: t.Union[str, int]) -> t.Type[Renewab Returns: The renewable configuration class. """ - version = int(study_version) - if version >= 810: + if study_version >= STUDY_VERSION_8_1: return RenewableConfig raise ValueError(f"Unsupported study version {study_version}, required 810 or above.") -def create_renewable_config(study_version: t.Union[str, int], **kwargs: t.Any) -> RenewableConfigType: +def create_renewable_config(study_version: StudyVersion, **kwargs: t.Any) -> RenewableConfigType: """ Factory method to create a renewable configuration model. diff --git a/antarest/study/storage/rawstudy/model/filesystem/config/st_storage.py b/antarest/study/storage/rawstudy/model/filesystem/config/st_storage.py index 792855b141..426e263baa 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/config/st_storage.py +++ b/antarest/study/storage/rawstudy/model/filesystem/config/st_storage.py @@ -12,9 +12,11 @@ import typing as t +from antares.study.version import StudyVersion from pydantic import Field from antarest.study.business.enum_ignore_case import EnumIgnoreCase +from antarest.study.model import STUDY_VERSION_8_6, STUDY_VERSION_8_8 from antarest.study.storage.rawstudy.model.filesystem.config.cluster import ItemProperties from antarest.study.storage.rawstudy.model.filesystem.config.identifier import LowerCaseIdentifier @@ -161,7 +163,7 @@ class STStorage880Config(STStorage880Properties, LowerCaseIdentifier): STStorageConfigType = t.Union[STStorageConfig, STStorage880Config] -def get_st_storage_config_cls(study_version: t.Union[str, int]) -> t.Type[STStorageConfigType]: +def get_st_storage_config_cls(study_version: StudyVersion) -> t.Type[STStorageConfigType]: """ Retrieves the short-term storage configuration class based on the study version. @@ -171,15 +173,14 @@ def get_st_storage_config_cls(study_version: t.Union[str, int]) -> t.Type[STStor Returns: The short-term storage configuration class. """ - version = int(study_version) - if version >= 880: + if study_version >= STUDY_VERSION_8_8: return STStorage880Config - elif version >= 860: + elif study_version >= STUDY_VERSION_8_6: return STStorageConfig - raise ValueError(f"Unsupported study version: {version}") + raise ValueError(f"Unsupported study version: {study_version}") -def create_st_storage_config(study_version: t.Union[str, int], **kwargs: t.Any) -> STStorageConfigType: +def create_st_storage_config(study_version: StudyVersion, **kwargs: t.Any) -> STStorageConfigType: """ Factory method to create a short-term storage configuration model. diff --git a/antarest/study/storage/rawstudy/model/filesystem/config/thermal.py b/antarest/study/storage/rawstudy/model/filesystem/config/thermal.py index f3839566fd..ff095c2b2e 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/config/thermal.py +++ b/antarest/study/storage/rawstudy/model/filesystem/config/thermal.py @@ -12,6 +12,7 @@ import typing as t +from antares.study.version import StudyVersion from pydantic import Field from antarest.study.business.enum_ignore_case import EnumIgnoreCase @@ -405,7 +406,7 @@ class Thermal870Config(Thermal870Properties, IgnoreCaseIdentifier): ThermalConfigType = t.Union[Thermal870Config, Thermal860Config, ThermalConfig] -def get_thermal_config_cls(study_version: t.Union[str, int]) -> t.Type[ThermalConfigType]: +def get_thermal_config_cls(study_version: StudyVersion) -> t.Type[ThermalConfigType]: """ Retrieves the thermal configuration class based on the study version. @@ -415,16 +416,15 @@ def get_thermal_config_cls(study_version: t.Union[str, int]) -> t.Type[ThermalCo Returns: The thermal configuration class. """ - version = int(study_version) - if version >= 870: + if study_version >= 870: return Thermal870Config - elif version == 860: + elif study_version == 860: return Thermal860Config else: return ThermalConfig -def create_thermal_config(study_version: t.Union[str, int], **kwargs: t.Any) -> ThermalConfigType: +def create_thermal_config(study_version: StudyVersion, **kwargs: t.Any) -> ThermalConfigType: """ Factory method to create a thermal configuration model. diff --git a/antarest/study/storage/rawstudy/model/filesystem/root/input/areas/item/item.py b/antarest/study/storage/rawstudy/model/filesystem/root/input/areas/item/item.py index 37ee1d8381..5ea6ad808a 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/root/input/areas/item/item.py +++ b/antarest/study/storage/rawstudy/model/filesystem/root/input/areas/item/item.py @@ -10,6 +10,7 @@ # # This file is part of the Antares project. +from antarest.study.model import STUDY_VERSION_8_3 from antarest.study.storage.rawstudy.model.filesystem.folder_node import FolderNode from antarest.study.storage.rawstudy.model.filesystem.inode import TREE from antarest.study.storage.rawstudy.model.filesystem.root.input.areas.item.adequacy_patch import ( @@ -28,7 +29,7 @@ def build(self) -> TREE: self.config.next_file("optimization.ini"), ), } - if self.config.version >= 830: + if self.config.version >= STUDY_VERSION_8_3: children["adequacy_patch"] = InputAreasAdequacyPatch( self.context, self.config.next_file("adequacy_patch.ini") ) diff --git a/antarest/study/storage/rawstudy/model/filesystem/root/input/hydro/common/capacity/capacity.py b/antarest/study/storage/rawstudy/model/filesystem/root/input/hydro/common/capacity/capacity.py index 7627faa777..56eeceadd2 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/root/input/hydro/common/capacity/capacity.py +++ b/antarest/study/storage/rawstudy/model/filesystem/root/input/hydro/common/capacity/capacity.py @@ -12,6 +12,9 @@ from typing import List, TypedDict +from antares.study.version import StudyVersion + +from antarest.study.model import STUDY_VERSION_6_5 from antarest.study.storage.rawstudy.model.filesystem.folder_node import FolderNode from antarest.study.storage.rawstudy.model.filesystem.inode import TREE from antarest.study.storage.rawstudy.model.filesystem.matrix.input_series_matrix import InputSeriesMatrix @@ -21,35 +24,36 @@ class MatrixInfo(TypedDict, total=False): name: str freq: MatrixFrequency - start_version: int + start_version: StudyVersion +INITIAL_VERSION = StudyVersion.parse(0) # noinspection SpellCheckingInspection MATRICES_INFO: List[MatrixInfo] = [ { "name": "maxpower", "freq": MatrixFrequency.DAILY, - "start_version": 0, + "start_version": INITIAL_VERSION, }, { "name": "reservoir", "freq": MatrixFrequency.DAILY, - "start_version": 0, + "start_version": INITIAL_VERSION, }, { "name": "inflowPattern", "freq": MatrixFrequency.DAILY, - "start_version": 650, + "start_version": STUDY_VERSION_6_5, }, { "name": "creditmodulations", "freq": MatrixFrequency.HOURLY, - "start_version": 650, + "start_version": STUDY_VERSION_6_5, }, { "name": "waterValues", "freq": MatrixFrequency.DAILY, - "start_version": 650, + "start_version": STUDY_VERSION_6_5, }, ] diff --git a/antarest/study/storage/rawstudy/model/filesystem/root/input/hydro/hydro_ini.py b/antarest/study/storage/rawstudy/model/filesystem/root/input/hydro/hydro_ini.py index b38bafe736..d211875726 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/root/input/hydro/hydro_ini.py +++ b/antarest/study/storage/rawstudy/model/filesystem/root/input/hydro/hydro_ini.py @@ -10,6 +10,9 @@ # # This file is part of the Antares project. +from antares.study.version import StudyVersion + +from antarest.study.model import STUDY_VERSION_6_5 from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfig from antarest.study.storage.rawstudy.model.filesystem.context import ContextServer from antarest.study.storage.rawstudy.model.filesystem.ini_file_node import IniFileNode @@ -40,7 +43,7 @@ def __init__(self, context: ContextServer, config: FileStudyTreeConfig): "use leeway", # bool "power to level", # bool ] - if config.version >= 650: + if config.version >= STUDY_VERSION_6_5: sections += [ "initialize reservoir date", "leeway low", diff --git a/antarest/study/storage/rawstudy/model/filesystem/root/input/hydro/series/area/area.py b/antarest/study/storage/rawstudy/model/filesystem/root/input/hydro/series/area/area.py index 9488a2ffd9..792fb9335f 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/root/input/hydro/series/area/area.py +++ b/antarest/study/storage/rawstudy/model/filesystem/root/input/hydro/series/area/area.py @@ -12,6 +12,7 @@ from typing import Any, Dict +from antarest.study.model import STUDY_VERSION_6_5, STUDY_VERSION_8_6 from antarest.study.storage.rawstudy.model.filesystem.folder_node import FolderNode from antarest.study.storage.rawstudy.model.filesystem.inode import TREE, INode from antarest.study.storage.rawstudy.model.filesystem.matrix.constants import ( @@ -25,8 +26,9 @@ class InputHydroSeriesArea(FolderNode): def build(self) -> TREE: - freq = MatrixFrequency.DAILY if self.config.version >= 650 else MatrixFrequency.MONTHLY - default_empty = default_scenario_daily if self.config.version >= 650 else default_scenario_monthly + study_version = self.config.version + freq = MatrixFrequency.DAILY if study_version >= STUDY_VERSION_6_5 else MatrixFrequency.MONTHLY + default_empty = default_scenario_daily if study_version >= STUDY_VERSION_6_5 else default_scenario_monthly hydro_series_matrices: Dict[str, INode[Any, Any, Any]] = { "mod": InputSeriesMatrix( self.context, @@ -42,7 +44,7 @@ def build(self) -> TREE: default_empty=default_scenario_hourly, ), } - if self.config.version >= 860: + if study_version >= STUDY_VERSION_8_6: hydro_series_matrices["mingen"] = InputSeriesMatrix( self.context, self.config.next_file("mingen.txt"), diff --git a/antarest/study/storage/rawstudy/model/filesystem/root/input/input.py b/antarest/study/storage/rawstudy/model/filesystem/root/input/input.py index cb4c5e01b6..1c19358baf 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/root/input/input.py +++ b/antarest/study/storage/rawstudy/model/filesystem/root/input/input.py @@ -10,6 +10,7 @@ # # This file is part of the Antares project. +from antarest.study.model import STUDY_VERSION_8_1, STUDY_VERSION_8_6 from antarest.study.storage.rawstudy.model.filesystem.config.model import EnrModelling from antarest.study.storage.rawstudy.model.filesystem.folder_node import FolderNode from antarest.study.storage.rawstudy.model.filesystem.inode import TREE @@ -49,11 +50,14 @@ def build(self) -> TREE: "wind": InputPreproSeries(self.context, config.next_file("wind"), "wind_"), } - has_renewables = config.version >= 810 and EnrModelling(config.enr_modelling) == EnrModelling.CLUSTERS + study_version = config.version + has_renewables = ( + study_version >= STUDY_VERSION_8_1 and EnrModelling(config.enr_modelling) == EnrModelling.CLUSTERS + ) if has_renewables: children["renewables"] = ClusteredRenewables(self.context, config.next_file("renewables")) - if config.version >= 860: + if study_version >= STUDY_VERSION_8_6: children["st-storage"] = InputSTStorage(self.context, config.next_file("st-storage")) return children diff --git a/antarest/study/storage/rawstudy/model/filesystem/root/input/link/area/area.py b/antarest/study/storage/rawstudy/model/filesystem/root/input/link/area/area.py index b683390565..a67fbf6dfc 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/root/input/link/area/area.py +++ b/antarest/study/storage/rawstudy/model/filesystem/root/input/link/area/area.py @@ -10,6 +10,7 @@ # # This file is part of the Antares project. +from antarest.study.model import STUDY_VERSION_8_2 from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfig from antarest.study.storage.rawstudy.model.filesystem.context import ContextServer from antarest.study.storage.rawstudy.model.filesystem.folder_node import FolderNode @@ -35,7 +36,7 @@ def build(self) -> TREE: children: TREE ctx = self.context cfg = self.config - if cfg.version < 820: + if cfg.version < STUDY_VERSION_8_2: children = {link: InputSeriesMatrix(ctx, cfg.next_file(f"{link}.txt")) for link in cfg.get_links(self.area)} else: children = { diff --git a/antarest/study/storage/rawstudy/model/filesystem/root/input/link/area/properties.py b/antarest/study/storage/rawstudy/model/filesystem/root/input/link/area/properties.py index a5ceb35fad..74992f5dd0 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/root/input/link/area/properties.py +++ b/antarest/study/storage/rawstudy/model/filesystem/root/input/link/area/properties.py @@ -10,6 +10,7 @@ # # This file is part of the Antares project. +from antarest.study.model import STUDY_VERSION_6_5 from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfig from antarest.study.storage.rawstudy.model.filesystem.context import ContextServer from antarest.study.storage.rawstudy.model.filesystem.ini_file_node import IniFileNode @@ -30,7 +31,7 @@ def __init__( "filter-year-by-year": str, } - if config.version >= 650: + if config.version >= STUDY_VERSION_6_5: section["loop-flow"] = bool section["use-phase-shifter"] = bool section["asset-type"] = str diff --git a/antarest/study/storage/rawstudy/model/filesystem/root/settings/generaldata.py b/antarest/study/storage/rawstudy/model/filesystem/root/settings/generaldata.py index 5066bbbabd..27ece887bf 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/root/settings/generaldata.py +++ b/antarest/study/storage/rawstudy/model/filesystem/root/settings/generaldata.py @@ -13,6 +13,18 @@ from copy import deepcopy from typing import Any, Dict +from antarest.study.model import ( + STUDY_VERSION_6_5, + STUDY_VERSION_7_0, + STUDY_VERSION_7_1, + STUDY_VERSION_7_2, + STUDY_VERSION_8, + STUDY_VERSION_8_1, + STUDY_VERSION_8_3, + STUDY_VERSION_8_4, + STUDY_VERSION_8_5, + STUDY_VERSION_8_6, +) from antarest.study.storage.rawstudy.ini_reader import IniReader from antarest.study.storage.rawstudy.ini_writer import IniWriter from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfig @@ -113,25 +125,26 @@ def __init__(self, context: ContextServer, config: FileStudyTreeConfig): general = types["general"] optimization = types["optimization"] other_preferences = types["other preferences"] - if config.version >= 650: + study_version = config.version + if study_version >= STUDY_VERSION_6_5: other_preferences["initial-reservoir-levels"] = str - if config.version >= 700: + if study_version >= STUDY_VERSION_7_0: optimization["link-type"] = str - if config.version >= 710: + if study_version >= STUDY_VERSION_7_1: general["thematic-trimming"] = bool general["geographic-trimming"] = bool del general["filtering"] - if config.version >= 720: + if study_version >= STUDY_VERSION_7_2: other_preferences["hydro-pricing-mode"] = str - if config.version >= 800: + if study_version >= STUDY_VERSION_8: other_preferences["hydro-heuristic-policy"] = str optimization["include-exportstructure"] = bool optimization["include-unfeasible-problem-behavior"] = str general["custom-scenario"] = bool del general["custom-ts-numbers"] - if config.version >= 810: + if study_version >= STUDY_VERSION_8_1: other_preferences["renewable-generation-modelling"] = str - if config.version >= 830: + if study_version >= STUDY_VERSION_8_3: types["adequacy patch"] = { "include-adq-patch": bool, "set-to-null-ntc-from-physical-out-to-physical-in-for-first-step": bool, @@ -140,9 +153,9 @@ def __init__(self, context: ContextServer, config: FileStudyTreeConfig): optimization["include-split-exported-mps"] = bool # include-exportmps: none, optim-1, optim-2, both-optims optimization["include-exportmps"] = str - if config.version >= 840: + if study_version >= STUDY_VERSION_8_4: del optimization["include-split-exported-mps"] - if config.version >= 850: + if study_version >= STUDY_VERSION_8_5: adequacy = types["adequacy patch"] adequacy["price-taking-order"] = str adequacy["include-hurdle-cost-csr"] = bool @@ -151,7 +164,7 @@ def __init__(self, context: ContextServer, config: FileStudyTreeConfig): adequacy["threshold-display-local-matching-rule-violations"] = float adequacy["threshold-csr-variable-bounds-relaxation"] = int - if config.version >= 860: + if study_version >= STUDY_VERSION_8_6: types["adequacy patch"]["enable-first-step "] = bool IniFileNode.__init__( diff --git a/antarest/study/storage/rawstudy/model/filesystem/root/settings/scenariobuilder.py b/antarest/study/storage/rawstudy/model/filesystem/root/settings/scenariobuilder.py index f80f99a942..bf0501d531 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/root/settings/scenariobuilder.py +++ b/antarest/study/storage/rawstudy/model/filesystem/root/settings/scenariobuilder.py @@ -15,6 +15,13 @@ import typing_extensions as te +from antarest.study.model import ( + STUDY_VERSION_8, + STUDY_VERSION_8_1, + STUDY_VERSION_8_7, + STUDY_VERSION_9_1, + STUDY_VERSION_9_2, +) from antarest.study.storage.rawstudy.model.filesystem.config.model import EnrModelling, FileStudyTreeConfig from antarest.study.storage.rawstudy.model.filesystem.context import ContextServer from antarest.study.storage.rawstudy.model.filesystem.ini_file_node import IniFileNode @@ -64,15 +71,15 @@ def __init__(self, context: ContextServer, config: FileStudyTreeConfig): # Rules are defined for a specific version of the study. study_version = config.version - if study_version >= 810 and EnrModelling(self.config.enr_modelling) == EnrModelling.CLUSTERS: + if study_version >= STUDY_VERSION_8_1 and EnrModelling(self.config.enr_modelling) == EnrModelling.CLUSTERS: self._populate_renewable_rules(rules) - if study_version >= 870: + if study_version >= STUDY_VERSION_8_7: self._populate_binding_constraints_rules(rules) - if study_version >= 800: + if study_version >= STUDY_VERSION_8: self._populate_hydro_initial_level_rules(rules) - if study_version >= 920: + if study_version >= STUDY_VERSION_9_2: self._populate_hydro_final_level_rules(rules) - if study_version >= 910: + if study_version >= STUDY_VERSION_9_1: self._populate_hydro_generation_power_rules(rules) super().__init__( diff --git a/antarest/study/storage/rawstudy/raw_study_service.py b/antarest/study/storage/rawstudy/raw_study_service.py index 5e9295107a..1dca10323f 100644 --- a/antarest/study/storage/rawstudy/raw_study_service.py +++ b/antarest/study/storage/rawstudy/raw_study_service.py @@ -20,6 +20,8 @@ from uuid import uuid4 from zipfile import ZipFile +from antares.study.version import StudyVersion + from antarest.core.config import Config from antarest.core.exceptions import StudyDeletionNotAllowed from antarest.core.interfaces.cache import ICache @@ -202,7 +204,7 @@ def create(self, metadata: RawStudy) -> RawStudy: path_study.mkdir() create_new_empty_study( - version=metadata.version, + version=StudyVersion.parse(metadata.version), path_study=path_study, path_resources=self.path_resources, ) @@ -442,7 +444,7 @@ def check_and_update_study_version_in_database(self, study: RawStudy) -> None: study_path=study_path, path=study_path, study_id="", - version=-1, + version=StudyVersion.parse(0), ) raw_study = self.study_factory.create_from_config(config) file_metadata = raw_study.get(url=["study", "antares"]) diff --git a/antarest/study/storage/study_download_utils.py b/antarest/study/storage/study_download_utils.py index 9c5f6beed3..f46b23e254 100644 --- a/antarest/study/storage/study_download_utils.py +++ b/antarest/study/storage/study_download_utils.py @@ -27,6 +27,7 @@ from antarest.core.exceptions import ChildNotFoundError from antarest.core.serialization import to_json from antarest.study.model import ( + STUDY_VERSION_8_1, ExportFormat, MatrixAggregationResult, MatrixAggregationResultDTO, @@ -115,7 +116,9 @@ def level_output_filter( cluster_details = [f"details-{data.level.value}"] config = study.config - has_renewables = config.version >= 810 and EnrModelling(config.enr_modelling) == EnrModelling.CLUSTERS + has_renewables = ( + config.version >= STUDY_VERSION_8_1 and EnrModelling(config.enr_modelling) == EnrModelling.CLUSTERS + ) if has_renewables: cluster_details += [f"details-res-{data.level.value}"] diff --git a/antarest/study/storage/utils.py b/antarest/study/storage/utils.py index 5d7a6c2db0..9eb9a3d682 100644 --- a/antarest/study/storage/utils.py +++ b/antarest/study/storage/utils.py @@ -23,6 +23,8 @@ from uuid import uuid4 from zipfile import ZipFile +from antares.study.version import StudyVersion + from antarest.core.exceptions import StudyValidationError, UnsupportedStudyVersion from antarest.core.interfaces.cache import CacheConstants, ICache from antarest.core.jwt import JWTUser @@ -161,7 +163,7 @@ def remove_from_cache(cache: ICache, root_id: str) -> None: ) -def create_new_empty_study(version: str, path_study: Path, path_resources: Path) -> None: +def create_new_empty_study(version: StudyVersion, path_study: Path, path_resources: Path) -> None: version_template: t.Optional[str] = STUDY_REFERENCE_TEMPLATES.get(version, None) if version_template is None: msg = f"{version} is not a supported version, supported versions are: {list(STUDY_REFERENCE_TEMPLATES.keys())}" diff --git a/antarest/study/storage/variantstudy/business/command_extractor.py b/antarest/study/storage/variantstudy/business/command_extractor.py index adbcc811d8..e71027fcb9 100644 --- a/antarest/study/storage/variantstudy/business/command_extractor.py +++ b/antarest/study/storage/variantstudy/business/command_extractor.py @@ -20,6 +20,7 @@ from antarest.core.utils.utils import StopWatch from antarest.matrixstore.model import MatrixData from antarest.matrixstore.service import ISimpleMatrixService +from antarest.study.model import STUDY_VERSION_6_5, STUDY_VERSION_8_2, STUDY_VERSION_8_7 from antarest.study.storage.patch_service import PatchService from antarest.study.storage.rawstudy.model.filesystem.config.files import get_playlist from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy @@ -173,7 +174,7 @@ def extract_link( ) null_matrix_id = strip_matrix_protocol(self.generator_matrix_constants.get_null_matrix()) commands: t.List[ICommand] = [link_command, link_config_command] - if study.config.version < 820: + if study.config.version < STUDY_VERSION_8_2: commands.append( self.generate_replace_matrix( study_tree, @@ -288,7 +289,7 @@ def extract_hydro(self, study: FileStudy, area_id: str) -> t.List[ICommand]: ), ] - if study_tree.config.version > 650: + if study_tree.config.version > STUDY_VERSION_6_5: commands += [ self.generate_replace_matrix( study_tree, @@ -367,7 +368,7 @@ def extract_binding_constraint( del binding[term_id] # Extract the matrices associated with the binding constraint - if study.config.version < 870: + if study.config.version < STUDY_VERSION_8_7: urls = {"values": ["input", "bindingconstraints", bc_id]} else: urls = { diff --git a/antarest/study/storage/variantstudy/business/matrix_constants_generator.py b/antarest/study/storage/variantstudy/business/matrix_constants_generator.py index abb0953b4c..98f098a07d 100644 --- a/antarest/study/storage/variantstudy/business/matrix_constants_generator.py +++ b/antarest/study/storage/variantstudy/business/matrix_constants_generator.py @@ -14,9 +14,11 @@ from pathlib import Path from typing import Dict +from antares.study.version import StudyVersion from filelock import FileLock from antarest.matrixstore.service import ISimpleMatrixService +from antarest.study.model import STUDY_VERSION_6_5, STUDY_VERSION_8_2 from antarest.study.storage.variantstudy.business import matrix_constants from antarest.study.storage.variantstudy.business.matrix_constants.common import ( FIXED_4_COLUMNS, @@ -125,14 +127,14 @@ def init_constant_matrices( matrix_constants.st_storage.series.pmax_injection ) - def get_hydro_max_power(self, version: int) -> str: - if version > 650: + def get_hydro_max_power(self, version: StudyVersion) -> str: + if version > STUDY_VERSION_6_5: return MATRIX_PROTOCOL_PREFIX + self.hashes[HYDRO_COMMON_CAPACITY_MAX_POWER_V7] else: return MATRIX_PROTOCOL_PREFIX + self.hashes[NULL_MATRIX_NAME] - def get_hydro_reservoir(self, version: int) -> str: - if version > 650: + def get_hydro_reservoir(self, version: StudyVersion) -> str: + if version > STUDY_VERSION_6_5: return MATRIX_PROTOCOL_PREFIX + self.hashes[HYDRO_COMMON_CAPACITY_RESERVOIR_V7] return MATRIX_PROTOCOL_PREFIX + self.hashes[HYDRO_COMMON_CAPACITY_RESERVOIR_V6] @@ -154,8 +156,8 @@ def get_thermal_prepro_data(self) -> str: def get_thermal_prepro_modulation(self) -> str: return MATRIX_PROTOCOL_PREFIX + self.hashes[THERMAL_PREPRO_MODULATION] - def get_link(self, version: int) -> str: - if version < 820: + def get_link(self, version: StudyVersion) -> str: + if version < STUDY_VERSION_8_2: return MATRIX_PROTOCOL_PREFIX + self.hashes[LINK_V7] return MATRIX_PROTOCOL_PREFIX + self.hashes[LINK_V8] diff --git a/antarest/study/storage/variantstudy/business/utils.py b/antarest/study/storage/variantstudy/business/utils.py index 9f1988d1de..e352466be2 100644 --- a/antarest/study/storage/variantstudy/business/utils.py +++ b/antarest/study/storage/variantstudy/business/utils.py @@ -15,6 +15,7 @@ from antarest.core.model import JSON from antarest.matrixstore.model import MatrixData from antarest.matrixstore.service import ISimpleMatrixService +from antarest.study.model import STUDY_VERSION_8_2 from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy from antarest.study.storage.variantstudy.business.matrix_constants_generator import MATRIX_PROTOCOL_PREFIX from antarest.study.storage.variantstudy.model.command.icommand import ICommand @@ -87,7 +88,7 @@ def links_series(alias: str, study: FileStudy) -> str: data = alias.split("/") area_from = data[1] area_to = data[2] - if study.config.version < 820: + if study.config.version < STUDY_VERSION_8_2: return f"input/links/{area_from}/{area_to}" return f"input/links/{area_from}/{area_to}_parameters" diff --git a/antarest/study/storage/variantstudy/model/command/create_area.py b/antarest/study/storage/variantstudy/model/command/create_area.py index bfc8711b8e..b3f1a30e7f 100644 --- a/antarest/study/storage/variantstudy/model/command/create_area.py +++ b/antarest/study/storage/variantstudy/model/command/create_area.py @@ -15,6 +15,7 @@ from pydantic import Field from antarest.core.model import JSON +from antarest.study.model import STUDY_VERSION_6_5, STUDY_VERSION_8_1, STUDY_VERSION_8_3, STUDY_VERSION_8_6 from antarest.study.storage.rawstudy.model.filesystem.config.model import ( Area, EnrModelling, @@ -247,7 +248,7 @@ def _apply(self, study_data: FileStudy) -> CommandOutput: new_correlation.setdefault("annual", {}) new_area_data["input"]["hydro"]["prepro"]["correlation"] = new_correlation - if version > 650: + if version > STUDY_VERSION_6_5: hydro_config.setdefault("initialize reservoir date", {})[area_id] = 0 hydro_config.setdefault("leeway low", {})[area_id] = 1 hydro_config.setdefault("leeway up", {})[area_id] = 1 @@ -261,16 +262,16 @@ def _apply(self, study_data: FileStudy) -> CommandOutput: ] = self.command_context.generator_matrix_constants.get_hydro_inflow_pattern() new_area_data["input"]["hydro"]["common"]["capacity"][f"waterValues_{area_id}"] = null_matrix - has_renewables = config.version >= 810 and EnrModelling(config.enr_modelling) == EnrModelling.CLUSTERS + has_renewables = version >= STUDY_VERSION_8_1 and EnrModelling(config.enr_modelling) == EnrModelling.CLUSTERS if has_renewables: new_area_data["input"]["renewables"] = {"clusters": {area_id: {"list": {}}}} - if version >= 830: + if version >= STUDY_VERSION_8_3: new_area_data["input"]["areas"][area_id]["adequacy_patch"] = { "adequacy-patch": {"adequacy-patch-mode": "outside"} } - if version >= 860: + if version >= STUDY_VERSION_8_6: new_area_data["input"]["st-storage"] = {"clusters": {area_id: {"list": {}}}} new_area_data["input"]["hydro"]["series"][area_id]["mingen"] = null_matrix diff --git a/antarest/study/storage/variantstudy/model/command/create_binding_constraint.py b/antarest/study/storage/variantstudy/model/command/create_binding_constraint.py index 650a19898d..a57f51a666 100644 --- a/antarest/study/storage/variantstudy/model/command/create_binding_constraint.py +++ b/antarest/study/storage/variantstudy/model/command/create_binding_constraint.py @@ -15,11 +15,13 @@ from enum import Enum import numpy as np +from antares.study.version import StudyVersion from pydantic import Field, field_validator, model_validator from antarest.core.serialization import AntaresBaseModel from antarest.matrixstore.model import MatrixData from antarest.study.business.all_optional_meta import all_optional_model, camel_case_model +from antarest.study.model import STUDY_VERSION_8_3, STUDY_VERSION_8_7 from antarest.study.storage.rawstudy.model.filesystem.config.binding_constraint import ( DEFAULT_GROUP, DEFAULT_OPERATOR, @@ -54,7 +56,7 @@ class TermMatrices(Enum): EQUAL = "equal_term_matrix" -def check_matrix_values(time_step: BindingConstraintFrequency, values: MatrixType, version: int) -> None: +def check_matrix_values(time_step: BindingConstraintFrequency, values: MatrixType, version: StudyVersion) -> None: """ Check the binding constraint's matrix values for the specified time step. @@ -124,20 +126,19 @@ class BindingConstraintProperties870(BindingConstraintProperties830): ] -def get_binding_constraint_config_cls(study_version: t.Union[str, int]) -> t.Type[BindingConstraintProperties]: +def get_binding_constraint_config_cls(study_version: StudyVersion) -> t.Type[BindingConstraintProperties]: """ Retrieves the binding constraint configuration class based on the study version. """ - version = int(study_version) - if version >= 870: + if study_version >= STUDY_VERSION_8_7: return BindingConstraintProperties870 - elif version >= 830: + elif study_version >= STUDY_VERSION_8_3: return BindingConstraintProperties830 else: return BindingConstraintPropertiesBase -def create_binding_constraint_config(study_version: t.Union[str, int], **kwargs: t.Any) -> BindingConstraintProperties: +def create_binding_constraint_config(study_version: StudyVersion, **kwargs: t.Any) -> BindingConstraintProperties: """ Factory method to create a binding constraint configuration model. @@ -254,7 +255,11 @@ def get_inner_matrices(self) -> t.List[str]: ] def get_corresponding_matrices( - self, v: t.Optional[t.Union[MatrixType, str]], time_step: BindingConstraintFrequency, version: int, create: bool + self, + v: t.Optional[t.Union[MatrixType, str]], + time_step: BindingConstraintFrequency, + version: StudyVersion, + create: bool, ) -> t.Optional[str]: constants: GeneratorMatrixConstants = self.command_context.generator_matrix_constants @@ -291,10 +296,10 @@ def validates_and_fills_matrices( *, time_step: BindingConstraintFrequency, specific_matrices: t.Optional[t.List[str]], - version: int, + version: StudyVersion, create: bool, ) -> None: - if version < 870: + if version < STUDY_VERSION_8_7: self.values = self.get_corresponding_matrices(self.values, time_step, version, create) elif specific_matrices: for matrix in specific_matrices: @@ -363,7 +368,7 @@ def apply_binding_constraint( bd_id, study_data.config, self.coeffs or {}, operator=current_operator, time_step=time_step, group=group ) - if version >= 870: + if version >= STUDY_VERSION_8_7: # When all BC of a given group are removed, the group should be removed from the scenario builder old_groups = old_groups or set() new_groups = {bd.get("group", DEFAULT_GROUP).lower() for bd in binding_constraints.values()} @@ -373,7 +378,7 @@ def apply_binding_constraint( if self.values: if not isinstance(self.values, str): # pragma: no cover raise TypeError(repr(self.values)) - if version < 870: + if version < STUDY_VERSION_8_7: study_data.tree.save(self.values, ["input", "bindingconstraints", bd_id]) operator_matrices_map = { @@ -387,7 +392,7 @@ def apply_binding_constraint( if matrix_term: if not isinstance(matrix_term, str): # pragma: no cover raise TypeError(repr(matrix_term)) - if version >= 870: + if version >= STUDY_VERSION_8_7: matrix_id = f"{bd_id}_{matrix_alias}" study_data.tree.save(matrix_term, ["input", "bindingconstraints", matrix_id]) return CommandOutput(status=True) diff --git a/antarest/study/storage/variantstudy/model/command/create_cluster.py b/antarest/study/storage/variantstudy/model/command/create_cluster.py index a1c6ef17aa..ace36bce74 100644 --- a/antarest/study/storage/variantstudy/model/command/create_cluster.py +++ b/antarest/study/storage/variantstudy/model/command/create_cluster.py @@ -17,6 +17,7 @@ from antarest.core.model import JSON from antarest.core.utils.utils import assert_this from antarest.matrixstore.model import MatrixData +from antarest.study.model import STUDY_VERSION_8_7 from antarest.study.storage.rawstudy.model.filesystem.config.model import ( Area, FileStudyTreeConfig, @@ -149,7 +150,7 @@ def _apply(self, study_data: FileStudy) -> CommandOutput: } } } - if study_data.config.version >= 870: + if study_data.config.version >= STUDY_VERSION_8_7: new_cluster_data["input"]["thermal"]["series"][self.area_id][series_id]["CO2Cost"] = null_matrix new_cluster_data["input"]["thermal"]["series"][self.area_id][series_id]["fuelCost"] = null_matrix study_data.tree.save(new_cluster_data) diff --git a/antarest/study/storage/variantstudy/model/command/create_link.py b/antarest/study/storage/variantstudy/model/command/create_link.py index ef2d21f0a9..eec1c4f7ea 100644 --- a/antarest/study/storage/variantstudy/model/command/create_link.py +++ b/antarest/study/storage/variantstudy/model/command/create_link.py @@ -17,6 +17,7 @@ from antarest.core.model import JSON from antarest.core.utils.utils import assert_this from antarest.matrixstore.model import MatrixData +from antarest.study.model import STUDY_VERSION_8_2 from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfig, Link from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy from antarest.study.storage.variantstudy.business.utils import strip_matrix_protocol, validate_matrix @@ -221,7 +222,7 @@ def _apply(self, study_data: FileStudy) -> CommandOutput: self.indirect = self.indirect or (self.command_context.generator_matrix_constants.get_link_indirect()) assert type(self.series) is str - if version < 820: + if version < STUDY_VERSION_8_2: study_data.tree.save(self.series, ["input", "links", area_from, area_to]) else: study_data.tree.save( diff --git a/antarest/study/storage/variantstudy/model/command/create_st_storage.py b/antarest/study/storage/variantstudy/model/command/create_st_storage.py index 8244957da5..4bebf009c3 100644 --- a/antarest/study/storage/variantstudy/model/command/create_st_storage.py +++ b/antarest/study/storage/variantstudy/model/command/create_st_storage.py @@ -17,6 +17,7 @@ from antarest.core.model import JSON from antarest.matrixstore.model import MatrixData +from antarest.study.model import STUDY_VERSION_8_6 from antarest.study.storage.rawstudy.model.filesystem.config.model import Area, FileStudyTreeConfig from antarest.study.storage.rawstudy.model.filesystem.config.st_storage import STStorageConfigType from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy @@ -36,7 +37,7 @@ ) # Minimum required version. -REQUIRED_VERSION = 860 +REQUIRED_VERSION = STUDY_VERSION_8_6 MatrixType = t.List[t.List[MatrixData]] diff --git a/antarest/study/storage/variantstudy/model/command/remove_area.py b/antarest/study/storage/variantstudy/model/command/remove_area.py index 3bf3e1856c..a61290bab1 100644 --- a/antarest/study/storage/variantstudy/model/command/remove_area.py +++ b/antarest/study/storage/variantstudy/model/command/remove_area.py @@ -16,6 +16,13 @@ from antarest.core.exceptions import ChildNotFoundError from antarest.core.model import JSON +from antarest.study.model import ( + STUDY_VERSION_6_5, + STUDY_VERSION_8_1, + STUDY_VERSION_8_2, + STUDY_VERSION_8_6, + STUDY_VERSION_8_7, +) from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfig from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy from antarest.study.storage.variantstudy.business.utils_binding_constraint import ( @@ -75,7 +82,7 @@ def _remove_area_from_links(self, study_data: FileStudy) -> None: if link == self.id: study_data.tree.delete(["input", "links", area_name, "properties", self.id]) try: - if study_data.config.version < 820: + if study_data.config.version < STUDY_VERSION_8_2: study_data.tree.delete(["input", "links", area_name, self.id]) else: study_data.tree.delete(["input", "links", area_name, f"{self.id}_parameters"]) @@ -129,7 +136,7 @@ def _remove_area_from_binding_constraints(self, study_data: FileStudy) -> None: bc_to_remove[bc_index] = binding_constraints.pop(bc_index) break - matrix_suffixes = ["_lt", "_gt", "_eq"] if study_data.config.version >= 870 else [""] + matrix_suffixes = ["_lt", "_gt", "_eq"] if study_data.config.version >= STUDY_VERSION_8_7 else [""] for bc_index, bc in bc_to_remove.items(): for suffix in matrix_suffixes: @@ -239,7 +246,8 @@ def _apply(self, study_data: FileStudy) -> CommandOutput: study_data.tree.delete(["input", "wind", "series", f"wind_{self.id}"]) study_data.tree.delete(["input", "links", self.id]) - if study_data.config.version > 650: + study_version = study_data.config.version + if study_version > STUDY_VERSION_6_5: study_data.tree.delete(["input", "hydro", "hydro", "initialize reservoir date", self.id]) study_data.tree.delete(["input", "hydro", "hydro", "leeway low", self.id]) study_data.tree.delete(["input", "hydro", "hydro", "leeway up", self.id]) @@ -248,13 +256,13 @@ def _apply(self, study_data: FileStudy) -> CommandOutput: study_data.tree.delete(["input", "hydro", "common", "capacity", f"inflowPattern_{self.id}"]) study_data.tree.delete(["input", "hydro", "common", "capacity", f"waterValues_{self.id}"]) - if study_data.config.version >= 810: + if study_version >= STUDY_VERSION_8_1: with contextlib.suppress(ChildNotFoundError): # renewables folder only exist in tree if study.renewable-generation-modelling is "clusters" study_data.tree.delete(["input", "renewables", "clusters", self.id]) study_data.tree.delete(["input", "renewables", "series", self.id]) - if study_data.config.version >= 860: + if study_version >= STUDY_VERSION_8_6: study_data.tree.delete(["input", "st-storage", "clusters", self.id]) study_data.tree.delete(["input", "st-storage", "series", self.id]) @@ -267,13 +275,7 @@ def _apply(self, study_data: FileStudy) -> CommandOutput: output, _ = self._apply_config(study_data.config) - new_area_data: JSON = { - "input": { - "areas": { - "list": [area.name for area in study_data.config.areas.values()], - } - } - } + new_area_data: JSON = {"input": {"areas": {"list": [area.name for area in study_data.config.areas.values()]}}} study_data.tree.save(new_area_data) return output diff --git a/antarest/study/storage/variantstudy/model/command/remove_binding_constraint.py b/antarest/study/storage/variantstudy/model/command/remove_binding_constraint.py index ee51c7e641..d497576b22 100644 --- a/antarest/study/storage/variantstudy/model/command/remove_binding_constraint.py +++ b/antarest/study/storage/variantstudy/model/command/remove_binding_constraint.py @@ -13,6 +13,7 @@ from typing import Any, Dict, List, Tuple from antarest.core.model import JSON +from antarest.study.model import STUDY_VERSION_8_7 from antarest.study.storage.rawstudy.model.filesystem.config.binding_constraint import DEFAULT_GROUP from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfig from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy @@ -57,7 +58,7 @@ def _apply(self, study_data: FileStudy) -> CommandOutput: new_binding_constraints, ["input", "bindingconstraints", "bindingconstraints"], ) - if study_data.config.version < 870: + if study_data.config.version < STUDY_VERSION_8_7: study_data.tree.delete(["input", "bindingconstraints", self.id]) else: existing_files = study_data.tree.get(["input", "bindingconstraints"], depth=1) diff --git a/antarest/study/storage/variantstudy/model/command/remove_link.py b/antarest/study/storage/variantstudy/model/command/remove_link.py index a384ccff58..eeb7ad81f7 100644 --- a/antarest/study/storage/variantstudy/model/command/remove_link.py +++ b/antarest/study/storage/variantstudy/model/command/remove_link.py @@ -14,6 +14,7 @@ from pydantic import field_validator, model_validator +from antarest.study.model import STUDY_VERSION_8_2 from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfig, transform_name_to_id from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy from antarest.study.storage.variantstudy.model.command.common import CommandName, CommandOutput @@ -137,7 +138,7 @@ def _apply(self, study_data: FileStudy) -> CommandOutput: output = self._check_link_exists(study_data.config)[0] if output.status: - if study_data.config.version < 820: + if study_data.config.version < STUDY_VERSION_8_2: study_data.tree.delete(["input", "links", self.area1, self.area2]) else: study_data.tree.delete(["input", "links", self.area1, f"{self.area2}_parameters"]) diff --git a/antarest/study/storage/variantstudy/model/command/remove_st_storage.py b/antarest/study/storage/variantstudy/model/command/remove_st_storage.py index 550587535d..9f60befabe 100644 --- a/antarest/study/storage/variantstudy/model/command/remove_st_storage.py +++ b/antarest/study/storage/variantstudy/model/command/remove_st_storage.py @@ -14,6 +14,7 @@ from pydantic import Field +from antarest.study.model import STUDY_VERSION_8_6 from antarest.study.storage.rawstudy.model.filesystem.config.model import Area, FileStudyTreeConfig from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy from antarest.study.storage.variantstudy.model.command.common import CommandName, CommandOutput @@ -21,7 +22,7 @@ from antarest.study.storage.variantstudy.model.model import CommandDTO # minimum required version. -REQUIRED_VERSION = 860 +REQUIRED_VERSION = STUDY_VERSION_8_6 class RemoveSTStorage(ICommand): diff --git a/antarest/study/storage/variantstudy/model/command/update_binding_constraint.py b/antarest/study/storage/variantstudy/model/command/update_binding_constraint.py index 530cc92dfd..b5a847f4a1 100644 --- a/antarest/study/storage/variantstudy/model/command/update_binding_constraint.py +++ b/antarest/study/storage/variantstudy/model/command/update_binding_constraint.py @@ -13,6 +13,7 @@ import typing as t from antarest.core.model import JSON +from antarest.study.model import STUDY_VERSION_8_7 from antarest.study.storage.rawstudy.model.filesystem.config.binding_constraint import ( DEFAULT_GROUP, OPERATOR_MATRICES_MAP, @@ -164,8 +165,9 @@ def _apply(self, study_data: FileStudy) -> CommandOutput: index, actual_cfg = index_and_cfg + study_version = study_data.config.version # rename matrices if the operator has changed for version >= 870 - if self.operator and study_data.config.version >= 870: + if self.operator and study_version >= STUDY_VERSION_8_7: existing_operator = BindingConstraintOperator(actual_cfg.get("operator")) new_operator = self.operator _update_matrices_names(study_data, self.id, existing_operator, new_operator) @@ -175,13 +177,12 @@ def _apply(self, study_data: FileStudy) -> CommandOutput: updated_matrices = [ term for term in [m.value for m in TermMatrices] if hasattr(self, term) and getattr(self, term) ] - study_version = study_data.config.version + time_step = self.time_step or BindingConstraintFrequency(actual_cfg.get("type")) self.validates_and_fills_matrices( time_step=time_step, specific_matrices=updated_matrices or None, version=study_version, create=False ) - study_version = study_data.config.version props = create_binding_constraint_config(study_version, **self.model_dump()) obj = props.model_dump(mode="json", by_alias=True, exclude_unset=True) diff --git a/antarest/tools/cli.py b/antarest/tools/cli.py index 85eef22128..f7735b891e 100644 --- a/antarest/tools/cli.py +++ b/antarest/tools/cli.py @@ -15,7 +15,7 @@ from typing import Optional import click -from httpx import Client +from antares.study.version import StudyVersion from antarest.study.model import NEW_DEFAULT_STUDY_VERSION from antarest.study.storage.study_upgrader import StudyUpgrader @@ -81,7 +81,7 @@ def commands() -> None: required=False, type=str, help=f"Study version. Default:{NEW_DEFAULT_STUDY_VERSION}", - default=NEW_DEFAULT_STUDY_VERSION, + default=f"{NEW_DEFAULT_STUDY_VERSION:ddd}", ) def cli_apply_script( input: str, @@ -102,11 +102,11 @@ def cli_apply_script( if host is not None and study_id is None: print("--study_id must be set") exit(1) - + study_version = StudyVersion.parse(version) client = None if host: client = create_http_client(verify=not no_verify, auth_token=auth_token) - res = generate_study(Path(input), study_id, output, host, client, version) + res = generate_study(Path(input), study_id, output, host, client, study_version) print(res) @@ -162,11 +162,11 @@ def cli_generate_script(input: str, output: str) -> None: required=False, type=str, help=f"Study version. Default:{NEW_DEFAULT_STUDY_VERSION}", - default=NEW_DEFAULT_STUDY_VERSION, + default=f"{NEW_DEFAULT_STUDY_VERSION:ddd}", ) def cli_generate_script_diff(base: str, variant: str, output: str, version: str) -> None: """Generate variant script commands from two variant script directories""" - generate_diff(Path(base), Path(variant), Path(output), version) + generate_diff(Path(base), Path(variant), Path(output), StudyVersion.parse(version)) @commands.command("upgrade-study") diff --git a/antarest/tools/lib.py b/antarest/tools/lib.py index 5f3aafc74a..da6d4db43b 100644 --- a/antarest/tools/lib.py +++ b/antarest/tools/lib.py @@ -20,6 +20,7 @@ from zipfile import ZipFile import numpy as np +from antares.study.version import StudyVersion from httpx import Client from antarest.core.cache.business.local_chache import LocalCache @@ -129,7 +130,7 @@ class LocalVariantGenerator(IVariantGenerator): def __init__(self, output_path: Path): self.output_path = output_path - def render_template(self, study_version: str = NEW_DEFAULT_STUDY_VERSION) -> None: + def render_template(self, study_version: StudyVersion = NEW_DEFAULT_STUDY_VERSION) -> None: version_template = STUDY_REFERENCE_TEMPLATES[study_version] empty_study_zip = get_local_path() / "resources" / version_template with ZipFile(empty_study_zip) as zip_output: @@ -216,7 +217,7 @@ def generate_diff( base: Path, variant: Path, output_dir: Path, - study_version: str = NEW_DEFAULT_STUDY_VERSION, + study_version: StudyVersion = NEW_DEFAULT_STUDY_VERSION, ) -> None: """ Generate variant script commands from two variant script directories. @@ -328,7 +329,7 @@ def generate_study( output: Optional[str] = None, host: Optional[str] = None, session: Optional[Client] = None, - study_version: str = NEW_DEFAULT_STUDY_VERSION, + study_version: StudyVersion = NEW_DEFAULT_STUDY_VERSION, ) -> GenerationResultInfoDTO: """ Generate a new study or update an existing study by applying commands. diff --git a/tests/cache/test_local_cache.py b/tests/cache/test_local_cache.py index 8f8643d2f4..3242d92533 100644 --- a/tests/cache/test_local_cache.py +++ b/tests/cache/test_local_cache.py @@ -14,6 +14,8 @@ from pathlib import Path from unittest import mock +from antares.study.version import StudyVersion + from antarest.core.cache.business.local_chache import LocalCache, LocalCacheElement from antarest.core.config import CacheConfig from antarest.study.storage.rawstudy.model.filesystem.config.model import Area, FileStudyTreeConfigDTO @@ -26,7 +28,7 @@ def test_lifecycle(): study_path=Path("somepath"), path=Path("somepath"), study_id="", - version=-1, + version=StudyVersion.parse(0), areas={ "a1": Area( name="a1", diff --git a/tests/cache/test_redis_cache.py b/tests/cache/test_redis_cache.py index b3d9cabefd..f5fe9c37a3 100644 --- a/tests/cache/test_redis_cache.py +++ b/tests/cache/test_redis_cache.py @@ -13,6 +13,8 @@ from pathlib import Path from unittest.mock import Mock +from antares.study.version import StudyVersion + from antarest.core.cache.business.redis_cache import RedisCache, RedisCacheElement from antarest.core.serialization import from_json from antarest.study.storage.rawstudy.model.filesystem.config.model import Area, FileStudyTreeConfigDTO @@ -25,7 +27,7 @@ def test_lifecycle(): study_path=Path("somepath"), path=Path("somepath"), study_id="", - version=-1, + version=StudyVersion.parse(0), areas={ "a1": Area( name="a1", diff --git a/tests/integration/studies_blueprint/test_study_version.py b/tests/integration/studies_blueprint/test_study_version.py new file mode 100644 index 0000000000..8a4e603450 --- /dev/null +++ b/tests/integration/studies_blueprint/test_study_version.py @@ -0,0 +1,84 @@ +# Copyright (c) 2024, RTE (https://www.rte-france.com) +# +# See AUTHORS.txt +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +# This file is part of the Antares project. + +import io +import os +import zipfile +from pathlib import Path + +from starlette.testclient import TestClient + +from tests.integration.assets import ASSETS_DIR + + +class TestStudyVersions: + """ + This class contains tests related to the handling of different study versions + """ + + def test_nominal_case(self, client: TestClient, user_access_token: str, tmp_path: str) -> None: + # ============================= + # SET UP + # ============================= + client.headers = {"Authorization": f"Bearer {user_access_token}"} + + data = """[antares] +version = 9.0 +caption = test_version_90 +created = 1682506382.235618 +lastsave = 1682506382.23562 +author = Unknown +""" + tmp_dir = Path(tmp_path) + zip_path = ASSETS_DIR / "STA-mini.zip" + # Extract zip inside tmp_dir + new_zip_path = tmp_dir / "test_version_90" + with zipfile.ZipFile(zip_path, "r") as zip_ref: + zip_ref.extractall(new_zip_path) + + # Change file content + target_path = os.path.join(new_zip_path, "STA-mini", "study.antares") + with open(target_path, "w") as file: + file.write(data) + + final_path = tmp_dir / "test_version_90.zip" + # Rezip it + with zipfile.ZipFile(final_path, "w", zipfile.ZIP_DEFLATED) as zipf: + for root, dirs, files in os.walk(new_zip_path): + for file in files: + file_path = os.path.join(root, file) + zipf.write(file_path, os.path.relpath(file_path, new_zip_path)) + + # ============================= + # LIFECYCLE + # ============================= + + for f in [zip_path, final_path]: + # Imports a study + res = client.post("/v1/studies/_import", files={"study": io.BytesIO(f.read_bytes())}) + res.raise_for_status() + study_id = res.json() + + # Gets study information + res = client.get(f"v1/studies/{study_id}") + res.raise_for_status() + assert res.json()["version"] == 900 if f == final_path else 700 + + # Reads `study.version` file + res = client.get(f"v1/studies/{study_id}/raw?path=study") + res.raise_for_status() + version = str(res.json()["antares"]["version"]) + assert version == "9.0" if f == final_path else "700" + + # Delete the study + res = client.delete(f"v1/studies/{study_id}") + res.raise_for_status() diff --git a/tests/integration/test_integration_variantmanager_tool.py b/tests/integration/test_integration_variantmanager_tool.py index 85783fe789..a14a0f9a36 100644 --- a/tests/integration/test_integration_variantmanager_tool.py +++ b/tests/integration/test_integration_variantmanager_tool.py @@ -28,7 +28,6 @@ COMMAND_FILE, MATRIX_STORE_DIR, RemoteVariantGenerator, - create_http_client, extract_commands, generate_diff, generate_study, diff --git a/tests/launcher/test_slurm_launcher.py b/tests/launcher/test_slurm_launcher.py index 4482eee71a..64ae611217 100644 --- a/tests/launcher/test_slurm_launcher.py +++ b/tests/launcher/test_slurm_launcher.py @@ -19,6 +19,7 @@ from unittest.mock import ANY, Mock, patch import pytest +from antares.study.version import SolverVersion from antareslauncher.data_repo.data_repo_tinydb import DataRepoTinydb from antareslauncher.main import MainParameters from antareslauncher.study_dto import StudyDTO @@ -308,7 +309,7 @@ def call_launcher_mock(arguments: Namespace, parameters: MainParameters): # When the launcher is called study_uuid = str(uuid.uuid4()) - slurm_launcher._run_study(study_uuid, job_id, LauncherParametersDTO(), str(version)) + slurm_launcher._run_study(study_uuid, job_id, LauncherParametersDTO(), SolverVersion.parse(version)) # Check the results assert ( diff --git a/tests/storage/business/test_config_manager.py b/tests/storage/business/test_config_manager.py index f89a4438be..fa9e3b887a 100644 --- a/tests/storage/business/test_config_manager.py +++ b/tests/storage/business/test_config_manager.py @@ -13,6 +13,8 @@ from pathlib import Path from unittest.mock import Mock +from antares.study.version import StudyVersion + from antarest.study.business.thematic_trimming_field_infos import FIELDS_INFO from antarest.study.business.thematic_trimming_management import ( ThematicTrimmingFormFields, @@ -66,27 +68,27 @@ def test_thematic_trimming_config() -> None: study.version = config.version = 700 actual = thematic_trimming_manager.get_field_values(study) - fields_info = get_fields_info(int(study.version)) + fields_info = get_fields_info(StudyVersion.parse(study.version)) expected = ThematicTrimmingFormFields(**dict.fromkeys(fields_info, True)) assert actual == expected study.version = config.version = 800 actual = thematic_trimming_manager.get_field_values(study) - fields_info = get_fields_info(int(study.version)) + fields_info = get_fields_info(StudyVersion.parse(study.version)) expected = ThematicTrimmingFormFields(**dict.fromkeys(fields_info, True)) expected.avl_dtg = False assert actual == expected study.version = config.version = 820 actual = thematic_trimming_manager.get_field_values(study) - fields_info = get_fields_info(int(study.version)) + fields_info = get_fields_info(StudyVersion.parse(study.version)) expected = ThematicTrimmingFormFields(**dict.fromkeys(fields_info, True)) expected.avl_dtg = False assert actual == expected study.version = config.version = 830 actual = thematic_trimming_manager.get_field_values(study) - fields_info = get_fields_info(int(study.version)) + fields_info = get_fields_info(StudyVersion.parse(study.version)) expected = ThematicTrimmingFormFields(**dict.fromkeys(fields_info, True)) expected.dens = False expected.profit_by_plant = False @@ -94,7 +96,7 @@ def test_thematic_trimming_config() -> None: study.version = config.version = 840 actual = thematic_trimming_manager.get_field_values(study) - fields_info = get_fields_info(int(study.version)) + fields_info = get_fields_info(StudyVersion.parse(study.version)) expected = ThematicTrimmingFormFields(**dict.fromkeys(fields_info, False)) expected.cong_fee_alg = True assert actual == expected diff --git a/tests/storage/business/test_raw_study_service.py b/tests/storage/business/test_raw_study_service.py index 9364edfa14..2e9bb25c5a 100644 --- a/tests/storage/business/test_raw_study_service.py +++ b/tests/storage/business/test_raw_study_service.py @@ -621,7 +621,7 @@ def test_check_and_update_study_version_in_database(tmp_path: Path) -> None: assert raw_study.version == "100" - raw_study = RawStudy(id=name, workspace="foo", path=str(study_path), version="100") + raw_study = RawStudy(id=name, workspace="foo", path=str(study_path), version="42") file_study_tree = Mock() file_study_tree.get.return_value = {"version": 42} diff --git a/tests/storage/repository/filesystem/config/test_config_files.py b/tests/storage/repository/filesystem/config/test_config_files.py index a0fdf6d4f5..77ae462678 100644 --- a/tests/storage/repository/filesystem/config/test_config_files.py +++ b/tests/storage/repository/filesystem/config/test_config_files.py @@ -81,7 +81,7 @@ def test_parse_output_parameters(study_path: Path) -> None: config = FileStudyTreeConfig( study_path=study_path, path=study_path, - version=-1, + version=0, store_new_set=True, study_id="id", output_path=study_path / "output", @@ -105,7 +105,7 @@ def test_parse_bindings(study_path: Path) -> None: config = FileStudyTreeConfig( study_path=study_path, path=study_path, - version=-1, + version=0, bindings=[ BindingConstraintDTO( id="bindA", @@ -154,7 +154,7 @@ def test_parse_outputs(study_path: Path) -> None: study_path=study_path, path=study_path, study_id="id", - version=-1, + version=0, output_path=study_path / "output", outputs={ "20201220-1456eco-hello": Simulation( @@ -271,7 +271,7 @@ def test_parse_area(study_path: Path) -> None: study_path=study_path, path=study_path, study_id="id", - version=-1, + version=0, output_path=study_path / "output", areas={ "fr": Area( @@ -307,7 +307,7 @@ def test_parse_area__extra_area(study_path: Path) -> None: study_path=study_path, path=study_path, study_id="id", - version=-1, + version=0, output_path=study_path / "output", areas={ "fr": Area( diff --git a/tests/storage/test_service.py b/tests/storage/test_service.py index 47ba9fe49c..0944e7b800 100644 --- a/tests/storage/test_service.py +++ b/tests/storage/test_service.py @@ -110,7 +110,7 @@ def study_to_dto(study: Study) -> StudyMetadataDTO: return StudyMetadataDTO( id=study.id, name=study.name, - version=int(study.version), + version=study.version, created=str(study.created_at), updated=str(study.updated_at), workspace=DEFAULT_WORKSPACE_NAME, diff --git a/tests/storage/web/test_studies_bp.py b/tests/storage/web/test_studies_bp.py index 33cedcc8df..6774f6127e 100644 --- a/tests/storage/web/test_studies_bp.py +++ b/tests/storage/web/test_studies_bp.py @@ -553,4 +553,4 @@ def test_get_study_versions(tmp_path: Path) -> None: client = create_test_client(Mock(), raise_server_exceptions=False) result = client.get("/v1/studies/_versions") - assert result.json() == list(STUDY_REFERENCE_TEMPLATES.keys()) + assert result.json() == [f"{v:ddd}" for v in STUDY_REFERENCE_TEMPLATES] From 88cf9fcadb3a842e8ed097a3d2b2159e3922b3ef Mon Sep 17 00:00:00 2001 From: maugde <167874615+maugde@users.noreply.github.com> Date: Mon, 7 Oct 2024 10:01:14 +0200 Subject: [PATCH 021/182] fix(snapshot_cleaning): set `ref_id` to `None` to prevent postgresql crash (#2169) --- antarest/study/storage/variantstudy/variant_study_service.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/antarest/study/storage/variantstudy/variant_study_service.py b/antarest/study/storage/variantstudy/variant_study_service.py index 8737824696..beb39c6d29 100644 --- a/antarest/study/storage/variantstudy/variant_study_service.py +++ b/antarest/study/storage/variantstudy/variant_study_service.py @@ -1082,7 +1082,7 @@ def clear_all_snapshots(self, retention_hours: timedelta, params: t.Optional[Req snapshot_clearing_task_instance, task_name, task_type=TaskType.SNAPSHOT_CLEARING, - ref_id="SNAPSHOT_CLEANING", + ref_id=None, custom_event_messages=None, request_params=params, ) From d120a68390faaa56ba5fe07e1690357354e08c56 Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Mon, 7 Oct 2024 10:21:19 +0200 Subject: [PATCH 022/182] fix(allocation): show matrix even with only one area (#2168) --- antarest/study/business/allocation_management.py | 2 +- .../study_data_blueprint/test_hydro_allocation.py | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/antarest/study/business/allocation_management.py b/antarest/study/business/allocation_management.py index 79c22f26cd..af53df762f 100644 --- a/antarest/study/business/allocation_management.py +++ b/antarest/study/business/allocation_management.py @@ -233,7 +233,7 @@ def get_allocation_matrix(self, study: Study, all_areas: List[AreaInfoDTO]) -> A """ file_study = self.storage_service.get_storage(study).get_raw(study) - allocation_cfg = file_study.tree.get("input/hydro/allocation/*".split("/"), depth=2) + allocation_cfg = file_study.tree.get(["input", "hydro", "allocation"], depth=3) if not allocation_cfg: areas_ids = {area.id for area in all_areas} diff --git a/tests/integration/study_data_blueprint/test_hydro_allocation.py b/tests/integration/study_data_blueprint/test_hydro_allocation.py index 6ba223bf45..cfe1b51ba6 100644 --- a/tests/integration/study_data_blueprint/test_hydro_allocation.py +++ b/tests/integration/study_data_blueprint/test_hydro_allocation.py @@ -125,15 +125,21 @@ def test_get_allocation_matrix( area_id: str, expected: t.List[t.List[float]], ) -> None: + client.headers = {"Authorization": f"Bearer {user_access_token}"} """Check `get_allocation_matrix` end point""" - res = client.get( - f"/v1/studies/{internal_study_id}/areas/hydro/allocation/matrix", - headers={"Authorization": f"Bearer {user_access_token}"}, - ) + res = client.get(f"/v1/studies/{internal_study_id}/areas/hydro/allocation/matrix") assert res.status_code == http.HTTPStatus.OK, res.json() actual = res.json() assert actual == expected + # test get allocation matrix with a study with only one area. + client.delete(f"/v1/studies/{internal_study_id}/areas/de") + client.delete(f"/v1/studies/{internal_study_id}/areas/es") + client.delete(f"/v1/studies/{internal_study_id}/areas/fr") + res = client.get(f"/v1/studies/{internal_study_id}/areas/hydro/allocation/matrix") + assert res.status_code == http.HTTPStatus.OK, res.json() + assert res.json() == {"index": ["it"], "columns": ["it"], "data": [[1.0]]} + def test_set_allocation_form_values( self, client: TestClient, From f2460fe0c2870746961c9c2908c5b9190feeb21e Mon Sep 17 00:00:00 2001 From: Sylvain Leclerc Date: Tue, 8 Oct 2024 09:45:15 +0200 Subject: [PATCH 023/182] fix: enable foreign keys for sqlite (#2172) By default, sqlite does not enforce foreign key constraints, this needs to be enabled explicitly. This is in particular important to catch those errors in our unit tests, but also for desktop mode. --------- Signed-off-by: Sylvain Leclerc --- .../utils/fastapi_sqlalchemy/middleware.py | 21 ++++++- tests/conftest.py | 3 + tests/conftest_instances.py | 28 +++++++++ tests/core/test_tasks.py | 21 ++++--- .../test_matrix_garbage_collector.py | 62 +++++++------------ 5 files changed, 84 insertions(+), 51 deletions(-) create mode 100644 tests/conftest_instances.py diff --git a/antarest/core/utils/fastapi_sqlalchemy/middleware.py b/antarest/core/utils/fastapi_sqlalchemy/middleware.py index dcc1f95b25..73a073e033 100644 --- a/antarest/core/utils/fastapi_sqlalchemy/middleware.py +++ b/antarest/core/utils/fastapi_sqlalchemy/middleware.py @@ -1,9 +1,10 @@ from contextvars import ContextVar, Token from typing import Any, Dict, Optional, Type, Union -from sqlalchemy import create_engine # type: ignore +from sqlalchemy import create_engine, event # type: ignore from sqlalchemy.engine import Engine # type: ignore from sqlalchemy.engine.url import URL # type: ignore +from sqlalchemy.event import listen # type: ignore from sqlalchemy.orm import Session, sessionmaker # type: ignore from starlette.middleware.base import BaseHTTPMiddleware, RequestResponseEndpoint from starlette.requests import Request @@ -16,6 +17,20 @@ _session: ContextVar[Optional[Session]] = ContextVar("_session", default=None) +def _is_sqlite_engine(engine: Engine) -> bool: + return "sqlite" in engine.url.drivername.lower() + + +def enable_sqlite_foreign_keys(dbapi_connection: Any, connection_record: Any) -> None: + """ + By default, sqlite does not enforce foreign key constraints, + we need to tell it explicitly. + """ + cursor = dbapi_connection.cursor() + cursor.execute("PRAGMA foreign_keys=ON;") + cursor.close() + + class DBSessionMiddleware(BaseHTTPMiddleware): def __init__( self, @@ -39,6 +54,10 @@ def __init__( engine = create_engine(db_url, **engine_args) else: engine = custom_engine + + if _is_sqlite_engine(engine): + listen(engine, "connect", enable_sqlite_foreign_keys) + _Session = sessionmaker(bind=engine, **session_args) async def dispatch(self, request: Request, call_next: RequestResponseEndpoint) -> Response: diff --git a/tests/conftest.py b/tests/conftest.py index 3a074c8b98..cd2016daea 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -17,6 +17,9 @@ # noinspection PyUnresolvedReferences from tests.conftest_db import * +# noinspection PyUnresolvedReferences +from tests.conftest_instances import * + # noinspection PyUnresolvedReferences from tests.conftest_services import * diff --git a/tests/conftest_instances.py b/tests/conftest_instances.py new file mode 100644 index 0000000000..58237e6fc1 --- /dev/null +++ b/tests/conftest_instances.py @@ -0,0 +1,28 @@ +# Copyright (c) 2024, RTE (https://www.rte-france.com) +# +# See AUTHORS.txt +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +# This file is part of the Antares project. +""" +The aim of this module is to contain fixtures for +instantiating objects such as users, studies, ... +""" +import pytest + +from antarest.core.jwt import DEFAULT_ADMIN_USER +from antarest.core.utils.fastapi_sqlalchemy import DBSessionMiddleware, db +from antarest.login.model import User + + +@pytest.fixture +def admin_user(db_middleware: DBSessionMiddleware) -> User: + with db(commit_on_exit=True): + user = User(id=DEFAULT_ADMIN_USER.id) + db.session.add(user) + return DEFAULT_ADMIN_USER diff --git a/tests/core/test_tasks.py b/tests/core/test_tasks.py index cb2c635177..668333e540 100644 --- a/tests/core/test_tasks.py +++ b/tests/core/test_tasks.py @@ -23,7 +23,7 @@ from antarest.core.config import Config from antarest.core.interfaces.eventbus import EventType, IEventBus -from antarest.core.jwt import DEFAULT_ADMIN_USER +from antarest.core.jwt import JWTUser from antarest.core.model import PermissionInfo, PublicMode from antarest.core.persistence import Base from antarest.core.requests import RequestParameters, UserHasNotPermissionError @@ -72,8 +72,9 @@ def db_engine_fixture(tmp_path: Path) -> t.Generator[Engine, None, None]: @with_db_context -def test_service(core_config: Config, event_bus: IEventBus) -> None: +def test_service(core_config: Config, event_bus: IEventBus, admin_user: JWTUser) -> None: engine = db.session.bind + task_job_repo = TaskJobRepository() # Prepare a TaskJob in the database @@ -92,7 +93,7 @@ def test_service(core_config: Config, event_bus: IEventBus) -> None: tasks = service.list_tasks( TaskListFilter(), - request_params=RequestParameters(user=DEFAULT_ADMIN_USER), + request_params=RequestParameters(user=admin_user), ) assert len(tasks) == 1 assert tasks[0].status == TaskStatus.FAILED @@ -101,7 +102,7 @@ def test_service(core_config: Config, event_bus: IEventBus) -> None: # Test Case: get task status # ========================== - res = service.status_task("a", RequestParameters(user=DEFAULT_ADMIN_USER)) + res = service.status_task("a", RequestParameters(user=admin_user)) assert res is not None expected = { "completion_date_utc": ANY, @@ -134,7 +135,7 @@ def action_fail(update_msg: t.Callable[[str], None]) -> TaskResult: None, None, None, - RequestParameters(user=DEFAULT_ADMIN_USER), + RequestParameters(user=admin_user), ) service.await_task(failed_id, timeout_sec=2) @@ -162,7 +163,7 @@ def action_ok(update_msg: t.Callable[[str], None]) -> TaskResult: None, None, None, - request_params=RequestParameters(user=DEFAULT_ADMIN_USER), + request_params=RequestParameters(user=admin_user), ) service.await_task(ok_id, timeout_sec=2) @@ -200,7 +201,7 @@ def test_repository(db_session: Session) -> None: # Create a RawStudy in the database study_id = "e34fe4d5-5964-4ef2-9baf-fad66dadc512" - db_session.add(RawStudy(id="study_id", name="foo", version="860")) + db_session.add(RawStudy(id=study_id, name="foo", version="860")) db_session.commit() # Create a TaskJobService @@ -276,7 +277,7 @@ def test_repository(db_session: Session) -> None: @with_db_context -def test_cancel(core_config: Config, event_bus: IEventBus) -> None: +def test_cancel(core_config: Config, event_bus: IEventBus, admin_user: JWTUser) -> None: # Create a TaskJobService and add tasks task_job_repo = TaskJobRepository() task_job_repo.save(TaskJob(id="a", name="foo")) @@ -296,7 +297,7 @@ def test_cancel(core_config: Config, event_bus: IEventBus) -> None: backend.clear_events() - service.cancel_task("b", RequestParameters(user=DEFAULT_ADMIN_USER), dispatch=True) + service.cancel_task("b", RequestParameters(user=admin_user), dispatch=True) collected_events = backend.get_events() @@ -312,7 +313,7 @@ def test_cancel(core_config: Config, event_bus: IEventBus) -> None: backend.clear_events() - service.cancel_task("a", RequestParameters(user=DEFAULT_ADMIN_USER), dispatch=True) + service.cancel_task("a", RequestParameters(user=admin_user), dispatch=True) collected_events = backend.get_events() assert len(collected_events) == 0, "No event should have been emitted because the task is in the service map" diff --git a/tests/matrixstore/test_matrix_garbage_collector.py b/tests/matrixstore/test_matrix_garbage_collector.py index 1e02731910..865a6754ef 100644 --- a/tests/matrixstore/test_matrix_garbage_collector.py +++ b/tests/matrixstore/test_matrix_garbage_collector.py @@ -10,24 +10,24 @@ # # This file is part of the Antares project. -from datetime import datetime from pathlib import Path from unittest.mock import Mock +import numpy as np import pytest -from sqlalchemy import create_engine -from antarest.core.utils.fastapi_sqlalchemy import DBSessionMiddleware, db -from antarest.dbmodel import Base +from antarest.core.jwt import JWTUser +from antarest.core.requests import RequestParameters +from antarest.core.utils.fastapi_sqlalchemy import db from antarest.matrixstore.matrix_garbage_collector import MatrixGarbageCollector -from antarest.matrixstore.model import MatrixDataSet, MatrixDataSetRelation +from antarest.matrixstore.model import MatrixDataSetUpdateDTO, MatrixInfoDTO from antarest.matrixstore.repository import MatrixDataSetRepository from antarest.matrixstore.service import MatrixService from antarest.study.storage.patch_service import PatchService from antarest.study.storage.variantstudy.business.matrix_constants_generator import GeneratorMatrixConstants from antarest.study.storage.variantstudy.command_factory import CommandFactory from antarest.study.storage.variantstudy.model.command.common import CommandName -from antarest.study.storage.variantstudy.model.dbmodel import CommandBlock +from antarest.study.storage.variantstudy.model.dbmodel import CommandBlock, VariantStudy from antarest.study.storage.variantstudy.repository import VariantStudyRepository @@ -116,17 +116,13 @@ def test_get_matrices_used_in_raw_studies( @pytest.mark.unit_test def test_get_matrices_used_in_variant_studies( matrix_garbage_collector: MatrixGarbageCollector, + variant_study_repository: VariantStudyRepository, ): - engine = create_engine("sqlite:///:memory:", echo=False) - Base.metadata.create_all(engine) - # noinspection SpellCheckingInspection - DBSessionMiddleware( - None, - custom_engine=engine, - session_args={"autocommit": False, "autoflush": False}, - ) with db(): study_id = "study_id" + + variant_study_repository.save(VariantStudy(id=study_id)) + # TODO: add series to the command blocks command_block1 = CommandBlock( study_id=study_id, @@ -173,38 +169,24 @@ def test_get_matrices_used_in_variant_studies( @pytest.mark.unit_test def test_get_matrices_used_in_dataset( matrix_garbage_collector: MatrixGarbageCollector, + matrix_service: MatrixService, + admin_user: JWTUser, ): matrix_garbage_collector.dataset_repository = MatrixDataSetRepository() - engine = create_engine("sqlite:///:memory:", echo=False) - Base.metadata.create_all(engine) - # noinspection SpellCheckingInspection - DBSessionMiddleware( - None, - custom_engine=engine, - session_args={"autocommit": False, "autoflush": False}, - ) - dataset = MatrixDataSet( - name="name", - public=True, - owner_id="owner_id", - groups=[], - created_at=datetime.utcnow(), - updated_at=datetime.utcnow(), - ) - matrix_relation1 = MatrixDataSetRelation(name="matrix_name1") - matrix_relation1.matrix_id = "matrix_id1" - dataset.matrices.append(matrix_relation1) - matrix_relation2 = MatrixDataSetRelation(name="matrix_name2") - matrix_relation2.matrix_id = "matrix_id2" - dataset.matrices.append(matrix_relation2) with db(): - db.session.add(dataset) - db.session.commit() + matrix1_id = matrix_service.create(np.ones((1, 1))) + matrix2_id = matrix_service.create(np.ones((2, 1))) + dataset = matrix_service.create_dataset( + dataset_info=MatrixDataSetUpdateDTO(name="name", groups=[], public=True), + matrices=[MatrixInfoDTO(id=matrix1_id, name="matrix_1"), MatrixInfoDTO(id=matrix2_id, name="matrix_2")], + params=RequestParameters(admin_user), + ) + matrices = matrix_garbage_collector._get_datasets_matrices() assert len(matrices) == 2 - assert "matrix_id1" in matrices - assert "matrix_id2" in matrices + assert matrix1_id in matrices + assert matrix2_id in matrices @pytest.mark.unit_test From 9562d094118c8c78867b1503a01b501d7de658a8 Mon Sep 17 00:00:00 2001 From: maugde <167874615+maugde@users.noreply.github.com> Date: Wed, 9 Oct 2024 11:28:05 +0200 Subject: [PATCH 024/182] feature(variants): allow to increase cleaning snapshot frequency (#2173) Add the option `snapshot_retention_days` in configuration to allow for shorter retention period for snapshots. [ANT-1952] ticket. --- antarest/core/config.py | 5 +++++ antarest/study/storage/auto_archive_service.py | 11 ++++++++--- docs/install/1-CONFIG.md | 6 ++++++ .../business/test_autoarchive_service.py | 17 +++++++++-------- 4 files changed, 28 insertions(+), 11 deletions(-) diff --git a/antarest/core/config.py b/antarest/core/config.py index 4b85331d6a..b88e4f44bb 100644 --- a/antarest/core/config.py +++ b/antarest/core/config.py @@ -155,6 +155,7 @@ class StorageConfig: auto_archive_dry_run: bool = False auto_archive_sleeping_time: int = 3600 auto_archive_max_parallel: int = 5 + snapshot_retention_days: int = 1 @classmethod def from_dict(cls, data: JSON) -> "StorageConfig": @@ -184,6 +185,10 @@ def from_dict(cls, data: JSON) -> "StorageConfig": auto_archive_dry_run=data.get("auto_archive_dry_run", defaults.auto_archive_dry_run), auto_archive_sleeping_time=data.get("auto_archive_sleeping_time", defaults.auto_archive_sleeping_time), auto_archive_max_parallel=data.get("auto_archive_max_parallel", defaults.auto_archive_max_parallel), + snapshot_retention_days=data.get( + "snapshot_retention_days", + defaults.snapshot_retention_days, + ), ) diff --git a/antarest/study/storage/auto_archive_service.py b/antarest/study/storage/auto_archive_service.py index 85cb2237f9..c9c1307604 100644 --- a/antarest/study/storage/auto_archive_service.py +++ b/antarest/study/storage/auto_archive_service.py @@ -38,6 +38,10 @@ def __init__(self, study_service: StudyService, config: Config): self.max_parallel = self.config.storage.auto_archive_max_parallel def _try_archive_studies(self) -> None: + """ + Archive old studies + Clear old variant snapshots + """ old_date = datetime.datetime.utcnow() - datetime.timedelta(days=self.config.storage.auto_archive_threshold_days) with db(): # in this part full `Read` rights over studies are granted to this function @@ -73,9 +77,6 @@ def _try_archive_studies(self) -> None: study_id, params=RequestParameters(DEFAULT_ADMIN_USER), ) - self.study_service.storage_service.variant_study_service.clear_snapshot( - self.study_service.get_study(study_id) - ) except TaskAlreadyRunning: pass except Exception as e: @@ -84,6 +85,10 @@ def _try_archive_studies(self) -> None: exc_info=e, ) + self.study_service.storage_service.variant_study_service.clear_all_snapshots( + datetime.timedelta(days=self.config.storage.snapshot_retention_days) + ) + def _loop(self) -> None: while True: try: diff --git a/docs/install/1-CONFIG.md b/docs/install/1-CONFIG.md index 9ad48dad03..b9e04f644f 100644 --- a/docs/install/1-CONFIG.md +++ b/docs/install/1-CONFIG.md @@ -304,6 +304,12 @@ default: - **Default value:** 5 - **Description:** Max auto archival tasks in parallel. +## **snapshot_retention_days** + +- **Type:** Integer +- **Default value:** 1 +- **Description:** Snapshots of variant not updated or accessed for **snapshot_retention_days** days will be cleared. + ## **watcher_lock** - **Type:** Boolean diff --git a/tests/storage/business/test_autoarchive_service.py b/tests/storage/business/test_autoarchive_service.py index 559126f00d..eb04adf2b2 100644 --- a/tests/storage/business/test_autoarchive_service.py +++ b/tests/storage/business/test_autoarchive_service.py @@ -69,6 +69,10 @@ def test_auto_archival(tmp_path: Path): id="e", updated_at=now - datetime.timedelta(days=61), ), + VariantStudy( + id="f", + updated_at=now - datetime.timedelta(days=1), + ), ] ) db_session.commit() @@ -86,13 +90,10 @@ def test_auto_archival(tmp_path: Path): # Check that the raw study "d" was about to be archived but failed because the task was already running study_service.archive.assert_called_once_with("d", params=RequestParameters(DEFAULT_ADMIN_USER)) - # Check that the snapshot of the variant study "e" is cleared - study_service.storage_service.variant_study_service.clear_snapshot.assert_called_once() - calls = study_service.storage_service.variant_study_service.clear_snapshot.call_args_list - assert len(calls) == 1 - clear_snapshot_call = calls[0] - actual_study = clear_snapshot_call[0][0] - assert actual_study.id == "e" - # Check that the variant outputs are deleted for the variant study "e" study_service.archive_outputs.assert_called_once_with("e", params=RequestParameters(DEFAULT_ADMIN_USER)) + + # Check if the `clear_all_snapshots` method was called with default values + study_service.storage_service.variant_study_service.clear_all_snapshots.assert_called_once_with( + datetime.timedelta(days=1), + ) From 5c8cd24305b1383c4b0e52d9efbcee6f8b9991a9 Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Wed, 9 Oct 2024 13:03:43 +0200 Subject: [PATCH 025/182] fix(matrix-index): return the right year (#2177) --- antarest/study/storage/utils.py | 2 +- .../business/test_study_service_utils.py | 24 +++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/antarest/study/storage/utils.py b/antarest/study/storage/utils.py index 9eb9a3d682..230883a4aa 100644 --- a/antarest/study/storage/utils.py +++ b/antarest/study/storage/utils.py @@ -290,7 +290,7 @@ def get_start_date( target_year = 2018 while True: if leapyear == calendar.isleap(target_year): - first_day = datetime(target_year, starting_month_index, 1) + first_day = datetime(target_year + (starting_month_index != 1), 1, 1) if first_day.weekday() == starting_day_index: break target_year += 1 diff --git a/tests/storage/business/test_study_service_utils.py b/tests/storage/business/test_study_service_utils.py index fd89592d65..5328c807c2 100644 --- a/tests/storage/business/test_study_service_utils.py +++ b/tests/storage/business/test_study_service_utils.py @@ -133,9 +133,9 @@ def test_output_downloads_export(tmp_path: Path): }, StudyDownloadLevelDTO.WEEKLY, MatrixIndex( - start_date=str(datetime.datetime(2019, 7, 5)), + start_date=str(datetime.datetime(2023, 7, 5)), steps=48, - first_week_size=5, + first_week_size=7, level=StudyDownloadLevelDTO.WEEKLY, ), ), @@ -150,9 +150,9 @@ def test_output_downloads_export(tmp_path: Path): }, StudyDownloadLevelDTO.MONTHLY, MatrixIndex( - start_date=str(datetime.datetime(2019, 7, 1)), + start_date=str(datetime.datetime(2023, 7, 1)), steps=7, - first_week_size=7, + first_week_size=2, level=StudyDownloadLevelDTO.MONTHLY, ), ), @@ -167,9 +167,9 @@ def test_output_downloads_export(tmp_path: Path): }, StudyDownloadLevelDTO.MONTHLY, MatrixIndex( - start_date=str(datetime.datetime(2019, 7, 1)), + start_date=str(datetime.datetime(2023, 7, 1)), steps=4, - first_week_size=7, + first_week_size=2, level=StudyDownloadLevelDTO.MONTHLY, ), ), @@ -184,9 +184,9 @@ def test_output_downloads_export(tmp_path: Path): }, StudyDownloadLevelDTO.HOURLY, MatrixIndex( - start_date=str(datetime.datetime(2021, 3, 5)), + start_date=str(datetime.datetime(2023, 3, 5)), steps=2304, - first_week_size=3, + first_week_size=1, level=StudyDownloadLevelDTO.HOURLY, ), ), @@ -201,9 +201,9 @@ def test_output_downloads_export(tmp_path: Path): }, StudyDownloadLevelDTO.ANNUAL, MatrixIndex( - start_date=str(datetime.datetime(2021, 3, 5)), + start_date=str(datetime.datetime(2023, 3, 5)), steps=1, - first_week_size=3, + first_week_size=1, level=StudyDownloadLevelDTO.ANNUAL, ), ), @@ -218,9 +218,9 @@ def test_output_downloads_export(tmp_path: Path): }, StudyDownloadLevelDTO.DAILY, MatrixIndex( - start_date=str(datetime.datetime(2026, 3, 3)), + start_date=str(datetime.datetime(2022, 3, 3)), steps=98, - first_week_size=3, + first_week_size=1, level=StudyDownloadLevelDTO.DAILY, ), ), From 430e70bcea25b9119003b80e83bc21dd0eaff9f2 Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Wed, 9 Oct 2024 14:34:56 +0200 Subject: [PATCH 026/182] fix(tests): adapt new year for index test (#2178) --- .../integration/raw_studies_blueprint/test_download_matrices.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integration/raw_studies_blueprint/test_download_matrices.py b/tests/integration/raw_studies_blueprint/test_download_matrices.py index 499bd8b587..ff105eb2e3 100644 --- a/tests/integration/raw_studies_blueprint/test_download_matrices.py +++ b/tests/integration/raw_studies_blueprint/test_download_matrices.py @@ -161,7 +161,7 @@ def test_download_matrices(self, client: TestClient, user_access_token: str, int variant_matrix_path = f"input/load/series/load_{area_id}" raw_start_date = datetime.datetime(2018, 1, 1) - variant_start_date = datetime.datetime(2019, 7, 1) + variant_start_date = datetime.datetime(2023, 7, 1) for uuid, path, start_date in [ (study_820_id, raw_matrix_path, raw_start_date), From bb7c8441f5d9736d40e992c91dbcd1b78680f856 Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Wed, 9 Oct 2024 17:43:05 +0200 Subject: [PATCH 027/182] feat(tests): add tests on matrix index (#2180) --- antarest/study/storage/utils.py | 38 ++-- .../test_download_matrices.py | 2 +- .../business/test_study_service_utils.py | 168 +++++++++++++++++- 3 files changed, 184 insertions(+), 24 deletions(-) diff --git a/antarest/study/storage/utils.py b/antarest/study/storage/utils.py index 230883a4aa..82b4c7f4bd 100644 --- a/antarest/study/storage/utils.py +++ b/antarest/study/storage/utils.py @@ -289,7 +289,7 @@ def get_start_date( starting_day_index = DAY_NAMES.index(starting_day.title()) target_year = 2018 while True: - if leapyear == calendar.isleap(target_year): + if leapyear == calendar.isleap(target_year + (starting_month_index > 2)): first_day = datetime(target_year + (starting_month_index != 1), 1, 1) if first_day.weekday() == starting_day_index: break @@ -297,21 +297,27 @@ def get_start_date( start_offset_days = timedelta(days=(0 if output_id is None else start_offset - 1)) start_date = datetime(target_year, starting_month_index, 1) + start_offset_days - # base case is DAILY - steps = MATRIX_INPUT_DAYS_COUNT if output_id is None else end - start_offset + 1 - if level == StudyDownloadLevelDTO.HOURLY: - steps = steps * 24 - elif level == StudyDownloadLevelDTO.ANNUAL: - steps = 1 - elif level == StudyDownloadLevelDTO.WEEKLY: - steps = math.ceil(steps / 7) - elif level == StudyDownloadLevelDTO.MONTHLY: - end_date = start_date + timedelta(days=steps) - same_year = end_date.year == start_date.year - if same_year: - steps = 1 + end_date.month - start_date.month - else: - steps = (13 - start_date.month) + end_date.month + + def _get_steps( + daily_steps: int, temporality: StudyDownloadLevelDTO, begin_date: datetime, is_output: t.Optional[str] = None + ) -> int: + temporality_mapping = { + StudyDownloadLevelDTO.DAILY: daily_steps, + StudyDownloadLevelDTO.HOURLY: daily_steps * 24, + StudyDownloadLevelDTO.ANNUAL: 1, + StudyDownloadLevelDTO.WEEKLY: math.ceil(daily_steps / 7), + StudyDownloadLevelDTO.MONTHLY: 12, + } + + if temporality == StudyDownloadLevelDTO.MONTHLY and is_output: + end_date = begin_date + timedelta(days=daily_steps) + same_year = end_date.year == begin_date.year + return 1 + end_date.month - begin_date.month if same_year else (13 - begin_date.month) + end_date.month + + return temporality_mapping[temporality] + + days_count = MATRIX_INPUT_DAYS_COUNT if output_id is None else end - start_offset + 1 + steps = _get_steps(days_count, level, start_date, output_id) first_week_day_index = DAY_NAMES.index(first_week_day) first_week_offset = 0 diff --git a/tests/integration/raw_studies_blueprint/test_download_matrices.py b/tests/integration/raw_studies_blueprint/test_download_matrices.py index ff105eb2e3..25406cdb23 100644 --- a/tests/integration/raw_studies_blueprint/test_download_matrices.py +++ b/tests/integration/raw_studies_blueprint/test_download_matrices.py @@ -161,7 +161,7 @@ def test_download_matrices(self, client: TestClient, user_access_token: str, int variant_matrix_path = f"input/load/series/load_{area_id}" raw_start_date = datetime.datetime(2018, 1, 1) - variant_start_date = datetime.datetime(2023, 7, 1) + variant_start_date = datetime.datetime(2028, 7, 1) for uuid, path, start_date in [ (study_820_id, raw_matrix_path, raw_start_date), diff --git a/tests/storage/business/test_study_service_utils.py b/tests/storage/business/test_study_service_utils.py index 5328c807c2..270f3d4dba 100644 --- a/tests/storage/business/test_study_service_utils.py +++ b/tests/storage/business/test_study_service_utils.py @@ -30,7 +30,7 @@ TimeSeriesData, ) from antarest.study.storage.study_download_utils import StudyDownloader -from antarest.study.storage.utils import get_start_date +from antarest.study.storage.utils import DAY_NAMES, get_start_date def test_output_downloads_export(tmp_path: Path): @@ -133,7 +133,7 @@ def test_output_downloads_export(tmp_path: Path): }, StudyDownloadLevelDTO.WEEKLY, MatrixIndex( - start_date=str(datetime.datetime(2023, 7, 5)), + start_date=str(datetime.datetime(2028, 7, 5)), steps=48, first_week_size=7, level=StudyDownloadLevelDTO.WEEKLY, @@ -150,7 +150,7 @@ def test_output_downloads_export(tmp_path: Path): }, StudyDownloadLevelDTO.MONTHLY, MatrixIndex( - start_date=str(datetime.datetime(2023, 7, 1)), + start_date=str(datetime.datetime(2028, 7, 1)), steps=7, first_week_size=2, level=StudyDownloadLevelDTO.MONTHLY, @@ -167,7 +167,7 @@ def test_output_downloads_export(tmp_path: Path): }, StudyDownloadLevelDTO.MONTHLY, MatrixIndex( - start_date=str(datetime.datetime(2023, 7, 1)), + start_date=str(datetime.datetime(2028, 7, 1)), steps=4, first_week_size=2, level=StudyDownloadLevelDTO.MONTHLY, @@ -184,7 +184,7 @@ def test_output_downloads_export(tmp_path: Path): }, StudyDownloadLevelDTO.HOURLY, MatrixIndex( - start_date=str(datetime.datetime(2023, 3, 5)), + start_date=str(datetime.datetime(2028, 3, 5)), steps=2304, first_week_size=1, level=StudyDownloadLevelDTO.HOURLY, @@ -201,7 +201,7 @@ def test_output_downloads_export(tmp_path: Path): }, StudyDownloadLevelDTO.ANNUAL, MatrixIndex( - start_date=str(datetime.datetime(2023, 3, 5)), + start_date=str(datetime.datetime(2028, 3, 5)), steps=1, first_week_size=1, level=StudyDownloadLevelDTO.ANNUAL, @@ -226,7 +226,7 @@ def test_output_downloads_export(tmp_path: Path): ), ], ) -def test_create_matrix_index(config: Dict[str, Any], level: StudyDownloadLevelDTO, expected: MatrixIndex): +def test_create_matrix_index_output(config: Dict[str, Any], level: StudyDownloadLevelDTO, expected: MatrixIndex): config_mock = Mock() config_mock.archived = False output_id = "some output" @@ -236,3 +236,157 @@ def test_create_matrix_index(config: Dict[str, Any], level: StudyDownloadLevelDT file_study.config.outputs = {output_id: config_mock} assert get_start_date(file_study, output_id, level) == expected + + +@pytest.mark.parametrize( + "config,level,expected", + [ + ( + { + "first-month-in-year": "january", + "january.1st": "Monday", + "leapyear": True, + "first.weekday": "Monday", + "simulation.start": 1, + "simulation.end": 354, + }, + StudyDownloadLevelDTO.WEEKLY, + MatrixIndex( + start_date=str(datetime.datetime(2024, 1, 1)), + steps=53, + first_week_size=7, + level=StudyDownloadLevelDTO.WEEKLY, + ), + ), + ( + { + "first-month-in-year": "january", + "january.1st": "Monday", + "leapyear": False, + "first.weekday": "Monday", + "simulation.start": 1, + "simulation.end": 354, + }, + StudyDownloadLevelDTO.WEEKLY, + MatrixIndex( + start_date=str(datetime.datetime(2018, 1, 1)), + steps=53, + first_week_size=7, + level=StudyDownloadLevelDTO.WEEKLY, + ), + ), + ( + { + "first-month-in-year": "july", + "january.1st": "Monday", + "leapyear": False, + "first.weekday": "Wednesday", + "simulation.start": 5, + "simulation.end": 340, + }, + StudyDownloadLevelDTO.WEEKLY, + MatrixIndex( + start_date=str(datetime.datetime(2028, 7, 1)), + steps=53, + first_week_size=4, + level=StudyDownloadLevelDTO.WEEKLY, + ), + ), + ( + { + "first-month-in-year": "july", + "january.1st": "Monday", + "leapyear": False, + "first.weekday": "Monday", + "simulation.start": 1, + "simulation.end": 200, + }, + StudyDownloadLevelDTO.MONTHLY, + MatrixIndex( + start_date=str(datetime.datetime(2028, 7, 1)), + steps=12, + first_week_size=2, + level=StudyDownloadLevelDTO.MONTHLY, + ), + ), + ( + { + "first-month-in-year": "july", + "january.1st": "Monday", + "leapyear": False, + "first.weekday": "Monday", + "simulation.start": 1, + "simulation.end": 100, + }, + StudyDownloadLevelDTO.MONTHLY, + MatrixIndex( + start_date=str(datetime.datetime(2028, 7, 1)), + steps=12, + first_week_size=2, + level=StudyDownloadLevelDTO.MONTHLY, + ), + ), + ( + { + "first-month-in-year": "march", + "january.1st": "Monday", + "leapyear": False, + "first.weekday": "Monday", + "simulation.start": 5, + "simulation.end": 100, + }, + StudyDownloadLevelDTO.HOURLY, + MatrixIndex( + start_date=str(datetime.datetime(2028, 3, 1)), + steps=8760, + first_week_size=5, + level=StudyDownloadLevelDTO.HOURLY, + ), + ), + ( + { + "first-month-in-year": "march", + "january.1st": "Monday", + "leapyear": False, + "first.weekday": "Monday", + "simulation.start": 5, + "simulation.end": 100, + }, + StudyDownloadLevelDTO.ANNUAL, + MatrixIndex( + start_date=str(datetime.datetime(2028, 3, 1)), + steps=1, + first_week_size=5, + level=StudyDownloadLevelDTO.ANNUAL, + ), + ), + ( + { + "first-month-in-year": "march", + "january.1st": "Sunday", + "leapyear": False, + "first.weekday": "Friday", + "simulation.start": 3, + "simulation.end": 100, + }, + StudyDownloadLevelDTO.DAILY, + MatrixIndex( + start_date=str(datetime.datetime(2022, 3, 1)), + steps=365, + first_week_size=3, + level=StudyDownloadLevelDTO.DAILY, + ), + ), + ], +) +def test_create_matrix_index_input(config: Dict[str, Any], level: StudyDownloadLevelDTO, expected: MatrixIndex): + file_study = Mock() + file_study.tree.get.return_value = {"general": config} + # Asserts the content are the same + actual = get_start_date(file_study, None, level) + assert actual == expected + # Asserts the returned 1st January corresponds to the chosen one + actual_datetime = datetime.datetime.strptime(actual.start_date, "%Y-%m-%d %H:%M:%S") + next_year = str(actual_datetime.year + (actual_datetime.month != 1)) + first_january = datetime.datetime.strptime(next_year, "%Y").weekday() + assert first_january == DAY_NAMES.index(config["january.1st"]) From dc0130dd988bc82685f48781718d6cd11728787e Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Wed, 9 Oct 2024 17:54:16 +0200 Subject: [PATCH 028/182] build(deps): bump launcher and paramiko versions (#2140) --- requirements.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index 2a7ff60a2d..330d9ab6ef 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -Antares-Launcher~=1.3.2 +Antares-Launcher==1.4.2 antares-study-version==1.0.6 antares-timeseries-generation~=0.1.5 @@ -33,7 +33,7 @@ PyJWT~=2.9.0 MarkupSafe~=2.0.1 numpy~=1.22.1 pandas~=1.4.0 -paramiko~=2.12.0 +paramiko~=3.4.1 plyer~=2.0.0 psycopg2-binary==2.9.4 py7zr~=0.20.6 From 4374350ea94e948353e0d9af4d8ce41520f1d063 Mon Sep 17 00:00:00 2001 From: maugde <167874615+maugde@users.noreply.github.com> Date: Thu, 10 Oct 2024 15:29:45 +0200 Subject: [PATCH 029/182] style(variant): improve logs (#2179) Change the display of number of days in logs related to snapshot clearing tasks. --- .../variantstudy/variant_study_service.py | 23 +++++++++---------- antarest/study/web/variant_blueprint.py | 7 +++--- requirements.txt | 2 ++ 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/antarest/study/storage/variantstudy/variant_study_service.py b/antarest/study/storage/variantstudy/variant_study_service.py index beb39c6d29..83491c68d7 100644 --- a/antarest/study/storage/variantstudy/variant_study_service.py +++ b/antarest/study/storage/variantstudy/variant_study_service.py @@ -20,6 +20,7 @@ from pathlib import Path from uuid import uuid4 +import humanize from fastapi import HTTPException from filelock import FileLock @@ -1056,13 +1057,13 @@ def initialize_additional_data(self, variant_study: VariantStudy) -> bool: ) return False - def clear_all_snapshots(self, retention_hours: timedelta, params: t.Optional[RequestParameters] = None) -> str: + def clear_all_snapshots(self, retention_time: timedelta, params: t.Optional[RequestParameters] = None) -> str: """ Admin command that clear all variant snapshots older than `retention_hours` (in hours). Only available for admin users. Args: - retention_hours: number of retention hours + retention_time: number of retention hours params: request parameters used to identify the user status Returns: None @@ -1072,11 +1073,9 @@ def clear_all_snapshots(self, retention_hours: timedelta, params: t.Optional[Req if params is None or (params.user and not params.user.is_site_admin() and not params.user.is_admin_token()): raise UserHasNotPermissionError() - task_name = f"Cleaning all snapshot updated or accessed at least {retention_hours} hours ago." + task_name = f"Cleaning all snapshot updated or accessed at least {humanize.precisedelta(retention_time)} ago." - snapshot_clearing_task_instance = SnapshotCleanerTask( - variant_study_service=self, retention_hours=retention_hours - ) + snapshot_clearing_task_instance = SnapshotCleanerTask(variant_study_service=self, retention_time=retention_time) return self.task_service.add_task( snapshot_clearing_task_instance, @@ -1092,10 +1091,10 @@ class SnapshotCleanerTask: def __init__( self, variant_study_service: VariantStudyService, - retention_hours: timedelta, + retention_time: timedelta, ) -> None: self._variant_study_service = variant_study_service - self._retention_hours = retention_hours + self._retention_time = retention_time def _clear_all_snapshots(self) -> None: with db(): @@ -1106,15 +1105,15 @@ def _clear_all_snapshots(self) -> None: ) ) for variant in variant_list: - if variant.updated_at and variant.updated_at < datetime.utcnow() - self._retention_hours: - if variant.last_access and variant.last_access < datetime.utcnow() - self._retention_hours: + if variant.updated_at and variant.updated_at < datetime.utcnow() - self._retention_time: + if variant.last_access and variant.last_access < datetime.utcnow() - self._retention_time: self._variant_study_service.clear_snapshot(variant) def run_task(self, notifier: TaskUpdateNotifier) -> TaskResult: - msg = f"Start cleaning all snapshots updated or accessed {self._retention_hours} hours ago." + msg = f"Start cleaning all snapshots updated or accessed {humanize.precisedelta(self._retention_time)} ago." notifier(msg) self._clear_all_snapshots() - msg = f"All selected snapshots were successfully cleared." + msg = "All selected snapshots were successfully cleared." notifier(msg) return TaskResult(success=True, message=msg) diff --git a/antarest/study/web/variant_blueprint.py b/antarest/study/web/variant_blueprint.py index bc000fadf4..0011b3950d 100644 --- a/antarest/study/web/variant_blueprint.py +++ b/antarest/study/web/variant_blueprint.py @@ -13,6 +13,7 @@ import logging from typing import List, Optional, Union +import humanize from fastapi import APIRouter, Body, Depends from antarest.core.config import Config @@ -431,15 +432,15 @@ def clear_variant_snapshots( current_user: JWTUser = Depends(auth.get_current_user), ) -> str: """ - Endpoint that clear `limit` hours old and older variant snapshots. + Endpoint that clear snapshots of variant which were updated or accessed `hours` hours ago. - Args: limit (int, optional): Number of hours to clear. Defaults to 24. + Args: hours (int, optional): Number of hours to clear. Defaults to 24. Returns: ID of the task running the snapshot clearing. """ retention_hours = datetime.timedelta(hours=hours) logger.info( - f"Delete all variant snapshots older than {retention_hours} hours.", + f"Delete all variant snapshots older than {humanize.precisedelta(retention_hours)}.", extra={"user": current_user.id}, ) params = RequestParameters(user=current_user) diff --git a/requirements.txt b/requirements.txt index 330d9ab6ef..e5f9d48cd1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -28,6 +28,8 @@ click~=8.0.3 contextvars~=2.4 filelock~=3.4.2 gunicorn~=20.1.0 +humanize~=4.10.0; python_version <= '3.8' +humanize~=4.11.0; python_version > '3.8' jsonref~=0.2 PyJWT~=2.9.0 MarkupSafe~=2.0.1 From 8bf9ab3eac9f0d51ea45c67f65d02d113023035c Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Fri, 11 Oct 2024 15:36:39 +0200 Subject: [PATCH 030/182] fix(db): migrate db to use foreign key inside sqlite (#2185) This fixes the issue we encountered since PR https://github.com/AntaresSimulatorTeam/AntaREST/pull/2172 where we couldn't delete studies on our local env or inside desktop version --- ...b80a84bb5_add_cascade_delete_for_sqlite.py | 199 ++++++++++++++++++ 1 file changed, 199 insertions(+) create mode 100644 alembic/versions/490b80a84bb5_add_cascade_delete_for_sqlite.py diff --git a/alembic/versions/490b80a84bb5_add_cascade_delete_for_sqlite.py b/alembic/versions/490b80a84bb5_add_cascade_delete_for_sqlite.py new file mode 100644 index 0000000000..2f4f1e8e49 --- /dev/null +++ b/alembic/versions/490b80a84bb5_add_cascade_delete_for_sqlite.py @@ -0,0 +1,199 @@ +"""add_cascade_delete_for_sqlite + +Revision ID: 490b80a84bb5 +Revises: c0c4aaf84861 +Create Date: 2024-10-11 11:38:45.108227 + +""" +from alembic import op +import sqlalchemy as sa + +# revision identifiers, used by Alembic. +revision = '490b80a84bb5' +down_revision = 'c0c4aaf84861' +branch_labels = None +depends_on = None + + +def upgrade(): + _migrate(upgrade=True) + +def downgrade(): + _migrate(upgrade=False) + + +def _migrate(upgrade: bool): + # Use on_cascade=DELETE to avoid foreign keys issues in SQLite. + # As it doesn't support dropping foreign keys, we have to do the migration ourselves. + # https://www.sqlite.org/lang_altertable.html#otheralter + # 1 - Create table with the right columns + # 2 - Copy all the data from the old table inside the new one + # 3 - Remove the old table + # 4 - Rename the new table to have the old name + + dialect_name: str = op.get_context().dialect.name + if dialect_name == "postgresql": + return + + # ============================= + # STUDY_ADDITIONAL_DATA + # ============================= + + op.create_table('study_additional_data_copy', + sa.Column('study_id', sa.String(length=36), nullable=False), + sa.Column('author', sa.String(length=255), nullable=True), + sa.Column('horizon', sa.String(), nullable=True), + sa.Column('patch', sa.String(), nullable=True), + sa.ForeignKeyConstraint(['study_id'], ['study.id'], ondelete='CASCADE' if upgrade else None), + sa.PrimaryKeyConstraint('study_id') + ) + bind = op.get_bind() + content = bind.execute("SELECT * FROM study_additional_data") + for row in content: + bind.execute( + "INSERT INTO study_additional_data_copy (study_id, author, horizon, patch) VALUES (?,?,?,?)", + (row[0], row[1], row[2], row[3]) + ) + op.drop_table("study_additional_data") + op.rename_table("study_additional_data_copy", "study_additional_data") + + # ============================= + # RAW_METADATA + # ============================= + + op.create_table('rawstudycopy', + sa.Column('id', sa.String(length=36), nullable=False), + sa.Column('content_status', sa.Enum('VALID', 'WARNING', 'ERROR', name='studycontentstatus'), + nullable=True), + sa.Column('workspace', sa.String(length=255), nullable=False), + sa.Column('missing', sa.String(length=255), nullable=True), + sa.ForeignKeyConstraint(['id'], ['study.id'], ondelete='CASCADE' if upgrade else None), + sa.PrimaryKeyConstraint('id') + ) + with op.batch_alter_table("rawstudycopy", schema=None) as batch_op: + if upgrade: + batch_op.create_index(batch_op.f("ix_rawstudycopy_missing"), ["missing"], unique=False) + batch_op.create_index(batch_op.f("ix_rawstudycopy_workspace"), ["workspace"], unique=False) + else: + batch_op.drop_index(batch_op.f("ix_rawstudycopy_missing")) + batch_op.drop_index(batch_op.f("ix_rawstudycopy_workspace")) + + bind = op.get_bind() + content = bind.execute("SELECT * FROM rawstudy") + for row in content: + bind.execute( + "INSERT INTO rawstudycopy (id, content_status, workspace, missing) VALUES (?,?,?,?)", + (row[0], row[1], row[2], row[3]) + ) + op.drop_table("rawstudy") + op.rename_table("rawstudycopy", "rawstudy") + + # ============================= + # COMMAND BLOCK + # ============================= + + op.create_table( + "commandblock_copy", + sa.Column("id", sa.String(length=36), nullable=False), + sa.Column("study_id", sa.String(length=36), nullable=True), + sa.Column("block_index", sa.Integer(), nullable=True), + sa.Column("command", sa.String(length=255), nullable=True), + sa.Column("version", sa.Integer(), nullable=True), + sa.Column("args", sa.String(), nullable=True), + sa.ForeignKeyConstraint( + ["study_id"], + ["variantstudy.id"], + ondelete="CASCADE" if upgrade else None + ), + sa.PrimaryKeyConstraint("id"), + sa.UniqueConstraint("id"), + ) + bind = op.get_bind() + content = bind.execute("SELECT * FROM commandblock") + for row in content: + bind.execute( + "INSERT INTO commandblock_copy (id, study_id, block_index, command, version, args) VALUES (?,?,?,?,?,?)", + (row[0], row[1], row[2], row[3], row[4], row[5]) + ) + op.alter_column(table_name="commandblock_copy", column_name="block_index", new_column_name="index") + op.drop_table("commandblock") + op.rename_table("commandblock_copy", "commandblock") + + # ============================= + # VARIANT STUDY SNAPSHOT + # ============================= + + op.create_table( + "variant_study_snapshot_copy", + sa.Column("id", sa.String(length=36), nullable=False), + sa.Column("created_at", sa.DateTime(), nullable=True), + sa.Column('last_executed_command', sa.String(), nullable=True), + sa.ForeignKeyConstraint( + ["id"], + ["variantstudy.id"], + ondelete="CASCADE" if upgrade else None + ), + sa.PrimaryKeyConstraint("id"), + ) + bind = op.get_bind() + content = bind.execute("SELECT * FROM variant_study_snapshot") + for row in content: + bind.execute( + "INSERT INTO variant_study_snapshot_copy (id, created_at, last_executed_command) VALUES (?,?,?)", + (row[0], row[1], row[2]) + ) + op.drop_table("variant_study_snapshot") + op.rename_table("variant_study_snapshot_copy", "variant_study_snapshot") + + # ============================= + # VARIANT STUDY + # ============================= + + op.create_table( + "variantstudy_copy", + sa.Column("id", sa.String(length=36), nullable=False), + sa.Column('generation_task', sa.String(), nullable=True), + sa.ForeignKeyConstraint( + ["id"], + ["study.id"], + ondelete="CASCADE" if upgrade else None + ), + sa.PrimaryKeyConstraint("id"), + ) + bind = op.get_bind() + content = bind.execute("SELECT * FROM variantstudy") + for row in content: + bind.execute( + "INSERT INTO variantstudy_copy (id, generation_task) VALUES (?,?)", + (row[0], row[1]) + ) + op.drop_table("variantstudy") + op.rename_table("variantstudy_copy", "variantstudy") + + # ============================= + # GROUP METADATA + # ============================= + + op.create_table('groupmetadatacopy', + sa.Column('group_id', sa.String(length=36), nullable=False), + sa.Column('study_id', sa.String(length=36), nullable=False), + sa.ForeignKeyConstraint(['group_id'], ['groups.id'], ondelete="CASCADE" if upgrade else None), + sa.ForeignKeyConstraint(['study_id'], ['study.id'], ondelete="CASCADE" if upgrade else None) + ) + with op.batch_alter_table("groupmetadatacopy", schema=None) as batch_op: + if upgrade: + batch_op.create_index(batch_op.f("ix_groupmetadatacopy_group_id"), ["group_id"], unique=False) + batch_op.create_index(batch_op.f("ix_groupmetadatacopy_study_id"), ["study_id"], unique=False) + else: + batch_op.drop_index(batch_op.f("ix_groupmetadatacopy_group_id")) + batch_op.drop_index(batch_op.f("ix_groupmetadatacopy_study_id")) + bind = op.get_bind() + content = bind.execute("SELECT * FROM group_metadata") + for row in content: + bind.execute( + "INSERT INTO groupmetadatacopy (group_id, study_id) VALUES (?,?)", + (row[0], row[1]) + ) + op.drop_table("group_metadata") + op.rename_table("groupmetadatacopy", "group_metadata") + From 172b7f897ade514a1a28d13ae6869fec8fff722f Mon Sep 17 00:00:00 2001 From: mabw-rte <41002227+mabw-rte@users.noreply.github.com> Date: Fri, 11 Oct 2024 17:07:17 +0200 Subject: [PATCH 031/182] refactor(workers): remove the `simulator` worker (#2184) Issue: The simulator worker is not used by the application, and its tests can fail randomly. Solution: In the short or medium term, we don't see its usefulness, so it might as well be removed. --- antarest/service_creator.py | 12 --- antarest/singleton_services.py | 5 - antarest/worker/simulator_worker.py | 143 -------------------------- tests/worker/test_simulator_worker.py | 80 -------------- 4 files changed, 240 deletions(-) delete mode 100644 antarest/worker/simulator_worker.py delete mode 100644 tests/worker/test_simulator_worker.py diff --git a/antarest/service_creator.py b/antarest/service_creator.py index b942418b2c..fa8086b789 100644 --- a/antarest/service_creator.py +++ b/antarest/service_creator.py @@ -47,7 +47,6 @@ from antarest.study.storage.rawstudy.watcher import Watcher from antarest.study.web.watcher_blueprint import create_watcher_routes from antarest.worker.archive_worker import ArchiveWorker -from antarest.worker.simulator_worker import SimulatorWorker from antarest.worker.worker import AbstractWorker logger = logging.getLogger(__name__) @@ -72,7 +71,6 @@ class Module(str, Enum): MATRIX_GC = "matrix_gc" ARCHIVE_WORKER = "archive_worker" AUTO_ARCHIVER = "auto_archiver" - SIMULATOR_WORKER = "simulator_worker" def init_db_engine( @@ -221,16 +219,6 @@ def create_archive_worker( return ArchiveWorker(event_bus, workspace, local_root, config) -def create_simulator_worker( - config: Config, - matrix_service: MatrixService, - event_bus: t.Optional[IEventBus] = None, -) -> AbstractWorker: - if not event_bus: - event_bus, _ = create_event_bus(None, config) - return SimulatorWorker(event_bus, matrix_service, config) - - def create_services( config: Config, app_ctxt: t.Optional[AppBuildContext], create_all: bool = False ) -> t.Dict[str, t.Any]: diff --git a/antarest/singleton_services.py b/antarest/singleton_services.py index 3b2373cc0c..99fd44b23c 100644 --- a/antarest/singleton_services.py +++ b/antarest/singleton_services.py @@ -25,7 +25,6 @@ create_archive_worker, create_core_services, create_matrix_gc, - create_simulator_worker, create_watcher, init_db_engine, ) @@ -72,10 +71,6 @@ def _init(config_file: Path, services_list: List[Module]) -> Dict[Module, IServi worker = create_archive_worker(config, "test", event_bus=event_bus) services[Module.ARCHIVE_WORKER] = worker - if Module.SIMULATOR_WORKER in services_list: - worker = create_simulator_worker(config, matrix_service=matrix_service, event_bus=event_bus) - services[Module.SIMULATOR_WORKER] = worker - if Module.AUTO_ARCHIVER in services_list: auto_archive_service = AutoArchiveService(study_service, config) services[Module.AUTO_ARCHIVER] = auto_archive_service diff --git a/antarest/worker/simulator_worker.py b/antarest/worker/simulator_worker.py deleted file mode 100644 index 5dba1d13db..0000000000 --- a/antarest/worker/simulator_worker.py +++ /dev/null @@ -1,143 +0,0 @@ -# Copyright (c) 2024, RTE (https://www.rte-france.com) -# -# See AUTHORS.txt -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. -# -# SPDX-License-Identifier: MPL-2.0 -# -# This file is part of the Antares project. - -import io -import logging -import subprocess -import threading -import time -from pathlib import Path -from typing import cast - -from antarest.core.cache.business.local_chache import LocalCache -from antarest.core.config import Config, LocalConfig -from antarest.core.interfaces.eventbus import IEventBus -from antarest.core.serialization import AntaresBaseModel -from antarest.core.tasks.model import TaskResult -from antarest.core.utils.fastapi_sqlalchemy import db -from antarest.launcher.adapters.log_manager import follow -from antarest.matrixstore.service import MatrixService -from antarest.matrixstore.uri_resolver_service import UriResolverService -from antarest.study.storage.rawstudy.model.filesystem.factory import StudyFactory -from antarest.worker.worker import AbstractWorker, WorkerTaskCommand - -logger = logging.getLogger(__name__) - - -GENERATE_TIMESERIES_TASK_NAME = "generate-timeseries" -GENERATE_KIRSHOFF_CONSTRAINTS_TASK_NAME = "generate-kirshoff-constraints" - - -class GenerateTimeseriesTaskArgs(AntaresBaseModel): - study_id: str - study_path: str - managed: bool - study_version: str - - -class SimulatorWorker(AbstractWorker): - def __init__( - self, - event_bus: IEventBus, - matrix_service: MatrixService, - config: Config, - ): - super().__init__( - "Simulator worker", - event_bus, - [ - GENERATE_TIMESERIES_TASK_NAME, - GENERATE_KIRSHOFF_CONSTRAINTS_TASK_NAME, - ], - ) - self.config = config - # this will raise an error if not properly configured - self.binaries = (self.config.launcher.local or LocalConfig()).binaries - self.study_factory = StudyFactory( - matrix=matrix_service, - resolver=UriResolverService(matrix_service=matrix_service), - cache=LocalCache(), - ) - - def _execute_task(self, task_info: WorkerTaskCommand) -> TaskResult: - if task_info.task_type == GENERATE_TIMESERIES_TASK_NAME: - return self.execute_timeseries_generation_task(task_info) - elif task_info.task_type == GENERATE_KIRSHOFF_CONSTRAINTS_TASK_NAME: - return self.execute_kirshoff_constraint_generation_task(task_info) - raise NotImplementedError(f"{task_info.task_type} is not implemented by this worker") - - def execute_kirshoff_constraint_generation_task(self, task_info: WorkerTaskCommand) -> TaskResult: - raise NotImplementedError - - def execute_timeseries_generation_task(self, task_info: WorkerTaskCommand) -> TaskResult: - result = TaskResult(success=True, message="", return_value="") - task = GenerateTimeseriesTaskArgs.model_validate(task_info.task_args) - binary = ( - self.binaries[task.study_version] - if task.study_version in self.binaries - else list(self.binaries.values())[0] - ) - file_study = self.study_factory.create_from_fs(Path(task.study_path), task.study_id, use_cache=False) - if task.managed: - with db(): - file_study.tree.denormalize() - - def append_output(line: str) -> None: - result.return_value += line # type: ignore - - try: - end = False - - def stop_reading() -> bool: - return end - - process = subprocess.Popen( - [ - binary, - "-i", - task.study_path, - "-g", - ], - stdout=subprocess.PIPE, - stderr=subprocess.STDOUT, - universal_newlines=True, - encoding="utf-8", - ) - thread = threading.Thread( - target=lambda: follow( - cast(io.StringIO, process.stdout), - append_output, - stop_reading, - None, - ), - name=f"{self.__class__.__name__}-TS-Generator", - daemon=True, - ) - thread.start() - - while process.poll() is None: - time.sleep(1) - - result.success = process.returncode == 0 - except Exception as e: - logger.error( - f"Failed to generate timeseries for study located at {task.study_path}", - exc_info=e, - ) - result.success = False - result.message = repr(e) - finally: - if task.managed: - with db(): - file_study.tree.normalize() - end = True - return result diff --git a/tests/worker/test_simulator_worker.py b/tests/worker/test_simulator_worker.py deleted file mode 100644 index 791aa3ec3d..0000000000 --- a/tests/worker/test_simulator_worker.py +++ /dev/null @@ -1,80 +0,0 @@ -# Copyright (c) 2024, RTE (https://www.rte-france.com) -# -# See AUTHORS.txt -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. -# -# SPDX-License-Identifier: MPL-2.0 -# -# This file is part of the Antares project. - -import os -import platform -import stat -from pathlib import Path -from unittest.mock import Mock, patch - -import pytest - -from antarest.core.config import Config, LauncherConfig, LocalConfig -from antarest.worker.simulator_worker import ( - GENERATE_KIRSHOFF_CONSTRAINTS_TASK_NAME, - GENERATE_TIMESERIES_TASK_NAME, - SimulatorWorker, -) -from antarest.worker.worker import WorkerTaskCommand -from tests.helpers import with_db_context - - -@with_db_context -@patch("antarest.worker.simulator_worker.logger") -def test_execute_task(logger_mock: Mock, tmp_path: Path): - simulator_mock_path = Path(__file__).parent.parent / "integration" / "launcher_mock.sh" - st = os.stat(simulator_mock_path) - os.chmod(simulator_mock_path, st.st_mode | stat.S_IEXEC) - worker = SimulatorWorker( - Mock(), - Mock(), - Config( - launcher=LauncherConfig( - local=LocalConfig( - binaries={ - "800": simulator_mock_path, - } - ) - ) - ), - ) - worker.study_factory = Mock() - - with pytest.raises(NotImplementedError): - worker._execute_task(task_info=WorkerTaskCommand(task_id="task_id", task_type="unknown", task_args={})) - - with pytest.raises(NotImplementedError): - worker._execute_task( - task_info=WorkerTaskCommand( - task_id="task_id", - task_type=GENERATE_KIRSHOFF_CONSTRAINTS_TASK_NAME, - task_args={}, - ) - ) - study_path = tmp_path / "study" - result = worker._execute_task( - task_info=WorkerTaskCommand( - task_id="task_id", - task_type=GENERATE_TIMESERIES_TASK_NAME, - task_args={ - "study_id": "some_id", - "managed": False, - "study_path": str(study_path), - "study_version": "800", - }, - ) - ) - if not platform.platform().startswith("Windows"): - assert result.success - assert result.return_value == f"-i {study_path} -g\nexit 0\n" - else: - assert not result.success From f41b669d67bb846f926df95bcf4e06b77ae1b8ce Mon Sep 17 00:00:00 2001 From: Sylvain Leclerc Date: Fri, 11 Oct 2024 18:36:09 +0200 Subject: [PATCH 032/182] feature(installer): update installer version and improve desktop version launcher (#2157) - updates installer submodule to benefit from last fixes and v2.18 handling - make application load dependencies only when necessary, to speed up startup (in particular when only version is requested) - make application exit when the server process ends, instead of hanging - detect when server is already running - separate one popup for "starting" and another for "started" - fix alembic handling in pyinstaller: alembic must not be defined as a script, otherwise it's executed when the application quits. Instead, it must just be analyzed separately to get its dependencies --------- Signed-off-by: Sylvain Leclerc --- AntaresWebLinux.spec | 27 +++-- AntaresWebWin.spec | 27 +++-- antarest/core/cli.py | 101 ++++++++++++++++++ antarest/desktop/__init__.py | 11 ++ antarest/desktop/systray_app.py | 184 ++++++++++++++++++++++++++++++++ antarest/gui.py | 116 ++++++-------------- antarest/main.py | 88 +-------------- installer | 2 +- 8 files changed, 367 insertions(+), 189 deletions(-) create mode 100644 antarest/core/cli.py create mode 100644 antarest/desktop/__init__.py create mode 100644 antarest/desktop/systray_app.py diff --git a/AntaresWebLinux.spec b/AntaresWebLinux.spec index c11ec84a2b..8671f11bfa 100644 --- a/AntaresWebLinux.spec +++ b/AntaresWebLinux.spec @@ -1,25 +1,27 @@ # -*- mode: python ; coding: utf-8 -*- from pathlib import Path -from PyInstaller.utils.hooks import collect_dynamic_libs block_cipher = None -# We need to analyze all alembic files to be sure the migration phase works fine -migrations_dir = Path('alembic/versions') -migration_files = [str(f) for f in migrations_dir.iterdir() if f.is_file() and f.suffix == '.py'] +# We need to analyze all alembic files to be sure the migration phase works fine: +# alembic loads version files by their path, so we need to add them as "data" to the package, +# but all the dependencies they use need to be included also, wo we need to perform a +# dedicated analyse for this. +versions_dir = Path('alembic/versions') +versions_files = [str(f) for f in versions_dir.iterdir() if f.is_file() and f.suffix == '.py'] +alembic_analysis = Analysis(["alembic/env.py"] + versions_files) -binaries = [('./alembic.ini', './alembic.ini')] + collect_dynamic_libs('tables') - -antares_web_server_a = Analysis(['antarest/gui.py', 'alembic/env.py'] + migration_files, +antares_web_server_a = Analysis(['antarest/gui.py'], pathex=[], - binaries=binaries, - datas=[('./resources', './resources'), ('./alembic', './alembic')], + binaries=[], + datas=[('./resources', './resources'), ('./alembic', './alembic'), ('./alembic.ini', './')], hiddenimports=[ 'cmath', 'antarest.dbmodel', 'plyer.platforms.linux', 'plyer.platforms.linux.notification', 'pythonjsonlogger.jsonlogger', + 'tables', ], hookspath=['extra-hooks'], hooksconfig={}, @@ -29,8 +31,13 @@ antares_web_server_a = Analysis(['antarest/gui.py', 'alembic/env.py'] + migratio win_private_assemblies=False, cipher=block_cipher, noarchive=False) -antares_web_server_pyz = PYZ(antares_web_server_a.pure, antares_web_server_a.zipped_data, + +all_python = antares_web_server_a.pure + alembic_analysis.pure +all_zipped_data = antares_web_server_a.zipped_data + alembic_analysis.zipped_data + +antares_web_server_pyz = PYZ(all_python, all_zipped_data, cipher=block_cipher) + antares_web_server_exe = EXE(antares_web_server_pyz, antares_web_server_a.scripts, [], diff --git a/AntaresWebWin.spec b/AntaresWebWin.spec index baa0c614db..8afcb62dae 100644 --- a/AntaresWebWin.spec +++ b/AntaresWebWin.spec @@ -1,25 +1,27 @@ # -*- mode: python ; coding: utf-8 -*- from pathlib import Path -from PyInstaller.utils.hooks import collect_dynamic_libs block_cipher = None -# We need to analyze all alembic files to be sure the migration phase works fine -migrations_dir = Path('alembic/versions') -migration_files = [str(f) for f in migrations_dir.iterdir() if f.is_file() and f.suffix == '.py'] +# We need to analyze all alembic files to be sure the migration phase works fine: +# alembic loads version files by their path, so we need to add them as "data" to the package, +# but all the dependencies they use need to be included also, wo we need to perform a +# dedicated analyse for this. +versions_dir = Path('alembic/versions') +versions_files = [str(f) for f in versions_dir.iterdir() if f.is_file() and f.suffix == '.py'] +alembic_analysis = Analysis(["alembic/env.py"] + versions_files) -binaries = [('./alembic.ini', './alembic.ini')] + collect_dynamic_libs('tables') - -antares_web_server_a = Analysis(['antarest/gui.py', 'alembic/env.py'] + migration_files, +antares_web_server_a = Analysis(['antarest/gui.py'], pathex=[], - binaries=binaries, - datas=[('./resources', './resources'), ('./alembic', './alembic')], + binaries=[], + datas=[('./resources', './resources'), ('./alembic', './alembic'), ('./alembic.ini', './')], hiddenimports=[ 'cmath', 'antarest.dbmodel', 'plyer.platforms.win', 'plyer.platforms.win.notification', 'pythonjsonlogger.jsonlogger', + 'tables', ], hookspath=['extra-hooks'], hooksconfig={}, @@ -29,8 +31,13 @@ antares_web_server_a = Analysis(['antarest/gui.py', 'alembic/env.py'] + migratio win_private_assemblies=False, cipher=block_cipher, noarchive=False) -antares_web_server_pyz = PYZ(antares_web_server_a.pure, antares_web_server_a.zipped_data, + +all_python = antares_web_server_a.pure + alembic_analysis.pure +all_zipped_data = antares_web_server_a.zipped_data + alembic_analysis.zipped_data + +antares_web_server_pyz = PYZ(all_python, all_zipped_data, cipher=block_cipher) + antares_web_server_exe = EXE(antares_web_server_pyz, antares_web_server_a.scripts, [], diff --git a/antarest/core/cli.py b/antarest/core/cli.py new file mode 100644 index 0000000000..e7de0a8140 --- /dev/null +++ b/antarest/core/cli.py @@ -0,0 +1,101 @@ +# Copyright (c) 2024, RTE (https://www.rte-france.com) +# +# See AUTHORS.txt +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +# This file is part of the Antares project. + +import argparse +from pathlib import Path + + +class PathType: + """file or directory path type for `argparse` parser + + The `PathType` class represents a type of argument that can be used + with the `argparse` library. + This class takes three boolean arguments, `exists`, `file_ok`, and `dir_ok`, + which specify whether the path argument must exist, whether it can be a file, + and whether it can be a directory, respectively. + + Example Usage:: + + import argparse + from antarest.main import PathType + + parser = argparse.ArgumentParser() + parser.add_argument("--input", type=PathType(file_ok=True, exists=True)) + args = parser.parse_args() + + print(args.input) + + In the above example, `PathType` is used to specify the type of the `--input` + argument for the `argparse` parser. The argument must be an existing file path. + If the given path is not an existing file, the argparse library raises an error. + The Path object representing the given path is then printed to the console. + """ + + def __init__( + self, + exists: bool = False, + file_ok: bool = False, + dir_ok: bool = False, + ) -> None: + if not (file_ok or dir_ok): + msg = "Either `file_ok` or `dir_ok` must be set at a minimum." + raise ValueError(msg) + self.exists = exists + self.file_ok = file_ok + self.dir_ok = dir_ok + + def __call__(self, string: str) -> Path: + """ + Check whether the given string represents a valid path. + + If `exists` is `False`, the method simply returns the given path. + If `exists` is True, it checks whether the path exists and whether it is + a file or a directory, depending on the values of `file_ok` and `dir_ok`. + If the path exists and is of the correct type, the method returns the path; + otherwise, it raises an :class:`argparse.ArgumentTypeError` with an + appropriate error message. + + Args: + string: file or directory path + + Returns: + the file or directory path + + Raises + argparse.ArgumentTypeError: if the path is invalid + """ + file_path = Path(string).expanduser() + if not self.exists: + return file_path + if self.file_ok and self.dir_ok: + if file_path.exists(): + return file_path + msg = f"The file or directory path does not exist: '{file_path}'" + raise argparse.ArgumentTypeError(msg) + elif self.file_ok: + if file_path.is_file(): + return file_path + elif file_path.exists(): + msg = f"The path is not a regular file: '{file_path}'" + else: + msg = f"The file path does not exist: '{file_path}'" + raise argparse.ArgumentTypeError(msg) + elif self.dir_ok: + if file_path.is_dir(): + return file_path + elif file_path.exists(): + msg = f"The path is not a directory: '{file_path}'" + else: + msg = f"The directory path does not exist: '{file_path}'" + raise argparse.ArgumentTypeError(msg) + else: # pragma: no cover + raise NotImplementedError((self.file_ok, self.dir_ok)) diff --git a/antarest/desktop/__init__.py b/antarest/desktop/__init__.py new file mode 100644 index 0000000000..058c6b221a --- /dev/null +++ b/antarest/desktop/__init__.py @@ -0,0 +1,11 @@ +# Copyright (c) 2024, RTE (https://www.rte-france.com) +# +# See AUTHORS.txt +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +# This file is part of the Antares project. diff --git a/antarest/desktop/systray_app.py b/antarest/desktop/systray_app.py new file mode 100644 index 0000000000..905d5a0db9 --- /dev/null +++ b/antarest/desktop/systray_app.py @@ -0,0 +1,184 @@ +# Copyright (c) 2024, RTE (https://www.rte-france.com) +# +# See AUTHORS.txt +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +# This file is part of the Antares project. +import contextlib +import multiprocessing +import platform +import time +import webbrowser +from dataclasses import dataclass +from multiprocessing import Process +from pathlib import Path +from threading import Thread + +import httpx +import uvicorn +from PyQt5.QtGui import QCursor, QIcon +from PyQt5.QtWidgets import QApplication, QMenu, QSystemTrayIcon + +from antarest.core.utils.utils import get_local_path + +RESOURCE_PATH = get_local_path() / "resources" + + +def run_server(config_file: Path) -> None: + from antarest.main import fastapi_app + + app = fastapi_app( + config_file, + mount_front=True, + auto_upgrade_db=True, + )[0] + # noinspection PyTypeChecker + uvicorn.run(app, host="127.0.0.1", port=8080) + + +def start_server(config_file: Path) -> Process: + server = multiprocessing.Process( + target=run_server, + args=(config_file,), + ) + server.start() + return server + + +def open_app() -> None: + webbrowser.open("http://localhost:8080") + + +def monitor_server_process(server: Process, app: QApplication) -> None: + """ + Quits the application when server process ends. + """ + server.join() + app.quit() + + +def setup_exit_application_on_server_end(server: Process, app: QApplication) -> None: + """ + Quits this application when the server process ends, for any reason. + + This allows to close the system tray application when the server + is shutdown by some external action (server failing to start for example, + or killed). + """ + Thread(target=monitor_server_process, args=(server, app)).start() + + +def check_server_started() -> bool: + with contextlib.suppress(httpx.ConnectError): + res = httpx.get("http://localhost:8080/api/health") + if res.status_code == 200: + return True + return False + + +def wait_for_server_start() -> None: + for _ in range(30, 0, -1): + if check_server_started(): + break + time.sleep(1) + + +@dataclass(frozen=True) +class AntaresSystrayApp: + """ + Used to keep ownership of root Qt objects. + QMenu can only be owned by QWidgets, but we don't have one. + """ + + app: QApplication + menu: QMenu + + +def create_systray_app() -> AntaresSystrayApp: + """ + Creates the small application that allows to open + the browser or shutdown the server. + """ + app = QApplication([]) + app.setQuitOnLastWindowClosed(False) + + # Adding an icon + icon = QIcon(str(RESOURCE_PATH / "webapp" / "logo16.png")) + # Adding item on the menu bar + tray = QSystemTrayIcon(icon, app) + tray.setToolTip("AntaresWebServer") + + # Creating the options + menu = QMenu() + open_app_action = menu.addAction("Open application") + assert open_app_action is not None + open_app_action.triggered.connect(open_app) + # To quit the app + quit_action = menu.addAction("Quit") + assert quit_action is not None + quit_action.triggered.connect(app.quit) + + # Adding options to the System Tray + def handle_action(reason: int) -> None: + """ + Shows context menu also on left click + """ + if reason == QSystemTrayIcon.Trigger: # type: ignore + menu = tray.contextMenu() + assert menu is not None + menu.popup(QCursor.pos()) + + tray.setContextMenu(menu) + tray.activated.connect(handle_action) + + tray.setVisible(True) + + return AntaresSystrayApp(app, menu) + + +def notification_popup(message: str, threaded: bool = True) -> None: + """ + Pos a notification message above system tray. + """ + if platform.system() == "Windows": + # noinspection PyPackageRequirements + from win10toast import ToastNotifier # type: ignore + + toaster = ToastNotifier() + toaster.show_toast( + "AntaresWebServer", + message, + icon_path=RESOURCE_PATH / "webapp" / "favicon.ico", + threaded=threaded, + ) + else: + from plyer import notification # type: ignore + + notification.notify( + title="AntaresWebServer", + message=message, + app_name="AntaresWebServer", + app_icon=str(RESOURCE_PATH / "webapp" / "favicon.ico"), + timeout=600, + ) + + +def run_systray_app(config_file: Path) -> None: + if check_server_started(): + notification_popup( + "Antares Web Server already running, you can manage the application within the system tray.", threaded=False + ) + return + notification_popup("Starting Antares Web Server...") + systray_app = create_systray_app() + server = start_server(config_file) + setup_exit_application_on_server_end(server, systray_app.app) + wait_for_server_start() + notification_popup("Antares Web Server started, you can manage the application within the system tray.") + systray_app.app.exec_() + server.kill() diff --git a/antarest/gui.py b/antarest/gui.py index f36904a060..4926e011af 100644 --- a/antarest/gui.py +++ b/antarest/gui.py @@ -9,98 +9,52 @@ # SPDX-License-Identifier: MPL-2.0 # # This file is part of the Antares project. - -import contextlib +import argparse import multiprocessing -import platform -import time -import webbrowser -from multiprocessing import Process -from pathlib import Path - -import httpx -import uvicorn -from PyQt5.QtGui import QIcon -from PyQt5.QtWidgets import QAction, QApplication, QMenu, QSystemTrayIcon - -from antarest.core.utils.utils import get_local_path -from antarest.main import fastapi_app, parse_arguments - -RESOURCE_PATH = get_local_path() / "resources" - -def run_server(config_file: Path) -> None: - app = fastapi_app( - config_file, - mount_front=True, - auto_upgrade_db=True, - )[0] - # noinspection PyTypeChecker - uvicorn.run(app, host="127.0.0.1", port=8080) +from antarest import __version__ +from antarest.core.cli import PathType -def open_app() -> None: - webbrowser.open("http://localhost:8080") +def parse_arguments() -> argparse.Namespace: + parser = argparse.ArgumentParser() + parser.add_argument( + "-c", + "--config", + type=PathType(exists=True, file_ok=True), + dest="config_file", + help="path to the config file [default: '%(default)s']", + default="./config.yaml", + ) + parser.add_argument( + "-v", + "--version", + action="version", + help="Display the server version and exit", + version=__version__, + ) + return parser.parse_args() def main() -> None: + """ + Entry point for "desktop" version of antares-web. + + This process actually only runs a small app which is accessible + in the system tray. + It spawns the actual server as a separate process. + The systray app allows to shutdown the server, and to open + antares webapp in the users's browser. + """ multiprocessing.freeze_support() + arguments = parse_arguments() - if platform.system() == "Windows": - # noinspection PyPackageRequirements - from win10toast import ToastNotifier # type: ignore - toaster = ToastNotifier() - toaster.show_toast( - "AntaresWebServer", - "Antares Web Server started, you can manage the application within the systray app", - icon_path=RESOURCE_PATH / "webapp" / "favicon.ico", - threaded=True, - ) - else: - from plyer import notification # type: ignore + # VERY important to keep this import here in order to have fast startup + # when only getting version + from antarest.desktop.systray_app import run_systray_app - notification.notify( - title="AntaresWebServer", - message="Antares Web Server started, you can manage the application within the systray app", - app_name="AntaresWebServer", - app_icon=RESOURCE_PATH / "webapp" / "favicon.ico", - timeout=600, - ) - app = QApplication([]) - app.setQuitOnLastWindowClosed(False) - # Adding an icon - icon = QIcon(str(RESOURCE_PATH / "webapp" / "logo16.png")) - # Adding item on the menu bar - tray = QSystemTrayIcon() - tray.setIcon(icon) - tray.setVisible(True) - # Creating the options - menu = QMenu() - open_app_action = QAction("Open application") - menu.addAction(open_app_action) - open_app_action.triggered.connect(open_app) - # To quit the app - quit_action = QAction("Quit") - quit_action.triggered.connect(app.quit) - menu.addAction(quit_action) - # Adding options to the System Tray - tray.setContextMenu(menu) - app.processEvents() - tray.setToolTip("AntaresWebServer") - server = Process( - target=run_server, - args=(arguments.config_file,), - ) - server.start() - for _ in range(30, 0, -1): - with contextlib.suppress(httpx.ConnectError): - res = httpx.get("http://localhost:8080") - if res.status_code == 200: - break - time.sleep(1) - app.exec_() - server.kill() + run_systray_app(arguments.config_file) if __name__ == "__main__": diff --git a/antarest/main.py b/antarest/main.py index e521124447..51440a8560 100644 --- a/antarest/main.py +++ b/antarest/main.py @@ -32,6 +32,7 @@ from antarest import __version__ from antarest.core.application import AppBuildContext +from antarest.core.cli import PathType from antarest.core.config import Config from antarest.core.core_blueprint import create_utils_routes from antarest.core.filesystem_blueprint import create_file_system_blueprint @@ -56,93 +57,6 @@ logger = logging.getLogger(__name__) -class PathType: - """file or directory path type for `argparse` parser - - The `PathType` class represents a type of argument that can be used - with the `argparse` library. - This class takes three boolean arguments, `exists`, `file_ok`, and `dir_ok`, - which specify whether the path argument must exist, whether it can be a file, - and whether it can be a directory, respectively. - - Example Usage:: - - import argparse - from antarest.main import PathType - - parser = argparse.ArgumentParser() - parser.add_argument("--input", type=PathType(file_ok=True, exists=True)) - args = parser.parse_args() - - print(args.input) - - In the above example, `PathType` is used to specify the type of the `--input` - argument for the `argparse` parser. The argument must be an existing file path. - If the given path is not an existing file, the argparse library raises an error. - The Path object representing the given path is then printed to the console. - """ - - def __init__( - self, - exists: bool = False, - file_ok: bool = False, - dir_ok: bool = False, - ) -> None: - if not (file_ok or dir_ok): - msg = "Either `file_ok` or `dir_ok` must be set at a minimum." - raise ValueError(msg) - self.exists = exists - self.file_ok = file_ok - self.dir_ok = dir_ok - - def __call__(self, string: str) -> Path: - """ - Check whether the given string represents a valid path. - - If `exists` is `False`, the method simply returns the given path. - If `exists` is True, it checks whether the path exists and whether it is - a file or a directory, depending on the values of `file_ok` and `dir_ok`. - If the path exists and is of the correct type, the method returns the path; - otherwise, it raises an :class:`argparse.ArgumentTypeError` with an - appropriate error message. - - Args: - string: file or directory path - - Returns: - the file or directory path - - Raises - argparse.ArgumentTypeError: if the path is invalid - """ - file_path = Path(string).expanduser() - if not self.exists: - return file_path - if self.file_ok and self.dir_ok: - if file_path.exists(): - return file_path - msg = f"The file or directory path does not exist: '{file_path}'" - raise argparse.ArgumentTypeError(msg) - elif self.file_ok: - if file_path.is_file(): - return file_path - elif file_path.exists(): - msg = f"The path is not a regular file: '{file_path}'" - else: - msg = f"The file path does not exist: '{file_path}'" - raise argparse.ArgumentTypeError(msg) - elif self.dir_ok: - if file_path.is_dir(): - return file_path - elif file_path.exists(): - msg = f"The path is not a directory: '{file_path}'" - else: - msg = f"The directory path does not exist: '{file_path}'" - raise argparse.ArgumentTypeError(msg) - else: # pragma: no cover - raise NotImplementedError((self.file_ok, self.dir_ok)) - - def parse_arguments() -> argparse.Namespace: parser = argparse.ArgumentParser() parser.add_argument( diff --git a/installer b/installer index bd51be05c7..eda9075b77 160000 --- a/installer +++ b/installer @@ -1 +1 @@ -Subproject commit bd51be05c7f0f1c634f2cd0c564686ed34b3a6f7 +Subproject commit eda9075b7798827a5679f4aeca6fc27f8e520159 From 5421a835f822c710c9b411a5d15cfcdb8060348e Mon Sep 17 00:00:00 2001 From: Sylvain Leclerc Date: Mon, 14 Oct 2024 10:40:52 +0200 Subject: [PATCH 033/182] Fix/fix apidoc redirect (#2186) Every URL which started with /api, including /apidocs, was identified as a subpath of the API, and was therefore not redirected to the front page. The fix is to actually check for "/api/" in the URL. Fixes #1625 --------- Signed-off-by: Sylvain Leclerc --- antarest/front.py | 31 +++++++++++++++++++++---------- tests/test_front.py | 9 +++++++-- 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/antarest/front.py b/antarest/front.py index a0699812bf..16cd92544f 100644 --- a/antarest/front.py +++ b/antarest/front.py @@ -22,7 +22,7 @@ import re from pathlib import Path -from typing import Any, Optional, Sequence +from typing import Any, List, Optional, Sequence from fastapi import FastAPI from starlette.middleware.base import BaseHTTPMiddleware, DispatchFunction, RequestResponseEndpoint @@ -46,7 +46,8 @@ def __init__( self, app: ASGIApp, dispatch: Optional[DispatchFunction] = None, - route_paths: Sequence[str] = (), + protected_roots: Optional[List[str]] = None, + protected_paths: Optional[List[str]] = None, ) -> None: """ Initializes an instance of the URLRewriterMiddleware. @@ -54,15 +55,26 @@ def __init__( Args: app: The ASGI application to which the middleware is applied. dispatch: The dispatch function to use. - route_paths: The known route paths of the application. - Requests that do not match any of these paths will be rewritten to the root path. + protected_roots: URL starting at those roots will not be redirected + protected_paths: those URLs will not be redirected Note: The `route_paths` should contain all the known endpoints of the application. """ dispatch = self.dispatch if dispatch is None else dispatch super().__init__(app, dispatch) - self.known_prefixes = {re.findall(r"/(?:(?!/).)*", p)[0] for p in route_paths if p != "/"} + + self.protected_paths = protected_paths or [] + protected_roots = protected_roots or [] + self.protected_roots = [r.rstrip("/") for r in protected_roots] + + def _path_matches_protected_paths(self, path: str) -> bool: + if path in self.protected_paths: + return True + for root in self.protected_roots: + if path == root or path.startswith(f"{root}/"): + return True + return False async def dispatch(self, request: Request, call_next: RequestResponseEndpoint) -> Any: """ @@ -72,7 +84,7 @@ async def dispatch(self, request: Request, call_next: RequestResponseEndpoint) - url_path = request.scope["path"] if url_path in {"", "/"}: pass - elif not any(url_path.startswith(ep) for ep in self.known_prefixes): + elif not self._path_matches_protected_paths(url_path): request.scope["path"] = "/" return await call_next(request) @@ -112,8 +124,9 @@ def add_front_app(application: FastAPI, resources_dir: Path, api_prefix: str) -> front_app_dir = resources_dir / "webapp" # Serve front-end files + static_files_root = "/static" application.mount( - "/static", + static_files_root, StaticFiles(directory=front_app_dir), name="static", ) @@ -132,8 +145,6 @@ def get_api_paths_config(request: Request) -> BackEndConfig: # is served at the `/static` entry point. Any requests that are not API # requests should be redirected to the `index.html` file, which will handle # the route provided by the URL. - route_paths = [r.path for r in application.routes] # type: ignore application.add_middleware( - RedirectMiddleware, - route_paths=route_paths, + RedirectMiddleware, protected_roots=[static_files_root, api_prefix], protected_paths=["/config.json"] ) diff --git a/tests/test_front.py b/tests/test_front.py index 5046a868cf..afe58f5fd3 100644 --- a/tests/test_front.py +++ b/tests/test_front.py @@ -64,8 +64,9 @@ def redirect_app(app_with_home: FastAPI) -> FastAPI: """ Same as app with redirect middleware """ - route_paths = [r.path for r in app_with_home.routes] # type: ignore - app_with_home.add_middleware(RedirectMiddleware, route_paths=route_paths) + app_with_home.add_middleware( + RedirectMiddleware, protected_roots=["/api", "static"], protected_paths=["/config.json"] + ) return app_with_home @@ -106,6 +107,10 @@ def test_frontend_paths(base_back_app, resources_dir: Path) -> None: assert front_route_response.status_code == 200 assert front_route_response.text == "index" + front_route_response = client.get("/apidoc") + assert front_route_response.status_code == 200 + assert front_route_response.text == "index" + front_static_file_response = client.get("/static/front.css") assert front_static_file_response.status_code == 200 assert front_static_file_response.text == "css" From 610c8d7ac7f7457e07cbbf4eb77985f11aa909d8 Mon Sep 17 00:00:00 2001 From: mabw-rte <41002227+mabw-rte@users.noreply.github.com> Date: Mon, 14 Oct 2024 15:34:36 +0200 Subject: [PATCH 034/182] perf(scripts): improve load balancing (#2165) gunicorn does not perform a real load balancing. We add a new option to the start.sh script that starts multiple workers listening on different ports to let users perform load balancing upstream if they prefer that option, for example using nginx. --- scripts/start.sh | 49 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/scripts/start.sh b/scripts/start.sh index aedcca2202..5b4fefa1e5 100755 --- a/scripts/start.sh +++ b/scripts/start.sh @@ -1,14 +1,61 @@ #!/bin/bash +# +# Starter script used in docker image. +# +# Usages are: +# +# 1. ./start.sh +# Starts antares web server with gunicorn. +# Number of workers is defined by GUNICORN_WORKERS env variable, +# or equal to 2*cpu + 1. +# +# 2. ./start.sh +# Where module is for example "watcher". +# Starts one of the backend services (watcher, garbage collector, ...) +# +# 3. ./start.sh --no-gunicorn +# Starts multiple workers on different ports. You are expected to +# configure some load balancing upstream, in that case. +# Number of workers is defined by ANTARES_NB_WORKERS env variable, +# or equal to 2*cpu + 1. set -e CUR_DIR=$(cd "$(dirname "$0")" && pwd) BASE_DIR=$(dirname "$CUR_DIR") +min() { + echo $(( $1 < $2 ? $1 : $2 )) +} + +workers=$(min 30 ${ANTARES_NB_WORKERS:-$((2*$(nproc) + 1))}) # default (2*nproc + 1) and max is 30 + +# Check for --no-gunicorn or --multiple-ports argument +use_uvicorn=false +for arg in "$@" +do + if [[ $arg == "--no-gunicorn" || $arg == "--multiple-ports" ]]; then + use_uvicorn=true + break + fi +done + if [ -z "$1" ] ; then sh $CUR_DIR/pre-start.sh gunicorn --config $BASE_DIR/conf/gunicorn.py --worker-class=uvicorn.workers.UvicornWorker antarest.wsgi:app +elif [ "$use_uvicorn" = true ]; then + sh $CUR_DIR/pre-start.sh + pids=() # Initialize empty array to store background process IDs + for ((i=0; i Date: Mon, 14 Oct 2024 16:58:30 +0200 Subject: [PATCH 035/182] feat(desktop): open browser when server is started (#2187) Following user demand: when a user clicks on the application shortcuts, he expects to have its browser open. Signed-off-by: Sylvain Leclerc --- antarest/desktop/systray_app.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/antarest/desktop/systray_app.py b/antarest/desktop/systray_app.py index 905d5a0db9..b1d2a711fe 100644 --- a/antarest/desktop/systray_app.py +++ b/antarest/desktop/systray_app.py @@ -173,6 +173,7 @@ def run_systray_app(config_file: Path) -> None: notification_popup( "Antares Web Server already running, you can manage the application within the system tray.", threaded=False ) + open_app() return notification_popup("Starting Antares Web Server...") systray_app = create_systray_app() @@ -180,5 +181,6 @@ def run_systray_app(config_file: Path) -> None: setup_exit_application_on_server_end(server, systray_app.app) wait_for_server_start() notification_popup("Antares Web Server started, you can manage the application within the system tray.") + open_app() systray_app.app.exec_() server.kill() From aafa0e0440d4b9ab7576182babe09ffa998fd35e Mon Sep 17 00:00:00 2001 From: Samir Kamal <1954121+skamril@users.noreply.github.com> Date: Thu, 17 Oct 2024 10:37:54 +0200 Subject: [PATCH 036/182] feat(ui-utils): add array validation in validationUtils --- webapp/src/utils/validationUtils.ts | 95 ++++++++++++++++++++++++----- 1 file changed, 79 insertions(+), 16 deletions(-) diff --git a/webapp/src/utils/validationUtils.ts b/webapp/src/utils/validationUtils.ts index 3d4c168697..f7b3014691 100644 --- a/webapp/src/utils/validationUtils.ts +++ b/webapp/src/utils/validationUtils.ts @@ -13,17 +13,14 @@ */ import { t } from "i18next"; +import * as R from "ramda"; + +type ValidationResult = string | true; //////////////////////////////////////////////////////////////// -// Types +// String //////////////////////////////////////////////////////////////// -interface NumberValidationOptions { - min?: number; - max?: number; - integer?: boolean; -} - interface StringValidationOptions { existingValues?: string[]; excludedValues?: string[]; @@ -36,10 +33,6 @@ interface StringValidationOptions { maxLength?: number; } -//////////////////////////////////////////////////////////////// -// Validators -//////////////////////////////////////////////////////////////// - /** * Validates a single string value against specified criteria. * @@ -62,7 +55,7 @@ interface StringValidationOptions { export function validateString( value: string, options?: StringValidationOptions, -): string | true { +): ValidationResult { const { existingValues = [], excludedValues = [], @@ -136,7 +129,7 @@ export function validateString( * @param password - The password to validate. * @returns True if validation is successful, or a localized error message if it fails. */ -export function validatePassword(password: string): string | true { +export function validatePassword(password: string): ValidationResult { const trimmedPassword = password.trim(); if (!trimmedPassword) { @@ -170,6 +163,16 @@ export function validatePassword(password: string): string | true { return true; } +//////////////////////////////////////////////////////////////// +// Number +//////////////////////////////////////////////////////////////// + +interface NumberValidationOptions { + min?: number; + max?: number; + integer?: boolean; +} + /** * Validates a number against specified numerical limits. * @@ -192,16 +195,16 @@ export function validatePassword(password: string): string | true { export function validateNumber( value: number, options?: NumberValidationOptions, -): string | true; +): ValidationResult; export function validateNumber( options?: NumberValidationOptions, -): (value: number) => string | true; +): (value: number) => ValidationResult; export function validateNumber( valueOrOpts?: number | NumberValidationOptions, options: NumberValidationOptions = {}, -): (string | true) | ((value: number) => string | true) { +): ValidationResult | ((value: number) => ValidationResult) { if (typeof valueOrOpts !== "number") { return (v: number) => validateNumber(v, valueOrOpts); } @@ -233,6 +236,66 @@ export function validateNumber( return true; } +//////////////////////////////////////////////////////////////// +// Array +//////////////////////////////////////////////////////////////// + +interface ArrayValidationOptions { + allowEmpty?: boolean; + allowDuplicate?: boolean; +} + +/** + * Validates an array against specified criteria. + * This function checks for duplicate values in the array. + * + * @example + * validateArray([1, 2, 3], { allowDuplicate: false }); // true + * validateArray([1, 1, 2, 3], { allowDuplicate: false }); // Error message + * + * + * @example With currying. + * const fn = validateArray({ allowDuplicate: false }); + * fn([1, 2, 3]); // true + * fn([1, 1, 2, 3]); // Error message + * + * @param value - The array to validate. + * @param [options] - Configuration options for validation. + * @param [options.allowEmpty=false] - Sets whether empty array is allowed or not. + * @param [options.allowDuplicate=false] - Sets whether duplicate values are allowed or not. + * @returns True if validation is successful, or a localized error message if it fails. + */ +export function validateArray( + value: T[], + options?: ArrayValidationOptions, +): ValidationResult; + +export function validateArray( + options?: ArrayValidationOptions, +): (value: T[]) => ValidationResult; + +export function validateArray( + valueOrOpts?: T[] | ArrayValidationOptions, + options: ArrayValidationOptions = {}, +): ValidationResult | ((value: T[]) => ValidationResult) { + if (!Array.isArray(valueOrOpts)) { + return (v: T[]) => validateArray(v, valueOrOpts); + } + + const value = valueOrOpts; + const { allowEmpty, allowDuplicate } = options; + + if (!value.length && !allowEmpty) { + return t("form.field.required"); + } + + if (!allowDuplicate && R.uniq(value).length !== value.length) { + return t("form.field.duplicateNotAllowed"); + } + + return true; +} + //////////////////////////////////////////////////////////////// // Utils //////////////////////////////////////////////////////////////// From dfb6a58e728e989eaebb051f0b2c2d7263abb2c0 Mon Sep 17 00:00:00 2001 From: Samir Kamal <1954121+skamril@users.noreply.github.com> Date: Thu, 17 Oct 2024 10:38:31 +0200 Subject: [PATCH 037/182] feat(ui-tablemode): prevent duplicate columns --- webapp/public/locales/en/main.json | 1 + webapp/public/locales/fr/main.json | 1 + .../TableModeList/dialogs/TableTemplateFormDialog.tsx | 7 +++++-- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/webapp/public/locales/en/main.json b/webapp/public/locales/en/main.json index f4d3c0eb93..eb81c6c734 100644 --- a/webapp/public/locales/en/main.json +++ b/webapp/public/locales/en/main.json @@ -142,6 +142,7 @@ "form.field.specialChars": "Special characters allowed: {{0}}", "form.field.specialCharsNotAllowed": "Special characters are not allowed", "form.field.spacesNotAllowed": "Spaces are not allowed", + "form.field.duplicateNotAllowed": "Duplicates are not allowed", "form.field.requireLowercase": "Must contain at least one lowercase letter.", "form.field.requireUppercase": "Must contain at least one uppercase letter.", "form.field.requireDigit": "Must contain at least one digit.", diff --git a/webapp/public/locales/fr/main.json b/webapp/public/locales/fr/main.json index 3062419fea..a22f7ce299 100644 --- a/webapp/public/locales/fr/main.json +++ b/webapp/public/locales/fr/main.json @@ -142,6 +142,7 @@ "form.field.specialChars": "Caractères spéciaux autorisés: {{0}}", "form.field.specialCharsNotAllowed": "Les caractères spéciaux ne sont pas autorisés", "form.field.spacesNotAllowed": "Les espaces ne sont pas autorisés", + "form.field.duplicateNotAllowed": "Les doublons ne sont pas autorisés", "form.field.requireLowercase": "Doit contenir au moins une lettre minuscule.", "form.field.requireUppercase": "Doit contenir au moins une lettre majuscule.", "form.field.requireDigit": "Doit contenir au moins un chiffre.", diff --git a/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/TableTemplateFormDialog.tsx b/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/TableTemplateFormDialog.tsx index f019b529d5..8966d8014f 100644 --- a/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/TableTemplateFormDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/TableTemplateFormDialog.tsx @@ -23,7 +23,10 @@ import SelectFE from "../../../../../common/fieldEditors/SelectFE"; import StringFE from "../../../../../common/fieldEditors/StringFE"; import { getTableColumnsForType, type TableTemplate } from "../utils"; import { TABLE_MODE_TYPES } from "../../../../../../services/api/studies/tableMode/constants"; -import { validateString } from "../../../../../../utils/validationUtils"; +import { + validateArray, + validateString, +} from "../../../../../../utils/validationUtils"; import { useMemo } from "react"; export interface TableTemplateFormDialogProps @@ -102,7 +105,7 @@ function TableTemplateFormDialog(props: TableTemplateFormDialogProps) { getOptionLabel={startCase} name="columns" control={control} - rules={{ required: true }} + rules={{ validate: validateArray() }} /> )} From 60f91494a2bea40fd3efc441548306e936411c93 Mon Sep 17 00:00:00 2001 From: Samir Kamal <1954121+skamril@users.noreply.github.com> Date: Thu, 17 Oct 2024 10:40:37 +0200 Subject: [PATCH 038/182] fix(ui-tablemode): empty view message not diplaying --- webapp/src/components/common/TableMode.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/webapp/src/components/common/TableMode.tsx b/webapp/src/components/common/TableMode.tsx index fa309dc01f..6f1bef3d14 100644 --- a/webapp/src/components/common/TableMode.tsx +++ b/webapp/src/components/common/TableMode.tsx @@ -29,6 +29,7 @@ import TableForm from "./TableForm"; import UsePromiseCond from "./utils/UsePromiseCond"; import GridOffIcon from "@mui/icons-material/GridOff"; import EmptyView from "./page/SimpleContent"; +import { useTranslation } from "react-i18next"; export interface TableModeProps { studyId: StudyMetadata["id"]; @@ -39,6 +40,7 @@ export interface TableModeProps { function TableMode(props: TableModeProps) { const { studyId, type, columns } = props; const [filteredColumns, setFilteredColumns] = useState(columns); + const { t } = useTranslation(); const res = usePromise( () => getTableMode({ studyId, tableType: type, columns }), @@ -89,7 +91,7 @@ function TableMode(props: TableModeProps) { autoSubmit={false} /> ) : ( - + ) } /> From c6f46922f0213b91fe37bee9474b7861bb0b167b Mon Sep 17 00:00:00 2001 From: mabw-rte <41002227+mabw-rte@users.noreply.github.com> Date: Thu, 17 Oct 2024 12:13:03 +0200 Subject: [PATCH 039/182] feat(watcher): filter out upgrade and TS generation `.tmp` folders (#2189) Issue: Temporary folders created during a study update are scanned by the watcher, which imports studies into the database that we do not want to import. Solution: To overcome this problem, we need to add a "hard coded" filter in the watcher in addition to the "filter_out" filters that come from the configuration, and other folders ignored by the watcher (AWS_NO_SCAN etc). The convention of the upgrade is to create folders suffixed ".tmp": we can base ourselves on this convention. The best is probably to create a constant in the upgrade module, in order to understand where this filtering comes from. --- antarest/study/storage/rawstudy/watcher.py | 10 ++++ .../generate_thermal_cluster_timeseries.py | 18 +++++-- requirements.txt | 2 +- tests/storage/business/test_watcher.py | 52 ++++++++++++++----- 4 files changed, 65 insertions(+), 17 deletions(-) diff --git a/antarest/study/storage/rawstudy/watcher.py b/antarest/study/storage/rawstudy/watcher.py index 8b8ed98395..b524c8cb8e 100644 --- a/antarest/study/storage/rawstudy/watcher.py +++ b/antarest/study/storage/rawstudy/watcher.py @@ -20,6 +20,7 @@ from time import sleep, time from typing import List, Optional +from antares.study.version.upgrade_app import is_temporary_upgrade_dir from filelock import FileLock from antarest.core.config import Config @@ -33,6 +34,7 @@ from antarest.login.model import Group from antarest.study.model import DEFAULT_WORKSPACE_NAME, StudyFolder from antarest.study.service import StudyService +from antarest.study.storage.variantstudy.model.command.generate_thermal_cluster_timeseries import is_ts_gen_tmp_dir logger = logging.getLogger(__name__) @@ -132,6 +134,14 @@ def _rec_scan( logger.info(f"No scan directive file found. Will skip further scan of folder {path}") return [] + if is_temporary_upgrade_dir(path): + logger.info(f"Upgrade temporary folder found. Will skip further scan of folder {path}") + return [] + + if is_ts_gen_tmp_dir(path): + logger.info(f"TS generation temporary folder found. Will skip further scan of folder {path}") + return [] + if (path / "study.antares").exists(): logger.debug(f"Study {path.name} found in {workspace}") return [StudyFolder(path, workspace, groups)] diff --git a/antarest/study/storage/variantstudy/model/command/generate_thermal_cluster_timeseries.py b/antarest/study/storage/variantstudy/model/command/generate_thermal_cluster_timeseries.py index ad7e5fa863..c2709dfc86 100644 --- a/antarest/study/storage/variantstudy/model/command/generate_thermal_cluster_timeseries.py +++ b/antarest/study/storage/variantstudy/model/command/generate_thermal_cluster_timeseries.py @@ -36,6 +36,20 @@ MODULATION_CAPACITY_COLUMN = 2 FO_RATE_COLUMN = 2 PO_RATE_COLUMN = 3 +TS_GEN_PREFIX = "~" +TS_GEN_SUFFIX = ".thermal_timeseries_gen.tmp" + + +def is_ts_gen_tmp_dir(path: Path) -> bool: + """ + Check if a path is a temporary directory used for thermal timeseries generation + Args: + path: the path to check + + Returns: + True if the path is a temporary directory used for thermal timeseries generation + """ + return path.name.startswith(TS_GEN_PREFIX) and "".join(path.suffixes[-2:]) == TS_GEN_SUFFIX and path.is_dir() class GenerateThermalClusterTimeSeries(ICommand): @@ -51,9 +65,7 @@ def _apply_config(self, study_data: FileStudyTreeConfig) -> OutputTuple: def _apply(self, study_data: FileStudy) -> CommandOutput: study_path = study_data.config.study_path - with tempfile.TemporaryDirectory( - suffix=".thermal_timeseries_gen.tmp", prefix="~", dir=study_path.parent - ) as path: + with tempfile.TemporaryDirectory(suffix=TS_GEN_SUFFIX, prefix=TS_GEN_PREFIX, dir=study_path.parent) as path: tmp_dir = Path(path) try: shutil.copytree(study_path / "input" / "thermal" / "series", tmp_dir, dirs_exist_ok=True) diff --git a/requirements.txt b/requirements.txt index e5f9d48cd1..0ddf9db1b4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ Antares-Launcher==1.4.2 -antares-study-version==1.0.6 +antares-study-version==1.0.9 antares-timeseries-generation~=0.1.5 # When you install `fastapi[all]`, you get FastAPI along with additional dependencies: diff --git a/tests/storage/business/test_watcher.py b/tests/storage/business/test_watcher.py index 699a48f2c0..34d28db877 100644 --- a/tests/storage/business/test_watcher.py +++ b/tests/storage/business/test_watcher.py @@ -9,8 +9,9 @@ # SPDX-License-Identifier: MPL-2.0 # # This file is part of the Antares project. - +import logging import os +import typing as t from multiprocessing import Pool from pathlib import Path from unittest.mock import Mock @@ -112,7 +113,7 @@ def test_scan(tmp_path: Path): @pytest.mark.unit_test -def test_partial_scan(tmp_path: Path): +def test_partial_scan(tmp_path: Path, caplog: t.Any): engine = create_engine("sqlite:///:memory:", echo=False) Base.metadata.create_all(engine) # noinspection SpellCheckingInspection @@ -124,12 +125,24 @@ def test_partial_scan(tmp_path: Path): clean_files() + # study to be scanned default = tmp_path / "test" default.mkdir() a = default / "studyA" a.mkdir() (a / "study.antares").touch() + # create a temporary upgrade folder + upgrade_folder = default / "folder/~upgrade_folder.study.upgrade.tmp" + upgrade_folder.mkdir(parents=True) + (upgrade_folder / "study.antares").touch() + + # create a temporary ts gen folder + ts_gen_folder = default / "folder/~ts_gen_folder.study.thermal_timeseries_gen.tmp" + ts_gen_folder.mkdir(parents=True) + (ts_gen_folder / "study.antares").touch() + + # study to be skipped because we check only the `default directory` diese = tmp_path / "diese" diese.mkdir() c = diese / "folder/studyC" @@ -142,18 +155,31 @@ def test_partial_scan(tmp_path: Path): with pytest.raises(CannotScanInternalWorkspace): watcher.scan(workspace_name="default", workspace_directory_path=default) - watcher.scan(workspace_name="test", workspace_directory_path=default) + with caplog.at_level(level=logging.INFO, logger="antarest.study.storage.rawstudy.watcher"): + # scan the `default` directory + watcher.scan(workspace_name="test", workspace_directory_path=default) - assert service.sync_studies_on_disk.call_count == 1 - call = service.sync_studies_on_disk.call_args_list[0] - assert len(call.args[0]) == 1 - assert call.args[0][0].path == a - assert call.args[0][0].workspace == "test" - groups = call.args[0][0].groups - assert len(groups) == 1 - assert groups[0].id == "toto" - assert groups[0].name == "toto" - assert call.args[1] == tmp_path / "test" + # verify that only one study has been scanned + assert service.sync_studies_on_disk.call_count == 1 + + # verify that the scan process has been called with the correct arguments + call = service.sync_studies_on_disk.call_args_list[0] + + # verify that only one study has been scanned + assert len(call.args[0]) == 1 + + # verify that folder `a` has been processed correctly + assert call.args[0][0].path == a + assert call.args[0][0].workspace == "test" + groups = call.args[0][0].groups + assert len(groups) == 1 + assert groups[0].id == "toto" + assert groups[0].name == "toto" + assert call.args[1] == tmp_path / "test" + + # verify that `upgrade_folder` and `ts_gen_folder` have been skipped + assert f"Upgrade temporary folder found. Will skip further scan of folder {upgrade_folder}" in caplog.text + assert f"TS generation temporary folder found. Will skip further scan of folder {ts_gen_folder}" in caplog.text def process(x: int) -> bool: From 7dad8ae95735ebf24058c690b98b5cc2a449cf76 Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Fri, 18 Oct 2024 09:58:09 +0200 Subject: [PATCH 040/182] test: add tests for validation utils and split them into dedicated files --- webapp/src/utils/validation/array.test.ts | 68 ++++++++ webapp/src/utils/validation/array.ts | 74 +++++++++ webapp/src/utils/validation/number.test.ts | 106 ++++++++++++ webapp/src/utils/validation/number.ts | 86 ++++++++++ webapp/src/utils/validation/string.test.ts | 156 ++++++++++++++++++ .../string.ts} | 148 +---------------- 6 files changed, 492 insertions(+), 146 deletions(-) create mode 100644 webapp/src/utils/validation/array.test.ts create mode 100644 webapp/src/utils/validation/array.ts create mode 100644 webapp/src/utils/validation/number.test.ts create mode 100644 webapp/src/utils/validation/number.ts create mode 100644 webapp/src/utils/validation/string.test.ts rename webapp/src/utils/{validationUtils.ts => validation/string.ts} (59%) diff --git a/webapp/src/utils/validation/array.test.ts b/webapp/src/utils/validation/array.test.ts new file mode 100644 index 0000000000..406c853548 --- /dev/null +++ b/webapp/src/utils/validation/array.test.ts @@ -0,0 +1,68 @@ +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + +import { validateArray } from "./array"; + +vi.mock("i18next", () => ({ + t: vi.fn((key) => key), +})); + +describe("validateArray", () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + test("should return true for a non-empty array with no duplicates", () => { + expect(validateArray([1, 2, 3])).toBe(true); + }); + + test("should return an error message for an empty array when not allowed", () => { + expect(validateArray([])).toBe("form.field.required"); + }); + + test("should return true for an empty array when allowed", () => { + expect(validateArray([], { allowEmpty: true })).toBe(true); + }); + + test("should return an error message for an array with duplicates when not allowed", () => { + expect(validateArray([1, 2, 2, 3])).toBe("form.field.duplicateNotAllowed"); + }); + + test("should return true for an array with duplicates when allowed", () => { + expect(validateArray([1, 2, 2, 3], { allowDuplicate: true })).toBe(true); + }); + + test("should work with currying", () => { + const validator = validateArray({ allowDuplicate: false }); + expect(validator([1, 2, 3])).toBe(true); + expect(validator([1, 1, 2, 3])).toBe("form.field.duplicateNotAllowed"); + }); + + test("should work with different types of array elements", () => { + expect(validateArray(["a", "b", "c"])).toBe(true); + expect(validateArray([{ id: 1 }, { id: 2 }])).toBe(true); + }); + + test("should handle both options simultaneously", () => { + expect(validateArray([], { allowEmpty: true, allowDuplicate: false })).toBe( + true, + ); + expect( + validateArray([1, 1], { allowEmpty: true, allowDuplicate: true }), + ).toBe(true); + expect( + validateArray([1, 1], { allowEmpty: true, allowDuplicate: false }), + ).toBe("form.field.duplicateNotAllowed"); + }); +}); diff --git a/webapp/src/utils/validation/array.ts b/webapp/src/utils/validation/array.ts new file mode 100644 index 0000000000..4e09e69013 --- /dev/null +++ b/webapp/src/utils/validation/array.ts @@ -0,0 +1,74 @@ +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + +import { t } from "i18next"; +import * as R from "ramda"; + +type ValidationResponse = string | true; + +interface ArrayValidationOptions { + allowEmpty?: boolean; + allowDuplicate?: boolean; +} + +/** + * Validates an array against specified criteria. + * This function checks for duplicate values in the array. + * + * @example + * validateArray([1, 2, 3], { allowDuplicate: false }); // true + * validateArray([1, 1, 2, 3], { allowDuplicate: false }); // Error message + * + * + * @example With currying. + * const fn = validateArray({ allowDuplicate: false }); + * fn([1, 2, 3]); // true + * fn([1, 1, 2, 3]); // Error message + * + * @param value - The array to validate. + * @param [options] - Configuration options for validation. + * @param [options.allowEmpty=false] - Sets whether empty array is allowed or not. + * @param [options.allowDuplicate=false] - Sets whether duplicate values are allowed or not. + * @returns True if validation is successful, or a localized error message if it fails. + */ +export function validateArray( + value: T[], + options?: ArrayValidationOptions, +): ValidationResponse; + +export function validateArray( + options?: ArrayValidationOptions, +): (value: T[]) => ValidationResponse; + +export function validateArray( + valueOrOpts?: T[] | ArrayValidationOptions, + options: ArrayValidationOptions = {}, +): ValidationResponse | ((value: T[]) => ValidationResponse) { + if (!Array.isArray(valueOrOpts)) { + return (v: T[]) => validateArray(v, valueOrOpts); + } + + const value = valueOrOpts; + const { allowEmpty, allowDuplicate } = options; + + if (!value.length && !allowEmpty) { + return t("form.field.required"); + } + + if (!allowDuplicate && R.uniq(value).length !== value.length) { + return t("form.field.duplicateNotAllowed"); + } + + return true; +} diff --git a/webapp/src/utils/validation/number.test.ts b/webapp/src/utils/validation/number.test.ts new file mode 100644 index 0000000000..eb19efcafe --- /dev/null +++ b/webapp/src/utils/validation/number.test.ts @@ -0,0 +1,106 @@ +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + +import { validateNumber } from "./number"; + +// Mock i18next +vi.mock("i18next", () => ({ + t: vi.fn((key, options) => { + if (options) { + return `${key}: ${JSON.stringify(options)}`; + } + return key; + }), +})); + +describe("validateNumber", () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + test("should return true for a valid number", () => { + expect(validateNumber(5)).toBe(true); + }); + + test("should return an error for non-finite numbers", () => { + expect(validateNumber(NaN)).toBe( + 'form.field.invalidNumber: {"value":null}', + ); + expect(validateNumber(Infinity)).toBe( + 'form.field.invalidNumber: {"value":null}', + ); + expect(validateNumber(-Infinity)).toBe( + 'form.field.invalidNumber: {"value":null}', + ); + }); + + test("should handle minimum value validation", () => { + expect(validateNumber(5, { min: 0 })).toBe(true); + expect(validateNumber(-1, { min: 0 })).toBe('form.field.minValue: {"0":0}'); + }); + + test("should handle maximum value validation", () => { + expect(validateNumber(5, { max: 10 })).toBe(true); + expect(validateNumber(11, { max: 10 })).toBe( + 'form.field.maxValue: {"0":10}', + ); + }); + + test("should handle both minimum and maximum value validation", () => { + expect(validateNumber(5, { min: 0, max: 10 })).toBe(true); + expect(validateNumber(-1, { min: 0, max: 10 })).toBe( + 'form.field.minValue: {"0":0}', + ); + expect(validateNumber(11, { min: 0, max: 10 })).toBe( + 'form.field.maxValue: {"0":10}', + ); + }); + + test("should handle integer validation", () => { + expect(validateNumber(5, { integer: true })).toBe(true); + expect(validateNumber(5.5, { integer: true })).toBe( + "form.field.mustBeInteger", + ); + }); + + test("should work with currying", () => { + const validator = validateNumber({ min: 0, max: 10 }); + expect(validator(5)).toBe(true); + expect(validator(-1)).toBe('form.field.minValue: {"0":0}'); + expect(validator(11)).toBe('form.field.maxValue: {"0":10}'); + }); + + test("should handle extreme values", () => { + expect(validateNumber(Number.MAX_SAFE_INTEGER)).toBe(true); + expect(validateNumber(Number.MIN_SAFE_INTEGER)).toBe(true); + }); + + test("should handle custom ranges", () => { + expect(validateNumber(50, { min: -100, max: 100 })).toBe(true); + expect(validateNumber(-150, { min: -100, max: 100 })).toBe( + 'form.field.minValue: {"0":-100}', + ); + expect(validateNumber(150, { min: -100, max: 100 })).toBe( + 'form.field.maxValue: {"0":100}', + ); + }); + + test("should handle decimal numbers", () => { + expect(validateNumber(3.14)).toBe(true); + expect(validateNumber(3.14, { min: 3, max: 4 })).toBe(true); + expect(validateNumber(2.99, { min: 3, max: 4 })).toBe( + 'form.field.minValue: {"0":3}', + ); + }); +}); diff --git a/webapp/src/utils/validation/number.ts b/webapp/src/utils/validation/number.ts new file mode 100644 index 0000000000..fff975b4bf --- /dev/null +++ b/webapp/src/utils/validation/number.ts @@ -0,0 +1,86 @@ +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + +import { t } from "i18next"; + +type ValidationResponse = string | true; + +interface NumberValidationOptions { + min?: number; + max?: number; + integer?: boolean; +} + +/** + * Validates a number against specified numerical limits. + * + * @example + * validateNumber(5, { min: 0, max: 10 }); // true + * validateNumber(9, { min: 10, max: 20 }); // Error message + * + * + * @example With currying. + * const fn = validateNumber({ min: 0, max: 10 }); + * fn(5); // true + * fn(11); // Error message + * + * @param value - The number to validate. + * @param [options] - Configuration options for validation. + * @param [options.min=Number.MIN_SAFE_INTEGER] - Minimum allowed value. + * @param [options.max=Number.MAX_SAFE_INTEGER] - Maximum allowed value. + * @returns True if validation is successful, or a localized error message if it fails. + */ +export function validateNumber( + value: number, + options?: NumberValidationOptions, +): ValidationResponse; + +export function validateNumber( + options?: NumberValidationOptions, +): (value: number) => ValidationResponse; + +export function validateNumber( + valueOrOpts?: number | NumberValidationOptions, + options: NumberValidationOptions = {}, +): ValidationResponse | ((value: number) => ValidationResponse) { + if (typeof valueOrOpts !== "number") { + return (v: number) => validateNumber(v, valueOrOpts); + } + + const value = valueOrOpts; + + if (!isFinite(value)) { + return t("form.field.invalidNumber", { value }); + } + + const { + min = Number.MIN_SAFE_INTEGER, + max = Number.MAX_SAFE_INTEGER, + integer = false, + } = options; + + if (integer && !Number.isInteger(valueOrOpts)) { + return t("form.field.mustBeInteger"); + } + + if (value < min) { + return t("form.field.minValue", { 0: min }); + } + + if (value > max) { + return t("form.field.maxValue", { 0: max }); + } + + return true; +} diff --git a/webapp/src/utils/validation/string.test.ts b/webapp/src/utils/validation/string.test.ts new file mode 100644 index 0000000000..dfc164cc36 --- /dev/null +++ b/webapp/src/utils/validation/string.test.ts @@ -0,0 +1,156 @@ +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + +import { validatePassword, validateString } from "./string"; + +vi.mock("i18next", () => ({ + t: vi.fn((key, options) => { + if (options) { + return `${key}: ${JSON.stringify(options)}`; + } + return key; + }), +})); + +describe("validateString", () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + test("should return true for a valid string", () => { + expect(validateString("Valid String")).toBe(true); + }); + + test("should return an error for an empty string", () => { + expect(validateString("")).toBe("form.field.required"); + expect(validateString(" ")).toBe("form.field.required"); + }); + + test("should handle length restrictions", () => { + expect(validateString("abc", { minLength: 5 })).toBe( + 'form.field.minLength: {"length":5}', + ); + expect(validateString("abcdefghijk", { maxLength: 10 })).toBe( + 'form.field.maxLength: {"length":10}', + ); + }); + + test("should handle space restrictions", () => { + expect(validateString("no spaces", { allowSpaces: false })).toBe( + "form.field.spacesNotAllowed", + ); + }); + + test("should handle special character restrictions", () => { + expect(validateString("abc123!@#", { allowSpecialChars: false })).toBe( + "form.field.specialCharsNotAllowed", + ); + expect( + validateString("abc123!@#", { + allowSpecialChars: true, + specialChars: "!@#", + }), + ).toBe(true); + expect( + validateString("abc123$%^", { + allowSpecialChars: true, + specialChars: "!@#", + }), + ).toBe('form.field.specialChars: {"0":"!@#"}'); + }); + + test("should handle duplicate checks", () => { + expect( + validateString("existing", { existingValues: ["EXISTING", "other"] }), + ).toBe("form.field.duplicate"); + expect( + validateString("existing", { + existingValues: ["EXISTING", "other"], + isCaseSensitive: true, + }), + ).toBe(true); + }); + + test("should handle excluded values", () => { + expect( + validateString("excluded", { excludedValues: ["EXCLUDED", "other"] }), + ).toBe('form.field.notAllowedValue: {"0":"excluded"}'); + expect( + validateString("excluded", { + excludedValues: ["EXCLUDED", "other"], + isCaseSensitive: true, + }), + ).toBe(true); + }); + + test("should ignore the edited value in duplicate checks", () => { + expect( + validateString("existing", { + existingValues: ["existing", "other"], + editedValue: "existing", + }), + ).toBe(true); + }); +}); + +describe("validatePassword", () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + test("should return true for a valid password", () => { + expect(validatePassword("ValidP@ssw0rd")).toBe(true); + }); + + test("should return an error for an empty password", () => { + expect(validatePassword("")).toBe("form.field.required"); + expect(validatePassword(" ")).toBe("form.field.required"); + }); + + test("should check minimum length", () => { + expect(validatePassword("Short1!")).toBe( + 'form.field.minLength: {"length":8}', + ); + }); + + test("should check maximum length", () => { + expect(validatePassword("A".repeat(51) + "a1!")).toBe( + 'form.field.maxLength: {"length":50}', + ); + }); + + test("should require lowercase letters", () => { + expect(validatePassword("UPPERCASE123!")).toBe( + "form.field.requireLowercase", + ); + }); + + test("should require uppercase letters", () => { + expect(validatePassword("lowercase123!")).toBe( + "form.field.requireUppercase", + ); + }); + + test("should require digits", () => { + expect(validatePassword("UpperAndLowercase!")).toBe( + "form.field.requireDigit", + ); + }); + + test("should require special characters", () => { + expect(validatePassword("UpperAndLowercase123")).toBe( + "form.field.requireSpecialChars", + ); + }); +}); diff --git a/webapp/src/utils/validationUtils.ts b/webapp/src/utils/validation/string.ts similarity index 59% rename from webapp/src/utils/validationUtils.ts rename to webapp/src/utils/validation/string.ts index f7b3014691..f70a1bb702 100644 --- a/webapp/src/utils/validationUtils.ts +++ b/webapp/src/utils/validation/string.ts @@ -13,13 +13,6 @@ */ import { t } from "i18next"; -import * as R from "ramda"; - -type ValidationResult = string | true; - -//////////////////////////////////////////////////////////////// -// String -//////////////////////////////////////////////////////////////// interface StringValidationOptions { existingValues?: string[]; @@ -55,7 +48,7 @@ interface StringValidationOptions { export function validateString( value: string, options?: StringValidationOptions, -): ValidationResult { +): string | true { const { existingValues = [], excludedValues = [], @@ -129,7 +122,7 @@ export function validateString( * @param password - The password to validate. * @returns True if validation is successful, or a localized error message if it fails. */ -export function validatePassword(password: string): ValidationResult { +export function validatePassword(password: string): string | true { const trimmedPassword = password.trim(); if (!trimmedPassword) { @@ -163,143 +156,6 @@ export function validatePassword(password: string): ValidationResult { return true; } -//////////////////////////////////////////////////////////////// -// Number -//////////////////////////////////////////////////////////////// - -interface NumberValidationOptions { - min?: number; - max?: number; - integer?: boolean; -} - -/** - * Validates a number against specified numerical limits. - * - * @example - * validateNumber(5, { min: 0, max: 10 }); // true - * validateNumber(9, { min: 10, max: 20 }); // Error message - * - * - * @example With currying. - * const fn = validateNumber({ min: 0, max: 10 }); - * fn(5); // true - * fn(11); // Error message - * - * @param value - The number to validate. - * @param [options] - Configuration options for validation. - * @param [options.min=Number.MIN_SAFE_INTEGER] - Minimum allowed value. - * @param [options.max=Number.MAX_SAFE_INTEGER] - Maximum allowed value. - * @returns True if validation is successful, or a localized error message if it fails. - */ -export function validateNumber( - value: number, - options?: NumberValidationOptions, -): ValidationResult; - -export function validateNumber( - options?: NumberValidationOptions, -): (value: number) => ValidationResult; - -export function validateNumber( - valueOrOpts?: number | NumberValidationOptions, - options: NumberValidationOptions = {}, -): ValidationResult | ((value: number) => ValidationResult) { - if (typeof valueOrOpts !== "number") { - return (v: number) => validateNumber(v, valueOrOpts); - } - - const value = valueOrOpts; - - if (!isFinite(value)) { - return t("form.field.invalidNumber", { value }); - } - - const { - min = Number.MIN_SAFE_INTEGER, - max = Number.MAX_SAFE_INTEGER, - integer = false, - } = options; - - if (integer && !Number.isInteger(valueOrOpts)) { - return t("form.field.mustBeInteger"); - } - - if (value < min) { - return t("form.field.minValue", { 0: min }); - } - - if (value > max) { - return t("form.field.maxValue", { 0: max }); - } - - return true; -} - -//////////////////////////////////////////////////////////////// -// Array -//////////////////////////////////////////////////////////////// - -interface ArrayValidationOptions { - allowEmpty?: boolean; - allowDuplicate?: boolean; -} - -/** - * Validates an array against specified criteria. - * This function checks for duplicate values in the array. - * - * @example - * validateArray([1, 2, 3], { allowDuplicate: false }); // true - * validateArray([1, 1, 2, 3], { allowDuplicate: false }); // Error message - * - * - * @example With currying. - * const fn = validateArray({ allowDuplicate: false }); - * fn([1, 2, 3]); // true - * fn([1, 1, 2, 3]); // Error message - * - * @param value - The array to validate. - * @param [options] - Configuration options for validation. - * @param [options.allowEmpty=false] - Sets whether empty array is allowed or not. - * @param [options.allowDuplicate=false] - Sets whether duplicate values are allowed or not. - * @returns True if validation is successful, or a localized error message if it fails. - */ -export function validateArray( - value: T[], - options?: ArrayValidationOptions, -): ValidationResult; - -export function validateArray( - options?: ArrayValidationOptions, -): (value: T[]) => ValidationResult; - -export function validateArray( - valueOrOpts?: T[] | ArrayValidationOptions, - options: ArrayValidationOptions = {}, -): ValidationResult | ((value: T[]) => ValidationResult) { - if (!Array.isArray(valueOrOpts)) { - return (v: T[]) => validateArray(v, valueOrOpts); - } - - const value = valueOrOpts; - const { allowEmpty, allowDuplicate } = options; - - if (!value.length && !allowEmpty) { - return t("form.field.required"); - } - - if (!allowDuplicate && R.uniq(value).length !== value.length) { - return t("form.field.duplicateNotAllowed"); - } - - return true; -} - -//////////////////////////////////////////////////////////////// -// Utils -//////////////////////////////////////////////////////////////// - // Escape special characters in specialChars function escapeSpecialChars(chars: string) { return chars.replace(/[-\\^$*+?.()|[\]{}]/g, "\\$&"); From 1204331e54b78746f18b78cc6035fef76cb649eb Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Fri, 18 Oct 2024 10:10:00 +0200 Subject: [PATCH 041/182] feat: enable relative imports --- webapp/tsconfig.json | 4 ++++ webapp/vite.config.ts | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/webapp/tsconfig.json b/webapp/tsconfig.json index c9e8d32271..8542081df4 100644 --- a/webapp/tsconfig.json +++ b/webapp/tsconfig.json @@ -9,6 +9,10 @@ ], "module": "ESNext", "skipLibCheck": true, + "baseUrl": ".", + "paths": { + "@/*": ["src/*"] + }, /* Bundler mode */ "moduleResolution": "bundler", diff --git a/webapp/vite.config.ts b/webapp/vite.config.ts index 9b7a5b5cef..73b06c2ba0 100644 --- a/webapp/vite.config.ts +++ b/webapp/vite.config.ts @@ -14,6 +14,7 @@ import { defineConfig } from "vite"; import react from "@vitejs/plugin-react-swc"; +import path from "path"; const SERVER_URL = "http://localhost:8080"; @@ -29,6 +30,11 @@ export default defineConfig(({ mode }) => { // Not working in dev without `JSON.stringify` __BUILD_TIMESTAMP__: JSON.stringify(Date.now()), }, + resolve: { + alias: { + "@": path.resolve(__dirname, "./src"), // Relative imports from the src directory + }, + }, esbuild: { // Remove logs safely when building production bundle // https://esbuild.github.io/api/#pure From 3754c3d6a0dfb02c233d1bc12f090d302d64c687 Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Fri, 18 Oct 2024 10:15:10 +0200 Subject: [PATCH 042/182] refactor: update imports --- .../Settings/Groups/dialog/GroupFormDialog/GroupForm.tsx | 2 +- .../App/Settings/Users/dialog/UserFormDialog/UserForm.tsx | 5 +---- .../HomeView/InformationView/CreateVariantDialog.tsx | 2 +- webapp/src/components/App/Singlestudy/PropertiesDialog.tsx | 2 +- .../explore/Configuration/AdequacyPatch/Fields.tsx | 2 +- .../Modelization/Areas/Hydro/Allocation/AllocationField.tsx | 2 +- .../Areas/Hydro/Correlation/CorrelationField.tsx | 2 +- .../explore/Modelization/Areas/Storages/Fields.tsx | 2 +- .../explore/Modelization/Areas/Thermal/Fields.tsx | 2 +- .../explore/Modelization/BindingConstraints/AddDialog.tsx | 2 +- .../BindingConstView/ConstraintFields.tsx | 2 +- .../explore/Modelization/Map/CreateAreaDialog.tsx | 2 +- .../Map/MapConfig/Districts/CreateDistrictDialog.tsx | 2 +- .../Modelization/Map/MapConfig/Layers/CreateLayerDialog.tsx | 2 +- .../Modelization/Map/MapConfig/Layers/UpdateLayerDialog.tsx | 2 +- .../TableModeList/dialogs/TableTemplateFormDialog.tsx | 6 ++---- .../explore/Xpansion/Candidates/CreateCandidateDialog.tsx | 2 +- .../src/components/common/GroupedDataTable/CreateDialog.tsx | 2 +- .../components/common/GroupedDataTable/DuplicateDialog.tsx | 2 +- 19 files changed, 20 insertions(+), 25 deletions(-) diff --git a/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/GroupForm.tsx b/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/GroupForm.tsx index 9027ee1bcd..87e47d9db2 100644 --- a/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/GroupForm.tsx +++ b/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/GroupForm.tsx @@ -49,7 +49,7 @@ import { getGroups, getUsers } from "../../../../../../services/api/user"; import { getAuthUser } from "../../../../../../redux/selectors"; import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; import { UseFormReturnPlus } from "../../../../../common/Form/types"; -import { validateString } from "../../../../../../utils/validationUtils"; +import { validateString } from "@/utils/validation/string"; function GroupForm(props: UseFormReturnPlus) { const { diff --git a/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/UserForm.tsx b/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/UserForm.tsx index 9066989aa5..7607a4a00f 100644 --- a/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/UserForm.tsx +++ b/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/UserForm.tsx @@ -48,10 +48,7 @@ import usePromise from "../../../../../../hooks/usePromise"; import { getGroups, getUsers } from "../../../../../../services/api/user"; import { UserFormDialogProps } from "."; import { UseFormReturnPlus } from "../../../../../common/Form/types"; -import { - validatePassword, - validateString, -} from "../../../../../../utils/validationUtils"; +import { validatePassword, validateString } from "@/utils/validation/string"; interface Props extends UseFormReturnPlus { onlyPermissions?: UserFormDialogProps["onlyPermissions"]; diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/CreateVariantDialog.tsx b/webapp/src/components/App/Singlestudy/HomeView/InformationView/CreateVariantDialog.tsx index 06526db96e..b4b4cd8c4d 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/CreateVariantDialog.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/CreateVariantDialog.tsx @@ -24,7 +24,7 @@ import StringFE from "../../../../common/fieldEditors/StringFE"; import Fieldset from "../../../../common/Fieldset"; import SelectFE from "../../../../common/fieldEditors/SelectFE"; import { SubmitHandlerPlus } from "../../../../common/Form/types"; -import { validateString } from "../../../../../utils/validationUtils"; +import { validateString } from "@/utils/validation/string"; interface Props { parentId: string; diff --git a/webapp/src/components/App/Singlestudy/PropertiesDialog.tsx b/webapp/src/components/App/Singlestudy/PropertiesDialog.tsx index c1600bf399..39520299c4 100644 --- a/webapp/src/components/App/Singlestudy/PropertiesDialog.tsx +++ b/webapp/src/components/App/Singlestudy/PropertiesDialog.tsx @@ -37,7 +37,7 @@ import Fieldset from "../../common/Fieldset"; import { SubmitHandlerPlus } from "../../common/Form/types"; import useAppDispatch from "../../../redux/hooks/useAppDispatch"; import { updateStudy } from "../../../redux/ducks/studies"; -import { validateString } from "../../../utils/validationUtils"; +import { validateString } from "@/utils/validation/string"; const logErr = debug("antares:createstudyform:error"); diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/Fields.tsx index 8c6e2e411b..cbdccd3911 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/Fields.tsx @@ -22,7 +22,7 @@ import Fieldset from "../../../../../common/Fieldset"; import { useFormContextPlus } from "../../../../../common/Form"; import { AdequacyPatchFormFields, PRICE_TAKING_ORDER_OPTIONS } from "./utils"; import { StudyMetadata } from "../../../../../../common/types"; -import { validateNumber } from "../../../../../../utils/validationUtils"; +import { validateNumber } from "@/utils/validation/number"; function Fields() { const { t } = useTranslation(); diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/AllocationField.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/AllocationField.tsx index f8cb147368..b95d995a48 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/AllocationField.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/AllocationField.tsx @@ -17,7 +17,7 @@ import { FieldArrayWithId } from "react-hook-form"; import NumberFE from "../../../../../../../common/fieldEditors/NumberFE"; import { useFormContextPlus } from "../../../../../../../common/Form"; import { AllocationFormFields } from "./utils"; -import { validateNumber } from "../../../../../../../../utils/validationUtils"; +import { validateNumber } from "@/utils/validation/number"; interface Props { field: FieldArrayWithId; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/CorrelationField.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/CorrelationField.tsx index b1cdec1ac0..0dd9f41016 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/CorrelationField.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/CorrelationField.tsx @@ -20,7 +20,7 @@ import { CorrelationFormFields } from "./utils"; import { useFormContextPlus } from "../../../../../../../common/Form"; import useAppSelector from "../../../../../../../../redux/hooks/useAppSelector"; import { getCurrentArea } from "../../../../../../../../redux/selectors"; -import { validateNumber } from "../../../../../../../../utils/validationUtils"; +import { validateNumber } from "@/utils/validation/number"; interface Props { field: FieldArrayWithId; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Fields.tsx index c492d318de..62f351772a 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Fields.tsx @@ -23,7 +23,7 @@ import { useFormContextPlus } from "../../../../../../common/Form"; import { STORAGE_GROUPS, Storage } from "./utils"; import { useOutletContext } from "react-router"; import { StudyMetadata } from "../../../../../../../common/types"; -import { validateNumber } from "../../../../../../../utils/validationUtils"; +import { validateNumber } from "@/utils/validation/number"; function Fields() { const [t] = useTranslation(); diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Fields.tsx index c8c15c8780..3aaf182b48 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Fields.tsx @@ -30,7 +30,7 @@ import { TS_GENERATION_OPTIONS, TS_LAW_OPTIONS, } from "./utils"; -import { validateNumber } from "../../../../../../../utils/validationUtils"; +import { validateNumber } from "@/utils/validation/number"; function Fields() { const [t] = useTranslation(); diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/AddDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/AddDialog.tsx index ca5540e438..a9ac5833c6 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/AddDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/AddDialog.tsx @@ -32,10 +32,10 @@ import SelectFE from "../../../../../common/fieldEditors/SelectFE"; import StringFE from "../../../../../common/fieldEditors/StringFE"; import SwitchFE from "../../../../../common/fieldEditors/SwitchFE"; import { StudyMetadata } from "../../../../../../common/types"; -import { validateString } from "../../../../../../utils/validationUtils"; import { setCurrentBindingConst } from "../../../../../../redux/ducks/studySyntheses"; import useAppDispatch from "../../../../../../redux/hooks/useAppDispatch"; import { useOutletContext } from "react-router"; +import { validateString } from "@/utils/validation/string"; interface Props { open: boolean; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintFields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintFields.tsx index 6eca935f4c..49063ced45 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintFields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintFields.tsx @@ -27,10 +27,10 @@ import SwitchFE from "../../../../../../common/fieldEditors/SwitchFE"; import { useFormContextPlus } from "../../../../../../common/Form"; import { useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; -import { validateString } from "../../../../../../../utils/validationUtils"; import Matrix from "./Matrix"; import { Box, Button } from "@mui/material"; import { Dataset } from "@mui/icons-material"; +import { validateString } from "@/utils/validation/string"; interface Props { study: StudyMetadata; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/CreateAreaDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/CreateAreaDialog.tsx index 3acf5026ea..0bc219aedb 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/CreateAreaDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/CreateAreaDialog.tsx @@ -19,8 +19,8 @@ import StringFE from "../../../../../common/fieldEditors/StringFE"; import { SubmitHandlerPlus } from "../../../../../common/Form/types"; import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; import { getAreas } from "../../../../../../redux/selectors"; -import { validateString } from "../../../../../../utils/validationUtils"; import Fieldset from "../../../../../common/Fieldset"; +import { validateString } from "@/utils/validation/string"; interface Props { studyId: string; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/CreateDistrictDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/CreateDistrictDialog.tsx index 133f17c19e..6424457700 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/CreateDistrictDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/CreateDistrictDialog.tsx @@ -26,7 +26,7 @@ import useAppDispatch from "../../../../../../../../redux/hooks/useAppDispatch"; import { createStudyMapDistrict } from "../../../../../../../../redux/ducks/studyMaps"; import useAppSelector from "../../../../../../../../redux/hooks/useAppSelector"; import { getStudyMapDistrictsById } from "../../../../../../../../redux/selectors"; -import { validateString } from "../../../../../../../../utils/validationUtils"; +import { validateString } from "@/utils/validation/string"; interface Props { open: boolean; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/CreateLayerDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/CreateLayerDialog.tsx index 90b4ee39a1..0fb956b319 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/CreateLayerDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/CreateLayerDialog.tsx @@ -26,7 +26,7 @@ import useAppDispatch from "../../../../../../../../redux/hooks/useAppDispatch"; import useEnqueueErrorSnackbar from "../../../../../../../../hooks/useEnqueueErrorSnackbar"; import useAppSelector from "../../../../../../../../redux/hooks/useAppSelector"; import { getStudyMapLayersById } from "../../../../../../../../redux/selectors"; -import { validateString } from "../../../../../../../../utils/validationUtils"; +import { validateString } from "@/utils/validation/string"; interface Props { open: boolean; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/UpdateLayerDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/UpdateLayerDialog.tsx index 643e74cb33..f2a6db5817 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/UpdateLayerDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/UpdateLayerDialog.tsx @@ -31,7 +31,7 @@ import { updateStudyMapLayer, } from "../../../../../../../../redux/ducks/studyMaps"; import useAppDispatch from "../../../../../../../../redux/hooks/useAppDispatch"; -import { validateString } from "../../../../../../../../utils/validationUtils"; +import { validateString } from "@/utils/validation/string"; interface Props { open: boolean; diff --git a/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/TableTemplateFormDialog.tsx b/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/TableTemplateFormDialog.tsx index 8966d8014f..89cea8497c 100644 --- a/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/TableTemplateFormDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/TableTemplateFormDialog.tsx @@ -23,11 +23,9 @@ import SelectFE from "../../../../../common/fieldEditors/SelectFE"; import StringFE from "../../../../../common/fieldEditors/StringFE"; import { getTableColumnsForType, type TableTemplate } from "../utils"; import { TABLE_MODE_TYPES } from "../../../../../../services/api/studies/tableMode/constants"; -import { - validateArray, - validateString, -} from "../../../../../../utils/validationUtils"; import { useMemo } from "react"; +import { validateArray } from "@/utils/validation/array"; +import { validateString } from "@/utils/validation/string"; export interface TableTemplateFormDialogProps extends Pick< diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/CreateCandidateDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/CreateCandidateDialog.tsx index 8cda654de0..b4c09015e7 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/CreateCandidateDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/CreateCandidateDialog.tsx @@ -25,7 +25,7 @@ import Fieldset from "../../../../../common/Fieldset"; import SelectFE from "../../../../../common/fieldEditors/SelectFE"; import NumberFE from "../../../../../common/fieldEditors/NumberFE"; import { SubmitHandlerPlus } from "../../../../../common/Form/types"; -import { validateString } from "../../../../../../utils/validationUtils"; +import { validateString } from "@/utils/validation/string"; interface PropType { open: boolean; diff --git a/webapp/src/components/common/GroupedDataTable/CreateDialog.tsx b/webapp/src/components/common/GroupedDataTable/CreateDialog.tsx index 60a23e7c58..858ac835e4 100644 --- a/webapp/src/components/common/GroupedDataTable/CreateDialog.tsx +++ b/webapp/src/components/common/GroupedDataTable/CreateDialog.tsx @@ -18,9 +18,9 @@ import StringFE from "../fieldEditors/StringFE"; import Fieldset from "../Fieldset"; import { SubmitHandlerPlus } from "../Form/types"; import SelectFE from "../fieldEditors/SelectFE"; -import { validateString } from "../../../utils/validationUtils"; import type { TRow } from "./types"; import { useTranslation } from "react-i18next"; +import { validateString } from "@/utils/validation/string"; interface Props { open: boolean; diff --git a/webapp/src/components/common/GroupedDataTable/DuplicateDialog.tsx b/webapp/src/components/common/GroupedDataTable/DuplicateDialog.tsx index 5043bc8d53..f933e94ed7 100644 --- a/webapp/src/components/common/GroupedDataTable/DuplicateDialog.tsx +++ b/webapp/src/components/common/GroupedDataTable/DuplicateDialog.tsx @@ -18,7 +18,7 @@ import Fieldset from "../Fieldset"; import FormDialog from "../dialogs/FormDialog"; import { SubmitHandlerPlus } from "../Form/types"; import StringFE from "../fieldEditors/StringFE"; -import { validateString } from "../../../utils/validationUtils"; +import { validateString } from "@/utils/validation/string"; interface Props { open: boolean; From 43429b615f67a2e50ff36740bc9213ce71445bf3 Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Fri, 18 Oct 2024 11:14:51 +0200 Subject: [PATCH 043/182] refactor: use `ValidationReturn` return type for all validators --- webapp/src/common/types.ts | 2 ++ webapp/src/utils/validation/array.ts | 9 ++++----- webapp/src/utils/validation/number.ts | 9 ++++----- webapp/src/utils/validation/string.ts | 5 +++-- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/webapp/src/common/types.ts b/webapp/src/common/types.ts index 20893f0abe..9966fdf62c 100644 --- a/webapp/src/common/types.ts +++ b/webapp/src/common/types.ts @@ -659,3 +659,5 @@ export interface TaskView { type: TaskType; status: string; } + +export type ValidationReturn = string | true; diff --git a/webapp/src/utils/validation/array.ts b/webapp/src/utils/validation/array.ts index 4e09e69013..d0edd43a15 100644 --- a/webapp/src/utils/validation/array.ts +++ b/webapp/src/utils/validation/array.ts @@ -12,11 +12,10 @@ * This file is part of the Antares project. */ +import { ValidationReturn } from "@/common/types"; import { t } from "i18next"; import * as R from "ramda"; -type ValidationResponse = string | true; - interface ArrayValidationOptions { allowEmpty?: boolean; allowDuplicate?: boolean; @@ -45,16 +44,16 @@ interface ArrayValidationOptions { export function validateArray( value: T[], options?: ArrayValidationOptions, -): ValidationResponse; +): ValidationReturn; export function validateArray( options?: ArrayValidationOptions, -): (value: T[]) => ValidationResponse; +): (value: T[]) => ValidationReturn; export function validateArray( valueOrOpts?: T[] | ArrayValidationOptions, options: ArrayValidationOptions = {}, -): ValidationResponse | ((value: T[]) => ValidationResponse) { +): ValidationReturn | ((value: T[]) => ValidationReturn) { if (!Array.isArray(valueOrOpts)) { return (v: T[]) => validateArray(v, valueOrOpts); } diff --git a/webapp/src/utils/validation/number.ts b/webapp/src/utils/validation/number.ts index fff975b4bf..fd96c1502e 100644 --- a/webapp/src/utils/validation/number.ts +++ b/webapp/src/utils/validation/number.ts @@ -12,10 +12,9 @@ * This file is part of the Antares project. */ +import { ValidationReturn } from "@/common/types"; import { t } from "i18next"; -type ValidationResponse = string | true; - interface NumberValidationOptions { min?: number; max?: number; @@ -44,16 +43,16 @@ interface NumberValidationOptions { export function validateNumber( value: number, options?: NumberValidationOptions, -): ValidationResponse; +): ValidationReturn; export function validateNumber( options?: NumberValidationOptions, -): (value: number) => ValidationResponse; +): (value: number) => ValidationReturn; export function validateNumber( valueOrOpts?: number | NumberValidationOptions, options: NumberValidationOptions = {}, -): ValidationResponse | ((value: number) => ValidationResponse) { +): ValidationReturn | ((value: number) => ValidationReturn) { if (typeof valueOrOpts !== "number") { return (v: number) => validateNumber(v, valueOrOpts); } diff --git a/webapp/src/utils/validation/string.ts b/webapp/src/utils/validation/string.ts index f70a1bb702..bd9bdef1e8 100644 --- a/webapp/src/utils/validation/string.ts +++ b/webapp/src/utils/validation/string.ts @@ -12,6 +12,7 @@ * This file is part of the Antares project. */ +import { ValidationReturn } from "@/common/types"; import { t } from "i18next"; interface StringValidationOptions { @@ -48,7 +49,7 @@ interface StringValidationOptions { export function validateString( value: string, options?: StringValidationOptions, -): string | true { +): ValidationReturn { const { existingValues = [], excludedValues = [], @@ -122,7 +123,7 @@ export function validateString( * @param password - The password to validate. * @returns True if validation is successful, or a localized error message if it fails. */ -export function validatePassword(password: string): string | true { +export function validatePassword(password: string): ValidationReturn { const trimmedPassword = password.trim(); if (!trimmedPassword) { From a5d4231cb2520a09a43906549a68c59c8838c0e8 Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Tue, 22 Oct 2024 15:47:24 +0200 Subject: [PATCH 044/182] fix(bc): display matrix index according to frequency (#2196) Fix [ANT-2364] --- .../bindingconstraints/bindingcontraints.py | 9 ++++-- .../test_study_matrix_index.py | 30 ++++++++++++------- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/antarest/study/storage/rawstudy/model/filesystem/root/input/bindingconstraints/bindingcontraints.py b/antarest/study/storage/rawstudy/model/filesystem/root/input/bindingconstraints/bindingcontraints.py index afa55a3f17..28dba53eb5 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/root/input/bindingconstraints/bindingcontraints.py +++ b/antarest/study/storage/rawstudy/model/filesystem/root/input/bindingconstraints/bindingcontraints.py @@ -43,6 +43,11 @@ class BindingConstraints(FolderNode): def build(self) -> TREE: cfg = self.config + frequency_mapping = { + BindingConstraintFrequency.HOURLY: MatrixFrequency.HOURLY, + BindingConstraintFrequency.DAILY: MatrixFrequency.DAILY, + BindingConstraintFrequency.WEEKLY: MatrixFrequency.DAILY, + } if cfg.version < 870: default_matrices = { BindingConstraintFrequency.HOURLY: default_bc_hourly_86, @@ -53,7 +58,7 @@ def build(self) -> TREE: binding.id: InputSeriesMatrix( self.context, self.config.next_file(f"{binding.id}.txt"), - freq=MatrixFrequency(binding.time_step), + freq=frequency_mapping[binding.time_step], nb_columns=3, default_empty=default_matrices[binding.time_step], ) @@ -73,7 +78,7 @@ def build(self) -> TREE: children[matrix_id] = InputSeriesMatrix( self.context, self.config.next_file(f"{matrix_id}.txt"), - freq=MatrixFrequency(binding.time_step), + freq=frequency_mapping[binding.time_step], nb_columns=1 if term in ["lt", "gt"] else None, default_empty=default_matrices[binding.time_step], ) diff --git a/tests/integration/studies_blueprint/test_study_matrix_index.py b/tests/integration/studies_blueprint/test_study_matrix_index.py index 759b43131b..4f540f4c30 100644 --- a/tests/integration/studies_blueprint/test_study_matrix_index.py +++ b/tests/integration/studies_blueprint/test_study_matrix_index.py @@ -28,7 +28,7 @@ def test_get_study_matrix_index( user_access_token: str, internal_study_id: str, ) -> None: - user_access_token = {"Authorization": f"Bearer {user_access_token}"} + client.headers = {"Authorization": f"Bearer {user_access_token}"} # Check the matrix index for Thermal clusters # =========================================== @@ -36,7 +36,6 @@ def test_get_study_matrix_index( # Check the Common matrix index res = client.get( f"/v1/studies/{internal_study_id}/matrixindex", - headers=user_access_token, params={"path": "input/thermal/prepro/fr/01_solar/modulation"}, ) assert res.status_code == 200, res.json() @@ -52,9 +51,7 @@ def test_get_study_matrix_index( # Check the TS Generator matrix index res = client.get( - f"/v1/studies/{internal_study_id}/matrixindex", - headers=user_access_token, - params={"path": "input/thermal/prepro/fr/01_solar/data"}, + f"/v1/studies/{internal_study_id}/matrixindex", params={"path": "input/thermal/prepro/fr/01_solar/data"} ) assert res.status_code == 200, res.json() actual = res.json() @@ -69,9 +66,7 @@ def test_get_study_matrix_index( # Check the time series res = client.get( - f"/v1/studies/{internal_study_id}/matrixindex", - headers=user_access_token, - params={"path": "input/thermal/series/fr/01_solar/series"}, + f"/v1/studies/{internal_study_id}/matrixindex", params={"path": "input/thermal/series/fr/01_solar/series"} ) assert res.status_code == 200, res.json() actual = res.json() @@ -87,7 +82,7 @@ def test_get_study_matrix_index( # Check the default matrix index # ============================== - res = client.get(f"/v1/studies/{internal_study_id}/matrixindex", headers=user_access_token) + res = client.get(f"/v1/studies/{internal_study_id}/matrixindex") assert res.status_code == 200 actual = res.json() expected = { @@ -103,10 +98,25 @@ def test_get_study_matrix_index( res = client.get( f"/v1/studies/{internal_study_id}/matrixindex", - headers=user_access_token, params={"path": "output/20201014-1427eco/economy/mc-all/areas/es/details-daily"}, ) assert res.status_code == 200 actual = res.json() expected = {"first_week_size": 7, "start_date": "2018-01-01 00:00:00", "steps": 7, "level": "daily"} assert actual == expected + + # Check the matrix index for a weekly binding constraint + # ========================================================================= + + res = client.post( + f"/v1/studies/{internal_study_id}/bindingconstraints", json={"name": "bc_1", "timeStep": "weekly"} + ) + res.raise_for_status() + + res = client.get( + f"/v1/studies/{internal_study_id}/matrixindex", params={"path": "input/bindingconstraints/bc_1"} + ) + assert res.status_code == 200 + actual = res.json() + expected = {"first_week_size": 7, "start_date": "2018-01-01 00:00:00", "steps": 365, "level": "daily"} + assert actual == expected From 6985672370c8cf7eff716f2f882bda58ddbb839b Mon Sep 17 00:00:00 2001 From: Sylvain Leclerc Date: Tue, 22 Oct 2024 17:33:29 +0200 Subject: [PATCH 045/182] fix(docker): reduce docker image size (#2195) Not installing PyQt in docker image saves around 200 Mo. Not keeping pip cache saves again another ~200 Mo. Signed-off-by: Sylvain Leclerc --- .github/workflows/deploy.yml | 1 - Dockerfile | 4 ++-- README.md | 1 - requirements-desktop.txt | 4 ++++ requirements-dev.txt | 1 + requirements.txt | 1 - 6 files changed, 7 insertions(+), 5 deletions(-) create mode 100644 requirements-desktop.txt diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index e34aef58ae..b67a63c435 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -47,7 +47,6 @@ jobs: - name: 🐍 Install development dependencies run: | python -m pip install --upgrade pip - pip install pydantic --no-binary pydantic pip install -r requirements-dev.txt - name: 🐍 Install Windows dependencies diff --git a/Dockerfile b/Dockerfile index 975ef9b776..3cdb34dd06 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,8 +18,8 @@ COPY ./alembic.ini /alembic.ini RUN ./scripts/install-debug.sh -RUN pip3 install --upgrade pip \ - && pip3 install -r /conf/requirements.txt +RUN pip3 install --no-cache-dir --upgrade pip \ + && pip3 install --no-cache-dir -r /conf/requirements.txt ENTRYPOINT ["./scripts/start.sh"] diff --git a/README.md b/README.md index bd17aeae67..5ee6f28cf7 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,6 @@ Install back-end dependencies ```shell script python -m pip install --upgrade pip -pip install pydantic --no-binary pydantic pip install -r requirements.txt # use requirements-dev.txt if building a single binary with pyinstaller ``` diff --git a/requirements-desktop.txt b/requirements-desktop.txt new file mode 100644 index 0000000000..017ff7c8b3 --- /dev/null +++ b/requirements-desktop.txt @@ -0,0 +1,4 @@ +-r requirements.txt + +# PyQt is used for the systray app of desktop version +PyQt5~=5.15.6 diff --git a/requirements-dev.txt b/requirements-dev.txt index 973973dc76..462d77bb3c 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,4 +1,5 @@ -r requirements-test.txt +-r requirements-desktop.txt # Version of Black should match the versions set in `.github/workflows/main.yml` black~=23.7.0 isort~=5.12.0 diff --git a/requirements.txt b/requirements.txt index 0ddf9db1b4..eefa07d92f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -39,7 +39,6 @@ paramiko~=3.4.1 plyer~=2.0.0 psycopg2-binary==2.9.4 py7zr~=0.20.6 -PyQt5~=5.15.6 python-json-logger~=2.0.7 PyYAML~=5.4.1; python_version <= '3.9' PyYAML~=5.3.1; python_version > '3.9' From c2da8fbec7b2ce2377c24fa27bb0e4999a924882 Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Wed, 23 Oct 2024 10:55:55 +0200 Subject: [PATCH 046/182] fix(xpansion): fix typo inside backend api call (#2197) Fix [ANT-2368] --- webapp/src/services/api/xpansion.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/src/services/api/xpansion.ts b/webapp/src/services/api/xpansion.ts index 841d280d17..2746c90c2e 100644 --- a/webapp/src/services/api/xpansion.ts +++ b/webapp/src/services/api/xpansion.ts @@ -23,7 +23,7 @@ import client from "./client"; export const createXpansionConfiguration = async ( uuid: string, ): Promise => { - const res = await client.post(`/v1//studies/${uuid}/extensions/xpansion`); + const res = await client.post(`/v1/studies/${uuid}/extensions/xpansion`); return res.data; }; From dcb806630137fb1752357847c56a9a0946396ec5 Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Wed, 23 Oct 2024 14:21:32 +0200 Subject: [PATCH 047/182] fix(matrix): return empty index for empty matrices (#2198) --- antarest/matrixstore/uri_resolver_service.py | 53 ++++++++++--------- .../filesystem/matrix/input_series_matrix.py | 7 +-- .../test_fetch_raw_data.py | 2 +- .../hydro/common/capacity/test_capacity.py | 2 +- 4 files changed, 34 insertions(+), 30 deletions(-) diff --git a/antarest/matrixstore/uri_resolver_service.py b/antarest/matrixstore/uri_resolver_service.py index d35870029d..87dfdc89c4 100644 --- a/antarest/matrixstore/uri_resolver_service.py +++ b/antarest/matrixstore/uri_resolver_service.py @@ -51,31 +51,34 @@ def extract_id(uri: str) -> Optional[str]: def _resolve_matrix(self, id: str, formatted: bool = True) -> SUB_JSON: data = self.matrix_service.get(id) - if data: - if formatted: - return { - "data": data.data, - "index": data.index, - "columns": data.columns, - } - else: - df = pd.DataFrame( - data=data.data, - index=data.index, - columns=data.columns, - ) - if df.empty: - return "" - else: - csv = df.to_csv( - None, - sep="\t", - header=False, - index=False, - float_format="%.6f", - ) - return csv or "" - raise ValueError(f"id matrix {id} not found") + if not data: + raise ValueError(f"id matrix {id} not found") + if data.data == [[]]: + # Corresponds to an empty matrix, so we should return empty index and columns. + data.columns = [] + data.index = [] + + if formatted: + return { + "data": data.data, + "index": data.index, + "columns": data.columns, + } + df = pd.DataFrame( + data=data.data, + index=data.index, + columns=data.columns, + ) + if df.empty: + return "" + csv = df.to_csv( + None, + sep="\t", + header=False, + index=False, + float_format="%.6f", + ) + return csv or "" def build_matrix_uri(self, id: str) -> str: return f"matrix://{id}" diff --git a/antarest/study/storage/rawstudy/model/filesystem/matrix/input_series_matrix.py b/antarest/study/storage/rawstudy/model/filesystem/matrix/input_series_matrix.py index 88b7d2640a..2efb5a3f05 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/matrix/input_series_matrix.py +++ b/antarest/study/storage/rawstudy/model/filesystem/matrix/input_series_matrix.py @@ -46,8 +46,7 @@ def __init__( super().__init__(context=context, config=config, freq=freq) self.nb_columns = nb_columns if default_empty is None: - # Ensure that the matrix is a 2D matrix - self.default_empty = np.empty((1, 0), dtype=np.float64) + self.default_empty = None else: # Clone the template value and make it writable self.default_empty = np.copy(default_empty) @@ -96,7 +95,9 @@ def parse( return data except EmptyDataError: logger.warning(f"Empty file found when parsing {file_path}") - matrix = pd.DataFrame(self.default_empty) + matrix = pd.DataFrame() + if self.default_empty is not None: + matrix = pd.DataFrame(self.default_empty) return matrix if return_dataframe else cast(JSON, matrix.to_dict(orient="split")) def check_errors( diff --git a/tests/integration/raw_studies_blueprint/test_fetch_raw_data.py b/tests/integration/raw_studies_blueprint/test_fetch_raw_data.py index 8859a56469..b67fffe9e2 100644 --- a/tests/integration/raw_studies_blueprint/test_fetch_raw_data.py +++ b/tests/integration/raw_studies_blueprint/test_fetch_raw_data.py @@ -224,7 +224,7 @@ def test_get_study( headers=headers, ) assert res.status_code == 200, res.json() - assert res.json() == {"index": [0], "columns": [], "data": []} + assert res.json() == {"index": [], "columns": [], "data": []} # Some files can be corrupted user_folder_dir = study_dir.joinpath("user/bad") diff --git a/tests/storage/repository/filesystem/root/input/hydro/common/capacity/test_capacity.py b/tests/storage/repository/filesystem/root/input/hydro/common/capacity/test_capacity.py index ee2fb3bdbf..a57f618e1c 100644 --- a/tests/storage/repository/filesystem/root/input/hydro/common/capacity/test_capacity.py +++ b/tests/storage/repository/filesystem/root/input/hydro/common/capacity/test_capacity.py @@ -93,7 +93,7 @@ def test_build_input_hydro_common_capacity( value: InputSeriesMatrix actual_obj = { key: { - "default_empty": value.default_empty.tolist(), + "default_empty": [[]], "freq": value.freq, "nb_columns": value.nb_columns, } From 2b5795b0afa29b2a4b63851a39e1cfc35337ffd4 Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Thu, 24 Oct 2024 11:18:01 +0200 Subject: [PATCH 048/182] feat(tasks): add new endpoint to fetch task progress (#2191) --- .../b33e1f57a60c_add_task_progress.py | 26 ++++++++ antarest/core/interfaces/eventbus.py | 1 + antarest/core/tasks/model.py | 3 + antarest/core/tasks/service.py | 16 ++++- antarest/core/tasks/web.py | 21 +++++- antarest/launcher/service.py | 1 + antarest/matrixstore/service.py | 1 + antarest/study/service.py | 10 +++ antarest/study/storage/rawstudy/watcher.py | 1 + .../variantstudy/variant_study_service.py | 2 + tests/conftest_services.py | 1 + tests/core/test_tasks.py | 65 +++++++++++++++++++ .../variant_blueprint/test_thermal_cluster.py | 1 + tests/storage/conftest.py | 1 + tests/storage/test_service.py | 3 + 15 files changed, 148 insertions(+), 5 deletions(-) create mode 100644 alembic/versions/b33e1f57a60c_add_task_progress.py diff --git a/alembic/versions/b33e1f57a60c_add_task_progress.py b/alembic/versions/b33e1f57a60c_add_task_progress.py new file mode 100644 index 0000000000..0b9719788d --- /dev/null +++ b/alembic/versions/b33e1f57a60c_add_task_progress.py @@ -0,0 +1,26 @@ +"""add_task_progress + +Revision ID: b33e1f57a60c +Revises: 490b80a84bb5 +Create Date: 2024-10-17 14:17:50.774587 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'b33e1f57a60c' +down_revision = '490b80a84bb5' +branch_labels = None +depends_on = None + + +def upgrade(): + with op.batch_alter_table('taskjob', schema=None) as batch_op: + batch_op.add_column(sa.Column('progress', sa.Integer(), nullable=True)) + + +def downgrade(): + with op.batch_alter_table('taskjob', schema=None) as batch_op: + batch_op.drop_column('progress') diff --git a/antarest/core/interfaces/eventbus.py b/antarest/core/interfaces/eventbus.py index 6057a3bbb3..c6e36a4b80 100644 --- a/antarest/core/interfaces/eventbus.py +++ b/antarest/core/interfaces/eventbus.py @@ -46,6 +46,7 @@ class EventType(str, Enum): WORKER_TASK_STARTED = "WORKER_TASK_STARTED" WORKER_TASK_ENDED = "WORKER_TASK_ENDED" LAUNCH_PROGRESS = "LAUNCH_PROGRESS" + TS_GENERATION_PROGRESS = "TS_GENERATION_PROGRESS" class EventChannelDirectory: diff --git a/antarest/core/tasks/model.py b/antarest/core/tasks/model.py index 9bd921fd0c..10f7ef0d34 100644 --- a/antarest/core/tasks/model.py +++ b/antarest/core/tasks/model.py @@ -91,6 +91,7 @@ class TaskDTO(AntaresBaseModel, extra="forbid"): logs: t.Optional[t.List[TaskLogDTO]] = None type: t.Optional[str] = None ref_id: t.Optional[str] = None + progress: t.Optional[int] = None class TaskListFilter(AntaresBaseModel, extra="forbid"): @@ -143,6 +144,7 @@ class TaskJob(Base): # type: ignore result: t.Optional[str] = Column(String(), nullable=True, default=None) result_status: t.Optional[bool] = Column(Boolean(), nullable=True, default=None) type: t.Optional[str] = Column(String(), nullable=True, default=None, index=True) + progress: t.Optional[int] = Column(Integer(), nullable=True, default=None) owner_id: int = Column( Integer(), ForeignKey("identities.id", name="fk_taskjob_identity_id", ondelete="SET NULL"), @@ -191,6 +193,7 @@ def to_dto(self, with_logs: bool = False) -> TaskDTO: logs=sorted([log.to_dto() for log in self.logs], key=lambda log: log.id) if with_logs else None, type=self.type, ref_id=self.ref_id, + progress=self.progress, ) def __eq__(self, other: t.Any) -> bool: diff --git a/antarest/core/tasks/service.py b/antarest/core/tasks/service.py index e4855e01c3..2b8bfb725d 100644 --- a/antarest/core/tasks/service.py +++ b/antarest/core/tasks/service.py @@ -69,6 +69,7 @@ def add_task( name: t.Optional[str], task_type: t.Optional[TaskType], ref_id: t.Optional[str], + progress: t.Optional[int], custom_event_messages: t.Optional[CustomTaskEventMessages], request_params: RequestParameters, ) -> str: @@ -193,7 +194,7 @@ def add_worker_task( logger.warning(f"Failed to find configured remote worker for task queue {task_queue}") return None - task = self._create_task(name, task_type, ref_id, request_params) + task = self._create_task(name, task_type, ref_id, None, request_params) self._launch_task( self._create_worker_task(str(task.id), task_queue, task_args), task, @@ -208,10 +209,11 @@ def add_task( name: t.Optional[str], task_type: t.Optional[TaskType], ref_id: t.Optional[str], + progress: t.Optional[int], custom_event_messages: t.Optional[CustomTaskEventMessages], request_params: RequestParameters, ) -> str: - task = self._create_task(name, task_type, ref_id, request_params) + task = self._create_task(name, task_type, ref_id, progress, request_params) self._launch_task(action, task, custom_event_messages, request_params) return str(task.id) @@ -220,6 +222,7 @@ def _create_task( name: t.Optional[str], task_type: t.Optional[TaskType], ref_id: t.Optional[str], + progress: t.Optional[int], request_params: RequestParameters, ) -> TaskJob: if not request_params.user: @@ -231,6 +234,7 @@ def _create_task( owner_id=request_params.user.impersonator, type=task_type, ref_id=ref_id, + progress=progress, ) ) @@ -437,3 +441,11 @@ def _run_task( channel=EventChannelDirectory.TASK + task_id, ) ) + + def get_task_progress(self, task_id: str, params: RequestParameters) -> t.Optional[int]: + task = self.repo.get_or_raise(task_id) + user = params.user + if user and (user.is_site_admin() or user.is_admin_token() or task.owner_id == user.impersonator): + return task.progress + else: + raise UserHasNotPermissionError() diff --git a/antarest/core/tasks/web.py b/antarest/core/tasks/web.py index 4d8fa77a93..19c7e8440e 100644 --- a/antarest/core/tasks/web.py +++ b/antarest/core/tasks/web.py @@ -13,7 +13,7 @@ import concurrent.futures import http import logging -from typing import Any +import typing as t from fastapi import APIRouter, Depends, HTTPException @@ -47,7 +47,7 @@ def create_tasks_api(service: TaskJobService, config: Config) -> APIRouter: def list_tasks( filter: TaskListFilter, current_user: JWTUser = Depends(auth.get_current_user), - ) -> Any: + ) -> t.Any: request_params = RequestParameters(user=current_user) return service.list_tasks(filter, request_params) @@ -99,8 +99,23 @@ def get_task( def cancel_task( task_id: str, current_user: JWTUser = Depends(auth.get_current_user), - ) -> Any: + ) -> t.Any: request_params = RequestParameters(user=current_user) return service.cancel_task(task_id, request_params, dispatch=True) + @bp.get( + "/tasks/{task_id}/progress", + tags=[APITag.tasks], + summary="Retrieve task progress from task id", + response_model=t.Optional[int], + ) + def get_progress(task_id: str, current_user: JWTUser = Depends(auth.get_current_user)) -> t.Optional[int]: + sanitized_task_id = sanitize_uuid(task_id) + logger.info( + f"Fetching task progress of task {sanitized_task_id}", + extra={"user": current_user.id}, + ) + params = RequestParameters(user=current_user) + return service.get_task_progress(sanitized_task_id, params) + return bp diff --git a/antarest/launcher/service.py b/antarest/launcher/service.py index 68be0b65a8..c03902eecb 100644 --- a/antarest/launcher/service.py +++ b/antarest/launcher/service.py @@ -612,6 +612,7 @@ def export_task(_: TaskUpdateNotifier) -> TaskResult: export_name, task_type=TaskType.EXPORT, ref_id=None, + progress=None, custom_event_messages=None, request_params=params, ) diff --git a/antarest/matrixstore/service.py b/antarest/matrixstore/service.py index 7e9450fdec..aae9a52cca 100644 --- a/antarest/matrixstore/service.py +++ b/antarest/matrixstore/service.py @@ -530,6 +530,7 @@ def export_task(notifier: TaskUpdateNotifier) -> TaskResult: export_name, task_type=TaskType.EXPORT, ref_id=None, + progress=None, custom_event_messages=None, request_params=params, ) diff --git a/antarest/study/service.py b/antarest/study/service.py index 247ff4c8f3..436f7af64d 100644 --- a/antarest/study/service.py +++ b/antarest/study/service.py @@ -991,6 +991,7 @@ def copy_task(notifier: TaskUpdateNotifier) -> TaskResult: f"Study {src_study.name} ({src_uuid}) copy", task_type=TaskType.COPY, ref_id=src_study.id, + progress=None, custom_event_messages=None, request_params=params, ) @@ -1056,6 +1057,7 @@ def export_task(notifier: TaskUpdateNotifier) -> TaskResult: export_name, task_type=TaskType.EXPORT, ref_id=study.id, + progress=None, custom_event_messages=None, request_params=params, ) @@ -1129,6 +1131,7 @@ def export_task(notifier: TaskUpdateNotifier) -> TaskResult: export_name, task_type=TaskType.EXPORT, ref_id=study.id, + progress=None, custom_event_messages=None, request_params=params, ) @@ -1300,6 +1303,7 @@ def export_task(_notifier: TaskUpdateNotifier) -> TaskResult: export_name, task_type=TaskType.EXPORT, ref_id=study.id, + progress=None, custom_event_messages=None, request_params=params, ) @@ -2013,6 +2017,7 @@ def archive_task(notifier: TaskUpdateNotifier) -> TaskResult: f"Study {study.name} archiving", task_type=TaskType.ARCHIVE, ref_id=study.id, + progress=None, custom_event_messages=None, request_params=params, ) @@ -2059,6 +2064,7 @@ def unarchive_task(notifier: TaskUpdateNotifier) -> TaskResult: f"Study {study.name} unarchiving", task_type=TaskType.UNARCHIVE, ref_id=study.id, + progress=None, custom_event_messages=None, request_params=params, ) @@ -2362,6 +2368,7 @@ def archive_output_task( task_name, task_type=TaskType.ARCHIVE, ref_id=study.id, + progress=None, custom_event_messages=None, request_params=params, ) @@ -2438,6 +2445,7 @@ def unarchive_output_task( task_name, task_type=TaskType.UNARCHIVE, ref_id=study.id, + progress=None, custom_event_messages=None, request_params=params, ) @@ -2469,6 +2477,7 @@ def generate_timeseries(self, study: Study, params: RequestParameters) -> str: task_name, task_type=TaskType.THERMAL_CLUSTER_SERIES_GENERATION, ref_id=study.id, + progress=0, custom_event_messages=None, request_params=params, ) @@ -2528,6 +2537,7 @@ def upgrade_study( task_name, task_type=TaskType.UPGRADE_STUDY, ref_id=study.id, + progress=None, custom_event_messages=None, request_params=params, ) diff --git a/antarest/study/storage/rawstudy/watcher.py b/antarest/study/storage/rawstudy/watcher.py index b524c8cb8e..5648629090 100644 --- a/antarest/study/storage/rawstudy/watcher.py +++ b/antarest/study/storage/rawstudy/watcher.py @@ -195,6 +195,7 @@ def scan_task(notifier: TaskUpdateNotifier) -> TaskResult: name=f"Scanning {workspace}/{path}", task_type=TaskType.SCAN, ref_id=None, + progress=None, custom_event_messages=None, request_params=params, ) diff --git a/antarest/study/storage/variantstudy/variant_study_service.py b/antarest/study/storage/variantstudy/variant_study_service.py index 83491c68d7..17da76fffb 100644 --- a/antarest/study/storage/variantstudy/variant_study_service.py +++ b/antarest/study/storage/variantstudy/variant_study_service.py @@ -639,6 +639,7 @@ def callback(notifier: TaskUpdateNotifier) -> TaskResult: name=f"Generation of {metadata.id} study", task_type=TaskType.VARIANT_GENERATION, ref_id=study_id, + progress=None, custom_event_messages=CustomTaskEventMessages(start=metadata.id, running=metadata.id, end=metadata.id), request_params=RequestParameters(DEFAULT_ADMIN_USER), ) @@ -1082,6 +1083,7 @@ def clear_all_snapshots(self, retention_time: timedelta, params: t.Optional[Requ task_name, task_type=TaskType.SNAPSHOT_CLEARING, ref_id=None, + progress=None, custom_event_messages=None, request_params=params, ) diff --git a/tests/conftest_services.py b/tests/conftest_services.py index 24d94acafb..70abcd6007 100644 --- a/tests/conftest_services.py +++ b/tests/conftest_services.py @@ -85,6 +85,7 @@ def add_task( name: t.Optional[str], task_type: t.Optional[TaskType], ref_id: t.Optional[str], + progress: t.Optional[int], custom_event_messages: t.Optional[CustomTaskEventMessages], request_params: RequestParameters, ) -> str: diff --git a/tests/core/test_tasks.py b/tests/core/test_tasks.py index 668333e540..3ae45525c5 100644 --- a/tests/core/test_tasks.py +++ b/tests/core/test_tasks.py @@ -17,6 +17,7 @@ from unittest.mock import ANY, Mock import pytest +from fastapi import HTTPException from sqlalchemy import create_engine # type: ignore from sqlalchemy.engine.base import Engine # type: ignore from sqlalchemy.orm import Session, sessionmaker # type: ignore @@ -119,6 +120,7 @@ def test_service(core_config: Config, event_bus: IEventBus, admin_user: JWTUser) }, "status": TaskStatus.FAILED, "type": None, + "progress": None, } assert res.model_dump() == expected @@ -135,6 +137,7 @@ def action_fail(update_msg: t.Callable[[str], None]) -> TaskResult: None, None, None, + None, RequestParameters(user=admin_user), ) service.await_task(failed_id, timeout_sec=2) @@ -163,6 +166,7 @@ def action_ok(update_msg: t.Callable[[str], None]) -> TaskResult: None, None, None, + None, request_params=RequestParameters(user=admin_user), ) service.await_task(ok_id, timeout_sec=2) @@ -375,3 +379,64 @@ def test_cancel_orphan_tasks( assert updated_task_job.result_status == result_status assert updated_task_job.result_msg == result_msg assert (datetime.datetime.utcnow() - updated_task_job.completion_date).seconds <= max_diff_seconds + + +def test_get_progress(db_session: Session, admin_user: JWTUser, core_config: Config, event_bus: IEventBus) -> None: + # Prepare two users in the database + user1_id = 9 + db_session.add(User(id=user1_id, name="John")) + user2_id = 10 + db_session.add(User(id=user2_id, name="Jane")) + db_session.commit() + + # Create a RawStudy in the database + study_id = "e34fe4d5-5964-4ef2-9baf-fad66dadc512" + db_session.add(RawStudy(id=study_id, name="foo", version="860")) + db_session.commit() + + # Create a TaskJobService + task_job_repo = TaskJobRepository(db_session) + + # User 1 launches a ts generation + first_task = TaskJob( + name="ts_gen_1", + owner_id=user1_id, + type=TaskType.THERMAL_CLUSTER_SERIES_GENERATION, + ref_id=study_id, + progress=40, + ) + first_task = task_job_repo.save(first_task) + assert first_task.progress == 40 + assert first_task.ref_id == study_id + + # User 2 launches another generation + second_task = TaskJob( + name="ts_gen_2", owner_id=user2_id, ref_id=study_id, type=TaskType.THERMAL_CLUSTER_SERIES_GENERATION + ) + second_task = task_job_repo.save(second_task) + assert second_task.progress is None + + # Create a TaskJobService + service = TaskJobService(config=core_config, repository=task_job_repo, event_bus=event_bus) + + # Asserts the progress cannot be fetched by users that didn't launch it + user_2 = JWTUser(id=user2_id, type="user", impersonator=user2_id) + for user in [None, user_2]: + with pytest.raises(UserHasNotPermissionError): + service.get_task_progress(first_task.id, RequestParameters(user)) + + # Asserts admin and user_1 can fetch the first_task progress + user_1 = JWTUser(id=user1_id, type="user", impersonator=user1_id) + for user in [user_1, admin_user]: + progress = service.get_task_progress(first_task.id, RequestParameters(user)) + assert progress == 40 + + # Asserts admin and user_2 can fetch the second_task progress + for user in [user_2, admin_user]: + progress = service.get_task_progress(second_task.id, RequestParameters(user)) + assert progress is None + + # Asserts fetching with a wrong id raises an Exception + wrong_id = "foo_bar" + with pytest.raises(HTTPException, match=f"Task {wrong_id} not found"): + service.get_task_progress(wrong_id, RequestParameters(user)) diff --git a/tests/integration/variant_blueprint/test_thermal_cluster.py b/tests/integration/variant_blueprint/test_thermal_cluster.py index db78599cee..7e5ce92677 100644 --- a/tests/integration/variant_blueprint/test_thermal_cluster.py +++ b/tests/integration/variant_blueprint/test_thermal_cluster.py @@ -155,4 +155,5 @@ def test_cascade_update( }, "status": TaskStatus.COMPLETED, "type": "VARIANT_GENERATION", + "progress": None, } diff --git a/tests/storage/conftest.py b/tests/storage/conftest.py index ee8ce55684..bad7def6a6 100644 --- a/tests/storage/conftest.py +++ b/tests/storage/conftest.py @@ -292,6 +292,7 @@ def add_task( name: Optional[str], task_type: Optional[TaskType], ref_id: Optional[str], + progress: Optional[int], custom_event_messages: Optional[CustomTaskEventMessages], request_params: RequestParameters, ) -> str: diff --git a/tests/storage/test_service.py b/tests/storage/test_service.py index 0944e7b800..caf14dd2c2 100644 --- a/tests/storage/test_service.py +++ b/tests/storage/test_service.py @@ -1401,6 +1401,7 @@ def test_unarchive_output(tmp_path: Path) -> None: f"Unarchive output {study_name}/{output_id} ({study_id})", task_type=TaskType.UNARCHIVE, ref_id=study_id, + progress=None, custom_event_messages=None, request_params=RequestParameters(user=DEFAULT_ADMIN_USER), ) @@ -1532,6 +1533,7 @@ def test_archive_output_locks(tmp_path: Path) -> None: f"Unarchive output {study_name}/{output_id} ({study_id})", task_type=TaskType.UNARCHIVE, ref_id=study_id, + progress=None, custom_event_messages=None, request_params=RequestParameters(user=DEFAULT_ADMIN_USER), ) @@ -1686,6 +1688,7 @@ def test_task_upgrade_study(tmp_path: Path) -> None: f"Upgrade study my_study ({study_id}) to version 800", task_type=TaskType.UPGRADE_STUDY, ref_id=study_id, + progress=None, custom_event_messages=None, request_params=RequestParameters(user=DEFAULT_ADMIN_USER), ) From d44a24230456ab5291711e5dddfb9cd1dab2d86f Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Thu, 24 Oct 2024 11:25:25 +0200 Subject: [PATCH 049/182] fix(archive): raise Exception when (un)archiving wrong outputs (#2199) Fix [ANT-2369] --- antarest/core/exceptions.py | 20 +++++++ antarest/study/service.py | 23 +++++++- .../study/storage/abstract_storage_service.py | 10 ---- antarest/study/storage/utils.py | 12 +++-- tests/integration/test_integration.py | 52 ++++++++++++++++++- tests/storage/test_service.py | 32 +++++++----- 6 files changed, 120 insertions(+), 29 deletions(-) diff --git a/antarest/core/exceptions.py b/antarest/core/exceptions.py index af5639b5ff..c02cbf966b 100644 --- a/antarest/core/exceptions.py +++ b/antarest/core/exceptions.py @@ -414,6 +414,26 @@ def __str__(self) -> str: return self.detail +class OutputAlreadyArchived(HTTPException): + """ + Exception raised when a user wants to archive an output which is already archived. + """ + + def __init__(self, output_id: str) -> None: + message = f"Output '{output_id}' is already archived" + super().__init__(HTTPStatus.EXPECTATION_FAILED, message) + + +class OutputAlreadyUnarchived(HTTPException): + """ + Exception raised when a user wants to unarchive an output which is already unarchived. + """ + + def __init__(self, output_id: str) -> None: + message = f"Output '{output_id}' is already unarchived" + super().__init__(HTTPStatus.EXPECTATION_FAILED, message) + + class OutputSubFolderNotFound(HTTPException): """ Exception raised when an output sub folders do not exist diff --git a/antarest/study/service.py b/antarest/study/service.py index 436f7af64d..9e3ad837ed 100644 --- a/antarest/study/service.py +++ b/antarest/study/service.py @@ -37,6 +37,9 @@ FileDeletionNotAllowed, IncorrectPathError, NotAManagedStudyException, + OutputAlreadyArchived, + OutputAlreadyUnarchived, + OutputNotFound, ReferencedObjectDeletionNotAllowed, StudyDeletionNotAllowed, StudyNotFoundError, @@ -136,7 +139,13 @@ from antarest.study.storage.storage_service import StudyStorageService from antarest.study.storage.study_download_utils import StudyDownloader, get_output_variables_information from antarest.study.storage.study_upgrader import StudyUpgrader, check_versions_coherence, find_next_version -from antarest.study.storage.utils import assert_permission, get_start_date, is_managed, remove_from_cache +from antarest.study.storage.utils import ( + assert_permission, + get_start_date, + is_managed, + is_output_archived, + remove_from_cache, +) from antarest.study.storage.variantstudy.business.utils import transform_command_to_dto from antarest.study.storage.variantstudy.model.command.generate_thermal_cluster_timeseries import ( GenerateThermalClusterTimeSeries, @@ -2328,6 +2337,12 @@ def archive_output( assert_permission(params.user, study, StudyPermissionType.WRITE) self._assert_study_unarchived(study) + output_path = Path(study.path) / "output" / output_id + if is_output_archived(output_path): + raise OutputAlreadyArchived(output_id) + if not output_path.exists(): + raise OutputNotFound(output_id) + archive_task_names = StudyService._get_output_archive_task_names(study, output_id) task_name = archive_task_names[0] @@ -2386,6 +2401,12 @@ def unarchive_output( assert_permission(params.user, study, StudyPermissionType.READ) self._assert_study_unarchived(study) + output_path = Path(study.path) / "output" / output_id + if not is_output_archived(output_path): + if not output_path.exists(): + raise OutputNotFound(output_id) + raise OutputAlreadyUnarchived(output_id) + archive_task_names = StudyService._get_output_archive_task_names(study, output_id) task_name = archive_task_names[1] diff --git a/antarest/study/storage/abstract_storage_service.py b/antarest/study/storage/abstract_storage_service.py index d8d8993e2e..3de3c3a3aa 100644 --- a/antarest/study/storage/abstract_storage_service.py +++ b/antarest/study/storage/abstract_storage_service.py @@ -331,11 +331,6 @@ def _read_additional_data_from_files(self, file_study: FileStudy) -> StudyAdditi return study_additional_data def archive_study_output(self, study: T, output_id: str) -> bool: - if not (Path(study.path) / "output" / output_id).exists(): - logger.warning( - f"Failed to archive study {study.name} output {output_id}. Maybe it's already archived", - ) - return False try: zip_dir( Path(study.path) / "output" / output_id, @@ -352,11 +347,6 @@ def archive_study_output(self, study: T, output_id: str) -> bool: return False def unarchive_study_output(self, study: T, output_id: str, keep_src_zip: bool) -> bool: - if not (Path(study.path) / "output" / f"{output_id}.zip").exists(): - logger.warning( - f"Failed to archive study {study.name} output {output_id}. Maybe it's already unarchived", - ) - return False try: unzip( Path(study.path) / "output" / output_id, diff --git a/antarest/study/storage/utils.py b/antarest/study/storage/utils.py index 82b4c7f4bd..d1ab8828a0 100644 --- a/antarest/study/storage/utils.py +++ b/antarest/study/storage/utils.py @@ -116,10 +116,16 @@ def find_single_output_path(all_output_path: Path) -> Path: return all_output_path +def is_output_archived(path_output: Path) -> bool: + # Returns True it the given path is archived or if adding a suffix to the path points to an existing path + suffixes = [".zip"] + return path_output.suffix in suffixes or any(path_output.with_suffix(suffix).exists() for suffix in suffixes) + + def extract_output_name(path_output: Path, new_suffix_name: t.Optional[str] = None) -> str: ini_reader = IniReader() - is_output_archived = path_output.suffix == ".zip" - if is_output_archived: + archived = is_output_archived(path_output) + if archived: temp_dir = tempfile.TemporaryDirectory() s = StopWatch() with ZipFile(path_output, "r") as zip_obj: @@ -140,7 +146,7 @@ def extract_output_name(path_output: Path, new_suffix_name: t.Optional[str] = No if new_suffix_name: suffix_name = new_suffix_name general_info["name"] = suffix_name - if not is_output_archived: + if not archived: ini_writer = IniWriter() ini_writer.write(info_antares_output, path_output / "info.antares-output") else: diff --git a/tests/integration/test_integration.py b/tests/integration/test_integration.py index 42b8cb2407..e3d614ea9d 100644 --- a/tests/integration/test_integration.py +++ b/tests/integration/test_integration.py @@ -1486,9 +1486,59 @@ def test_area_management(client: TestClient, admin_access_token: str) -> None: ] -def test_archive(client: TestClient, admin_access_token: str, tmp_path: Path) -> None: +def test_archive(client: TestClient, admin_access_token: str, tmp_path: Path, internal_study_id: str) -> None: client.headers = {"Authorization": f"Bearer {admin_access_token}"} + # ============================= + # OUTPUT PART + # ============================= + + res = client.get(f"/v1/studies/{internal_study_id}/outputs") + outputs = res.json() + fake_output = "fake_output" + unarchived_outputs = [output["name"] for output in outputs if not output["archived"]] + usual_output = unarchived_outputs[0] + + # Archive + res = client.post(f"/v1/studies/{internal_study_id}/outputs/{fake_output}/_archive") + assert res.json()["exception"] == "OutputNotFound" + assert res.json()["description"] == f"Output '{fake_output}' not found" + assert res.status_code == 404 + + res = client.post(f"/v1/studies/{internal_study_id}/outputs/{usual_output}/_archive") + assert res.status_code == 200 + task_id = res.json() + wait_for( + lambda: client.get( + f"/v1/tasks/{task_id}", + ).json()["status"] + == 3 + ) + + res = client.post(f"/v1/studies/{internal_study_id}/outputs/{usual_output}/_archive") + assert res.json()["exception"] == "OutputAlreadyArchived" + assert res.json()["description"] == f"Output '{usual_output}' is already archived" + assert res.status_code == 417 + + # Unarchive + res = client.post(f"/v1/studies/{internal_study_id}/outputs/{fake_output}/_unarchive") + assert res.json()["exception"] == "OutputNotFound" + assert res.json()["description"] == f"Output '{fake_output}' not found" + assert res.status_code == 404 + + unarchived_output = unarchived_outputs[1] + res = client.post(f"/v1/studies/{internal_study_id}/outputs/{unarchived_output}/_unarchive") + assert res.json()["exception"] == "OutputAlreadyUnarchived" + assert res.json()["description"] == f"Output '{unarchived_output}' is already unarchived" + assert res.status_code == 417 + + res = client.post(f"/v1/studies/{internal_study_id}/outputs/{usual_output}/_unarchive") + assert res.status_code == 200 + + # ============================= + # STUDY PART + # ============================= + study_res = client.post("/v1/studies?name=foo") study_id = study_res.json() diff --git a/tests/storage/test_service.py b/tests/storage/test_service.py index caf14dd2c2..a1d0724c76 100644 --- a/tests/storage/test_service.py +++ b/tests/storage/test_service.py @@ -1377,6 +1377,7 @@ def test_unarchive_output(tmp_path: Path) -> None: output_id = "some-output" service.task_service.add_worker_task.return_value = None # type: ignore service.task_service.list_tasks.return_value = [] # type: ignore + (tmp_path / "output" / f"{output_id}.zip").mkdir(parents=True, exist_ok=True) service.unarchive_output( study_id, output_id, @@ -1433,13 +1434,16 @@ def test_archive_output_locks(tmp_path: Path) -> None: service.task_service.reset_mock() - output_id = "some-output" + output_zipped = "some-output_zipped" + output_unzipped = "some-output_unzipped" service.task_service.add_worker_task.return_value = None # type: ignore + (tmp_path / "output" / output_unzipped).mkdir(parents=True) + (tmp_path / "output" / f"{output_zipped}.zip").touch() service.task_service.list_tasks.side_effect = [ [ TaskDTO( id="1", - name=f"Archive output {study_id}/{output_id}", + name=f"Archive output {study_id}/{output_zipped}", status=TaskStatus.PENDING, creation_date_utc=str(datetime.utcnow()), type=TaskType.ARCHIVE, @@ -1449,7 +1453,7 @@ def test_archive_output_locks(tmp_path: Path) -> None: [ TaskDTO( id="1", - name=f"Unarchive output {study_name}/{output_id} ({study_id})", + name=f"Unarchive output {study_name}/{output_zipped} ({study_id})", status=TaskStatus.PENDING, creation_date_utc=str(datetime.utcnow()), type=TaskType.UNARCHIVE, @@ -1459,7 +1463,7 @@ def test_archive_output_locks(tmp_path: Path) -> None: [ TaskDTO( id="1", - name=f"Archive output {study_id}/{output_id}", + name=f"Archive output {study_id}/{output_unzipped}", status=TaskStatus.PENDING, creation_date_utc=str(datetime.utcnow()), type=TaskType.ARCHIVE, @@ -1469,7 +1473,7 @@ def test_archive_output_locks(tmp_path: Path) -> None: [ TaskDTO( id="1", - name=f"Unarchive output {study_name}/{output_id} ({study_id})", + name=f"Unarchive output {study_name}/{output_unzipped} ({study_id})", status=TaskStatus.RUNNING, creation_date_utc=str(datetime.utcnow()), type=TaskType.UNARCHIVE, @@ -1482,7 +1486,7 @@ def test_archive_output_locks(tmp_path: Path) -> None: with pytest.raises(TaskAlreadyRunning): service.unarchive_output( study_id, - output_id, + output_zipped, keep_src_zip=True, params=RequestParameters(user=DEFAULT_ADMIN_USER), ) @@ -1490,7 +1494,7 @@ def test_archive_output_locks(tmp_path: Path) -> None: with pytest.raises(TaskAlreadyRunning): service.unarchive_output( study_id, - output_id, + output_zipped, keep_src_zip=True, params=RequestParameters(user=DEFAULT_ADMIN_USER), ) @@ -1498,20 +1502,20 @@ def test_archive_output_locks(tmp_path: Path) -> None: with pytest.raises(TaskAlreadyRunning): service.archive_output( study_id, - output_id, + output_unzipped, params=RequestParameters(user=DEFAULT_ADMIN_USER), ) with pytest.raises(TaskAlreadyRunning): service.archive_output( study_id, - output_id, + output_unzipped, params=RequestParameters(user=DEFAULT_ADMIN_USER), ) service.unarchive_output( study_id, - output_id, + output_zipped, keep_src_zip=True, params=RequestParameters(user=DEFAULT_ADMIN_USER), ) @@ -1520,17 +1524,17 @@ def test_archive_output_locks(tmp_path: Path) -> None: TaskType.UNARCHIVE, "unarchive_other_workspace", ArchiveTaskArgs( - src=str(tmp_path / "output" / f"{output_id}.zip"), - dest=str(tmp_path / "output" / output_id), + src=str(tmp_path / "output" / f"{output_zipped}.zip"), + dest=str(tmp_path / "output" / output_zipped), remove_src=False, ).model_dump(), - name=f"Unarchive output {study_name}/{output_id} ({study_id})", + name=f"Unarchive output {study_name}/{output_zipped} ({study_id})", ref_id=study_id, request_params=RequestParameters(user=DEFAULT_ADMIN_USER), ) service.task_service.add_task.assert_called_once_with( ANY, - f"Unarchive output {study_name}/{output_id} ({study_id})", + f"Unarchive output {study_name}/{output_zipped} ({study_id})", task_type=TaskType.UNARCHIVE, ref_id=study_id, progress=None, From 9c6b0c4dcde0d3eb83eaa8ba0b032e09ba4baa57 Mon Sep 17 00:00:00 2001 From: Mohamed Abdel Wedoud Date: Fri, 11 Oct 2024 17:08:16 +0200 Subject: [PATCH 050/182] feat(archive-apis)!: use `.7z` format to archive studies --- antarest/core/utils/utils.py | 25 +++- antarest/study/service.py | 4 +- .../study/storage/abstract_storage_service.py | 15 +- .../rawstudy/model/filesystem/config/files.py | 134 +++++++++++------- .../rawstudy/model/filesystem/config/model.py | 16 +-- .../model/filesystem/ini_file_node.py | 6 +- .../rawstudy/model/filesystem/inode.py | 10 +- .../rawstudy/model/filesystem/lazy_node.py | 8 +- .../model/filesystem/matrix/matrix.py | 2 +- .../model/filesystem/root/input/areas/list.py | 2 +- .../storage/rawstudy/raw_study_service.py | 80 +++++++---- antarest/study/storage/utils.py | 2 +- .../variantstudy/variant_study_service.py | 5 +- 13 files changed, 193 insertions(+), 116 deletions(-) diff --git a/antarest/core/utils/utils.py b/antarest/core/utils/utils.py index 63576fc1a4..1686811ff3 100644 --- a/antarest/core/utils/utils.py +++ b/antarest/core/utils/utils.py @@ -24,7 +24,9 @@ from pathlib import Path import py7zr +import redis from fastapi import HTTPException +from py7zr import SevenZipFile from antarest.core.exceptions import ShouldNotHappenException @@ -74,7 +76,7 @@ def __init__(self, message: str = "Unsupported archive format") -> None: super().__init__(message) -def extract_zip(stream: t.BinaryIO, target_dir: Path) -> None: +def extract_archive(stream: t.BinaryIO, target_dir: Path) -> None: """ Extract a ZIP archive to a given destination. @@ -203,20 +205,29 @@ def is_zip(path: Path) -> bool: return path.name.endswith(".zip") -def extract_file_to_tmp_dir(zip_path: Path, inside_zip_path: Path) -> t.Tuple[Path, t.Any]: - str_inside_zip_path = str(inside_zip_path).replace("\\", "/") +def extract_file_to_tmp_dir(archive_path: Path, inside_archive_path: Path) -> t.Tuple[Path, t.Any]: + str_inside_archive_path = str(inside_archive_path).replace("\\", "/") tmp_dir = tempfile.TemporaryDirectory() try: - with zipfile.ZipFile(zip_path) as zip_obj: - zip_obj.extract(str_inside_zip_path, tmp_dir.name) + if archive_path.suffix == ".zip": + with zipfile.ZipFile(archive_path) as zip_obj: + zip_obj.extract(str_inside_archive_path, tmp_dir.name) + elif archive_path.suffix == ".7z": + with py7zr.SevenZipFile(archive_path, mode="r") as zip_obj: + str_inside_archive_path = ( + str_inside_archive_path[1:] if str_inside_archive_path.startswith("/") else str_inside_archive_path + ) + zip_obj.extract(path=tmp_dir.name, targets=[str_inside_archive_path]) + else: + raise ValueError(f"Unsupported archive format for {archive_path}") except Exception as e: logger.warning( - f"Failed to extract {str_inside_zip_path} in zip {zip_path}", + f"Failed to extract {str_inside_archive_path} in zip {archive_path}", exc_info=e, ) tmp_dir.cleanup() raise - path = Path(tmp_dir.name) / inside_zip_path + path = Path(tmp_dir.name) / str_inside_archive_path return path, tmp_dir diff --git a/antarest/study/service.py b/antarest/study/service.py index 9e3ad837ed..85dc52a02f 100644 --- a/antarest/study/service.py +++ b/antarest/study/service.py @@ -1210,7 +1210,7 @@ def delete_study(self, uuid: str, children: bool, params: RequestParameters) -> self.storage_service.get_storage(study).delete(study) else: if isinstance(study, RawStudy): - os.unlink(self.storage_service.raw_study_service.get_archive_path(study)) + os.unlink(self.storage_service.raw_study_service.find_archive_path(study)) logger.info("study %s deleted by user %s", uuid, params.get_user_id()) @@ -2056,7 +2056,7 @@ def unarchive_task(notifier: TaskUpdateNotifier) -> TaskResult: self.storage_service.raw_study_service.unarchive(study_to_archive) study_to_archive.archived = False - os.unlink(self.storage_service.raw_study_service.get_archive_path(study_to_archive)) + os.unlink(self.storage_service.raw_study_service.find_archive_path(study_to_archive)) self.repository.save(study_to_archive) self.event_bus.push( Event( diff --git a/antarest/study/storage/abstract_storage_service.py b/antarest/study/storage/abstract_storage_service.py index 3de3c3a3aa..432d95719c 100644 --- a/antarest/study/storage/abstract_storage_service.py +++ b/antarest/study/storage/abstract_storage_service.py @@ -18,12 +18,14 @@ from pathlib import Path from uuid import uuid4 +import py7zr + from antarest.core.config import Config from antarest.core.exceptions import BadOutputError, StudyOutputNotFoundError from antarest.core.interfaces.cache import CacheConstants, ICache from antarest.core.model import JSON, PublicMode from antarest.core.serialization import from_json -from antarest.core.utils.utils import StopWatch, extract_zip, unzip, zip_dir +from antarest.core.utils.utils import StopWatch, extract_archive, unzip, zip_dir from antarest.login.model import GroupDTO from antarest.study.common.studystorage import IStudyStorageService, T from antarest.study.model import ( @@ -253,7 +255,7 @@ def import_output( path_output = Path(str(path_output) + ".zip") shutil.copyfile(output, path_output) else: - extract_zip(output, path_output) + extract_archive(output, path_output) stopwatch.log_elapsed(lambda elapsed_time: logger.info(f"Copied output for {study_id} in {elapsed_time}s")) fix_study_root(path_output) @@ -278,7 +280,7 @@ def import_output( def export_study(self, metadata: T, target: Path, outputs: bool = True) -> Path: """ - Export and compress the study inside a ZIP file. + Export and compress the study inside a 7zip file. Args: metadata: Study metadata object. @@ -286,7 +288,7 @@ def export_study(self, metadata: T, target: Path, outputs: bool = True) -> Path: outputs: Flag to indicate whether to include the output folder inside the exportation. Returns: - The ZIP file containing the study files compressed inside. + The 7zip file containing the study files compressed inside. """ path_study = Path(metadata.path) with tempfile.TemporaryDirectory(dir=self.config.storage.tmp_dir) as tmpdir: @@ -294,8 +296,9 @@ def export_study(self, metadata: T, target: Path, outputs: bool = True) -> Path: tmp_study_path = Path(tmpdir) / "tmp_copy" self.export_study_flat(metadata, tmp_study_path, outputs) stopwatch = StopWatch() - zip_dir(tmp_study_path, target) - stopwatch.log_elapsed(lambda x: logger.info(f"Study {path_study} exported (zipped mode) in {x}s")) + with py7zr.SevenZipFile(target, "w") as szf: + szf.writeall(tmp_study_path, arcname="") + stopwatch.log_elapsed(lambda x: logger.info(f"Study {path_study} exported (7zip mode) in {x}s")) return target def export_output(self, metadata: T, output_id: str, target: Path) -> None: diff --git a/antarest/study/storage/rawstudy/model/filesystem/config/files.py b/antarest/study/storage/rawstudy/model/filesystem/config/files.py index 73e67b1976..ff4227914e 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/config/files.py +++ b/antarest/study/storage/rawstudy/model/filesystem/config/files.py @@ -20,7 +20,9 @@ from enum import Enum from pathlib import Path +import py7zr from antares.study.version import StudyVersion +from py7zr import SevenZipFile from antarest.core.model import JSON from antarest.core.serialization import from_json @@ -65,6 +67,78 @@ class FileType(Enum): MULTI_INI = "multi_ini" +def extract_lines_from_archive(root: Path, posix_path: str) -> t.List[str]: + """ + Extract text lines from various types of files. + + Args: + root: 7zip or ZIP file containing the study. + posix_path: Relative path to the file to extract. + + Returns: + list of lines + """ + if root.suffix.lower() == ".zip": + with zipfile.ZipFile(root) as zf: + try: + with zf.open(posix_path) as f: + text = f.read().decode("utf-8") + return text.splitlines(keepends=False) + except KeyError: + # File not found in the ZIP archive + return [] + elif root.suffix.lower() == ".7z": + with py7zr.SevenZipFile(root, mode="r") as z: + try: + data = z.read([posix_path]) + text = data[posix_path].read().decode("utf-8") + return text.splitlines(keepends=False) + except KeyError: + # File not found in the 7z archive + return [] + else: + raise ValueError(f"Unsupported file type: {root}") + + +def extract_data_from_archive( + root: Path, + posix_path: str, + reader: IniReader, +) -> t.Dict[str, t.Any]: + """ + Extract and process data from various types of files. + + Args: + root: 7zip or ZIP file containing the study. + posix_path: Relative path to the file to extract. + reader: IniReader object to use for processing the file. + + Returns: + The content of the file, processed according to its type: + - SIMPLE_INI or MULTI_INI: dictionary of keys/values + """ + if root.suffix.lower() == ".zip": + with zipfile.ZipFile(root) as zf: + try: + with zf.open(posix_path) as f: + buffer = io.StringIO(f.read().decode("utf-8")) + return reader.read(buffer) + except KeyError: + # File not found in the ZIP archive + return {} + elif root.suffix.lower() == ".7z": + with py7zr.SevenZipFile(root, mode="r") as z: + try: + data = z.read([posix_path]) + buffer = io.StringIO(data[posix_path].read().decode("utf-8")) + return reader.read(buffer) + except KeyError: + # File not found in the 7z archive + return {} + else: + raise ValueError(f"Unsupported file type: {root}") + + def build(study_path: Path, study_id: str, output_path: t.Optional[Path] = None) -> "FileStudyTreeConfig": """ Extracts data from the filesystem to build a study config. @@ -78,10 +152,10 @@ def build(study_path: Path, study_id: str, output_path: t.Optional[Path] = None) Returns: An instance of `FileStudyTreeConfig` filled with the study data. """ - is_zip_file = study_path.suffix.lower() == ".zip" + is_archive = study_path.suffix.lower() in {".zip", ".7z"} # Study directory to use if the study is compressed - study_dir = study_path.with_suffix("") if is_zip_file else study_path + study_dir = study_path.with_suffix("") if is_archive else study_path (sns, asi, enr_modelling) = _parse_parameters(study_path) outputs_dir: Path = output_path or study_path / "output" @@ -98,52 +172,10 @@ def build(study_path: Path, study_id: str, output_path: t.Optional[Path] = None) store_new_set=sns, archive_input_series=asi, enr_modelling=enr_modelling, - zip_path=study_path if is_zip_file else None, + archive_path=study_path if is_archive else None, ) -def _extract_text_from_zip(root: Path, posix_path: str) -> t.Sequence[str]: - """ - Extracts text from a file inside a ZIP archive and returns it as a list of lines. - - Args: - root: The path to the ZIP archive. - posix_path: The relative path to the file inside the ZIP archive. - - Returns: - A list of lines in the file. If the file is not found, an empty list is returned. - """ - with zipfile.ZipFile(root) as zf: - try: - with zf.open(posix_path) as f: - text = f.read().decode("utf-8") - return text.splitlines(keepends=False) - except KeyError: - return [] - - -def _extract_ini_from_zip(root: Path, posix_path: str, multi_ini_keys: t.Sequence[str] = ()) -> t.Mapping[str, t.Any]: - """ - Extracts data from an INI file inside a ZIP archive and returns it as a dictionary. - - Args: - root: The path to the ZIP archive. - posix_path: The relative path to the file inside the ZIP archive. - multi_ini_keys: List of keys to use for multi INI files. - - Returns: - A dictionary of keys/values in the INI file. If the file is not found, an empty dictionary is returned. - """ - reader = IniReader(multi_ini_keys) - with zipfile.ZipFile(root) as zf: - try: - with zf.open(posix_path) as f: - buffer = io.StringIO(f.read().decode("utf-8")) - return reader.read(buffer) - except KeyError: - return {} - - def _extract_data_from_file( root: Path, inside_root_path: Path, @@ -165,14 +197,14 @@ def _extract_data_from_file( - SIMPLE_INI or MULTI_INI: dictionary of keys/values """ - is_zip_file: bool = root.suffix.lower() == ".zip" + is_archive: bool = root.suffix.lower() in {".zip", ".7z"} posix_path: str = inside_root_path.as_posix() output_data_path = root / inside_root_path if file_type == FileType.TXT: # Parse the file as a list of lines, return an empty list if missing. - if is_zip_file: - return _extract_text_from_zip(root, posix_path) + if is_archive: + return extract_lines_from_archive(root, posix_path) else: try: return output_data_path.read_text(encoding="utf-8").splitlines(keepends=False) @@ -181,11 +213,11 @@ def _extract_data_from_file( elif file_type in {FileType.MULTI_INI, FileType.SIMPLE_INI}: # Parse the file as a dictionary of keys/values, return an empty dictionary if missing. - if is_zip_file: - return _extract_ini_from_zip(root, posix_path, multi_ini_keys=multi_ini_keys) + reader = IniReader(multi_ini_keys) + if is_archive: + return extract_data_from_archive(root, posix_path, reader) else: try: - reader = IniReader(multi_ini_keys) return reader.read(output_data_path) except FileNotFoundError: return {} diff --git a/antarest/study/storage/rawstudy/model/filesystem/config/model.py b/antarest/study/storage/rawstudy/model/filesystem/config/model.py index f707ab4027..64c5be0ee7 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/config/model.py +++ b/antarest/study/storage/rawstudy/model/filesystem/config/model.py @@ -174,7 +174,7 @@ def __init__( archive_input_series: t.Optional[t.List[str]] = None, enr_modelling: str = str(EnrModelling.AGGREGATED), cache: t.Optional[t.Dict[str, t.List[str]]] = None, - zip_path: t.Optional[Path] = None, + archive_path: t.Optional[Path] = None, ): self.study_path = study_path self.path = path @@ -189,13 +189,13 @@ def __init__( self.archive_input_series = archive_input_series or [] self.enr_modelling = enr_modelling self.cache = cache or {} - self.zip_path = zip_path + self.archive_path = archive_path def next_file(self, name: str, is_output: bool = False) -> "FileStudyTreeConfig": if is_output and name in self.outputs and self.outputs[name].archived: - zip_path: t.Optional[Path] = self.path / f"{name}.zip" + archive_path: t.Optional[Path] = self.path / f"{name}.zip" else: - zip_path = self.zip_path + archive_path = self.archive_path return FileStudyTreeConfig( study_path=self.study_path, @@ -211,7 +211,7 @@ def next_file(self, name: str, is_output: bool = False) -> "FileStudyTreeConfig" archive_input_series=self.archive_input_series, enr_modelling=self.enr_modelling, cache=self.cache, - zip_path=zip_path, + archive_path=archive_path, ) def at_file(self, filepath: Path) -> "FileStudyTreeConfig": @@ -317,7 +317,7 @@ class FileStudyTreeConfigDTO(AntaresBaseModel): store_new_set: bool = False archive_input_series: t.List[str] = list() enr_modelling: str = str(EnrModelling.AGGREGATED) - zip_path: t.Optional[Path] = None + archive_path: t.Optional[Path] = None @field_serializer("version") def serialize_version(self, version: StudyVersion) -> int: @@ -344,7 +344,7 @@ def from_build_config( store_new_set=config.store_new_set, archive_input_series=config.archive_input_series, enr_modelling=config.enr_modelling, - zip_path=config.zip_path, + archive_path=config.archive_path, ) def to_build_config(self) -> FileStudyTreeConfig: @@ -361,5 +361,5 @@ def to_build_config(self) -> FileStudyTreeConfig: store_new_set=self.store_new_set, archive_input_series=self.archive_input_series, enr_modelling=self.enr_modelling, - zip_path=self.zip_path, + archive_path=self.archive_path, ) diff --git a/antarest/study/storage/rawstudy/model/filesystem/ini_file_node.py b/antarest/study/storage/rawstudy/model/filesystem/ini_file_node.py index bf9eecc574..9d91ca23de 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/ini_file_node.py +++ b/antarest/study/storage/rawstudy/model/filesystem/ini_file_node.py @@ -105,9 +105,9 @@ def _get( url = url or [] kwargs = self._get_filtering_kwargs(url) - if self.config.zip_path: - with zipfile.ZipFile(self.config.zip_path, mode="r") as zipped_folder: - inside_zip_path = self.config.path.relative_to(self.config.zip_path.with_suffix("")).as_posix() + if self.config.archive_path: + with zipfile.ZipFile(self.config.archive_path, mode="r") as zipped_folder: + inside_zip_path = self.config.path.relative_to(self.config.archive_path.with_suffix("")).as_posix() with io.TextIOWrapper(zipped_folder.open(inside_zip_path)) as f: data = self.reader.read(f, **kwargs) else: diff --git a/antarest/study/storage/rawstudy/model/filesystem/inode.py b/antarest/study/storage/rawstudy/model/filesystem/inode.py index e380442651..2e565c5627 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/inode.py +++ b/antarest/study/storage/rawstudy/model/filesystem/inode.py @@ -148,17 +148,17 @@ def _extract_file_to_tmp_dir( The actual path of the extracted file the tmp_dir object which MUST be cleared after use of the file """ - if self.config.zip_path is None: + if self.config.archive_path is None: raise ShouldNotHappenException() - inside_zip_path = str(self.config.path)[len(str(self.config.zip_path)[:-4]) + 1 :] - if self.config.zip_path: - return extract_file_to_tmp_dir(self.config.zip_path, Path(inside_zip_path)) + inside_archive_path = str(self.config.path)[len(str(self.config.archive_path)[:-4]) + 1 :] + if self.config.archive_path: + return extract_file_to_tmp_dir(self.config.archive_path, Path(inside_archive_path)) else: raise ShouldNotHappenException() def _assert_not_in_zipped_file(self) -> None: """Prevents writing inside a zip file""" - if self.config.zip_path: + if self.config.archive_path: raise WritingInsideZippedFileException("Trying to save inside a zipped file") diff --git a/antarest/study/storage/rawstudy/model/filesystem/lazy_node.py b/antarest/study/storage/rawstudy/model/filesystem/lazy_node.py index 49b83079d6..6520802d90 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/lazy_node.py +++ b/antarest/study/storage/rawstudy/model/filesystem/lazy_node.py @@ -47,19 +47,19 @@ def _get_real_file_path( self, ) -> t.Tuple[Path, t.Any]: tmp_dir = None - if self.config.zip_path: + if self.config.archive_path: path, tmp_dir = self._extract_file_to_tmp_dir() else: path = self.config.path return path, tmp_dir def file_exists(self) -> bool: - if self.config.zip_path: - str_zipped_path = str(self.config.zip_path) + if self.config.archive_path: + str_zipped_path = str(self.config.archive_path) inside_zip_path = str(self.config.path)[len(str_zipped_path[:-4]) + 1 :] str_inside_zip_path = str(inside_zip_path).replace("\\", "/") if str_zipped_path not in LazyNode.ZIP_FILELIST_CACHE: - with ZipFile(file=self.config.zip_path) as zip_file: + with ZipFile(file=self.config.archive_path) as zip_file: LazyNode.ZIP_FILELIST_CACHE[str_zipped_path] = SimpleCache( value=zip_file.namelist(), expiration_date=datetime.utcnow() + timedelta(hours=2), diff --git a/antarest/study/storage/rawstudy/model/filesystem/matrix/matrix.py b/antarest/study/storage/rawstudy/model/filesystem/matrix/matrix.py index 364a5e3524..9c421f59e1 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/matrix/matrix.py +++ b/antarest/study/storage/rawstudy/model/filesystem/matrix/matrix.py @@ -84,7 +84,7 @@ def normalize(self) -> None: Raises: DenormalizationException: if the original matrix retrieval fails. """ - if self.get_link_path().exists() or self.config.zip_path: + if self.get_link_path().exists() or self.config.archive_path: return matrix = self.parse() diff --git a/antarest/study/storage/rawstudy/model/filesystem/root/input/areas/list.py b/antarest/study/storage/rawstudy/model/filesystem/root/input/areas/list.py index 5112bd7756..3db25a0fc5 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/root/input/areas/list.py +++ b/antarest/study/storage/rawstudy/model/filesystem/root/input/areas/list.py @@ -44,7 +44,7 @@ def get( expanded: bool = False, formatted: bool = True, ) -> List[str]: - if self.config.zip_path: + if self.config.archive_path: path, tmp_dir = self._extract_file_to_tmp_dir() lines = path.read_text().split("\n") tmp_dir.cleanup() diff --git a/antarest/study/storage/rawstudy/raw_study_service.py b/antarest/study/storage/rawstudy/raw_study_service.py index 1dca10323f..1dd0110a07 100644 --- a/antarest/study/storage/rawstudy/raw_study_service.py +++ b/antarest/study/storage/rawstudy/raw_study_service.py @@ -18,7 +18,6 @@ from pathlib import Path from threading import Thread from uuid import uuid4 -from zipfile import ZipFile from antares.study.version import StudyVersion @@ -27,7 +26,7 @@ from antarest.core.interfaces.cache import ICache from antarest.core.model import PublicMode from antarest.core.requests import RequestParameters -from antarest.core.utils.utils import extract_zip +from antarest.core.utils.utils import extract_archive from antarest.study.model import DEFAULT_WORKSPACE_NAME, Patch, RawStudy, Study, StudyAdditionalData from antarest.study.storage.abstract_storage_service import AbstractStorageService from antarest.study.storage.patch_service import PatchService @@ -75,14 +74,17 @@ def __init__( ) self.cleanup_thread.start() - def update_from_raw_meta(self, metadata: RawStudy, fallback_on_default: t.Optional[bool] = False) -> None: + def update_from_raw_meta( + self, metadata: RawStudy, fallback_on_default: t.Optional[bool] = False, study_path: t.Optional[Path] = None + ) -> None: """ Update metadata from study raw metadata Args: metadata: study fallback_on_default: use default values in case of failure + study_path: optional study path """ - path = self.get_study_path(metadata) + path = study_path or self.get_study_path(metadata) study = self.study_factory.create_from_fs(path, study_id="") try: raw_meta = study.tree.get(["study", "antares"]) @@ -142,21 +144,19 @@ def update_name_and_version_from_raw_meta(self, metadata: RawStudy) -> bool: def exists(self, study: RawStudy) -> bool: """ - Check study exist. + Check if the study exists in the filesystem. + Args: - study: study + study: The study to check. Returns: true if study presents in disk, false else. - """ - path = self.get_study_path(study) - if study.archived: - path = self.get_archive_path(study) - zf = ZipFile(path, "r") - return str("study.antares") in zf.namelist() + archive_path = self.find_archive_path(study) + return archive_path.is_file() - return (path / "study.antares").is_file() + path = self.get_study_path(study) + return path.joinpath("study.antares").is_file() def get_raw( self, @@ -323,19 +323,22 @@ def import_study(self, metadata: RawStudy, stream: t.BinaryIO) -> Study: Raises: BadArchiveContent: If the archive is corrupted or in an unknown format. """ - path_study = Path(metadata.path) - path_study.mkdir() + study_path = Path(metadata.path) + study_path.mkdir() try: - extract_zip(stream, path_study) - fix_study_root(path_study) - self.update_from_raw_meta(metadata) + extract_archive(stream, study_path) + fix_study_root(study_path) + self.update_from_raw_meta( + metadata, + study_path=study_path, + ) except Exception: - shutil.rmtree(path_study) + shutil.rmtree(study_path) raise - metadata.path = str(path_study) + metadata.path = str(study_path) return metadata def export_study_flat( @@ -384,7 +387,7 @@ def set_reference_output(self, study: RawStudy, output_id: str, status: bool) -> remove_from_cache(self.cache, study.id) def archive(self, study: RawStudy) -> Path: - archive_path = self.get_archive_path(study) + archive_path = self.create_archive_path(study) new_study_path = self.export_study(study, archive_path) shutil.rmtree(study.path) remove_from_cache(cache=self.cache, root_id=study.id) @@ -402,11 +405,38 @@ def unarchive(self, study: RawStudy) -> None: Raises: BadArchiveContent: If the archive is corrupted or in an unknown format. """ - with open(self.get_archive_path(study), mode="rb") as fh: + with open(self.find_archive_path(study), mode="rb") as fh: self.import_study(study, fh) - def get_archive_path(self, study: RawStudy) -> Path: - return Path(self.config.storage.archive_dir / f"{study.id}.zip") + def find_archive_path(self, study: RawStudy) -> Path: + """ + Fetch for archive path of a study if it exists else raise an incorrectly archived study. + + Args: + study: The study to get the archive path for. + + Returns: + The full path of the archive file (zip or 7z). + """ + archive_dir: Path = self.config.storage.archive_dir + for suffix in [".zip", ".7z"]: + path = archive_dir.joinpath(f"{study.id}{suffix}") + if path.is_file(): + return path + raise FileNotFoundError(f"Study {study.id} archiving process is corrupted (no archive file found).") + + def create_archive_path(self, study: RawStudy) -> Path: + """ + Create archive path of a study. + + Args: + study: The study to get the archive path for. + + Returns: + The full path of the archive file (7z). + """ + archive_dir: Path = self.config.storage.archive_dir + return archive_dir.joinpath(f"{study.id}.7z") def get_study_path(self, metadata: Study) -> Path: """ @@ -418,7 +448,7 @@ def get_study_path(self, metadata: Study) -> Path: """ if metadata.archived: - return self.get_archive_path(metadata) + return self.find_archive_path(metadata) return Path(metadata.path) def initialize_additional_data(self, raw_study: RawStudy) -> bool: diff --git a/antarest/study/storage/utils.py b/antarest/study/storage/utils.py index d1ab8828a0..c2d0f46b5e 100644 --- a/antarest/study/storage/utils.py +++ b/antarest/study/storage/utils.py @@ -79,7 +79,7 @@ def fix_study_root(study_path: Path) -> None: study_path: the study initial root path """ # TODO: what if it is a zipped output ? - if study_path.suffix == ".zip": + if study_path.suffix in {".zip", ".7z"}: return None if not study_path.is_dir(): diff --git a/antarest/study/storage/variantstudy/variant_study_service.py b/antarest/study/storage/variantstudy/variant_study_service.py index 17da76fffb..72bd1804c7 100644 --- a/antarest/study/storage/variantstudy/variant_study_service.py +++ b/antarest/study/storage/variantstudy/variant_study_service.py @@ -431,6 +431,7 @@ def walk_children( raw_study_accepted=True, ) children = self.repository.get_children(parent_id=parent_id) + # TODO : the bottom_first should always be True, otherwise we will have an infinite loop if not bottom_first: fun(study) for child in children: @@ -438,8 +439,8 @@ def walk_children( if bottom_first: fun(study) - def get_variants_parents(self, id: str, params: RequestParameters) -> t.List[StudyMetadataDTO]: - output_list: t.List[StudyMetadataDTO] = self._get_variants_parents(id, params) + def get_variants_parents(self, study_id: str, params: RequestParameters) -> t.List[StudyMetadataDTO]: + output_list: t.List[StudyMetadataDTO] = self._get_variants_parents(study_id, params) if output_list: output_list = output_list[1:] return output_list From 1649c863cbbb68841f37640e13977ff1385e16a0 Mon Sep 17 00:00:00 2001 From: Mohamed Abdel Wedoud Date: Fri, 11 Oct 2024 17:08:44 +0200 Subject: [PATCH 051/182] test(archive-apis): use `.7z` format to export and archive studies --- tests/core/utils/test_extract_zip.py | 14 +- tests/integration/assets/STA-mini.7z | Bin 132596 -> 132630 bytes .../test_synthesis/raw_study.synthesis.json | 2 +- .../variant_study.synthesis.json | 2 +- tests/integration/test_integration.py | 8 +- tests/storage/business/test_export.py | 20 ++- .../repository/filesystem/test_folder_node.py | 2 +- .../filesystem/test_ini_file_node.py | 4 +- tests/storage/test_service.py | 2 +- tests/storage/web/test_studies_bp.py | 23 --- .../storage/test_abstract_storage_service.py | 145 +++++------------- 11 files changed, 66 insertions(+), 156 deletions(-) diff --git a/tests/core/utils/test_extract_zip.py b/tests/core/utils/test_extract_zip.py index dfbde6bf6d..f38a3f336f 100644 --- a/tests/core/utils/test_extract_zip.py +++ b/tests/core/utils/test_extract_zip.py @@ -17,7 +17,7 @@ import py7zr import pytest -from antarest.core.utils.utils import BadArchiveContent, extract_zip +from antarest.core.utils.utils import BadArchiveContent, extract_archive class TestExtractZip: @@ -33,7 +33,7 @@ def test_extract_zip__with_zip(self, tmp_path: Path): # Then, call the function with open(zip_path, mode="rb") as stream: - extract_zip(stream, tmp_path) + extract_archive(stream, tmp_path) # Finally, check the result assert (tmp_path / "test.txt").read_text() == "Hello world!" @@ -46,7 +46,7 @@ def test_extract_zip__with_7z(self, tmp_path: Path): # Then, call the function with open(zip_path, mode="rb") as stream: - extract_zip(stream, tmp_path) + extract_archive(stream, tmp_path) # Finally, check the result assert (tmp_path / "test.txt").read_text() == "Hello world!" @@ -55,22 +55,22 @@ def test_extract_zip__empty_file(self): stream = io.BytesIO(b"") with pytest.raises(BadArchiveContent): - extract_zip(stream, Path("dummy/path")) + extract_archive(stream, Path("dummy/path")) def test_extract_zip__corrupted_zip(self): stream = io.BytesIO(b"PK\x03\x04 BLURP") with pytest.raises(BadArchiveContent): - extract_zip(stream, Path("dummy/path")) + extract_archive(stream, Path("dummy/path")) def test_extract_zip__corrupted_7z(self): stream = io.BytesIO(b"7z BLURP") with pytest.raises(BadArchiveContent): - extract_zip(stream, Path("dummy/path")) + extract_archive(stream, Path("dummy/path")) def test_extract_zip__unknown_format(self): stream = io.BytesIO(b"ZORRO") with pytest.raises(BadArchiveContent): - extract_zip(stream, Path("dummy/path")) + extract_archive(stream, Path("dummy/path")) diff --git a/tests/integration/assets/STA-mini.7z b/tests/integration/assets/STA-mini.7z index 4bae2fe52fadd30b6795c74c062cf4e0ca330195..b861b0c5a6ff7f22181bbb9effdc803e312c1002 100644 GIT binary patch literal 132630 zcma%iQ;;wKuie_VZQHhO+qQSVwQbwBZQHhO_V4XeZ>OE+Ay1h}W^zs@6R>-A*OB7@ z0IxgpM=XE>0sK!P{VxpwP#gNV4nP|fX%-~c`9?P~kOE=LU_Z&GFZTjD(R#Xw8al9~ zgsXbUJ1Q`u-f`${?5X=K0Oh~J%l>40yE@!?hQ5g=t z{E7!iWmIhLYnanJ{MlhI1N+_tJ$+~0Vo9kR;#nw#=Ml=4G2*-)qUzq)fUAYP3t{3( zDoGsDaXT568QzQW!?vngRa>!UN$6hpi*~q;3R#~_;akXZQB6cdxOXfbh-*-C8eQYt zth$*u1~=gYEJ5jxROShet`7eKa%&ccFXZ@v_~j{D4`f5zMJt7Ii`4Nk`0&Z3nA(^f zexZ_d12BFVy4kTIp7o{-BzwMdI_iV+SIeF?EWG+?D z5fXa|5tF#h+9{txAgL@bfDPB5WshG50Idn^EKz`9;te#9;I#B@OD>m}@*P=tsze#; zYh{y+$1kY-V{_XNfsv!6FeS9krA*@LJ=xdo4Ez?POyu%uTn0gWi71#A0i%yZY=%~0 zJnX`3tL7P{q)C`Yz(!$#A;v*rH$`Sh*`cfm3OPZ=V@P)_^mi(a*>aEL^T-$Hdva@a z!K&(y=*SJVpY;#H#TfuEBYbG)7{(zQQz1fqmO@R)0veotb?36-=7GYisK0gCiapxs z)SleugKm&BA4pTx!GHz7fFab_rLhwkuECAF!RR_xE|4j^KBmhPaKnF)!05n_P#;7> zoM}jvHd!A;N{)^1P3Nt^=4L zJfA2mCX+q_FQ>b*NEIoiB;YrrLuNJ=7PA#E|G5ibc0zWK&_o6p7i zngQ(%dZXcnDA}cd)QqEXJT0lGj5RxK<&MwxHToa6+cs$xPVd;g)XzcO#-c&f$55ft z&wN1q+@0E@Y}`K-pB?_1C{)PXFJ)JR&jRIIzk4S3-^=EhMyS9%FE`o2fIU9(|%+cB10TgBxM9J7^`ef4r{|#4@`OypSA^P`YpT4 zOC|FyO3nvDh-8dNmwvt~th4x{)UZX{(g_#V`B?Ekfl5&?t1v!nnsX#C9A|7fq-Ab85bVkhFiZenDO>>k8|1 z_Mpp>?b*dP(FGNW0G3PWiIj|n8rfIR@Wb!QWaaAMl7FMRCvL{F&! zU0c|d3xB>(j9J?z+sdd!;yek(f>TF$MdK5$XrVGc)7@^Q?GK~$+h;U`r$-X&v#|co zSosxOtIxhZZS{vy4Z>Qfs?7HCYo$Q|>IJbX$6-W}PyFN3ih$yaaMJ@rth`d_{2yFg zYsd^cfG#rx`m^ZPNMDMaEXXt@`>AgqIbg$+XGybpR*$77QJ|hHBqH%F3wfBYX^e!H%0)bq5`6!)8nBrzsstswk{BkA50(+is zSCSkEnMEm$(Gv{u3#pala8gaO@QK^$RaOwGrV)0W3aRh|mbBqAIotXdjiFnB>%RCk zNUZKGqt_S9xAL)>`iKZs!isI!gc&rX+q`8E-SNw`HtI2nAo$Dt(6pPgk5~|{2*o=F z8$tU`+zel{y<)8YbaW^Y=;d>pjjDT<9q=z8lmo~6nY^hgP4dB93aqRB4$O^g#ho&^ zAQ7-m&X9YhYaZ%ZNtuMH*5=hTh`1G^Lq}4I=l+#SK0yf^aEwppF45Fj=qw0FLIAJI zLFEyu1HNLqs1jL{)QHNnBdr5Yd7BQej233PVTahVb)_6(bcG(Mt+W{+BQ@S}g8t?o zqo2=R;1jMMnK}T%%QAv$?Lx%1H1_%*BZXGXej{dT7C*P;`WsKDU{OkCaWh6*k40RS zcl9_Y4$|cR_(nXw4l88B?5z^oTG1U#Y*3sO-W(@QXYe>KUM`DcnNb`u`S_#I(~aAX zn3S#}>4Udl$!kx&y4E?awy%N>4+C13A6VAaLB-E|dh`LUX63Pqxs-)(b^}VxbghX@ z<8-glP&ZJgWAka4ScZZbc^E5Jez}Y>+%eTOVs1G*kg!u{<-xw}Crb;L1{_obe1jv@ z-HZPL#QbMCUSa%z|Mh?u1yHM_)4H8wm?;rHUYeK$P^ASMJQ(h!-LkexV--7i8JlM z@d!IJ&@0^U8HHj3V<=!J@=RQBxs`7PKrr3U04n4sVg>BuN)t2Y!v4L_&QmRGHC z=>rtnLtDn+3>sU1Z+zlWjAm&UENlbbm+PRX0EA@VAToY?ygKhL*p&E4=V-8GkTvmj zycQFY_+z(4p#>~$#t2L%-}NtFVZ3$m_pqAhDbo-50QZUVHWC?~?`Rk6mNsRSTGF|* zdO}K9{uez@Q*@th_(1sSRio?zpkMBtKDdQ?dum7Br^*NkETmX3{g-FDn7jF*Azl{x z3+mtIE8!l}Chr0g%me&Thw#36A$@nTFmH^6b&46!MwN7- zQ?b8qG^5}7soHAllhd69Pi8Shx#xy~nO%`mZ|qiELes&8I+1Pwx~oKcLy|*@bCKp} zMV-Po!dlPhb4iqa`+O;`=+tE!6rOgM){wgR(7T?<@#>ZvpTu3smb9&~J2?8_)9I}K zXEp3egQVX^wln&{Rl+YH_V#=>SYmosaBI(O#xr)KY+zEwl(6xtBV z-ZlwDCAD*(0wXh|_TOO+03hPzaCb-2KRj|O9A#LR{t;ga8MzRW+3wvOw7U}iYL16@ zh|~I4p>IRz!;FGwc}OYe)OIzfUr~YHv@ci^fAkyXsa0fvBQ!sky)kLB8B{ieE4 z^u2XT^aqac*E|{t zt*sfZi#`|(k?OPBMm;ur$PX6QWGbP)3&}zj7h_MF-v`UE291R0(OeoZ$yT|+vo6lT zT9%|KiP!muvd1u48~$l@uK*HKgRpgEt;wU%%HO3m z@J65Nm`E3&i97Wih>hlVBjF4=t4(65D%Bf$31-|XF6kLUs8GQh)vR}f0MqevDm6fG z+T#Ra&xzNBN!slq$|!!8Y4RUVKMVP(+R1c5ChzjF99%m5;?McY%K}LE?B}HjS2Ih) z*{bCz`ZI`K%Q_d`%7CW#c!p^!qh66C6INO`F|s8cVY{DVGHKb;9?V4{P!KR_9Tn-m}v{x zI(@-#+L5&~hqY28@EtumhLl%%x%rNA52N485a}4-?Pn0NWzn zg2lPIq^(>w;?M?Se>k`-`LF8Azg$0dBWbCv>Lx}3csi?~1J{B&n%2XncJ#!86N&4q z%iXM0te$LJgpVJNs?l;xh1nlRy#C;USSQ>_#{-3?=7=zzsL~_5yFuIeZzVDYhez?` z^x4Mwx*WZOL+`*CKrSQ(ZZFBF+jOxg-36-=b|`_ZRyC*v)D&}G`rwSdLr7T>F6w%d zW3P3Lzf`miu^)Qi^_?D=^KHN1rpi~oHX@o#U;)hWreaiC#x-f3Sn;7Ons6=fuZ*W5 zK1HnELIbo#OlIMAV?1WyCP6$*#L8-R+94p>DOj~1d|}p#fYQ>uzCo>cSVZth`v9Y) z<>#dp;6bu1KBmk(q-#jQx{Y%B!Y+h3-7PECTYxw%Q*ulF*icXufd;|e3SSadd6dJLn-L1JG8S&l0nr~ z>BWO_CYbKNE?g8jz{OT(IKKIBzw?o}SvqwtwK7IJ=sy-#m*kHCrx~0FcNef;^Es^f ze&UE>>pKUc*y5+^ZuRd*Q@k6{gr()s2B*+iIcTDnm}bB)NjQ2dqlBl|lZgAjP+eA- zMnak~q7^xjWpLeGk%3b$m1>A$D<8-DaZZ1*uq{X$m=OfQO!b#;#6f(?+(GCh$pFNb z$zwFAua1Cm3*fZ!u;lI=I4LVd8}1=(8!Mhc@q76B^S)7d+;;TREJ$gXnXg8agU0+# zdftFFo{-3pjqeJ3Ux1pg@fI5-r9=dhB^0!TjUX6n-TiA~ZQc%g$Gs3IRYcP)^7evi zJ9j~T6OZTk@buwouWc?K?B{GY`-Y&$(5ny80=w?n^F%K#>0TJ#AHod0g%tnVi}k7; zDcDLtS0!Hnj<}QPMs}cmpViVjdZk+wg@r|k3u0FdfCgd+EQQ^_N{wH9$%SxwVq1r< z)Y!`I`qKANatD~s9f3Op53LIU1Y|fZU@SaEDd}5nH$dg+B=Wo+e&L*LR5E^k8*%N1 z1F!VmT!XBX64A!Jeuu(kc?#3zLih@0ZK2wDZn=6OKKyCk13RT+qI3w#u$#PZ+8tT9 zD`G3eb6CWzi(>?>G|*#5NXEvaLd-n&iwo+)vmvuTi$lc;PGv@()ZYtH5-$rlzY`s6 zJX@-Twx(9{a@!OI$JBAqhaq;z^5WK++#!<~eF3(F-0VTzp4WOY2_Pkc9&B47fBaYk zp!Kxcb5%Ju{TnYn!O^NAqpIJDr5auftP=0DPkFrfBe^1(v-)$9R8;^?xDTh4_+!|t z1(4>Ux8N|k$=@d+>!+@OudgHjaH5(cI`yuzadLL$ag)i4Z13{9J;3w>5}uR?{8dCl`h-q~plcCMTnkHub9?!#Sa7`6r#lxK`3 zpBjDF;z@pH`s|wUZ-UtP|%I!|7 zJNCICF7%KI+|>aSfrAYhSvEcmr*hleJi1_CEk&b57fGFA+r~ufp$=)Zvc-gP`Ez96 zwxfVf;_`Q}sErr@a#4%P8iUYUo1T9SWi(@dR3iG<6jLD!Dd~}ZR0)sdu5XzAVCk~y zKkIcX@t8opD2|%xL}ZFW>DRy{r=}x-+v5bifKv5p+_Fh%iDkW7_#>3%yiaXV)l$T4&@LodvfG5^5Krg_V zcxbq%kT}i^B;gZ*MBOh9vH->jUjy~;j{mLw3 z6wJqcUNnd6N9Hz1tlkI#aG+~)0;{2xdoIdI4=BmRG+ zAAXor`TZqlLK~@}QApx+sG9FDC2E%$JZ%D@j~!*+cS;jT?tm#O zo4pq9`{5os{YrQ~X)~dCWVk0DG)I^GdC`@ThIVp_(XDMzWXVAvl{mO- zG`)aF69Am?^6_}ZTX(JeuWF{yCY}W~XufZKVDXR#L!gyIG?tLA)XmId@P|NZnZ!n# z?-U`6|AD{~9hD7=-6D;@g{AZhgLL+?=8p_$zgE2`*-@R2QvBsGt0l#1A4<-#HWGal zp9C2lTdqJ5?IA^SwdHQg)ZFp49y6luQFrKwIc01D@YRs@3joBmU~2sbr9FjwYNmb? z&+{&7LD?X7(>)s}F@||HY+b~;{ZzlcMQzq}1`F!_mZ`XQC8hsW0REf#d1Or*?H}FM z|6&ke&|B8n?r~N3?iB5RuM7WAIM@WZvEz%`{Ai^c@RE#Fc9vJeOo!`+_ag%Z+m^8A z*Jeb0M4OdjR6Q5b{L)4K0g~U2yly+|QVV7tUWKte#|D?=N_<-U@eNp%FsCoGJDd(% zYJWf*Kv64VPe$)^MJE?4@X@liIlxtI2+4W5Qlc%L!9JQrD}NWBHIqalwlRL?^X${dxs8u zO!>Evq2-{${a`YE&jwke=5R1LkDLCyLHaCy3(vlx^KV&;%&&~>&ygK;F&xWe33KiJ zCj*?Y4Ds7TR4zAnuqz~!gFHeOQVaoNGL^kRTiOPaW3!q_oGI#rUTn=^rbNu1jI8gr z?G`i)SH-1}#|^;;QaN^IlbGu7*SXF0jS~jaySDK_s}OkK0?PeQ_vjvNS-7KnIpg)q z%=!>yJA$s-PqQ&me~#yK9R$b*tYF9tHMvDt(0d#u<#!z;||O#NfFye<(0AzY~9g>s{l1d+!Y}DP|MQ~hUry# z%p*TSus4P;9M72ralgG4P9`S1qFZUl7euqEmM689FWu*Rkbe6PzJK_&w9Pat564^^ zER)|@r5Rx67@O|5ZupkMMlUhS(c@a7y_B%;?bUi*FRhJ3f61Y(X3TDKO;_;;od?$T zoi88L&X7pa4^S%;P$(*~b4sd%%(%-psMC|io=JSQGEkRCFG-tdwxl9!qf2Huix#a3 zvRn7CQ7yNY5VPF@%y#q&LdF6thR%=20nPukdMMGt5<`jHs^0`L*ej;DdVrfXJI;d* z(fnuTL`1e^h;Dz!sYj8uSZzG{O30kW6C)SDMWAry=;k5?9yPwmg777PXcD+kqu88tWmkY`Hu5u6J5C|Qy$IM zqmK43g|pbd)BG~ymiRl;n&j!sD_(xHm_U6oOI?f&RrHQ8F@&iGW@NlX1ws_xq?bXE z-dzc!;8im4LnSz`rO27+<%NKQEki}xM0KQt>oN}o6X(K;E*IY=HqEvIanSPQU?zzDB@0He zYNghVl1)$~Gvd6cz#mdF-vY<+6dr8Ouht{KqqUYgVHG~HIMrIFwiL6BjMD6Dw)yTp z)~6~~bV&^R%+-I$^MQ9JzA2<6Qjudtk30MYeNLbp=|iU65=@brNNwNS&N|7Oi!Yc^ zxrFw(ojXYyK5cp0&*Q`-{k_~4fkHvdf=qx%IaVZu2oc3!tzFUlR}+d7%vx(bTx6$2 zjG7)Q#b}Us9CcUvE@-^;0Rz_*uY~hKQEQuI zkGWXCezuI8;~U2Y9yp)Ze|OE3?uEr8kG^WF2jG^bqizYl8RklRs#&kW2vs+ z^jgop7KZwCnH~LT2$Ba@d9)F*ro#Vp5Ky%-?dbh&^NP;_q&$RiE>vxMA2- z#1x^^tgfJv#A)q$%+^!Ok*`n?y zGS{nL^xXQ*=$z>FPMkjalqK(({&_#oeC zru7&ZQ%#dbei)G~S4ZmN#T*i~TyqOhfgc1!GaOOfzeE04L|r^;vPY*madaxsvSknu#vFg^&*x+$g|`RBGO&XV>_^kR%&PE@qAJ6Q0{q6TzvQ($Sef-ol#@vC zBA}HwWy8SG#uKaxnJk)n7X1F3C=xyG1$Vm%MZHn<(0?Q36Lp@L{1eYijI*yXS&?v( z4JofS9un558`HLlYcG}2f7_77XevTCYreY_8_?iB@u~NT4C(Uhh=dvyL~PJI71bR$ zq;_J!q`OnrtuSR`DWekZaWFk()!kaf8BD2!LcVe)oKoDUacXRIRe)bKsoY}muMu)- zQ5~4l;(l5Jw_u6mJvsuNskiCZn4SI)xu~LIq`lea4wvX>0_8();d=APH+|k^9BBhn zY)0-}or+q;vO;6nvaQuDQIcLpcQ;Y&Jou`B^Weut#}tT|U17VqJ@~rR{FXy_{bhe{ zK40`DsBkmtI8>{gM75aa^)+MGs>m8PyWtwq$g!v6H;uo#f$!NsG(kP6lsU?&K~V7( zO_AlR?j9y@+CrsWr?BsBajyqQ7*N$J7I}}YPDkMB?2K)Y6HEX%v^DBSW%#G9onbd& zz{FLMrBXl;b4v~QnG|=+vmm?zySEmjNMIspw7~PERO4Qn5d;N$s%gTp;+A#5&EOyP z)Yl3>uDF*|Zkq#c;Ju(P5ZG*QH)5y2Xd|Zl57%9pV46s zdMB$tzvD%MlpZlxHGsXum2k&H>J(KP--g$)$cqb6BgwVAR-)Z#EDNvRrgk_*><arP772_UcPEC)&oLiXhB866RS$GE`vO=yMb9jz?hWNA#!Md zz)$o7Su;be4R;v_EW7_x3DLEKzzR^PEsG`SQ@9qU1>+`X^_s9zR!9@ivID_ z9#t>nWyWs80{h_JKCz&#v#+8Gr5b+M97izpu@Q^rG}2r4s)R_%3}8-l z)P3LlBF?&~Uk`p`iyRGuL|sZhy(21lrmrARcZK69+%O50&#rABJA|5L!fyAW!Q1dF z0Oyrz9XokMHfi61D}SVW0a18cbW??e6>gNq(kG}LQXKd2DG`7y0|)4G!0;NWL}F$= zGvYC^V0&?>f6>0pPj%2^Bm-y54zfR<_q97yxQrC5uN~Ug!d#Uih>>c@eG}+GzttSc zPGZr27`ujn;(b$1OMFC*VKTEa>=!%8Yl~?abN2Xl4W=4DlO?>+a9g?zI3C?UwX?Cs z{2uYujg<3F?_J8>TwW-}yRT*#+M>8avG3WwhLqX=u;m};Vzqc)eP)qb-P^`2{alKm z-L|I5b8OP3T#P<3mjhbvNBe1>XV>HG-{*SaRTWFn*@shxhn~Ef9;7w zVwQbtB8M2(r{~2f@w3?&L&_>rk*JJ=rGlffVygGaXiO(aUfzmPc6N-g<^u5%Asia} z!6~l1ZxF87%UtVaO+lA#9id|DA+{p0SpRJW{@~FfmQXYV2(enh(?+lNRe}M3=m5#; z*L_>j9{l447a#8g@SyUD5bERB6*y-%IDjRU1OLPG6JfE_#6*m6l6<@hc0IOZUI&v3 zF<=y_7)lzK#!3>~OnAh6Y1o7H?k7lN+%Y>c1Y?ElP~--$$Ui#(&lWxm3~R+O{}P$W z(sfpe@T=IY72i#2A(xE=S7(Mh0W908YW(=)Ld6@&y>BwFSL+f=@~b2ohF8tumN$ z-U4`L>QbBmzI1`*j0X95BhDK%>D9ci8>?udwqO!dgH}?NDZsb8Ezn)T(Ei~ z)zoL!NMmUY#FCun8c@l~T1AwvG$5Vu1D}=Mmu1vKKQIqt9xnTWQx`!cm^%`+ImHPb zQL+v8TZX_r40KU4Xm(Yb3q(c`f8*n#)9uFttskw)yhU}(LasSU6#kEh2AjgW-y*GO zmY!IG7K*TL#o1zVI)1CN(@e1ZSobK#wg;6t+W|ibUDdU#@Ty0Wy}KEhOr`@H;n-7p zFAkE~cn+pzlN>DBcFl;tG5`gyZ>`5jQX*-CHnph*8~U*%n$3Y-1{#g2%h7WCY8?Uc z*g_xHN^7F!Py7rW1@ngUl60*w!ZFQI<_>FT@et^)2Q z<{DqIuF)D5f6WCfxENLgj#7rT*gNkXN5dz@*ro8 zeQcTnN(%2l&GGkU?Jo0k+?5WkTO&xo)~(d#t#Q?TJ|xa{$G-B3)`X=|K>@jeye9D7 zcyCT#G#mA`8u-T-&#Q>Lz&av|8zI*t%x+r0=mEc)hu;@&pZU`vlXI8oy9T726Buns zC*t;z@P6kq33^)|L+bvbF;#BAj3g8pjXoiOL6>gdJEr75^mE7SanzO9iJ05gAc#=F zz~HU4jVh-R7oS;m)*h4=$rOW}vX#>RkLx4d$MVg9-O)s>P^w(e$m5c}6s52y?&=5C zw>v(&YXh-!k?zD$)yZnE__M|BkhUK#8@n3}=Rb3%HU4UCIHl~SmMlS!R*N^B&S_IEJ~E3Km(ZPG z=o0&ej>j4%3adL}*B5wC+{9kyF~<`6V2Br@Cx}2?KQa*8`F({zlxvBX0Y~iAZ4!GJ zl^7(--EP%IrXgW<~}x{O=U+ODT@xZb>yW|FMoGglr}|T6A%{fAMh1ZYqY&8<$1Mo zEUA7V)WH5tQr+GfzrdgOfQY5(h*(qs{>QtTL$hx$@sL<3;aplg)Si!?DedyyCz8sx zk7e=0b_mmz1$&1biu~$1&br%$VmhqMbq^}^%A444Fd0qz0C{fK>o5&;=p; zxP?c(y#vN9xHYlgIq1JC?|gm%bS78hX#K|XdYy6!LgiD@!Kb)TE@YJL#qi>G(7H?S zAs6(gM@)mYYzez=gnrk>=$V(>*fLp+zH020(nY_3>H_L^H@;fn1y8og1{XwAZ3c++KS;gr5 z{COvgb${w1+<=(i5&(C$i^S!i{+-GVS?C$q_Z&e3;vvV=Kfu|v8?%uS5@rL`SVUjbk+$S{#jQnk8 zl!?kGGl_VmscqNP#HX~Y@}+WIM*v>8$h}}Wn!K*94rhI>6x$snQ`A=wVRQhBSfdXpc<(FH1XxBwZmTPCO=c| zCryPOo9<1~uO?}#rgVo3J|<(?Lf7Bkg=#8WzpQ7R`-QBclgXTL+?}nbm!|!gi0lCq;Dsv<eLrOjerTZ#H>z^jEHK`}lAiU?#4l|h_ zJ{W$KX_Oyoyr_T2VL0Q6PHh8zP(p}tbv_>X9VnB+7I^JfwbYSbG}*N8V_;O{(JFHi zUlN6F@{};9j}@<4l&Q}!%#Lg3T;9hyAz<5k`f?WJSV+0BXtA%ML{e?{p(|2qwSeU) zHs{4tH|v%p)edp0b0|Kyzpzvj2lHu`Qf_E29k$N?iubh3{eY2i$12fRWQf^n6wP>> zebMnS7D3?ny!H6_T>P=vTjBMphR9E9(6GsH+rkMIiv86l(!?aYkV)zv@OsY!@**_R z2;nCcJtYWO568|fEc_6eDzVvS?pQS$LxTL!GzQ&&BSZ&3Y{XMn#vewiHEdHU5mC z26+mj58yZ00&j)gy^X5z{)blNV02x1L`j)l8>&U3eW;V=q&~GeYY;vVq67Lnp#t83 zwB%6?kXJ1=-r%)IHLt0!`UkJ5cm-iPnZq+s@i}F)g6`5_^q_5+iZ9ab1PmS$BzzENhmfD)X^Ajy8a6WalWE16>4rx z|F*nr0r&Q`4)x{+F`PrBC2uWexy{%ev_6)hXqM=qy|HVfJ;(iiAMcn-ulL{=9K%sZ zdk|MvjAnb@+4>0rhChN5hN@W)8<)j)v>#>S6Tt9$u#NP(g#kU#RB~DIi8IU#pmBfr zMy!bxFd_h+WZlm_ts20Ydi7`kMlY)I>s3OGLH=PVQb4&!*!n70&6XJsyX$HBK+L?{ zfH<8~7^Xa2f|S37P=z;sOK`0tZ15yds3y8MzgGC1^UBRQ87f@lMI-Y+u*v&L@G&Rq z`HjZh5g%UsiVtZB@1xa=@5kBnkR!C9-p{@`Mb(d&=Unq61e#X(8Ih?LpmAoICAO8T z_!ky0rFv2nTz@Z~QSmcrz8mCE?8{(TNToCFX5xH{2dwS^ia3ori*g}*GX%ud)7iQc zh;a=bk7rb66Lyj;O@7r?iveSCg;A*3DuB%#g&<^=&{vp}{NuQ&DK?12l)MiFNSfWw zk(uu`H{Pl*n8EPtl43#!eKWyAADD<4#H~{pWw4O*PgASlw>^wETF}u51)#1%H}iHH ze0Q`zVFC$Y=?pNGMRBDJiOG4PJQyg@)P(O(-4#cU`n6CiuNb4f1~!NNDpM^_D93Lp z)JkX!VXU&ui3OK-P`nKTP~HY6o@^W_L2;W3O!<%sQ24O;`tTL%a7Bk_wuhA*;kGsl zNAZAJL}(gA=$Z=8WYW!{EQMLvtPi>nIfK zLISO=T3FY8nq;D2;BZL?d~&PT@fzGY&8%{dF)w_TC5Oky-8khbNX*{2_Eo}thHsFD z?c$rIbWCBXU*&-fT01wzG$rJ@is^SATKqB=1+Pp?D0?T$&O6U-L8p?U5B!c1dd0I% z6s_l>Exg2k<;&$-#DnEvN3-wDn6H1KLgEOMVgF^*hU!j-=*_X zh#r>bSjLS<+SOg3V~}n`7DB@C$-!qfzAYe|sH`A7CaY~$Jv!dLHwA`Y+UKpK}cmQn_sx;_SBwe<7abIm;LLeHoRJc`xG5g~-Bb7zn=;8=E0??L&bdE;(WYy){}G)PNzgD{F;_;KbC zf^~egf!}RzWwuJvaolfEafGy`kh3ZkBuc+p|2x7B9veK`t5ReKdY@o>FCJ}nW&UmD za;5WubR>;@ADXf*erIFi1H{u?C2%%z2CKDXMsj>i5x0w=nQN5CF9e*2~x0xbW#7O6x2`nvQ|j_= z@XE?`0z(C|=g7Hw2(bk(jl+jB<^&!-?PEJMCWZJ=GcQuBB5JS}Y_H$_ZfOc58+EMK zD=CX9eIu;q4P&b88KCX-_eH1vTpij<3g^&_+%duXCzoNUZO2+rA-W7wRLVk;m1>(z z0v-LCzWJ7RCaN6CR9J9i_KoV*7`HAx8Ur^V!8P`HR7DLN#rA)2QQ|I?1`FT>n?-sz zov`iwlR?czQTbbcaxQt9C#|D4_%0rW$ziVQ#dvXH^X`hcrUSh{q6hF^TbQ-|uRT+} zBo*aGRue5B2ucpXe%k*jJ zbmgYJK@`N#Vc-ej zaBOnpO`m{E_Ue5ZsKhU8RZUziR;aCu!Q4Z)o}W~^V5d)V^JGlw@$*)5oml{amx?=| z!JOb9YyG8Cb9+b=7;XDZTnTE)vj1slN`(Zlmn6uqRRa51+g=#dN*sq!8F|O7~F;r6Jiw~$Soltw}jeEL#U&X6I+b@w`bSB3s_&WFfC#nj=flx%BXVlQ<= zQfxiF5gd&~G3o|1%MKMfezecQNd0^EEe6oUAvTa5#$nLP7*x`iMYbT}=#6@|O)$xy zc72WlCBg3_?{y79^OP=`Qr&039TwPB+%Gj#-86Z&uPaOEBn7&yul-iC6t_Rmd!Z+x zyIXW%o{S2UUuUIDSrSdcL&3l*4HVQNwWLAw3O_n02Oi-%c0lMqOGtmc&A9>c zbg82Y)qkra0-Y`P{s?E>P~+!T8GAY%SAf$83)9?O>q01TNM*8?ze2`Djv%7&7~xBK^B^X zdae{YHpj8yZoItHn*RGlmDK>Xh>{C~5LG`Cf25_b-W>%w_RU56V>qH|n)piS&Ve|$ z5BIxeK_}}F6PjaF#KiQ>_sGhnqOcH4rN}E{PV95h^rBy|)BS^Bw-oQRX$JkJtwcv~ z#Tw5|$}IUc-v!y@E*}h;0ey>Z)37$kN`@)b%nuHRw`jG6WxCs%Zu&-oOatm9xqo8z znPCRNXf0wrT~41XH$ZkC`JSnf;8JJ^bWY{pXY{s|GXefm9WGs1a~**$hTH(n+^$r0 zm>6gh`@ZtL~-)Kv%vnUlD?+ejplw$xr)EvxyalHchc~n)3E*`Sn81hfSLS?-Nr}u|%QY~ysA5n- zEL`#*Vax;Bhqc$?Cd_j%mygj`{p8R-zesxlyYYqQ10&FF6feKmj@^J4dpI{@gDdae zAdCctR^CQgBY-V$i-K2J^NOBHLz;+vI-$b+zspVNZDV8w>CAhL?3oq{Gaj00Toq`0 zvdsUyH4PdfpxH}lxhrOmtfoY%S0K=PtW0pchQQF!w1pMhvL!KBSfQ7hb;?R~0LQ66 z`|)LD(-AHnEslzy$=3a71zJ;8N%3R;)S$lnts0 zan!X{Li8ZbBsE#l9(gdGF2RUi{29cMEaoXbtZo851+>=>O1C+MC)}LXyVIFAhoQhN zL-OWYKw^@G;Up;)=fT@wZ3k9f16EZaYQZMsBE7t}{a%hUpGw>&&q)%Lde;}WgH~Uq zV*No0RhRIHTj`%g7*E`U3_fLzD`~SeG$vH@-gr5 z`@LWD&F#Aa04e~Md-xaIdJ7!`)2I0)n22+_15nHa#gyZ3n>M^b?8K>;eJW-+@+(4q zF5{*=@$Au^2K!jJ4efOub%$PJn!gr4)oGA?tk&u7=}m#O4*&tgwOrYvAu@M z6}D=$RuCQ1`+%KW`6Wg+uWgS+!!*Y_i-Vj%3_n!b8<}xV)yu>x5C~rGrVU)5fqb@M zkxcgoxOa$0<_U-X(U=9`FQV^l%yzd6?S2igdkwOarfVfR$2L+K1obmz#A@wK(k`JI8q=~!&=rLLG2RqnxI@RF0V{HD6X3Y^ z497d@82%vdi=!RJ1eQ*u+(sgR&!Xam}22p5ybumE}Q{vyirWV|QKjly>TipD8Nz$r+>y zQTJ%o`_qPgTpCjU3?Ut%0Ko_$;3U^tvDZK9Y+BMNIx#8O452&m_u5D3{{c}zuD{KM zzW<@A2MPnkp^sn1-N19PRq%V#NVcf9SJndf!2Yyu|C2HdJ7M5eA4{d%SJ=+%ck|E; z1}|RU%oiy0MvRsceXj*0`tF)MZU2vW#x_Bi>1~4e5W#BIBwt`ce-O>|h|!_Amq#6A z#%#tMO``f$&~MB{v3q&bYFmC7E~)}Q&wranP#FV#`tXxwjPgh=O^f^Z9>LqFiKebK z8~>d4Br;Iahi#^} zIR+Un_>GMyw#{ZUdeck@XAc=FC_--J0IKk*?9}&Lb_+ucOxY2qp7}bC-KKpI$>vMg zzvi-w(|W@QzhCdMSDqJ-L$`~#1=0IDca3LQX^O=D@S95L{YGJ684-0P{(<7H((J1UK5wJ_|Y*s#5Fcm)i>r za|Hi&VOA@%T9e1MHR=tc=;rpYRn;s_7KUI@c;7MpZ>Dl=kd<_xLQDJuREzWz*o@)D z(x6HhBIMW+X^3+lJYog>LZgfMy zv>?MN9YT_gWi~w+_~D?T*rj@r81C_SMe&doK(uJi?;WWWOE`uuLgG_VVG{uJ^S8E^ zPe0f7WG~)+Lv#IqC-Lyy%UD1)w}x)wbx$=-Fe4V%)XRn<)L_ z5n>LlCxH!yzD$;Pi(2D2l_U@pa+fel{JWl|?DS#sbHTWFI+^TM6|-NZ zJs+PH6l6)tb{Xcm%czEA#wYcvu6JNxyD&u@BzsfV=7(DCmY4oGtqdS&x|xt}${ZUY z_JL;HW8a}}=)v|mFYjrYksg_Hg8-L-!Wqf@A6npo`>)^Gk!)~3Ef>jJi!k`*%p9TQ z3gU#Gb;dp2IINB4_O6!prlr@2CF*m-IB(Y!*QcDC#^we>WT$IO0%49NcYnS#)3k>q z@3L<=j-NABlcX@F&YpY(i3OxaPn2SzDpkF}*Cz~I%bI`AL-M}8w>@}!E6O>g=JN8p zo!*C%{U8b(ipP1y_#|`xo@{r-|8aH~&Djo<_H<}E>Um4VPY@xf=+3W;(s<#Qh8GB8 z&-qG)uLqzf$e0CB0skI!4#S{H=Jt^nsb#R}kgi0+<*CZ`r^p~2mAWQ7AV{c>#~5a% z+F+*Qjk9k_JXHTidyn#TH9+HEuU985sRZJ!kH{_k%u#J{p!K^(Iu>d&01<5+v;{*0 z#e54s3N;IMLYc#AYbil@@-ER39$c#}QVH0eSpgaX?nUPg#!xUqJen656MaFFybr9N z7*l$@^P1W457963;-QwZ_wlcJ+8%9Dc47{BVg`AKK_sMR!FY(qhG9w9)~eXb%ADf{ z{+i_66WgTtDVyU@Oha}l&i&jQj)YrEJ{CzN^F=a9sn&;7;q%zS5v{Ug3*M&Byniq4 zlfdwcYOPYiT;1MVs#Ya?571sIh9S)6Q9b+gaSo(PowaTxz5j5Sl(4$Z%0@2;GbMV6 zoq93n)-G4`E+kKo9_A}wwH$%-u3A&ALVR(7up>#r$-RJ>G=G@M<%b}lBt!1iaEU@P z@-l+S4K}zn+C_!N8$IVr#kpwF6~zcIdc0q|^Y*uH4H;(;xu47t}F-b6-8+Y3MTWr`E>Jy0jwWNM0_fMPJC8*5i#LAt^-zuSIBt3(nx$9jg z>(6r>f!f6ysz<|jKySq;XpbV$FH%35=-~5IE-7}tyo(_OmU3(ng!($fDmWabT3>B( zOGRLcj5G{~vrrpY9gJmaK2wgm}F& zsS=3}!VrE92!a6WX-AJ(u}8rd4hEmD>tvI3^~UL8#qDOk2t%kT+!$*++I}xQXfGKj zj25nJJ1O38_B*z$|6K|9@@YSoxaW3FZN|Ham<8<2Fgt9du}cL-k2}bc!L#~AQToe& zR+Af|Sb&ELb$xA69%N(UC_O{6y%3Bo(ktgi6I%ZdP-uhK0b}-?pKDSw=j%R9oufq} zPk+Mv*B5Q=-d1qxez6bZGxn0wm=U?L%-{hK5rJHTI`qVO>S1)~AQ9C>cDb6mO{$3Z z2o^J7%<956@hAzNha9Xy@7S{hau z?bsz6YXgRuZF;?Z%yiJ~xBm=PpFKxtnrB{fKW)$bdVX6U7P*|rjisq()a+^X1r5OpTZA1u4JP4`f-3z8u;JP@83=@QEd=WUbzx-_n?EyLLWf}H1iB_A zDB~7*TI=1uPRjthmJr&wz~edlpl{4Gx|rtJ&MZhs^5qYbV`GvXv?FvDx+6HZR^@$Vi<1YD0Q$2EvJEliep?E@0DzXp9E0R_hgi&uDP@O9D@`l=o5=*e zSD16GvmSO%&6va-+p5u`49L&ms~2Uz^Qt$wOO=7UOl-F*XS30$qMZ#{?EVnT zxZ`VUy`et3;FNwe=i7D2ZHlv;xvoPXbF9#B_WaWNso#h~+*NVl3qH2A;;0}6V~a`k z>uiul@pOoA2lVEQ1*S~(X`sYX@SldgoU})$XT3wB9vd~-#eQh!=G)s)up*={L<5GD zY{#zHviqmsH*qX&{^MXy+FTE4hBoG)*W(nO^V-87?yXBkH$UKj!l$Ctxn*VXBPRW)#?qm! zoW=v37d5?=RiGQuOGL%8f8kRJ+_14?8GrxoV^5l`IQ%z5xYX-bl9RoD02GlnXEpH; z&a&Oqd=UZusk$aSz(68h{kgMwb!#fYmnK0-6Z09;?6tDSGY9IgtDDaxh{L>`=reHt zK!jdCz9@+T%8g|js5e1)uQGrx`%Qcgue<+-P`}B3^*ob_%_e=}+R|Q!P3jik_d(XH zi~F;`*su@cdUFN+xUsgA&)sLIK!+4?Y*$WU?NjL({B$UCeRgd)lYhhLTx^z{6WDRI z30{OGnE8}4J$yE1>|(?<>TRTmInnkwqJfh;E|pQa0^h?+eVM-FJ$;RV&D&g^R1M2* z4lO}Br3l3~wyRc_YUYZbM*l=0USmRAsVCE^gs@4cIBu&}uZEy&D7KxiH6>Ths(Prn zW1Hr+BdIMG@F5ARUFD(tlRv1~b)?M`jrb7BY0zVvcbJ4W3n5QQd_q{a_#4O%_0Gk?j=6FTPKQ`x}vGB(|Y(mYlrlQx`9r!_3Iy zVmOP%@|gusN+@^IM}gC0o;FM-=B&h1ugMIeOkTzf-=Ckw(qF;ubCdWPm{iA3z=LgW z+-2*~sHvnc$w*zcL=GqT?N_^MPBhTAyzXpBY{&9x(`ZqQSFROV@@L^=dKdE|&NkQ0 zZXMBw&|4nF(#J^JomQI|MnV_t`+ir^vT`Mq zr}$a#Col9`&5>?IC{Ir)FLGo=D|=I7S0DB^IF*Vm1HPXtAFA#m`p&Xf@GTT+Kb9dLzK`Nr;!8nR$K`G$+Q-M1}5TVo1*t0I-_yGFr)djm{ZVfeU2i-E3y*Do8eNBln zKl~cE_JHZU%=A{W`^}eobP&IE8F57P(X8aa z)(%bd&rA>Ulik$g!>VEE#TtI?zKTWTkjp0J)Q)MbTjp3=DLXWJ7hiPQx5s-yL(3M@ zdC!2y`k2n}*pn(zH{|2|-91{P%U&0wOwkKGyM|(DQXX$rNMaY%x+PZ*Gm}!$xtr8v z#Fr-X(AB{Q#5e|p=yNahu-CBR2{WtZ$NYYcB$Rb0zNAuW1xH9T2<9)$fB{8g#HuFP z!ZKi;qZ8~}?M;=)W8F&0$y8kG4I_j7YtV1%i>d-BEpRb(_deE-Wb1B1_gHj|Q45)P zbWk`g!`5vWl^5}aG{@vfaX!s*{KNXcID3Z3)oc3@c3AVA3T-@R51U8vTMjf3`LoP% zsswE9Qt}Fl>#x(HzOu7eXY#(iKydl_&DEO~+4cSSgTcTJq^OfZcRoqZJ=enlLK@<9 zffO3=4p9{O<8dA%pXCTk`Vfxn_ovXnzRKkqz3+8r2T8a}B(rzLYfH4?YTG#wsbjL{ zn8V=TDX%yfE;&K@xsTAUD}o~oyD?Sav_&Cs+f5y!?@XZ7>uenIN8LRtld zyZf=W=2>TFpvy;B?&V`v5gy)0hKbJN;}S%jycW`P{BbzvA0y2j!i$w{GgO!)Eec~i zO!SFt6`%@O9psVsUSyK)^KJt8o%hLgm_CQ;sU}!OF!IPIV{ivVm+Lm}O`-Q;!kZJD z+yDn6+nzdR5IB9FRA>u%@NbosB{Zh7xd61^0l0x~LAB!!kuiWcTxWAC-EvJTX!6&PflV-}& zBn`yZt%i!YfY9jyRA)cKN4!vO*RCwBC}n7bs#hReD)nmZ02||+R5(>QjF@F(krlMf zj=h(m7MzsaT~c{ut4T#lnkhs((h%b-5*%46^FkR;ChJ1Wi*FIFZ*Nt##t$W*zW~zN zhCl>yj+qwTO6=2-?<$iA42rrUq?6vNNFWLG9@!7?ERoAc8y6HlHKMYJ`6znBJh&c~ z9eKh=G!24^a_Up+bk&kJ-_|e+YZdQe?yFloeX~1xt1ME9;n0$& zlsKcn$y;KxTIC))%2sFsEY`vVt$YW!e^EGtif15?B|nCvg0~M^)k0J0x;3kPBtJPI zh68is?}m=y$>{La@OxhTQrxi3A8K8fbh@XHr9>I(IULuRJ0pfd>#{U5`9c@aqsxt2 zomyFH8-9;(C2eAV%JbTTqB-1-LlKxpsjES31=SuxiWfLBDYp^x8Wcoj^?f!fKmKE< zR~@Is^Vbdsn@v-ONY^t0n}@r{X(+33Ks=D3gCv z7hid2+*V@NkIXR^p9?gBQWd;gZg#A$I7eI$_t_0SbbTyrc;2V8M~7|JLkE4Rv7y(Zg%Rt#THDc8D;2sVD12Vqp!w4Ei&Xn;f4m#8F1==>d@xN8K5> zV1FJk`j?6)7%rTiCfNsE>@_>lPWD#@$$bVZ-{|cOo`g1$-ro7%?`1yYbHvnNsn%9h zcgK`Un4KRC(_bh*0>0$21F0AQ%oo6RkixM2aH%-p>PqEDCHs+RQx|=rt)xvEZ1oU1 zb=Hw`aFQ3OUywSFG^@VtM=_Ck`Jvm`TK;NSaDU!&OG=aZtm*iH)4lR9iZk{6qO*#Wr9N+Gv^Z##rmIxxufy)zCZC{^0XcPAX-bp$;$X3=RD^9%8W^xS+_IvnS zmvBg3fV{}I^&ll{)7b?@qLdETRXT@q!8){8Tz~|QVN2Ha>oHs!=H**K^IjXRA*mzT zjOJbjKQ$`HMtantOc{yWaZ(vi5bpJNt&|g6&2!xzvCiDXa~<*pq++`x z=_j~;7m%rF6HzE#);8ALrC+)nExvPMC|(}MTC}n@&W^8A^47SGiD6e_pG!65{1^Im z8+JK_o_`D2grzAZ>7$a5L%4K3T5M3^4UfqYu+9bIxMKw#>#Ls~6V+*|S7fwUGj%7_ zbf|oR`A6%kE<1MzNruX}S1z~8Db`$ph(SFx0*fnR&%TXvNS-n_T-$b(Xr zq`DT5zl#`al-kqB47sM8JXon!(Wp5}0^^}sfDjj|t0#(3K{(7a`V>ft8p(YpIT;!1 z24;O{0w`=x(4;48gQCS$C3^W7tj!ff#iv)yIJTd@+vz=F`CO^aj|W}eaTEhGRq)4j zftgmX(ws;aYh%ndkf|$?yc+nR^^t&7IVDwTszF!i2YE}dBdQTpGMt{d z$9;=`HzO|B7Zr{-de|Ex0u>k%)@v5Fmpi+P@tf$<9u=G$Gajy+{M(w=G0Z;elaM-) z$Wb+F>?s&Ki-G6Jh9zC4^(OviSajEM`0uWJLkBP&&7Au)}E<g$1B(YsTTLTeP5i72M$)`6l%4I2pxzzJR)hWQI%4t)Wx1tAE|_>&Us&8Lc) zesymt|42WQPe%%!K*f{5(-TVfQ<2OWd_3lPzwxGtc1jI{ocmyAj{?Rb4TWPbwh*dt zS&c9eeiPJ?>3({RZ|Td9TOtGk5)&LPkCzRL|ef3l{5}aKDOp%`Y ze2(C!CB(O>NL95w8Ttd0siVg30ZuD7K7rdi51?2%cr+#0w3VsJ3rDr21M#W_kYLeW zlG>ZVb6}C4$H68j5yS7jQn{)R_4dQ zvlR87o_NxIp@pJb6f&SGc#{+M^H`w(C%Ut0hF1=I?1>2S<~e(>FH{XKe11?Z^0l!; zO?lf?U_#%F0AC!^AezJO`FT0D)2w?pt6EoH!P2_j*4`;7cv~R~X`2h!bdYq9!u!WL0zb9fllD83&#ZYe%W?yyUBa;2`)`KQRNxuJs#-RM3Y8rriO< z2alFtrRiyfo0IzN_YF>KeFQDz>}m3qB4nBJEQD=NT0yK7@F5-k}t1}m0o2HKK z)eH2C-;7(*c*WXGZ0mye8M?Rx>}WRS2*icONqkt58 z&^Q2}OIL+2Jy&@xKA_L!b{S8AM+v3p{Jqs3$8F0b+uPVIn(K?GW!bsZ)*jVB$SXL| z-tR)LwB4B&bI9)zkDf$;DS*7qU%|q2mW~^QH*SyQ!=YuvWYQca#t`wWDcM43e9Gq1 zxbK+4-oWoW7R#OUL7O|v_@CZD(ywzP3-O=7 zm+wL6Dv>EQ>(Y;EP@LUirCS$7 zF`U6r?T&}k{(veNT5H=NyA96bsW7dp!Oll#0^Ij?noZ(uW*CUbc=K<8s2|Lb3lVgAv%H0nPWo>r} zCaJuWv+ODoZX1b16kFsj5t~D%n$D^hdvQ9CQ^x6nvq7$Q9T=HYY>_5KnH+i*E-vZx4* zp`>jHQ}%lu7128B{Uv;>Oj7n$BG?_Z1?6)@I-!UsOj(KwtmfQgVKdhv5JsybZ~*1oiw0^l~q7-_ygjye@N|LhJVPsB6TqCBt#pvvX-f#|?I&QnJ-%kZ*Hc%(NfnGr5~H zgVs@8N3P2xMBZcQap)2)^AGEDu;b<#Bmyk*Qq;}QDe6)KSB{s!u+|&K$P1cmi`Gee zzk^=pGr0c%k>KATwo<_}2=!@)M;W0Vdd(*F{sI4l$jYPhijL=@cIGnlDiG}NwS<#- z09x;om_pnnqcv$wtsPVDnmg+q5&h=}sK!ovmFJj~tp{70N+MZLaz@(;KF|W7&5d~; zNObUFkHX!DThv0un=DeXLUv(t6E5Eb9bQi9;!^R$W1dgalR0UF z_Y3Y?!8`An&Zx_smjQQy_F2D-1;}3LJ{C6989=xzqrPn*3EEU&(GogHKIfv}|BXbJ zk-Cxw2YNI#B8*RjwXXbq@=`J>0VZC%;|P56eZnuZpk0es@7ZUN7AEk*dga39c`B2Ho>r3hZq$ied|;Cb`$NuKDFU>jNn zQ;!3%P9e4ij>IS+bx$dZUn<6Knv-Qa(3WdruX<7gA|Tc}8}{?kgp-Rm9JvV|Hpy^? zVH8|7r?Pjx2}WNTmz*x3>3VpwtStewGPuu2qZ!M?XQOI8>&E4*VGv3pf!E~Ocw|z5 zdP&bt5H+5nvcR_uty%vT{-gk5nY~_85t`4N7DJJc%_l!p(fb8hLT~(Xr>@O?`LsJt zt7?Js{E$Obe>(e!;RX}EgHw47nftQkLz=mYKwlE&dF|6J{$ZB}17FE-I~2e&H<+ar z0j21p2`cQW|5_Xv*MTDo2`T#oVr;Yo=)ddpr!P|igft37ZU$@9x1m|q!h`|*DgCyU_QI1jZjM)W2;=wX ziO9MsqeZ2N%cRmwZ=_7p5pS~g4rHj#RkvILDTJvf_riB%qp04IHJdTeR_-2lgvN2U zGHZ;sYT8O1C*C2evg6vo!k_r2yX=KQzA$`|RQ z!AV~13(b$s#7!f)E$Ov~`cKSdD6QwpQ$uaYOXecB5R6{1Js3^FT zBy8x$x+J#x>&jXR>NL0fhxju&b`s-pzTLU$MJntaI&IFi;?U4URK*g6cQ1ry%$s#k zOR(+oI?u4?ebWH4Z?Zrzq@&?|56Si&vDaQ1pCe%BXc@tBGrQ8B?t$;X=<6?|p^J@M znNawjwCwWAyv14jZ%_nR{gAzoc+c)uBduiKcB>_BY8kk7VujGi7>Gutz97b-_Ww^- zPYqwb%9{#^u+3k7Q9^?Z;912Xp@Zg(&CU`ZiVccKr>xs>A!y4UHd(H*8f*lizA%XO zKU11e*jh5~U#CWKh6m2*p90%S7W*faBhH6YuE2M|`(8(F#IZ*2sotkOXyji@#sjZK zudac9ROC$6eyqKmx`}nfgEz^WEaXNawGl^ui42VG?gPHujm*I|GB0pgcq$Td{nP!> z=c)Gs9vhM9>qFpGocA{uuou?TO&uvWSIeZQ*OIU{ymTbwOrxU35K&{(ZGCUAaj?m~ zkumhdyy?}oH4;J0u!DKl-0Hz!Ob5K731J-*Hyj;mwJ5mQZWEQT6Hi3olOZlL-S*`# zvhC&B^6mMTSKkU^bd*KWzPmlq%WUESaG=*e^R@j?FPP&&kB2(d(ggD!l53Tq=jJ_} z0bv+>M44mx^1nBL21u1;*NM8LOaO+qJjj*GT z5U2Ca5;fnFSVqgL&(|{7&_p{u6D)@02Ie&UXx7=hy11BUz}N(y##exZkdRlw1MMO1 zLj!8cRJ#i_M6KPgay&t67dIJ3^f16>1~KuT4*x}ZC7tuV?QP?~7cA~V-j?3wWt#rJ zAh!zw`+=U{2O{XHMq6pOy=#Mnl<(?bbWyKr-C>TynDc+ zUxcV(6+O9V&=}~&bXTcmT&3E9xnw4EEUrhJ6ISkM5K$dnzW`w^gW3Ytjhbt};ceMj z)0ssJ?%Gfcvfo6zDS`tmxw5&J$ODv2q<-oqfb{>6ZGt4?JVsfBpmU3{Wdkcc*;52; zC-iph>hj#5HV`!Jq?t_=yd3c>Irs?a1Rx^mrgxE*;;X}ES1NbFuD4|B9%ULQ_jtBt zQh6d@m=3?H`)%zfE4v#_xC&9uBd3n-h!wE%@CQzBqS=HF=|5V;=R#z_L##0bWl9e7 z3{XwBF^Oe_3Is|xb(PA4;>h_cC_LFE;4W>W!b3|3R8`Lgd7hIS-L1}^c<{-O)UtM2 z@k>O}VsyO((YHd+);^D5Hy;ZOc`xzvZvr;ia1vWV)TPkmQK$);$G)(EC!v(e*h=Jt zGB#N~BGJIe(|6O?G%O<}gS$8HyK4nJ@^gbFRlPC9Y;F|s-h-Ki|&uvQ~FdH)RsSgqsPNB#5*#Gs79p$K)TEqIxIMKuQ`;C>sXd1W&d zqx1%|X{O7`T*is9?|AyMRQV4XHE^Iz8 zdi)D*h|0}z187P$lo#w!J2K z)60|=DYJyeNjMg7zMoBb5!HoACq>>am8B^XTj_R%Ub1WlBKO=gtAMq5LtxWdGfSa1 z!^A>=Wdi&Qsl8Dy+Auq;v7_RU6oeQ(=tsRRDg>`~bJEBUT3o!cZ zyXC>UfFAac6O3jGS^ygL@oU;6(Q=v}iD z)3xyT57fp8Hx3RM@n-un@g=(gzA9(J(K@@?`^k$tT^^|5?hd>TXNyqZ9|ry1!7aMD zvCk@dVlx}K-)nF9{|EMO6zEJAzjybGJ=^4>MIELa6)hVn)aA!SYZr0&M!fswuMr3dg(CPlH^fXvt zIqX)d%>O`xD2Q^k5Wf<7$}*$(*RIE}Mnr$+z|Xx8GAjObWMc+%Qk)<=Eqn3h({e8@ zEH^(F5>e{xWwulIecEq1wA6WjKR6D*K0FEseJG-xCUwUdFKr z9=f%m<>IK(!E_}ygfei{h}z)$%9ei4Vp`6P1m}%bn{qkiUqYaUNv#`xX@zozXMNw4 zQ$8CnS{h3*=3G^HnD9RkOv6u|4e4yS1No(H!kzb0i_mPOU(0N;6&OoMJIpr3b^jCV zwy(SabgkUn-AEB6nFL%j0e{yJ)p#4X^>Y_cWL9DHSs3NI-yW)f1GP%ay%Z7M-8PjQ z!CjAewyCw{A(0Tg!5M~`W)%YcrmwuI{-PP{b5X8G(2TsXgWssV>pC$c0OhJof8%29dH`14w3rNG5wMSx$pVQhf>5x>%{;7|#yqn3&!t6BMf912;K3U%M z$d*(2)E76@GCoTL)8Lj3jh`+ZuX{T}W}!+!qA{xvwFx*@#+fTg$xe&V@#kHr1{@QP z7j>!LjpDY!Gk#}`9|^%ID!hT5Cg$#x*b)KzCH)53gM<8DTTjb9ZCD0p12_QWOKQ@cw|$5hjmYwUIZY8s*^TYNKwRMqK-WO9MgT`(*2`GZh2 z`XT5=9TuW4y&Bu%GMx<-ca9=lQrY8qwdFlQu^KqpMC0Mcui_c_NPt|JuzA|xOO+76 zDdyTDSmtn|S&d!%6;w>cWF_=h@1nnXwnuqA-p^%G*g--FL7L)A&8dc5M9MTkAuT{B zN+^X^h$oB!ayEafY`5ire&<=T0G`7LQ~8><;s*@Wl}@tgsIj%S^|W5cKzWm9xW*f+ z2gEbeO~L@)Yp2taHKapP*?43i?judzHLH^QnyRtfbzZBzr*p#u!Jl1?Op^Gw?&eO# zGblOS6?e$Sn5A9k>>b-{NIV5224@_(8dhw5li#@+1x`wr$$Ew65tuh3poZ zFszW}i~PxE&;Vz@AysPskvCvBePhXV4+)`lMy`;XC{FgsTGG1C|M@R*Y<%wzC3;i@ zY(8UN*#q83O_M47qZwkPTHx%*p~Z!G=V0jJnLBAZ{a;o4ZbaK!l(P)>flhI|DE0?w z!4(S6O-~-=5zd#>3C@Psj{S?%Z>(_?TO9O1T3@ILLy#jwSFCu@_HgWKw zPvH7lie_JKM21rYH*I-!X0y3vR2o-lq=;_cjau;V@?LCTdUI|D95c{;Mof}djH72c zssh{_4NEicK5n9L9!{KdV7DV-0%6DME6cxF3>_4Rq#uWE+=bwlTA5U@Be|~Ph+X{> ztPX+P?d_*t=F?VwV8qRXRcViwhrSOIRgbsLNAGH#W^mtmqp{P)rwT-g>>+|xKduh; zbjnHAlCB3#N}}RrgT{qo*tj;dXt}|B6HXy>!cv zdE%lxyRu-{K_}0gpnh1Lo}1TL^ljBr>#vVCxo=B~Qkz&N!}PqS&=>7jB9&Ug9=K=g zbA987D8mxCvKJzfFpYK9=E`4BaF^-R*Kg2D``y60{7AiUp&16ME#S~%GY$&OYrWOu zxARCGa;RrVd$^{#26~GF234k1h_uruheT4AR~&y(%_##rX}8m}LlSdig}_t)53o=nbc;gusD|$O zKLpED6O@WKX?m^1d)T@l6u)H$U0GW1yjD{)3=H6?zjl!?2fivGY%a%pg1iC#O@2VP zX0`RPRB~21#cprLCA=PNb{nbBVFa~FX7nNMu*xv=NH5$VK=k)tJFIK(FzrxThSdz+ z2!T2;2T?}Iu~BPHxZ~&zw&f41?Bdxom!wmLM*xDMDWMu@&#YGvevS6k0 z-yS0Zmpr}*=>?MsbjUt;_PC8FiuxrRAK8wHF#K$fJd)740C|`8)?L| zG`OwgVkgOuOE=L-kB9!`XIhm??(n+1gkSXGEzcts<6Ch@=sb#*8id-B|NBI`2llYx zeuz;gih{!gmIa$BR$;$PK&zgAAyisAVBWPZL(|#JPn#1vGEC#ggtZZw%hPd zv>k}lVY}KNHcyi$^E7>rH&#N7YOz7&bkc>x^2NGj#r@!aiC^yMq9TCGinMJPMjzUi z$<$p^@H8M)>K$q&jblqycl-r`nz-=wfM?`pbM!j#B9oK*V0tXxX&Z0RZ~V=-J0PFu zuJRV!vGBu7Y|OKNozJ6k!GN@3j=SD$+o;TFj;M@Gpjv_r^94=~6 zcNLWX>l&&<)Y$9Lm;BhP!TXygNSx%z5{jeB@YCW~8%`)xV{gIke?a^HVdfCaHo%5z z=@d(Rk7)(xhT_NED7vw_q?GU>dh|3}(KT};*S<{!L2u>``3S$1_Z)~xzX$#qxNDS% z&K=q?Gjn*$A0PzDziMmu@}{Zl+mrYy>GQI2R@@w$+oInBNwg8CnlI^WrcfDDy z5byIz1vE~9Gs`Si!|Et~k~10j3^EWVr`Kt#iT0&9GwG736u=kjBCHc4-zW6@#TqbptBRfH= z?MGZ7j;a{yOM3>^oSr7xQ#pM_u%yK8hyO4BK^xO!Q6=0$>KZ^s1&Mi(+Iy{x{`JjS zRxOH#r=j<@Xc_d|Ft#V?(kG^;wCht;uuErm8aJOE%m;qQHUL}z$uSS{>kd3-1|Bd4 z0-c3wZtksbGJ6uj`&-T?Aibm|a%=YwOQ3KF=H=ypGJ5~Bk{#33Im9D!4*_TY%tk9m z2!==@4r?!yq&+%uaez!kxc7pUxXCHZO(Hu;lw^SFzLPwMS*vF2<<5v1dI!j@D%#%l z9SW|DCl^aOl;AN*gnKru!`nxgk&?$6*s?&(t6(rNGZXqYS^j|1Q1}GB4X)8+_`2-gy=>>4`7=jG{t=ioeEZbp#*C+#( ztlRN8m%{`Y_2Dg5UMX^Jm}#k0T?Ci}ZBht09!$>JYhH>8_Q|7jw)wF=K@_3%mm8U- z!q~K+)^a}9#$^e*E^073U}>d7k!;euUQoB4bq}VsJj%7q`hy~AIb1z$&q#jaQRqX7 z^4V&3!=t_ZkM_TYy$hW*@k@B0RuS{;BYh} z=KGCPp^tciafvHjvLjP*Xqw|W+VipJ{BJs|1-~xj^Lt4P6Llr=+@SH<4l<$v=<{Xu z=lE+{cTeETh$=3lewsjuT=l4R*DXmNOx9zRx-iOwKeEz+r6rM($5YgR@2&_J)%?_?u*F;3*R}6)Ir+_g;p2aO4KVm7LP>HZv{{T* zrrVum7^nXK0>8(JBsHzie%JH^->a%Fei*3r1XRA-P6M&wG=;libca^A=}OmUJAq00 z>E14#_YTkG8o*oEa;oHZDl(XK&UimYsE>}DPuJfd2^!T#h5b*b!X-hUHumEY>sM!eV%H^5_(06V28cp%xtYYoTwCjo;;)w27(?#luw)Qp7-BUXgwX$vi< z>dSy=8yqpr94;eUIAw7v3bTBY@{9HD4;@)=2&^(wU?66Pa181198bfqB*e<*CC}BY zgwhnvMn$F!*A1_H^p`wo$WQ}TuInOZSAzw`BNWuK6roKctmDwEIJ!L8rH6`;^o4tf zkq0Y{W|vep?6w_ajKzcqo9VQS3gPG8tx5ArZgH$nuf60H0)*?>CB+z{MD~N{`JL)7 zS;`RJ(2SfqD8b?n z8xU(Tp{V=NtAKK-o6_+eeRV{;m)4ZtY0Fa(pujczt7}(Y=I1Fbd|hfP>d8oZkoP)&I{*EQ7${2kYf}M zG5v4YC(Uuq@s-+Z8M9NTd1Rmz!|vT{x8V%U9RPYOqIrs+)#BwST_#)>M4In!clWby zRW_Rc;@qtXCRuPNN~n+~PRl}fg74S#dyv;od)n4J&~bg;NQCm5d)9m3VWx zL+Mn_AiJl(I~;ue72V+y@ppOcYLP7dQj1&mC63)J5ru>h^5L`X#^We~jaw)v+Ybv% zb9g+J^mo$}9$a)53^ShMJVqf~#X?Q90PuKy+l;71GM}-EDet#_1&e$5n2x(p#&ef( z_RR!!7dL92uu^t)Fy-Va5EJWre0YfklJ+m83Bg0Hg9QsyUwNXY&_*O^6YI>vhTj`5 zmzuRf{)IE{#oLCH~J3jEgvWcz7M#kY+=z5;CijP{13529HDauT3`3B z*4k0l1z=0QDG6v5lEc8wXhg*MoT1*9b6OVz2SVDD(vh@C9KQI^hMh|T^CyQsW@3#f z@H!z>u&V(K5MWfhT$ zn&}EA09FWAEW9JOXq+^1WFb42BL*JQ!zYD6(MbCMNkF#0{mU_Cg0ual;!dC#l^2vA z^t2eXUlPm=jRbX~$L!p7FjX$Q=l9nHKF>-Q<0H`3M+@vky!P=6w8!Fb?rq^4J7^@SX;}zH^^h*%v|e+9Y*}e{xL=Nv zrlVCGgYT{1Jdr{mgighsFW-(6)Jpx-nh;ls7t8tkXCVWg9IJ?*sNg}5av0h?uQTgE!!K;4gi7QlDXE=h3lXh$$n z^2uw!-rh4%Z94JdR%cYf!z-ddpoq)n$hw4k-cS37x~0gK=uDQzyl{=J3gbS$n_BtN ziQU`AjHXvOPBc_S>s{!Gog%Hc*WsDOFJp9#btn+jv*6PP)xi;fFFJN@toGyFV=?AD zRRhJVl2oS~Jq^Wq3yGaIM)4#2wOC-I&Nqx5rA^SuJ$A<4$eY_|BHsAFBKa5-^dMOQ zb3)2x75==Yf=#vCkAI=_AbZFr#0VEIlZjm&Z4k-r3KgOFBCO$>!>Lo8gnHh?%1`(& zF7~(l@l^ER=#}AKf($_SYBuTj zID@ZjL5&cba+LLy+x#M zvQbn=XFrwy>Co@H+D{6lSE9!ux^87JL3)!ncHF#32 z-!?(7Q8n5GFcO~)#{|O1HeE|MU}~O~m^=IiZ7ZRUTsc;2DW1(gjZn)L;T)^f5FCZ% z{JeAIc@j)#RBigV+ceefm?*WR<0f6l13Yn+CqAa$daKr1TBYI!{i z3d10@??BxZqLM-(F_@l4Ot)hdkNIf-UngcBCp6TTN;S$&7@kh4$~fd|T1vM`c5-nS)o#<}joJhgBr!?2wO2{r(=hx~vI-9`|aSMr!YRNE3Jk zG_?DtM@MJ_R}#_H)7HG4&h*4InyXC_+Od4&kC%p+taXlR0zj0)j020QyBBz321E=N z*9{q-vdGAt-bU#zk(!W3$DBpW?KLdjnqL7b3G@ebcGQRynyi&U46-EiWx~Qg8%@T< z?GgoMQNTmaiW37>k(bp_X`@?zZElNQHD&u*5pBc4kpdR7W1ey=B2)Z)xm%el+rs*p zqqu;E1l(Sw^%pZLLny;a2HM+>*7$zF^<-zfz3~1nJvI-yV;{yndXK5N_uSopf zMguV^=&GeR1LCR&z>#sTu;ybD!u^)32a1O1?-Jq=3wtZwTqb>IgQC(M3dK-~Je&KUzv#OxD$Ca04GA*xiS>@0 zA0dXGnX`x(5nn!B_t)@-jG)yW7rsdA5@e{(J8viWB|3Xg(FA6_a_YOepiU2gTqb!; zB2+6Bt!-0bSDPt+G-03|@j|L@+c8c3Q4`71YZQ-h2`kp+`eB?|BTDcJ63}4GAv`+R zxZKUb$A3i>^K?BF*?5=zw$h$AhY?wieq6UwrFtbL28yWcr|hc+{(Coz7-CxBVmmqi z>z))e3g*UW`V;guX#oL6S8^dzd6f#plgze>-?**b9^v;ZPuNi#Km`~01US{*rTi#hX%A-+tk4Q&1Sb1^!ukDYAqJqjZancPco zqzo_VRswv^)(#0gGnKD(dV7e-b9~buZDH2~Z^~``UN#hqBuacjf4P_-0D* zpP?&mLiL6U9cH2MvE$HIL@!5I?q}8(>m2kJ8BU^XqU54{yDj!s9>$3%=vbL%auK;{n?%Muoa23sH!&2t#i90*o=M)T3EqXd6@j$r8 z=Cq`rW%7BgA~I|IWzUOwhqe<4#>VHDWN6_aPV3U1Os@7IP8@Z1j<(+h=wwO z6#1p+f2Rp|mQA~gsyl7X_&|`tLe+&Btc=gjYfK>kS5Vg9m37|bT;FT~+f5dVmn@1- zK1-(!!~KG_bcg<%WL%DxGgt1+QUM)%RxS@TH-jd!)3qi5sX~OK{`LyF#jYaQ(t{~G z(rQm(IIX(+*L1SuhwM~8%Ai)S2ENqzTvUniGzHHoMhL*0o)uG+nh-&P3POrva166U zTW77gxxMXv5DBthEDwpMM!=@im%O8b1H)D=>!ioAIY#ug&O=G(0Fs^6Ehf9*#4I#} zoB8K32U}n_8%%;a;|7J;5PRlnDoA?#lB&(qKv&JRrzo^%7X2RgHMTL2OK@M^6r#i? z!wG8sz0pjGO(kZz0g#$#kwjU4f!>)392BfuZ{A1Iy)kJdNjoPmk}C{*_*XIkAv9$E zHScCgz+H7US5MY^Gi9XF{;+HclWO7ql`U(`UCuZ^$>L%Z4wpN7Vk0AQCIu&r7mj3J z=CoRtM{Yx>@UDl0;@JJYNo{P~g|Z)`d4Qkp3x` zCt*c;bpPdu-;067Ovr8tz0TXZdw-xKvMjr07zE#Ds+3YC^|6f~N76mX8F?Cl#0wkT1^XxAN{E{ zy#7w8oN$42Cve8qpH!Y!Yga@(I`D}$sdTw$^?XGR&l~2==-l*#|0c~6-uB91;ffmv zb3dkt=p~-^SfCn@)(%06?l{fTkA?ES86HUG^%|#%?8fnKdgc4bh&C3Q(gyYlOfg)2B=pU(&dE(DLImcC{$8-e z0u_%H3OH0E<)C>((@y!>9d(zwOj}^g!_xf*Pqzyu_>}pGq^1{6`RE4WtZU9Ah61Ss zpJHfgv=Foa^?|u$nQTmJA&brALs1o;0Ht2y{VWn5d< zst~Mdnm2~+P^~hj^{$5#oiGmv4Pe|sD)sYLohZ}Ph?tgB)*0 zehc;!bf!S#xW7yLqA12hS!K{&1Fk$Xk~d^+R!&oH25|H>H^u4q0>%8~+}|DZ=IPAL zPq7>9|hv>E4LQ)(?<$3OcR>_kg{W&wIO8PJE6!SgAIeqbWeKmRgf6gj&&xxP%jyO-xu3n4Tg;!Cm!Y2oC4w zwF9u07i(%&h`kpfXEs{bXIRPOE+aRd9pToA$Uvx}%syh=S)?J-2o9uBJ5lB~D%gos zV-Lg2gXR6XAwubr>7*@c8s!!v(4|cXbQg|#o+IR>x2Y>+jW-*5Vo3q7>fI6BN3F=c zS_k;nK?bwR{f;DdLz8|N%wEzcxV5r<(?wzFrHL4P{L8r(r<5U$%S1hL>{(gL(k}D4 zg}4t@9}VH@LKZ*r&CcVA0Sbj%DG;fCc&U)aZLyPxJ}`e9*9u}EkU~8JnZl8iTzji^ znZPp8;U8p_#G*5B$E#!X4)^Mwc+m=}C>V7?OM%y+qA}vq59AElP?{+_Y61lhYFe`3 z9JB`}<^YfV2PbK{2qLrZE4*tq*ZJI@i0F6;oG9z$%~dc?j%@bg#D&w5FW}rOdE*0v zEDGN6GdP?4u+Z^iR%sKbcj;PH%yCIV@{*8L0A=Gd=;_>=qKE~QSyNM7$SF6Zcdp_>Lq|nTuQXw?Zbr(J_IikglN;ZY{-b$O`Z1(v# zHMe5S4BxDWsf+LMM(?=z12kdfB$8Q+J-)y0b>-36z2q1rZj6DZEZJ3Nx|ot?IS}Kr zKqY-K4IM&9b#8<|o%yJ`P9PxFSSWmK%9ym+?&DjeB!1JF(L|t>ku_DLJ(;!OR&yo@ zyK{yl<>G|2Z|)AVimd6IG31ddLU(&0wQ&0s8KO=3s z27Xk=W9efK2D~<8olr+V*5~OCqNXXuwrU+pxK41)CW4{qG%N_VC7UcLZ>T3ZfyC0@ zs_LFPz>)AFSx}?90xI8otc754HtUNU$s#r_Qz4$&!*-s9I$JzD%iB1KJ9~7fAkRE~ zH_%TI1|R2)$txGPAoxu_3L1ubv&<^Y=I^D~n@hEhunS%Xi7!2_Ep zF8rm*{7-{WX$?+~4TrCj33-rbW51G4IDjHW=6a=T6Ou#10}t_PDQG0MFXEKK`y-0kKOi*X z{7IDc=3I*%E&jZN?^39!4>aZgfZZ{*Y776_%?m|aigEis(sCP2!I)P$k_LiClZh;S zDQBh|VD7b^OS2GtB@#8=kj4Yjg7=lY?)XrOd@a7uq7u%)Zh@j)?)`SZ=}F++ z@8%>?_aH@NLh@8NUe26-J&LY>nZcY}igBzBGa*XBAYR4v{Nt;W2=aI(67^&oD<(5L zM6wQa-(qcn6g%EXphULT+L6M8y%gcH<5Dc7WdbjmGjdlJG;cS_>b2t2dHAJ?8dqHe= zfj|dWx!~RQ`^;x!_9Yn3NbI55y(dCh_J7*&xB2ux-vW}o-x4m*MPSx9%;GB441Vtw zjA2%lmlzxM0q!no;`O3QqBk||-T<}_L5qPG_W%#joH&FecBqbd=+2WI7j`1Hy-<(8 zNrsI7hbrmz6T3`CQ&sPh?(K_O!w!(pJG5%FP2a9d>Fc(R?M_D@M_b64WpMq`MK>WO z%3Ix839A%js)`w6Waj*nH+W(GuGr(y+Um)_DZQ6#gc4_P{X#9SIi(WvbfV3N%9YL8IaitD;5n_?Md;drP7eN^Bzn(874cGxv=0?Ko57l!f(~6zDdR+Q{)Fdi zd~RlR=w9`Jt{^u~xNnwsv6}%w??8_5OjoU2^`aBZJ(#^;*|xgR4sS28j5}tenx>UD z6XulCo#kgl8oEbjU8Ous&RzZkUlF-~sili~ZN(h%sN3Vue#_?tdrG%M2DQ}chn~y6 zeP3boDM&dq@|Of_H>%v{c2ZSooh#qpsrxr!s_;*y@5TutN9>R1h6TTGX)2zYh9Eeg zr;6i~|1WFgPl4HOdlswS#DWFw%l^WvxpB|e@>9yBFEBtRQcAI>R(M*{rA#lX(cpF@ z2xjbE`=d;|L2R#sVMF^p&y8W6NkI*=M0-;9%SFJ~?6a!7x-=G4GEj?*T~(oK(KcYm z0xem=W0(kz{|A963NjLS$wU*_0J-0cNd(Y2yv(~1Y#srJh&I~#i_aOp0OL~b3& zY;$@w^zKB$t9{!YDK)`B%%Iu56>(LfF>c?2q}j_@UG9F(X!6*VJ^$mR8PNk{ysOYX z6hF7T^~N_8!-s5Gvjc5QyY+UA9-<>AsWVSLyHW6lsDV7=+L!`llt8Dj@&Rrg*({>x zJ_3}6<{8Gv85YU&K?iAb-mC*siz5yKYQ zN;2}cqT55ogxWeNKugtIUZd2A5j2$OKMDBF9=Alf@K+KWgG%+Gp7@;~PwMoEf zd(+d{GeRH6 zqKO&5u#dOmMT(bF2NaXE$~$~NT2h=TU3(NO9jR6+0%yrO?#HRY z4U$dm!O#W2#=5`@WjYA`g=nYHzU}RY3qcq<&1tg!Yj{RO zuXC49FG?+k^|S6M@4kOmd64=Ou?Lw_uaofl&au0kW zzL~k*BCTp{S0+ks`LG8Xc8m)#a%&ie8T`50V6Xd>NGk9d6Eg-9`1O-*noD?qspzwHSkW)OO(YJ6ykcVtULr_@JJg@k2&JrBu{fqU?HNYmXuM@2)o z2_qrs273|wB_$=nvoA@yU~AGfIU>d#`VZ;88(}kye$^Zc7$n`%g|F(!CD=v#9sr>5 zg&9Q8rIjpf=_wuc&f+AfU|-3q|D30o0zh(`y1$qKTyk?W}+~V^icmP8G6W%m^6CS%jIArfymudrPhkS5H zy=L+2MB|>3?-Zx}WG%AG!HBE<&3z^OP_l-QXaV@F-vs~4(q?SMJvlL+Ju{s6!7KLsutoMz$ zms2f=2C-&hQ<~-72$Ufhv|$J;nxh#1Md%`Zd@)t5CV(#S*()iO(RmEmc8o&wy)eLT28&ZSXmTb6)p-FLbLf zEqRV5cO%Qv!x^)IV{4r$6YvO19cT{{{9~S7rIlyB>Nwr)q7bIPIur;&&p#nuj1Tj$ zL?P*r;r=}wwCoLHz9BWj_So!6oRti+Wgp zGVisP)jkxZ;)#BlAfZ(vpO|$<{#F|W`eUPVf8GHLU27Ew*%6?JODG^pTc_pMmyq@# zui<6g)uB|;=unZE*v!kBiEA|o>t(84} z(Sfo*-?g+c2#GbonzG^b_=P?u7yZU+QOdZ>Sa8SU8t1L@klK^>O@=f6>ct~AYuK&D z;;KjGvOXVA6&)K6r74upQO`N@^(Xo)(RY4*G~wl+fDNf&-hq_Ko!h<&vGFS~6a=`^wwOnbJDpvI>_Uv4G(+0f^ISkAKUIRy0Qu<2IOn=8>+-%Ig}vTnR|l!^ zJbff=(uC)1^zV4W#ZEkGL=Xx@>d~qW$VJk0aD~>;jq<$RC1^Im8`A#A#8yA{CDcku z0r&5t3uZ`$4+>f8MP!6kBA6|7fL4ATpRZDKkLJ0#xW|Yh_hqzG#E~rCM?UlPElzVO zCmvaz<#RIs-WiWO@0WPeZHjzi4NvNV$k`*)`QI*rI|MZKZOD0KF8*=HLizu0=j^mg ziYO?+IOB%$)RLS9g!z_5)A>^#6wwQXmX_>8aVE|)$9?cquyq5*gyzA{%;Ke29pRxW|AC`?m#D*y zaZ#4>uI5`YnM%gxi4o25o)Kae2gvM{rQBFZfdJUNYb()6BNOm2XgSz+M(JcrW2B6E z*S=*NykIEOw0z(&A&~k!=f#brfNPkUCRIbc8-&T~`6;DOfo#d0OJ$T-X}r7s#da$f((^zneaKdJW8 z(Bzpzm^n;G?jxv+z7feTsz88Mhfh$cuL58MD@|Qi5YA5!5b=ToAOebl$A9YO)7#mz zYA#Hg-_-aTDVddc^vkjY#$m4V_UiW`4L8e<>#X%aqO{~FuI%l=$1ybr5*P+Rznn7> zv^uEI_wU)#v^ibPIZn7E)ro4lNnYt-9Pbo7k?Dhy0$ZEidmMZaFwr0Ng-y+RL(!=3 z8&;gl9Cu^CrAmSQ(H;CJU7QPk*zwRY5_KF9ww?TmHV6a`VJLwI-<7#MB&Lkt)4?rA zj$Je9uv3)pJ$cHs>7~bVMSRlz5eNvv0HmiDTZRT;OpQbDqvAU0rXjWX@pz#dloyKZ zZ~V~8Bc4T%R;*HM9Tm9s$rAvS*A`69CBS-W5Uhww&QRNN<* zU$gncq&Oh$(3IRpGlonrkz#$4^fm#L?c@tLX3{ynNA&AIU)MCkK8aJx{{)gI*G}mv z#Tll%ruxNcEral$ed2wF0;Ju6{fe%SqzZ_iQ3B6?OS6E~s$19u;(8ME*HB^0--5GZ zDZzs|gln<~DGHXiB;L%2`ye* z-)=_sk#L<3n$-u3tH^87Z^8w^m*2Sp@PNG~)2q{~&665N!-mgGf9e=1SLK}!CfFrK zd$MzUfsS;31e;t$Jgm87SQgv6P7-bbotAE43rbUuxTK-)Bx~30!V^kyQP9!O2%v*z z=DQt{nHcD6y#^t(Qdg5L?HoW8SEj#5<|rFGrv_r1AX^lLtdDsVKa#CK8NX>?fUSHY z-mhnx)c>mEcxcf?%kgXco=u^timTvo_A`4*+qtTB0y>i`vPt^OIkP5*8kQ`Q{Xa|T zAmfQqdW#brSn{f`dciPT7IEe=Du7p0hUWj)>Ob5ZX$C}mM|0~`sTVxc)ui?yDI~Y3 zT0(P`?~(X9y4)pqATHu}Zaj?|%+CP{S9rk-&fwU%la3jiZy~FTh&5OlAvlYD*6&T6 zsui-Ot0R=Oe6p(n;=cvS`UD^(Q2K`_#eAXQ{Dy~3l#GUoC??j7Q_eV3b>JY(=TP>l z@SR=R<9FB7PKYg9UeeB9H7e|;iZEw&+VU)g%?j$m3pru;D-_9t6!vzvSDougxkimv z$2Ec!ql34V1k`wNQ!*&9jyJ(Hz?a?fOU>+k6_4qheZIis|7KF3yu{FJ9ad+JxrQ~> z$#w>{9mlR3l{DBmZvfG0zeC%a^OUtx?d^8G4FR1=hiAZYwZxV&j)Ynv*IC;NDzT}U3 ze`0IS(TWVb4&xney4Lh1Vly;W zuoIg`>gS6(K$5Xw`*g(R*yc;9NL11YZ39Z|c^d&C$#_smw+9e^)eOJSYG-iwJ5S25 z@{Cr3Y*lV&@$oehu7_@r#(2@vTE>QPyj+ugU*@4fn$Ou2$nAGmO$l+YC*Pg#W;K$T z=H%c`z-#jm0L+~41Nk$r749w){)=HNM*u(1O8(V`T8 zYrXC?GVIjklDF55mIZ*+UP!j;SFd~MNgx#T6UFWAi^c&>84pTk9w;jBv<1-49%f-v zw`F{8%U`S-n&^h<+@sJ6^+1w>th!s+1@}L|%H&1@eA|cGv}6`@b+m|&W2)=I1qzDw z4ehwKmP5Qb$kRgytjOBixkmv1_+iLV8Dhv=JuLv)kWfx|_u*`q_1))$I_3TIs7-t& zQo-HzQ4XF*&$elyZ6~n~1Kn(r0ExhL=mB8C0KX~YkrHhHn-LV+);V2Nz zU;adb6H6$Zc+zO^y*^M4{m(Hd93l)j%$oJJ%NjU{e#YdHHPG@KlOybkF)zGv-jx+f zFA&$YG)s15j|O#ZxVf?w!ieb2Pu+_e@=iL?R#P%BxY+gH3)J(QGN`WbQ51GRj8E*P^>%bGFOJ_C`g^3ufPOTV#EJ+}-u zZl`=-Pq{+QL-SOw^cAU&S+d-KNsuet0&lXK^p4yo>YjcHVUUv58sjGozQAYP_RXR+ zmD3D0Jop_%tMG7U&lS$*va^5>$sINwr*C&SO3%%~pyvlJIm9&x=|)Kh58=)pVv{#^fj%pdEr?5HN)JD;d(I=> zpkCUv`;>aTpLKt|aL7AohPBdiQ=Q+LjvMSb7-|C({h>N22idl2VLjQo^zu~+j0-om z(W7_fd416vnKJGOD@oZ)Ms^smqyUuAQmXzYQ^?T@6Me-Y@a3#UZFS_<%_?ePuLdER zkY?WY@OiE5Z}4qV>?yYhNToULW>-f70zQw39Y+?C72EP(Z9On{5+CLeKcUz4!Im!x zzndtSn_B&yit~fvcDcC&)R{z**X^>jXD{@04sdEniE`@e%vtNBRFhg!a=7QE)>0B- zK@?CVnn>Mk+_iNHe8>zZv{+JokfVE>NP4)qaZBoEEbFs8fvW106zE;&9_sJ{J5q}W z*leRb;*Uwpm_Vyfr}j(_rsIg0dUgZSwujHZ*3n|itTzRMya2qmNc26|SmNeOrd zlzVhjA&pM%{sSUk0Py)pk`k&Tb`_c_mk4k)dLmktm842xu7;sNd99Ylg6yq-l#8CV z2s=Rvn=~H-jK~II!1sYos*Mz;auz@e=!2+fIh?^-zbrD+60FRA(e%76vnAMOD;+kS z(}uf3Y$KRboZXP+UG|}-%G}<7^gSnFGFU(3+GHwNhD*wwb6B?-8*^9AtL)Qk1?uhr zlt~_etM55fcIb%W*05$*pO?hIUdodBg?La}_aJhn;nK6co&9%YYXOA~JbFDzxBN_` z$_SV`>1S1VRC0U?ifA4`4!3N7m{HdwGK!Wdm07gBM7l?CpXu+8w?{WQ!XNqYvAnZ{ z4`OZz^?e=xDhgF>n$jbB4m_r)etX|_0i7?<#SqRn@+W*C6Q4y_k>1z zb_Nq#WzLuxhxhH+uOGQ*`}g6D@R+u{r#v_0CV)|t%I9v&VbrW}h-#6;Br_}PxJGX^ zX#~oWT%-x%NoMz2Ra`|R*x!t*K6ZNwJG)9N9dz*0}q+>$T2OK2g_y zKAJr-_yPs&m7=;?o30If8^5Qi)i-P?`%}rDvMzcLj&Ya*mWcxF54~*DQ(Y9?!vkL% z8ITJRP$iD{zz>rBu7bwkZDtT+o6FIvNU`&q?35;%984!>XQ;DC@%XMk=0@wk@xp*ii8x-(}47d0#=Sd%NNc)p)?L4}VV$QjX_5tci zo!us?Jy>#`H6KmO>7oq&GGMb1@Ot2k?UW}sgtruCPi2_=rv6Ud`fHtMKe?qn$%M_A zJq#<~(mDX~k|90AMn`COMgdbzie?8KRMG64fkQeXY``XV7Q%&8P#X&48yBjt3Z z5?{18c&UJI9++n5?8MK~87zMgal2)=*s8r{^?_qILR2y0AKOZe!XYoW&lTi)ZT)s3 zTxxN-r)Q=d`bdwq3~tQco2WX*x6?1C7J9B5<5*TJu(XOQQK2E+UUjFM!IWNE(Xw>I z001oJPps_Vnpj-#9*wHNBH!jqJ9tqTGMKZ7?Qar3b#a+pYcZ|3I#8Z|caPg7#<%!8 z$%6;DGp|M(#?xI;_xQB5Gyw=+;G%yRDV&Pw_U!lzy(o@M(}#tK2YY|au{OFTH;^ z)pwtg=6t}B;wI4u;a;65#Bfjg&br6xdq3O8d#Dk-kiQI?{M#5E`O|6G!>+qqO{9rh z(C`-n5jXrq?zn{$E&$iMl0cQ!QQEa+T9~=CRSui~58t6Ky+u51qcvlu>BRJfg$!tp z6~{JRNus1PF8Fvzf$$FK$BROx3c<`;iAP^cwR<0mB$wJRL~|vtiY27F{{>3>3=XF1 zDZSuZ0QI3r`^@_ALBz{uQ=|w8q4jJeU>r-|yr3)@P-&Wcowi33{X$4mX7CiMMk5~| zAdxkZX`t5Gx1jZXCK^^Z3!c~j9rY=}B~_pSnJ3FuNbEHSzB28xO%LKzzhI*VK#q+E zCz>tLqkd{epgMvsbT>Q%Y|U*CdfT@2bz85xHDyz4?+@_{DohW!Y+U$6ex;xidl;MW z+)1|ydQr5+;x@maNQLybt%7L7n(^zbEyBL+=;ZKm4u<|mi|KHEyU#W4V6Mtpu~N7I z;u4D}4g=qozi4-Nj%3;sAyXv^A6|@^tHd7G>0y!{!wt5Jjl&M8Ru%QWAL}8&x z9DV`A)Ro%}2-%W+8B4W*@2`>eT(LKDlixlBBuI)T2hO9Q1|(yZ2s;M%|$K zG+V~gA?z0=JZkNhxRqxO*3hwyKsb6W~aeG&lulj1$Zk(SYp?Jkc>t-19k>fdGOElpbO2_ zT(m9#K>PU12|YAPdw=8)H1_$0$g_LwFxwBoE{Lzsl`vP-&OovTlIKHrP-3R@J|clP zO{uN&sd+KqwG=tdApwdIk=%0#q_DM(Fy;pu)<@?_cb^cphF7mm-xnQVk|_aJ?;Wl3$flCXBkbqAx&LUMd{hI%ji`_BG!4}f%(T7z*Ezb8!N_y;WB4yi;InO%I zUp+l00^KKzBu_c9dgr^eJ03e?y2tbJ+l??&y9a*#kTzc4uH&J1KQF1osqBY|IkmPs z6))^%gv;=BNxb+1e=2q*96hjy4MGlYLXe4Q@}6Nuywfv@q5gcbH|N4_-)vI15PHdR zb;;i%@u31=PAQz;(b0fmZjh}(7ld72eI@e*MI;0QHd`*Ydbg}bJAcY!hk(M&4wU^qxf!c2m}@4`yy9XT}+ zQr%u>VR7d3<_5!tj~P6DITVznzSyfwZ!l0_c5vW2_dAf#mM2yR&(Yv6UFLW!k^amh z&z-~Wnt(b?<>+oGe>(d&NDa^p8pXhFHa6{Meg3$*;DyWWyNp$DfV|jdERPR_1>gBR z(8~@mq;o})juC&bc+lGZEy@v6DJ-9Xx=YJ`$H+!fhY)saM@LdxpbEJ=sPXXtDow?xPo+XV}F^Enot^ znBp}!u3Y+w-7I3AW|7F6E*_@PrFiQop1Ly=H~tw$zDl7xQseS~dZ5?<#7H_is--Mg zc!dOkvY!^MBJ0*G4UnO9)nN`$|E2Q_tlMF@x5@$sxObc+i`8`B1GOuf3nByvw`b~| z{6^1(jGuumVnDKAAk;3P!LLyrq0dwv6De}nx+)6qeuWkIsr)pqtqJ(fU_jcAYhcUVL0a;VHFz$$enxSq+% za`E1JnFS7Aqk2supmOy+3%U*!YMbdZAte!Mok4@i2temp0)LYQiMC%YxZnto=1p?A zkc$M&OQ_Ii2bE&GH^Vf~weokhavAuVXI#u)m_&~QP??19Cq9y4M4i3J1rrn475WOs zR#MbO|BHhoR&Srl53I6LvnhHZ52M?=IcC&#s$6(C)kd*rkw7|nCFVfF_<~M0-YpB& zta=b%yd*9NHzI58;NjtH5ZHqOjV?;Mmu6F>u$T}XsfeCu0NZ*OB2#*1&)D=bi71mo zjW^^C#D7LeGWQj`TWcq`##Hn@syJM#KOdRYy&S zqeS8lFRvoimAmLE-4agR4~8-Fg44KBho7uc`De~1m(6b7sCf%xtm?M6X9}nd5K~Wh zh8OT%|7SnzN2J@ znwBFXY^So|fZ;p0&qoQeoQQdoi9gEyYQQ*&i*#1ps)t+mT~Z;@#&C-sKLCnjiv?c( zqb_h1@;j$n|1vHeNWit$^H$T48WLgWX^71s7(jzKh^-zr!+|#=UlYW!8_hApw=*%-8dEV5K2S6k_!f zKCJho{rI%eZ&H8-EzwxMB1^H~YpQ(ePuD;fGiu==oK5o*_|xlA;QeT1c)J6N*aZ!P ze`wFj+z&?^4m{0eB&vkLVojqnl?o(?D&fPq|Jy@Mbz7v#C+~VaYyYU;&_`tK&wjB^ zUd-fT-BI0&fraxoLQ5X3l3D{hwPBIMN;E8%Dk4ppQ7qa+tkIH=5XZ1H! zOtk?6q1-mpN4N@^9eWmch>$9Tdc!)QJb7U?NE*f&V(mHiQ97u4RZ+~vN@jAD(39OZ zQXVqc#w^^3fMKkDgpWU&try7ehqpIL>LAX3=WkfRc5b9k+@85qkP#*pihICa&We5% z3GSQZ<<4fXB6kWL?lj9PjWrTo+f{;3c+zoAB8>9%$WQkYnybk>Lr-5I(|6j|x)mH6 ziaeGwuCyzNg-xZAGm3X-HfbC|M#C%J7Zh8Y%mxqv$U(or*f{WnN=EAPvPD~QrpJyCkhCCorY{JW&_0E1_W*Xbg@3$Nz}*-@&t^ODO+)@z|D zxgp%an|_3d0zr27O}QB`V8f?ETGwPpz_QD@7p+jyjmi^1W&kjfwU_3rkV$(}%{S6J z`nxK$Mzr$Kop9`~Rb==80+4bcW1WvUnJ=5M8k^1-jyhpr(-Vu1!QeWMgW8pPNwIF5?cs z1{7UwW-wc)vi`Ve6uImTN3QZ!GcyZ3fMFEKL)ii@$ za!f*bckWURr}kFG_Y{r=ZMT}>_>^~fUyuzPTERtlD-z&DpMai zl+3}K5uG4OTY-{H+njP8X{AZFCd9b7u}H{%4a5;JLs56p|1`tjKTg2<6hL3X!r0_@ z$&I{S>o5Xj0suuoy1z`si~L&i>sDifTLFF44kGCC#itl~iqDST&~)(~FfTcZW{T%5 z*?X2Ij<+Os5LT$c+UyiuB}}HuNN^KL+}nYUoRv9I2QBxw(b!*?_^#4dP(H=)6rAD$ zU>2tJ5=tDvj=GNhBqe1rsYu8dEfqe+xDaiL)p=c@s~;YI?L!w)}=lj$YG{?%N; zXZ&hFauKT%-XN}X{+~jDI~7HuTj)dZC#!SwV2ieFA@b15g1~lVy7K*tcZMJGoFzGS z(7RDQUV`Vyv$OXHg@bZeTqAaUw>;(7FV@qJ4(yk9e@jz*h8xSFSW6NMW|A=XME~!b z0m^50X{jq5hJdcufQ{QL3!O2JF~6bLV5*Ud!nCrCp>1S>X0{h zU98;U>>D0=hOjS8!lM@P9t9aR>7X{~wi1TEZl7m|316FpC6AH+%bFaEA?c@LSuVVo9q9&Xo0?$>_P*ngoSe)dQ&)n$^7upfvB~z@V47pbpX3d({veF-Y z?ShLGrO~>{1Sjo~Yi@B{DQxB%j7+#rqMHXf04yD-l0?Lq`k=_DJmH z10S<0Q98gnx;twD9M}$hj4zRoSbr$wZXssgu}Q>rzseB}noZR2B=ARIz(7;>np+`~ z4D98pWDj0laK^syu6vwtyQ+zN!urpE#{u38gy%e|b|Pc-_dW)L~u z*_Ys7evXHtz^YoSi|TjnwkTQ5nbY>(vJj2%EbMCkh#;~E(%{bEROqG#ce=j~tpDD_ z3kZf;P|e~H7D;0%QuikWDfNRZ`v%(!#&cB-lyih7T$W~^GB<;jQ!A7jS9_9s)+$Sb z&W`l9IHh{nzEZ^M$NT$ZXY2F$tggTiyQUOGm9zF?o9NCr!QVcU82~R5G}H+WLkGg{ zpXdmxEsmyQ?}X?UKghfj-f11CR((?IXg{Xjdf|7%-eWyNHoU23zBI}a#yJMhYXF7` z=ahB+7=@IGlhju!UiLIT`<@ZMR)hvB!m5dC$U)WK_>jFik%?_{OX z8!ez8eFdTpG-_;l)4Cxzt31=18un;^wse7(zwk=6V$4b7S+NNJ>%_)724@{PA6xaw zmoI5U?5-(YDabC5qR~!Y%=J3Dd#UJ=(7h3j62P4hF%FFeebM-{=#RgaCg+3zyYvp*A#b_JYF?HWG|{w(A;=; z@icG2?MW|CqM&Pm=!W#};fNyvQ7{1l_6<(gQ|AnvKpQ2v;ZR{{+K=P`Ptb$QBY@G^ z&wh4M=aBs%*H^&{nN*oB$%eGiU>dEUFH~9vJ2Bc&n77p$bc)c@73&6aDM*-vuF*y~&8-JpcIz({G6Qyx`H{fj?+*wvztOR*iWQl;s2`?@mPMt2Tam*{t>G(OAu~122cDOA-+T( zMS|%^OpjpmzNS|SwEHE~Ks!3jhKq*BIZbFH1`PU_Vu(6aq2S`|H4C-GTom(VuZ5xE zfo8q)x0^zLKuv=uoGMFT9$^8}u+QYT9hYH7IFt&NpK03D2C-VGnWn2V_9^Pp9< zGiV}R_!iv>io}APh%vYm_6B|#0O)!YEx#x>+^*XWgxnN$nnzW zgo0gLS#?5l{vh4k?a@;FX`!hZZZiiDIQgP9PBNInAHQ?!K_$cmkbFUxH3VApjeniq ztSf^y(U$TAe}~Iv0pfoM?i9bRUbisK(3X9`*Z$;`yE7v&sM0 z5rO#NBX4~K-pQ@R{B0`*0jLo@BD~c(r4ZM{vnVIv3H@m*C-utwLvdDn>5_A`*+@Ii zbdaGJx(YI`hP~Okh+E?E(AVMhLWb#Ghen5`{_}^}vTu79+i0S7*FuekoDn8n;fgRh zr{+`0G*?Y8XjEPvU|umZw#p1L;7fm!GXB^hM3o!^f2PExDX?6>IYqwO*f;xjQ_wcY zxLnlT4~zzKN!c`QvFXvmi+GNo3D@J$mnod6f3sC$yxR?}_3I!9)=MZG^p)OPJi$@U z=Nwoilj35-nFcX!+l?c+uQYj^g59K0L zoA5?g-2)>X1z=)hO`?S0&=Y`?j_o}Gqj>LR z1oc59`?y`x9W7=Tuo)=iBe)kjnudnIM;IeyE-h?m1~EzF_CertZPwaW zcx^s>Ey9>g%dkR;wxM7hZsUI&EFBSKTFJ1gn7)~&4hM#Vv6+XB8`-32LU=7~w$WmI z?z#8>$^OVSK}Y}>2KkG&DTI9mTrgk`YRl<_DM3LAZG23GI@ccV9Rh#hsN-^nv+7xn zs~_E<;mu5CG(MUu@5D}kt@?Us)y{6Y>85ZAD7Ks2Jj+!UOJi+EI7j#K3clgVSpHR; z5GBCjw=d*DQ;>wRk9@I)3p?ESul0!2lF*kna%*i8Ps{z>F1(?m+8zXeEudyMXm@9vjTlZ4wUegXy>FMF#i zJCeOQwKg<0)l7nmNkVh_usZhyq2@DxL^z})8w}PRX`VVJo zOBKVEwkSm00Uxb8Ojr-e0RM0nf)Y8gzvT%72?u1kThYspOs#yaumtlHH*27|j%_h6 zmpVj+i^@=%kkfluB&QnAc;sbH2tpQn(osi^2R)+lbafdNFA9#B7}!RVXa+Vh>t*NI z)McqApklPtVp*5v-GPYa7I>iy)wT6x=eK2A7nSyV0fQuW7O#L9rg>1lQjQ^3n6ZTd zNRHa-Rcf37lPQdcnNtgBvs{txjA>~#y(4mB{+#BBE^VY7@l(Is_mnbqz7rHcAOr}54SS~-7^8!IA0?CK`2t%*hYno0{Y{IIOI^iY!2O6LRyp3Q^I zfDl6MJ{h0&9si(>MJVRcIH>PK3`6d(hss%N=CtqWdbHDW=$N_VV#!^VR#%C!l}^6$gEk3zh6*QU^&2QAj8>dCd4I zhK>s0CGd~GC-mqx@vDk6q5%m}s1;jKcEVwamTYkeJI`hwbREcW-A~}@rz9?{;s+CN zZ#GYf-jZvN^0oZF;PcrFAH23Lh8DlgR%Bs-#0U?kw4u-_DkqKUUP}#vrSSGYdH1D1 z?J4TULa+O_#v|5gtv?(NZwoR;wbT5gcFC%%+o+95| zH|YmDQsY0Iz=f3q#rdO&$A)BalSehzD@Gc4UkXxh`RAzJ0h)0DQ3 z%Jqok4o@ZO_skpgg*hGSAiZSo=EbS!u@Rd$K(?sO5o5Z9F}814yXGf_awo5t6^fj^ zW&qKpj^gp|hmBE_mI2J~Ze6~!P5(X=BN{PmdQ|k1gMxO3$F=-<;LSjnzC+4Y_kVbF zG#HDeaTrSsKEU>W@j>MXo4|*1&TqP1DEzsf*ooFQR;?Fg?m`1~9By$cV4>3;0qicA zZJo}%I4OMF7a%2UYK3w>>l|sNH8fgy=uDi?!ANicnTZn&1T1hb`tdka)EfGfzTX#x z5=iRc6vn=9s8S%}{^7%-8rXUX2!RAlbIE0!UXmX zxh8}4^rTk#&csV`k>Rof&xQxFF6|%>TG-(d`;!-Se=8~8OHt7{ti?`sr@KJ$=prwCCeCYnbih%L!95|L}5L^hf0fB+mvvbENm6 z2Ux>YC?i+D6y|HcqSe}Ywx&k+=xOzGDh#h&5H*r49ddov`Yl~BG-{Bs^FuJNe2cDY zFbC+XbuE|}9Fm*z#L5ew8|S+LcniR_fjvgOqMb3}ADtopsxHd$i6H9nuJTdZxz|VF zULdso*h_diG8ayv8R$|^_toV;I9-X)cSv)msiDG@J9IL80B=^`o4I zD?QwnNkZ<7F6R+o-rl`w4$8kjUjNhstf+)C0Wu3l8^;NRP|NQ>{FFbt zGt-ZD0PnKkMK`E9VTQs@bJjqEs4n$!@X)48WCqEJRn@Gh=gbTNhdfHBv>RJZ)E@Hs zK?^?xWn_4Q|MQ;!-|mS5k#urqvCz_n$?T$FtY+n*sYPpC^%vmYV>wN}<>BaCIWhgj z2gn0&R>xs>JaKIbYCY=NvQ&S^)n6Z>5+H~r9nn_2WDdDa=e@kl%HBOMa}=&U+?r3| zDn9m^)Dc;`oR>lGfH7+|D{*jO7-nKx#9Mew6%cIEi-+$K7&)WkT|+JD?SeVB;rQ&B zKJ6C|-X}3rA80p3#K0PcypByZ-?>R{33egx?$S8C6OmZ|(!hP*Xh3q=`!pmxcKxmS z3mRgW8C(dGMFjJ(#vDTAii!}Cil3z=OPk9vlI$p9<@&w;j^hV4KRuU(LB1ea@T{+p z2hmG_n8c!BcfIOcQHlUZ59f8DoUI<#^^+F~(&T9#e&!cV!FI$`)O6J#_+B}a(;LT{ zr@v0%w*VkU^2L5{e@{Q9^5rb66L|FO$Mw#)k-|eNi1dpR%mYVoMZc=r5O$uQ2<s#Ld4?5|b!Minz$9(;I@oayb(gc4I?f;| zZZ^Q>S=?4jX9ajhj0A-3+$Z~p`1Yd(V#Rp=_tNf7McZa5N?Jh#Q8~~965DrZ4uPMgzV|TfWzC!@H_ZvViuWli5HH$4$~=;J;C(=9vK}>ke%03h7Wnfg|1U1HL)-wM_QjiwSmZM`+npNsT0!gTrTY zY1VR=|JN!(2C}b}o2@6xix5>f^HghbI{-ZB%$uRi!IQ)C)G-}E1c5x0-@EN~lJ0Vm zf0t0HDkUXBr(%nSFYS?N`6cuh$=Y&i^SIrQH+ytXA2e{oo#^73lC`p>$$1kaZ*M(F z-rv(l{?=;Mwqq+0ir)Q0`M9|@DeIm7CTAnSG}Ag^+aEpNIc;I_LL94#29S$b-jNInbsLGbW6=*2 zSk-A7q3Z*ej;HoA@#{hgc!O?n^G? z1mp!>?ApjvL|f(0!C%T!Lik6qh;5nca_)2^=k@MP$!&94$?mu?U+HKBDV-s0!^4x1 zI%HI8Ns_y_H($@2OTpyAOX{f|SYyAFE~ZjU{~^p#z&X?C&Pg!uZTbSHZOYRzbPm9J z9JJ-^Sus#AYJ?}~^kU+jMqxiy=io=t4uT^<714~=L6hXq558o4>rBamWd2eoVxf4* zMh*sLRW+j-l7ae8(G*eP<~%1JijMQd|M1G8vY%X?mt_Mp^RAmi0Qm>~|0gN|CGl5p zv|NJ13*`aWSMy9@Xh#D)?j7i%xMe+z!6zTcf4J+X^rMxOm-gfAQF`-51m7iV;%|XA zM)JBy_u5|jqvZ@Lv}N@{BZv+zNUPJb;u6{ui?`y|P})98MxrcMrf~~FW9-0|$rQcG z&c7=r1;-9Ws;!pDMb|G_VD5sanm=)M!HT`xeZjEYo0PCq-iab8M~cqM@X-9y%Or>1 z**WfeJDcQk804~JE9rlpa=Rb{>29%>)^9)vTY>i78S%$Qo&?K6t}TVfZR2{+pA@Dl z$1J_7a0IgBX~z@K@7<#bp0ePqwg$%d+ka++Z>{hw3HSi2WpIw3A!A^V2mja5BKG3e zWx(q~I`4l9*csDw4oa+*nJd@L$;$_eHk!C<^M${GO9!W@+GAyp7%Gil^mxd^j}&$o zg1lFw&*hY}IBa1;@Oj(ABuRc`&VRPAgUu$c|^*0rI$>+3S9m+Jx%>#UKfp_Oeq(TZY}5F2Df z>SLMOgjfvV)Q%TkI9CnT{)1J-A$jn;9JHiV`E;~LZLw4oT;iWPFM^-YD3h%XoFago z)a%SYx&&pkkX(LXxU{X#YMcnfx@8Yd{ zqJ}Q}b;IZb7q^~cm%+b2we+%Px5^CQ+ow|8p;HPnuA_raCBsF&!Um-+Ai08C7!Z#L zeo;oSr6^Z4zhd**D&>_$9=IDRXr0t2SLI$1C#{T7LH<)Y4hjZYGr_O`6@>6=&aH9C zBkMg3NNb8U84TU8cOyMV)Z;ctF(T{yDmJo)Z)6!d^?wc)a&JvA`w@~L0ub%TrA;@| z)MwHrq^-TY{1*72Dlw}hVx<5S*tzFOM4&j@wcg$6r?R*dD`z>0aeLfuO0y)ofp36#?mz9vLT>`-JcI5bNgY8Pv_IH}df4J^(nalrMA9EV7&G1zxdjj=Frt@&wOQRK zHp%ThTW;(2$%{_{`=qVqhSx9qZ9aluk49Pz374wyBpN(eV|&_p!Y9DA*gceYGVlID z%-rh6Ui~cbd-&v{?y@z4Mr9?5TWh9@3kofi5ER z8E)nE&Jy94j%hQ#!x7gcM$CEed(lOj8h+Xy1Hevx6@fPLB*Ab-@QM902w;|_5cK{K z#l0tl;VEwVsOVVdwE#hu<)apeK1%K)0? zht$071%I!@G&h@p=qc(3Mp$1h0(~IxdK)yPZpp5>Rd@eoYyI8IuoDr9;@f9ks@CMm zee`QA`!TeJNl?h_-R#TjK3k6QXh~A!44l1}!5+!q+GF<+wL{^62E2QUk`hNo40MYM zg`_b0`t;+dz=FaUHgN+mho4ARI<~(ElYwxu-lq)vA*&4pQO?Z*2;tfFYoNnsBRmye zFHb#DV^H42=#{A_1oL4;WR)I%yfK7qgrI3^2%Egfbhi$;S{yBG=4bb0m>Ky;#vKKi zKy`s0RNDM`$67waj+cxHJCqdFz6P-Xeu3ouZaP{}nYMV{yl$VOq4A-=ebJSlGn{MT9}6euk;m?sn* z)Ti^S2ODl|dd5b+DVAeh6+{r|nM(fTBq3WaWvrTmhlkU9qUdlY0mqWI*tHz%PczQl z&U`qjTBH28o`5h{F)N|B50OA&ZRtbkG|1$VDOZTyk25`y&V0vMh9v2QMob&fFo;UD z`vX=&cjdnS_6~~3aOUh^5w?-1JL;5A%`qik&k%b^T->`QG6mMvRHCgIXKFuXa3x%# zGA1NiOaF3&U1=|#lKS*Ge$H8;(5K?e$_&sSZ^o+=*x}IRdjRWA$!$$lE#7%=XWc<( z0$6%Znj~#Hd#$5k4jGR163A_9Vl9OFyshy?bv(jL`~|AB@~B4K*)Y=#SI71P-!&8i z32%`CCBfQmwVYtiUnTCU)S#A!+8x!WCHB9Pulc8iD$lSVyRts(jDQL3U#8 zq*a4wL7n@f%<1iYnXxbx$Z=0VfaVM+P9ONF+69}{Q9ERafo}gh?S94lD#`L)RcBR>T!Gnir}_{x{>q2u!M7V#<8(UUV5Znxt^Y`EU~GBOj8QRR4{pn(uDhN|o?x}5 z2SCv6-%(-KstN%G5qv)R;}&q}*snjIw#ZysA5aa|*+~DxO#3yW&mfXNM?sHl(usqfRr~Y`vD3a; zA8&seubYvmIF-p+gghMjxhJssuM$A@J3r-7(TJ3i0cSF+8b9B=i5lPH(x>$B=QJW# zzlzAwT2a!fah1}W?=0Pb-LDos9-@=V>vRnS4CJd8F)^$CmKfaq+Z7K7g&#xLI%x&Y zs0r-3!i_l?Pp(iR2!Ux~dVCNZeE1!ymyXuA_c;^5SwB~-EtG{ob+cF~XLuG`zWdS- z8at0IColwmvu92RWVz5zLq7!7GE(jw`kcJoF_Q;C`X{9{kLxUoYbMI_RQS!mjYSKF zQa79$o}n14^%W>lGhVKWFtGLSns>eG&L|>~&d*MwV7qAqh{Rm(+U4tcLHI~uI_Ayd zV0!8J-HX`*cm4UoKaAlA1M%`8PWd-7$K{Sxd)uv>8_NSq)0>%sJ-6r- zJR_R5@kB#FyU##5AHcy?IM;{M&QMdW2pvs*NCpO-TdPe9MH~Q}WZXP3V=>eQ8>HjS z_|yToC1`#rz8DWJ<@2h#O$gsNp#fkfT5Obqq8V|?vVVNPgMAkStQl{!EVuBK zJDYQ7D~`~-x3b0F1e2!gRZ+xCCRrO!JVGfKR0g~G# zo8%uvv`p|$!Yu8o!P;Oum6(nNan9GG^ruAmF5eT7Kbdlc-Dlgaf$zd2@2lu8?AL z;Bl0mNYp*@DmIlE*9KBAb1DU-$_F!?c$JdR^0m!(H$jRK+K@)YP4siSAE#N-<@hx8qUx8vT)V~i|z0~>&rlKTN^9F zyZj?Bd2er1JfDSxSwJ^h5)*M=_!O=^fIr`S7DdeLWitlEaPl^a8hVXo2j z!n!)!Y?`~AOma3ih0Komay+-C{m90jsA|qFHjkw6r2b%Fo}08Som6 z-dk=0$KixdL8ZX0K!+fpEi0f_@_a>3;&$&U>W0wT!nrCl3ja(2R~>&mxP9UoBHg!B zX(#sjR04hZ>ox*eg)&Yt5#VoW9RAJWx6XBD%#aeOJ`G8S7<~ZFnEQG~S9r7mI7Ba< zwDRDbQ~)q`ogfV-wc=J>Xi*cK~Cyi-4g&M`L<01FGLR1T;cTfoM!e7S3T`}7YN8|ui%w^ zS?ZrjRVU&*(1%y}E0uE9O1AR;tM{+V0&L%lbFg-1COAeZ=tk2!-qZY2E@UtDdYN(* zmiw}9kb%wwNwo&;btD44g`vYTors1IfDxl+`FWr}to5R6iVMNucC;|Ju6n^WPm}LO z@(L#zu;FM5yQ}4uGw&iqSKCt4<;IS)F60Yeg6UaE43Ao$$gfW{&I<%Y?FWfR?ukYx zyai3xd_M4bQNl$Q>(ou~n0i54!0z_LSqDDE?=cE*etDeU0Zy%Jvc6R6K$_;BbgVr0 zBO}N5MqV`}X<2o;l|+n?pT&y4Z=o?9xu(Q%G?6b75U^|1@g98fj1O${^weoLxw0Gp zez#ZRj&a@A3f2K+JSvFofa)*Ngk#+)oh?ijBbe#8rJmA_Q>BcTT$qfXzm=@bBD2Yv zfZce5AC^gZX_a3izho;pNIrPuc(0c6l4$9(?*Vlm#1Hx?WFLhmc>Rq}KlU3?UtFL+ zpkHBNJV6F0i*4_c!riihbUFu4QBqW7yOFJn)$XF#729ACOZi=zkyyR){&mk|L^|8<$mZNeyZT69XS6C2Bc{0nYWQZL`|B% zlMJl3c4nZ8#J^m5UKaNMtr~|<-jE8J1~pe6RV}pW%zAcv^md4u4KC|2aN(0 zpn5s%-qm|h$pfCtH~Rk%P`VkCJ+z}-wee9bki8b)UoUm>I4<<;kt7JUmUjvfh5Ccz zVl7(Sk8+%(Akgo?Ks)-PM>K+V+f1#`_?EBBA{dAb&JKx|Lp5gLdX+r>72{se@0>ti z6;U!Yv%%sUGF%7DB^=<}p}c$Rj{JW?>OFT6Dm?Y6r5kM%($e1$4{=(H!tviTH<_hk z(ZjJvbMD6=2ZM3*jcN$XXW-(b3)*S_4rd&a=Y(#H00-uTpjq$8Wc|!(8JEN=(S;4|7YWM0iscXuPi>Rje8c911yY+TC7OOz*%lE% zT@E2g>HJUe+G(95sjR;1t#?Gr?LU6+AfV7Kl}$AOzf+LlAR7l_4G`VgKmfj1|LlRw z0fnnAvmhDb`!pa<=beGe1v3zq0<(19I^o_XHfb|>0#?NOKg8~HX}nO(@!cuX;6CAe z@^7Iua5a70Te~S3X|(8z741fbw&3Yyr|=!vW4scENtVtjA`ILq-h4o)tV^0X44zq3f=o{x()F?QKO~sJ*HG zY@dIsnublWYh`8l;1qqL1RujcxmG}RcJ<=uGiN`KQFSMB@O1yzl~Qsy;kq2-kUyng zmZlEJBfm}Pmyhj$y$chCzA@gXyN4li+l(vna z(pVJhw7htuSAHaV++pBsZLJLkywir)8nFAZHXycBlYW${JbXzRefv41Ogy$L@&B;+ z22*DAR!`!k9%Dl^0!R(rlRw<9Cfnx6uh&xQW1-Mx3W^Tj^qIffWA7aC!oy-}8*?-l zI07e`*^~(zeCr#AhU3mcTlM%NhY!}7H89s&T{uWu#t%O}-%Ytv41N66^JDURXt)!L@N=xmx~tYMFY% zm`p^9I6ugR`E5+Gp?JRmoPs$B^h@JZ3QvL(z6{vV^MPUurHUCTl6o8?e1WG-_0-AM=mbE?z!+z&sDS&BirSA zqc^VZaJzx+By0tA4tALyn4eKT>bzabzjdts=eJ&Z?-a^2wnRF7yHTDZ^#t1Prlplf zs{^6}r6mjqE|!h#t5LxCtYmm*85_j zXe_~(&#da5<$_Nrk6+J4K9}j(IFA=QKK#w`Q6b*T9p}D=Mo!4`Qh()B3>+ui;|ma! zYj#8${`a0t0J_u*b}#PR&~@&os0|OBicCvNDV146{f}A9&D<<_`7QxK4mw1~R<28A z|A^;=Z->U_&IBLTrbf+wTo9#Jv<-r2wthVy8V*;!m}snpa1iQ9h+g?>Q^q2E#WMJK4lKy^CeQ{F8+- z=3`+U&id|%1||HoP)yB(&jq`tyqr7#Wk|#Q^odfyKBuzARz1oaf40P%i;c>-@$tAI zV!iVdP-YqNP!lzPoO+1;;Jy3oz^aNJp{whJs!5vtmRiwj9NwUq^=7aoYe5=p?Kf@MF6Q}@P)oZYvH(_EF0B_jDg zjuj(ogQ6Mhl5JiPh5hMb-bNL}08~ZatbS;Wb#ssBSf8V_s0z+kr!3HO_Zn8MUw)V? z3)3V$(^7vVX80j1Si&C3i9%x1S)2LJew8G8;GzR9WdjDyC2K%v#w+$FWdN|0Wev!^ zd?G%AVVR4t6gw4Ef$RIG&)ZAA=2ck%oqyO3WGCxB+PZYJ03-weTLB(V^cziC6bSX` z-C>Jbm1~60v`=F=vyM3{dTR(ZXnT=Pyyb&V0Aw40jq3f|$9qW3H4SnZ+->vZlg8AixqA%~Xk0`WJmlY|QpBXl3h7>|8oXX6< zwc6nyEp@+)Qvndw1pDIa_+QoIe5qIoPzAXisol_CdDd~SrRQEu3Lc62@hKu4G!6|1 zW>zo6hi0$$P?u%yWi*&&b=hjNT!~>~4X`WMp9h%mS=rD4^GS(zy8^{iM1eM~oY@cs zH`L~zV@sPGBuVV&;Dl&}y!PXYxIUEaU4IR%rd|t-sqxj6c+hY2ND1YXF{EML>ooX_dr$kZj3=NJIP{a$H6l~}t#PclFkvIn}vb=}bTlFhTb zHu*WQ3bZHmC4v0tKt$jMX##86?;E^r(8_`+>w3zGuL5+72=;Sr!&jEe34CCQ-{8 z4Fo4w*Z3rQ?Q6`|(C>0|UU^Zd%_>IJ7({_h_C=-2X@E3t5g=9E1vcfMvwVy3Gk`pB zxTd@La)y|y(WDWG{l71CaG;+96xjKR%!AfmAN+gu_;Lr}fXrWC=j_+TQK;T}3#xA# zddL1A-xvcbN5|Fffneu-nB`=><9$lQng0&icmk+$P*awF4|L{CAWv{#Y4DNoVehb_ z^3k;-(+&eCBXmgmjz@ z@IsG2RI!B@Xmv0%0gZ_2RG{jtz7|=QtAS3-OirGi|2-h04RO@-lCUF!S^!vbm=$8T zj;(^D#vX^xmYQ~KTX9;(EYk%H`H3*9LDhOX0gMTSY(5W@OFy8u8UJLz4qrj{K@{h| z>#I|ww+;)i(B9w-BDc9>&)mpfa^bf(c6Mx#?Z$IJopgTkWZfN6 z*7>KIF}(r7)fG2ng_Vcl@Kda$GHMlp|J*LYBSZHeTAYxEO5_Cq#<IYm3i_yvb{t|x zdwpkNxnM#(FZgLiln@+Y>EvHz?SeT-!5eW!#CghQ0@2361B^BMzCs(Y>#;9JU=LX| zdR~9XM1_e@f!o*+ATwMOzeXvs6GdO6#zGEkN^{EuTY3z^g5m+53Ky%`^(BN}eB)Ia zCmm$7GwhdgUB@!beAKZ6o;WG zgRc47qL9{Vfr=mStF!0rj z8yH$7d7?CMaKFXfG>@p02JL;sjINku+ciW1~$%r8Qk;&&qH} z{MG9LZ}TLlY& zDZ-AdM7qHk{pAWx0$Q&XZN>*kZ_EpH_tw2!lY4JSKxSL}FBP#ky}`t}XPu3%&YPbj z|21J%b^hhM@PG*$IO=@=;v!e^B8=a*>k9S9O z`vwbgt@$_5s8Ew-e?UXj8CFxKrb9MLU)WeqKs9D3$ciM>2I zM7-D9h{+8{_T2Ra56ku&k|&mT;@6k12MUqz91^b%sg}A3E-{Ls(J_DwtgU1(oK|hN zB#ExthL-N77J%mxv`}jeN6&gk0Qp)!xdMmX0I1v%`lFq@zCJQ5u0kuw zuvttZG48||fl0^Y!1%d7gfDB;F#tbs2DQm?gVGhYr)VFyy5wn}fs^}vGB{KSSjEI? zyyzlGMc}JiP|LpPrD?j)XW2;5>%dE|*je-kun8F!k+Iv^c+-={Z6gT>0}$N*3m=tl z27TW1!9e)^vOX|O+J)2zI0qgl7FmW!4{351esJJqstwvIrzw& zsxFdl@EM_w7wbO4o`U25j7u2(nlwO>;ahCOqlXi=Wq{I(KVZg|C5olG2@Xi0 z`!i9$%!TD6#v|<9Iy+1rUWSmz<`v?rM`o+7>$?-TZa&rw3V*!rH2Z*Vh_!6*n$ky? zjX^UUL}YP0ParG`(Sa%#QNU#pZ}w(y8L<(xSYpcWO=C}N?k#re5eTf4zDn-}7r1OvBS&uSY8_G}O%+m|{$>kqzA}kOW5v(~B zo#m?Z4qfQO_IN5k<2RaIade|Aqf;~CC@v8TAIq+8LeR2K=jJ@sVjrgt#tNn+gRh-# zKb|T{U-RUIFlNDn0JX|&HMG$)YxdniJ4FKfZ*UxZeb%~eWr@*@G@PW-wBOSR{iJ3J z8$L6P6(p2AQ4}d@s2*uAG1CqY4rqYPCu5zTxSqD=XT`M)B(zJJv?Yi`QssF=6m+kw zsRo8;IC2YqG?+0Tq2?Le;xt?aj~YSB@VcS9DlvZMN@Ba~A%!m!kLyz?Iha?D{=#MH zjqe0*_!mc{-n8dzVq1^}UH*zsNbaL9tqz4Zd=fpV)r43nNGl5oCk+s()uBbX0Illx z@L;~CnXQYupbg6I-)OJVt((lc_QY?8Dy?PbqB<&pbLZtL$Dy~^JTfQW5FIS8^^2HY;E3-O2PQ%AV{fak)`+B_EtfDC=Xd)DT9)*ox%5*4_x zSgW|vAwyWub`kIC{N3gg-uvY`2E*29)&*k}1bP7>DPU*Oqjwh-)%AS=DPw#{?F2{B<|OT7=JNk2k49 zM&{?Xl|iz7__W}^@v{4_2nM_v^ja&QMDG?%C{R=!Ra(`ABNLDVcU=%_$ku&A^1EiS6uu6E|P)G-svED8IP?hvF*S%4GqiNqv zRHL?Kj31%6Y;?I&}WwUe5l<7O^%HJ#tF&$ksu0frIxKMCb zYRdyJ^FK0eNMG`*BGq)6E9Vx-AcXg9TMWVK{ael(*fk~Fefu)CB#{6AEP;C6r{5>2 zGaT^UTFK^Wmfc#vu)ssK-_BJ**jc3cZZU;FmwGrE%Y|{6{>H#j4WkGcrNzb(<-9MM zZU{G5#8H3Op+b^!)=21cYREMgxuqL~RiqPh_w>+-IhcLeMWeVsg6e7cAkd&x#9Rg> z{gj=w*OGdbobygzlw%W`2*Gg@)ADVg|8zlFgnptC%Oz&j!JF1|?yL_SI@|WB+flT) zdTOkiTP{4#{u4G+?j-V`z}*DUc`v7L1qDSTYcWRDzu2F5vQoj;*L+Q(pb57kKmblf&Vg-ne4SM|VDSj6D+g*>lO`;03brw7?u4Md9>QOj+-CX|$ZU*N8`AL6PuIx$1g*AMoEa7SMkPHX zhRz}BRGK_;61&0ZjPpDlNL5xyMKKe)zPj0U5aRR%aUAFWchWt=-_In}b}$Q@wuafY zXIYg*?KJ>MyQyoDoYM)xk?>H9VH~8$T~YOC_pBTSHo2E~&-rHqW@VI)Y)@O19?bulNyU%O z>f$n-j~i85*S8B_RoocDY`eYnBAm04;2va`48QKFC*&20v}Es$z^hfGRA>jT(a|)s zO4Z{XXDiHWXoEmakOSXhnf5%|70Kj?$?gfwu6H+av;mqTl71~J?T-K%Er|v)5XlxN ziLZVQV&8Cj|He>f^hYTc(}A_Dl;9^M(`D!P;GW_*vJSwkbI=>WNUVKuBQD$3R?&2H zV=3F#1%N4V`hl}Y5-EnYqsPIM!GpvVj3vM;l^pU6+<7{Hw3=Obt|qS!U#BYkK{CdG zYQe80$z`_>rwaNA&D*@!93g{z>kCHE_4WK@Zr%9{TBe&0yoA=|NcvURLx?>2%-iBJ z)#7Xr0KjnJQRboYVt>02ol@_p$KcJo)Gu5oWsjZVFDL@pp*Z3?2XU@cSNS%G8+Hh^ za-4*HS^<16Uk3K=;G%ZNrt$=*<4R8OLR0hG!UX>JV`iv2%X3M#IXg3^zNJpITehg8 z!L^$_26WU6RD4I7B^su|#NZqhLx+YOW&=T`ncIb~gb9HI9e>YOG6QkK;IO$uo(bIi zD=e?4#!;&%UML+fx2!l5rF(E!omd}G9#T(>ZWGTAGh&3hUDe~{BG8j-5}=Fb29B-! zA=Io;o;Yn9n@$BnfXOW0p#rQl*;DUn2x`4+%dv97TKzAkBhkwO-uC?4TsS*m_2IQw zL$?!MR;!ABQ}^^Zoxupuc1ryma5hD<^XTZBnMz};!R>}i@j0(EpPmjl8;&l$r~SLO zX7iL1EVV27dPx@zB&oCw-zziQSC^r=p+Rz5&068C0{kTwU=k^XX!+qc1^m4Ev@w(` zqje`Pfg+4c85uJizPQw*vya94vuamax3Q}DPyaiugxwIFzGNz~s8A#*Jb$^Lpevw< zm30Q!4a627;Q0F0_^%(_siIHo$CO$a{kH1^!+e&f-|^=Yv4I*mptGxzHc%B?hf0bt(j^iuQjQZ0GL=fXos70OZ@)CspH5j1zE`V_McA+-C z%#HriM=5Ry!2sWXeGp$S&gs8UdCRK%FKmV-bqR;L$SR(40y|LI>4Hh=IkA2W50102 z)i^p_Nl;{)EIYb<%Mr8cc@}p9O083fh5(0aIbH#^Eqb)mIjR9k!q-=No8{44Xk~4v z9pk*WC|!IRr1MShlAuC=biD|ketqvv&4ohVLv!_cfaA>!am+LlRD5KJ%t~<{igh<0 zfofq#T5+9TNJ7Tn9)R)Ah+O$=5~m^i5sNI3y2^f&?0jl)>j$X?7iyS#yoBSlJdprb zS@6jwS*8aWIAO$18Zz>1YvoAMVb&6@FfwnZWKnRnG~{~Mnk=D`vftZYb)`M`j+TB6Mi&5JgNo)KMh2Ach16{4NF5|~0fpz9}p=haU zE&AXHwWsn5Km{Grx?8lT>?AD1c0Tx%kn;cc$BT~TekpZKgdqlmRFl&)0Nud zpfp8;Iv6e5XXW4_yTF4iO0C<+wNhQj-SncQHUIA!(ClT@&Hz=(PbTT&zlwezwV5nq z3+`OFFTO2Z;J8dZ{W?wALhyh|Ghk0vGe&o`E&2V24_O zcj;CC*Z7*mpnz zLSf6*%{Ac}a}lh>Qu;E{`sVPO7D#sc=8Po}zc7D?XU{j>=zS>iPj9g#S%ddqSN~ff z$vHX41>GLl+DvvLGKe6aCTzYteFS-64N&~J@-T;rldpa{y+xhMVAj8Mn3Z6!tX=Z1 z5ejFfBXkb$GEn=Obh9w;0msxn)4?K2X$qK~3^aCDq4kvxY{JqX9a_*(_3Q`VcR!I( zQ_06ny!xdx-v$Y=EEq~!n+vUWNn^6GjSgWz{qibIn^({kRdx_WiQAy`^GtkN8I^g-5qQ=-^;crOxm6)84bI;Q43YKLEm)n5Xnc4cKz5*e4)jWWHIk&gEv28){{<+o{16k>U)!1c zV$-;YkaMOBzuLfhNSCG=`Q@M%E^U2_=aqr6EWo*L#`_$Dca3NPc}sO-I>VK zPy04$OV_A@K=KOM^<)!9>izlnQ9I}UzPUH0SMM$-Bk8We$W-&{UnVVpkv|-exaeU3 zg6(Ilf>|@wk?o3C#WLoGb1A}&G&*>{rR4l6q~`*=bUSGOzX833PA(~ zOAS5sfZtcl8GnSmu?4R8M)!ZK-c@l7(bRl5x+ThBgY&$Wq^)7atQF7m3d+FsHybKTqTgOw;8Efd52H=((R)n<)}eob0P;H9b{k`3IWA!@p4LyU&$EgtCYKWJmzQyUiF3u; z+Kb8tjivyVK9`H-QG2E2-h`D#@GO+otqnPUf{JDA+8~4 z94zGrJ2&dTkcwt3nyi@LmJq$+2GLEaFb(BZ)(kZjH9{14*zdC#Dc&SEejGB=i9GQE z&t+$k?;T^!tW08ZtF_aFuggG>aHIrHWl>i%j=GA(mA)j5zz6hu;Z=_7V^3XH@cmF2 zzk?m*_%Epkwc!9F&hLDKnj|=R!2fKga2LgLus&Ud{3lBz#Ch)4ilcjy3AIb4X6`OF z;(sniK@M@lJntNI8LC3+dsC~fbSoz5HES>saFs@SZj}m^n%Z4qSCmzMs8P&>5t6s; z)$Pk2F7jW6xwZ0A`ESbO`@VNud#x;v`m9h7wNmqrkNm8NCWBNJf-cVjCC8i~IjF<- z#vb=OWNaI?J*BF}@Flj=z3j`tDWfbQ=B0~h(IF`Y3VcLG}j7 z;We=!sAXlt^*Wv8*w52w*$$deH%^-;xWE{;)fZ}D(}o|$loMO@5?_bN?JMwqD9^O8 z{nis)VH18J=Ik4?KaWW|3h`R{IR17E|F2K-XO?x^j3v^9ah#d$M$9aa2p$k2<>uWE z=Iz!Jv104UV-1-olFQeaMDu$bnUl%YBd6zTP8aW}_Z&gCaNE2#ujDtK5u33_!ob;= zZ~3(^Ic9%Ab2DWO`zdJy5g@wom~`#j9EMA)rc&7#m|1SMLN}WAb0l$uDll_!#kFWW zq)oll+z~<@!?y_?t^1iG0P=Ot3}wDur6aUYtFV~uo)e_FObd=7o$<@oVE|C)_Vvnd zx(pzU+;HoTAk_w7N!{|7lCQsNtJ|`HWB_ zZYo%Fx8BI7uB$#&q8XBkmLwQGkAD=7B}u-9Z06BTEOi&8)-K#xC=j=^dEqdaZ}=%r zEK+G~rmvZ1UNng-CaoR*k*_2adV*EzHpI-u{OEVMp$%aImq2~;5N;*3*1L%=xCvSyEEvlpNfF&Fu6A&zn}px@3O)tF3=APvK|{z}^&b75oZ`kS*-YEPl> zj*~+5-aU187(E}QW?CO`C!yq4AsXye=&8E5X_w@&Rq9@GRZ#)|dTY^L4#g5o+_b0- z_$FI#%W^EvJ2qHn5aQLwscAjx&P@?Hn)VWk7z_CEILxLMZ9>9bPAX0%A&dY-`u*_^ zg&64%e{$V|9XQr_Gfuh^`g$(d6L2cG@&Ku!ES`X#Gie5&c8VJncn%c~X9@Yyjs%@} z!%f2Bqw=fB=9~$+sEyu*i8qto>;s@#}CA;P0a83D$!Dt=wxN$S7LXt~gDP0B{J zgqP!}1fS*PC|DJD@4O~3;i`z5$)0-o+|frM(rxN%nO!o-T8Qo~IvRij>fFa;X!VWS z;hKE7KVO9K1QIIBDCWTs?`BO?SMssL%d{3$I>?D0g+qa7bsD`>5Po`A3wU89L05s{ zTw%$yY>|*SFZ0r4hSNcI29a&jt7z%leR!c#+5+Ro zfJ@7vSYnNyc!m{zT$NEDClhz)y8V{&$+fd$8WIe~-cFk?!Ucs+J-PZ(6cKTU>p(zf z=d3sg;t-7?`hW%-%}TDs(f-M%D;qjMD6MYB#bLzrsTV^CX%&A#_px~>p!p!&uHvJUc-ALBW4^`G?t(5j1o1#Q-dls&j~Y;s_QG`744V+>pX9G)t82MR!(Lv#i04`FI&n;}C4OnE%LV;?kBG8f*y{qL&aQOH7z!EdD zP{f;F&3Qv+c+hX<>fMb)8SVI`fKgskb?Bu$-bKtQJqMPd3jg7Z{@{BLQS$2xD6-mxh(pX}k=v z;E<{g#yV;-E$0d4u(aT9Tjj4IlGc~Z*E0={4p=WA(c%n((Ngoc_JU7bsHdx^dzK4t z?`C$A@BJ{coK!2;S66}>y(MgBOGDYDes zkgwK`f(DNkx&DLPAK zU;&_w45))LbZi%-;}D{G_>up$yJb_83Cm;s?3&lAI9DG$XR@{pii;2)p7}o`FWB=u+|T zq+-#Ja`xOg=o0*J+8znyV$!Aqgcz;q0a#-eaDyHx9tClBV#mL4+5@u28O}<&0{Qgz??(XgC9X@Q& zIlbv;%woYiKV27~_Ow8@G>jjbm-E^APr1P#9(T;Ki!Q>?_bJ$h0|QXd0%qmC$!Fs*M!lit3&H@K-L$t_1|Rl0 zCx3NVWshZm2nt~`m3FGT*r&>Qj+44DfJSLAqll!Ur3Uet`FT|({ui_79gqJbcto`7 zk*iwlD9HPD;`fEux4Kp8i{!$mbgFTBDwD*=#>#pEug^1>IOHwrL=4YzsGM2V8pqQG z62&i~-->zxW;em@@OiyC?B6>YEdM*_wPDFgk&>6#T8!T*t$Wz|Lz*mBlJ zuK+7(O)$dz==F<(s)qNthXgX8{Bo4r7$nH9V6g+O9AIDsy29E03*^ai+g&C+rx2eculr@bh1Qv?GEPn!; zM%t+O$i)F+lpsVW`be~fzNElBU=yY-OztU)-r~vpYS5j8>}8oZHE@&EQy%u7ye)nN zJVeTsm>`hX_w%@Yuu77S#D=^yb`lo59B@v%I!=%At!6&NJuu9Z$wwz9O~tBV`0+w7 zQ6MhbDxFiVNTi6EJNpMWItaV9blgN_<_Ah)@8@U-V;h_Jq|m#IX}~V!VHMUzz)UdgWhmT?&tjKa7|;(i48lib*CO!jtSS zrb+6zMEx$?#d^hw)ZK+nkcBKW^!OvG>N=pac%-cvrq~!j(k-{PlQ^>)tYi)T=>upD zO-6>ybga`y&G-WdK-DNcEv7Ju{}kG_ zKQr~8qS!={C>El${uaA!O)Yw`vam3Qy``jchn$lIuru#CxfPV38JOo#LN8^)GS{n? z`_Dk!IQo0JsHPgX)Go4vN)Tv<{0iK`?=-`yDS%bw=vwNuk%X^302baD+x|60=3&`Md$4YzC%7 zz~xKi$L*PC#vNTbBj>u1*gqB7o7ZC*omSz_KbKi5a4oCdGg9;jw%Cjo{5gT9or>cteScvVN z?{jnx(7iRQ{S5^^*;Rp^ED?SWvf?H1Uhhu3@wWQ?#xW5 zThr49ROLCeHbfGmtUZ?`Zjkk>ca)qL?D(KG-!ddVVqSmaIc8?#{k2oFn&=(1|m}*h0|85_3$dyNBeP{C1do1?b^vUjHd<=Vl1@m3whz+)?BsLy4`_bml^D>x!0jKUQrhJ9Ag=XG@br`22YP+mNR`N# zbRR?gL5cEbe_gYp4I(+cq`~P)`_OCxpsH5}ru;fRh>3=lMd8Nd1(lNK!c(p@{I9cC z%`A>o>z)Q^iaI~&;LCqbr5cDSrCPSx%z1-HNiuc?wJ%inD_jmn24kSrUgXJpBbV4Y z2FXFh1~+bf$}^3-b;98uT3OKclF45=S=K^AOgZ*jryPH(+OAlGw-#&$P9YDcHX=42 z{aqvdBJDJhJ-+Bpg9{@cq|SFlsp4Bs?A4%Y75MGlwMUHCw*QY+#b6+%5t$*0WTz`) zf|^n7CcV6Uzx3sONOdA$eV$7C@;N@H$C7CqbRRpWFwkwMy5BhUZ70%(@&rl>wicCG6a@4h-MF~c5RjHbz;^;jL0X|mVNd41sHj%+SqPCN^1 zrEzyKRKjaYxs4TpXt&b3$OhN}>m+Gj5`@H{uN28_F1rp6(3k?^e6UH=y}C!!^V_SWCI z72&K7b+dYlmqJ@9E%YZJVe!$e8I$sfHW$|ZTxQ|^3-D+@_}?SQa5Y`*IVX$YR-4Mh zP)(#)+B&D(-0D;H9@glziOg!nuADpUD48uF5vwt|CHz@I4iFTSa{PpB$nPF;($I)b zIS0Rpf;dbzIo{z52xmtiS^Wi|3=y^UI`_jtik9)Rk-QDs1js4(Fm=}fV-E3S!Uf{i zmlVOkcx~qWPvMX8cwK*jcZQtUR=35r`HXyLwePMN#-^kqR;Xz+Y+!d|He zmqdk+p<&c5Ti#I`#f6|-z_2rJ;2@g6aZIy<``tfXO zk>Z0S)?cUvc0;?-L|_4(Tw!B|^BDgKSfUg?eY!G~6%6Rp)KIvqXpLGQ?*(s2K~*6% z=`jCwQg^)x_Y#iEo;|JAY<6ToI))wN7QqBSSvLoBnTI<>2G*UFKLnRU;Pm}51<*c! zUhW-3bG14B-n6=#oVvFfMDgMa({XQ0w&vy1Uus_nKyw5Qb2=)6=SB%Pzf;mzn$pAt z5P^5(lS^UfvzpZ1T4=S?&#$&jxSfgu1#=Rk6IY#8v?y`@^rXmgxPVdmvw(F3IOV(al zSN^05H#a@7z*BPEj}L==Dmv}IdeF6TaTa>uMED3;_K|!Mc&vHkr;lP(_~rM~tj)!f zv}YDq7KC@6J}&#RtF!IkhOk!4#78kxvs?wu?`0kN-@Pbu5xM=YJ@7@h^uE+u)~Ra8 zL#Y7AK=3b=>rW&ezM7ywM&ShA%g791H|gXd0%Mf_ZM?nnLbmrFz!A#17R< zMFpD*`ko)i_u6dMQSAc#KiVB*EAyAK9V;hg`2B15UzO1OS*aIZdbC(1H2Y)I?`T>z z4X(t^FQ_-CM+lXI9kUt+7($XaN<;2>2FyqKBZf#dEq~S!@qeK{z9!!7C6XR+;Kqd= zYR3k{Doi}y&|FZ&;eU_!P-Z>1#$GWE+8GAaR%>T+P@-Lq*eRp9KBA05b!Lbh*L4mG zRgf9+J(aoVFmF4LTD9W!|fq-^m2kXd|V+tQIPB`e63d({hgw}4UG4>v@(s(*>GtcsGoE>f> z?nR5>>L7@WIYZBMYzXG{f$LxcB37l@FaY>1yClh$%5kS3srBTiNx{p>jShpjRD4-w z{+JrNb|Pru9Vk-j%;# z-Jcy%s@a`F=w_7IAVA4vU=KH=O1C5BxuTB>ti}PT97*7@v~BP;L7}kF#t?Kem3bb% z{3xe2x--9UEkZwPj-bSjJ*5(W-?Mnovu*LdGi88w8P%~1ip`6QkEGGv+nsG(wNtcP zkqwZ4>te*em}$S*oa6Cv&}hW7A$R$6XxdmF=R9i`1Hos4!GOi2IBHGyxpw>XYIC;i z>cSz;)#v65T!~w<4HDN6kxp0(2>B!o1KaGXTh1)Qj@bJdnI*{gt%}gucJyws;HGhX z?r8%J3*ylE!8%~$*#ofd?%_`&3?7z&4+VMz|Ltcl<(O?IvKF-rxH5N)FwKObUGH6< zH$Up*ca5zyx#|L0V)a^*oPGYdw-1M;^_pHt?uP4mR^d$ylO{jvCUCbRTZ-@5#(R4fYk8aoRUF zNuh#rTc(9@-$W0wq^RDmyD@1wOha-tpaZ|F6seZBo$nvuly;1hvUu_1pc+hIMgzwS zB-C~RX~hbA*`rYhIrlXSr3{{yniXToh92l)O^F{sEo>lp31WBJi+@t_OgzuY6RNO& z;5|&CCxIN*$#N(=1v-se#9?ct5%TZ!$&7s&7Krgk|czdUIiF4@Qay@j9gqy?*Tv>63B2y^4*~{btu#DIO<*lffAbO6U$gppeHGQ2Zpph(DMYB1PmJwVJ zTt`cM)8!z_;j(brS&cMqaW~!I7&Vh38afK%INAi)oC*O=0teI!+d}|#lcWIUUvHIV z;hIC&*f@Lp2;@xp_R92^34yw`gCLH>xNMHJLfQo+YQ2f_2nn5z3fU^7xv6=o-DZd9 z2=sSR9%u2Di`Q9G2|Em)gPI3@wCu|vn%|9b!hauM_u4h;^=!qIiIH}^SFC`&3nAScK-?B3n$I)z+sD+a+Q<;G!zw*;g3ItpOljNasbTlcSDYzN z1|;zPdP$Senm)nwbN^HVc`4}4WGyT%79*QKf$JK3t^mrnhiiNCZHXVV)LGJIO0#%PT9l{o}gh4GYUXXnaFfBp~H*2G|m6>*v(-Y?4F(`-whCa>iV3QY0Hn+e{T|jLOjnd2z+hIaeBM$6&*4F1GWpW!ZD9rsQ zI9fD;7?fL@m9IyjtKa5FjkCs14)Sss$88ud#Pn)$w$-$5fP8X4zN;T*f525JZ}moV zHvnApl8E_B39}s;)R6jXO3W#V%Ij_{4H($V!lzcX-%SAv-?xf_D;X>0qlwlO75FC8 zEk!>ucj0_8E8cGC5?hIz7>?)e=yVzoq3j67xL0VGSAv6+ArH&Eih0_=q;HQE#8=I% zM^%YR?Fr3yoTn{rF!uQk)sQamK~|J}_hjU5z_}bbSLE~sXz}Ywo1TGsZEHN{1}ezU zMWw8q$j?{y@wDwXr8bp$5d^Z6iCB!kECDu28KMDs>KHpqA!W%<2}?oCHOpdG*ot7I z!0gG4DyCOz#bu`+P^x6Z&?8e@OcSbBaLOJQ&YHR8lyP?H7@rg)`?%f&yx98PJ$GdM zoDOwF7eRPPj~Nm)8UIuzEW9^t1_BCXK^|4(cU>R8=7Y{7FjLz@ zZdr7(Nhud628^eB3r=wJYYB{Amy>`Xn7*CV- zU7S^N*73$!5Fe1WTwSr^^hw(wo$5XC?HGVK7gx@t#CAD^UeSLX3>$45;u!({N^ta_ z5o=0S~vou^QPkD+E=lI`7CiQ~w>pQTdf+ zHNhdEQKm6Cs-4`L;vsB60wf|w4panAjA|{;Oc@l-0ai_6-DB~V9=h_BCBUR-iL>7G z^qy%I8ybXO7G-oW2m1>8!UI#HK<%@CbKicmEyXr68Z4*h!Yu0}-peIX4Y!3{`?qB=mdSbtSy5Sdz)l_zz(0qBTt*^T zYJWR4mWwM`FCO=ov-X8l4T)&}*aG5osahwPX6A8Em_bqJeqlZZ{Yq%`MH{yow=kHN|7RC7>D3={>Rr? z$C*~7sAsRS=azt7rMM8SKV^XJl{G?BVN|e{eN3HH`pK(=w{;oEOa{6l!{=o^Wjl}G z5|CZS6RD`p=@NUOcIE(^44=9CWXOu)9Mx!;g(j|+od&Nd;jWfc!cbpK>P9F)+}f%( zN|>n3@}JII%Wcs%w$<+RhZ@eSF~TTN`1C}6)zXV-!IG4}c8JWtvV#-3DKF?ctd1qTG)~-sF z@U7D1nsS{He~&buoOtL#6^;;eLlxHc=bWYk3=U46`>c1qFfXxzKI4voev;`q$h-m* za3aVfAUtmckDJ&^eWWzOK{Qk2@$i^`;HyP&9H*XSmD~Kz2tC$>Z7F6=FC0$d!I1bV zpe33w3gR|>-SQzJDEcjJ1 zv_)!7S`1ZRm&Wwz?y&Fy43{2j57O$usHEa%gT*)euuL0n54NQYWOr`~b{{eEgQaE~ zskJ*-8bU0C05kxPAKwwyM;pN-aQmQhcW(H`d{^zY-ys9c9=>N?TbRzv!ajYhd-T;Z*(7+3!9X`29DCoZNT8bbfgcuD{Zf zTmBcA6s0A`9_y>i6%}Smvu_`QTIVzd8CVWIDAb_kx-UMBg})?x8;AT{bF%r>vG{sP z7;5_{+LC+T3Cf3>VZ8x7Z!w2^Y>OPxY6Ny(`^mEQlTS0C$!(rL4$#;iH@fKcbO2^9 zas0?6VPvqn492+J-lM%d{493_1jYz6C(VJznz+OIJ%#$pRwxLTm>Vf3ZpatDS*X@^ z6-@|dFvY|rR4L-Tq}#^;bSMqyCEZ%aG;DW!!mumgAvdT;KWEi@=&?gy$VQz`w{-~f zdCjd&%}Ck&lnY}Q{r`qM`6wbu3rj z0ywEhN&;;x*8DsGnm7HRjP8R2BLtOD|YWUbz(^zTlf0Ycs7|9 zfEpHZ)aIwz?Q`Tnh2&GCgXO>=&+Iedh4}35#%(e7K}m+Zr)d{n1TJbS5ou(ju#-X( zIj_bC=swF_Vn~fhUsNLWW26}_?X$opA_|snD{Sbk!u?Kb20#ERd{S?U1B98Lc1=<@ z%GO2b9MIpq-6{=S54foMriwr(vOx>%^($@zq-;Fc805Z)!Ku1FFQ`V4zl~YUWcfmD zuIIwN`e?yYl{74l1Q{TyneTT&pKmqHW2mu$1s#XmktOExDQJm?Z1RSqo^klRN!C6o zR6Q!65F&L{da5csKx*W52X7>KuTLtZUkL_ZjJwECaL8M1n5TYV(bUQr?9@wk-_xDS*B_~jIzO}z)>)*!kOa@=VjHQVAjm+<3})r#PxnG%EEFiYQBHB zg$*|A#b+)dJk5+$AUdaV`*B}u4sF3#_L3`$Nd{J}AL;opt{&Y`0Yj8UBCA1b4q!!d4Y+iv0nvldr~!P zU6YE$S2Owz?28pwuw%#9i3PbGoURY~liD>=t$5kLYL{_SUOu!aY{7he2nI21Pt?NQ z$6{GJe4J?;bO#R89X&Pos~w`@4hwic&lN%uD9xxu_~wdDi>J5;GUAKT?2Yxh#c zo)1YF@MNDvks796DCQ5}4S@aGNw(-#TKo`U6b%&;QA`_0Wt(O8;@qPFKjqw;cRRL2 z*j|;?Nxq$e-UOGcq3^2Dw)_=?1uZyH+(WvzMO<2$A;Y6q^dy1m8o|KO8Fx0Wk=Rr& zDiT1XPllsj9TMBxuTI=D@@P&Fdbjpm9EU%8GdIR8(foRW3VGf;EtYBhngNf6zv9$+ z@|gB%+-$L958^GMU*yxsFMgf!dAVj?0UDkusRcy0>)?QE;P-;BAqm(px-isoA-Yzb z9qGGgUe%4EttWR%@h?j3y4QDncfGs-G%g$y24PeCwy~SPc{XGU+}-R^Lecn5Y6(1k z?6sbLGDIDPibZmsYJC1YLSE&G0Hykl->0BsamGnI{!@?Z^@ulW6g?8E&oy(Qx(L3c z{RC1aDT!rA-0BjfEODFaY{u$H^c1foZ0r95bE8($T?Y?l6~iICtjt&q9^&1SPg0i0 z8>MIxw#-9o?YuBg!(Brew~`2ZABJu7Q9z6WITC%Iz?|cys1@V+sXDW8?M-Y*q=*Bh z@YZqoAjiK1gmj+~1F(U8^Oo0eO+E?l)J25KFtY-?v~4`@;HNWg=e5=@3G-%sCO;+K zA^HRYvvXoF%NFb}49SGme^K@=c^b*cSlWyeZiCOxfb~1uob^qYY8UAk8rN=y4jQe- zR7X$BBgHT**>>$D*bzfqq2Qs(SU9yyyVKR~9ibX<8a|yOx6w;eO0l>0C@tvR*JS32 zad{J9HoZhsZyiZ{@t4XyO951#ZBBCXp0})wjv&ccq|;oVhW8L`itFMDeVTXrZEo7f zMTv~IJVj*FVeodiqV9bZ!u?^-z;N&sC~r@AByx6I)Q{S46P5)A7 zjhF0;SZeaLZ7c90BP*h{^kd&ZK+#Gr-7B~h$e`?$ z?~Fb}`mi+kDfh1wnL)qa%oA)Ln?p+-Z%woxwpvMn;icW5(Vi z*>^4*4`5z2dAF53*gy*Kw5-9q;JTQ@sCKSo6ku>#sr zZX!nfLQE#_NrW+&iPjGsG776Q#xm;`w>PGXid(8{{$U;EZ|frxkp@8r>6TI*ip*7f z;&-THlUU}8Jyn`vzqU6^el^*iTU0PL8wy6PnaeexBuQrs5_>wfArItWRPrcB9!VBm zkv2r}@M9S{LI4}77wi6uJrK&?2xz&@T4a{q70=Jj--0C|^1b#wdP!f*JgArjsg7O> z**#(I$uke*v4iw6tVLOx`iLD!KqvIa0bw(yHjuZ_8`9jR4Fxqyt-8@i<4&+)a?%!g z5IL5s>aj5(!AB$lVGSE=NZ?quIfJ!hQFG+cxQ-xz*ESoyN>SdB(<(x0FWFGpa%EOx zbLq)Wv2KCa&5Xz<;d$0(%$+70#!T@^P?-t3s5Dpu&?;KGD;S=Jm#8o+e}D^Z$6)E~ zLNJ>p@oK7%yVX=_$3&(=>o)O<#eHLrKl-Ewm$&aA1+V0KTSGHmH{DtV5_F9f!xVGw zGzy|GdSdRu7LO@SImmDc{kULZn!U%?;qzJQyfA;JSdWqJ29>0iZ=3HG}qK)x{zA|Q5i*^2$Lb=lXwIF zoD$d`xN_7XinMPHPKe}QQj>Re0FlE9dd< zuby60;D3YB9qwIlf3k+PB7uU8)6z;vo`l-__B&P6d;8w7iv0U|HB&fv?9jAgNYuvU zwbaJ5fN~EC#SAQ%Diw=kWDph-#fVACOh#P|G;qsdmUwpw8Z($|eg>4DNyV6+hLe*N zA~u*=6VwkT$uD&2@NZwSBGB}B)-uztDf-V~|AKH#{SbW8iy$?oKIwmQ20Bvofut|F z3%b9@@3@tP+#D>uVJTdsNn01cZZj7b8RBl-0T|`cNwCt|{Q3|Z_#?k;`v?shoy>gdDH!U4CM)B>;_{Ea%eZD|d8b?3_Ygs& z%~9;~+T3ArwEZCiX@hu2kJ4)Lmq0$pj`hXGv&9!8sXfW!LoDb02Xd2G|3x2|DHKSJ z$5q*I@?Ok7cmGarz~XosjTMmxM@ms0n1rH>=zSwZ51sMAYHQ=K9*EPFGH@QdTS6ZW`HPZ)&FnBz>MRrOnKXq8h{BUI8*Z@=5fkDv*wVVS0 zH9*S0fU$*!Keuhg8L)!bbKro&HA;DdClufO!jH7?9u;E_HE>kWmo(7OU-arA%w=?o z@S)pk-z4t{+39wI<8>@!QwdUpWLy^}r))+Wr5K{Np-?WBChxrrBNQN@EERIMRqrU2 ztYdVH@aINqw#C8fr>QW50M)P|1w$?)2sp;$P^R(UwK2}67A|H!0Lcg@UZjteqQDaF zu1+TC$}aLB)XI!qXL(PZerL_d(-AQ*(v;!!UShh&{`f-2X@kUAt;Rv}Mb@l@Ne?2H zXn-{s0fou=ii`Aba#K&1+inl%VnXDi<%#S#?-ax}q-OT_^XU z{uMF5K3@&C4%rhoFS3{I)R#ghnm5fjOtb7l1n%bOkQI_F7u+3=|3RL$T##{KqZx@W zok8u+wUsU#TN%z*j`zzzk?Tf}OHQf5MD^5ienEAt>i9@6Ats=wja{|L1OVRK5s3oy zZpoh3gd(mhvMX{W1^am#jj&7?WbJ=tMOukC&x_6$Z$U7TmKgvU@z|BYxnyBgFLYHl z*q0V2H(Ij)4k2jPJvjp&-xxM$kGsZTSKka`eo z!V^8Ri)g~yYovIG7{h_0%YgT|@1u~~JtZsrkdwQpA|zzAnfD4FD4*T^MHgmKx#}1+ z$bt!H9nB1syAdWOhinnprQ1*4vIF* z_#XTW?nNT^@+EE&=$Z`hO#<%5P|2QtmkB~^KZ`Qho6}(8jJ7D%=7CJ0ckOxHrCEle z@14hpZ9oKJtOo8ok2)W_-PZLch1)tmgX;Bx+#!W;0ssfe;)rJMVw}(%Q99>ZUzdQ= z9YsO|&xdpk>##AF~6S873+_6L%?&J(Jj$!?U?nW7^#my2t7pA)A z);lwhMx{)A0#rDPB4_}U%eWP@ zI4wdaMxcqhr5?yC=j8{Jb~!J9p?^&HS}ld5TZ^ISSojAq$S*ZpFrL=aTstR~0=4{x zeD9~~+58IKT5U|N_>Vl$d6nR1t#(0t-NxKZ&~HF3lY16#q?eRZT$WT{SgU}x`poMF zY)w3So*62^JjDE+@-C0H;#E&M`U|WRlijw0-noZ{r?1bT zTzbPd8dUUE#N!I1o%1-Xa(bhC!DD;D`|2NR(2##7s&$yeZ@2iXyCBYM!9>mOQN21< zjB$X(5GXJ$p8il>3!8SkME^iu%2!c)D3zhYkikkVND(m6_Ct4DrMfYrMipO6Kc2qw z7-3A7CIqNT{=)2L>S0}T$$hC1T@$U^>04HUpiu-SY9UTZC1FD%^SLK-HhZ^B4aF6j zzLHX=eAehj=Y@JLO7#*yys_qwK}C4@dP>1E{r?<8o!0*yLoW^D|YaCYBZc!uj+ zcvfpgRhM`IxS?b_CCB^rA!9YYY#1-S?QIM{CXM2eeUWRifQS$%CszEZ`e3pFiKR*W z3rQQNT&Tv&3uA0#klARZRKp7W>-z-3Na8rhAlvCAnz-hRTT?kcxB{c>lRX4&=y+=m z|Nk^TE1;6E7gTYxpWF$(?R0G?%wB4TjvyGHv?txJcS^!i?|@1BZ<~c8X^hBG@HaB{ zG6@#X>K7K|>q(*yR!k%jR#w-X@0jH6@Nj!M27|-BthkZtZgxMrvX;}1XHU~7>ZjrkwIiPKluB^Nng&x-?ZVYVHSUMmWXwX~#?c_`LE(Q5x z#2M%aQuAWsqzvvNzUXYs+YrNSdMXGUa1fTZNa0JW227K>Xpm(6%Np~LeW9=lrqtVk z);R;G9SL$edM*;4uNzm-IQ|d=v^;m~8DXNo`P+<9@43D~pc9+`n<~*VJ-LfZ7QDFl znhe_mNCCFcJ&+`1KCI-Z}>FUoz#^<74`5;kaoVyOK3qS)3G(7judCM9jZSq&R!j{X`L;7C4n;^LoB0d)qM$Tf%`NsY#qjkp4O2JQIhoaw4`|;o|z~d4p1!L7+7I1Kwv2&x;0?y?C zXO=}+HMzsd>X>>{m-sz;VjB8Se)?zT{6f{@pjs<-0)s9vi?4}Wd8>2&;KbtqqB-h} zWSH~La-MhT!HuFBJ?0u!XNSI7FCt0jPx;X5Guhq(IlVnbEX|!W(vIj$EtUNx?PDbu zrmyT)K6;tG-R!?O*c4_duzaYnB08ckch~S)IhXVl6%C2}}8u2?^uwr+#=w&OyjG0$THk~3Fs_1y6*UbJ`4 zY*mA%vn=1DtOATN&d(oD{_bchph_F0m# zfB$N@>95D98|Ffb^fL#P9ZI#sOZFAzHY+AfL9QG>D_&9Bz-8*e0H=B{4-NcLcESNuqyRsCCT$l*JXD7Bw7 zs?*JPy_co8GSWO|)LdR9x({0H&HlsiO&5w2uCRLSuW-6-*Qyi0;xe5){&SYG;QsQz zs+82*VOZzI15CG`h1YLTS+|hi~sI6DC9a@jS%ipqWB~3tz zge?h@I!o%WubB+)j#s3>et4tvx+9cSR-TwV*%Jlqjj+NwWz!#X$Ha8RQjtY6)eO1B ziaYswxc~73RwgN|3F*Hb6)F>U(proEv?0;T{GUweze4C=dJE0?ecAmRXj;G6EW_Hp z?f0idVi&40{6P=BYVp)*u?F?Y< zh43!Y5uj7jm*AnCk@(QwdQ9Y_7(z}*Gi2rpF#F&_l|)h9XC8Ah^4Z7MrnsI2+LPvZ zXQ-~GQ~v*bxuy)-VNULpAIkSP-nE4DDu3l++ts!&Snve=HzkT5hYJ{oxEv@3$)&8} zCXpQAlsnP6ZT09Bpp#(;5JVvwnPT0BT@!WZsfNmT4}m6`M5XpSbq&jEtB<07RSiu%cMIxV2sG)>5j=9x_P8g<{ay^QeK|dWmh-DIbw@wx<0G3 zKz}hu|I`0sOWEMl_2k9pWz}ckQG&YL;X}S{pBFWuf(06Xknl)CL$w*OMY8r+wxR=< zBLANxn7xrXG49p6j5huhIL7Om2~09Gg(0ll{}tgcUN%h@Rv+m%8??o2qy>)wgudDUA0N!?UvrBIr2I>ueN>p#reb4(2&RJ#pGFr(?D;p#3yc|;k7Ju8 z-HWv7W-`Np+0oM76Ls++_e#oA5kME7-V988C-Z2ZDM<%07c&FhB=ERQB>?g?Z<&3= zowzA-aCN z>d8H>-!rF$5Xqcrbuh^?^+ZdWfqluQx-9sKeWsjf9p^b`#NEOj>8eO^Q&nMtT%@Sm zud`ZMZ?<}NHru}tIRchdUiCz%v=?x>IJO1k|r)peONQwNYW?)rLx#c3}OAuYiZ#K zAF{2G>8dW2j-pTcs=i+4pw~YS%3o5oW4TAeNCCJw8768`+NJZ7tJyMrbh|M0N*+;t zu1L>WS#YarAFgM~Aq)Gc2>9b^BI*bA(0Eh%0GdxCLq)q; z*5o|W8wPm{$YF*2O446-7AA2{T|Ey|=>W_a1i!@**#&<^Nx93$;VynM#33F?xrUjI z#O6FXtve792Q@zPQ4d1*}wMs zBkr);mu`-{LZLKzXFW?sd&Cc(Y*?I18*z+6)S*Xc2YXZnaZUbcE*pDjTo4NDsVhc249CC zU(hs7iQE|ZQM)ttT0#4xENZdXnd9+uvJKE+Z!Z66)bP|-Sby^nkk<>ly8ev%J%jzF zI&IKuwD?cdBsbAdY(Hw)B%5>r%iQffgB>|Vkms>m zTb)p6DW+yO(spdVgPH^=n7U59hqgWjNxs~h#I6ik(0o%TrNFJ4sYySp^|5qcgErR~ zVmnRfIgP&3NX#uy`AXI|fb&(syz?D?T$)j`aYLFzPTv7%TJ1)u5hvBoq)HO>Iuxp) z?gs+8Zx;hXkSiu;hrXasujY<+;D^_42hpHu$YV}1$O!*cugU(~7fdd~DDjE7TpB>O zfD1pwDGKikSJ(__soSa5+~}w>kY97OFK8+2;Q_6+#zJt}xzrxh&u#b#6frP`hUX%(6SLZX+D5Qb+MVW&_Ymc^j_5k!q z@+-Pa2NAe<`+#QTcRYyqTCdj@kJhXLYivY@BWNJweix-T3xL4c5vN=42joZ(a3OCa zoYxXv%IELerYp<6&uk(z*gn!DyLB}1Z4H}YLHV>v)Ge(P(3Jx2^NN%PR}Yim;A=&WO9mrz7H6S%NIMM^h$1VyG7N2yUu);mrCLJA0$ta!hxu{d(rUjJj`R%S(1 zh*>ZWy(DU%Zl0pttWUDNwcH3}nA&DKOm1`#&#esjirbY`( zp}cSVWSJnt05mX~4?bZf8{hKWYV3oBSKbA%IwviiP#FTfM@9ikW_+Lw$BfCyYoHFF ziB1=+zTUN|S~@P3Dix`y+g7SojrV$J6A-;vDeGbHz`$f}pF{(|bkem;P*W7B#~Q|m zCa_D#y&nO;T<6B)9Z!u@GZMw815xh#pB&70R<5zs$46J~Y2^t|@fEjX82Tu(8J7ae zNN~GW@-J1pf2lrJ*7ebF&+@oO9`QOg^&~+2-#>&H41mxr1kGHMUHPNiKOZxTbz6b|m75XHw~KYF%n z#3i8EN}wV4Abgr6;r>jWNVk}a_(~1OKnuKGY24c2aJD7BA`qpHffLb!>kbw0p;*&1 zi0+$Td9*!u?ZIcY~T6T|`=Q5(m-4O=zkU0Hfx) zNd?SLU@}UTW6l+Ws2`mM=c{@wvxo=9i=tn(Z~TF+^k%jd2+yKx=1X3g*Gu=~ql-U9 zTC!;2$J?O^%FgVwSloWezAGPc7zIO0kiK_3_KXs=G4YlWYsv|rhwFPfwn^G1LwU`Y z>iJu$0}wt%q?7$uY}#*-qTF+otB4x^@b#AG6K~oUSfO*?e)%3g!-ZY6m#R~NM#jTh zNFb|BYytced6%~1{{c4($(T;c{?x6ckci?YAb2I+@(W9#pC&r&=O`)8QSlHTNw=>- zCL~f!7lJtZhj0PsB##-IN6EoBuf=RkwBBC(o|R-_PWWnNU{K{qGIkM6|L2Xgr%CZO zZQkKy*3P^`o335!ehWAp0inz<*0M7OOY23R4WmdNYRulh@72zS@%C?@H}{iv*>=B) zW24%PD$csSATt)ouuY#?ue9{8af=42x!tGcy{7u$l;a^!)j`ylsigBknq*u1x}&Zz z5DOJ-H|y2TM8jHB9g53ZxZ&ACF~E%_bnW{{iH2t9Kd7r&PXj?op%J%+D|kjIo&hxq z8`qV3MkE+A-o!`ObkJjeEc4m5p7jwTGm+`gRCxQWvk8>BB-8d&wKuA!qPd{~+>5Ei zg(ofLq(7Dgp#J|-zEKi=I7gC?bNRr+!28rjjGe&nZY8T9uA;7D5-MCuBDuH zJU5NDl?v6}ws1Yao`0!dG6wp4IX$!KfgZAS+|Ep5Jda(zoi}RPiRxHDx#pkZz3);Z zwlohfv~|UhDr35dM{ZQPyEHrC_{ROL`#cKyWPw|uE9(rN?u2Ct*-rMcpoHs}C=iWw z5Ao45dIR@m|t=`p3%pP|mPbLq1Dgmed zZvUSTrkR?UP08sThqh*8YH>W<`UrV~@b!_M99ol8JC_D>D!suD-?rnkGi{hRSuZ{X zIE!=XFm(sP;f4~2Rz%aKe{tmZl^UeKV%SZ(0~C3~ZUZ!t^vVtRI6s`NS3LYQVtHZp z2HAb%xFvuTtD_Kb*9%^B2x|uk9H!P)U+kVN<)irx?=Fxn6)dL7w*%G&2UQjHXY6d? zuSBO+7kfRjnJHfl68LoKs+8!ViFa;<>ZT5?r|Mwof>u;ZO(9qugdAnP~g0t;Fy}{MC zdVTgJal5ia<)$o{>#gioG*oi`DPw<1Lz3YCT`V>Z^M=XhI!>kp1{`9r1(-I-piUse zpq&=tuM-+c+YV^fM#eD$dG*%R5%dgxM8xcWE6HKh)jTD+9J=k&V@_?kx^K$`Y}5gf zg-7A$ZO8}cHyD5brVb~C2!x4w1ITOEBe0N*I#&Ek^^1b_ZhyMTYgW=&kSU~@1;g&k@~*B-9`1ezF;Mu(wRp>C$|t5RK8E0E7S1UUg+e<;FJ@DLQIvXLl;G}zH&Bx4>@%Q3 z^VRAWnw_E<_GP09RZklZTyysx*v3)cWBZfccQ9*snmH{vVn9v2?-pFqfjYs{PZnUP z$%%=4Uvk|0vp~3n%jJAm{YK5c!PiFhpU@)`RMLmv{VlT_@6j{t=Ah#><+*o=?7@AIBI$S6PFXI`7JzOdj9aG}sYFTygnl4e8r| z!T6x6Hd^XT3_KZ)8*0f2VAsjJk{SYa?Qyf_ZikCO9MrT-A*Nn2ZBk8)uV)GBTAT~> z5RE420|j6F(a0ztj+P^x4Y8;j z8WYj^OCr{Z@RQrw_5PjBKi`Bkfh&>G>FR?4Ke0mN!iY{4=Uzdzq(;_LK#gGin{+gg zRWGkt9CF?xdy!Wr;e2K^7tn!8mh{CfG<#jR;34`|vWhk1JNc;pRL^9#x(V^ESmmQk z@$bXiaxYCJ>LKXzFp||JQ?xm@LeWzJxNn3^QjKS@3yI+8!Z`wFbYn6ulV~BSuC92> zY7SR{fek(T%w%;~BthPOQ^HleW?u~uRHedJ@t#8@#bE~0Ifp+0fuVQofEm<=e4E;s zuZb~rCOw;JZ3R_7f4*xt*LAZpzBKG>;+Et!@Lz~i(BB?chYba=1fDJ#0?k!p_{Te7x%xF3r54P!_ov%$2sl5CLb ziGSJ}7pz&CLr=v0X!O2geUzh&ygTY@O=p^fAh!r*SuUs1WEhE%Ps==kp8M1c8`5fj zLDy;?o*XW$7qAaIL~d2NWr>@+1t{6qW4r)m6mR)+FimFN#)Gy6%Dbe{f*}St(&NRz zh0mI)0b=$Gn#mdr(pmbOSfgz)+1v46x##Qc3Fjp$WG^=gwOd9&zx)goF+=770apphoZLBioS;tzUM-~igj*PyXru;C{5wf z(hrjoe?An63mc6y!nJ$v9+1d4JHX;>wJKY0)dw~V&st7qP< z<82B%L!Ue?VlB$kHxIc;3FNR4$IY+h-OVT3j&m_tpQAZeL6$tRPyqD}T?WJUWE*d= zTKXlGi{B0ec!Jvnr?zx0k@&?BowB{e^r0E3W%)Dmh}(_i7>JGVMaICdY*qst218Rt z8hS=SPgbjpPr6DXXoFJ2iz;i1hcoUV9eTO%uZ*ryKBoJ{^_xZH1lnZ5q20XV&*DqR z^@`d0kh&Qyo_s0HHR4+$9#M6*WrMbw&aO4qZZYspY2_SZy5TB_Q3Ru$1D<%ch;#dK zW8-dd3&(kd5YRE_Qi5%62r7#FErKI`D11}YvOlyfOkp@nOdE1XrHPT|atS)^px7p< zS?B6=&60gg?+$>z9O>y8U>DErq}|B6b}y0MNWqZ=yCSkZ3ML3zt1^NTfplm8?P&%# z^RfVCjrAe=nW0@U%YI(ep2@CeO)MvBE-=Lc-A+XW3n|U)i-rko=4V%rxyt9@QNJ{~ z5&u`xNlbuPW^{n6{>+|)g4qzYAQ)k@+cTKT>LQbGtwiEs^EPCjIW&m_i-j1jkErla zJuc`*&`>Q(wp09GI8 zaB}rnMJsiRcGxCkkC?rO32J;!0qsZk3!HSRM@vaOE8nb0^f8PskvoMC$PaXMSXLM% zWnEv9pELC}HYUB}AdxymnzQ$CG`~#t97U&zjUR#Wck&1iyzIgQMkDeLFhQyE zD`}vLv~+zk(eLxjJo3-r>6hut*X19P&^&D(tRLBpA$iCZ0_8#4~i z8mC1X`?aTy#GDCnBVQ*PB32Hz>II&YmD)V&R>6q1dcaEK2}zQ8DT~$n^`G^jT-j8< zbq};eX-EjwEsZmjW9j+GUQo0@`yD^^FcAT+qGFL>6QvSZWW73Y)eg7CFJFqBMp&^z zJIG@iRMb{_*!Jjx7;R8}OFtYwZm`}DnzAmq5l0p9#RgcXt3jdmHY>_I9tU%WyC+ym z_#Y8`d)+1nYdg9MO-r0C<5;zu)b6nsCs<-Q4=G@ctt#??AZAw_NKj^cIrTH0=*Bg( z>VG>ccf{L9!;V&tT3%|g*9xB$ZW6K5OaACdhoO>_pGsyLmj9k7{ZKY(6PoDpIC^^C zFS3~towG-9G_~pAza*dr&B!+<5_DcntNm-#>U-gPNo05d#3_5#bW6MCohyT;kDTvR{-+Ck! z%?x@5;!39AnMJ;feA@^t2WEsX={G}KFKx94;5ABru+6R#4xYL+o zIYK7x@ltQLj8AKG8%ACAd?Fj~?x$ty)XMrJjY93TA%Q;EGKDSqbffk?nYy6gL@p!`)SzLiEukzJSqcg4aR9jrR^g1jcjqMnPlTc@1a#JaUBbKgU2c*nK zfp?FW6G)KOvjF|J@Ti;A_X0@M4Yxy}bU7~;e0SDrzX~0{I2{;u#!^hcHBMf0pVSo8 z(@M?kb4_+LLGLx-rsSC+G^jIJapL7XB^ZPMcCY$N@Sro<3${*b{cC&se0;8IfIUfE zC0qHrSrBj+ootEl%K-^a*oy4o=q1k1fLRWM#m<1TjNisFKhC31oE(b~LxxD>8$pD; z**m6s^RMU%r8jO4WiWvg9^iv5pM286=^Q*2k5U1EV>VPBE&9uE?~OsqC4Y^`J1Z6Y ze}#gJmhK#KLj!lbRZ}3D%Z7Oqiw@SUbHnDgULoeDV=Q_yUNE!_jYnBghlg+$b?G`j zfbiha<3P`^zwWx+7{xSk130PoF1fuffjq~DEi`h-?cYb`5x}e~$u5^){RjE-%XC_e0MafB&MrG(gDs zfOz2me>T_2JUM7(%Oe9ep3m0Nn?-eoLgS(2s$o~4$l6-~MHGFih_mvo>%+DJ-+b83 zf`5=jM1?bXo5W-sSin6cXjI2RaTHKZ)ONpCrAzY_SQFfF&IV;(MxW06=n^CPDZrg; zro}bUKPBGMHrd+8xXlXOZD)Gw^n$x}V+TwIUKb}7N1glUE(FRqMME~3fNJ%Ms zw?ce92&#_IulUdlCr8k^pvwk9?JG?2ol0e9U%$(rS=;N*b#>4V=P~&<@oQ;qLEJvd zEecv2=B?e{V@85sd`?NCG!2B3*DYs=^{Dv8!W&&E0xh_b&^N&S=|3d&(Sbs9g^K#$ z0Ny8rUanG@xY}8MkOPx()i4LpwsE~t0|~{wg#9D`4ND~AJ2b(uHhV3${i$$q(|ULU zFp@Q^jFH4bvHYd|26d{-C#si)JJTtsbZp-yZD&{&NdR-*R!4FE7QS!)|L;zmMid~4 zBOz;@DwI?R)1gTK&%SMe9XR<`&soMy&qSln!*rT~9Z$JTHH$0hGDM;wBK9vkxxG5%u!&?t8pIlsHPR5O8!@-k-lm&Z+4_}LvR5> zzL<+5!Dc#l55d#S0op_stQY03Dggy?l6!q>8qeRIIduT?AVo@pZKTc2ak<$(W}phZ zeE_c{61Aj9;;&D9S1GTTtB0b8K&5y|E3k;fO_75`D*K}?O9~MqNv9c@irWh#o4ki$4m`9#WO`9>re*gOQxa*& z7z4K^X<*AVLZ5lS-1t|FF(wb#D_?$S+34J(N=|E^;-l8^OA zJg64`Ud|{#2uACkUC$Dbncg0Cvg0SU%8?r|nJ!J<;%-tvDM?Kh@w|{=RR?0D_q2A` z_FQKWj)u_F-}EY)d9}dd0#S`{7Nwc9Ql9(o;W$<2>lz`V=k`({Q;E_yJ-A#Wft?)#40(AwEc`AHy*u)Zb z1*3Dd2o^E~E3;Y85W8`T-_|OUpDV($2_#&fZa^*q#czF;Pn=mX^pDTj0V zY^6f;8Z`||E#5!mBQJ{;hv`_aw~M{iHdub+nump^_-qo1&Z$MJGoQ+1$n zTda6g*-xDW`O6A7$GPNnWmJP`5cBHX?TP>T{PGl<-o!R2f77Mf4Y{f!`pWK2NGx&$3AenE+ z<5io>(T^3zqQL;Vx2&i-#8pdU=#FbFx z^P-MO^>R@U-so}zuq8#RLdkk6xUeJ5R*^hQ-Fep#I&Upp_Kmjf5{#BsdBO?3HT>rpYbdeDXoa6bNe2#-&9wx&Wz6GnFBYm01c!;fSpbWq*+Lt%6#qBIJV9GBAJc&O(w z7o_fC+F8`zkxbecqIa{E;h1U?c#V1x-k-O^FxA#KY|Qo_dv&w&WoYngoC0+$$?{{N zb~nF#z1=G(Rd)KpFjC0P+3;H|AIF_G?dt;%qOR2Yr*(5VRA0M^Lg?>Z*?v+JpEN!= zerQF{$+f)SS7m&HwD0O8*wnQZ>onUDgue>6jL|CWvjKbaDttv=DcOa6moqV!hvGuJ z5dr;5$r9E;`CSB_1#w*CUu>pybdar-1U{uS&y!48R|4PWcAAvDpfYk<+&v}vKt5175FaLnQ}{qEH;c_3f*Y9_n0m`WuFvP@>y?zF}~A2T&%$}WO_ z_bx^g8i%$Nqaf6e2>&Y81Ze!=y}Dv&i2h`q-m{R|MCjc}F@ZjfDq3OC*hc!sEZP}d zJj?cB#kov?GWY^YyH3m5{NA`enk-E3VK^s8m|M}s^_ND~;KEji7=|dH%@%IzfU<`I zP1>&psdOart}@dUUfD>v6W~})vm@B2V=K5%doAQB<|*EoSa_^XyWQp+l|R&8aags6Bj#g$}50&p|H+(k=;s9o4Bqk7y_F=C7Tj9Wtaj?|7mV9 zk2AZ&$Jo%5UkKJS>`qfDvV3YPw%`3(v6}l-8g5u~pgIHot|WN`f{~V0z?guCSZEFm z_Fa=9{g8VC>xVAJ%!qDYVfE^*VqlO}_A1)&g5pv5t6)z;@dQV1;W4g?uhhD42husu z;@6g@@7eQ5$sa6t53KR)i|e?;bz-TIu+ELs_vWyeiN^9<{gNi zP5_8mil99bC7Tj$*>v4ObY|5|m}HA6IPip@3;E|hyMde^W@YwR$Kr5DMG)tugtPa+ z6iEgj#wn7nM)eD#y(3(ds-cz0FE*=3R}Nr69zAlJT&*tR;XM#>YUj_+5+fQ(J4 zA2ml}w#gKbqK3el*R;uOQl%AWgVz(PL0P%F0bc_e=HMg~Frw6|{3|EjYnYv{!ViHy3p zdx*kEqe1yj;dVbbn_Q;lGf_zs5rlnd8{V7ITSaeOwvzsvh%Z+n3Swee3M2*0wH9*t z>)#m}Zex7b0uePh2NEB{C7{8fzJ3h3(zDo*m6xE8Ix+O$TEUgYF*K7Yi(_h1;mkP- zhjSy%<5`CRYTjic+Y%JuqCupASqbYBMao#>PlvG&zP^&?B^^t~O3JTvBsuzAx+Po#ldH#r_Y$ zKoYOhT*8IE%kUn|xcV2*3b}aXcDku8lJNfzskwG1$JoQyd=h;Vy=fv2M~Q)Pfb+J> zMY(c7u;#mqWJ64FRl7*xItZv$9(K+jsq%lMcyq4r!t8|%M~q)eCJq6UPh$O*_xhu& z7bB3IOYXs)Dcg45-c4vz&$-N8V+yYR!PUt2;tUfI4GBaEm>TzI^inxiBt}A#4MHrf zt|%MLPzd`?E43^g=MYLZD3Ju-1e8u@KoKEHgw<+zM{>ACp&r>svs5V*W0wOj&(=8f zZwNI!lO9S^9V?|eI?O-QY7aINts!9z6ucJ}>BkPU-;0Mnd*DCm;2>XSaFp1L%kENg1$8HzdN=~Qh zZCCApLJN6k8G>}+Tg$mr4Fi0b7ca!Rcao5^Jf3hXzUa&*#}`}NArJWXQn`l3g1H{R z>mNn1h%$1ZLfCawYUP@?t3uM{QpVR59oz2IDUO$icqD^+^3)`lREp|BJzocH6N482 zOnCFnsNG^}QJeMh$YUQ@J9J&>UWUn$o2qu$xDAN3Z&i(WEymp3>|p;qYsw6c1MIn#C4H;N}wvD};SPv&mre2?5QXq-kS+`hNQW@Vd& z_~w<>CXJ7W!MHRuZXlmlB(`W#NC@TMBKNTlQyB#x*uJ?c0&d}}-Iv-*2*9~j@e9uK z5FN7?DPbHkD-d(ct2V7c!;dN?j=;zQwPvesz@mBR9VQ4kEQ&QL1Mb;zf6>R!E@;-D z3K&A*jIMM1lH>Unt?%vI5peJF{v@=CTj}6>t6cGI<}zFRSpvZ*Z1UG4a`#Ix=qSb@ z(%^P!o_~Ae`uZO5cL5-an^Z`*o{A9Yn>;27A63b_CLUtP{aWp7SgwC){+JXI*rzKM zK%_#db0mN%hP{Sua!_4gGWyyYrhte_k2^O3f*67Uqmtd3ABU6ecSlsgn=1-3DfQwU z2|t!g=+ic_P=0B-+%BV?O6fP0Uts4y-hmq2);TrR(LQAt2o;Z4m6emq2I9At@owztkSIT>lbRI_#Z}2@qh5XVt_c)>4lc8GHU>oW@jW9oqR{d zCcA2sBFz^|6kF_>>s0}sJ?Cc%tD`6J`mP5%k-ivQz3Vw-wVVnr*|HN76jX`Oo>80u z`PMOq$lSlwCmv}zp%0r2gcRu+r!#lvht}9Tja|rQuZ&!K#uzPU9@2#u{<>L5 z_QO4Q1Yxrg0=Hh5ot`7~W(0`6|GG)k_oY-NgoGRS9uN`STpHdGPM&tdlX!1n2{g`2J*?fs*1&B0p4{M7{s$|{{N}m*{S1L-c_lAFOj&h+X7@&$-JF-c@`_}lQp*< z4=urskb*VrC=9)qsF>vV%|mVD7uOK0S9-(iij;3XxOvQTuV2EC3=BBv7w7zBQ+<2O zMAYWm+-<4xm&qs7*(T!63&3Nl4=-%uHgOVE(+|M}^DPOrjrX*fDaET_Ghcc0)^@D1 zLMfkF&IyS$wvHSb5;hmT!tXv*&FbzJ@1Dz0_Dq5nA0bAv7gI&BVEMbLqm;Fok{es@ zr5EA>h_jBCAtI^t$N2GAu z`j7OZPbqwUmM^1oN8`8V0BF&E2n>)gI|3(U!exQ)_d_FN?7-lHUiZ6yDJ$2?CmeBf zxSxgpO>|)OveK+G&HM5+156*{CX;1F70FFd)DdJ`J6F6x}}v6@EC`R zXlprIb=bL^HJ0s^FPByBG|$!1j~F~eL?QYfWSS0Z-q4~8r7srQ!-a%rl)=K~sL$9B zQ?p`7QFkg3%QPP-tQG;0U18zE_Wkk;rBY?C;kb1d!(=|85WH!%%l9`{bfbr2S=BcK zF@o6k84#Typ7-Jw@ue=Pq5CnSZ@RO~#Dj2n!D-SmmF>X}UfUmi*T^qxbSM6jlIW9( z?l|O$`PB8tpWVevfsR)ISi?l!Cs^Tt1rcX`eCongH^Qsi~0B*W-^gezMs%0W6uBVT)J`x$VK;KuEQTevD6 zBL$x!cpgGLN_;Yx_Y9z z8hFH|p$Bsj_!p$()g|*_t0lRA1!CumnD;Mz{hdkxN4z1*?<{+5ZXX6TM|$HrJZKHCj#UFi4X12*^=< z|E8q~;Kv;0I`d?GQ~{w$Rp|WI&^)Dc6EgCiU{?=oLquau$;`Etp9J775EH32V|fBp zaQF&)i}5aW`TA84(cU5$t39y|!T3Uzwas_ag$6pPZB}?8(Y#bLhge1{8;oy`#HX+f zl}>hsWP(!~Aj!%57*_}iL7P5mCb8DbkFX04_mNjJad`V>HHUWBYGKlC`G!`SGfE!K*Oq&nur>FwJrH! z`DY91u-vb?3Uwx(w)5nvV=>}|b54HJLy()^wxjNNo*4#F6cmh<<^^z|(%GYo$u;jo z7HxEQJ~MI^QvU7A2p9GW-R?f#Oj=z;(t=`qERDXvkUF2=p0wH2ggTyU!m-s;b`zRT z>IKSU-kEqxX!1zvR*PxQZtqTAIp(YL1%vWBdas3KZ7nJ;BZ)6ej;_GMdgO>a?a~e? z3o17Js5o;l zIZ1BAeXM_&f&AHNtHZ1JWJ=79RdP8danVABal~>DAH8a&y7hkuFk^>e`0Z!!C3|Wh zkuIU~*$eVMObT@pg`4GASi*P*`=@Us`&Y5%187d%CI*#rOZOI!x0f+)k0(K-li9~Y zG>|0e%&z7hn?je?l7d_X_bRf8gmRL9Ta4Z=hRuVGUx93I3eDf}bNO-l;%r*MIj4s_ zJB>sr6kh7sY5+Gt$iHsZwEdn9hsITnj$i$d-PaE_ot4L!C)E5} zx>A9JE3~3gHXpb%jUL3)7C=#IOGg;o(-X0PO+9g>NGFR5n_>{ufeV;Nz{cB!=b;H= za;${H-y+B{lc)#$Co;UUbk;mTIdZP^U}j^+f<1}K&!P!{7K5cgi!lM;s8MKaWuLH~ zP$#T9`)6A)=OmvS)Lw+4qOPVUhieH4juSN0!5C*z@8DFt{YooW--d}561TW`nKc25 z`T+o~y@w+NWF|4jVVc6!fDm(S3S!4$xUmllOG#y8uddOtjTdd@$Wq!)~ z^P5DV@Dn&-8ziW@L!3%aN@S=Gf)CumMz4y%j2#7}r3yIy1@lxk5ENU|NtdpRBm%K7 zUn&1~1pU`122G%gw94<}jJ?ZR0AdAp97P(Mw4wm0pijw?OXBukbRe?jMqzzz=M-&o zP0KU|?rx|U>mD9s2H0?64pIDzlbQ!!6=ck@_*;aKT9Oh~e5o+J_nb8OVG$c}$Ovj;w=nWZsS=~nb+|~Qe=>3kKQpsp22~|{Z@^@EMj)zs@~eUndYf(9NC>(Q zRKO~sgUUGY2C9ywmVe-HORsl+W@z-%;`8^Yd6nCwHWi}oNNem&e~$#NRy<2xWPz@N zFC8{9kwiU)*(UKk;u>828pC}Ec9wEo{3g{WU3qL2;*Wfhv%Upr&4i{a&$G{~&Do#t zaY9x=YJlnXv`!vZUo~o5CddrpG(10?tK`?}z27*Pt{&0ilk5R=ql_NJVa=y8!2t#f zf-86pmj(+j+V>JLUKG~myJT(%hM#bNbK2e6K=pAJaiaO?k1H0g<|n=u&{6L*ZW;C4 zKjSGY61l3tE~pUymZ1S>j9G>bVJRslLDz2SK$NbclR+DWDn3*+E*XJl`Y_hgV>@5| zW$Dln(r<^uIrv-K!VO2F8J+$Gkhf>Av}pF-pr~ox0lq){s#-;FLG}J&!tjv-AruqT zYPzQhb1Q8rK)&ZenLiqHO}&yL>}%j#U=U6HEhBNxpRGwqqoj_bsh|>YME>Q8VB&hg zoqETFCNHeu7{v)jXG|Chj(v8@=-Ba?=xZQ@3Z_a(qZ4vIA|eOtHqw)tvM`k)PgENK zQJQG|47e;`UNe(SG>*WN`=fnKaRRaj5#BtU->k`uVJRv4ELhd1R`m4nb;7KBn`c1D zIR*t%ur?b!h3*NTyWKZU8`fKKtlAbrHBal|9_sy171ilC!yopO8oFo>4Us%3fwNOU zzo&shz3^D>HrXzmw>;YbZk~1VLCar6S0Mf*mk4UI9XW0e3026%}fQ{`}_soi#48Kui zgvz!7$gUD^_y|?0pf%n96kt>GzYPXv{U;)4_7Auy@Nk7}8YD)h^UG+yeadduKaw5D zB}<)N!w|qQLQzflgi&(Mj~^qtgMY&XD5LA=!0sLhd_bOQTIPkV)%oJ0!}i=S-$=WH?QK{LVAMDiG^q>i^8s#BCkdNUb)K10AFi}c5Edham}B$8pBuhKi(J^+p|_M zS&QBUN_RPx&QqPKgU~kR_*SNpR-4Kn8vnq~B5#8&KZJJ7^MS2=QCprO!DZHj6!WS@ z8qO4FOT+5;?D!K9LA}38SAGk$a*T-Oc9hdDavYRGyf1S7H%Fph=vbj>s~*4QGy zUPXYNnsPE`I7>MQs*>_W?Lpk72Czd*R2UR?GhKp(;}fn6Gr63zsb1LttzIMXtyVn$ zSQ{91;-)y_!Bw43MdZ*xo#5D-M{4Y^g|xSwi1u;}5rqeAKes4j{|)}|!;&*M01-!| z;5q@6<=og3F)9sNi226ohRQVMh+qLP6N-$+$4YEa3~Ib*eLlsh3Eo7&wCG^qH`(8$}+GK5CsNd5j4D8keHUz(jCA3-zlixemvurhrHD<523A znbOsEKA=iNW>~Bgxy9qk)=D#E*fZvh^uwty7nWWilWF~ni1Y1lP%f*hfocg-r+aBS zVxlsnY7Y_Jx8&-l(1h7THR|S31~pS%G&Ruix%tb$t%&D42XKvFg-AweP94W_bGB!i zrPiI|$?y^9FFUGAqPJaJ`bl`g) z1XSjys@_hIsy&}7;+5jqLUd&T?RRc%?7I=7sTsW7vv@?~coG2ww;T#*Gx z#z}ZCz}7%H$CN77*bw6SRwWgY@9)ulKq@t#CQVw;eSC)VR^7;&6^G?O_$%dW^jLnx zN=qZ=QyS`WkmockL8Q)QF+H1sA1^UU3<(E2e19 zF+eJkD2<$=an$wk@_~EfU%7rGJTQ%>ImTg+KLKM;dy$sqw$ik?s?1O{DabxeFKxq@ zkm%DPmRS9qeRkutWH?qkP-O4we)hfv{;<6p%aS{T14OgE96H}0Kz@skv&Df;bIyZm zm|Q>9$&`~`?F>!}j!D!1v%sn7u@wrfuD}*B>mu-vb071{LT0PMH@p%iz$$~TvQYm- zi*r-rL2>Y{S{ke=@f`ley`Q`1)}qNH%L{M(JpLs&psjza^qSKJj)Gj1_h>b%iL?ip z$k7#oj(Xpe>1m5@D#mFEo2yw@%yA@|Y&>hRh)tr#Rwu}T<~;f`afbkJ4UM43Bp$!J z9qg7w+`M^zWQrQo&tCs{*vc%xM_uYU9?n*Wj!ytl^{|vXz5jvfqa-lx>GrVG<*D+{ zEo|V{)v>YaTt@=mt~`1#sM6OPhzb}6m0tIX4sqSg?0w^;yjU%K~>0Y}$n*@PH<#J(vho^xm!7 z?aYu|=xSTyxB7=kntfAT88hhY)qi7tp}X*qjx)*R6IV`o(`6Z!IYTTZDd;`s8W7{> z&#BbJXf?$r28nxnYrcj=<0-DA<&6Hq`y8&r$ns6quIIQX#^~Hnx1HVxzdM>%oyqE??(oFvg=jt6(&FSKZN2WLt4&djq6vV3*bzomjuW5(8?2=vNe>Ie-1OiLPHkyaAcz ze+J^4hfh{uA5*gLlXMk%B{&U&9i{G(DnQ|3!EPca$$wKctHIo(E>OFd6~pwcJ}VW% zq|r3xn2`wBcckcjsL7LlG3`9+2~rbPFEt(dRwpoYA<4&ZYBwLm;pizG)}d1Ff5VEA zeo5=_jf)z&?TpC)nZsxA_qWbJhBG!=50S#Kb?!mw_0MR0r494lneC_l&+ljAohGz? zWYIL6yGR^%!NtERwKfDlA{Z$8m>zO7&=0zH4nPN3x)#Ffb>5~qJM02o8%5SY^mDH% zm+a4#vS6K34l;km3BOZxiU!IVcSd|vA&1?ZP67G=ScP)#?O{6?(%H5%cFRRv(`bfP41pIiFMO4$O5-QGhq> zNTx?6Y)1%W(|7nFc(#hQjvtbo*BPV%--UvU2J@4i7ovM6PdvVoDh)3EnzQ0ttim5c ztg;x)55a04Z@1jpw$)R-o{wnxjbQgm=*{rO?3f#bp(+w}2T`CV+qAl=LW~$$OBoML zTickib#GEwaY!xk42%kkV*4nH4<8=X8Nh8D#NV%=-zehM|JvuP;7xh~ST{~`!kBV0%CRmrQ!a6so|OWqqFS znK3v5J(3AF>XsnX-(2#d!Ip;QprX1<8WE$LZpae?l>T#ls9j#!pW5F5i))n>2+jy! zw7|Ytv6KXXWih$hNP&>??lUFHk&KiR_VwG+#A9ju2=J*A?>E!~cwFa!HhQcn8==8! zs2P>Umt}ZHH!O2I6Sg4^e>4$*ufiMaL4LoqTkVW`Q1#2%lL>l|p}sO^WJdjnIN-o* zcpuUCwrMTWnu>Y+S?)5aJ&$0`5;yF~0qq;RK3K|E0UX$y`t(GNq6IpirwUrW9U&nV zyp-7Q%-LN6+>AnQLSmfM7)o1O%e2cfC)Rv@Wo#C4fQ19rbm0%b&=U<2% z5$Q%W>jAmQ2eW#yYmS>#Vi&A4;{O-k`|#md*y@od_?wZ}}J({Hvo58qaG=L^R}s(}NA zcX8&;u^g1CLeP);i(kT)$@i{=wy7Rw1qC|e%+1av%J7r+FYS#EBj=k>HuxPsb(dFA z!cIS=q3=HJ$K~l}!~%b$=P57gXoJ2yP>wI1+wLir1mJ8@$*aRNh|!JrEF(OVxo3!< z+VSNLR`C=0=HQ|5@uHxn2aDA256i*jB!eC_+%uh4-HQHK-DOLYL}<$;cy+79YD%u> zx}>6SMxu^wD^sY%5vGn9a0Cd9G-;#?cvK(_1l5Ut)j?MVRCWx$s@fKK+(LTJ>lRs% zrlg?n!E&w)L6`}g%%wIJ034Nx$}v;De8P>{J_s3D$|I9_G3 zI<(#$u*MXAmYIz82)`8cSCI_b?9D${dAF27!&Gu3aLU(YMAvEivNvT54nnFm^W7(f zmCw93&+0t(0f6_J2MbYTCVA4r3cH`bxS+ zd0@?G<2)99ZztS1Zj10{mWHMuDeR}X7{7oQ@IB4)Ge|!xXOMTPlk+s9J3R2s@2Fp@XGW#GS}3*Og0ek*8cY& z=_|hkWj(BK-gf)zxya11`*!Q^1@-ZD9#TRtO#e;+|VcRKMvwQXaI z`w}}J0>dWE*YJfKQ|$+>qU|7c7G`H_U6d-Ej9QMHMY#KSvwQ1d-+=fg5BOM{*$Zwv z7EM3QN%kZPTaHJAy)1$I=+q@`kfIG6#B;e494$ww_Re&tth3pz3t{8~-=Si~2d9TC zF20{FJBAIe(S6Fm2=J8jF8d-?+-jQ2hIi6Gyg{SpePc>%I98MTIffF#Gg63w0S>_e zZq4+{dGz)%?bOitTEAZ$99<(}>v52cE7(XsByvj2yd@RKOTp_N(})F+@z6ST{bQ<* z3^OV}xzcd{LafV|hw&W$J?9e+!kvh@PiSE|6Im~g<<2rD-zA|PC5D&A5diXT|# z-U^Dhkd9F?c{MJWN;I)85O2BrRmmbm}m}4AJa=Ive=0*6E$HO#tQ5% z=RCoX9PV(GFT%wEc8}w7#({d@K^&#es$&G*tWJ zyK_>6o4`mWre?S2Rz5K>@b)||*IqVlyDI4_Valj5lBxMP>`rEI$D(Pf^+N|?rfEx$ zEYE!{!wsH|e?>@Pa;r4VAB3s5_WpG$DK_{i(YC~q_~sb!a4IvMb!;g#Bs4Am$Tsh& zF>D9eqW1$HDtI+ZfmXi6qRKcNPV~Z7Fs7r6eCKrtzY%G_*scS z917XlGQ!G9{mCSM;6#m*-0jK0wC?ZxslJPVZ!Rf}=qVl#Xa%{Q$VR}RXyODqb<=Yt zy_Yx1RkdkKNEHyB@$n@l`-C;(VTHHD*;;@Xa<(jZ zs3*s^_C@ke+a)zD4x&^dYbXXfGy2xxwdqcWmk@L@C+!SB{B#I0J8|7N+19BL$?aL; z!bBR07o}HG=UD$SY(h&xqy3Lxq7EK*WYkd#yb0xVT|LPL;7|m}hAm+>eP;sE2sY~C z&R`QW%Rq4n7U8hs6OFBGBn3d1a>j2&hEB_|avGuiDE(*xq@Rn98y^P|ewL-feBTe@U9|_A> zy^=TRK)G+ADdtsZLa)da^OR^flO&peb79BOW7yhJm+!Cl?uW7jB=RT>G3s&lv+8(l z6pmPg09gi-ll@b}pmv$G`S+Y_#uxL|3v_Pf*QbXqYZq-7=sp(if|Ep8HE}Ss4`w5J z@V(>VY`}6|Z`3CaL%2<`<=!ic36#c-bidjOe}K^Konq&*I3%x!c|E>BBvY_uh)D#B zZPcp$0t2&%2+H-2N@8EYm?e`Tz5D^l&u5)$|RVIFt{$mef0f5s5_G3ZoBL)e6#!Ljj z#6k$HV+v_qvdK2*zV-3+&<|>C>tlUQWt2NZ2#O*vmASC&Lt%OK9mE={8WKn3V9t~@ zTp_rMgoa&Gr0lhL=%_{b*31}H*l@RXqvga`uj1Ab4amS&+FA|U;E24VUqD184Ff6+ z4a1-f#d(-?i5{&g$ZHZR+f#z2;tn4gy)yzrJ&+L0wY&uId*ATuQm6XcZ8q?PrrhG@1o_BZ7mkTH7Cs%rm8x9?@@YXXk)eL<&nqH#+q9hbR3@ z!lPA5ola{oOWzB>mnjxXw(L32ByqSBK1l^YGHO?9Z2k{uh$aMKQzp@^y#{O&Q%WOJ zvw1~8ex`xYonmB5Tu7=|sG#c!6<8^T%yP%`XiYrM2ANzAZ1V48LuuR7Uj%GcQTvrr zhcxbfRQ!RCvx>DQ!zj)58_yKoWkAAGjUTA$ujXY*s{L?YwymD_UJJhQF{({BzOte# z?Y#O?@fv2lTT*ZKVmyw6?lQzlL zzvLhviFM4Vl|p_XrYM;Nx8pS(`9r-QJF>5gGd(?H6G@R=q=13+U>@ zI5$>z4~(uA1^*2mM>F`+dS!@tmqf^M0 zJzEB~Y@lC1Ai0pYRQR}>H{lQL zgXLpokakV}KW%rD5kF=d1&@IG+be5>t5_ zi%A9V_nlh)$oYmV8&4p6^gDXSS`2z>xT~oq@vdyjDl5u-@?Wg~e}_wL6_~wbI#u3s z;UJyWbEk+69j!)7)^usfJcm{0xA0|WO7RKxczLcyRV0#|urHoNHm7|n6UAzORI(nl zbHDRe;R2sHrsJFQ6d~)#G~w)RvsFU2vHn|OEYtq47I@pUTaS<#rmfieS(oa9sE4KF z{flhUGN=uv(X@HTL_f2w6QBka-OmO-tske_U*4Mc%gKs3y5z6++Y5FVYWjSN2d~=-2S$cWN!Tv6eGlIP|KtzlVo*?={pIYt|B{^dsy} z5Q6+2J7c|qdX?I-rfRIUL)c^rV_y%I7T{^{XF-yL<|Wb*!^i@j*3BS*M~3bpW|YXM z{zp+m;3Am)6dT@2y(0@Wg8>9lV2E@R6o~-jg(H7GMnqET1i2&c7`*{QwA0t#jZ#)G z_fJpOTe=)yy>8z3_(FuidP+^RE;1;0Z5LEUp8tOCCtaB==|`!H6~P8xz%!Y)_-uwn zm!+H3nTluFquOx5p-(qo5=koW-3xANT=vF?+Fwcx5SDfE1tie1?$l7o$HT6*)&;!< za5xsCRapj|iib@+h%+iQ_V0 zi4mKuaz8ynSM3-4-EUNTL(Qv(cbBZ3_SL23f)kGg^Umyx}TwmRuGy^r>5Y-Bs;Qzn%P61iw*Xs?6z6x zUfr6#oF>00K;a^}^Vr3RJhAGS>b;faDOm%sG7Y|OvL}C?CM=plRpo#k>>+Lp&>0gyOw- z8+2dZyB*!;2c<(uw(Zbc*bepObqz3de?Duea^X9fcY#_Nr@1uHIjJJ322P@6A#0S# z&OoJIs-MV}>NL+-ezxp=sck1?v3L3IT#|QIlH6I(U<7LlfgTwxdM5W<|IHIhrgPa! z-sS=?yw)fd9Z;;_2zOY$8MIEWeZC2qM^eLp;@06EWZoi3B?naX`D<=4&UfpDE*TPs z8p9@e|4UI{N`N}^iF0$Sv`=UE8MFNUOxf{sk3)x~)D=q$UV#|S~P)C1C* zgqr!<9O6H(w>WVJZ#j_0j!J1gSAWm?WkguFqR!t$uiwIMQI69fK2~c-;8|L5&~o>C zkd3t|z|!bcrm6JkGH{FOY>ZrZ>raSv!VV`ZI&b6dk~)(J5r?p*$C9pvzQX-eWPAE& zlI50E@J#q?2U`mKBjV3dNd7yf%585k@Fd`;`AFFXHeYm~6GG8`k|NPdxDLX)!k93NbM8xL6c#~D2$OS+W@2yM_RemG!KYgW z8Igh-Ljng2X=PDo62Oj*nwu|}XC}?7U7rYdc8N;fUS=H3UY8pZvhAg#s7sbwj@eChzf#s?j|)Id zEpNpJEanc*6KN%+-Br4+J3MR3*-#&Ti1aA8hz=21csgQUP^QEYrHV4zk)K4>%q zqsU2T`CaH@@vo$*==Y)x#GV#`3gm$!zbq?{ zDP?((9yFG(`vRu0b(p02> z6E7JMvR!Yn^=ODs5X84>TYMm4pCApYGlH8$$|Rb|*% z^A1b{P_YE-jwhd-J5p5cq7~^)GNKOxE6pX+Ke(MK#}GD*lFyv2d(%yy#2-K(6$=FT zfspc8pa$I78#|51R!qF9hRTw=@W1O1^kjTp+qyo!DfAz~L6qVuDg}9E?O_mAWs$8Z zk8Q_%HsdtDp0wprco6468bWS;=WzOhd>g=-Q$E22959o-V(2}{pu1DQ{2?U8HJ`Za z`KLX2CFJ7v)Onc=Ok2*d3{F<$Jg`#n?li}uA77>&5sK1D0o2oULLyEw1jx3^)trZ* zNUsssq^!^SA3LIw!I9uJS+WRh7Ix2CeKa!PB{iFlM2HoJC z_#+!9o0MmQB@k#s3mh7pgis=WaKdOm%@hq^vJZk?K|B7Ub!94#DeL;aTN#MLQm`SY zJ{D)yX>k_(%L1MJPi-ka>|x$yGf?*Y)QgJB4%{H9C$h#3>_$7(IuQV6s4OJYQYZ+n>EG>XFSnqr$cS=4T;<3R1QCBt zvkQcNXI)61GXgEk4kN63dtNunC$8~`7U)47!>Id@NZtcRTNj(Bgj0dX4@|r-8TaTY zq%iYA+xCN+-za~`OufFlsmCN$jrx1Ueno}ed)^5-nN9)XtSPG;N+v5@rD@9(InCPly#{YD%GoF^CK@?XS; zPuE?^@=+6-hu5~Izi|-oU6{8P;I?4`SriV!7R9xXd_Sg-n{CRktDBK4p6FAhfJSmG^w~*p2VCiEF+x$a=4_36K18%; z(mGXTQf}k@bmaz2%%k+$yL&cgkcmA>BQSYWt%E03kCe82$bl~XhVi0Y>W@R5{F@^t z6Hs`1*JR0yDKqW83bvM(o7%Q&kqIrfq*dKYmMO&&X~#}SU$mN-#DJ_?G#&&J73DLB z+)+zOZo%|ybA_+{qE?Pn&yuGyA-OQ}X--7gKkstD<1q4h{{mKmfrSNim5&L0i+sBq z4_kMl2XG*%8CP#P!s+Z_cM^Az%4WRfV9!5qzyf`^1J@2HcS+Tj3R&zpMu>x=+!`vR z|3*4S$^=b*JV@avF9kQ1o@O*@KrV^T>U(XQI30-tT{wA7w(7w@bY^ZyB{14hqOm~r zb&w~8{2EhjN~xo_tn)>v4ok}d1l&MxgWplDs0OAU_#*mc{XZ&uu3Tguv55DPxGXaH_|YaVfW=y!IL?{ArTw6RiVe~Ut3F+$ z0EUM)E;BmqIQoNrvsfO2TFezkz1G?*CVoww#k=*^#(@X#(7h;zIcb=Ws80G?g^LvF zAWCxFUl%mOlBkX{$VqeNqA$o{WWq(yZ<+K&3GA-F4LXtyY{5^8eO``X$fL0D7WnsU z=_@~KA`7&J4G>WxnJ#QHjyGZKV2Qk**UO~jmQri(Tl5r>m%LG=++KPP}ukn=fX=af5zyri5&bUn&TxwID@n> z{w=>PSt1NQTOdWfmMx7(|4A@&_VdD@yY%(B=>jZIIiM&Vush#T`)E>be8EzxQPaHe zL()S$_Hw)cNk%z0kV_JrB8eoKCzxAmgWsKdzdHnpCzw(*-!ACMi57!WASljBm)gaD z!=LG#a7g3wfZ=)B6~X}V!oJ}7(r5Zf5y~8+f;E@;z9&s&;f3~L#Z-QMHC2}+=9PmpKE>Xr#*Wn zTmdB~I^yj^jxUCH!Q)N>dm8pCO4$PU#&9;VZCb23{rZ`SHY!$875}XPp?WsuUIL|C zr}retxYHqdu@fF@aUymiIlVc38`~aO4}_kC}#E z(r>cIreF?uRYivm~g?pQ$yI&py6VO=>sIAAH7=iB^+>k$%25Ak z;!GQJq}{}Uq+GV*BE%evE=BR!o39}6rNN}Sp+72hluUmi*vvdO#|!E9{c=pjhWb!|`uAr3Gw zcnQdEDY%+`#Roa+-qyyeZ|NiUMP(mVQ4pveig~DzlWk-#)@SO@qo%WbgvQTr%gR4< zi=2%5T+=SA8r_Oa)u|rWacG2uJDfjs|H7WBQzTCHG`}Tjw9^NUd(o zLfTw{J-6`S+!3(hlWpQqXWAv2t?cD+MfSuFA2e35WN=M*XIktmp>J$QG>-ke>8hX= z)!T2AO(JsrsYZ}C$<>!MUt9Rdz4|%yXWNHp=AF-vR>Vk!Sg^EmOx&=!N zFb|Nv%hkHLs&;ocd6AKbyT1;PPyqz~KIR&e_LHv(-H}I$Wiuw0#NaJb zN3=|brEZaq(hjv@c$jWbGDF&13m!0pnY}Vw|I9zSb2UG`#D?K$4?R$GkrVpbH;Whd zS(fK|0%m%YPiBH)VdJ>0&rV9V@dEN&)ZOshujuC;0rgl3SU+mH|8&N|v1e$VLbt;I z#AEO}NOG_*7plvi*J8)dOc({}t^NP=W-2fvd~Z87=E%r!T*158(5cN?)(6exZ>JBjPKa0MN-_sM$(5Dxp+M*{ z=3?iM0>O~%=ua0a_-SLl>UX@mG3zN>Zf8$iHQ=8|gQ)qg4*KvDl7)iy!fg54~1l}lz&S-LD z)B^+h%`Umv9jI*D!W(_WY}H8AA&X=}`o4z$Rp8(H)ZcYDJ;VUYN2fI?M{pAc#2Yh7 z!*2j~ovbGqV5N6(*7n}rv_z3z7qDl|;RHax#x~k?d15(>vxkT|c03T`NAK1YYTt7E zMgPqm&cbWz>>`{`?$7$6R;Lc)>3+(`pLK0OP2mo==1bJtS-#Tl>+exVSsz+l&tg2G z*Hvy#`7V?1@A#X@z{MJ$N5ErkJa_!(hoHJ3jhd-3slu6eEO}`R+c#NES5jqBj_;3M zF7&8pcP2|#P@WL{>>xEp$5W=JT_GVN{5nhJuo($kh!SC|NrrJ7MKRCS)3Cha1~i_a z&kLpHrhhT$C&6TAbW3DMzL0da1c>L2&d!Cv2Nfxy0b}S7;WM^?vs`eVy^Y0H1rI8ikMf^x0b#v*GaIaMPg!&${%o5B=1@Kj;o>^+Fj zHN0d%zi)mOWfTRx8cJ6r&qfyI6&?ZeS)Qs>S$m~>MQ#f#V0I`}>iO|}dgl$zM^HSy z9b~pmBzmHlYS@ zy^50vb=;u0K+s7%Sa!i`B9!I4bVSZ97%#;VF377^sU8t@0?by4_*caE*9u&5rr{gu zD5KuLf=dqx%fTVQzxLfHA^R?5Uh@LP0UN+?XSC{;V|n8_oR8n zL#q0M79%&e;T@gzMk(q?BYp7A(8TU1X8U?*gTeNb^|)wtXjU_+&z4JR|1H8(6^xVLLw z15F<<#Kdn*E-+pI#A}T4by==Go=ur*YTFKeM6d0+&nU^J?>V^(9+)&fir7Ui<)Um? zh~JRa$0SaO`%2^|1H{;0vAw}0D_F9K5YVJEsLT+I)~XR@oXj4|^4_Ox)wYn*R%{A0 zy}Q^9P$k_^DAhoimT%piu38*dQq0|CdKRW1<82FmpR_R|dfE8$mP`7yt;@Z(C)vES zwTJlyyn`(qE64&E5u?(3t{V4p4*jy>pfuJOF8d-2k4Xu{XG{{~JL0wzikZW8<13== zCFQ?B2QuMK|yMv zCLet$pkDF&n3a~_1Ml?RnXi zrAESw7vxs(uu3|8`NZ;hXBCgRdU;R+feRqf`huWEj=mk}59*`+GcEqb{u|ZDQV=+H z>rIEvuF;0BP;Bn#=|$Z)fONooau4+_P0GWA?v42fqMQ_?82l_-#9m}x#DIB z7Cfmto6X^#`=4b9r!4x>+hyKNj4*YKy)z+&ve~OU;wEuN(KtTw)PGS zy>q~6MT%P$A)MM3wL2V5y44!t+B9~-`o{BN_)5KInAi}t|d!d2muscEXUCQW^*}Uhph19akmR~)uu@R1fjRW%r|qyX3pA1mPvXR@m{{u$9WJd2){^m1Irsw&j!w z+_7%CqGzi8;r2*y@4)K}-XBuo4Kd}u@|91&k~h*G8&dKdwSxXcgm_(*E%!te-1dvB zbz*2(wvUQ+5E}l`^bjLTKmvWgJNZ4#_C%~I zYR3M$(yqNIv(#Knhwbk=42%%5QkOcBQt_2}6=?A>nwB)pKOQ+PE01$?w@Z^r=1(TF zDdv;dD);)vCc~`uwme>#2BXWU&$c*z?EWdruKye|#*_ENN6dmuWZGWEU|-DJcya{R zLTLufxtPZ#aq{j2!|R*Q$G*SJ>LEzY*x#7t%gtXa%Z4zGnvC5i5WmLbd;VmSZ%$b{mN#?-ZU21i z$B+%ukoQ`Z0T)cmV(oDlz+HM1SAe<|+C_TilkXOnW1uea%u0~=M zZCsZgKmc%$IG$D&53Eql%$m7Hl%|1q4km8%nKDp0%~?d510r3CXa67{@-=3(kfvwU zO3%vBBi|4627{ou z2b?mHOfdlTWnK5EWx#MI69QiOvM{oHPglcHCZ7;=LTKkj%9CpDSsHpa@pm?3@)A7i z8U4>kNMI$!SLfKjsFIck>4>OM~JRtqV`NUEgo%suvNl zuJTAi-oOA2W`j=5Val567{RU#&aNTYs?(^b z0e)%=y@LV@SfpKXoFNXSF_11kCgtbvzl5<1WuLp~lt?&v_V#z<4?;rP15UAW$ZT2) zY#ff=1yWMeOSU{%$>u!cBqEX_1+Hqr8fy@N=w2~#=ErR4AQR}m2xMlm)~cQ!hFetj z5SVblO3&(>lTB=pcs`>yVfAv?6j^T7EC2Hm;n0t*DZLf2;^gFEsijjC06nJ?c57j4zzG=~jQlrDf-8adsVk)5rol5~r4%qB` z2W|&q1L%xuk%WPXIH9v9;+E$k!W)-JDLt$6K4vm1M~y_n>Mi=~S*E`wA~Q4FbE8fF zGcv5dqs$xjL>2%i!6;3KOlRlP;VFU@?uesvh{VXIRZOm}4~9k060XzW4K|4Vn3!Nc zCcwHe6=-(_1m;K4v7#c>qx6oDldt2F!+;wZOuPBFDy#>4ALPCslVD|xcmf~i8I88YbU*CEqwBfCSzO5k19++I z|B|soE?>QAqqjK0m0N{L;n2ItLiyIVT5D{7`JX)J7mA}{z}dG=c|g3rr*G3cjZqu9Vv&zZbk8E~8Yh0cT0L zhg9#=NOMPMjBG@Vb8Yg%N@^y~mci3!l8m9gDhE_aOBH3xXqs2P*2ElLI6zT}-H-m{ z9%@o@NKsW70;94_W%e|A5Wp%Ajuu?Z|49AmdvcrP0R&JOJ+z<;&mm7tM>POvl4Dps z-uXJSn?w^#{SQ=)Fqji|bypY5J_)sxuD&3We$4SyZcB<#Pc8(fz<5X>`q-7QIj6Xx z%_XVaF+fN_c%SsKiRI3kH66Ug$%8$Ru_+?BF0d9`SXHo){sH?NV!WooRhJ=ts?DIN z`v?HIl{uV9vcM`Y;(giJR$L6Oh=N1YEsszQeMykeToUtBm5>tI8oK@dacTx&Tz;}n zeo-Ka>b_w6n4vRvn`g$;#BTZ1d;kY>Z&kpY#vjkLcL$*)TW`#ZaL8EZ!?TI-oFw#Iu@_@i`fsai-9F(UV8q(J+uK$e8|FUOm*=!&=I ziPkb8MBR_IGtTp^$S?pca9DT8w~By3RQR#g?^tUU0Vpav@dWZq>B;RaDQjga&Vm2a zi7lzl{zY&k9LsRbcY;TvbOgkX?E%|t6oW~g+LimVTI^00Mfi2_qc=@I+v>8oH~HcC z(sj!Mz%bB|tQy8tjsni6)zs}}4K!QP{{4ARw-D-;U+GnaO(!kRzoTUwZoqv0lFR$3 z3L-^{SiN!HCeodGtlB9~pmxz2`DZddi=wsy+8_?@>X}nb(k!Y|K%*Zl#P>Q_g-`?zeWa{qO)~00$K40cT)kn3c z9$3$x9ZwF7#bxf%QnQXs`D9GUiz5h1)c3?j7cA9b0s)+l5Tf~tU7@Cw%v}M`sn~7U z=VG=!Y(8O>ySkXYjkLr=lCdxXiw5O4x` ztP?A{cpU$GrSGYAArz3I(Z%v#WK}!eLGBk}%7R{PG_+o+AcRMj^<9uN5|8`rvf=vL z(U78ZMaM9ASfoXoMiLDt-=_ei{5K|ON5&ru^ zN9AL|7+R=*2^t(SITV(-GK%&(8PnD z|3m-T!|)R*l2ZjSlZhpiML#L64HbDWFFI$ z&39tbfNC}Xq*7;d(pB9ag~~hxXq;kuI!3Uj2lRy>?H!~LSi*w`m*_t<+-q^OLL%&& zpHz_4f^68tCsByi@5s@Ky9{Z4YO3#9Jc?dML8^zQwLBW_XHvM^yZJN*h1!rX5 zdac~M=$A@tI%bx`^J?9q^Li6<6vu2Y#l>uxC#SJ-W1IfSV1G_4`aY-pDqkr4IgaFz ztx!6B#;i|ws#YRh8b5OTS10jVl(y5YLtza$6pjxOTGK)}cGpyHqqi}qV!4qF07Kjp zyTf+YXBuG~N0xlT<__g{Qhod++ff1vH<%KkM6WK`Ty|MJdZ>dg4Ux$c^6SQOn5ft% zwEClT)ge#HKwS_3+sg&N0YuCJaC*CzLra#=``F^eEHK!QSdPp%aszR4mTQ@!leD1_ z-y!L9URR*0zef;Wq-*=ui7F#(vUXQgM)}`dDQK|xJ_{o#@eWbAPu%OtqMQ`K9#=NZ zdK=+?atV-LMJQUnj+5Al+2ST?2>!0@2utkxgKc<>b4;KCMFxKYKl7|WIEi4rEnXsw z?jCV8do*4V7DSJdBak~(PrVgjOjtT~r8;tJH{9h3git(T4o(sOS#5$fQ7gmVXOp!O z{Uv5(y}X4Z(AAE+hqShB z1&6&`T3&>+bTcqR)_sV@+V2!1Irx~%U z%7b9ZG>Ayy3^7Em5|$^Cc6dsFRU7`RNb+-ye{t2~?L;~c7SA$+hj42#r=*Uo4@L&4 zN;jw7L;zswk?W9@=KBKnX{G5t_wG;+>+Td!8JW;OhR2ldnjFx+Y|zmXv++B6p*)WV z=tv1JV?-Gk)#(F1e=iI#A1A4IR-;9j!`xZo2jINsJA4H_qb|Qh;scK!s80(cC-+#rw1(^SW=ARPU-y~cOuzs7Q%Wbzd3!ljIW;;+!YmXP?ItKdknV2wxurL|wQXTU_vd09S$J-n4L+9NIW5 z8l6fMh=r-`w(ZO|$$|}(rpKOCmNZ*Eev>@o|6bw8J8JONjK-X-*>`=$rjhLY{#kvK zW4byYGLz3wjW4whkoIHVWW{zuMjUZIDSk_c5F6#&CeAT_Lz+^S(Pv>i=P*bZ?#1`k ztx+i$`4a37KER68G2e#e7VAp83E_fO@9!jr55Z}Ix4K2eOnUiUf~kP1&XN&jWIvky z1DVuqgYR0*(Lk{^^~PC&TK69^5w*zvDgWqPY7LED`^ZINHKjyMO;Q(_eP0DygOJ|e z>u$Je=dS@|4DwfC9@{F_{Tl!&0P5N#s$ALx!-8~oiuH`$+4x-NpPw>R0RaX?gbfU@ zLj@V|ddxeJ9D3q?H<+wq=EN(<;hgG7r|n%R8b}=}z=bY33Q{T6_Z z*Y04t#`M8=vu^f!5jQ9^D{g9Hgnowb%tlCK1~V1rJ#WV(UbTR*vX6^m9|W5j#R)M+ zV}!DPj`ir*4fc!$o=P5)=pQEir9G&vBp${0<^q&k#ehKE#Kc9I&z}z(7wJ&IC&f+q zZp~`Pe)(iB$v~xF1fzRZ`w4$FvxiKD@-eL>mMtzX^SX%w<^9RVt(_XzYt?MmX6I2o z)bJ^Es^14```nog=|+Jv&MsgfyXsQrkNEP$K@4a=rnMVr^ic{+qFY#sE0#@wlJKEj z?<-UKBeI6-gj>Hj&yVJTbg8e&pfFsRwG#UcI#EXrk$4HXM=}K7#$}tYcIELH3VII$ zOxH)E+~}p+*C#N(h_QW@sGxY`|3Tc756O4uzyqPVW!lw|T>8VTQe0+$gJM~zO)`u+ z>FO{0OIh!m4=G&#c91xiC%53`id+_TgA?B+f7raw8J@ciHQxd|NOh0Ps51N8Z>CGO z(h;(uD}>=POsN)n$~ zcYAcfzU;B%*}$D+eYa7?=oLKNw4y1>82|jNFJ9%HrDyurcQj7E?qZAyt`hQy_uCzm zK6N}Z7nIt5f`GToLRDVc?&z1xPXnAebl(DzZ7y$CPYNo&1l`h507#Tpz#w`Gwva)q z*xA#IzsP9=z_H0i4tn&q@dONvTL1XOe7=E#J;)8fEw~tKTZNeWGS%$K*3ls@5rMUY zU1t55((g-IlFR&m;%hm`rKGinyLf*>4g8%S(Z2r@P#k|P^$7RTa@FF8or)N?+N>(L z`8ZDg(i@HEXsJm93I3x18AKq>%#c3_4C0|=F_MO7LsfnZoK<1<|IOSl>jmnfPPMKM z

KH%4;7}a(tVlxou}R@yy%-VerMjG^OhThW7pT3SYA3Fi*7#c5#K58qBp6q?aW6 zV&bf~j8#X;)%Wmuy$SM$_7wKR43y=`EZa4tbq;8nM1w|$6lJ^jT%c!PHIFX)APgc| z8u>@L43-8Gsp2fGwXO1swJ3`C=O^5wIty|xEYMR>9$11ANrLnN8_Bq427|n@WDf>DKwweDn)TQmKMF zxCiv6-0L{56>wtdZr``Ft-?G7#Kk>!Q|~958=Gj6CB451+edu?FoGb6L3(sGxi=7y z*=8Rly9I!k_EwKOu_nnfAjC9`E^B>{u=6NdP~O}_|2HGN2h;wwm`~sU z8&FcBc<5aYcGr-!pYIbU=D0W}3wESI^@^u?CN1T8nI9&gSOGGp4JFbTgon7N6mj6_P5fsI_)Vgsy2_&zk0R|w=P zkU9@5iD{>T98UqgR1ov0FyCZJ*fJM7@4SJU->N*f7i&`bl=1j17FR+8Qy*<2Opz(X z>}gRa0;JGpm`sV&l4MZ@>qi?m3LuqYa6p!bQX=#B4weDstN!mx-z#4#DUd3UxnoF*>ZK z!n4dCR`XVfE1?9oCN$_3?1@+#@)w_EQ9e`u*zYrjgMNz?1vK&;I+38;kR_s`Z=ss0 zU3G-xp%E2u9eoH^ooOWMeRR}hwt+2UDzo^n>j;m4GiM_(Yg32?@b4U$FGm5QxWTT> zX+^RwJ7GH^*Y42*#m>fGj(=DSn^|tP-W3HG-za?W`({c zY|h9>m?aEA>S`uIswy@5m$43$k1-zv5U1wOOEQbUt_h@Z^GS8W38gl3SJt(3MV5+q z7aTJKO@{aeQFefbG*o*k=8Qn@k4dii9Gvp+Z#P^{t}F{defbGsVG-a>D6qC+O%hmb z5ATIuE1NR`Mui1=fOx4%3oF*^q3LdccBxXtNeuG3k1>tC)41cmx~z&(PYY71%-pv9 zh0SUj@Xn334hnG$3OTz|U{2yQEdcq`@jkd6B=8x`F@_d^X}@7KBXe}qb3shNK*oP5h;9fWwBUdf@gvVo#I}TDCED<+LHkOu zp`_mkE1?a=XQdm}X4}Zo#Vx&(#2uYL-DUBYy-7b`X6{ti;c31=j>Q!4?eQW@3Uwl3 zVh>*(S(A%lY@zaa4~-rk3J0y+v+oqr`Kidn;)CrLaJO} zllhQ2U1t+BrgSMti^C4Q2uS$5m`$;vcrF`8HyFx( zt-Wtj62MM~VGiGaHm>VQtmngZ_>?4A6uN{n!`^P$X3e@)#^& zGF;Vv<0K{Id#ab{dC=nfhp(p-$%B96H?wDPAqr4lxcZNMaAp@oK9itG4vLm*8AqRY z3m)DhhZv7HXjsJAt!uTLeP<5e+ZvRtiiG@{QDydG(VcYj8^BSwvqRE?Q@Jx>$$b41 zzx(6LFi1rq_@G9{+;jB*PSr5h}7bHxjk80_yL)2LB|e&|R9y#$?vk$GHj9l8ZQW<8i8i_T*=ykK$no zeQFanS-w}_q5gj|!JCT5=^l${YV=A~hXi@l`C9SU^R@j(aAxt7B%l<(D?F%;{AMX{ z0`f5iwig;C@TLK@d|%E`mc#@19q?&vG37mf*ggV`&$J^_P81io^LDHhvRa@c+xSFJ zOM$;mZgpJU?ebI0_9bpU2VT1R)OW>?*jCL3umak)*euS~nUQ3A_#>BTZR8tV|Ei*5 z&RYNEW=9YsTVfamgdY}+@NvPVhTpv&9WnFz?M8oUPdZ$}c(cR7O)mYW-G~Uo5S-QB zYb07*!);D6{3lTUT%Y=kc8mF7!%3?wZ0Ty8&;rC*2pz-4H9k(co?n}-XbV2eL1R=l zC=PdpvW4cV=NyWbv~MS-Xv65(c5E3g9-q(}6Qg#nzTVJMJp`z->P{R>md9g*FWPpM zUr4Z=M!J>31hzJeK$1oOZVw41Eov}qs%_?wQ=M094hRBjp~%t@&a%10Qfj>C{gIn^ ziS}7ZXKAtsr5%y8vbstEY(4aFRVWwnQeemoAc;)igz*g*vDL+L)cc`nI*L;m|+{D z-(qy9Gmc+~HC8y5&Obd~gHC1`sR0!c2t@U;I_~&Ok|DMb;+MKtT(F>0HXKC1*i z$>dV%M)JA08(4;Qs%p|*UJQ^r zWnAGk1=5OC-e_6iZB5w|h_sZ{d_#~&;0xVzdy|f=4U%A7Z-fmOgY&W0|3$flrnEQ+ zCNFN8Lu14KsVT%9?@Jyb7l8I8(0<$nO1S$5ITA#Xz;GFY7PA{gfW5XwtjeO9OQMWC zdvfkZaE;fn$xafHtxarD!q<+m9yczOVwfqx3{mIn$Nc z-E(HQyd0IF9(f3oU{Dx}f&lW8L04M-Pcz!QgP`{$L&>-LjIU-Eb2~{dqZIY*Xt$km zt@Jt{GsFj~85k`gOw)%BQZ8m70tmCjym3PtmtRm0v0CNwfU1j*@7HV8{KUr)YfWRG z=L`QZt|1fI6H~up3TzmeH!W)66n=zP$?~`oG zyl=*YQud6TNm@9t(_GPPh#4m+Ktayk4TP36ZPkMikY`91j=mEQtva&NaR>(y!%}O2 zMqmrjO-?z^;G#M90XSGi)>AEeughqD?Hjh@9|DY$YbkptKx9__Jn*64(F&532-UZeL(b7-b^DQ?h&2TkPjytGz|N4+!3T9r8k6g{Hs)gefbp}jeuzw3` zDrV=Uv4D-*=i!68cYBr&7lis*9~?%jbpudW?AWbgq4|&*IRF4H#Rn(zcRdTVGeoi| z4c%D&`zbh~-JpT0{-N693%m0h_5$#`WbchNtu`Ad4m7G>2Hh7t)-XuTE0DhI()C~k zpPfM19cu<^)q&E^V^VoJA3#8|*%1tBE+VDM1?=sP9^hZ8eEZJH430j_B?1b;EhvsHP!irYW(S4~s_DHEUKMLUDtyT~I1HZO1>f?4sefG&p( z)GCpbt+?TiK1T(cc|Z@>WA`~`+8f=xucEX#ns5gcvo>#N41 z=`1|zt3nVs&@En?{GLUZu?vaP8}l9|$WLMVA*J|R1O&R==j8WNVQA+Jw>NY)FDd4icJf<2!1akXS zq;a~ZW16w?nHvPf_^;gLoo{F1hrRs|6J_I87-1Wo)Jc_}DOnMhQDX;4Kt`mtCLpsp zEFuyEv3pL_YPuAsfzFgAli@+_HHgQK))~?2JCN!OEa7WdkN+or>YZzDEIeAAfv{=8 z1+iV}6B8LSb8|8a%RVQSQEF2oRk9R=AA54>?xnU6mHasx%{pN&M`=?_wxOp{KrT&2f(eUa)C;Ob zWrE+#(;UYQDNN|SnIG6wrBIJsG|!*_ZmD+BDnE?DqMTh%GNEWi-i>}4i^ZZ=`QI4& ztNl+0(O`s4>U8TG?wX&kL4@LBuR;p&l+IsI{r*JPJsWsrk7i@gNi2>U7%7nW&braFxi1eeW_kH8@_S} z!eVe$6DHI+xaF~1T!il}XCCG#`zdhDAj5@?_Gz^(q|3T`nS{Rm-}vEE#b}@*_zw27 zErBge38CSqH1-Hxq*)Ciu_d(~@{O)dOc_F|5mbu*N@`b4c0|i}|G%66gf{U8QbAzr ze9y*Pdu;1r-=}Z2_0HxRE(J9vCU3rQ!CYWxYEhX4zorIpEUSzRWGOadL%dzZqRj4} z$76&3JkJ5XFJWcQ%U}!J*uSR;T!uzA9)rP`prINFr82Y!VZZ{W^v9zmNvo{7;6H`6 zwsngj5=R5h$;hzp<68w5hN3w)@8LtHX-6K#6qR{jFQV;U?#pvF}{xXF2k0_auvdky? z$KAVlAU+iL88Q^%T}EqRT8G!)3m@Jmlv$^(S1dOA(~uN-h;E$r+F`JSo^B&VX*;?u zzHbL;ZMWS8!-Ki}olF^10Z)H^I~L@s$QkjNY4AW>)la;*U7UEdN#jS8SeF6yQHPx6 zmf!R_!95kWpgLI#!Iq?Z8wp!XtGBu0@Ns|>FFf7RaI@%975ciF(%1hG&m*ix0Dtw< zRU}J48OB}oByH#)LO`QNVkP^&d!1h2dl8eO_pRNCyH`LtCeO#V&YNgKVj~4rz%bK* z3h~{#W3B9m@L7gkWk}w?7DrWu!&KrTn++QuA7ak_xMWlISRvS>-z8kY1S@W{FbFYV zTo_CZ3BHY6WcOoZRzGR&gTLxSr?wqEdNX}!#a}o0;bzemU?d3cJYi`xkv-$J?7+o7 z2qU->`9Y~c)obBRy5NM0RwsGHE<7n_2jgY6K~(KF(3_5dh)}Jx`V$T4|B(Lj=2)%V zX@TlOu>m&}ZZd5}t^`Mcb=^Rc(((p!U%n#e$9(L%jKWfm*~(GiOZg`TV47DG&_8WI z#GKBiaV&bg0I9>$xyGVB*DK>|S*aE47Tdp}>+jLd{hwk!H`_Idb|gw11+IPg?q6?> zjYS1tM~!0hTO*p$poCBK8jB_RiYCn7*4rYcY0TFQLh+ni8H+_OcwTF&6rl*E?H&yg zbEt}`>;=UJyP61lR2Ag?WuC9!eb==0t^ct}HSL#S%3a~Z5(>lw8KnvVDIiKT55EM9D-&$30Y{t zZY24)f)Vvs=$9ai1Ce0O{Oj#(Bzk3ieWyFij0{iiiuYd!O|;(0@7?lMpNcI&w}00X zz0U1+%28Zz~wVl$r3Dx;snpB&z)C>@-8^qqu?-0&^8bU?!eYlpP zhvsz6ilh9Up}oZ#N1AGl4lhJntDtKAvl-4b?nfc&7|7yWz_X1pl)`yBx(x$6KxGNM3{w=aPir6+Uypq+I1;XWgFw=1OWi z9!Km0ndIZtF@Chkxso$<0Hg4&*~i&p!Zz#d!%l%jc1QSS!2p702-RQUYvMMi^WLc;HG~z;CyzyvWmAailktfGer5?e&jK)m zCFva%y5^|CVtDd&X4cVMvCCk8zVp~9qKp@JoWc-(RjF}fm^pexRpp6#T8 zeJoSE#u?}U1M-*4U<4|ToCu3I3cK56g-=Aq^H|G{WQ+CCIdG3oQB0G z?ul4=XWrUwd11!gPpKX5S*k9>K+^sI*p$%)9xiU_qbYpA_m@)uqB2uP)r8s4W|?;- zFnLcnONe#?`Udzo9|&xVE{)dC7bfZEPH~~GGX^|(z~!0Dhk0*TUun&b0jm@2{|2&& ze_@x91z>~G7Oxb6c^^WC#?OHhD$X6POcI-uUIVH!>G;+wrM!q3QVXZfQ1F)#BX;2? zTSJFq@x#hiH3K=~2zPT{$;Es7l@xT;XsXxF@0PT$xIpdZ0Wq(a>RA+V0pBO&8z56>)vEGpg>_Q|8_TsX+|g7RAR$H4CXcP{)AKAl13w3YTE5coE3Q zB?dFqp6~)^k^W}FRVqwqrtCm5bGgD;vlCQMpkv?NR_%_&pTiTP?KUz;IJ;~9Sx3%-(`#>-9XYj9CdqjWOP zBot%=U)BxFRPDXsE+?enL|dgAOu*3B!Gv{}(EQWbWkO+bP@7}O1R3|q3*SR+vX$tm zovUox!n$*kqcsPs&DUw}x&S0~jVRajyr*jQ8;|DLMbBNZKK@SxG+cCdYUXj>*DFDX zAM?h})>`ZDYU|%7aEVGp`Rh6V8i>HrT#^49H|=y~5${*k??svs?b^p!E7256(KwrB z+P#z~$9i_$^3xc5tOql&^|xtN{xA_c#zTZxg>}*?3P|S`o<;NXNlSXHbnon9r8P(; zbbjN{&I74Ugz{LISY80}65i_s@<)sykwyE2`Ioa+GSa=6hg!0p(+KINy(PhcgQlFZ zdd&hZuNgoImDW}K)X&o7^I^C1+7SV|n62p^ZQ5fq5OOwRH%*G%LI|sdpAZI8H*Fy9 zp0MSlL$V5^&-93adeoSR>LkS3r_1;^L%$_}`|EWKEVS4b1%Y}pd@N+}X!27FuA1=2 zA`i_R6y1Y_<2s@mPJ@4~NF8ZOwq#9qQXRI!g-M zE`E|p|A;#5F@y>8Nn<#&B6ygr6l#mbzZOe*ASo9)NrL|dGmA7c`a@Y@#9ka1$dPRa z#ZL)MK^1sbRhNMh3v%<;RUP(0&e!Z<14RKd9aa~&lI)ia;%6V9M_0RoAE&QOR8qe# z-(y!2i?12OAw;CKdhiKKR8LjCJ| z4OWr}!xqMxV1nkM z>^Z%tjyY@-+Cx2a?&aMZ7vWHEbcS(0Z!wFfoyYmdjdMsBkwiwyw)fRfdN!4!^pCkq zpN|D8SEgpgm>FHtlh7c8^hG~a>ryZeX7AX`%|PT4xvPL%0lP%e{T52t)iX&KLeDI@ z;5)syKWQ$}pv9oYdUgoJEp8eK0t84yN4}4sp?KUl#b@Eq@&z?CaFM&fbF40A_!?ww zuQI((3~eh;@U0vA{&C^q(9&A&5VC0^>8;hVaC}rdZC(pU7N!BE+w;-zY@sf~-nqU! z9shk4*>mS37-irrBOox!jd3i(#UFvTU0)AnCs-34np1@lQi!YP$Z)`o@<{`!c55Ya zVl%P%_mqiche&aMA3X=5SB||AgT5{Eo(Ne@cV4zU8OS$C4VdA@`IzFLIz+1ytGY)1 zh214k?1~sK?_jnggREWlkOgLo4rM5=TWLwVtot-dg4EPJ7xC=b`E}ibTZF=w+kJOP z`#beA5|AKXFz=|V`h-*m3p&b-hnWOEYQHZl?mcg{I&)=lYeTxYq&cD-;$PyiO|`Pg z=Re?CxW0X;ao}w!gN)|f8^&85vC#dPw*7$=YAD@v5|Om70|35&soDcdMNkDg?!%VE zn0mOuWJ|Aybz*u@Uu0T}DI0ylHbw9Ggqdkla>!o*W>ggA&`vZsy~%Y{jBUgy)1+xC z2ccp6j)qfIb;GM)9k=I=930%Z(>!N-xSC$|FY3!-SBNwNcE0W8B}BS6uv}%O1O%_b z0FN|LeKk>@2V1=RX9=@D4Wj~r0jARv=y_2g)!7$UMZs_uKogC)@wwq<+t*VihM9W+oYMt zG=9raEHL=>Af;A2$Tqp~<1ECTVWTCRP0&ZIHF;UOL(Iyqacl!v01io(B{bYju0Qxf zGc4@hfFXGZ)75(3Zrj>>3P5x%w++k&xe`k{0{ zvF!HaunZIPHrXV*}g5*xEm8X`bfaD zNzTm2!^~g1zEiMRcuB;I^=asD-QhPnIZ3I}K5EKgvx3WwGUCd(BDV1NNDjzqbHF{o zZ5bWn1f3wWK=xdTbj+m_qB2thxD0g%xcXKn7n$|CV=m6WoFF0Mc=`;_|)7vpmm zR|UH@dij7#&Q5(HRA2tU0zl#J@lq2I|Oz`4ahOkFO2mxSwOOL)L$L-)0Ws3>sF*bM58&m{m48 zB*WhX51d=W|0<3Ky|uHsZ8d$Y3pRF9v)i^0J$TC2Iq%o`z5Z&VthGZ=ozj)#Dzd+s z913LQTWS41qCE)`<}{eNOoM?bUM^Nb!E=smvpuFz#A1xqV%|GV$0tao**S`j1NKGnfkT$eB5!xJK?L@ku$^LbcT4B7gJ za>;>d@%2&Wb`ZB1x&({Os*wc?UO|pNF+l4-QnxHdgc(4$svZ&(##Q>1fgy(#gDO%X zJ>R^^luXJ}^u1xjeV2 z%RPx&0?ZXw7XZ1j%W~(laYl;*FZ!x>YHV?~IIqPH3lCH)}%#-D}A`*}jI>wi-n3LIFLG zi~Kg}@OpOT+CW~MmXl$Tzn8zNb%u40zM*p3tYBy_lxn?{m!2MKo32X+=Ri=n!QlN> zJ-{_jpx>h=kI-&4Kg=P564I=@m=Oe;QDCMHpS$48E?Mf5gb}fl`C!NC+`CqNJ16g- z4P+bLGypVL?|R!L2zGk=J%#x;s$K(gBWQ)XWHngBbmj5d-|_I8f+iv**e|YAb$X?^ z+OI+aX}B&w+WUw4CP}7}0gRVu9AV+J7^y}H?ICv&_8oFB=rv8kc2}BR$T9~w?g$## z{wg5?D~euU@pw1vl3jNEf8U4CE#R8n%FPF2g3lUcNe@~id% z@2S{ab(CWasJk1JgkAtBKI8(yKoV4>Xz&9Y$;DTs4&j=Iu>*yH6cSz8Nxc!KQ7~EH z^9*EtB3ZhI^t?z(aXViGY827rlNvg!Pd{sAI&xT})7=Ld+mLb2nJn(KCcrScYJV`3v(2o%-~@U*1eF?5nY@E770$y*VGLyYI@fScPkqg*jfc&9G~hsoGvz? zhhd-VeQ>G{r3q1o2lJ{%9|*#D2CkGT*!Av7wUXtRvu{9@1BcB(sPMQhi;h#5HW`Zo zfBbUPvrgBf>nuEHU%VFWPzoP7?4_&92-ZYNQy+Iu`y1W-#&jBggi}JAc{^zFqvw_&bKDM^pBjv+~C}^jyhaP>t zOPhS>QEYaJpCAYQngHQKI6L6Pu3Kp!*ue@j2HEXM*o_I7%?qGspqf2K{Z$4^jcL)* zyklDz0#;NR5cW41F zxAhJ58uCss|Kp@M^m>Z7tnWhz)pXQUvWbXabL9m(bazkOVJsw3{pB&5d{gMW98Nc4 z*rq|L5xd^0YjhpTdf9(#z|ab^q6nHq8Igv@(r902C2&QYr$jGEbLC;t(B1iAZ1{73 zxlK)_Z^`uV$uv64vYt|x89tx4iZ9Cs zpF6ommxT^p35{eFp~|lAE^;R#t#v6vN#z*Fdi+Bw-rAb}cD)t~pfb5TWZpW#7~gJ_ z_*pytW>~Rry)haH?*N6&>cx#m(J(Z42gXdj_OwOCndN&`;!TEy=Z*J;ZV!StLj*xfWZ`K0b-vzD}G^Z z&V<&g!!5{EXo-{o@g)pITe5sY!&gTUY^9_Ze(DYlsSw|j%oV5`x&*{62O3X0P3NGe z%99?c0kQPs$=A4>QVuK=)dQ5Nh@MA06SF8d zV^wA`24ggr`TJOPkvOz|)MYtn%E5F|A>?_O+{861frVfoZKt*MnVY>& z_s=3oZEOyjE{j3e!D#M2XRmfbNimY1RY>)ed1Q2VV;moHEWZEAXnXT0V zbj1!Zg;q(W!q@Buuu8NKQBl`Kq+JF!s;Wd zJo;h>YSq9#w095)EFeMPYVo96|HsJEnDCC@nY{qR6OUYN1`o~Q9vniJ!y)|K=;7xt z+W#zw_`8w!i(nvY#(R=7iAew$L12q1{05QoO@Rvu$PBwF0a!PKgxM6ehZA!lSA?U- zN12qxGNhm2C=uS02_`s)1FA;sdnDlZ%eZlC1g-IgU;HWyZ}k9 zO(MLR$IHuR`3G$C4)L0VWLRZQf!x4-KjFRrJ2#117+uavbd=NBshD*PJ&e8=7y?6% z&1+npm;ZvJCv@e|LB`c!i(z(darKZ13?5c?1tBtxWTl~NOk^S=Fd(zS2DlzPchV(3oFe!yLf*O;f8%%N_pne}(#@ zlH;$l@86UzwrSeE5=|nFhyfHKi`#2H^%wXnPKG^a9hNT-ja8r%EPC2RXxPaKoZ|$l(hcRZ+975Ni4Dh66Cu1p$b+Oy*Q8fo z#}l?1F=X;gQATk_bk)JLYD2B2@UCJtAh%l`q}}P-Zql(AhJ+#2(3wXib||+$=B3l! z_|a=Jb(BfE1Y#V$jbM67+tXEv)sIB@2yWn9h83CNqRX7+TCs}x%TzyNqG;?PEGtt$ z6~&J6pQ#eRm*A=c%@Kmn=%;m_L#@ov94hw4f5wDW>Ba8Z^VKmNjX}3;zpp^ej6cyX zx5gMoSqV#k#*{r5A2C`3+JJ^Vy?UNr{et~yDRySXge$r?L3z6@Yy_PXub_!XuY2oB zhgjPe%T5jYSue>=OFN8_X?WQYI4q)yi1*ypb)j*@VhvhBOPHg%w4~s}^hYiV>Xy4K zo=a~xI?WqtsBdPWr`7As9D+Q46$^3sch7ului0vPQfp9lO)~&%56bdrEj9-CCKMmH zH3ZP)C9h9yLH9t@9j%V^>ERn;KZM@Ia)ScEEA4`1e!oCT5dz{I0ZAE3ET*J*?VPaE z@%QEf-A8s(Ao(Vie(TR3_~cCMENe+vKY}JijzYsczsx`Y{1${z*wR@z!UZdy*Fpw? z^1w`u$<^XuH6OKt90mB332U)A7Z4Y4%jgyc57{p-wPD7uV6S(vsS`n)a}Ur<*8L`@ zS*MgT_1phWO!6`W6Viz5yXi>Kz4?ih1Mzi7@e5v6;q~Q}6m_cM6L`s=T>IzFK>RN1 zV-VvA^15vw=|#D+I*jAKb%+gkLy;h!kX9DwqS}XRt9Vv?Mrig~f?X#kdTIElnhku> zJJDX!Tk38g9zxJq_ur}sIgt5TIl!JvU%6A)4?Qsg$+rbUj8#y9? zU_R%avPHnF+%92Ufbv!W>P0bPo!6Bq=d~T)e0VGCv*)F;G0O*~^xceL7y`EdjK}RP zgqrQg@jFHnC+L{Mu@Bq?N|(W6Sz)FEkuV=Ya%y`mUr}IY1IZM=k(W8Xai348_KMi3 z&trhmQoBV`2~f35zaMwlfvSDj`Q*WbWVA3uzmmtuNR&su_WO6Y=C<+n`8Sblc$nix zG>@I)mK;&dSQaGDvHYAt{vSMnX0og4{!(0B{}_iNGrBG)zVhWo;z33o=rOTz4lvUo zp-J!+m_XgQI%{mSn`&G`C^;gkL|0IKSppZNRLV!zF-DR`$Fs&q6JdU5Ry@&9GT z!R97}R!R$}Hd=B2aOA4;@zS%14ha;{2F&?4LUYp&6U>kt*+uoMtn_CtKBEzLafH{& z>HvGv64jB4Pa6N@fc~yb&h%rZ5{t7!LS+q$baEfJa$f5aiST{;Hp>iZ$u=8MWy$0_ zd1B9u;cM(UbLSUn$>$Z6Nc%`Bv?8PHfpb4~a-HGCkRn9^i34{0hWqW8U!bHNrLV5~ zYH(Uf7;Vu~7|%llVw%II^2iu`T=J1$x{1k7=1cf?zs3Nf4OmRv#e4tKFDm;e+z!d0 zTm+3d0XkdK4D8^hRP7fou2(48@zG{RODCc!t~ zg&?tsmf~xf?REYtVGc8AEev4mcc@~-;}>v1j)q#xmYjUWS2doiO6-bFD;v!(WLFil zJ51*pD}4RNmDFcg)Fubzo3VQUvH4isQSEy)>2V0U$E-@x3W(>Y0DnS5*Da81?zc9L zLh)wFl*zo<{#OyDUrsoTUi}mEW@)Q6Kz_@6wC<7bu-$n9h%8=842+98=ia30F@cMw za_;Ev3M6>onTrij!3qUG;YF}?_76#rFGS$pfR2laeccY6g~JD zAfv-@)_hZw7Hg1+7s&K4~j0}&gBd1@%!q~gu6~> z%-C+p%zohPZ6c?1?V8QvNmM0Q0#!U-*#sZa<;q0quZTbo$`W zy3304kz*$7*?xzJiAsLW44Mal`AjZH>1?@qQEZvvQ2NQzwK;w$8Dn=67x@4uczn46 z>Noa-Nn&ez@<|w^L0rCpO9VWTGGa7X=^$ETWotDyL-9lIR0=1=NGrwq*4_NucyW=^ z7Wgp>oPc!b!vQov_ty_t+_QNauMI%RY7E2)W|yZ+zt=p01Uzo MX9@vEMb(u605wPG0RR91 literal 132596 zcmV(!K;^$Tdc3bE8~_7VD9{kE1p)v70000b000000000SldW_BEs+TfaI2;1ob7fe zP(ruA1G=26Cvb}N+(Z2aw6#LEJ}zV}H5jhyZ(Le+f}i#nZ5e48- z|DbQlNp;<3a=K3GnqMJ}@3~3%vfG*yAdlU(n*x=FCzIG+1oQn?qrKy09VmEEE^s7@ zV``|U7Rt8sF*GzU-*KVR^bnon)!NoOi1?IG$uoJe&chrItrehjfGd2}hZfnD7xvJz z$C$T4-Nrc-@3xTOHKWewaeU{7_B!hXmwl}@OQy7WGy+_MXgdWasw{2f=7pEnMX9hM z(60azj^Shgs%-9(y6~k_($O>BrenIPj*Z9!9}QoBEt>mPaz|kQG`)qwT6(Aos7U^g zzO#|0X3{}rWP56oU8AIu4^25LGk|@;=E`mbFQG$4mygr-CmsBF_H0Xc;gn`}C!K4u zRs3S--qIMh662yg8YH;|wC13-{Q`?&gzr=q8M<{D;@mljjt&52nlEEcsUaE;F){@% z-9wx$XxvB3;~qFS)TL1BbxgKuzr#UC<#`v~WZStZnbd54!bs=sa*SoSy!lWM9$u1N zvs}`1%*R7hcM;_LrV1zBNYYE}hy5o6m8rQUk-;FZ+$b-!nQRR0|DsO-H@12AZf(TJ`!Dj~)~;iQIP`#kP93RB8e*HWf<mtJQVB>m z_4);KMeWTBP-0`TnpQJfxp(0eg*U^)y%nU3dIH5{wudQ6gTUl@0Xx_y_-m42SKNM{VKZMZ4!8 zNvbfAgDG>s8wo!=@{QK^oiE7|y;t8v=}nda)<2Q2w-b-8t5aOkeS2L4wZ_097}8R# zJMB0ab8UN0%7Us6&J8$zQmUyf{Dar{XVAuN3w;=yHZ$OeZ9LG+p$`5TR4(8L^v=j- zf=|yiU7QN$)v<#qlG@D%U4jv}olVupi#qx&hw%)}_9TcITn(1s?1~a}0e4BB?AkWH zMf@`zK()sf&QT{o>#2v@kwntwE8MKTZ#DV|77tBW&K9&+QgPd>&LFp=kUANn)9-2I+D^i6d~@Y_VaILTE9=FBU49gkXzd zfQKb9F1sM$wUZvAXypsZTKO(R59`taS!7L3oO+JYM}65Z+Q=KWKZHoad_>MH zJeJBo)B`4q@XQTQ6xqvW`~X+nWV{+s@~5NHs3s2@kmx8{^`S-4&1=qcR`VE+ob{9+?t|sE~_k z>NHM;aATYR(y>uk2(rzP``>2vM?!Tc-L%Ij+Jd_26eSu?0=?q@bE+tosk}4{FE)_ba9r zd?1$6=6E_1nMUhp3C62|Dg=b(SO5g$G|^0Y%TB#ie|QVh%Pb&|dx2)Zc15X|5OgdD zp}-sw>QSh{>0b7aoITL3p2JocQ5QM2CsI1+xFz;%gQJGkhw>0gE6uOlbi$gQ2N(g4 z{Tq^PzqQ%E4M(wa`;kfg+2vjE^(?omRHi0|obs4?%Ku&R8nm_NK(~8#45A%=5&4nx z+b(%P%w>myMd^%p+YveYQ$|}+sT_1%;|a|I?-r4ZiHCCFq*r1xK0;%GpfcQs3=HP{ zt5o+I7L|wo<KT&~%vJ=kf zk04@meV*ewnh739aZ(A71Tp8+8qd=zH=e`lg_|xynWhG)JRE39f^m&trN}cHcOQw7 zhS+&}$pKLd+Z2v5^lvlC%a3DH%B+9@Z3oREPCS=?W<49KPi+Szp=bjLsy<SHP-r}K@1RBhmb!}cl znjS+eilWc*)+tlBh11?tZ0F$5=gm2%S`S_r;DP(F$**XJ-8rNG&XetG@;Ng{4vjaISok)W6~FqubP-X@a_MA$6OHnZ z(SV$AOM1aT=&9p?r@*3N0p*P0_m?GBf~cD#wbr8@PQZ1zTLEeeLOTN?__zY@G-%O{!Gl-Dhe=T9>Ggj}4Z1=-fg| zUW^T@d#{gyTI}K8K=>Z1s-i7gOfaEd29wzJg-5t3KlQt(`npL|=9MJIabl&`;3FOC zT&>(vA`m0|&W5_Z{Xx{Fz`Q0Y9HK<97OMmGEor~Y(p0-U%dW{cNMO+O!V;QuVoh~I z_?YF5X+&q&<0`yjpV(v-GCLJX$CzF)q8ko~lXmA1;PJTWPEKPD2g)6z7#b75GH*we zT|K2+UnQJ5DJhrvE#Txp0E@hj9>8do;WmLj+oleqBDR{)q)8qxTEjU@Kft)j0&Tg1Q@cDU#xd;L5OZHXNIP7}J)k=r_o7%8{y`Wdyw|!GPY!a^fB3-rE-Hg)I!? z+Tx=R=UJr^ZFiEhid?}Y)$Dz$rHo+AHgRs}SF8ry)S9INv=_UgA}uTCo5PolnHwi< z`USyjb*GXYT*)H8FiRng< zdhG6}IL@h};_gRHQR^eKQ+zQJ($r_<291qJafI!yU*1O;y|Dfb|Cm`Sj| z&}i(vnO46PDCo2>ixQ?C@hLSV90m|hBkW;2w-#U#6?f1G!~ z?7pPc-M>%zDj0=6Z?m@|K&6-jq4BVkS&lQ*LXNC{mfwux`8X=9Qj|Pa9-wv7ULNe=q z3n^=U7WD6Lt!$gTDx5QV&)^E^ExF^RMPGlWWk|DA6d{YkJe}OyxlxKuAz}>h`Z82; zXJ*yE7`=WEla)>p8+##)F#uif@%^b)ISNwzKjCKM@!^=JSXiRp!Y%+CR^lcw{NR># zpYnLzw8a+IT`6SZiB;{}TmW9-v8W$)V(P8mh{|!&nSF)P<{tS>CivJnGTNG^p&i%f z>Z#=)W~fOc9|Q8~a$E2P(#fblLPZ}_xZm}V=zkaxqhA`9pn}%LFn{04df}xyAbCzh z_NzV%Gm{i#!gQM2^QrV!&qCfn26XFtQ8=8^{*G)J2FZ}Mnmh~Xkr&QLy>S2?KnxuC z_d&HE-i$7 z!J*)aF&ES_FF=m&`bHKB(tiU;yq;-XS^gy*RkIU3DY^zjhB z=FLjOwk9~sFBNpIxL;R#MO*hb{5p45e?b~=qtkZ4;&ku^=FVI@%1AD{#fITAxJIF9 zLTf%F&HL-J?*nPlwKNOoda;Iq=kr08mmKN zLB>FvRGbnY^QGhL|AFw%Qrvi^>sZs!kqt4~xEgLGb4hYodIT^p@EwXX8@tUp-NPc_ z1B&XN6X-!0k}VlI>-sgk2s$+b4E&ant^(qDy-%77cJq}^JO)s>L)wMCx*Af91?{bv zS(9fFenXicHAs**)HHe@{`bN%MA@BW{1e7Z46isr#0NT0c|W`we*_Sv<+>6aEi*l$yv=&qo_a$gL9H1#V!Up_#z|MR2giMUj`>` zfK%@D6ZlkGx?fX^BX$U>w_YCsvvTK+B%`>ceE#qp6b8BmIVPn3T@to^%yzS__JV60 zrQFr(3F;wLc^KGpE%s6S?PcFxj&R*|56q?x$Wxbs=`t4pJ#4V6w)^6T8i8D7jz07owHB%AxRWBM>`+MVDE3!D5310&A39Iu!9BW7=7y8eNP+ zCB=A@OUbn1TaJopERjILi9Dl~!NJ^1nZ(OihfenyDw>a);JBF(ctFcq9mQWoUcS^( zGR~N-B1$3cJSF+C>X31i?M6W`v`t}^h^Vk5#aD+NP12;etg!k!B|NR#T9sYA6_#oR z7k)^HxL8}rXK~dKy!7!3J82DGdIt$vC47nU7A#ZnTKE>EKad7> zAs90hC7`YE+>>7x)7-opnhL7Ynli1UW+t@vU%pH6 zVsJU#+Vku8GpM+!6+u=_qO34?Yf78gI6!MD{(YNchHKuaTveHX4|eT~axGApYC#u1 z8J0z?l?VPOzWZW+anHWo^MyG-J|uOtoNeQkXlRp^`YH5(rMIQW-1MMqNOjQE3Zj*T zfAT>4Q0wcmBnuj=-~Vn#L4*=P(^$T)z*c3r_K9w(4MfNJ1HfoNb{|{2%?=!AlPwLk zBPagKK-=G^jeU?^3ky@dR>&xZRsIgp)2$7+;0r)Gf z9-!lHVTf_o%boo0pzrZ85_|kl2p+^}=6U>Q(0=tE`0jR3SY;BFiqtvxB5$)9CLZ=0 zyRwuYfD^G$j_PS8XA0;7Omb`;)qXRry2+BPMk}f{-_}?x6mZ$kZENg10B(d# zb6ePH|BlQXFVtfgb1%Y%Y|E+7W&6g z8emB;0ot`H{&8$X$*znobZ7;!8VaAMKA0)#>%)A_i;Rf3my7tpaYA5IXDWFqgO-Op zHPSas0^n^&oLMR8N1|Pmv@z4*>e76Skw2vH7Ip#?Ud$oD^hj=xrM#Str4B405J`sA z>KSaxN?Z!m|97tl=#8)vQW*T#BOerc;nZ(!R$Yx6ahJaErpC@KJ3lzm_}f| zbrJohyiFBXCGHl1Ou;DscrEn1ekN~tMh5!qIBs*5yvdKDb%JlL^Ph$fw^zM<8o$mB zzclz&ilFBL{03~p-K_g4q=R4zVYG?kZ#C1Txr**!4vCi1e~6!;cDt|)?2W-zyGJRJ zeThQ?fh-oi6Y(MvdLH&z)l4vB(T;wlhq#4m5-~5J9gb$|5js5`>It@Hva&Ig`NE`z zDlP&2SS9oRloWdr{Oc@k+=yTZK{JYFO_*DRCXRN!POItC$7?@6KO&YkKPYj_6ch{f zDp{u74s%)_y?~uh>#(0ZqQD21g&@h6gzY@QVS|?GelC#001&Co8e_K<+rv`_Wl~HA zG>`+P60O46q288dZlz`E2}p6{tmLr!Fg;XbwhqC^mAZiC5JcZUQ8@xgQZtzTR2Eo#ZfGw)3U`LT;p?MDineT-Zx zwAXxYhsV*i+FbBkB(%s-m+OA>iZdb20}z-|yvVmXKVJOfH=eJh*3VI2dM*5_ZghyC zwu+Kp32ydo@BhA0NZBTSjc^Gu?X2StdaYqn*qUTJlD8-2)Qxuxscd(gPAK0j`fSu}paC$u zXig3aU=Nv}C3@!|P^8|yiQC~?>1|5YwqKpba~1|-sSBoUQQlI=RcXzgj<0kasGpJ- zMy$#cNA&J2Oj>A+{ysvtvdFIb3<`^?Qb$xognkj5n8xi5(=G?GH>0sd3K-)nJ&`{UjbPDHJBBReAsSZz-FkqG2kXh_iLI~e3_^G z!y16I7P8F<%-HkogSv16XTA4EEcPs;X>FQFhL7(YwKimem!VJJFCHSF!D%mwCka(O zu138J)?%Klm()IQ$4|WY6GXt=|AYOc4x6FH2r7!zoK);k*cx37RNOHRRC_Mg8oU~= z*O&IU=4lNH-GTkAQ7T0L<_r9xvJAx@mk0N07;^)fXm|w0xaA{Ok%5hs9|VgwFA+2a zFyPQ3X}SS(0U!!fCAW3-Zc=CAj?0q6ak)2Sk3gGDvl5MJr*Sv1ubgnSa)VFg_ZBLS z;&i1xM^)VQSNr9@8k8)1z|)_I*#oC0_jfOokin3aVi)iTLn7PvLS^&<^U4P=B;>kq zA@hrceiwL96`~e*4YD$iVzi0XLpv~vN)J5;(2}obpk=c!n(O&vlSo?3uSv2=&M-4u zsL1MCI*M&vjbGuJxs&}X4j3%6v6JqwB*6F{cx==ei#|2tnU&0djXOR{Z2&tE6LK?? zaRTaE=GTND%QaBP9t+vMBV8d+d~C3!J5dYC4iTZtf-wX zs+f_|W&K}wgp*MhxYPu4>^uqTbA|~ZuHmPP2NHdmdC}t@NPpWNEqHwmyAwbba8_pF zJ28$itJK0@(nHlC`6Z%X*jKwPeaby`^(x+?@Bkhi8#Tb%$Q22}oqA?~0Z-BbB}kDH z|J&!@qZmX_t))O?@LzWLV9nE$e)TrQy~50=smnVl`M|1lmLhqbJ%s09VeN3m+lIn( z0%fLy63O`mL$CrZD6AN0t^yFX(Ab58cdk1}3^J z5w7j)^0m66iCkJaSpAK!R%`3w$2DluB8qBDmPS4vpt>m45AeHtE}Nl+q%r}%ZJFE6nPbS2m{G=he+mi_l2Z>CnxHhi@fKm~C=zRd#-yEvI;CeRAC%ZE9bTUx-1THeZ;!W>DQ z_knwmaF6UOh7v^2HaVgnq%bu2O64_WV{?PNE}@J$6ouC*^P*@n9C3fOkuBqHfJ-WQ zOS`4_h}%JcP-Yu9Penq`VFaN9aJ7VY*K>v9rX#pzjU@BLK^!gB$Xjkdf(Xc~6c_Vd4sF&&DbH@RMtMPFCMJ(6Jq`Lq;X6|E{BMVj8fpk49eNr>HGHF<@)6kqD?g7at{xUACqAM7{esfuG(F) z@d-KFWOz#afKn79wd@9@`3t9aL99 z`W`{QWbKstFAvVA?j*Oxq-_igs+g~_B$HLxbv}(m9zT#I;ymfP8i23aa@JB$3NS@t z`#H`(O}GjXVqsUhbdk%t(cmJkZKeb?25TFEp|j%s99u-->92`wmIT!}a7mGp2t7Ph z3g%%I;h=K-J_ob*Sz{UKocS2|=!vsZCk3}Of*2@WKy%{m?j{;rx`8ejz!p{z1sMcU~KG<$?qt1vf_DAkyb zYK~Z^_Zw0DYi~?~2>ZjWe+Q*SamZt&7rM7KK^k zbQWi>#j~L)NjeeJ&&R7dTB`5wCqT*^Rt+alo1##OOw)5|WV($Y^BJbX%0o)HO;sK7=*6DtCZ=$KmZF8m4fU5B zu+HCNFdMv(C}v+QqwhkiV`t* zydK0!v3H7L;q1!0-NYXT+2Gf(4ZS2PVj-y3{F8qGr#BIjqu8@J@BxbZZb>`;1*97H z?JpYNrN|MD$Ly+@DV8(D8z?amDC7~So}fA^IW z+z)tQWtu^M?15OTL;gcV{qy+S&qmNxM9B%?R&vQ2%E4f_a!;p@5&Ywd8WVr?pzmOO z;lN*vp4W~5YqZu`Uc@W0v(sIqf_XP*N*vu?&J%$cXg_skR(L(d38l18ah0QdraaK%>2rU?t#+chf@V<$kopN13SrPfoZmw(g1DnGc z5}z|EXS=XiW$eT4_xyBfy>uj$FWE3_$Zu#r#|-tU-NGY7!rMCkJdcLj8{~WbW!l(J zYuR7Ky2xvX6HX}JZ4-;%(3;wTDq#Rv>3X~KEYjV8`w;Z2es1Dr z{e{FJ2cgOOj-D9i!f{`93NpTp0sOTL$sh zX--Y_H$aGGf$1Ud-3qYoaJ=+7Jv}tlx_~H!aTA$?D&pW-a-NW|ZzkEU+L!jCPWM4vNjq>d4CDFU`ps8ryD>bh& zFJUYmnQ7sS&FCAcF5tzaG2Jh5I5%n6nf|LX=BXwm zD{v>Ov(i8x4#(<((8noyJVfJ-)c{-!26>R5K;kqRAT5D!LC`D zL7so8{TFp^{kZ)cUk(v`aE^?d{3YpWUAnq~jzYxYIGXii1dKHjlk}wRrBcS(2Pv(5 zy>pm#nyV$wYOnze7yzWW8M!FP+L{7OYb|)!1dT&TVT{ViR7NK6uTfWOIUO`oa3Bfg1ogxS=T_Ew(E5vqVWHO);K*Z;O zUlU-198@VCp@^*lgY(ASN#JfpO(6`UArA%q ztssv}QPFHBAZmVEGZyly!NP7o!9GKa6zI2+S*17#fhIz4=1qFn>|5zyBXB2cI-c%- zGt8SI;5Nr`s$}QB!iU1*i2VzH17CxC7?)CkFNFp)MCIbXrH13H8-qE@0%e9qRW(MH90CUa%VO(2~g5i+~m-d)H`*xYQg{l#>8i;+YM7-)lXBHl{vr zduxd(V${I!2TNBeeWLpkiT1~tPTt-fDLc9emZwGM-_269OJ)k95*T{xahNN0z9nTI z;CY8usiJ`+G~;g^rEORIL%G(i`SZ3F%F1_becih5Omw9n4l9ve^98ExuLd z{F$A_H?^hrU7H*u9@iFHNjGbj8Um~khtia9 zp(vjum2dvOk%km$1wh*rSeyO=164od6D$^B!j80EH|A5{JrqF6#(tn6sx|yL!Vvnu zOhh;URTky`FgRp|6~G64p4Fhm1>3WDG?;NmExz7U>!0b?-xV)WT2zQT^TF*} z%l-QW&vO6J`%x8^*f%{&>I~_=N6AMSCFIk0TS3b*wYjGEWucU=Dm|Ca%OsF8@jLVFo!YBZm!6VYE6Iu=CTgfEP!p=`0yoM`Y(}E>K zPOGoKDi*{;I7`YES6AWhBGIu7W+v5J$56RJiYNva%9i zd-;w+v$@+Z&ii*vhy72Vzq>Q(oABJx3EOT%GizM~t(5N-7+ro1r*DJZt#`E8<)*(v zmz^~fQol+-7L(wG9Jax6B`Q8osNx^+!u(372zy6dCYHe0ZmA(^sWs2GL?h)%q^1rA z$KYg&FOc!+g%~d>;7S9dw~cq)uogS%$E;07j>k=!3fWFE1nC05#`xmAqo_2)0JNaz zEFhUWtT3pvTVaLdy^75TvH6%@kN7g;&?o5A#Mg|cj~m~V#}?yd9o^9Ty^B)L9q`Wl z4iOSN&(C{U?DV>=mCvE%A6NW~8y7H}Ap+e16Wax?{L|YPi-D>t)>oUMJw_XnhlaqG zGUP#v-G*iIKfzO8F%&$=+SzklAbq^EfCLM&zK+QiO@ntL+~j>#Bc#%&E?PpEjM`=T z0%z3%>M5+%bU`0&wzDN>Sd%)Vj|1)bWOjTt-myjaaazzSLic|ePgQnAtad@|f?pJ= zo%}MSs9-VuSEc&w$+NJmbqb0o3NRC^!b+yB3^5P0dho&`D~(ElLQ1!;;!@qWK_hE0p((sCRD2L= z;3=s&-p$iNzv&2{RyFkRCk#>`d{r=Ktqrml@ik8Fkdyd@;Kxz2>)7V#9~H+R0_E`z z2%~fgC~L91K5qd7r`(n-K4EAI#at^4TfjqztBG~QCv1*tai?f+RA3b@xZ6=K5G6x|h6f zxrncJn=HxdW?b!kH`15wr_eYAR2FkC`bNAML}oe4ctlBbsXa&B%sO2xveA_NgA zyyir&K5)bVZV+^ff8(iIPZd80Xki)`Hu7?)ikLKv?QHCx*LGjBRZA41jW)cMRwL|` zn5sLLwp#F&mIGOdGk?8(Z|vkK1-)|wJ<@LG5N3arGMR8hJALnXXOrk=vMXKT^ZQ-i zpWz|0FR<^2*mcgRoDWFySEX0b+mk&Sc=LGwaU%R%Ky-x=b{#^Z#*UwIx}?J@bY-Vq z)2I6crHjRE3b1>=G&dQ%Q-OSIthvo`vp35%C@+E-=ILgGJj^Gi&Tm+skr#h)ZJLq+ z*&_#!P!v)X$$#t~!+6u;Cd7V8s}Oy}0Jn3MkKoX;nXdVPAql|9eD1W5eFO%{z@#-{ z!C)(Qf&Xaf?(Xd%UCb2KE4fB3J`iyji+yXhr2D6%IKw@>3n?<2vs0Jp>d?)}MQ1`4 zI3Zf|(zulLy+50Pf(f`bk(HxqlcB^o-sa%x#mD|n-LeZ<0ZNsOiG?-o+z$<*2wRhK z;Y$=BSB~qMNn{tMYdxZUZX96FA~(lX1%6`3rWx%uI*g^uW*_8jS{YPz1R8FtSPo=9 zG7*JFA}G~ABiByKZk^M$o5oBg%azkL!dab2z2>8lS{Q1lxB`DEq}z6eT-=nwqg_? z@gJ1;;HzE{Td{^uBw}x%O9#{rh^9sXiejF?!+?yVuRS2tjRzgLf)*#`7PD6}fo3+) zm>KoEsIO8*`nF-jlzs$$A%-Lgx(2A)NfqwNZMbKC{^q=XQm%eA1rlw!TvN(}N1*t) zx0b?QzLUT})m(%xF4al}ILW&P6kToqLyz=jZLR`6v)b}qv>?aSpkV_ObB zj3u@)<LUC>O|=i7-n|2YJ+JF*=wnI6t3TwxH;KYsmO65*+eZJ?CI*)jtQKWOaEibN+?zR@L#O%qG`grDD^=aVtkre*6O}Qtp81c77 zoPMYH&AV2elynDIZ?~DPm^=+z7SwTd8HnkivU~6;HkKt><%1hAiaAY}nD(_|9#u8$ zGxy!+VV3@z-G0cO&7EY5VK-!Z`UY*HRm9f8x3Fg@FyZ4a0tiRpp8;au8)+p=3CR3; zVd|L!hJhe&9h=ZPp|TmYA7emiV#Cu>#c$bvp4sQ?4|4{nqJB(FiT6j_vcJTRS8rrU zfIry&B5y0yw9pURXXUVe`VvVRI!2GKgtAeURgCd4r^_iySx9~1S9KoMN&{U8NEAMW z_;pgdA^Zz8jSnQ)^IGc*DFDi8K&-bpWh$u*Df2nkEXrRmL57IUt_9^4RUQOjxAOM| zGi{2RFsyyr+BydhUr>7Q-|x`GDFizu;P&M&{?g&Y%{X6b@ckVxrz3XMoV-zq4uLUNmeZ`i`0G`;pn~zSpf?QggtZVTPHD9I-IZ;k$TyN zO*}l*tD4>8+^nfr@l&|L*;uNjQy`zNn!Xa*$z- zDG#M_^0}v2v;!0N%;Z513qce2RO&Uvh^Z~1eSagv=J*c!h)CL`S3M_p*Y7>Wq%3q6 z64t8I2yH5U9rLFxQjzbjXjK71hOn&hu6VG5p4w2hmoWVmiHcepDceou*~cNuQZYa9rEHB@cdxPr5LBo*TyN zJ5E`9;Qe`~uoEQevsRa)AchvcE6rMN1FMR9A~TuyG_)Nb8abijx|*Z$IB==XW=xdF z_Ced)s^+?RPq2;4M9%C*ua^wcp8iDyWJCX*%Sba2(noL@*!VWyL*swcQ!DPLbM4uhO~c`zU!X@oO%p!V6e!ys+y7YxJGnxM zT9(af_%(OlIj9ive9Fn1xx^I`f@BmPg6?`hMSP4N7l$rHlP@-h7Rar6LBP`1yPI6} z=F>WdUVpb!(l@TrX!S;y#3K|{kH61fo4r3f@wP{->a*}%=`HlS7R46tx1N6SVjLDh z9P73%ix@TTn(d_*Jk_s#8$oA)0hH)GGigZM>=EMxFVI;uP}%P8d7U8V`~6rg{xRXH z)al#6opqrpom04-22FV)C-qg7qJ|2dAs}z->Gl{_-#Tf}d6bQSD7wMFJ3{odL`noN zqdzCDI~yeRczwm_g4mPQzE3uSksV%u$pycOAq%`qcA2O%qF7F+f>C1IyYD??-TjBq zV7!n#0qgDgJKtJb6P(kk>e?+03iXl?<~*C^RsQ4DDgFh+W@rmgc+fXX!`fBAA2JIn zf{&NN_ee$&;9ZigODg(;bC5-$)e=TX0Eos8GHEj@UO>>p*Mkn~q#dVR-n{51-h(nz zfMkT8Mw`!S#agE0?5N3Eb5Z<{i|K_ zQUtcSpN4iY&K_JGbIW$*n`V-CW7NzIFW@e&~ykt3!FE|c@t=6_Q3_!Oy zuz0LeDqMpBed@VCcxgrW731&B&ICNDZGS4CKygi_F@A31)BHsbB(b4fl*VSQK4(*B zFyZ`R3Nb?FLLxtyd;gz^raQ!*qgjoi8luKtX%&96u?7*wbJltxumR;?W)+%pjbXh{ zp%vzkr5km1!(apCTs%SuUN0e~X%Dls;p_RQDjFuu2|8_GE+#Bz7A8TRNzhm-TBF;Z z?x03Nj0rOoa{;zXe8w81w2r}Pgnr<)kd4yY1B786uM zfPEB+?d+=&Wsedf074w@mQq%6`F1E2%O)0B9-NJ;9?EWxY zwy*>vVnzyPNX$Rx-v-+p-iU8|Sv3vsX3je31_4+9z4UU?4Shl~FElx#T^+NJYTUq) z`_`PZk-?f_u55tpNy>OlqtRWzTKgp0s&l}JolN|#t^HYT!Q$5=<(%*DJ#%Sh!H<|^ zjvJ7yQez=_qVCynXnM6CbRu2&rvT?XUaNPJ7}EV`&RDU}6x$V1`e(^Gkb^&6#VP@R zV22G=<)l1DKXHJ)sBN(Q#0-Xu3#>P3{0WF{!cC_V`>Qf`xXnc;+yt-MZt&p)+vTJ+ zZ0~o1C49?B!s&u|f|{&#LfSYClOZx`pJ4PW5b5xS!I0t^V4;Sd_;Iqk*u}79R|irw zWm7#JQ4hn@wgRei|tB8g`@I`pSrr>d|DawnhqP$ z_?NQ4!9qzO7_DrQkT>_L8k)ax_SbqFv3pmw*{nEI%%DYoxIE33f59aGW4*mr8LOeH z4zv&*Jxp1}=3AOIWc5wA$3rHNduQ@QS2yOU;2_hd%ZURM*5K=Ug~KE6=Mae9#})=} zYJcMfg*zW?NMUchENTkLieNA{s0jl4xh*$_6xHY-r2u)!nx~kcpARz%CGi*%hY# zO4}{$M>`f>kO90V)6Uh+Epyii6ajn6+!nCC1*JM4Kn90W_w@UkehrWui2EU?i?=^c z+=ulgA*zfRkHsWpYRNr{Z!`T;!dI!@&V7WyCr;^Cc^Q-ae`ncwRvcg+@_<$rL5k5J zT#I7K<*KkAK+Y}z5r97vGDVsG%E;2$fjO!I6tgzaI|wWKsOev1Jk62NDV|!WaFNnl zL3bb%U$MJYIpMM*W|uG{_g)m6hBGX7F;fdX6cRW?;H z5>TYM0%pf_W&GDRK8e_5V1fIn;Md3*<+RCjF7C@O*PU~|Y+Jhq_ z_<9I^YCx^{(@SxvAr&lW-26qrq1Vk$P%VKomg?%Z+Sux=ij=g7*gj6D zVNl7fH4h7U`G!$_571!|H*HUT>Y%L@8J9AoH})q!8Y7HNt9y%kj^wsQ^4b2|W~ZZ- z>q1pwVAqBC-d4_W3nn#uJDEAjz}%y7OBtZouw4%<5SZ4Qi+RGH5eUs5GJ9TssE-UF zmy?_X<=XFgLR0keAvv(C)@TvK+|Ue)qXb0G8j!eC;5@X`Wd>2y)^Rh(_+<`l1Z(t) zG=PA`G#7f~0buN~QAViT@_Gq9vg)hiV6BQax@RRwUTheyJ3q6crhi^$30T4A=gTuV zPk|r~6^9s+2jDCH_?Qr@JKUI= z#8>-u@-KN81-Nzw?v)!ZcObwxiB9}Ma#18*VsM>SnE%LFu|7{?r75Aql)9)R+>@T& zzCibyn|4@PPobxN2%Sm6UNxV)Dr`*HJuY57VI*KLjq;U5T!0zV&tykr{b@p5FR6pt zHuPo_#5Iv;UFyv7*L3yC{%qu?Zh*BJeH0O*;*PKkI(Gz76^``+=U-vsQnhN)+Uma| zY45TRAW>X%Dh@sfzKj(yr!$ThuMZ_bmtE`@3=$%@D})A4#EP;W2|?66w0lL%oLC9q zMlJ~amQr6RtS1?|#VsE1%)ps!WQGnyl}cJb6{NHm2;d zGe@KI01VUgzb%Lc!Xx$CC1Vw}E$Z@g*ozf8ZJvz%yOzCd@%^XJa$6u{YbuRK2g1dC zHfAw9K@?VGm|t--%_ABq*HzbrEM6TRcUkpkX1|mBc2qT5^%<2(R#-2IQpWRP%|?b` zuG&7!8K57MNL)44tcEZlE4zEXHhV>Jd~%1+lbHw(?~ll05%O~tnntK{8#Zxw@eGXs zpXZD;TXk?IA`p2844(#ZEc5o3%f^>uwfO;sLF4-|ojaiLQPEt+N_`}6d||mZP>AGn zh!3n|Qvp_l@;!-Z0dHE#BGSqI2yDkGBCEa@41$H6XA_M#}B^`IPRC7wk?b(Z2cv@UBO|DdY(Rl^3PXp z3iHF+bXAieFCy2Bmva3w1T8)Ur)gV~H0V!NeYQbwReR4R@W z)xH<%6AaOwa@c{XdSIyKQj?+gYFl;i&xWc4^6Z}&roHS_g7Nr5|HkFY-VDnwE@hRo z8q5u7fl|PJ23ythkBEksR?Q>T3s@c$6$cV_YKc)hCQ9~G`RJDbaZu%RC{bRc9ib_Q0^zc` z`?Iyd<^zTX$SuO9VY1!(^`R_aaQkB*{g7JUqik;wK9nRN+*?o)hKD*ri`TSK3mYRpl8v^!M_4W#*M9o2@(qM z;(ygLAoA+$&}Qe3LGg%#)nPi-M^%zq;E={UDyPUnlW`2$wF4w@N{{jxzf9;qr<&*) zR#miG1l^MwjBLuJ8O#@2=8#gE_rl|JWhSsJszUTt40|O)bx1Td0qGP1^I*Ym(ipZp zI%1518;UDF?do_9vi5*wEu#p)Y1eXBS?PIKBgA=_671QD(zuqh_Q|S9PIz5M^Cv-0 zg%ZqKB$JfLfvM@YxOecn?c5nh*MqHlM(b;|z0(@H)sm+|SuW0E z!C{bSEW?`;Mn|Hs*=xaXqUKOC>h3Hf)dHYg^r<;20($+{5iNBj4g8l%{yB!3jso#tIv_{JjV%!pJ)#EIv3X$z$w*#O3FV^sj}8GE-O~4 z1L12DbnvPerx4u!JH83|&O%*hF71;)yKBfUr6XJl+?e~LYCedQ@|aXW=5z^h8e)1b z8-y!}a;nPR0J{CL^#v8)F51eZz!?xEH(9zOOW%&K|Mk95IZ{EKZvI-@te$&Ub-@)K z9c*Qfi*bI%?68!z^+=QgDvRq@I&G~)Z_6CV2{NX8X$GD|M>C=4vF;C~ys=PEV;?R3 z|B7>Gto7=#9iKdK8Z{D*ZJl$-jj6NFBD)WUCLKI}Mwxr?(vr4|Si+HOyN}h2hD!#q;3iECrn7tY#O{LL{tYT#80 zuW>}^+O&zioS1ftcctWTFct)Z+Fdx zjkdp&&!so*FXPh@a*7bSI_U3!r@+Q~xiIAYK5<@IT?4foD6;-8Z8n6Q@Ii80OIL`( z>HG~nYOjV6$WJ{z68kVbN${6hTS4^w3+3w7G<7S&Y*EWB{RhYmsG2&%YCM#S1n+kT zE!!&y%M35^p90e_V8Ki{ZJlqM-k|pe)zBfoR8Mu=Bre|5->t&tF|){BEI)KAiX5D#rxw*J&)rn zUjnmp)=-K!DZ|gcbo#f5_=IaVv}L`FzN4_~vm$zM4+IRA!LmI_rn`~rM^`DNlDp)m zDzB4fbH_aq$R;99<#kh&DAygo|8y)ykWf6Q(~&U9JYO_xh^ zJB@4fP*@zW73u7CK;WE1IN}yj&9UEJhq^3SyQ6qCsvXWj(q1#GsK*#wBDASfzpPEr z{~V`ihJ$5=Dqlr~)L&k%E>?s(z^wBuZ!qh7C|G{Zv)%_rF9ly2buMD@{oCUdHk z-GcdYWWtq^OC%fbKmVW=n=8cJb1vwU)r`lJDnTmdqHN!rOJJU+LtBE<+xz0LcC^ci zdJxJhNu`_b%=JuZgXelEUJ#Bc%o*J{{B*w?Vlw}~L>amO8^TQ_bW3OFAQpQuS?=Gk zj+4mShITBq#ZMMGD^VkNcfYB`bqP zm4A_AM;VyUX13*P0tu$H!sX>TUf`QQy&oYQ?RL*G%RH0kJU4v0Rtz`V^YI3i@RwVZ z6MRxmn?%K3s;xT)&mjiiu!2c${iGoTh5})JzVn1k`o%1Xe_R1CA z%9@)$eBUAwCar9SbzU!dnA!BU-_VLodJsFhQQ%uMiJ`B5w`%eAnc^D|c$x{(utJgb zG9TF;PWN?NvpQFSs1G04MJWn=DEM;N3dJtdh>H{$y7>no^fKNwgVw+1FII*DO#gD2 z>n<-wp}8gq>3xjpFgSOaRfsj;Y9)q}roYG#NvpK~iZ)Dm2#hM4*4vmnvjL_~dU?oCM4JdC4CsQ!C7Rm0-l7xGZM zp^B?NXV;&_o)XpStU=F~MUA=q;-<{&!Jqu}0A#Es8hG@VC>-bQkr1Kzrv3pf68S@} zxQp`ZJe?`ZddPMYxVBzL!V}>hXl?L423C}vId6&1*bL`YDbmk0h~@nx>i?RmN^MV? zm**iBr~a(t8qPQVczUDg7U&I1fT8({!|27+n~3Bhc{7Wd*jKp z{(Hx@ZfEgBH*QQWcLr)C6B6qcC_KsnK@(=!SKXP0SqRaElR~FNam^;>nkL10bd_xi zKo{zj^~*urivlGE2yK|64TSg!fR!6g_p%wTF=FpH<@~9}I|e~S zCcM0ny19&FeHSG(w#XB@MT!}aoVJ>c<{5=y>C~79$-c9{S>=sU#||arQBGj7M6E)> z!TiM1H_9o6UQG6qJtrOEbCM(BP zYV&R{$m%W0hr4OS`b+)jIgAiPa7tB_#)|Gu{h_NI6uS_FqeM!f_lcly_c|6VhgUc> zaX>JD&<23PCIH;R7ts{>jP{vORo$(ESDYHAE+ZuQ6m2n=00AyLOsxoGqBq`eaP&( zbkqZrbRRcebn^9%uOtDZXxkFWeL+~!TFbyNdBU^vX_v4|vQ;%T6J?E{$uz0b{eKp1 zcT7P12~Ls7O^k40NO$=u4HGIBFUB->W3E7@E=94%i>ID=#(taO)opNi{W2X$Xx61L z4k6Y^oP2#6N`gixyru83l@$IUQKfom`Ai%d3x8F@Rfh_{Xb+NZ_iT<4aMvU(9eC$ zJ(lM{Y3z(3Vo5f8XOXbR4K@0OyGw%W&6a$fK85|iRw^S= z?of)28$bfGZf4RBTY$XgIj}g5=)$#G33DulB>3s9$L`-*T#?_?qi>YlM<%sDWzrcH zLFC5cxmhzVYH3=Xi(T?M`^a3wVlt*HblA9KJ;gj!#MY6$3Mtg~gzd;B1UZU-FEboP za|d5|TC|HqCcoL`!F%lnT0nLVP`L_D78;Sa5^E0YQHiZN8TDR3Pi|wcjZfQ8I4|hr#ZptXS zns58C4&%fpoRbn=ZYy>S|5i72Vv^C++W1`9E*XnW3hj?<-6lQ5-W97(euORn{m*Zp1v*BkfyQ6wp$H;t++O~WxTgTU~kNVeEvG5 zaFTi4&GZu!Oy2Q3{+IDxOuk!`XV#S!0*=~_)-*zCPn$Q_FWe1s;=V?Jyk3yhv#jth z&^{4>ljlx#anT9|n$>W?73JA!`mKeUFfgL2QY0Df)v765zY|Vy`0ZhJ;_lIIw;AjE z+^QL4658Q|F|z6*=wtJ4nIt%xg&$1Hg?gl?JR_DNCH&~jb>VW`ew zHurAnE>-H{h2$xB@0P*|1zYUb@Jar=)I3letO7h$cV*iXZ|@#Z9uRUzDWU%2AyxKp z8L}RFJ!xDnbBS}>OI#R~dY!5?Q>1D+5sfoqG9!e>wHKI z7%n{>Qz>4{c_Jgz-agdl6D*WW`L@zxLG56zGV_*x`~!wIL(k3cR8B67IMT&PQZf5Z zz4wHplLH``bt3X_zIAsYE0}QFC{h=20E||9RNWlNn6ki+`!;2$N#4bSOKCFyo3~!i zoGN@hSJEvc`PpU-o*2fK+W8D3bpq34~NEvL(!t zMMu6Qs^sYhxA23~cQ@Nd6!hurMwBCY#@mbb9gTX+FIlo2*W8L5&hkUyqy3nr_f4J? zZaE=73T=SN1$i=bT-nBShy7X}WP)i+DYM<%(nKF=34Hr`8M7!h7b#}_4ch2ZD65Xy zJk0;zb$})tQ(~7qwPaFK0~|bL=444Q%1lp@W~RnFg+S#`HDrxRN!b zaG%}HbkW~Y_YmOi3Qg9%wpel=maP01w&&qQ6LBg{ll!^eGrYp$ONy1QWE`o$fY7PK z!^bN!6x9QXZdO5Xhwu}E7Od}d9TH5hzIX4>A3S(_6)%Prd7sQY!oS#-?#}o?v~1YV z#Ubd{7n57a6y-V8euJUAmmOVRW=ZsWwGmxI$xQAhg+_561E4uZ4MM}{ItFpLL&&5m zOdo}n$@Fh*cQ(1!svT2YX7uW}Z%G{h2+|FDAVY#6E*9IS)?fYXd@a2ps@_%D@2k5y za3f`S+&l}0ArdXI4IF)guqr1OnhLY2$V`iNr)dEc=DHz=G?$ZkA}fS{-mRYeH%*KfMVv~ z(nuNU>bY`yctjz>VU;;VW#t@^rnH1h&#|x^0b*Ow&O*T5&O5HjYobC=cJtmvJ_GK25#EiU|L+RK@D@h znd;Ks{ZK1=vwV^dbH?RwqRkBogvyyKrZ?e%B2lwh*vH>FTt{!MVm$q$kdm6Ckl?IA z$Q)L_>1^~;uwf26{;Ti**Lha?7K$I4TriT5H}x5X$=e8s=s$+aX^2e0`j8V8<^BOK z-CNv*<<8RP`JTHMWETc=yukX>x-vXu2r*bdad|e6mDBCmag5jXs*j-RTC^u3Y){Nt zjd}{s^c91V5prbXL!SwL`M~6yp&b8PZQ9IS1pGbbUn|>R2QK` zr|2{`CgKqk$lT$n^U0nL{(!t+D-=-UE3V8)ioPg_39`JxiO;l6rsM zsRY?o6#{}Vcv26ng23I9jDt`2tW67I?1*ZK*0`ARh3_z&`hty0Q_gQDd$sx{I~cn zcvZ^G3|82%jjM;}s07j^q}G6RU}28#rqd}hg_kZVzE1So!=VgvlmQ35-jI=GwAuJB z8lf`fLiY7mvc0bp|M-nz9*%kc=!GLlLLI0AG+~6HsXn56PXw4jOu0wX9@gaV5R3Te z`cBb}4S9ODIxELnH$TV@pHQoYPg!3-ZS(Z{E2EpLvPpp5Rh=Y`>LCa;} z=^q@FUj~->5tB1p_~##$UhuD=YTAJWPq=A)TzTPx$4~f-9z$YF4MbkVwxz)bAGN=+ zV=;*$?7#PE3aP)<6C;Hc7gR9Lt`Bo@j3jPqtdsKq69=tR7^-m3u(5FSyF;6Ii2Kr| zakMQm*Blc|A;96&O(h?CfT&28AgQWs^7RQO8i`ey7=Tf+rKEI}2|CDH9Z->LO)vtYl;zOzST;D#k=C357)tb8Dq?pok zNn!j!`6@A`)~yE*J!i1FbhY+Ym{J4PwNuw*m8i;Aqh%f%YhgNG|OW?A)UD{n3z%@Je; z`tBFOM{`*eiK7(A7)54s*~lztc(EpODb5-|JFzHNm=0G^yymtf^vrhZA(X4Vf@z$K z;0-7dLpIQzF2~Q@81^AJN;K|E5Dz>W3lrjIeG>iNWkuMGl{2Z+q+?pYh6B0_*~TAC z2GO~9$FwYAVTwkVeFddObf}|1(~)6&k8q@Ww-`i8{o@;}4TZoUwv8sC0&i5bz=>67 zoO_XD&e0Og@DG}RAub$}iXvp}!UnRKjqiQqP*^Egl%_3k05&UJW%Lr9*<(TKC&}nG znEp_*{!lGHlfzZbf8M;H{()N6?ObYEy6qTc_5yC5CE3M5IsZB(y8*k89t3h)e#@rv zv8+Ths&LlDjq3IMT~tVN%;8{@3(8#)*N*dwu<(?|J|{pfV(Sny_G1WdFoCKG05w)N zutxNl4noRO05;?@rhGL9$GUwPo^2s-vOGbLVVdZWTRAkE${dG2JxDIOu?1_5Y-Ot; z8O~@p|K}9$oC>BPLbAF<&}OGRq_W8d$2gp_jFY0v$Gz&ke;fpYD8#`K&Tlle$a=(e zVzxo7CZvv27N8;)L%o8t^Nx?JI+<2}`xC>6Hr-bS9$=;g#X0q+nk>>0wa1;YI7#TF z@afbH#8@FF3?RT8>seci^<<#@)#g3dnL{}*8Z`b|!&B9CrppOqyHn8{re{HKHI?F3 z57`X4#7N8;o2u7RKjV0p8p-5a4ag~P)X`|noXSYN$6hHjTCj@JO^3TZg+WQbzSt!2 z$Ezu=(68_AmEZk<eXpR5v`+lW5|Z-W^I$1L(z$#FKo<_x1_EkLFEZ8Ha}TKvS+ z3r0nv9o4NWYcdPo!p_E-5C5{MD9U6*kIO?pD5!tn3jc@}+_}D;-2#rh#wLP=(z1&T zz=TbPaD)hCa?@G3!CJ=NqGjd~V6KRKCX=S5)a0{A^hHrD%5}#^Bo544d4!_o!c`FA z9?G!^Z-AA?7U5gM1>n{Qs-X}&1eQdlk~b)gf+jOxbz(4xTC=o3)7&yCN6i!~z>Z9# zhYVm}UK+FgS)_z_ywd4?@0C(SALtK-X47e1HQipOehD&vt%UG`4Xn>7JQqH5W$C42-*Xd z#j={nU7Tu#x=+j}vous+V_HluD7fxn&1S>|@V~j>U*aTl_D~f6*djn`rXVBXD)Kgu zj)Ii?kMaW^=B-Rzi_|nSWda1bEpka;5C@ApUYWG|{Nsi1z?{HG#%vNT2Jq|?hQ4a7 zG!?`&yBblE`?oY<*@-m>2E~d}UG81*VfXqd2Ba!sv@HnsZ2U7aGJPgFbfvs;@R*BK z9;bM^{gr<^efWdjah(t%p+E~g84b{Hav8%7L1VFV<17Cinv>07A0j}^8XZJ*SqW_? zsNiQq)U2zol>RP-zMA?O<;-t4(qYwR+~kRAr>chPI+JxlUs38$pyH!sW58V**|n{K zs%hx7g74y4E1z@H)V+ylH-khfya9O=%P{=rl~?HRHXb}Y?1g4gcxWFN6GgMv1m&K$sL|PRft?g< z#cbrl1~yL@3o-SSi|Z@EnC?=#=7&BmX|(%mG;hHO36RnkNMmsBDg|$!C^#KU;u^Ktlzz=$WqLBWRfqbv%#i$$F_B zmSfO)_H_v(11eDaTX{U+e}8fg#q+#yWJDhcjWY=-2w`t1_Muq{PvKonMM?N01?t<} z;eh_5D#A=32CfoT^=_iOXl(+Yyx(5yYv$2+)Vv+|v2|%8qyyfILK|NhPG;^8i-x!j z{~e9gwDH@;DVhw&C;xJ7kIb4_gIH9HjWNeznOA{EnyAI8OVq0`_7-)lj%_M*%&^#K zdDS9fC^GPb|Lry<)vP^+g3H2nY|(|{)FFpq^$if+g-TBJbAPBJ+F^Cz zmLvwjU$2|(znL~5>uiZ4pCrf;+8FoD?Uw1hhLgg3c5t8E+~gJ z`#FX}Tkl9gBHpnZS->GNd;PTvhNj2;BTZx6$5SpO7y+MCPw@Cnu}^FCU|%Mocj}UsBYAY>?2S2NhKVZxVigRcdf=PHMH+XPU$O@hK2q%tD4;*+^V0ZhEAFt&KiZy6+wgb_v`Ac5tG7!3XI<68`jNE?)&>#FDt zMQY1xx)+oSUGkHeDE<-JlH9Doar+fFO2=YN-d4E#OPgWRGd@&dy1;k41yOE3Hk%yFMbf)ve9eWw_Ng$#1nvyInoP&=B?}sS;B+U{a zG%L-|Vm@skqD-J*(xqoHzWcr%KbrOGVZzuL3~S^#Sqzh7OLdchQ!+a~FD3oU3M?hc zwE_l#^rHt>VM)Ea)%9g*_fgTJ@sj7M(GWgVW3+XvPy)d_j@!>|OH=<{C@wJFn2Fuo z(2SP~$h|%d5ITrSQOEllfk}l9SUdb`Y+zipI=+=N!q9Dg!BM|DG_p8H4|*sNPop3B z6XJy&fr-US5kpVm6pL1@CKC;G$dx2>vPwxnRwwm862=zr{!}+9hYE!_BHk1Ff4nCM z9=vCeZu{@)AVkpC1u>}kIDn&P(R7WeqJPb7LuF-Qyr%Ge;N>x?dM8>nwA`7aUs}of z#ID1lJn$YS0Do#Q`|8NkajL+}&Wla)O(w~qePX_F^MJkgMCmmC+50lEPZrZcS3wYi zt9}{V6p-Xt2Y0Wcj(0Gn)<;isX~W~{eZn|@{zQ={NrgB2-dEaRW4|CAlDew#pkCgW z(PmI?u^qXw;HbdYU(oAIB>6Kt3C?L9u5FM}GejUG2j~So)Xf*I+;G>Qx!GCF?Ii1S zTDj82&4(YD^U_7DgdDgxyxxqs*sa-Q%3o9~z|bX?M+e`CPF~pgjCf7UF5PnTc7=A~ zq?%FJd&;l=WP!E)SyC8a=_>_)?4`(N|(a)QYoA_f{9 z01Xq00w;cn6XN_@%Tq2;CD?uv$3BU28}~uKR|%7?3B$vM-x;K?50uv-`T?w5XK)

^a~-58z6x8Fu=0d@v~^u|M$&O~?n@~g(gKkZj{LK24iI!>qNBEO zeYXv&x|5`~^1VHyR`8GI={7xn+hs!%BMVl)VrnSbq}N7@ZDpTGplB38(m@0V^=x8)w}VEeE9b*mG7^Lg+clkTM`?$LB{+afmB_aDQQ^+5K1?k_E&#Hj`O!XokN z$CX-lk7oKAO-n=0SpeG_FvBb1Lms5U8q`F_ZbJ%@G#xAOkvbg7i$1XXJh17$8-OO% zyP;(lt?^}*N?2<+-Ssk=au&=lTxQKGd53_Pjhq1zGywZJBTBo+viT zIOuUajj>1-=FEPDdFVFbjS`e|u7(`S`vS|W0ZlEx1AdDdH>RMJ>M*LVs(+TgBb~`B z+w6P2r6BC2N@1)oFq)jOou#*HzmZ7XJ)G%I59)`*-;C0E$e~LL2q87(D~^G@Q&ozy zya3N>+mR>Ib4R4M^?!Lx=V{ANlEMy2PDV9+^+p$Rt%x*^@^i$~A|sBd5HmxQk1%Rb$_VYhpOc$tRTi zx#{d0p^91nKvOj>8#yheS+Ok_3U2qIMZ)LD>N}oq*+)t~h6TgDIKwnz*IKoWQ+%@;4xhd@4Z^I_o6jnvLGT z4mDNJEQv)}N>KkVsJ(*BI@Gw zDgz_9IS8U327C~04*rhX8ja!6>p-%PaMzfJ4hOlnTsd6+)cl@0WqwtmVsPN73egBH z`#}@NHGsDpjE6^Pz3h1qfk)6QLcyX>(FecQQ67(y&C(7c{$Izdd|3!e3-I0)WWjng zW&z2)R7aIj3%4jpPtnprC!#8VO?l%l_UIe29D+`R@}qSkkhQtn&3$E~Ge4+{KBMc{ zhi|!nmhnPaPGEQy1+0bw&gNUVGM)ZiLm)mAu%M-z>Gzamn)?m&$1EV!-toDL4nWD? zcbhdtfJoFa0=Hed=gmL1Qfg0!!(rmUSFOYULyMgoVMhb~bXZdbs{VIo*p5vJ_wZL$ z2nV@)h1`S1pP43Y#x@&`IaGulXE6v<>-N)~MCH#caQBx8{5%ctNw76*Jcvx<*!-JuI}Q3i@Twnj^rWwQB1Pl+xNq;DIJ3 zDzhp%fw)s-NR7mTia-bQtt1U&!Lhs^$%k!k$5q+9H3Iv|9^oZJD5wau*%Kd-Kjn_t zyhO)Fp(}`LRAXQBI+a2YpTO;pD$LQEy$kx+NCYoB5Az8XD>wubprjeC6ZXI@3!J1Y7WH#>due+^Fk) zn)7*j=(Dffxu*S|Vh(0kC%zcOM~6uRg!OS{O2IXGkL>-Cprr#a+pvy+vkNCNq8w#l*|>MneA0akz<5bQ z>jb{exqAM+Ds`?yl}ouI*D)86^7;F?(D!a0+o1mGklZLMk3}3~35--<(?@Ld`w=N4 za2@^HY`)aZ*s%_uU57U8uK&nkHK_+OJvD(!m3KsVJ1_RVj@Cc|Yt1UyR7f@;JzzI$ zL!JT2DoBBb-3eBn+1=vfC~EaaL;qogZP+zZWI2CZ0%uxzN;dEb-6-q1LSSEHhICY{ zfQ6F^AeWZpze=19e5Qyy(~{}LOX5)ASS@E%i>~vZdLN%!Yf3LUzKvqIycJUPY_dX> z$u$_wo)p3A!v}c%)&ZzY+y7Ii2oVl2tC?L{p;L8&TtC7(H7i<2a3y=2^O)?9=qv&& zpJwjyx(oLa2i@NS_1rTMCfpOLv&TLre0u@Bt>4ck<4m;qvPRR%QnN!vG6l!!H`q<) z)6O#e2fyi4x`Nu#pU9Q~4N(RKr<6_hqFb_JPb;(Hj?EZgYW z_7-X1E-f*MMep!_d=5B+>G@FaZov)}-uf)NNjOftZ5x?vHP3?(M^uINxi$sN$S4-`m*PFc z<913yl<~8M2bfGxBGEjCXi-CoeH7tlml5r8Jds)F5_#!!K{g_rG8xjQQ6jDv`^)vX z?{T7lrH?RyxJPp?JDjhdrySg2sR&(8l5=2ODiu_JRX}J!x>QB$%NrHf?u<$HQ(YK) zRpwJh(Y&R^C*RW$gFlFrRRfKXlnKWtN@U*Dl!^{4-E59;Qq^*TRKsz&EAPd|GZYp< z%MAkjHpm_%!$AIh4XL(r_`8vVQbBAcDnaFS*QWJ7QCU?e561>v$gA;bRc5JTez30B ziEVW3hIyh_rE*rF2Wh~}|ftTakD#OidP35E?+Tz_O; z%j90pfPW`-=LXFXn6dD%D0C*J%!R)%WHz_7WzY#A+QPX~<^MoYXypZIwlrfZ_%cRB z%$(M<%;a#zq3Xg-*Q8zv-~{U2hNCMb{g!hRrquv`u8x(0_r1&S=1|od>wn=7m56&Z=7&IQ;ib&4z}Pls8QXTq zMo;_%oa|psHmnUN?P0#&T6FG1-%dl?U+)=~9Uw%Q1IAecLuC*N+qh%E1Hwle2>vEl zT;iT!CAW-@AryFJW48m^M5+E2kMLy<|ic`M^U+iA#`KwpvkEd%D;yp4Y+;OM~Vgh=iG z7-x7jO%-iJ|Aw9$;kH<2dDP1>QR*Pv*Uu_$rw4pW=D&I3KCTZ!h98bsxsa6K{#dNc zQatatDXoZ#PY>O%sgS4_YQ)-truw@g#I}J?F4}e1Y1iTXanQv+$V2ZEtyZyeGE3Q0RTMk@dJ44M zN*TVS6b5l&zXWl>jN$o)bw&T!)jYN!DB^VlC_Hk%MpqvXHPK)L7>ia3RaHJwYJoc$Zicd;1Iv>a8gDmm2tBYnRE%tRp2A@)u)UI&~eW9-wdMtY(SOyX?` z%B`~Vh>r|#q~AJaSd{R=Uhc-ubD2z~Fc+ZZ1KP+GzG8^CnH>z&V;@?^1tJ(4r9S@l zD)ehjsfSFDMJ$bYuoyjl-sFD2rNPXaS$AP#hqBetB?Oh@CKk$z&^t1si$Lt~L*;j_r8Yy9cW{}FO{TfX26*j(Vih5P2 zN5A*f%opGe!SWyI)**u>K!{&$9n_bTLXd9vQSFpn2%Nz_@Lwv8XXd=WFwha-@Oq4> z)B)x?GNI+X>=*GY_{gQi>55ou`Ibnn`c|NkN;*;H@zzk=30ANTGtOE~`r_ppe4DK# zpbT`UMfK2r!I&(NnwciJPPqkp`Qz(@_sem)yY7lA5#+-FrB{`I6cf0s6&fVoH2)HR zwngRKSPXmUOFzSJIYEG?r@#gdF&)!niu{HAwFZbW0`RF5AF{!L<_$>Af_ZzOJ^7~n zc5u)U7!QssUD=x zA>}4g!sTvg3s-u)l+KAOG0Imz;w2@k(l_b^yOP>GpM;E*qtHK^$yZ%d{q7Fk))2@Z zSC$@s#Te(j$&()@?@J#aV@7B_wD?wXo$@lb#Qb8mYspPNQf#n)=+*J_1y>J3jb`!J zhUqPZ99d+CAY=&hft^w`3jtYW!pz5cGg%b2RK%HOb1?h!KgHgBCgv=8`6CC>UloAa z0ld$XRS%<<*8Wej6l}X<$u?&PMzSsErSl0_v+hmz+t>2wuW4>dnNrn+rlMBW+etVC zQlFIH0+davc)5qh{qLOG6?@o+v7!r7v~`sy6#%dkpKqvC&!KQy2(k*eC77asJS{O_`x}T`RO#n{xv~U$rCc# zC<(^U8-e*Y4LO}b7OB(y&@?cF&ar#kdyu9NgArQKNh=YTvul>sAN>2yM;R!EFh zp+k11N>F}ndh_<6&LkuxS>lyZfS%$q{e43Z)8rY*95fF3NqQdxA!$fOXxJP78k-l# z@qK$r8Mt5F%6M0WXQvo4mWolQs}iig!n=)Do^i_}VI3&TXM*ET(v1T8XxXOk^(`O-rLtFkB96 z1}<>AaGuHmHQPh@l;diB%!a}_NWzXM2?TbNG&zK>ndv*|u#io*_C;0*A{_NamuhW7 zRXNs!9RQ*S%0i0jW(np(zt>~T3Iy3x3ydj7p) z2$z4BRC(|1G2RdOh9&7zK63*>5$Bz=gKlZVPsLk>u7)aX3rUd0A{Wtz;t(uWQ%#fM zYrU8HcNEV;OQ!&5HG4f!fka?&6Bab)icHgr1-^A5xHPa<+%dIfJPh@U%PsJU35P(zfaZOajU=;!rh0T=7LjvfxdD{4Ew?%D zO)jGYt;F@upBC(0oOX7Qk^sJGT&wBt`~>{vtL{Ro~i2#dIyf)Dv0;)i&dq z4YpZ5%|zwkCjTp$rM%Amu>ABSL!}CaU`qD99jw75PK4 zY>u47Jy$1ITke^;I|Wm50%j~A{%HFV2uOcROMk={5Li5MfT+&PA&{?Fbq{iJi+I&1 zh9o&VkT~^Y8a8g#H{Y9`*F;HJVw5IkgCwXOHB} zj`rf|i>o=22`!!}>69dQ)%Enc)CwJ+T)k5$RYG=S@e|HkqwwU(Mc9aD`m3eDidxO_ z5V468Zt_g~PfINl=ytQTnS}*x8xU|u&+E`D!-e-1`-cId*bv2K)suN@nh7JOL6SW8 z1@AAi+a5AIQwHfEr0nAU3*yfqX$ufQ{fvMu!nWbZ>`~VX_3glAo_HkdBWLD z27gzyqAlsK`r4}Jq+074b2;TN2)u^h?7^Dj8vXLBqs5xlG%8UmGM&k0)GoRZpaD~9-Uk*~7!FsWGoJmoR zqEyHwG2@GC)&#DOMUG~;V%@(j>Hs%pkF4jl;zG{>MpDgkeKW<~YKy$;Z+=4=OJnMe zDK8CVc5r1P3eb~Ik8Jo9%zg@=0&H3I1(qtPj6Cxm(0>+XC{dXFuX8=g4{(r}UeA)O zO^}H=)QR!N0<=&)#F0$objJg9xvB$7#WHu%I!IlbP6e&}LeQL;T>~A>GZK|2pZy?9 z7X!jol%uK`v2U8ofo0v8-vgHzB#cYJRr~m-w2niK;WZ`obF!={yok6kF_t-h(0KGX zOy^Zpxu}73`d?A?g$|O>@3TGnagtN!+kD9c81ile>SJfg0}v92p0>{Gd%U8!Op&Jh zuCG>wK=Id`*b)J_pUG+Cv?&i=m+H=t=OEVA`}5exHnZl?EaMNdlaIMjtl+r^@F}K4; zPGL+#Vk2h&yjP&KTAq~jPLF(j|IHt0q_5?Pz>2r_Fwdr}xJD7RN3zInQP1M5j! zi)UleAOvF}L!sck;(NT1S1Fv+UvlwLY-@6Gke9X*^=yM^f>xh!iTBn>`i_{zkN1|Toa*PA%(XLVrhg)g~_APr!dxLRPwDs{6JHU;On zpG8HZB&=@rAB1!U+&bz)K+gXZ5Uz^q1f;;54X+PNuqTFrKf!0l69$D~Enfr*6goS9 z516+XJWZj_*x~Oi9&@I@X>hUYxhA28dN_f3K+n5f;Srf@+w~ifxJ~?349|^P4RON_ zQ)9gTBRA0E;+-`y4adO05MLR|inxM1tFc5GpSSZeN4>yPpN7>%$w2Qy(%%Hqrf zWKjwEq&Oz^rOh|DZWjdivE>W6a>=5Qt>MC!lMaKIfx`qL%5=|81*xY{RC89Zgt^xw z^F>CPM1fD2>fBunvob|ZO9&*s+@;h$Sy z5;a^x8HXM63XUV%XP{T#;Gq7q3oAtCJWG)9DRUGmNlcCii6u_ymg&|wSjF4Vc31B_ z(7)qa6}sFMT#^e6%5#=^3Kd;EH%T*YZWu0lqAvW0>x3Ri(q`H&)J$Ar;I2ju4V8Y& zu{R7jH9X$p07yP0z>2AHK`vHN6rT+0MX}p{d`Y0U`v7d6(BeLPWTL@xHDp{wg|vMp z_+ah@TOIh85^fJqk4hmsi2w_diRuM70?};#u6Jw+=$>FFO-xTgMJT`k>4`8@QdC^$ zMsLR1d5sYWR5jKIDOlX3NF0MQ00jkmP4c?sx0KKs;736-uVA#;%|cIi6ZL%oOO1S^ z%t0eRSpV>Yo{q5kn0b1^8m1NzAGB+t(?eyUXyTUg=zpPqdSd6*Zu-KMsT0LKp;Rx` zkb*GzR+nzk0OMGoec5}bve;HrXA1qT$USw^7HH3e71Y%0mY%>!+7iiG+EA{?A~WO! zyP@e3$B+aL{U!A}q_xh(Gp~KjlxsfRU>@rRGcfp%H5XRQ~`!9D|KxBlT0A%9SH zX-;`^Rrr??ak)xzFQ}6B{RZ^Fz`&HQbqXr}8H& zNO+MbJzDw$ZdkIJVcsEqb{8u(MZRokQAvCIqzg~tJ&yhv57D80V={5P)lV`^6c`HTQAnsBZ)C~Oj#y@^q(O=gNu*y5}ZmvcXL2&(9k|FrqCVCq5) zA*Gm8`!XgDPm#9=s+7NDI}xBHTj)zc+6t|^iCCyUC=a!5!eeJ1+Z$8N8Ff@25Jg1*o{mnjpMf-mR*|CMKqQ@-GlGB*-EA2Cgp(|QT4 z^w?L19z8U@v|xXCJEeSd?M4FvImR(_2{RgHVLPza@f_8K^GXe!*k^6`hj68eHlJ$`7S70-7Es&%Q zxH?f-nUTwX9?#|;`~hNo>GzND#xmqLPs20x-M-a6#1zZwP)|mAZMV{`n~392gij5* z#z3qF_MsV1|HRPsy!IE=QW>%ydtf{Ww8@&j6g854-ANqn)=57+bITvyp6uvx>6FQlUaIr4pX21UN$2Hp5WBD98hM z76BsdDd?UG&RN9v_?D;0B+8E8!oyIdC`#nf-gC_cNk~GC0vR9%i<;Y{Pme!%+vVQX zamms{Ohus6;v@E9Cw@#@ycS+If@W1^gNsiPPZWu%V=_6);WC;lHN>~~urZ2Dlym4I zq^3|Y41YxCjVtH^RdVk(tkm|so6#JE-X`pxr~Ee0vRfH6_Lv~bbhS{}~}^oxU3B(I?C?OVa7 z)H@rQs<3?t)%IY-!Ld1JxINW|Zt2MkK%jvY%*D(4`tG+`?pqDQ#$j-!puZs27xU2UAUl${ zm#t@L?Q(%bjl4Chh66YD&X1EtAL7YKQxPDabb>|u_Fc{L5ctCPXr_4F20e~qOH)U_ z?D==B-a59sbx!1m?ciiddnNz!z{ z7*n^bCl=yLn6bBeV97LG&z5Fubw6kW9avijP!Fo1Wny<_wr*^zJjCFU9X9v`1LVwq z{hC!sSa|@TRZx`OE_8^C>^6&rb%#-BF;M6|4rR+;si)N6>#Dy)4)D2aG_8eCg9&!| z16(}b%|FU1Zh{s>+ITrf%<~nS?Xc^w${{uAEArGJW#2dRBO>iAzwss)Pbemv)A;7o z=juZwd5c?06S5)(^YVZ*@`o7nr@q3N74M+f)pxP>1n27raVZI4Q#Ratt1j_y+vQ`g zM|(~zd*2_Q?VhlKKGd`$%s{SLJ_VCv^^nYimP29AG(5|#=?@P3o!2v{of$FZC`&#t zO{6e$`~ZcpT&!F4ms23h?<_)+nl-bP$>q#VHyI(FZRrcH={BS~UO%eRN$PF{tkc7f z^w(q0gH?y=6}lu5b96b&53Zl5<*BdjqB}w@Yyq@wOR|i{=sFr{WOUY7L{e9KP2@^` zWsO3%Tmq~w8VcbY+5qiPYAHO)Lh7iE;MNg1yMU--V!G;B6F+i@6cGytt`S~Df4di} z#D2gF?90om#qQ}I41cw3@z-25lr#m;|{thjhVe+pv0Pf(7!jXsL)s z3KgW|=GNoO8`hmEsYoDqoNHs~654q-vs-wPC)@=q3KGCUC!p1o#9DO8@CY6xx=D65 z2E*Yf9(xu6#+m>nNUW`N7-SHeBNJT&z1f@I$1>Y-MCFsi$DV?v&MKQ-uKA0az@}+O z&WFAujp4_aO#T|}^f}ud8YyHNF5U8Sm5g4N4p7NL1+$brkYi>vGW^a- zo)_3s){9fIWVon()1PTcx%5hl=6 zF-VqpLHMT*6=J%DI=Js>AMseh{HaU0n2AS!5|Nq07b>g}$k`q2-nigg2T@X^?^XcB z3Xr`&EZvD7FQAE()*p#n4zgD`VqFUrZl?r9OZaEgJ{yAJ5Lt338pO?8vXM#qIkD5^0AixC0Vbs$M_i>1 zl8l6>N@6N6JI;odU3UCQ4Hj7kT#dMhJ7b8An}pzHG!{gwe&AnBiFcUC^&q^e64xcR z5;Ije^2iX8fIBo|tWEZ15lk1kuqWSeFr1bmTIa^Pw~~l`H@1otdW4|;82q}-R!OWO zuo7}GMSr2xJ214MSPfJK-ZkTgi+GbF7$$2K&#LTIg^QIZUkc5fcT#iUK08Q5{foI~ zELNsJgultl?*|sPEBCGO%4i571gB0))bgh|JwVUR&Na)|CF5MEMaROR{O8X>pzo+D=vq+evd^^$x&5r zK|y+JfVcWiJ*2YyL+MqoZk}Q8+>)6?lW$MOStYcI@|h*K~3 zJ!09+h76}uRXrJ$Bt~LmPjt&r^9J5k=eJ<}7RtPdXF|9lA}6q5=r!C)-(6ml1*TaG|=O>d4ZhFkt$V{x9$ti!SmlX{P6 znO>q+q@DUns%fib5o(XeA}%mWw{q~XyWJ7x_0e<6N@lf*7=++{U_QF7`H1ZKybPu` z!!Sa%F=%fhD;buuiSFAD&ant!?{brWyG5Hz@0I$Pv5s0px^`N(62SsFT4z_Vg78JQ8K41@h+88JAV2`9SXX}}Q?T>;WcdHvaq$6%jAGZupk8WUGu4kaU@3RJxp<)ugje7^JT^G@(rkqfJ zYbUoPY<&lS7CLoCpWLH}(O1+v+JmGa4RvPgd$e-|?VbBWIXFhSBu~(wBlLpelKB-R+Pml|bNCMV>6EN`h#~3d@nTPW5RWBlon{K@_ zT@8RIJ2{cg-=1P0IL99aBewxHS_d^1RhK6Wsh`cNR(UfKiDis>^#`B7L310Rtee)@ zgz{-}KsjVJSM9V!N3_jNaL_)ZUM%At)d!r{h|RXZ`R-m1wAroif|gkL+Il`E6G2Fo z$st%*q*cOyx!H*2ULiFIv{2f@5asi}O4=^vtD*cOS#_0W?gi4S5JZP5O^LolJ&3)6z%L}$*729PH%3_>45*JPoYlIw-}h z8|VW@n%mtX+g})fVql+Ok3=` z-n$HzV?lO{{}-}lYQ(&6BN+36Z>g?2%wd~>Oi6~ITEUgL&hd?Aphc7Pwff=Xnka6= zJ^TZB)_@%`I+CSGOK|EP)m)xt&0GeLHEmP63ic{9r$Y|oZUD5=aX7?kp&0GvYoFio zAbghS`gV>$0Ea1d2p+DwjwqBdp{@hAdXL2Ku!w(yPG9mbjw21kCDWEgkq^0TyWpyeI)E{|MwVJP0NtKqhh$+KqhxRMM2>KLvk%HVvHVVGX(WB zU5=9K8I}W6p0<6#RzV9s6Wdo^=)Q$Erq8wHKwx`a&s=7!ins0+;u?MG;ExzeU+WfI7tf1awD{lD2FL?L zBsIW`hlCJ}cD0x6V9t?#J1I@9HkAz{@dlLRMLnBO8<4$%ikvcWzW1GgftTi*ag_ zls%7BB??{4;r0<6373*0A}OZ_wVn>s^}z|z*Qi8Qon^@vG@47?t48TAw$TjyK)p^%OCgBXc%_|-7vEEnquhl|Z$C)Nfg+z8pop4GgHKr0H(U;iRMXb9i# z5_D~&hq-z2RQXBM+fkut1RbPbfPF}mV>PEwoVYK}4oxm2o6KW4jI4b&n`lBl9@MLE z7KT-1RoxQrCp_e2N-)0!(CA#z%gRRZe z^8Qc^s|lhMCGInGh)yC;z{~o5^ZcH87;Ek9R_-D0rUYNFT2HOfK3YJEO}Xxjz%_8i zizC0T+%U!frk;9&ap|$C+&y#ouOQaAG0|#O-k0kLi{KWZgSr2E4WDU9V(^X&#a&5b zENTGxY6)wSZ+}bt+#|Dy3qaf*A{^v56JhiP#g#^gK&5KTo$;&=iz(tY#$az+6fB)S zfVOw0R0tw9J~HZ=x#g=dky=!;gt!&#CW)rUZI~?accr5sWvjSz{J`R|BuI|1^%9NC zF=V`%Gi4vXxM4i)xc>&7J3Vw6R7o;aC0ozRs^n!;f`E-l#vVFO%_>jrU)d+D3m^Hi zKg>&VgkZ}j%+$f>N-z{~t>En14vO&2LniST$|>kO%_6iD~szmlu?hJ|bZw z`5l(_h@Dt7SgO6$>uQ&}C`d#Itar+lVWdVyluqaM-I&%!O^)n#Cju=btLZynq0``( znD}BQ)}$&0pWyMgKkq#(IJ*`pJUGxZ&<*s~!u*Rgk5}2zsTvANR9LCMFmHI7tCHSy z2>Z|i6n514-EaYCO_EyCmbHFzo^#zMitFVeMM@rKN@X0J|I^ne!7+TCP7Pb|??ktk z$R@z}PIM_Q)k4x3 zw{Cql=OaV)A*`Hy{oFXGv2(u^igxL8E>u%;%+Kh}sg(rDb14vN`s^=L|C=FXsKJia zcen={ATUWeMmG5P8nj#)f;yh;wlg=o^omMzUV%<3c%gCdw^MFd zH8?hYWy+kB0d3pI{+25A-`_*16fe(E!=aR{yxdV0;Zb*8BzFue)A>*?%%0vL zv$=6+CV2lkmT{7A4N3M3!|H(g;BduGndFu2SsKgVUZ5`l0YeDpHHl`xFxpEFHeb0f z=7}UQ+}H0yEd8S1uLva}ERVdpfD7}^2o1DifK+6ySZsmx|p;^drm*iR|Jus{{drs+beGSdjOSY}}1Wj*P;`_nl!vo9ypb~}&T!7C&(_nVYtMI0TsHB7!D6wJ73N8BDb$nPQ zXpuoF5YU@VFV$OamL%Y}V>^Tjz2xAY9!TW(`_DzL+wX|Ql$m{ieP0HtvK_}OXEX^= zax8KsN^tY1DC>R&z!bMHVP(O(fXk3vl0=58hi}O1_4IqTYt`jY5Pwb`$Ph74B#luG z!qKXp4MS7>_c%`ARGcf;<)AFnDG@KDhhjzS$4{VhbMu)Dzd6QwV*3vEw1*qyNgGSw z^*9Yj2Ei~CIq*`Z$~vs=r2z+RTF;-bSJD18YCj*2y$PQ2@Y5HT05-{FD)`sE6x_%|qvx7WNgPsk z41R3ln;pQl$X~->_*Os+J*X3=^ejhk2iu1Ft1LH8@Z$$Z!;=j`vJ~#&8A?0f=y`N< z%0A#RkHus-@F3~_rcSgfXdoI#2hEv8u?}|SFevs_78mxtK{>SU)VQfh!?v&ow!a$8 zo`W(36}9OigMUO5O9%=b(K2yLP$N&GIpKh{%rt5%nq7}T0q0}toElAu2tgslo zJXwxnSXgkpcrp+SeZ&gsIHysbKS7@{VkZ5b&49o*sNH;i(|S!+`?v~+L6Tb`Fc49{ z$mZzt*P=$(A9uRnG)Uo{{EBomz7kqy=gS-3OoQR85$rYtzJHu-7J>81wDlGmTVY){ zm&bUKE0TOMtu}WpAv3JOTUSjGw2)pPE{CD}~ z?C*Mb8VT9k*^$J2bPhFwUy%_E!@zE0m%pf!=qdyuW5q5t#krD>MH}It<04KSTz__T&Goo&LJf4ukTu@z=bHhY9 zQeW~x6GgCSWo2#IF3Zw^dx+iYf&e21RT`V6?xjV(Ty>hykkILKHY+tl_;z*ykgSx_ zga916GJY@|_Qg)pq@UsZUS8N&VmZ>}tE_Ym6lgRSDjSpCs4={?%cq=CEcfMYN(XD1 zT)lwn3hh)oyU{ck4#Q{P5sAs58y$H8!)9hLi0>LEw;5;4tg|u}JP!rBYX;Olf@Lt5 z-fP!?FG(x@gFf^ii3Be2KI8WAL_z=`TZxT%-$@9RkRkr6n1_#b!Zl$b-{GK;m%Aj((=2VKN zbq+c1&o-X3A^hv-F@GBJ)BROkwCwNg)E{lGNfwmVPE-d!4m!j|3Uf!*dR58z6i#$; zjMO7I5UQAH_OoAFNc-2wh?8E>Y&~Y^T!ICl${TD#nt;iuAgZz`zGfHL!$Eu-sQWgf z+{?trDF&xms_vca+vg_$t8eLqsM>c19t4CSlz!vu*N|kS+;1s}(%ELSJKoq12ZK}8 z)Q48veT;9UGHMvdIE!JFlXCqfzbrY~o|K6Awbs@s+|hjMHA$~2auf?elwVRfNBZa> za%i-mP&LUHT$j;T6~UF1!BrK^j7DzU<9{iS^@#@vV_@W6k#sSyleDg6R(QVs@3B5= zI5ApGBZZ9(ify@hXRGywgc%cdfW*yJyTO3X%PigM60;$C)G2d|;<^})jLyWHZ>x*# z6|J5%{aSC9{5pe%glM=nvU#}1=LT>Ro0`jIZNz%Ave9uqS8@P68?p0TCXLi;_}la$auUejGyni4 z;Dc($9++&E;&f{^f_#Q6ZYyWPht*9UJ8g$F;iSGC=TbX9WmIXT!i2;|icS18@QtX| zTVsY>IU0XrgxC?mnl;>S!TTcnH#?rIE}YtF&B5e%?Mq)}ca}YfbSGl?pNP;qaXw8@ zSjTc4M$k)Sv@>uzni@8A76(pz!uayzw%gB|ODEmG)r;!}2_0A#%cXr;|B_OXGkDfp ziD1I3^`&Vf-L_q(aO<$_?Cdpw;4iJYb&B()WMuix{`y`=0{?B6od<0vj;M!FZ~i|9 zEW)&UKCUb>b9(jhG?Q5wkCKDmyVPps zjk=g(&r2RU--z+@JpTqDm^kFK#?MS}fn|7wEAy@>7hXhmhq5&yv#?Pwy?SRh_&Q;? zaVZpm6*QD>;|2n*AE^37G;%7lETl1p z!s?{h+7_LSy15K~2Tgx9=w9K1v&j4FH+@17_eToMlaJ77#+uR9?<{W#=lZ}z3XV0X z8WiZm7_iGaUZQU7sOgu&;<>xokpI8)Vu+n-XH=f?^oVLT{pc$~Mh`+z>KKIf`vhqG zGM9X@niMC7t_`D7w#O~be~4tTIwb=n5J?Q2wek-cj$Fw;PXBfK1?5($a;`Yao4m#0 z!su6C|9##$g6(Ln?Jk#}3FWY{MfzQ366CXhYN(;IiSS5?O+?UB9lBkXPH@N>)%tFkZ-i(ELF~PrOzc zpcROk;TI-0Lz!w@t?iO2EiV6WFjb*B>Oqon8*ow6iw%Zzm>{(d;cDr(XoN2~C6HPS zS4AMet&yJtfJ&sYE!3#?wmlSgtfCK^^W5rcGx@ix<8{PwwfbF?jV1z5U~KjDIy1ig zoAu@hdZ<+3_b=Hk7SY8&(SiySa~o=BFyhZJ{kKnN$+g?|73V%Z^`K7eqR?7J=>q=p zL^mjlxwfs7%Laa$Y$$<+{ugjzDaVLnkORb7k1n*`UNH=6r8`@!BoUBHyQ#tIO851@5C@qi_N8*BsaOZ9p$>f)MzKg%?KOxw4lz1 zW1N6;av=2WxE;?gX@*-8V3$=$5@oEP3=_x0S&bu>@e;HFugi4`Jv*Q^H%9 zlm4lQ(N-GaRR69NoEBT`{5+T125kS7k%vG<>}R<>zHMkbbP=)W|3qVAFMtwZ40cg@ zO*lCA5r{OJG)=D>O^8Cx3a(fCPYX}Mzt2nc*>Fbw5kB9o4Yz)yl{rykC;g7zqYz2K zhY-hZqQ$}Af8KIK3lN$OPX?c=_k;YWY(&)vGOb4;eItwATAHGH52AA2U`4P>0~=?= zj31TA^Omzu3RMoWn=wn3>@v3JO8CL49e^jX9MmPjtgxYo(lm1XY~w$wr2x(OnWu9O z8S=js5#s7}V6n%o%oT#eHR^`PvI#a@&qjo*ga+%)3qX-tL!QF z)W^vn)c`L^Ng=snDXtx&8nh%G>9Fyuv}(j`;09BZ46Ec%RAd>YfgpaK!&vi)7;!0o zq^%^P9Qw2w^d&1-l33ip-LROQ;ol;f<%mN?L*6>2+oPMKXn4;GgOEoD89h#1N}|TM zJ2q(1!-(^S&(db3zdkuI|AD|=g@IW=I~!>Yp5<(3d`*r1TapJA5?Ai zY*Q4~F|?-GzipFtt;%#chtH1uBxLj(8lIuAmN<^vQ4{d;_-*y2HZVOXNc!C3)Ci$) zD=Ae;N7h4<`~}VMKoJWQ@DD8D-&UWJ|IL$6;AM$E@JQ>E{Bi3YXl1L}v+>whfJ!h% zwFH94n%opo{6#tS=u#EwDV^cJuj zZo{1Q8G<$ywe1~p+XI|?32LVLXBbUn2I}s2ahkF&DtXFHSDThz8v!x`%z zFIU-8{PTixrz)a^7o*J_Bfd7zzvo$b){r00wD~xJYl?uj9^#&2Jjp-qG{7EE@lRbW3 zrrre!nt4KNY&6HuYsmxBtFFwqob73D=j5kJCVk6y8hX$+YS?6u?)wNSODl8f)J1qY za!89V$2lYrwQUeWQ!DUZe(po;aHwh5g=7{cGX~X7cVbH6Bj1O{ZXLqDdF6$M`x!fXG-&vID$2c#^^4c^X4vU}socm1@Ebrt25}$=l zH>je5E{-_SXv;xbxlj`Acc1j&q?YBgzIri{h3~7Xao3@Y-J!z^YQps;xjE?U56M6a z@WFEa=;=oh$T9>ZM{9pSknokOcJSTvI-X|Xv9tiM6uJxn&TKj zAZao+d~*rkrWG$l86hQ7rvG*|?XGC)(dC@{4X3ZtTD;n2`OKri5=|!JrkRDd&4jjm z;RKw6e$x;wMl_15U+nl{T+60r^lM{f_{ZDuNn=>)0~^n!(@rfZIbJnF8_^dSvpE9p z@Fez+&|ivZ+Am>3xRW6&HOy(lzj^x@FBTJ1mn3{#TO;-u-R8kL z=NbDO2))iE9P^r-b@T%C**C(zbnwV1nn!zR%j4I?81fWyp%w(Cd?GZY61lLBF%)4ULBII+VFCFpoa6|LhJfI1pM>mO0f#3SO&qmq>6q>uG ze0ZC3THg>1f3(Uj%8#+di>$aT8_X!YGWONa{K*=V0>KNJfQ$pKEEVwuNR>G-99igo zOu6t#Midaw%gr!GVSMFQV}o~QWhAAKd*nO7POOC=Ok=6MvU^V)=j+oBQk;ZUdcvFZ zZ{sf((I5>tU&b|Je*zE@Q3(xq8SV3nQ4lXB*%f32^S3TYkK0Fuo~sxg85&|zeG*q& zX3yqd8oaBO9He1toy{ajbWy>p0~G@Xs+m%BemqCO6^9Lf!MN4pD92-t9__{zHcFJy zK{&e{a7XdTg53)4gCZJ0WLm?1Z+M}oRo6mxquIWchDiXJ@6p0x^xF~KI_T(AE})w@ z$jy8%T;Y0#d#p=MY`}^JDGD2O)MzaYif9wd%_E_TDG6I5^`9ES1(6nTC}-kyZ#+~? z-p2AkfmAtsr3#t>$9$!EQDU>%AvOyXM!%1WJAt=n_Xf+1=+!@@ zb&e;vH2m6qCOF{1Dwsz;Xs-A|g`eVDnJ+ZEbA8UXd_uZU^k8jKm6i;ptMT8yyBf9r z({t7DrFAo$GrIpgcdaG+gc5X#=zpfL?$^4rdxCZtUSuY6yd?$_P7-*Q*w0TKD>W2F zgGF*&<{YU?EP1jzZu;Ppc^{$cT+(glMmZap#R)Uc@OnGD6rG4zV2te$_7;hTs#lO< zqb?dH4pErWqh`2v&f$}K?!+zfWY*UDAYqVP3>k5oO0HqjSs37^FZBkzo=VF^>cs`9 z0Nn>lR?l?-Br~*uxA|YVk&@}W#mlNk?>H$Rc-EIse$&5;*~^(Ad-~rc0W~Q~2{H(2 zsVm0tsoma-4#KB-acPeKi3C%ZNd_U#8fT4U=s}G=Cy%;Op{>+Nm7% z{qI>?z0QJ{XAnRD`~ihb{qM!`o*M|RJImkzDPEdbc_>Gdj-niVku;s5LMLJrr&H-w zr;-WIJ2|QdDlMvFHK304n`+|^O^-(nn7!m@3vaRx_VFbtcIFr`vyx=Hb(x$0_S#b6 zgfX?K7k^Q=yt&A5BN7&avWLeZ3NeKiHU#VGL&BUzRRwI?hr>E@W^5?JD9~3OoG#7s9DTvYXG#{K0c zDcI7w*Z5%slT8*Iz}SXX)&V&!9!5q(F7kav16k)t`y(llJjayy2Sa+X(VEY_;5&&y zE`k-iV|Hh>^uL3vtP&!YRm&|pTTXz+^But#r3Uh`f406THcOGjr(aI2tIH$w<;y4p3G3i4Hu3P)|}syh?g{Nl+phQC*NS&^uO9B|Ok zYJ~Sj)xnC_kQF8(*g)Au*rY!gJ_13SYUA$L4Xlw*mxIaqZ#zl?&nMkUZedg*H%Y^Q zaZK<8cuwi-Mbaw#@5722(kYJLLEhS}wxX9p?l-HjbJ$ua< z@>ebC*I0L%yI$^=>H{(P&Y|Wmoh7h&)9_!d#n|a>!;y^|z^mavoI?*NUZqBklRp2+2nG*qoMNhT+Gh4cohyXHgg#VG>(I%W`ZOKV+oDxH|> z<_r0}=Z>a85*MYqfqiC+4sZQc#D+bIJFCddP%XX8%6oV#eLvv<98kSRnp*b^ zaPl6vc@-`&yG-3AR;x6%R72q1ct&?B@1=nTn{|YP8rUkL(g1&8=~M3^Kc#JT6*blE z<1ScB2!lrHUQG3Ed2KXi-bQH&iW{dPLa&Rx>cc9(Hd`D08x&y5dOUU;3Godgxj3sS zQ;5@f`T!MEKPGiav!e6()=%Iat`67e2H~(+KC?nX;Tt^D52xz;i&#%`xd(YR$CM^mUofR|dj$xsEN$yh08tJAi3shCDniN54%coh80DbfOuwNP!G5D~ zg1j}vth5DECB*Rklwrxb8OEUTKJWEvG)Lz3MP-MiIB6Gg0)=DiMQKRG|YbszveGqQ4T zdPAxLKzPr)@4Zw2NeTwt`z&HPPQw!aShXx_7NWMB!P<0gJE8<)siM&6nI=U>I| zuF9Wue8dq?+n6Rk(+))FLXP`=K?Bc??b;~e()}uMm9sCT(GKCzQl3bVyxb4TmGNrn z{zkCyaAydCc6w2>Px$J<>i^yOtV$-uvayg8#i*{FX|XQRZ49WwJJpocGuS4?5F5mC z!MeElkI40&>^67}G@!x%D|owJlN>W$Id}>W4t+<_wRCmqHtDIAABI!m>Ags&>6H4C z`@*L`C1!Z$MA>n9fVqaj#;VM8E;T_f%jR6VYrq>GA;Q3GktLA5sV+OdK2vY4wX4vR zQomG^^Yg2nc&@)12ds^b{*PzV4480Vw(zK+KRD!X)k;KIR;5#t_2Xe&l4 zSUwUow&dG59LkPq-JSk1h7`Q|QlW1?W$0@^D~ZsJL_XGD3GjYh__#mBtC`>B(#pBs z*t4+3dM#ST>D55^vUK2(erKS+gZ3FgIK0yBG7|oXdl^t=r`+!Lp%h4*|lyk93}Dc#a>^ z=)%U^&pQ;k=x#=2yWuuhwry3@`fFPGi#z>(gA+Yu1a!`maHrJT4GNcT&?}a19(@gN z%zIEd3jNUgR40Y3 z=^m)28?SMElEmbU0a1w3`EKxIj5S!54lFP!A%()fwE}6x^cU2^1tU92B7k}386viM z;gfs=yUOjok~bH3hrLvNP{C=Khj96}ll~}907v~aXcGSjb=Y0+i-KaKF4z|gsj&8_ z7rOR%B<6~X&IHOh#enwoO+d{1o$!$U<<6&`U=7s3KN}8yfLM(lUU0ovXKc(ex*j=C zTDUIi2BvZhD&pz^$_B&wu~XWf;^IQ6kI&JzNALuIvuo6*wIM@dk#xR}U?)qTL?|Vu zSMHxca6Mr-Z-=xXGxl?;dfYo%+%VbjCfz&^;qG{lL$ESbukx2IZlR3XEN{QAl0)oy z@Yz?>*UHqxtiGAud9w)OP1s=uES<=ZGB8;^gzZrVZLS}c*ZHSNYU<#IzZb4+!@9So zwom{#2=oZyU(;7pTgFBE5>LnK2V`t%<2DDLlADaTSaKKT%9TZ=)QpB&Onzo?(a)It z$pc^3<;9m!>F3(sdOJ{;%vmPb=|6$j0!{vaAcCZhUUBetBWXV4VaGQ!c;wMQ`QE|K z+jMaz=>eY`H%&-%g?~)vN9_)J_Jh+l((F0%StU*1_dA5@54;pzuI4`yqCOymj)A!- zk2MUOd#w00McA}S|I0mB~ODbAlM4dV>vaV=vdi6_BU78u7qbXl1 z^0MG=HQh5gWi&i^#mn~yC)P#yeAF$({;0X7n2k2kz|%?t{qlChLgE%RrGHA0{csFr zQDQYpXq_M--Au?E3=yAe$E(KQ*$srNWEtsqH?sSj$Erb+boZm`qwO!>joklJxy1d| zDBX@UPb$3YNTNGe{~Ai`Ug3ba*Xhx*-p3YX)Vxd1yzjSVVmr4-JuvqDs^UQ-#>>}I>FHeTaS^euUUQ?F%~ zz*E|@{G!JMJ=;r`#9EN@=A;=B!n|L$&&ZE`M_4yry6%%8^af2(2S{enHN{`H2ZT_x5*}v~hc@BRIqK@zj?s0@lF} zHWMNd{V42y!#D=6wF6N+3J(4CSa{0{Us-)ia(**46E!`}VxorCE;qPN=S%2*%7i0t zKi-Z^KHMX*y@IwEQ8BGyg|hu~ZLNauwdVvy1fRR;SfX=>NdoQ2n8k_IPjyTKz-z_c zTQm{XVpR2_3Fwm7OD8}(=dG9Q^Z<(8=4J>iwojRQUVlyQgS&bdfZ}+@JZ$YaK;2l z+{79#~DEN`YrhtWARQHqkf6O)kpfUrd&w1yT{Ih@q?LinXQ@p z3VOR--Q7gy zP+EPXF5pez4I_hGO<7WDO*oknE-c+B)Y(VrcERDByma7gpEUGSiPNydlpl9>+s;7& z@E?e+z_BY2)+?P~wbcRLi0bh(cRuPlLzp-s^!*VD7*OF0_U8VS6BuTKoAZMnC<Op83*Caemz+ z&lrU^_XYTB4$x_3;r127Jz!5I=H5<6>8%C{hipj9ft;6OVPIfbEFA)3dIoKKz1a|s z3ChS~@M!(%G-38<18UM7)TN!q-o9p{R#jKKu$*pI4{iUrMgH6fCyv>i;X@j`rHJJN zl1{eFK{uN%G+k$;aiI2=etaAX5`)DKVZqk)WDg2h$2g}{Hm_q6f6-#TQVmaaU9fvt zZ+?F4`8!(u!pck(1;K=MS-xg$5E!Jgah6>=X%f97G*|1;-Yl24cSJxb+jFuP?R9;> z@uVGg2~6I~i=!G1V`q))0~oCe6<2eydxsRPIc z$@o(ykY$MYLZ;nyIvNjo`Rpl05$P2-)n*AY^Q;WIpCv(58J1vi%mjJU%d(knLl zUHKY7FVTmUi1azI0|c`gG6*sgUCJ%C^IdQd5Cl7`gSQ+tL7vb)U5;2`Y2q(R%sB!DxRAH-a)u&|^7&x0Vi(b$E$^pfBN}SCQwox6Q@(N1)ZrumUU$;@dVH){3ZQ z$N)JZAUyk#BXBFSh^1DP{ls<>2EYs_K&q)yD?BpY&%b?`GG}Gv>3*hP)*m~qwFmhV zAXrx8L-929hlnSJvO(85f1es0)W?_)!6uc~f8-1NGCf?KT05tS1K#$8h-j>Y*Ky&M zuHcb0bGaIn>EzqYnHEIs%Nmk7FebxDn-T?mM}Irm~nYbGES+9Lh)jxnJfpaM< zJk~~oX;FOe@4;0|GX&ygvW%8%Kw38px~+Ush(3zbNWcC^ag}!35FZc^Yau6q1oVXk zrk>;@@4hjt$mb@&ZvH-!iNuBKk@5|(vS7_v-oE!Xo{@=@w%p~w{NkX|7TUZN(Hva^ zoIkJ~1-2zGu09_(=7`?Zx+p7_7v}CzW8plMWU=*ELJ>fh=FH_!E7Vv=mfeU{H2?M6 z4vQm9SUU5<+l+NNDld>@oPDnNl@JNoWTpw;!ICv z7WMvzG79RCUN2Q@J4gk|1f)l#5*ujj-PJRsg0mJ&|IebfY>A#|2Y6gMTy6+p3`6V+ zVT(9|&PF;*Gi&4u5O1}z$DuZh0JU5 z)-_&EK=SllZp5w6j*KAOC?&L9$ueWjRI6L_&p;2bYzYxjUle}9a-D{Ipf_j;KvHl#r-;EdXQatAHUnYeuBF~jVch=|8=;Hj-vT{098 zV|=E_(eGbiAB*-0e0EeC-g6in3wOmUj*&Sc~8#!4y$oO zFxxB;z5bQ>*3hq=m*TV)HYJ^jGZ4+q8fc>`lFbFZgRX# z!UcB5MDU@Zh?@|VEFo}Bt5_V0zL8z@A3=|#Mq7M6C^*dUTu}Z|Gq_Cnd@WLOugX%T zX}$Hb5R(K62l}#Z&LPUY=DaWa(MQ8Ob@CAz>&Aj;q2a?wQO7E-WE7jDVkg5wrCW+H z3B`>Qjt+j&+!__C3hSXgIG9GDs5F48st%rvonwIu^F`8R}k$I%#w;t zZ6Sr!4`H0gOPI5rDIN5;1naO1?(2#n{@7qqzj6gzv$ZtJ6P$uX>0EXGl*|&iUFz?| zChFccp7Fd42wzhk=R$=SRLEypK(cMJcwYBC6*NXa8p{IBi=OXVuu*`yA28gU0&wln z`bUI-U4GB%TfIN%j#k-Ji5WvNe69a4J>QVZjE-I98ms=SzDrVTc>bMjki#yHD$oKt z+aG@OVnS?&l$}Z+7KI8g?NV9J!iP^mtaW7_R0 zYP4PDXaT{fyzPAUF+K2HTnMhL`&TCwvc!C0D_ym&DKT^PV6iAW&iz)@Fg0vH&V~5q z#yWH9yopYFrQrUUe_9VO4*63oqQOHhclwy)lXCWVKB9DLp8Fm1_yOQyfBVs{#PngW zo)sxBWp68(!SwMD1Xfp@sb^lBD#4zK2T?V}?zGA26P`2_i=D?s&)ca)_yP`ZvI6z5 zjdOLhnS!YZQvg@L9O91q>eo~aFadq<1HEXJq$20n9x^$O-==gukj20cVKw$ks2sI9 zMqOfv4(#QQ?(?`E9UvHQ%JOO_lg#P#Ulu4*NlP} zA5O|xJ3$;O@zDhTF>Db6B8)ZWA3Rp+A+K>AlvxANm6 zl^H~_G@(EP3ROWmkswXt;otIS_06;TQ8ku?=y<2aMo1*Wd+g?zh~q$A@5c(xKEkN@ zOeHMknNlUF5(&|)=vC8wkM9=XPYqgb%4o?oScPEM6x&Y1AvVAO%7F_Dzfs6>PAyu7 z1sMCsm`N#x_J)75xCnt71#IgYxr_LF6t)qlRP@YP6_t^1@gjVs!Hr0aMt0*A{WB;| z24h=~Io&bCapUS;4$qj#Yruy=>gnp)E@1>4QkF)UPMhPK?4|aOh=!em5x!Im7mO8G zONKD^i18fm)`{b0@3|SHq-PK~;yW%S`ER}!Ts4^cWvzI>&8&s?G&C*bGZO7$CHy6rsu$?^ zAFtirOjCUISn62=n*^QY!n$e`@F0BQ%k!l52n3hh%*7RMKn4ut+l*?(ChDLxR<`ro z-;_U6V1N;o=Q9W6;;H#S#KgH%8|+YjYR4ChyMdT={?Y7&vWOxB+M!i zwK?oqzXNm&#g?D0B4M9*-fJ2MhGEd0W zwgI6jhK>n27H|5mqwSNBdK?87Aw4$DJ9^DFeM1Guv1+(O?joIQ3JBMkpkSq#ntPI^~)ncQLg0`j9UiVA#y-_p_t+CPhTSZ}i{ueo%)WO%0Ba(vK56Vc(dvZelwxlujinNe z%jk$Z%krxPcYVn}%=wQ(7n^qV9-QxE9vqLTSYI+}YGk{hq zi1%%&;H3Z+5O;G2{D@OMg)6;LHej@HFf;ERf^uswNM4geXm!>#cO`Y<>34T8q|o06 zI;pHPEiCm5(h+8CtuN*2u_FB6R1Btn1x5M|1jmkXI{}cUJ@EK_KO2gOzj{{w*2~AS zk$QEAWAnyZqu}UvJ6G1FQI;X4a;xHO+g+xkec$FgNV-o^KTDKX0osnl&)Kb#ygx9K z4)N^~v(>d_iOz&AX*ge=c@<`5Hq-eQ`T90rcXjpDVKk%=F8H22SlFVnI1^P%m{aY1 zer~fR-s{qKk7Z2~AaDbZodgQ|H08<&ytUa@J64(;nlLRJc$C+XOifQwsh2$G4|8dTM#smyG&MuPwt0`}0-RZnh|cVP~X}F^z`O?rLvkVMpdpQryUi zTr9l!+FoeE@OQ1W8n1#5ee*GLoSKdk0mvQwptK;NoE}+}@j1?#e`1%#Ni8HGz$Ma$ zk#$k5E4KJIVq_xEQsG)Lv|EPqR#N0Zwrt$5wEj@h9bv3(E+d6HbRcn${EHj56Dr~e z8ph+X{vBitl=yY)_%;4K(Ki%tG3#bX*>Q9I7^b>!XLNw{xz|**WYSA(Odh#XC@Mh& zlX$Hdgu9Ptyhj2M6+qwc?xnO3kR{J^nuTcmXNnFYS4=BFB_k@`3ajd%Z(cc5v=Q(X zOq8Bfq8V~rxa%iOhcS52ZezYKeh;`~Wh~fg*p7mYEEzc%X=r4@DA)*y7n3z~u0Y+V zoVNYFrTNNBs2DZh+6aZ9kP^9R9IrOHbD_M?K=IimCfm@KkordMa5v(D?Dej`_5H`j zYjrg~<(79ur36S`gGzd*!2VtRk|{i{zZUiozvht!4ch2lRsPWjGzUr0sbhR8NCeGz~NV?z|NZZ6_mRadW?$ z@RYshDH-~}2U5LwkIs(0W;xXx*(^ zUaPNYzzMp%j8P??;eSOHIJEQO_Kc!_V0>@JwV^Z38;?afkM7ODpH@6l9*qA?3GPN8 zEu_m^yC}&sVOCaDtP_9>K6T(EJ+koV+aGwRUtPRjd5EmAn6a4J4UV2&9FE}ID_pSo zG%tRDql|YGX_9J4GlA+xQOxQ*Yi&d0|JTlf#+X3+SS4H)RCJCK;i+O8PwOEGpq=-z zW$at#S709j!uyR#banCA-IY~ROL04U!t$~n;Xo=D0%^)?^?DyE%6FMT6P4JazCuGc z%cMO`7qr|-_lRuDE67d0gy%D<7878UQ%mtp-Y=W`e8x5G;N!=)&=NJ6UGvN;9SLfHtyi2=U6-B=YlWd-)QU)Rag^ z^1q?Leh3J(cuw=WrV+ds%Q~cb)kUcNDImW9U-N;Q?UHZ=-M7okWJz>`(`L0Bw;?41 zIf!^L#rKeW;~bDJ-9&ZtU^nn%*hwvJT;H`7Z#`BG-XM%~{JB(3-3w0Y0jj=sW}piH zi98FHHUEk8u#P^9f+E%T04^$#jvgZt>9LV{=TOO5gF$}yjsD9P=u8d0;h;@?VniUy~(y++auUE4#N#_mLAfL)nSqA!UjkG<~7rc;AcW4 z4?`Q8urEqyqCi|=^CaX0b!{ByJSlO4ycD=e!FNGuOYe--G$Uw$B%WVE_z*t6V|7nq zbv#3T=7BWzwP(|sYE*AjjZH}oZ+fxYlQ2z5&plGryj#H-5gJM&o)(6d#v0j1>e8rm z=rM=6Ws2*J!n^?e`ggVd%1MG4`KQ~f_W@>o0!HK9#vuA-*{~_*63Z*`!L^jbEowN~ zOjlUP$9WC;1JHpT^6XCMAihC?Xuw@0`GZQ3$)^|vno7KhRTw^j=?PBqY1pHW0sK+m z&}Ba}Y#(F!o=72-;Z@pJlQmu>@dSq~9$;#@k6dp$6c_qO_JmC2HCLiG*xnAm3f3ES zskxg~vHTB4gX*cUq`!S>`D1ZCh&xtVy6~3*Sv{~!nj1A_x!Uqoi!KV-`E0{nZm71L zwoh_)xPHK=4X*V+e3HQ1YBIRhdLy?J>SysBq^i*=BRo25xj}W-*+~M`h}E^#NBwm+2M+_rAYCzi-5i*!x4H$DtnJyO-{ui1imf0!k1WR=m0C zfFq1P5^OOy4*7Vjuo}7*cf>yPjk{z?-XOlnU>+2c$lJ5PmDo%ucwuYis7P3azVIjV z0<{N5=EP-qXNx23-|qS%S_oEY$gahSJ{I1+R#i%hGFi&%360Q1Ub+P9O(M#%f<1hE zkhZV&1AODoD`24V~p>j8z)pns>jK#_5^gA|GRq!2z5}UcfpPr6A#Rt_2?;ITI)$rLQl$6PVwHkmw+$J=o~kOqar8q*$F2vp0L zs$=|uU7UKG1)20YB2TkX$X-8}HN38mT?`Ao zN;!$oRk=f~KMbOn&a9YARGs$@t_uoSXMxg~qI`;V{LX=Dw)WJMiA;SF2bo7Ps_&(% zY4}{MAT9>3R<0p1rANuq#>gRD7HwRIEDZ9@%HAN^BB~ID)>J*-HdvJdCL)nKq9I;iA!33dh3LWxyqGZ2za z_6ZEgrurJ2dM2Ad)B+RC7?rLQ(>wLZeL8YIYVl&4j8@t>0V-jNuh_$%zyuHN#AbmurQ$h)fYP2_18 zh@b%}i~hxkWmHgC(C_@KmhNpM?Rl?dQ9o^nLxUIUMoCh3TOZ8?DUicjO^8`dxGb@A z)CZZ|rm;*yg-TJtI-j+sGg_Kq?SqQIKCIF#4h|^>#$k)tIIW}$}GToRKHXPm0KfAUlAB8*k%}h5BQm`>LK)W z-FRS6z5kpCc1p1|0R%E^K?-^$qJ*-2n7PkcCeNO%Rtd6dYE$VQn3giZ!RTv?*fx!@ z@yO_{$hpNXLHaC@9avFl*pZ#+m?gC1X02UVHv@!euY}wK&I;wH3O}U)xn4RXV36Ia zjUsx-nMbbXBk+O=AK%)BTvU6HF*UKdx{+E9t)La0?XpV9&L2`s83t&aGtGs<-SCrh zMlvb44!4N@;d)tVIu>>w$18_J{*u96Q~8*gWM}k-*%%J%Sw|Npi-&|^r!?y5ADvx_ z*hbKvkmznPG!oDL0G>!*k6Q4CEj@FrQ3@WKlMqXuWBNhy7Mtq?XQu~PE_CU~{a65a zDN4uOiT=AZp9qu)#VOkdp$H@Mu@{&_R?R|c;9X8^u-v{U$-;yWUH=y>eokI#h418W zDX#3yYi>p+v`w0T0gxdY96l}=wrLLvp#;w2kA}%=U6D_o}o1vImCA(1`ZJkzu` zm(F>oC`A23dQk`*i!=cK1}6nTIM^p6xh+`r6^T2^J92dBCr@#g)T4rDpkw)Lcm5FCMkuMe!z5Ne z?!84P%4asiGPt=(JYX?%8k?Va5(JAReBnka6tb*#6bta)+!Bo@;ohh-(V5cn@6=w9 zarz2Wpe(0NwM1P2Rt30=cZ`9t34@0v0>(eC{=V1|? zJJ%4Wc%=g&r>$kq$^iwxLy2l03g**H6^g8N(6}Y1@^V1ytRH$`1;xu*X{kGE{F|RoV#HJIg%lhla$cjV|aN-5!TN;vc*Umd;I2kuDfcO%sb%c%>3}DF<&S>)@zG2c?GS^4r?p;Pa z_dc+Zr=kvXxf*u=XiFFw|BLyUM16E*UEdUAGWn}$meNEjmHpC^2=06)-?6(3)M46k)_yd5u-xnF zPb2~TiaLq(Gk$cF81;egTa=-OuAkv-7mtaH;}AC=0g2CbPV18l#HoFuST!0a>5=3# zk?YXXp}IWU8w)0dxERRmvroD%8Ccg>r;KBwSAIBPWT*&%_q;~qAyDB69_9AweWdvu zaOR^~SO-r|7Zn?d7TH$q0fKaaya5Q}t<5yy4*Il&`gT%bvNO`jpY4xK20FFAxR8gS ze@@_Jb)+J9KxP8aK?+81O6^Rg{L!}W4cxj-FPMGc>9Xlxt9489@I$1^uTKeVj9?}8 z*Y^Dmvf?mv35aFqGa6|<&q0)NV@nE^_G*cN;07dn4!LD;5Tnje-?SW9c-+>VO!Sno zh_CFl23r?SjfY~-D!1XTGz{Jwwtq%yZZZT(axLd}N49dlmPtJ{U!kXd2q$8>9k^M_%oV{ChaZ9QQ-|Re^MNt1(+#m^qjd>YaSkHgZ+LR zU9Y(jZDFIzPjVf7ra=WRIW2;ux~%-sBCB?St`?5Sk&WGfbR=*z+ocw5HtwnQ{x9M6 zFDWKM=2FrleW?=e$#-5}itil%V=+q=_kXj`iN%Yhz~ zJ#filu{ZgW281;QfZ|#(wNyFxx(oT#OnoJ~6Yi9mM5r+S*yiTZ1^Z|z8YQ|&>I~U7 zMpsp@Kf@siJsi9TF7_DUX+4c`$uC z)xQ_gi%~7(F;Q$!t5P8LuG@w-+Hpve&OcOPRN9+5)gKoE*6dp{5?enH-%Vy$^=@DO zcn&55a2-5D_a&BCS1hMGBji&3k(*aKl|DpI9(u@q-lY(DB?aL4-x$0JT=)%sktfnO zka%~zEqteFmtjUfD%D%~CY7%+pvs0_%%s8VB0h&fhG}z)l|ud%?@)f+@UA0*O@0=2 zYbVHJ{mZnJZpQ)=lG?7(w3^P!Uv@1@4X2JMcN*3S7v)zNcFIlClYY;`L4Vk7mBDT` zoS5DiK;X@`o|N{yh&nMa@gHgA>nP^`gRl7X{x7v1&}aJpt=j)C^yp(q{!(~uquh=lNR8*=tGdg>4E5{Tf#7wNx_rE| z)&9x&(Z)m)a$6UM%m&?j=lh*88Fk@VV;Dy5xtB=BlA;D<{QQEX|Fp~IlSe_?YnR!T z4M-x@869kQH~}uz10J4%>6XhyEJ#^I;Ga@9s*hIhpClNDo0>e)6jx5cjcrF*f=}ec z8C#}43Zllh_i=b+xg{?zPkZ%-M^~|9dAZmIKEU zGCbE5`VkgEp)FM8`KR|4RsNSd8ecbu1Q7_@0)N(cD0Hbq_`f~?@;0n^Q$s-bU!OPD zXdiXjqwWBj2kt7k3B@4qKzu_`b*~v0k0PibRI7m>#1(dN(%F0_eaCr-4lp5p=~M2X z%s(Gy9sH?$=>$M`joDn~1b>&T?NLlp+q0F;ssv%_nHPQjjbXiF5L;KsFcV_ZH?M%9 zBvmHG76GUT0Sot) zq<+;<0&9wzsE!P^IA~rbP@dESYUGOh4W(rzBo(6}cwgzJo zVBZ)T{lvj5RfkI7@KS_KjNtlJLw>`Ifr_c#M3*k8DEMJEiTL~?8gDhtr*{Y5T9dD6 zxHhdSdOpshuC?foq31SY&i^AyvRbaz6(%3PVem9CKa6a%dRX^SagHh3HK0`I&60phw8Y4iA{zt4a|rR`k9+(+h$ZH`8gWY91i~+Oq{p_)db-9 z=7HF}-1%wv;Ary{Fs50PfHuV;YJNu~McaQm5syT+fS)vb%Si@Yk7kyI5miXm$`2G< zE+!1Oci1ctj>TYq-zSLNRMKKbhRK5^LT9F6mHHClc3byH~({v0oxod)6R@{RV5z+lN z^!}!5$sEQ1DAs#>lJ+ldv6u>zd+iS@EL3V0+i1;G`Xt`Cw1zmmSBv{DUb20HnRO?g z-~_d7OVAQE#;>qz<%HSGVR7K7QinkgWq#H+JPP=Ap0?>fflCTspk-Ym*P_lv*-u~g z%ff>okd!1g$emW-F@CD1q2?Lt+$VSzsq>_p_06$=or}aNM%q5wGPcA51|g!!(L&dQ zhR0ikGZL4Z*^YptLVl9Ze%fR?_Q2KsY%7Ok_DdI(=?;;n!l_t;q*-mk5PO!wa{JA_ zRLk0P`AV`(q(_6qvEP>kc+J627^j&keV(#V_Etneo+Uy$^izoI*J@GLNwL#eK;BeH zHoe$B!OhmjMtqqdT#;Y*87{Poe~if(M(3bXU>HAOBfvbMxuG!0C?k0oMVlPX_j&Y? z=h0$~QY#B<h9836!dKUQwP<#jJ6kk`5a??@G&^c@yPDbbsJN?ITfJ~3O;BZ zKb;4G;*1`@SLkw8xeIWf4HLcMJQ4cB{Z_ovLpa zEVYb-*k7slp{Nm6o3>-@Qx-+4B#7qMvR|usHkiCFEc7bdiBPiP>)|86CK>@mp@4Q% zx8U83A+qVpqdii2xZ6g`7}5RJ8u78d2~(|TTAUg7`!lp@ZZVxoW6UABoB*LwDxocB zhzy0R2CP0m(gaEFp^ULub@J^d0JB?uY*ViM0z>Of>RGN`=&XKgs*L)V^^}`;)XW~U z+79&8A^~V418*gN+WlbBHAYg5R}dBxDw<7%g-oyOa@u0vV;>5my9_Elyf2YVVkqEH zdrBnJ=JeF|{@X_rZFlp2-8WuxwtTYJ;8+YyoZGkW)>TXSIIo?!pWs6rYHXKa+)?tj z_e#3W(M2&JWNl`l6FevcmICgD7F74Lzb{qMuR>5DkWHJA)~w)&Jfcateh#?O4||dAzx5n zCOXRG{lURq-k3MILoTf*yTD7&te)B%Ha%qYlOro z^vZ+vjz>0_JdxC=D|_QGOEO!3v-;}kF4FG9|AJrD!a!K695Ne!zzD~GjP&f86k>3d z#;Oh^|3u3eTY*8Wtg4X);!t}hVgxYOl%%TLI_nGm0T?x(Q0@;_NLE(4$VS3oUhAbs zZ&lUaUr+@&T0PybZ{yfZr$So)X~w3A*2i1+Br#tl4+iF4?rt+G^6i?2e& zh&f2QVnU6@vyM?R40%XyAE)_?+@o(gvvRWe=no;D9H&gd!{K>JOV;(kAcJV8eGGc@ zi#e=ExC7J0OqjAKIn$~#>j`gO38@nQAM%XxA!k;f z_e?7IKz=0GoU;K5LY&$8GTQ2jTpF)$E;pZ?oGXK3mqogxN}MW-8=z z3&(E&|7jZ>wvc=6MdOp5o?UOvxP@krn07!@c?pDZ+s`B!8LO$qgINS5w(PDy31fz?cVM=2#Xs+M;2b zV`pk4XBpeSY@(C9oz@b5@Q$Tnw5tnFmZjTg1jPUdBHmXBR(9sC{(i{@UFNYbAAh%m z8#ND$%oP%Gqv!q_fv7b0`M?DwnOC0-Xq{K-WzG~^`uy-M@8rO^AYhe_+LTL}mzE|U zZK!c!d~I1>DUMp6^5)ss$PsNl;z%#uF{2t`YDYSYf$D7Iz4W~H9G<*S=R);`gWGqI zD4`nQe>)&*bd=rPEN^fK<^cxjh(}hD3&)_kIDnk~*xuNiOP#I^OnPh#Qn}l?2MSq? zb>>y4yj;q3u?@yBNezZ?%9iTpxNKO|Ccvnj&$)uk4z^^UqEem~X zhyd}yk!@j|Ltn6X**0xli9Oaxc*>75bDcZ@M1v>~4)Gjv;QW3lqSHs~Z;eI+upJ2d z?~5j_$-^+&@njewIowy&$tm>AhTy!!H|!1cN6#5s%_{58MzD6%H8*}JbQBC2wbM)4)KbDqoQeaOSGVzE-bQueBL1lkk8PF^FfUr%VA%1AFs%9kH=57;t6nNo zLqnnwKX%uMH=Xc}9@1SpRz{Ok`uuFlp84Z{Iw3sabg!gEK;05`FijLlPm*}zjxr5y zvc$>bcil5mPwsV>tTUPaZk-WAOBk@7HByy_Hz@Kuc?a%g{Fx?y^`1hZfl&|1gi97j zL!)g0;xmAydW2k+6V#c22vKQLJ4%irUL*&X&{er9fWS|1cD#(H=bWQkPYFuABodK1 zCLOlu3p@2Y-d;lclL#%PxdG=hGz(53)Egxn$(?)RWYTsTA|3mw7D7W(k@=5!7cjy3 z;@!Jh>%8Vcc%#Wo_>Fkwt6j#w9kPjO z%_obTk~@GS#9O7+p<*Ia;F2$s-D>Bjsp2@xY22W&uya=k%ygN2scu!C2FAed2}{ zL+4d%TgC=V+NcGz+-?!RKevX@-GG))Ms9BJT996Pg;@HI;so-TDYK7 zlxu(BRzDiq(+#O6k5M>sA;NQFhe7zKpAYUB`xS84?w!H!p5;*_<6pU!B^y?{UNA=~ z{K+!dMn_dk;R}_(^__S&Q8BK85cy7L={Nteec4ahOtYC$3_NC~ZAp&w>tDK6y=lOr zV}<}|9t7z4c|(}dXdFq9nP_JjGdldY%n$O5*^AIGM?_RkG{Fy862=-|pQ_WJCt)77 z{9LY;+2IkMck=`~QH$ecS-LYi`MH5*>-v&gg0<93(a7csI8)V-}uUy0ZfDa@}yhcCy-g zQdhMB(0E(`Y#8guabFh-|NXU1i+RSeym(lKyhTS(Hv1w=D=WaX~I+Bs3{oZt-`AIkecLSHkwU$SY z;}rOt>5xR8=MCcs_`@~UBQ67*6AbxW1ph+H$jfLt!R?_3r~(S9@E;ISj)5iSDI~CE zN2$1=Q#^<%>`1Hi@ZRn*H3FACn-&%iuf+Jk$vpKfnkb?U>B8}GPek}gedv1SqemP! znEFu#w7rd0q~cC^6=)anpoc*!(^n*)7mS}kjcsa-=;4CWLYSk2dLI|QFd|wNiO41J zi_$Vw@CzVHblh=Dt0mXdBptVO|2pl6UB+V))Ir^zyP*ftEhTUfA_zFEH8EMg<~YgI z++eEW&h_9%7ItFlnfqQW18PCzX%$5=h62MC35KRFXG(k6`&Sr4y37G8fqc?f&LeZ4 z5byx9O0|FfV<>OP7)<>XEceb9 zya@UeLhl0AKbkDIy%a|(gU#SKd9hX0I0`Gdm|&YIyf7EEPr4_Q%~Hk$5ZE(p)yXz5 z+707y;5!+5$1YeS%(Piov~p=w>5?%@9EoMBt8MWhU^WK2(VO;M33l1 z-QaM?Ig4=z0%8wga!xwrN@nR6NwPB#%1mJN=?aWLD#z4IcYg%2-I!DWvShSe-iX`k zV$gYqu3oN#{)0)7)jb6Zq5M7uljKPp_WkKVi5~zIMs>#+#p>L-ld}7bL8aRXShS46Vqs;P>AQSA#&$KgW>n{< zZb{*4AIiV8q#4A+3hT8t*<(UQv49ShO=4&viN{R+izKG8GHkot-hWGyS~%m~hAH_L z#$5KaC-Ro+-V&xL_u2NIW5DB!S zz6yi8?_7+Dq{l(p1k2C6vJ3aS`=EQnz1-k>;YM2$ZGLS=N4>JcUB!1N&~9TCx(nvO zzvP0u#4A^ta>y_u~jj9!id{ z6DBKzr;2ITG&2jSZ?+mzenLZnD5^7_0&*BXPK*LLk^--mhkX&$F^`Mpu#Y`I8vU>A zD-1;qSqOl?H9gpNdQ8=8Nkd$(&T7r=j4*N%2yQea6rzxXn8=B-}?=5Psk%IF$VI7US$0X9OxQh z58Hpjs;tH79jgnW_7P)tDhf3(IX%SPfQqKciht&UAH^r@jaTL%KRFwNC4kl6gen$8 zA#jd~1kXFqCAF=_$p_=}Q=Rh4jru3Uc%WLv%D9pkb-ZUR{SXT^3D;P@jQ+jaT5r1E zq4=BS>|^Oq^mm1%hxFHQFjFc4Cb?GeLN%iClfWLC zxM4$fd0ZgZbb(Vz@IX=7uv0L9`^joqsfg>!w9h{z#B+&->bbFBYj4AZKoo#}Ut13e zZX+m`2oG9+qe)Oe{uDeV{;cG_tS%#Xeo+1}AnTaPE|$iDVJ+fxub}?Z!vs>^5+Z z;s|d^>@hW)t)3Y3HIpFv2cwTKj@Q0%?iX$;k z<5nRRVNNl|3Q(_PB*+i=%5PeuwJ^7D4Vfu2NJ;BKha~lD>X%DSH$t=+lEa}s?O+55 zC>BEc$6z)h@8Q(n3SS#ZosNH3?qjpJh{i-wK?s}>K}WXUhREn|e+5d$wVeIUi#0$d znNW`TNFBbaU5Or3xktPNCmr&v!?{MzEqphT?}Ep~jOwSiQSRI5kDb$DWs{+M`)jhT zNVJr%m!|(Kzon{D$ccHxye^At+fhvv5r1dCKY67fDQGxF_`pyRPTUF1f~D8%x{Q!Q z1#=~4CMt}f^4vc!P=I}Tl}s?Q|55#9Dw)1M@EbqE9*ME8Exy$Rw1CIb?mzpU6rk&RrYsD+<)c?@?$qjFB|r0n2o zCb^q9rTlhLJ-EZK-g#RVQg0UsG}kFvo*wt%Z}w)hy)pHFjl2Vtk^KSl4t&4N zd0n@L$@dDlB;!Ewjf@IjGCiLq_RRNnN)x|QL-9FeMlCmD4Cy(@CMY!#aHWWZUIax5 z>FCxEn+ZgS{?^A7-XtBl#Rk23l2b2}%*&saSQ0dbrKwv6MGKCT)r_u!^DLGQ8}J@V zxWkTaaJFDY8Wzk>8|chHu3H{x)!vvp{tN9arzz*Ei~@Ee74&6__6-+1OpiL8WZS0J zo2&hLsAR=wGlZd2rlOIn=Z|x18&2@^fq%raUbM&c1`P|yBpTg_TkkX|V;%vnUBPaVHC^p{L6C+NvWK&dSK4)m3M*1>6>sh9(|%@=m_??LE# z2j$aP?^hoKF>@?hs|E%b4OJg=EU{6v2d{0)K3WEG99;N<`f7=hw!f$k>6X6?Vdr`< zIgOz?BAX0ZTBBu>Hhp=OA=xB5b~!igd2|?wIaZNXczmV~#kh#_t?K`L7%4g!U*X!l z(Pe6!q%tN!D?Z}ri3mq$X%dg5?Z{1J>LGOXu#D91JfF1~i!m%#LaidZ3 zQTuTR-%_|>xM6E&Gb6Z=JXtysKeBcj|A9V0R|9+zV;ifTuT{v4cCm*DI)-@rhNq-|39*#9hWwIx7a# z#EmM3N>#m=nfn}jXgBPR6>y<^zax#H`(xGlF);FS{9B}cDbb2{poqkQ5kt7fi69pk z2QEHZbMc?&ieZch9aewW2K2~)xHgbH=O^U>@)Q&r#h!iQBm(E#VRnh~EpK6jpy_3d z^#oN5&Tr?SP>^}TiM6j(0mQJfsZkUb1vF0eT5Du`=&-VPULn%Ee8e59jei!xE-zgS z2z4iceG3PdWz%v7|Lk;ZoGK@E%LkreqIXd4acZMLk8ccUc-Wv4i3bWLp*mTq)~fsIO*=I zS5j|=2IW(p^r_UDW7HwnduaB}r!70tVQr>>4y>5G*-o;_m!KFxy1+V0Ay``0V%v^J znTlb@SWooJQ3<1$h7BIwcI$->R3z1)zX6`$=)yk7uH1xaFJwZ$zw{Sn3#gNuH zxHQxxIUM#`#;ca`>(n0$a`t-z9;d$}gCis5y4%H7{>k6_ZHPWq;gBOC{(!6$>+3N(7`Vg)Vu><-!S z8k5Gb9`ep8XYooXt*xr#mv{b5xp#)hi-sI|`J<9M5$;HClK_l&iQ`B|Z0UeGP1^`T zM>PWg7(^_zoT6T?7@;DQ3K{)Jby_}fyyOtxRJA`;H!N9N@J$}aSsAmghGX%HY^)zV zdAVUCAmWpZg9{IpgOEpS@-=}xI7j0KAYkGUG>yFb_MrN>VKy+bZ-8GjlwXfeviPmz z5?^@rY+O!Jg3IfBpTjqeu%U8X8YJDura+Jct5Z~oAM*Dr10bd5ndSG#!J9`7$*fp? znR+QA@m6Q%D|lm&?#*rGPYf^^%i15|_ev65H{UEcto`;3PFFo}4u4@{%Xv&MYi0+? zX0j>B+HM+=FT{qRu4JcL`wo4^FrGL|?O~qvU@QVCrAHa+)D8P()QMaa+IWAc@X;Kx z!)*V(g_948BEtSBorl~FH#zGgJWd`{*l-5ncOyPg!vgW^6|u&VGstnvfzDQv7kQ8W zyj@wfOWT03l9HXo!$VI4le4%_{mtUd;ke|;w?t?C>w-Pcn8$@0nf^r*ibE@|SR8IC z$Q;t6`X}{9=m!z$%6rem3S5F$x8|2C)*$bZK0W6*b!n=&t51aSVhspW+$YKRxqzSshj*}3VeSK z=m0huueWKlo)la?_yYoVAD^+j!n@uBp`es6 z#d%!`TF|sk@;UMUSIMkZ%{)c13RMpKfh~|n3W*bopQfe>Dik(t8`vyFxpqRJ0QgTT zE9ui;fy?MV@v|tgzm@NnGwu)S#y&kID?@WwQPStDPxdETYB@yPGblC5LX*`~T@m^1 zoE4RW2AA!DHqmOnlxwOmk-{0=Pk6O(PsyDVGxV>?6+FKc_^0^!ZgUPV3?XsU&|WXK zp5ejvn%+9IDB&Oy{&^4tOEIIIjt$)lW*c< zOx`K@ zsJcf=YsLT3{+xUa<-%pj3g|T3jN~hqpP4|xa7@jX+{1BTqO`zpcO(cJLIh)po^vp{ zAuueq-6Wzm3B1qr!Vrt{MgwwdVjUsu6At-xAwDAG!bEV{YZQCw zgYj_is4PIV*svaJUJI@E6IEq#>8?Q>C+}!y@BVo}Ewg6Ig$iJ*sE$DE$QG#B8q*3F z)X4VQ;lu-rAQDO^*ZZY8YsmTTAJOczXj7Rq@5M>vV8oTewVL!0Yml+XE=PYqFC*rl zigdP1EIaG^E+kQ(@XKn&9ykWD$YHpL+t%*|Hv4A@Ez6<7dxTC*baXs4L{X@|igs@T ziC<19RH=htw1-+hI*MQ>Wf__XH8w0U-la*>RG4{**+_jR~DvMmI zCt+Ep7J%HOYREf-AKR`VwBcO1OcFkEMK?dS_t~Tqu;qY|O!;;2E@uRmND8ImunIuF z`J_KnvpIbihg4zjXqUvtub@c3kt$0mAUI=a#i}yw>`)Lhn{txaK`q`GEk@XK!CZ5W zr_jnCmabxjO-ApEzEIikAnoT#LsA+Bo^?Rq?!Yb!iQNOiW_)DEH)g~g)ge>-Ghen0 ztm1hYnMLr%p~3hu5|$Iw>L=&A#?D&G)ZmH*M-fNj9YRk~QW1KraMAhta9$_>;>l5J*cQJjJe((in>p_xfZ$BXt^S4v z=@2?oP8t>Wm0$6BPJBv?ZEzWS(i7wlez03GA_fGvJe_-g1K{%(Pz~6Ty2Cj!WTMrj zMuo43#o#oTQqSo!HIuS@#q~ctxvAE2$wDKVAg{&{} zHry;uSXnwZsVT<>mzga@ixwBR&4R7jHxWn$ ztUx;Ywm?1M`kB~WHa_1Cp!Q-mRRkG{nNBb)t9BfT?lm|q;m&Kd_|25Yt@>5h3fn#5 zODQGqtS4_wXb(H+_CuOmUPuV^8hUPmO{7|`-{hZRgPyjgS-#PfyhJsJLX=Ce&;`}9 zcJ1@R+-jXU>+YnXW(|vhqG24sPjZcsanU)ZjMl{qnthb8ilK%T&Ll|15o0+x3B*|G zhP6Kv&kfCrYLpiSMA-&+#HZ7YjPy#q{w>_NYn8-oXB?XAt;PIA=c7ImRTD z4^GW3&+XvvLrNStQiO5M1s!uKQpN3z*)(=;exfdID?>x3AfRbF9_cJmN6L#wcp{R{ z&MhLPL=I`m`F9I_O|bxTu{;>nPF>c*#762A|6ynE7XC#147y5NO@s1-a*a zi)N(BwXF#v+Vsn400HBH&ia1n5g=4xB^d@BiuX^Q( zOvWYD0>(Q_8Ow_l<|lj!)zv2@uQC&<s4_N} z@pui5@?r2E8GcxkcYiV%a~Nh~&ooBM?d36N3`i`*EJ7!?83q1P`)d;!NVJNK_tStb zIdu`%6@&K0P{CS4uo#pqR)>yWbKTz3;r>Vl1K!_*TM0rz*pe|h;taH4?BAg8gr-(j zoCS8$1qp+8#jg!msVw9Uy%W(JYp&~Q&Qu6dfl;La#3G*oPYxkzPV6wEj!!w@R zm#2<<2qt;60w-3Ty%JN|X{A$8SuFrp9MU5v@izVMol|(~KQORuK0U3}d;&GJLbNud zjpHMQ9{4h~80&xpupuUC>D{g>x;FnBZa&1qWZf?UZO~06Yg%U}WPmkX38(^!i~%>& z_=pd5*}+&iLOX=ElRuq^O+J85Vm>dGL5%eTjax%eEa7bniEP^37cge2QVUVZ`9lD@ zviCGeh@QS+7Fsq{vvmWt?ZIdS5eihVc6U8q0zc(jcoM@5D1pe54g)C9Y&bXdhZE%4 z8r9tAfip2{pvK71bH|pE_xjiZeNXr{V>i}b!nKZ}_upSsaxlft?ASVs(q5)}dk+^! zC!b7FazCe}?_A8pu^?*bp7C`V!DqEsa0u^FOdqMH_t8{E98S7&>lBjvuZQ*D?bAYe zKzoo~nwZGE>U2tzY#(2P@-&exZ5(j|&D~~T#$JHC^w7Ama96c<3;`=Fl#Rg|VUF6M zx0RHX%K^Z2`cJ-~@ffc*y5*@8t<8i3eD3GQ{6>^{fi&s!^&6%p&^b*s2W)8lB2s7j zyd6UnA^-8ScM1EMnECwVKzICDR^^;CHyb1n&Z+2EvlNI>Dv@lh3a8GAY^K@>D9mmQ zTI*DP^K6EUeqdLlx(H#^=a33SHs?kZHJs={ao0&V1On^5L$WS zbuM99vs~-eNe^ur!&ZZ^N6n0hOHMEu4D0wHaJJH&ORg`gyco>MiIxXv*KAEw^vs|7Oco$>Rp~mi$Z?O3E zPz+~wr-~T!2If9BUwz?BfYHA>Uv`HVI+GhZ5a;W<9M;_6d%sa`E$db)wa{|YmQVv* zJ=M_A!=;)ZD7ij&P*E};k7bm+ybOFK=~ zS76?y_qmuXNOZ~@L2Cej3|X1vmKIA8u@=;AdQfb>?o-`beJz*OQ|W`&tq;xzkg{Z` ztEFp1pwQkYp!60--KRCkIJP>sQ_r-2Tt;i!51Fa$I-cFGmPKFFl%p7_Q^ecJhjyd; zsOFG-)}JS{0VVg3Psyk^2&;dUg9w+e9`G%l*GtH*++mXg>Fm%$zk0?Tat|0^=e$udY0bZyw+ak3NRB-`HHu>i6CyOE*hqec z3bwqPNDJRivV2MRqSW#Pw(dKa9MKwjhQ%gUx}1M3UCxX9GWlSXoAO~aKCeF=3dUxw zY8H%D$jU)JWO2|eUy8OkLoXje%{J*TQI(GVB8R=pAosa)4-0M?p6{z8$jzOvrl8XF z2JO1~r5}1{13s9EaMG1c|KA%WLxa^J@_|IwyQTIk&jW_S| zjV^W3XI?O=Wzv#X&Ri1kR!LDg(M=Qm_k+^}3)RwyG{sSpVctnaR0>}M zK=c1%G+42#!U>??0+1^vFmJD>`G6dq=itqQ3oA&9Sb1FY)3bKnelUk_n zVu~14aCdjs)?cYYy!$}icEqa~LGm80_A3`iv{m#`ZWDXURDaY9fEAv0U7|P>y=?Zj zos&Cid`j((J()-~5P2)`h40L$V!RFY1SrHV{AgOB-J&w{sbWkT?81zZ_3UXwSr$>4 zKbqij^0dvhB&IYCgSCRQxKBL~P%pmKJoI#)#bCN}<~K&buFhI^$pj5~wgmQ=93KJO zM^R~LTuFx8~50dkPo4eum3he-Lc>81Foyx5!a2}F=!f~;@epbxAGdz zc+)D{V>4-4plk+CZrT8!MwujSYb(rdK{An-Scfsi3U@qmuu}Xaa7#jGopP=yO%KL$ z3y^+vs^=QzhjaU6<<1Q{JGZ`v9Ohbn`Hq@`n;mNLLJs)r9iC%J{qp!2@{@gX;-WLQ zQr8)E1@z&X_rD0VRZDpj;j}gkd(FE3OiMD{e#S9R*KXFHd&NRhUFM5|4@`LG>`6Vu zIO0B3+}N1!Q?)a>zUL|SO_dD35sui^?x+8^lfUo5e{Hb4$X@RU88uxy8}uT#Qtz3- z`gr6qRi57eP%yMF;*T@3$Dn7qHU+YG3OHZq=mVb`o5riHjXHGYfXsD zZ#m)N2^S-n$rAY{aCD+I_;J2!MWCbAf zC#fU znnzyV8LJQ3im!#1n}epq?iTa~5)jH3lpXSgNSY@ZQ?e$$OR_NgH$)@yRVm|-SN1Z* zVsHS!|MFQtams?`1jBLsk$w%D670txaN7h1*Cwj{xsF+#OzOcqJE5M3BM~8Yd9eOP z*Vj9e!8|GHciOcYA1&#FlbK>yyS?MBI9@xj^+(s>QG7_Fg={(C-K`aMN|F>JIJaB% zdd88FFrDNble}+QvP!VP!V6G*?iQ!0lNPFNT1UBr+kuOZ&EHG?r(+`2I?p@ zOx@FUk(pEsOr5^nCRN`E+(zkNK`e^)ueZLbWaTOQf+wxx=34*b5tHL}492P7mcZ@) zZrOrQ&@gJtL(2`6a{VoHc6$1Tz2m%S%Xv&=^zIR2gGWl9T@XOcpasOEym7ew(*h%L zo>acTP0H$~ds$qWJf#A?Oee=nlG;Mf_!%j7#QrwU$z7UqNO6r`*1E>pL)3nmQ z!fpSd^-YqJi4NTbiz!hEwB@k{PM~y}&qjv7X6aQ|(Xh3Pe&dmITer_>-A30ajs_1p z7YE97Fo7oJ;pVM`Jk@PH7DAN0 zlZ^XhPht;f2IH2qwAI%HJHk2Nab9{S#+-lWwGS_bPi3Sn7E>8{H2~$sN2?DcVqV+A zDQ|WF;)KY(!o7sBT67ITrzz-^;%IphCYCvdNz@}ZD997e(7k-8HParI!9C_5V464D zsP#guczI}Ckm4bF22KNl0U3OJa%QT^@{ggrOfK(wr0M+2W_7kWj@q&Ry29O&)BPZu z`3MOkFwBUYpnJ<03${D)f8ngZKj#1X@>Zy>)@Za*zC_JETW^jx9VIh4 zaIFEl9;M!@#We~+n~zXbL^1$yY)n?6Hq8&^L0*v>=zFJ{*92`qvH67UQxdwfh!DMm z`%4Z}S1_?|cwba%n`J6v6f|#iGkhY{78f7#V)aKOWH04reirbg@2YZBW0vJU{lFfq zgI~ItHqytcr+*=^u*^Shu#73kp|yzxp*ZhQ^1m3EntSN->`W|Mj}GQ{Q;z@O*bc34 zsG-DF{3*jq*NG~pa?V|ZsL#JQiehshPyu={)aH`mNX*w<~>TPgal*eTA4pn)3GE{2!Ny2r%$rNyw0=V>{v4t$iIig*HQ*-0pivnd`qhl#u}J^obZL_KK@n_VUXPIZ&4NX& z*ea-DP5QR@S9No#2#zaQSiotWb{-MyA3I=r294uJo=n<7M;~bL$r$qE;Bv9FmHgk? z6c(v2h>9iUJR6l?a%tGdS$VwwwJUZxI-jSpd!7$|9B-XV8wLZ2aM_o2(Paxat;9mj zcWAE}`M9-oP9sZ`X!`6k6mHGMA~EBsND*omuK_382sbYwZ!_V6$kCtVfHp!Zmg~sM zgn@Xm>KClag&ereG=w5dgge&6_|YVgYDcKL8HUclo=U5|YyhmS`f{M>ot@ZYA4DI2 z>($AF0k}O`W4F6!Y)o6j3Z!0lO3X7GoMWLm9{fb`YB%gNBI+$+0VOpf_j14gy#qSF z$)L+31ngltKsn&CWI8z^yK|)q_=&O04px1O=3g&P7(}buw^sk&65Meh*r`$vaB%{p z&3vBABMi6#S2YZF2-5wfK&rT=Uup>)oj0}O=;oI`1F)zERSf-;deRwvo)Ri`V*O)@ zZ9tP?{skOXFgh?Zdc90;El)AmB-C9o2~Yu(3pCle;n(A znKT$BXLRc#py&Sz8?x1bi&hvSArb<+BO;z`|A0xK7Z`lb0KqCf_`v>I-nV;BcUCuR zjD~>o8UN&yO5csTyU-mqFq(NVp;MmG`J!Z;n#s{$Jfj-hk*H;RYd;E21NPV$)% z<4wxa!r_QO|99VgmAJUxIMs<7K{DD|KPAT^L?PWe* zc~T^Lwfm>V2pNBcCi;K}6cHN86^bq89H7#tg?$hybLGp06sPnX4!3U8KYfGONTc zohtQ&h2~CYSBbue1!tXxmD1BDJSS&xX`M)AMqRb24b&+`Tt`Nb>t4Jxz)r@nPmg%U zBn(e5O^Y@^`8bv+nZS6Dd!+g(?XDK5k3oEVLO88`VREs?9CQ`3=hCWDs9n-3vUrc3 zp|KID+#j~M(SLroJC*^u&^Nsaly-WeGFz46%Rglz8S|Vrog@Y1nzCXzwYu8#Z>+7L5WZ4 ziiY70{`~a8Hk91nTyT1q#}ZuN(P0L8YoF5(kGWGhC$Ru}qr$?U<7WHdvZQ&3FR(X$ zTvEl8b`KfeEvEMT11Vsbs+(pnF3%|$?VvxzEDVw3?Mzri7`43>X5MtfQRd^v2K?2q z@RLkbO_k;7QDdpOZr7gq2Y2Q0T|&I0-~dQ-5lW!}4Ii}xD8;IpOO7iKyUh=YpO&jM zIC7+nXV45DRsZo0`KT-4(1tSC#cO<8<5_}-1ty4~r7Y{h1MY!OJBVH_DJA*xQM1P0 zyfyqX*pQkrY4qVrp(54OH&f9I@{9m72~ISsyCfkkhqiv+gPJK@D$LgVayB&l((O7a zxkuZA>AAOz@<&P^KhEOERijpwuZ)Ls5B=l#o^sit7)N{0q{Qf~7vZ9V482cSj)`SG zFsgauA?}beGBT&U$2wf$SVVF1BnR?809x%7FQ)P0p>V!b5h*p#&%8R~YQ$DV3KNzn zOK8pX!yXo^Y|97Z%#2%0br9XbplFM8dksbD%<9LaM$_gnzP&vSHb(;(;VLmr6g3%jSsBXo$+a)2qEJyzpfWbOWzT@KFveQ%rD(-sqDgs3Td6f#4 zznRk1OhW!$tYF8``0;ZL_aNf)Q?qO?ef$hoi2*K1I}in&N*6*2wg2xm={>5IyzCiE zDwFhQHo)gs4Au?6H{Zp{$iq94;}E=E-1fXGUw{UxRZFzR^rk9x$_IiY=lz=kZQfN& zL-*%cm{e}^+blmW`6i1bN@P(-v}hFrt06gjznK9ir8fE-vnz7VMaG(6QLVB?+mN)8YTT^{(e!S5qOh8IhKwK{haq zZ(;V$O6(FHWN+&rRAvln6u=g}K?Xl|hnl*N-R_xr4vKtOo1ylcQKPw>B5U)fwy@A& z+y7A$1WFU}3^JT>p_jWl;<&t-961Lg^Y$KDV}jqdsO(nl27GJ2TbTsQuijLx2F7Ea z^uq(YSYo&{hfchJ5##+HTe27JUB_gHtLYq^K)48skXeO{V+U^!dF>UBv6zEN=T?d? z&gLBb)vli8N}A>Vfk>DKr8y4sbi^QBw)_6&^+rlnAdWnU>ImyMxFebR!Qy1jazZGe z(534^4_S!>cIys`Z4dviXGH4zXqJ!Sa8j^{9+ZZnO~Guw>{k^!fn4qJ7CdkpJ+nlOIbsB zuIFdkozP+;gvB5A;%p$!Tnx0YE@2G2>CPUMEP=_8bUGzO(*$rsRz-Wyf7F-kp zDN|?trba^-Sk>g%F<##iqq~$7Z?Zyn`m*+@9A86H066RiPJL8s>&=wBfgZ>G(A9c7 zd_mxncVmgqt16KZ2-rq?A3OURO&*F%`{qOVv|Mii0UR>PI?!6G&J$vPxtRDu>t#+?W{4x+ z$Uy{i)yB{RrS?6$tPKJW8xO>_WRzwIuK`UB!Hd}OoY^Ee*(P2S1_;Aj4UpI*DFe4Q?zc>%h)w2hm z8zC9jw!y_N`;u+cC}P=TG%1HWy}0b0H$78h2GvInV8Lt$Ubp9l8`WTezOw1%=V1t~ zqcy$dCr);m9z7ql&pWS$xCG@STEaTR%n;30`~ynhFM!9cpC`SO4JOpW@7eu^y~C}# zrkB_xgBs0a%wu2EzH*U_g)2x<86mCM+5@|fhL#?8etTL2?Zk43#F?St%=~aF!blgo z$By{9`L|7@s%4$B8D1?&Gl5|?bZOj;e|2p`n#ap)oHj`2XBeQ?cmH0_qS(d!S{es* zdVZ>OjN=$?fI=NMqsR=*bI~go2-mMspEB3Y z!93;ch`Y&bdJrSnnF{(y72nBjr-|P1F832%G+4&1qmHZHZ7uxLa#oHGBMrb2K`}%K zBlS8vBZghc+6qLJMP$+El$?m6VzOCjiDc8E{Vgcg2>UDEhDUYR!>HsQ3OmH;r8HkrA%H)c8VA2NIbYayy zU-Qx#+_vXP`5|fiz^a_6pI7tX?Pv5>o3QvHiX@CTFQtWf6~$6P$=+z*>*=ySA5+~q zFZSfd%+p#x(s#`)*q0V6)pAne^%=3X9z585K~83|h5_-6ZHp~g_5@L|@8^a}AHx1* zBX&_DJ6yiC;UMl~r6nD;qKEA)+)_j>iGh2+B-Szp|KnfLTXhv2R5(wCztbJx9NcFE z`hjEy79g@h{FvF~x-JufWqdhmiA{9wZNfEi786#>dq-=CT;J-R1>`$nK*{wCMg9;& zG8=ukR?hokvp{v1ZgB@EpE7hYSF);4kH4e*#>`IcbFZc_PfxkN3a zOWD^v+~QnOgFe{<0kM&)wJm8nP7+!5~oj54Es zntXD!Fkc}BbtrL5!8jggKBEQW)hhb_0MmY zMLF+hZ=BRh#SQO9rC)!WZ~UPH)o*PfWXRb-n_*|iItls|e1WEjZk%Qy>MwCJy?oN+psX$vev~2%+Kn**B z$e>s{)|NaG=rW5Aq}rZ~{!m(!A3kZ*xr5mi-~#=pmg-+g*XlujgU7V1_#SQ`UOQe^ zYsZ1geCtM9a=c3y3K?hVOZ;vu37?Ywsc zS|>i}htO_qn-2G{|C?jK`5-3YZ`;GO1>9rVQIcSB_3+7$UhKJ8vz!v#zr-=RVWZMWeDa9v}qmz?4-}TB{=5}kN0T~_GK1<3B zB6r`E#oJk-iLAQY{M!P=3s^<^xS<0x-OjQf-D zP)FCd-~DQ+lz&A;2GY6&m3{k4|<>c z0cg9i{_eHZ!FqDPC8~y4G`CTwzI;P|ZRc;?N!a^OBR~H#W*vPkDFE^qF)RmOUmhcL z-Efo$6&}X)h85gKjcIzFc22)-m&6$}mcrGSP26WAuAwYlg_VED@%_-Y*ju8`pgJe-6H1m*vtdDh) z^njPpo+hK_4qgi+CiWousj^7d4re`1!EGFA`6Otyl391v3VS9fA2r|yO?EfxDX&d( zp52rddBt5U=)^u026mLn~U>1_&10+lL3)dV_oL&VdvBs)4iAyC)Y7Ejd~ ztYnOpJ53cD722s>9g5wd#qh10kJP?98X2~8k{X<>`^T)Z)8*ZK4Hr0)l^-)~g1x5l z-M88l0E-9srtahcuc#>qVHMHPPGNTQrdtB@NN|wK?5|^!We@;r;*yj&pb3V{Ga8zh zH9(je1M2}&@L<(hM_-g5-QKm?@)YVvwj7gUUa6qQaESH*advr)YzaE%+w)8j4AbuV zB)B|c5>LW5RmWTgSmXaX96KGiH~48 zG2TscXYJL7!vJ>MGk;F)5GzKVdIXyT`C+e;qvO>?9z^8)17*P5BZ&!ul^&t%TZgJeR^{z;dxOYtwl79zX7?ZlWuy$cz zKp-`mde)HF`tO=$(9?HoqlQJ@4_4Y%0`2t^k!^*DvOk*3QOwO5cPX%sLp(h{u&1*$ z!9R)U5iej0o^;gDcL7RGp5GwcLgv+m|2he8-w|UEVttf%z&gm65u?!7Vco ztThEq1>_EO5E7zc+ESrvJUbXQ6>4!+^ajocm{wnisq0Rh0yg0*nWsb&W=w*Oo?49j zg#>SXv<7AF$&?yDFQV^~f*$Gq)Adb)q?ZEv@GBIT=-`ZM;ip@HNWE3H2s1-B3~VrG zRO39lNTMn}$J_uPjCq#em0eFv@k|z(AABrC7R>&zcOXSk4xDGXG*{#fp_EuA%w$}M zEFV@u{yy|)jxW~(MFIUUQ$%(`{g8W}X9XTg$CZcrenYg2fedn{6Q_7vd=k0hH6Te6 z(jrVj#)F)pt}AEbB^F!ICaGp^%4UwK8Q- zogw|#q;ld;WCxGXa5ir1HibVc7h?97+P7eljUOggZb%0c-suVYFrEql`i`Tk&6b+- z=nRXX$iy?*iO=|wAmePH)Uhq#)IXTb_N2=Wh*LrnBBP%BPHl!6(#XamU@0Cm=S0E~ zSSC}N7KnpMYEhxz3BgI+S>0&IVt$Wp^wPHdlz*OXl226gnTgzFP#fE0Zb)TBvCn@m zYhs#s`tQ@c$Tq^~)n8I9uq__mG0K=oyLx8@BZ?od=8kFF?^Oso7RL?MAPws8yWAnB z0}L0;e96dE$@&h)i_R8ZmTH|09@V5{yu2|HSZ;z!w@>G#`D~p*P}Fi@0@dg=Da!0% zo`)$Gx@lMZ!SRt(AoZZ_izYWME5JCsW98xB3iDDomLHL(+{%F<2dx&6e>{J47zQQ6 z5bL5A7J3z(>pG1X7y^ten2#`u$G?m)aoje3C4-sSg@8+u8kx+)=n&Pj{o7I_o7}H z0*e-MPobx&FbGQ>;Y4f8b$7nsNESx0E)JY6Vb0wE#)p6Hi?0SOrjC>K1ZUKOwvDOA zRs+-CiKGg*e_QKeo5}*H2B(Wc)&kfH1fIR>kF+jYy_fOq!?*VNOtBQYQ*&hJly5|K z#&9g}w>x(P>H$T^tq80t5G${|v)5ij;TF}}?b|zf-bBN4r7-&@= zMoIUU3<<4`Pmquk2}I_fP~8Hu?~10kW4Ayl5Z86gemYI4v_O><^BnlBcFpR;Z8H|^ z>Kwm>2-1>>sUDicZr+?w#;92Lc;KUE!;U#VJ?{_>#Pvpt1rJ<8UW|Iyax7~{bMem# z@T!<_%HU@1BwN$eMT5O#IzoD+atMm;gHG=>I5KGm9nTNywqN@l4U#A(6koBYJV3={ z0SoKAuZYw1S9{33x*X=%ezee?|0J}xB`}iAscrJ3JUbdIUfq%lTq2gA0@Ck6@fVy1E0?>8{(rnt$t#&}8o>Zs zc63-Le`7&*z(BYp*2X)+J|NH?uvu_0SGONf8ne>BkRRA-W1Wfa$hdR!CEh6X>XCAH zWvHi5fTjadQ36xCK!TArqpWyX-nXT2OwcGUeEn+-mFIaVp9w=udkL55L{q09L- zUS)^Hdbna->@lwcoKL&^@v7BTWuh|LGcZ?I0U7V0Bj65t3b*LlD?#&lqDcbTnbI^Y z;BAU4Jt@rTK`ZcH6ga0Qd({R_q$(`$0au&;csGQLzF*a@f3^y$2#X>xCD78Gq!6D} zlT8IXC$)^YbD}(UZE@cg>PsaD-14wrt29Z|?QKXd=Pv0pr$L#N>qBc;eD5Ft{@m%w zbGWs|A6UkedL$e}j1D+`C9ID^oOq9@j%dZj63z48#m0fT<6P-&xHM36WcKC%+p|Y6 zAUB>@FFk+r|G5$0fh8R#gX{iVd5VG#L7*3{6Bk?1O~Nd>9N1b~jJo86hs=1$M(CN& zAiozUb-rZBTIe-$E|Xn;20`%0N1!Qw-^!_np4spsj}yOfU1VQNX;8cCU|VvgDtSmq zH!`KA+p8vj?T_cF+AO>}!|j;5$pgQBEN|GUub; z)`W13i}CFa#ZOptos3V$2J~^4BAstzGTh6G`D5FQJ~v^of06NJyndjf0@Le&E@RDQ za|)W&9TIo0--`E9PN}OUN)V{-Outr~j~%NtM4B*={|XHVVhYf|zt-SXK5^%WI!YeY zVI+K{rF*4w#bU%5iR!R`Q26^j;RKIvy@@~n=jNi7*d%v|tx)G3(Hd}>3LYM9#DnRD zg=+qZh3P$^JP#e1aCl7S(7+guZ#6G9LyH}h>fwnh+zeZ>`W6byIP@4?j@&1~ZFtt! z_54jZHwVH^EJf0(#SM1H+l`GPYHbWY>n5-N*w9Ret(uYlEi1~kB2FxMY2nxWX8@RM zW`DtRX@7G26G26|t!6r(#sBKx8&fddA~TiLtl7|n$|)$AJ%HA9QS|vlhWhUI&4#Y( zS5V!peFivyM@*cYks-MJjE!9$2THpW9$jHFlj!6!V#sII*>ahXx;sjBAJjxFMaj?Q z5CiNEm6R^TXn;=N9jcy*xt4n(EQhZ4^_om;Mls?e_yIOGIa4EUL~|&l8JPLG{)$$q zKO9#=1s;7n&{5fqNmi5@HN;z)dAD7niBiCJ9mTq|#7fw0Wqq>P*J4yfATO^;7z)vu zqgpA=H|J8=H3*QF4EX7x8VBp1NGOD~uG)t7YN~>)$*>O@pdE z>MV-8@|gMvxX5xlNKt)5W4{&bJ|bv&02M|TJUocFnB=wxH^44bO-jXmR|=tqgFEg_ z58c=9LswMJQ>EMN(cVSAUg0BrcziR8(Lj7=6g&u7}g$ ztN7_#R6n)A{kfIg0cD{3HBqvyQsWh0-i{@4C(u|3;7Dipl#w6H-gV1s%dJ418lN$3 zB4*w0G{JfSN4bqzs{IYZFoH}Dm2F}q2BO@W#jGqx@!zSbf8rFqS9P!A(Rc=BkT?Uf zafvM(vs)z(#5P}&o;Ztggq z+jTs9e;hRplR_`Z-!b(oODOr(3I(qqRO`g1T*MGDj~zC|ZpPe~OTfs`=eS*s`E))7 zmDm`q;s@ZVLVM?SZT#p#%#=K|#oMzhZtO z`fazYhm*Vmr-g=bh(XD5-ddEYJpi;aAxi4y*5u(Xme@@A3D%&IO3<0t5?h*xkIS$NUgiINmtZ=yv@qB%;AWw}6AnTD=Y7U?}y;T)2ivH0{y>Y)Oe)%t2+=IU9Pga1zT{MyNd zTaz0gLsn2Iqse~Rf}Rb6yYjc1Ob3Vx2?P9Bcjq+Vrt^s z9a%GLhLglEDcPuNNazI8Q6jG6l`*_;bmc@R4&AWLT5PQmP#i!X-+;xV7f$zX8sj(f zb|#>5(zh7@EJCYBIyuMfILoy-b!7i zTJBZf(cb7y-U~SrFZY`%c1_8M4wb-XZq2iMnUbaL=RUJmYno|jFFuTSGd@6qm@KDZ zV#@l|c>Ekwk*D7<>LOcKjC1TC$u%HQHn;1Vy{VQ(B&f-48;R)vcxZ_tLT-iC04dR16xw?d0d#hRE@8 zeVbckH_uiUnmEk)fj=G%qGTfzQ?cB6^m8xZvi<%IJ4gwzj)pOimH~}47yo^Qc_Dg- z|6Yo~us1sTPns+@iA@p#mc?~keYFz15H1l_$s!j`82cSk#a8JLl52>f>bNd%xOMLk+sQq0=Y5BsZ!ML8G@0% z=O%1rzYBDppyUEI)>|Ssl`L9U*2oiHD z1}6(|fsGhxL~Nys{;Br;<-Ib_v?fmNu$N|v=#p`w)2jzBl`1;PTRNCq*YGS=bLFj* z;PxtFu#$k|v73Ytkr z^OhNpwF%?E7ZkjrqPq5|;ev&&8q@DN&YmVr9WC_SJ7*BAR||w~!dmS`b-q-W7Y*ip z(A7^+@yLk59A&S_Qj%8*MwkIpQQM&QSI3LF;5@%;QA8N%4^+z3EBie*@zfndN47Qc zbGcA>p*Wx4nQ^(==^5mEbE$Jf$|@bGO3=*`)INEzeU(u8tU(@di;X_CM9fYJ z!JK=F@==AEqncvalebsaW(VPcBmJu&wSw-=MocFK+MedNm*Xf!jntLu{AN}g zO=FaXlA)kl>R1F)WzMwmt|lv5OW7&+8{ z4Q5;j$w;NK{!K7x7hUf-d}2INl#U=u^6(UH%N7!9HZ}@RM3bo?ty1yM>R~2N;t&6U zecter!DsvKA@SCqw5L~8*!038=5l42-rTs0l-G+%pbQ8$AJSJ}T9}py*6QQNoMGcY z>f+WD)$gV7>Z-+r$9CeHDGR z(j?R=sBLl}JQv8mRm94FTSj2&GkTK6OEA2+_VVm$^Poq)^4z8R%x!Ic?0oqZY5^%d zW%SIA#C1uRR4aSV&>;dG{W>1!;fR78r z7uR)5_vfM}Rb2Y8mmwo`cq1$>>u^Tbm-*{3+SQ77h}nYZ?Co`0i1yrSdRu~ zAUr3Y-3C5(Ni3)k^kTJUd??TzZV8VwCZoe~~ua5;pRuoy?`$D zJ6_xBlRtd=ko7o1n{131MU|z{yMp{m&up6bz;%*858v5*i&LQLSSid6j^GASjU`s^ z9}1d^rLVioR2n4MW?C3DKbjd)llr9u77+p1z@(N`BJF?`XKmD0g;YBDFDj1LPHj8Y zg>VQ(6gUw~F?L&q@+!D9s$0W; z359R9q6U<8%=TP*ycZ}V8e4!qCL!pWKggGpPWbi>+oZpB=9G4>SEWoyTT#WhdbB$8J$;$ch8~629k~(0E-5Z(J{8o2_{i#E!Nv;^Ok#64)CGwVK3`QAqHjH0$UQcAHx?- z_Jc>;g4hUod0)@27HRM6sbLV6lil)klew4INjQ;76-Da$1%B8Oc-olC$!3uX&uNv{ z@+~&EzJlLFdL5%X$>nWImlY%^-=)}-J+Ik3k0G=oDB%6~+EeS?@!mze_yisYr^~a) z$Yllb#n(+q!B-#rf-qZenVALfG@oCA1Sp3@LlO&u^ab;rc7AaW=8BBdYq`lH>iC~? z_>s7W+5rM^uzc|$H-e+SlR0r;03~PVTA!X_>mv+}v~HT2t&$Q`cW@=EV)_8T z3S%`%cwzje{2mfQe_v)ge9kplhgsxqDqdq7YcgPKY`DiA6=8}$H+Q=#UF=S{jXJa& z6zR317VU6uN_BL-Z z`ySm>?Tdzo=N=CY&=}H;R`QDrj{@B41mX8lT;%LkkZf~uuMf0EGf9pVB(|uQQ*3-A z)mUX}th^J0sYjz*$I`!^=Vb(#1HV@}(Xpl-`;+HtUd5s;t0*+sLy%&Q+L*q-<#Ug> zjIcfy#?uVHHgu3gB6evqfk~N~_eN55iKE;)sjPR8Hv!p3rrd^z6xlpnZ{bu#ejEoA ztT1H&hsK40(5l+W4167_9-L?IMKz-y%*jK}0-`~!jG~CjQn=$7sBI4ArwSdND4h7h z1RVkxu32g{yrDCck|7?39~ag=V?so_-B~wUe{Y94UAS)e>gDx7=Yk|@oJXiklAan# zt|(IBg!d~)%QEuXlg=P&hRYH!LvSD_aSe_E@4VTj5l=_QBM6|Tx#V7w7mu@%SE_B` zU0xl(wGq{A^gXdU;;5h)|DGq_QPiU?=1Dlz=7&XS+r7F8XOCP^xA`y9@FbQawBBns7e;u*+@b~P(I93|+vTUm4V>AN4*V7^vC{OQk!$MQyGi&v9vzsM6y#bskdZlAb;~ zUojf6FepU<)N#+e$FN}YB=m=-d2-{cfU94}{TLR4^z^-nAeYFPh|VzUZ_1R-`4vUe ze%{wG@Tx;i-k3ADC%DF|B{XoI`!DF@h-2D+WLpaPNlefr9;rGu!C>^=8wq+mmvxy6 zoa|w?SH7!r97(OOcYIi*jEK-Y=Lkj%y2CK$q@OeLbs|8OPZmZfFC3KAmi~{>O;+;y zh}~V`y{-EA@wv^rapPCI5#Qo8h-4W;LYA3Ed+ezJsdC}($t0U?kduF(ar~it91>{n zQ%iZO4l{)2Mjm4Fzj%0jT|nJy)LXjaL!y`6Q@Z zM+&fY>Wq%sF>~7`hIwBQyE0wt$p>#kIb2)@nb|}F z0w^gv=ER~Hat59-C0{w0t!FZSaV`gcx!bu^uYgacUe(^@M+l_>zyN&Fpa=K7KJN+P zE9%b+-hGXX%7|*4P147iX$F>9KWj5kr7K#-CyV9r z%UvcO;DDE=-^sukc@}*_-R96{7&~7gWT!|>(*UXQ^q*rYrKuE`Ccnah_z~_m95HK#V-RE`UeW~s+?7Z+Mv8noUXpM>SA*!Kk?ZH*F4Pn1BmK=eTaF?JR=PajajqC4 zinml&J}HY)?6?v;G){~$@{EW{fu|Vg=1~+w#8QyjfTWr4iLNy1i8=k$WA)=M>^2YJ z7eSs+=>tnnqun&D(GS`#2IFIdAuGiinv~8k;#8F#07XFw{z_qv*d%D@XOar_OkMm=F<`yw=qk@)5(>enA#*yA^ z^titREC{(8u2JWtvYAdY+_NeaY{g%mR`Gi{e^WDsENHje5}PS2vCHB1YGHAwDDAAt zUkO*kdT0l}IH`_?yq_^M-?DGCCvI%IXgE2mxTsB}-I2!T~Scn(1!;-l)_8$|Fx$Y4pVkN>>rP6q8+Y;un_b!9}6Xy)}0 z9bl@B>sPG*0Q)E;8TNcW$k0y@xv3?P^ItUg@iD#B0~D|fe=f!iY1u$)V=+{D3iJgq zOj5vPFzcy@6Hr=%`pt8@$BkV2bdQ!oB#wKKikM{FBEuzEghc}gNP~NJip+#6TzyZY zZ7a=1(nN#hHL=$#;RSUU-zO!ILqIt;U~$9yf~czN;4j_vC+>k0H}UB%s{Y;?I~m{v ze#V;}GPdYU2*+Tr??IB)a=`8yK9%&?(WD#SMcio50TX%a-`k#(HrWSVA_nu)>u(Eu zl(FZ{8BF4Y*%k7zDNg>Xy}irPKIFT_cD9oNbJvuYnea5gChr@iFQTM12csmiTrh6Dt(DRLot6YZQtCh%=kCTYhSo<4vFJxwsL zkD!hPORwD+_Dm>H!v&RPDAO-gTbBe6vOyzel9oJ++mA9X)07zpSNXZLcV3ixOP|;P zqLxvxPtyaUpRhd7Oz+$0PC-5=t|YPRpk&|p=ZWKJEJg?-AG;09^2|m{U?F<{+wVnA zw4~8Ib+4fb+fkIG-MJe8e@6J>EUL|(#IzpMNW>|1r^Gbf<9W#qx_WDZy8V>ry4HYT zQP(~c_cD-|7KBWLy(e27a+$eoxJ=z?c0kniW5A9!w7aWBA|+BKJoY|z`~;%LVO{-> zuW7dPC(9|&PMMqiGz&$w$)fL3dTqK2wOVk5iVnkwetFN2BMwuk=oO^nro)T$1n6C* zv1trGs%=uvsQ|nb`E6ZE*dV=;DRL9u?P?_)qgG2Fs@}28AYs^ch;~ZX9lT6O6psGG zO~J{BI%u4R68c{%X{5GzUzz04A(vU8AegY|$Ey5u4|S}d+TkCwe%t|#KSe^$ar`#H zw3=;R{EGJJM2t!||BQGlW^eM|PJ9J6AwpCArTuq0-I}7J@FJEG>fE}F=<}c!1yi`H zX(l^ae(?CKgO~+Ywa3VDpxYW$>T$=alE zmRYJXV5Yj*fd__BPG(wIW#fZ!va(#sq((f#%4JaXF2>0PJLr*n>r8}Yx!>@lK($l% zSv_)F0{kIIt6 zm}X`nlTb`tC@6x)vRT;NTV#qPs!hD;X{CpaN|Xvbq&~j+2n3AmN6uB#tn+-A79G-fJ$g%SYMCb zE0^E%LQjcSjMnFH3b_eSW3agM;Pr#azblm>^xkD>iDQjK;-@$6oxL%<&%v90cK)SK zYW~Njpzb^NI-joA6a!Pogtz@#of7$J>+#rb>@*Ov_}g6kK8^w?eyeujpd;$-J8Z@x z_qPMWB$WP8mUIfS1tDwBt*4FGS;k3pVuIy?tRtLBWlo1a9J${hb1&w>;Au;8-}hRS z-6FEKa{*(7E8Ju9t#`=%M}62dU!aiIclmy%h;wk5<;hifiJYW_Oh3(m97o-+F3K4lV<3GK<$erFLPLX&qOcwsi?1kG3?AfjRT3@*i% zZ=#V8_b1;M98)X1H~AYfsOwJGzdx8DcYlA;dFhIFNbQbI4l9|2*l(2nf1Wj<`{(s| z48s&GE>y!04vP4Ca+RB0X9B4}tmULeQJn_#cmdZv1Ged2T&&H!-+{NaMH?kkNK_y` zzX`9XDbcP_H@ep=D?TyCJ3+4*g8O3?D4-f=dtbM&6BY(fT-_L_H$HhR;`fThJ1Ph} zoWxq<3^y0o(Fqst1QJ3Zb-G6QQ+5)#9hAX*X&X;BCK{$OCO2?_xhrqAq);^Qpffac z7JKya6aiLNW(QLCmf_aefi5nSny%aVwt2UNJ*EoJnf`S<=mWW}o&x5MMvGXA~;2E zNU$en%*TiIJo!)twc`~zw~cc9yR7^O8C5>Fl`x3?h1xm!6c;1ibv$j0YWNR2{L8xS zPe#V6s+~sr3Qk$8MCh>Fqf}n>)`FxHNpA*Y+q`S9;e&Nj%lqu+pFRFf#bqXx0AIE( zrkbv!*$jOC9aI6EVt94jWn_vJt#VY>01X>{f=yJ%B}`mqh%jW?@fZL{(p9s&@^sk! z-y9NewKRWYmTrErae3@cW!Z>N{Lx@%=_K%cK3cN0+^bYXYy#S6N z78upv235^k?@|)fabg=H1!-!3Mf0v{FP|>e$=q%-OsW@SvYf&95%VaQPwVI^GeNoI z(x$;!IF6R*zSuj2e6dgNVw8ra$I#=7nqmRL{+`Mhd+{&Xq#3Lh*9Kby*EpP3;-aolheL zBL3#3s-SE1jOvMsb+{h4dk!%_L80S^=H-ROO$I3!{5iBsgfE!Ts{$VVqS&=A2AO4@+Eg8B=I-Se*e2=6hM zZd_*l-%?dKm`A)eG|mxVI)TNSP1?y9%p#&T0;h7}3fS9f;-H*nu49QU_#9Hp(eEW2 zgh6+nNx;J%{=>As6agnj*Qb_{&0MIN4$hr+bsUtc2f0wcqY@h~hNevQ_(UZ>D< z7xw@585Nb7863inS)|nI@D}MjwqG}*7M`0zNpJB%JG_8zfWqF~D1W%HI{tW0c_pZ0 z7AYadC`dTgmIM1^?^_u1kns=RAYW)m>S`9jrnOR*GlR5OViduEvqpokw`j1O#?l4okr)aB&?_iD}z!YVDJLC z>8GH+t&_c!K(nZ%!H|beV!1Wor^$_c_uKCjJcbLM3FY-!nb_C~Z%;m3;DyCW1N=fb zbElTq^5%jsJqGVIQ(2^~gg?-7`v&e}`%-G9P^v$k8Lvt-AQm^?Xc=n3@NS+JoA`cx zG>M6mYq?!4DSEpnC^;)JZi~|5hZ=4j)=&1Wahr3ZyKsZuD-G{_OmAZ*PIv{IJUKWf ztbk;gKMPffY4JA!o(k((Rhy0|3hOS6LX;3O`Ch*3Kp!2_%|Z3i;$EWhkJ4&jK=7(L z)S)6j?gH!pU8XYj8CY=qNH8xSWL}EJ9l344NDI7QIRC6#Tk7Y5l9i%m>r?O;1U8O|Op z8{6VUJ~&TB!_G}s&3FMlyF*9FuljyX#+%2U0uKE5-4C+`>B6%ixw*934ORcWeeZN? z3$7JiXmM(WkLwBoxy3K~mtEiIDo%EvX2vE)HL>m3uDHk=g!Km>c{sW5Z@l?bJ zm|5=bo0}4G zr&6JW9kABM2hW2{1|sA(ysVIX#?Nuu3Vmd04(a?(veq{dRbVz~4DVAF;1jA0mHR0E z)tf&$T|lY;IzmFrQHKt=MNL?pLtd&M}|b!8e!sC1xK2NGqZ zHbLBz)!i1c%Py`LqziR|$v+d{toME5L06fx+4J81lR(C(;^|-be6#=0NMd$vr-RsXTA}S80 z6r~YTzwPK;hBRO;?3OKX%MNWv9W4oK$dlVfCxWmwb+LFe>hswjs%5^1T?DiIPMb`_ zgIn`93+>5B)0U@P#-*nczIq#{t47z7c zly_&f>`!LEngKV~=b}6-r0R&PcW#a;RUla?nBY4-qA&%+hfj?K8uJLWG?+X|mjwYG z@imvyZ`(ln9T1Mw%(LM9V*r#9BHz$+rpddSVr)3i#U~E%&9wny4Z4V3B^LbE5Lg&U zyO}4waJ>ygT1SnpjXplF^%?BNlP&{X5}zRKIrggTmB4(lh_M&-+jc7)hRFG(dZiy6 zxP+R>K02a#R=odBX`Dx*?~fO65}LW?6P1X)J@#c5OLVp*OUo+2BQ{J{<3OyeS@r}m zg6RP}bA#_Rhj0wd*vvVUiRW3(n3T)4k)k}(rVY^d_qqjr!Cq`yuZr7;U=-Lu1L|h7 zN%UXlv42M72-t~IS2xWb6=0~VEf)DsL}3m`7#Rz6uAw#DD=qm}QH>_rMu)fm#U__u zbYd?I>rGE7i!xsfsg6<&`$>W)vSf?9ZvURrRikiOJ9@B5J^@ts)p#=S)<4j0&o+-k zlqOR-KJl#~;(8yc=;;TpG-2DvyjoxJ-m}K6oV89-3hvM!WGz< zP(PEcCG7Q9o?S#ROe zb2@P}Wjy7pe+oJcO9k=_W-h;3_|~8$rIG>RiuEo}E)znmq5T#4;Vk83otzIvH%oi*19%X3p1LiD}~?)F0? zNL%R+$P2^05uYipce@kvNXwWs6gL_r{81zoQBcMOYqpmTAEVjx z0Lwq8nos2y119A%lGUimvOFA;9p)U+bir~2AgW6ph!ZJwfYUu>V&BkYL-s4% z2z}Cfl&|X4QP@PP0}QM%(r6a!XW0N5gq1g>e<0syZ}!VVSJhjq+MN@OZAywrM_C~d zzF*(Fcr__LegH4G`4ZK(*@vjMHm~Yl{MN{cm>_7go&R-Pd948~T3=ub6iu?`ez>St zo)5>`v{2B*v?G0h8Ae`P!kVM|e!!adm(8}1%~gmpa97^X!WN{GH4WWrg_ap%7j4j- z*1pqpmFo|x?lWx{vO}mRt;^@BH{?VCL+0{Tc*Fed}Pv| z_R7Qf+;q`^ zV-Dv(Q6{F@Fpf<4lEH>s`!n`#zsh$=LsanFEQit)_f@-|Ir9{2=2Q5nsVkO{O*dv8)o;V20A?k*OjTh_Uv}TD<4R+UMxT=T4!(4}U z&YPBqN5~EG!(HZJk_bQ(fu<%;#43p4LTGzBw= zFZx?L{fRCBogfIw5t}LXjQkAs3aHUpoe|c;P%f_e2CZ$xd1_$xl8Sg5cK@#XQb2o|Cu(8_Wn74yi7Sn8p4E?XlqU z;^ozn|J2{0r1wjtn+;)}C+J1_{0s0OWb)44(bUJrGJl^aT7OB%Ix{)d4CfLOsq9CX zs`>j|RoRImo+iqv*9iq{lXirP7dT7468I;Qzoy*0n?C;Zgs%?XJ#2@JfnDiT^&k5Ip1ns-~2*U)F8P7!8~!=82oBjp%%=w_S^W!)FhhgXiOv zF|PWh6XuTUm)m(?dJH0OB^uk@V$gcA&z%3Rym$7WL21?|VjgcBLN}X1n1a;sD*&&>psba~T~Uljc*; z8l`|7Tydc~{^bK;fxgz?cX|Mf+Oo`;V-M9-EkXUzy@N~L6vezN-E395>5cPRurDHI zF<~hn+~N`k?bfGYCt=;&23+t?H7c<8d5=5u9DOn~huCRxI>GZc>FQc!om~7x%u07Y zM-KP+=HW-wU;`S&d~z~3lqF#W$SEvPr>aF6o%LraDHelEof?<~Ct_NX|I2uAi6D$2 zHW~bbHb}cYbD=V9@1qp$3er7;+6OVnU6>g7+1+c{P+4muA6#0j9cR>;0ckbw$5ykf zdwepFmkKd$rL~rEYk>4Y&VzgM;)H)EZ)u%|WrG+7xdj!|FpSbBA*iT`0PsH-2;i*U z2+o-$Lmb`KjL0-@1v@x!NuG$miLhu7OVHn9z}fqB=i?S)Rh9QLB-1Y3E916epipr$?Jc?s|+` z!yroVn$6s4iglgPZsT3`kP43`8-Yl|jQq@PMO-m}h5BFmlBx9om7~@INVN6@Io1(( zZlO~3<@kSJ2>wS%5@7{xBg>|h$~hx_JkcU&=L)X8Nc;9G4gJ4a{(yQHMw<`N1)J)! zJyErfzkhXy z+;Pc-jT1kM3yUj?<{pkUDB|+6BmQOBcj;k}n{2uRxx9(cn>}1z8@Nw!^2Qjt%K}c~ zDwleNt2wCJ`TQ%EAHOY0_U6jJVjtbnZ0yv5%Dqm79Q!-%c>#&r`tnKJA>Q_kd6QN}RSI z@cU=pnGn-=TXLtvfi8i8N}DGA3_5 z-`LxFfAY=Ugha?P7hLs9c|%q!gVPfCxY!#fyqgA3Hw6p(-5YFTCLZ;q023XU)(t#E z_j;$+8;z(Uu5j=E2IaG7swBGh(wVJlRk(Hf#i_+ zv-e1|MW$>WX9)oSiM;-YzrtX#AwUaX*qvIJC25q73cgsl-sa5(hqR-ZbhKb|{`Mzy z->UhZtSAOLs=nw|2J|yy8eB^eoK0ObRlmsT%=;+6vYHmvG&f{&EJ(fa{kfCxsN7K^L*lkIBk=E*zk` z+&QORE6RLoIfNjd*zY;BU^$Z7681SwsK=!*EY)USkuw-J`gnaT(Ox_*`H%NDs45Wk z8mVR{JU10nb)c89#Wj1X&=mt^TKM2CTF!%&7~k)$lr%h??*Ml_P!v?51>m*CvNpa( zyOS7?)rNF}6U~NLWwmf}^$kjUp&>x}@n@KL;4C%c$@8N6aq#eU3}N|38B^XbZtKNY zc{N^Q+p&9Q|YdK6e7W8PMYm^;%Ic zn#JAdWvoEaO~FV{Kdd4WG58d?HwXtYTQI(r>EHa}w%5T`m7PsKfZjew8f$~3nsIEL z2fs~a$ImY6!u4uFd%Vt8r|bhOfOI<^_O?zpXs1njiu(aWw(5Vids}Y#rQ^)Iz_Rcg zI{xy;`V{r^w2_r(IF0fXpmoD&%qmbr42GbaKV0jOS5r$gC@{N5LKLiZBBNGQQ9?Q^ z1mAFz<@4(QFUGwH|0RHh=3rr9UTOSS!-Lblhj_s5@!OR*f3krRx3xJ#-?j-!5kWHr zwZv)B-|A{;P#%Vg+Y@p8hFqnyJK#4rWXjz^3Mn1k)|l&RA?dPX_9dLzhHi~`C~)H7 zpkQIPphmX~%KP)n-ncYARr`orc;{GWoI2gD`0OY5aFzW79IKr|kLZodWc?1SK}YT@f+x zof!iRz?DVu>ENKKY0daPktZK>F3RwXwD}}t70Gh!?vK$rf zj&E{dLk7ju7xWe(WJhw`pkw6F%nA4~MJ?@(H<4X@LzK|O&6&rniZu)Ak9j$W=9oc> zE}YE?O~^}ZXT|(}A`au8F{1i^aMc9YmM!y;YT$GXJKd#y>eqPv9vKh-6%omsRnO#9 zEA!ar`s##yOt89sN&tBOUMmE^GpTce2o~8x-hb37FGSJDJ1d5z2TF?cpc9pD7#>~| zX@@%|X+E2xYqBO1DM*9K{URF*-<-obHA0XTP%SM@F4SRmQ0Ch!YkQUDtH4Hi51%pv9-C1@Us1MlcF)ad6?{?& zH{*8|p0RzpA=-lK!t8XkIo@qua{Ts5?0*sgY=^_*U@zY@1{-Ey977+IApJ;ND*YI_ z_LeMdF${6K=t0!p98>Hoy+eI))Wm+}+IU;9#@0PEvX|XruYAV6Sn92&*rI|~vn4H19t}BThy6<(H+YqlBLW)H&oDBhLYFcj z{DG$gngzmEZ9a$B_E#QF0NOnn{PQP};C|X}(GG`Q-oUQ7Q|!ZR!!b6q>{#QDTGXfT zVoEEY+L1vUWs}kt*bdHZz&qklFfbc~lnc&lm%DExZ3LD+nsEKvpl zz_)B{mny)`(!;b4s*`P zLa_))^M9dUvF?g^qn0!rY25E8TwV72*o$rvMm3dK;fk^jQ+77%Cg!804Pmjq!NEX& zuRI}If%Q8SywKlK_|QpTP&UhsS{>Bxg8z+J1h3l}Z`(d&h^kB_hnjoz{Ku>Qr)?Lr zNr=K(TGU}?S*$D{T)zPia$nz+Fp`b%fHl++gk1cY+DZLe3q$gYsH=1PX`d~l(joCa z>E=Pkq!Jxf?cvkkdJiROy2Q-(vS;OC)f^*;q&Mw4hh|3Ci5PyyL@v!+mPfHx>YbZG{bc?>SUW za2nY@|CmcR-!ZhMe0E08=)9!?a?6tPXNAMr`bL=Z!;=;eAUFn9;C3F&aTUmEw$x? zB(1!cFD}k+y9YcP@B0Gm{!@|{vneUzaXn;Si&+GvBC z*}Zp{a4v9jg))m_0B!s&Gfdu7krn4Hx{n2B7*-8d;upWH2hI=vC%%#mYSmf}Gh~do zt0|DS8nF>rh}~GfusHs)X?2*d8M8YP#C?+-HfsP?!A!19FmvgTevIEVo zy_!BA%w7<4x%r4!RgCzXy$sZDXp|aj&8{D)tu&Sb*0&3?&_aF;^yW9v60i_I?`oB< z%{mkZoL)iqUrc6Jw2h9lt1;{g|%WyjU86tL9;&PAQCIjA=}w3AlZ8UoNT!c zm1_`0cXss93Ag5Cu7P`zc>yv->(opBYR8kD;Yd=KmliXlOhAT0KfP+>y7a3a+0BIE zFnLaw9!e2QGdgR@1+_u$e~n8xBP<%Wux}w2bU9Ro(x-87(X_uKMS{>LFv4kW_J3G& zvDTc%3H{z*m)D}6iL5gK=PLj`J2CBLw$82pw#C0kRDVh6^ZCa=)3RS9-9Gl+PfXrg zSWT5TA)l~;t2&5SLlvv|PYk%brIHHBLUMo^w4gzImdd=^X`iq$)$`d$xgqc3byu;hp*Nhc@}FCo zzA43S8Px{NW|Ev@HQD9`W=>^6U@Xj8YuG*iWEIO`ua&=wWVe$w zP_9V0$%3EJ+pd&6Sf(0(yMKhW7M`?LW8+B=+L8PdZRo!a!qifu-VE;V-~6?o7I-)g zqyl`)r(d2WM4w9a&)I$YFx`=ANi;eov-iWme3VFE=y#{G zMJt~H)+hk%Z11m&ph32&lIMlBsPi4A^W}u`QJ>n9VmRvooHo(IE@kp`&8nTOL3%2y z5vs7_c*_Y(DybidsY>{Hj{;x?8Eg%47#fB;0&~D^jo|L{81OkWN{{O0{d^q3b}(pY z(=dZn*6ub(>w<{hpe`))L!AfqsDR1mEm+ZW0v5xdUOGH=XQ20#+En7n) zQ2jQ6QSXl)v)selNx?$PtbG?XIXxH;QRp+LwQ8ps>V|8AH>Vg)KN7RjJ~JABQUkIl zS}80}YRLOJUo={WWodn$c$YUIu3B%T%f&8VI6(7R$jlwwWuVDU>vS5`{b(1PXyl3&B4A3$MP z%77q>*inC3PWk0C4-3dL-2t_N$FiJaGb)v2Y4xpU#`GGy(p-^dR4WN70>O@qJ#LiB z_qxb11M;Oby}5GOr0d~cn0HzLHOj3KV)SmY^5b4fZKev%_v!4JMok4VFI0wME$!2m ziKuOCYe!I9#Ljb+xUBw-Q={AEGmomRkifP;NE3V$^J6Bl;s!o41va9N!g1lF6$Q#2 z`;LRQwz!__6w?Bhjp5b}GHo4C*XVv>j}DU(kR{|e&}|O=aUc~qk9;=s<3nAtR8G-` zPUE(yNAYU!nSL(>>bS(+1^FDURptG;Dzb#SObed9DpSrun4t!u`wZ6Y^}X7pTEWPh zre>C9e|pLi0Fw^!-d+z}NLgvD<~^#*A`6(^2Q~ZYayK`J_Drgwl1mv?FTS}n7{4DA z1UEIe-dPD@5;K@T($>9*~FU=)oF8X({zJ-!6OfuJf@~2N*A5oov?xfr5iPD%&M(JgVp zd?G~e>}WC*?a*o6@~o5cpF^No2rjxNIax%RT`MLfhbP)*Y`!SqgptSrdEmdb?!kyf zC+##!LYN&<-%AChWkhNk1p7i?z|EY@7ap_4VdA{A;qnwbK=1)^`HT$N`D;>J&rk)c zrG={C*Ucs5fY0p+5wD4@wQMSoI zy7lEr|4ZMW^VBnk&4=gAaW98`)U?dQt0$*a5{_jzT=W@ue5h}6%AS` zR#w0X{W4Co!ff&h#_=0kqi6W7UV_9_zG3Zcyb6Cui!+qFrC*{vJK1YrRw=WlB@Mk| zy~DQ-*4KhF3%2>sH^O;rYVAQUoH{BlI4Oll99|YHFIy?n$Sllm@5_E63_F0~U#qok zmUDFdoZ?8QA^i*5f%eMC<~EVl3BZwzW3xm zM~6BTZq1*i zidy^9z$s;D;C)zEoWm@{kf2so`Tse+?0=gV7m?Oi&8L8I-tH zj2sRLf7&uM3HR15>V6p)xqq?=dYIZ&CJ?C+()2eo6rVM`a-BPirpvwE%3DGUSTg4| z1`cSDAqcx9)7v!>EM5*CrSHT=4@d;}YR@DO7RM5r+aNU<#d@8NOU+omWJKq2V#0?< z@M%9C&8sI+Crb+^8_JDPZdf_x0az+1dPn6dVCPi`rH}#o%vKKn_i<-^*&M z*KnJ(MXE10-PG1U5b-mf4#k(>kL{)AGv|=rmf(5x!nBLKy>ON!2N-D&aCV+tR@r@k z8sPoNgfx*p|13&{vonG@&GlgX<#yh5<9)bB)lZIQ0@LLl+LT2qq_68#^?h6pq+PRA zK5QIFrlco5DjP>vk~cn0uqgRzvJ2>cL@Z)T4q=)9{3$AymliCSw!`7wvS-40a+ynC z$Ja|Ij=AC@iP^izM71Ce@?+zQ3{(Yf?r#f@pzTAoc=4xqeYTjyP{mwr#R4eH z3om6m0XSebu%JfkCHHGw8W?*`LY?BjL{y1>RL$-LiV3d3 zSOJ%r^}}Q-N|*0_L?gpb_cK!8r*V{k!yRyRsLQoyhK#T}KliBgp8@D$ox)~8>QKz) zJHMDJF(R_>z1@xxIN1E#*FG`fa5VcKq@|keUmK>lb!fu)|E0eyO$@)KjRNkYD0qec z^?tV)8pJMhk|+Ym@M&tu%VwuaFCpy4%SD z251e-4HN_-DB48!jo+spKe0ds5py~Yad>oH@$Ls%s>OcnUDi@+$BF&^@thz#s=hh_ zTPA>)z8PYRr6fvypTwRox^TGHw+*t`bZx|;Ov*4M|hYly3_hBV4ImBw=-o}tMUzz&L z04rp9V4RCs>nd;fjv^lv+!p0aEb8;h>0)D#c);5~YButx(_ZIJ(dJ(U+ebGFZS_JQ z9nl)i~T8-uFJ)w6vX-_xy4{}K)eSt7;5 zY7M%AiV1*h)HizSbF>dux|-lg9+;(@rtE<@RMyp?eoV&yIL|6ZeQYqmlI;)Q%ZW=K z9as)4lKXT;8%Eq5eKYAxyH}f3*~N1!C2^ALc{EQNyPgpQ;n(hfF-4L#QgJ-!@jZZR zc4I_PgWh*tk0Ua+2OijfKfzuQoIJ;x#NuFdgd*3n5AlY z{xItv96=}T#k0WcQMW3Y6|0?I;?Z_YjY$VnjU_l%t>DN_mqyD7rqC8xX^9RMBb8bo~VT0@n zy;xTQl4hcgI;b~miJ*(NI|w{EP3%Em5NI_1GMAe{AJ^fjqt zX2Jg6|D3et1Sg2Ti$;o6k+Z&O5c;DjDv+@TzIduq1exgU2tP;ysNbgJtt0K zmH+LX`QZq*_LGQuux-EMk-6r1P zdcg7yU)ukUhf3fb2z)l1%%pIaDDNnzfvW_bqrVX3*90*Pa@;yE4m|Lq=L z*giTj_EM-+tc+v)k&m7dmDb03lMfwuyA499k6S2e(&{6~6!~hrx2f~)HxeFa>|1DA zY(zKThebQ$Mfw!hoSl_4O1*&I@g{@rVywTreU?bSN4^~@7aX!@Z4);*6r=YK%hO>V z`hgrjr~V}Cx}V{_JdKe@^MtQO#c=AO#fRU#t$}9AVw~IilPb|QLO20&KES@s1_=75 zCQln}m}mb1Tr>ViHJ6+(xD+saE~Sk6Oo-xT^%DZQTL9SSFHBi`i3EdM3{llwT&Y;^ zzJwhCqi0+*-@!|_dqDr;eMJSr*f_f86KKjzJ}F|2pcds&G3CKkT>HEgB;Hnd0NZXC zMkZ3AqSQ6HseiSl9`?*yJjO-_%75>wGQ|Bcdl0thnbmXt%PDm}EX-gpN|n@{WS8N| zYC~P@lsTn$_u#R{d8ZfbJ|kuUyaNoy*cdfV*jfF_&UHxCn-sL*gCktfs$ z_P5n|DpKIMQF7jfhx=gWitC;yYF*L@@@m-mg&fu+=*XwI!PB5H!&Bv~G|j*G&2f6Q zWpw*{-e}Izx+<$&H!k`~bmN9S`SudKp_U;P+EjHUp{A3(93|ALGq+9B8tif6UqPid zfxtos`}n>EK|VClFC`cni4xC-Rm5_%*#Ofd0lCbop+i>>B?v$n$;L00ErBewDfV3E z4ZwQUg9BGz%X;&UkK1fHRZ?asDWC^z+gpQWDUll8HpVjN0=2Yis<-qkZycnJ16ssJ zrgzR8slY*Ky~9hx11rM|hNoZw@6r^;K$hf4`IQOXSI!C>%q))E<4XHD zSkTH6u8ljFtlXFwaec`Ni{`g50e(a9X8I8p#u$s`g#_I-Q4?}N&V9}|%q zJ!z&Cadhh=zF@(=4G={9Xbw!hhtP5NoX)GUEdB$j?kp zHWtG|fYQN%wccFyS&g=+^#DlOVrm?{fOIe8;UmJtCtTQft>Uaf?1W1c}LaT4~d_-bfVFO$v zFY(`$d(sUfS!;Bo_Q(dH0I<`!kpZ$KOViHve{+j;n1ppD2`7c@?Xx>b|0}CmAv2ON zck*4>k<)0H4fQ-x>zvD3IdF&(IfE+O^UBnt>T!b*ho529il~c6IrO9pewcvXG^Gb6 z{g$7m07FM0S^KqfWIdgez~AVCkI@RpxwT|gj&B}e^3ZY{@}|Ui)Kwi6cZZ)c0D-#6 zE8o+uzBX!kGhLx^DAf^bNd%FZ9m-|ZL~*UT*9RNJBo56cSP_>VuOb4HLt zU~7djoohRiOh!+o%*6w}Lp}WEl7o{a&@S$kmy5SqI|big70f=&7{hgzB`GcAqIqQ- zzI|3v0D6!ytarX6BnMx8Q2_`=&GSPyyabDRY)j)UfEZ|m;+^juX(a;VdWCP-u`Uxd2y+z!!1+> zs^ajrVHNJrHm;*{#tY)nQ}A%U|Y9Cpn9GD=r*zkff22?i1fHEYV1TmeH*mtuD6swtp;#HqQ_uEF4a9O_D(+JVz*W@7c3j%R!}yGnr7} zBNO*T$Y5{XM8RgTlM3w>4}o#svw^Hejx%Kwr$_IiG;9PzhLg0y2Fw9Y`3vh>HH1BJ z@kTyvrGO6T&MWTH*QAoq#xxzBE099h*g6W+ta^oje`F8%@K8k@nj#KI>OENfZ&~Fi zfQ8bD!QxQ!sZ9o@n5bPj*}%RF?lX!OM-V_pb=HuYOqzs{U|rAOA_+I{rH?*!e1iiDQgQbYIui#V%nqAEZTkXDJY$nSYVZtU}<>DbV6KJ z9Mxh8Uo*cBRjxVkHp~46BG_$L&{p_D9E~W-KNhzmF~)AE;_J+-LIy<8#}cA5nM6WO zg;rO{^J9BGzgY00nsR#a?{b>Z9`&-N4om?(%26$n(f58;SRl+kN{GSJ=$=hRJ`)F` zfRc7(SkXhzn^Oy>d&k9l@}@%fbl~ufF%3gK=maSCdaSK{!EPu;c}`*(H%qw&?QYAE zoHX{kz?<0rMQiNwjl60G%X+!rrks$DeP$$SQj7{qrs0w=c)lk)1~ok&-$g&O{}XcA zP#01-eWa#%`(D)Oix&wp_q1|{-Re)F<*rW?= zVLNKt3CA7}5b>5y$P#C7N~pzM(hwTNBKU*i&kWo{pR{yfEij>N?*wD)TceQQ4%t4M zeLuTd=T8yx1QG9Fc@4&0E3$qZZ|%)G;jar2bfINHHJV)?Sa3%{{f2IX(7f_SbIcsf`DJR;3+~Sufn*y9vVi45n2!x!&+lfmuQiv-VpaK7FWG(|&NGL{$^jMCt zbi;U1qe%_lL=fqmH{iFEKFh0^ZRU<1`GcC!{mxHr9uzl2WLn+$QOuZk?K<0s7~7^V zNAmbh-Uhzlm`W&PG$4{ z$`Rv#ZNKPQUy90Fu`>dY6^_l`SMp+$p8L$4B2CL@2kQ1~1r)KU~29jc%@S;$KIqCoZ__)8@fVQVTqMGl} zyyJ|Gn+Tv;Rig&yFUbcmkVcc3Ie+N6cb8vA0c=m5)AB4}AhXus>pFbf+llX zG{fXl42M9s^>kgZnih9|5gQ0hsbE3H*jaw)5E^)qOamLXmLBQxemyTMs0xDQ5OPmV ztZyaK6@JlCy)@V`Y%w>Grrou%jQ~B4+mmu#Ms3OkYC~d zF1okE&u$c9?d^S1PeI~CKqVq7>#23AcKGH%<{_b_3!jR7iqZ9N??i>F!%^H6?~MlE9b!=Z7hJx$6{tI^#(?LQ z#>AV509&v@2{vE2wz=3G#@HdadSxeQ2a}$ z9Y?#Y+2NcB&5-=v^yg?rfY2>Jl8=H*r zMH@P8vi(1~@Bg)3I$}TU10?$iQvDCTMa%0+gVVNDmYsE(TB7I7?p_dX^~xKkBh+|NjhP(0Pv8rd932a3LMkj-0bNwt+Fl=+($W(Y5W%L4vL1#GTH<6(!-gcyP+QC}ET|9iIe_oc4U@HGaLD zjFS9AeGgbsiVLc&uaoro`OUQUP#;DB7>T3bYpOF|039yx8Td zpZze%n`W}=p!O9P8;#5dGs5*OGt*)JkWAVP|9!COq3re?Q5TE|0k?Vj3lYT6#OTFF zqW;lh1Fq`MhDv~<$R>lVCo_W#bleO$WN#4tD8``7R$bqt(c-7iNHr(qX1Ep{tWlSXc@t8R~KJ|$twe)^D4!63F46kxkOaac0{Glx1BtP@Od%Z&?GAKiJl5ITd*AZ zkXx&}jf((~?bRYA(%FtW&2x?vDrNwK{BbHTVC7^$O;Zr+JFWo+x{X)6Qs1j&N9o<| zr>VUMh08j8$s_8&$1*14jVaAv777TBIIx-e=)y%ki`lYt2M7m4+^|4P52IXUP;qTM zC-O;lL6?QtQNxs4N-r30kTNR9a2e~pBSL1P3s_q$tX>m2^S^F+giDP4GEl`86$m;l zFdRG_n#*iDIXdB1){R9mm{sX5nv(U$UC0jFF2SwU!l?N=M73HU_>1PvZ4{0?mFV@6 ziHGBA+K77I^T2CxgpQ}9SYA4hm)XNRW$Y63TvjkW{Aj#jO3M@8M>1sb_EpS>L&O~R zx&5K-!OJ@c3mR-C^*I{A%{4{jI?Kk4&hYKju{EmDI&fm15OTim_}sAc)CPLk?zYy; zZz*$4g*rh39FmK&E1fJERf@jfKh6aLR@eOlMTzZ|n%ZD{1Oy^@68ISkX- zoW7@Rqz@L>Bn4ox952q%nrjcDHH1;a`q`@tQU-?v3MJZ}i@~oRKUJw^sKDFF|Xi( zSX6~V0WdKSoml*fTw`n)WbQTrr-`}H#&J&XCcg+KqEmfct+fm;HrC9Q%=C-9wnQ!- zaQ+tPQ}*46n|w4q+`zQnen$k!t&wRc*@|pif|MW0kHrT?7iK_$wP=uhAjdZqm_77* zq}~&`5uK#I;V=8SN0G{yNM>m*d$IIQ)4{g3@oDLshC7L=X;bd|_2S#?JCRDt#!&QqE%)cgjozg~Iqz)`!O<0&Hqjo~h( zDdEF>h!yEV(!QRU5e#QY`u=YMNh*_jbY}ck+2RauU#vB6&P`@K;|Q8$(23Tt0NMhE;7_c* za`7}}%J`)_bbN0&#B0N5+ww|N}Ytu*FiFb}KQ-qa)mL%FJNb~__Pz(5Kx z$31N%=Z95$7#`UB*lO`N4VhSpJ)W1B?Q3F&*bakdl}Z}7{fg!C#NMXjW?e8P#qC*Y zUk^9aJzsVbw?Wh1s-l-VS~NR;A3|#f0g@dYjtz0p`@@*>{=NS{y43<%IqaLCyn9nG zA*Cx#hf$zDcCHY4t++vg=weFwQ7*at*LhYHA|vI!Al6Ip0E{7bqz2L>?hxr7OF*ch z)zdJ*1V*8K!jTTa#|87>*f<1Wqi>=%`Sam@+ferFH|Q>jnRt#?Ui-}^x%|wMih01A zIeCD7q%87qHf8}SUmKij1}mR}3Q3RCH)9R8b>%j3z9kfSdH$pU0IQVKmu zxLtM2K!%}+zAJ5faem63c-TUtsd^f##Es?~Ea8(|&BbYnMlPmwlWSqKa)`8XV`p1^ z3qI5O`?~)WfM_Z82}Q`*x@Br!A4JD=GUh|gne-&hLkd_P?w(c98rlh|B##`ck+0C!Ilmw7Kq z!rmFMFM${$EygI<#jzd=Et}K79UA)84n5u)p=6m&1opvaogTE;31)6!$(z}wK!`<3 zI%G!Zw)-S|a-!?vd?a-gHaY%D0h|E$gmq1V+k^Rc$e@#}@ezibk2cAQ&rUyLSoR6~ zvZLa98(|4{R&kXs)q%Yf)$jRKq07hmqAa~YFmthSYcnX-yB(bw#^$F)iK}x|3&Ksb zmXLaRA2(Qe6j;Dea9A-H_85RBQ~kO98qrr}-)>!bMDmyg%(nek+upxCyQV!nzyXFZ zmRL?S|t%3uS|9F{+t@1G}Y@H)DSk zQSJr}g&c6@J&|ywR;3C5roxz0c!cZ5?#o7wI!b%t*2Zo?2G~lkn4eVCF-F7Nrr=xZ zsuXQB_Tsv<$04`kSjHbb@YP`aa89*9rAv`eFH@G@k`>ak@&FttL))AHoZ(7rt(9r|LL0iTr@Hp%*$CI#vAhDQQ6tMSqw>;)R(H zA=H>fXllCaW^>u_(5(y-*uFSeW+eOsnNWR9_ZJq7eVO%5ztz@pjP1PXch30YG*`jI zo;oNeRWkJyyzbaR9ioHvDcvKUYP6E{90S5j_1f=X;gp)2flJF`KiQ%&QivNcfS@T= zhg1_ZYlX$?$|xdck6zXdL85AFIEpyE-|>urkF`(J&urf_)a-*t+{>5xf1C=fA85sG z!&Al2>$rHuxHoHHf&uGoluJzHz^Y(77InJH?rl`PC4CCnZ5j@th^i_&03}o!xrjy9 ziuN)eMY&s!f{Vx|ik$|K`%6+6eqHr%Q1@x{j>dso4(o2p!g%bn91;FOfFjyHtAQf% zle*9MFzabgqZ*7F#z9DY?@eR*07OZv9g$>$<+eF_0}ZAh?PKXH>2hYmz81cdXf1}u zb4-SkZ1`4B&L@*&hcGU_>H-4@2_O{D&;Q-4v|`dKx{ozazzf`88Xy+!_{l)OynAqa zR@U_fDSPGeKlOT_a!kPK-u*`D#&!iP*Djya2H|OE0S-)ir(0__1O!P{x&p2rrkrTh zrPEq=>5q5Dg_maA>SS!3!U%X=@;4q^I8?q4DS8-cG1IUiqd2b*VhAb_`P6}`8UYo> zk$Pn$95A4Z)G^@;5pTvDB}(AB%TN8fHz^wNOUX=HXsV042KZ68mjN>pu74}XHoB#0 z({HupGjiH?l4`K$Xn_tZu32y+oIf+RE9^D;mvQgp!yA<1>HMG+ zSmh$!%o)+l;jG=KG8%lQXg`7p9{UW9LZA&e0m<++Z7t&g!o)(smd~1@tFR3 z?*qmju|O;!kKpqsM#+Ry)DZ)>Vk|=M5auSSJOf>376W$!vi3C1Y1z(9+VNuAVez2U zQ3C2cXD+`gM&Wi~pgWm&pWTu!8Hf6qMD0!FY|rULWx)nTvz>8wAFJnkrK45Oh zVj(c+QsMT@39QDLL-n?1>e10!duk)q%n4-HoM`393FoNUXN;MzCj zrTP-R)ay}V?AtC!YYF59FW#S{J}qqj^euze^><<=GCo_eN`A=+AL-v)zmL4Tb5h6E0x*cHgXp#g^4_P$Y zA4)8aYkuTr7igX@;sV~d_;r<;i)5-fJaVVTRa3LI43{Yl7TyG?hDGA|i8GomPU)ocx{^r*jeiT(F2qvXDfZoX%bs0M`(51`<`%l?yJaxTPP zNKfl6?Xn0uuS4o@vKWq8@2UI_H3JySgWR4}VKUn{F_RCI@>4FV=?M~RlH~2-3So<; z>g(r23_x_N6^`HMN2kc%mS;Y$Aa01t`ib5_;1u3G(pm*Q;1gW8jKNy5GYwl7l5nKW z>m-qT|IFm6xp6wkv!G*UO-R&lF=TdB^TG*!X9`nmME3Xz^HnF2C3GW}W5kpUwfO7O zaw+r0BXSHn^q%$KC&w7ntw!K~l<-h_ftbzHNAZB+exd=T0q;X%WPYWAUsC{xdPmW0 z@Uv?k^Ko2#Xf@^}_B`a-J2mQbR~LJC_HE5Pxu6Q7A11SLYH*;_2g^6Ol6uqkjW5uB zYf}~^y_>|Jn2~qGnuoe<#-~739I#pC8Jt4wOXv(V-2d|hcjQLXWcIJMg#G+{jpHE{ z_NCR^XM!vZ^`Jr!^Z>x9hk2FBqlAMK8>Q8=V3Y>A_oQS5*oo;oA$Ai_P}LqHdZG_l zr*u7tcXw1z#M=o4mDbrAM}GxfHn#NnnAa{nCAK{S1F954UD{MinRyjT+H_3?N(Qr4 zg!Zb==`p_sJ8l@(+RBJvgZYg$O9sYzIISz<0`Pk)gyvV=tLpSFBNoNvV4yXboil3S(pXeoO>kgsi={(L z-oHbP&y}1HYmi`?mr!mh8*Egk-#N4q;)2WNpha_)z1>r@_uyyqYktrrD2wdqs!T^+ zfnx)HIJA?bEUPwaYepG?g8B$lVy0YDCJ|Vai6+mP|HUelna1oJ5kI#r@{yo3#%5+W zjEeJ>L`5_HNXq_Wj9Z0uw{A0-r1YI(55+);Ow>51JbahmCA`;rzwfX>Gj9n0M4rJ{%I zNB8As&#!z3(kUXYe|f*_wHzVN;mvt<2q*5 z+AI-bY6!n(qknZY9srAvP&}LtdkeT34Q_};)}0Z}GPz%v?mn+dN!yBh#z{E#v?fd4 zI5QCS`;}t>*{;npp|HBw_|wk%=q}-SD^uNaZ|cBlq+@P7rVHti>OzUf8&pX33>m!_ zwsXk>A}VRD3Q^SMq0-akVpq1a(V-rKL`jYzoG`6wwuin;yKk67PzB(d3tF zXL{K^#*SIWzLA9fg}vXho@YT(MkjZ4+>SC?g7Kze4q1W{JjS|tb zyAJOU(@sAD5ISTlp zn{-LLs_{K&@~p(*gs|^I$Pi4BgmB^1$(kHOZs|)8)r>j6o_T>pO1FIq`=^>>$B*ED8ca|u~#C66~cNu6fh%#o2b|FZdM@ID0C^{}F zi8r_oSAD(I($QA(*gyb>>leYE@!o=Q5}3h;%ho$L-8jV6MHd@{b_8p#VAF3pxkh$G zj@tRB%r;xGFrNb_gS$=zSZE!8oBhc{eJV`mx+=628QW;A92|&Wt0r-~U$^*%>Ii7M zY^u#pZ2IgOB|=gUm;1CCtKwA?^103)-r`f#T6FM-wvoKw zV5nphmepFZZBv!10tolYdYEgJPRh0w)+PB>fFX6NnkI3NHuAG2uHL7bofK4oAVS6J z1@+5KNY8dq8E`h_1XdxhG!$mrDzOIglv3Cuxv0WrmZy_6JIDwTb zFXH_v7rWXpfckZ|$A>VHiv>PZJ#B-Od-74X_0@`}8>8U46v*r|r^Hl7#2Cv+&_F4> zUup~8XJS8wSWI#lWZF!SZRi#elNe-LfYv|d^lAvxeZgc|njnD-DT_mVADo{gD-^g_ zs^R=+mo&oNp{>m+-d!SAmbA(uN;17_ReL~Y<23&czOa#Qep#tSyn8anIpgdr=3UZ= zKf5vCiof>$LIW4UEb_8%a9R81j7w-MKa;g_35T;!M{<(1qh!Ag_}!j#ny<4BA#Z;; zjxL|0#&?rJk}k#WDH*oXLsEB#S~d<;Bwk&(ARDjPuGTylR2nH=8KC+=CzY+x(I5BO z=!U)O=^--OBO=m-9h3t{$C@TQ0af)mmJK9ZS09dJ`I$0pS+}(LrHdT23;W#a>n(KgMb~$ccl1(zSTw*EXbQoDh`rr5n`Yn`u-qoe($AWQS&fzID@z$~i{ zXc6Zk`bC)0(Dn_36!Wo4WM*C;gL}H+E~+x0$yreb1?OI>wp?&OuR`yYGRL$pq($_P zU=c&4uXr8?cJWY{9@=|Bqk3Gp)<|TXs$ISxeL6WAP(yTiF5~eb{ z1%-QrUVK814?bq?0h8Azp5FBm9`ZYcGH>jBgb8VSEh|7_IQd_=T2?_XVQfs6@(e(Z zUCF>PWGegzJa`h0+;;hW#P%0uFuAd%WR$*dYFwGr*%FVx^6soei0FMt7-P()L;P-6 zC^SgL(Q#=sizNv1xe68YOSKQkaw9VYh-1xdZ)()g9kjE;iDxCwd6f=>#GwQxm2d-( zJ9$r$=b2NR+zJR`{UF*jpo5chuqjDwka8(4Bkrw-3A~z)AdFc^6*(tJQgHc~svh-e z7>!PjA*q*#(X2FMM5j!$j~u)@PDSDBw-QwW$K^4mIZ@|u>-tP5k@D{+S1NW&_PXTN z)q|-z9C*ysRuk471sAlVJp`jR5m*~d+b0tPeZP90QGgm6q?|ym=KJ7DQAKBf&m5;$ z29e<2s=wG&HhWmW>qr^kt>h)IWQx`6jm%io{Wrw?ARfz}qik=eZ=9CAWMF5)k$k+X zL16{j@9x3uT`CGw2ULo0dU+<<3RQdHIBM{tSP4t!5)DL)H5srMcwfE&oXEAg9Q_ET z${*cGYM&i5;F~=T+9SAQS-fd4=LMgAISD!Mgp0V_LM@r$rNXKL>OLiQ0Xoa^A2r`BDvtG*iYO%qm-W zt)y|Fbiim$LH!>VU=oAtYl2%a(Pl`R=FNf5tLAcw|)ebke%%~Q2~*iw!LGpUR0 zB8sg5eF-=wAaC^rP$cr*$b!*FTbWR!wDN@D+k+Hd8}s#bo1kjgDuCVh@ypy7L&9BQ zz7U9>bvr9X_qBJ_40Ma7WmY|)ts@MG3>?@L{beO7>bEczaewx?HM|LzA6Z49c0o16 z|1=ZRCcYx`Q1MZ-RF9ZOgbwO0W#EtF#8N2bG;m*inxV&~j25eUG9>}qy}OQ*vq_S% zk$aJC)$EDE z-E~)e%HvQGv+UsaB{u=&bQ*XIo{(yvXemH2#QAA;Not|DIXikLlW-Pz^u#wI;W$^; z2z{AFsDW8AN=9qCNNLQd??MQuSCrar^PNI2#qvz6k}hwou%M!gplc52KDeE`#^l7; zCb0@F6e!=YL|IIc8MKP9k#z5i-w09}!YpLPlfTbmPQ&n=7-A?=836myLGQ)$}8`w`&pB6WD6Wq zr0J`}LHR=m6h?bWUrX<$vo~nES?tJ(J*!YLk+Aip-8N&?>-Q8ys7!y_Uvnm@)k=&s zZ5!ty#IcDtUaAiMwT1rQf1<^y{I)kUI%HD7PlxzwU0pz^3OCE=yg4^=+TOCt{|FBr zvauAx8K(y!$^o-<1f$^`QCbfBhYeoVRs@3Wza;Nia)k; zX^i*iNmX?oQf$8LG;tHfTm(Nd$*9mzi5<9e^yfl7pMpcW>$Q({47BiXaRRiHJ@BN6 z9|VTm%_C*aU`H#6Eyw@Gal}VHzgc@sUFol0 z;h(dJ-6%K%$-?+xM2z=+^|Wz#A*AeudKyD+e$yrX19WaTf^D6p4)zCJZb_N8Te5eMS0R}5KK zck`~hs*gXC3NUx9H&Q@Ld*rn_E?g7PW9&y&3jsq@}CrxCYB}cDz?H!Y_ zh>D#Q1EjX;lARWYLyT~TLsoKZN!LJEElkQqSa>l}9 z!Oa9qR6aFaHivbC5WaJO2-X#ulJs_k^su(N`BnqyWkz42i*ga~ES-eo9^YY0`F3?N zEcdyiwMl@a?}p{hszt75;+FnXd50WbA8G5HBou&+9b?9gZdr=Q9e+Fy6atv3z|iHr7hRC&;jkA$rrj#G15i9mEw_u2#4 zt2cbp1gOr11DdN`;yT|uOv9ae6UUC<(}-ot>{9m<2{L+Lm6SR4@byC9|Dj`!(#xDX zT>HbAb1px(%^Ts7 z25z*MeYs1B9fO85nD~2pU}auH1&~Cg$cYLL6s5Ms0DVWuDx+ffK;t4Z_`f;Vo1|(u=z~8U%f1ThTAR71+(5lV8#*Q5~eH8p`6C>leH9%O8~bn7j6m8`yJz!Dig{a zcuAbxE1zCxOd$4KzOn&;Y~3aw4WLp5ux8nL>Ga6^L5Ams{T#6>A@%mjOYnp2IvauC zH|Yk@DuWGCK#<^;(08(uE33bfAU?3l;#{oB=;<7&-xI~RBt^W_n)C1BQGo`Yw1j`Z z@*k_cn82sIXpswIb^|25Af;_0UWaG>nVC#t+2XnLEkGyNd95YPRbg>x{i%O3r{_po z-nR(gM0K27p0<%T!wbcH!6HZ*@;z;_b5<^(WMq1qC5q8eebLozbs~~^Gd*9c^oj9)~P}NVvmS3;0^* zy^VybXom{0tU2Y_`9wLP>|K z({+@wz^&v8pL7u)4u3*QOkFC3FHQl6^w?3AIJ0dgw2OAW-cT(`Pld28YkGqeD6k^F z^R-zt04ZvNL~l$E@h>Ri&}}LJyz4u(D_&wtm$738U>rnOBRsd&L?ZL_B?j}-dX65u zGyN+l?(8RJh4ay2b)l2+W%Wifu|G*t?U7{3!V>UfC5wekPSe`LCKs>#$-Nx6cE;%f z+EUv_VD5xY%eHz&oa~_3KEUedd9W}ChK}@JM=16(R_>}FlBk1k>5onIcw-LIFdhjJ z`14D#v!^B;wG2Q#+OQf*DaM!{f5-!e&)gTSYWMJX9i(~`zc&mpQ;GL zuUFD2H?`v$OyO!smo%WOSzOdFxfE`-54xNEMXYiOW&_`0WxRrp<|3KYNz1NG4c8qW z2&r)Xf%(@~oFsl)+BBf~V$EdpzV#^yK}7;d5DR(gSC<*_Y_T?6L(ky?d+StwLi9KB zCV=GN^b5dxuQM7oD2-j~ypPWR=Zxwl1_G{h7}d zR`)!Q;A(U6>bN?6^UuK!79e1Q$LK&LQCCf;g(O_&KWkbpD7~}puG!)qHkLP_!P}ae zyDSKi+gZG6|1i7V!xlEtGdSd$Bg}R^*vBW&g1#9O`>Lo7Q~;_RPF~(@Vc0MkJ)-_@ zW4NyoGsTM`2P&-3j2lDPNyXL%a%ABzb-?Z)030<#$p@Is=C$k5 zaxx8!$+IivDEbPia5;rao^mwb+@7G9S;e~+)auhy&N7kXE#PTzLF6J2gBqDjr$xO?DOEmD{RK=*XFqxUs=X6(lwl-lS`E)W&(dj5q4R zD|C8@z&_*(RL~|K^?LcR1&op;vW9wFMoi8j#`QP~ZW_o9SpuandAJ%=ydv9QG4iO6 z#4fvhU)dR9+7U+yK~Jd7(07u|xk;dxvq-(#&F=HElS9g zq4wbJ(&+F&+q(L}8ok%80j*8twDgu7p%dxt#|O49{`k@nJ#H8xH(r%*1$Nm*Ia|Wa z{*I*5%~BC;m>V-scMA1lPwwMI3=iDxIWf{;-H^+mSDslg#~bCg0dy>ju6IU0pDvlS z8!NuQN?-bRKgxw_+vhEnsQlhVrZM0Pm?dz&nlkLM&(~-otl%WMf(nUcKRFB6r4lLV zX-Vg5ZrXn+zJgDdubL+rPfbF*I#ULOLSHC(?BMn&mp`#O5k^raTami^NynRqwt#|t z^hn-TgJ=JFk-Ehw*hl=%`Gli1`jlyS5i>(QAU5voP1O!$aQ=>tS->84WCt358>}{_ zeTuG5CeZd-iJ)Q2e@1-C;CCbBV&X;M3Y`Vvjc470Wc*zLp`^}7udanXC${n-aj{COrw3#Wfr>4)QF$`lpb)9QygUL8w7v6tmBKcCV*+-+ncu2E>(MVw9h93r zJY9INM!f_+#GntB#qVMu6Po6lX^J)li4L+8s>k=e>Euq4feF!E^-eVVsf(RTJ3_ia z8WWEHHq}OM$w*8A5mFpa)R_57Qa8-1!4alhQ1@QO7(Z2uj-+(4y4nL8;)ZVA(~#31 z#m|Ap<;hcX$|1cqSA~LRTG!Lb}|RCg$bY?2L&Cu zf`EIe;gAZG^jhobA)uKYuRN+_bW$K7)`htY;?qc1T7x`_F3_xtXX5MO&GlXC7DCZV zvtotJR3Swc@Wi80^Qd~KXT0I zL_d!42&%w7caok`w{u1%i!V#kP>srz$KA3DA@v_Oj+}H+;|d%joSr*X$mV zjcC$VciHVrqp8d!T0L-LK6h&Skn4SdXrmsc1!k&o06!MgESA~zVw}+)_ab<-0~z7` zJVCG0DA3#dz5}=~{Y<=9K9g8ipdgOBL5GvtJD+F+MdPUV=DZP;`k_Gq@p8ueUF?7iAtM*7Sq!fB&+eT^0xd#GMI;~*ec0e<18tr$)x=<<%>4y~FCI+@x0!_UiW`TwN z8t4O&_~^IyQ0-%^kwbSE>xOx9QUr+Pvrod0&WznUVYO~UY$$E2MC{lJ{?=dxr8`3N zp=45<_#&F&v*)8|Bp1#dOkjM}*yWvJhb*VWzr0wTwGLY@dX#`c9L^i z!GdM<)yCw)6(VH|W>A;8E!0&DpgQ_`QLSY&KX!$f{aHi{#if9xF$}idPS;!)_quk_ zx&3V`#i@mkwJN5C4%uVmaktgi>P-{Yu+44BbXrHKG@fNbJ1&s`#L(y6Hs=+PDT{ZT z7^=8F`9F>xG*$bX~p3G4?m(vY;O7+~JEj-oUx4Ap- zg81(f+?RwOFe}d|>EaaD7PKAZ2H$|M2YVs$QN(@zGXRpsg+oiXN~01w=Ba@7@ru3X zTUHy(CgALn-tUVDS15JE{bl2niG3HK;Hr=kN*+87|L*AJR_dyFIwup)Kx9TiTYn4H z15O|#OC>$yRBH-8&iGIKq9rThmQNIK9{W<71P-8st=ogtd~E7$xzX){7)&KFc~=rp zBNp;rF_PqXj;qSCykOyAn)ddgX!biQHFDOXa#tHHMcRmv5%LEx+nGAu2JR++AEEfP zA1-kT#-isgF=#%_k@ORjAuCO$TuwEzl+(m|mUhg=#yGjR>>c3i7c6Uyi{K^jF4Wr5 zo$q-wM6qsZKPeHtp59tHTO`hEV=)2%m`nJRVBeS6w zr%VK>xPdj86oFy@ptbD?H5)_1%|r`N9%+OIKG83{F(&jlXEebc0Lpw_`2IM$M#vQP ztmklOcOmB~E()!a!i+~0HeF`|KowkwULsmJC^GM{FYp#+?9XB(2N z!ogKk_6ibe6lh}68Rn?~$-}1;MmBN$J%gd^s+z31(Hr3%_rznpmGRTk)J_%=NnFQY zbcJ767`E{ltcUG6oHeK>{ME$Vvm3;XNgvX#HtX^*rB+Bf6?4#o5v6&-Z)=}QO?$uA zwhZ;g`Qs6?ro^Q#XS|jl+I!-7eT9=8ww*){pqT(qqA~SHpoGNwlh_(LUHE909?~g% z32QucbeQ#y#jZZjB?we6Y8S;`J7=7STXrlgq%#l01%pNaP^P%@4lhiAYIIpH(%>=D z5E=#Z~sBkLeY5<+d;aLPL=av zv3GSepCH53tDoZf#)u5wuW-Jhvj%;6B9(@{Th@6>=#XvDRfiH2qPHX8&3g#71Ps5@ zZuby_7@YqVn#@Wiu*G$a5Riw=ZSjoSnCgIgtoo9Q&$ zX4Gps>>@poYZZ=IxI2E%VlBe`+=S1_v8l20?yrXfTX62Z*n!42lD|{CiNpr6GHKM! zHP>H3Y%wIK95g+HZ1h*knTd8xNO~d8!)odrUxUgKyBs6CY9Ji#er-Ai|g%{;4-`}l0ElpKQCmrABVZ@rrh zYvZ@*L7%J`Jh^V1{FE=0K?J82eDP4bCFyjT1h7)0NQ+x0MQg=q_Nw{wcm5LBG)&CN zCA!7u8oTIv^Hizeyz+?*TvyWM2$nuV_hmyJ8ZD)35w6(@Z{lF&TL(-x7;~n{gRc7U zJS`W-sB+vXJoOsy`rhYlXUQv%G!g0<8>E0tJ4ZGL#_R0%>^)jZEV~Wd=Jb2-%NbWp zHw$oYA>TUq36w&GV4^uWl_)o27CZ8oHOMdUzw-)OyD+(pB^@jK~or{Z2lG$WES&D^3_v^;IBJ@QI|sDTE%nwNLz{Q6`SkDJ$*QDC-Nyq?8sc*1TcEwY=Sg5s>hD)_fAP+M%P zQ>jZ;;`Jc-&~^aF&uOeg&IrllYLURc8xLD}hdA~r+)G57h&#vKYi3{u!+Hs#bU=8s zEji@GD7HV|z1wnx3Eu$r|3ckG3qj!cf)UrY@AB!WXO#(Spa@_$y;Wyzz7wt8ec@6_X_eNJ zVU&#qhyKj>DbDjrf-9Q`4ofRN?oIrpa!V9~4%jLi(XI5XOTze9NhXcq(a`a1ci0J} z2)}RFp_PWn6vm!Ch5Kdb6_Z|lqFbL$h&-2myq(QRfI;1=ESai!I>aP44&`kO-GA^b-UZbOUYgN^TB+V@H7@|If$+f{x) z=zZ#{NYhy5iEiZ_3>PL*q0B4f#PER1#8(|8*Ynl~zk-#uM?TUSW3LR;Ou#WrC1gP+ z1|$cy@)@7cnLuf2j()1XvVYx^v8Phr#6MCb1Y~BTs_uVZbm$DvH@OKcb09{if&PlzkrYL59v>@ zZJ=QG54V*43#QRd6yw_Z=llRuo`yeJPEtH9S8F@7Ia1hbVX*~TeGN~5@>u>^HhC|j zm7@OUwX>tJo`o14t#168M)D4*$^D{AL#tIx-r?9nct;^=ND?}x~W;(cjd>Roy3cGB6urM|_h zOE!yRNCU(;ew26ns*@c^GRjT0VO?=@;nsId&cyXcsuM7Id24c$*!8X5I80dlS2%yj zcSd!_X@8=H1~53)nrE>IT=y2RmcUsF@+%)T1m!*}kLdt~XL7guHaM7L3p0r)c_n@r z7T?efz52Wp?ig4ErSUE=_!dCb45;6vxe9~zl^Cym^$#O<_1e{FO(kBkE1bg_iN#KA z?CrX@ixLov*nJTkeg8WZ#I|ns8D~@sOn931@QcLGJGgB+STJ?Bbu8`tHS{B(s%HR3C1O<)wLfz5DL<0!*b_ zpydc9bZ@#0LEpmgvVqXSS6p#hO%?gaHuFn@;p?2!lt<^JQXbr5w*3O6JNileaF@?NEhh@Vel$< z^Gf}*-0LiY8}EVXmz^SAI$+{dMxL zgXLhr@ujQ*QQrHc=w{(it~p^entBT^&CNT1H$oPvF1en~ zrP~@j;6%K$NV&93h`u_-2wuJ1WH{#pLZEMV7McgX*a&?%g4!c*0({L=usk$HDLO@Z z@7D*UGIdqNtD6^!H95AArvi`5TCq5z8^|gN8Wg@4k>kIaFv^mbFMRL`l*7IlzUa+^ zw(cXkUg<_H@Qu)0y8^Y-fbu+Ca#cLU$4^kyHl?9{9Plo2$i#pF6=q1)(?_&SDSA=% z(n5=&&<+6M*3ZS%pB=M#i9Z8Qs%>O?mzc0cl`M#qoj~ufl`Zu&mEGi>#5aW4%1iyg zu1vjo&<9#v!=d%^ck3*w6M$@i=M zWxf02v4J)~L(RfLoCYAtifb-m*F{qN9X8d?Gs#sw%eXKVJ{a}d(^0s8G8b=u%FPmZ zFlAXtSn8xirSn?*12^r;fgKH>l3Qvu=}x+KqUb=Q6+r}NUK)~SnlDc7Wg92jh|8~N z4tl;|PJ9eYSZd@iTy>DYug#iW0Qp?ZNUrL=jWa#_RTfR;GS8z#I1i+9`e?eI9UiQ) zd7+(pZ?eY5|D_C5T-F%z1u!_J>Bnz?%?_6yW@P6U*H=J#al3fU-uR_eYC4 zH9vSa4MYFjX0kbuGm{cVy7OylN72uLQ|BXZnNFGB7t4%|gdDa|?B#kN2kxx4(b8sa zPKzZ6<1pY80_$!oDQI4k+0jO=Y5)=E+8wVbP6KC=Y6W_xq=@z9K`k;C6tw1#H={F- z84wR&EYi3A*lsn67;uOHq$Cy^wDP(t4ss8F#d=L>xip=rLn1hgD~(D^365w>DPm+5 zyL#?(^J!zq^Y`l+1bkqLW?93BoA)R!9lRqAOoqU@-J@K`?pAmY!LBEF-itTE%iMTN z*xeHpgJ+yx=^3=;BGa+Sg~ZhtX#HlXdL@kE?QBjzTZ21v`r_cBd{T)z>+`UaV1eqg z3NzkeEVTQU({xQcLjW|nzEpyyOSRu6W%mSye33|24^leF9Y?DGXvYSWiL=tN$ZuaC znEOHszB49Gi5-o}6FZE)<; z8V@+78R<*mZeL^_wI71k04z9DCRhA1|NHQb*5WPu9(;f_!R#HXaPB2^2)2qHJz~$yjpVsJ za(=e3k5l+Xq&*!(zxzr5(3oEgO3I~$2j!k4F_$@=$E_ECX_aH{3qB9UVL0_iHP4Nh zA0CJ9U`Zma7|MtfX`mAG8~)HvsbD-h40%xepyx$*2eJ~HX`Sitij9PYJrnarZ%l%CW6h=a>Vh(i67 zR(wFg8A;2iWN20c(MASe?-W+jF^c<|_ZM6oabbPVw$8<7{ZqT5Zpkcvv`%*e`BK=; z9OYF6voO=O`hRPXlr6_)t~PzNCU2@-;KA3=;jyEi0iWas-qjDauQq(%Fwi)#) zBvUBDJGnGK$tr^}^0j=djDsyx*01xFFUhV+s-GZ1T*EcAVkRsY20PtQXMhm;N;+;#1e=$qa*wl~H3-S&dz^g3)AYGe6Sv+us2>u(dg7pK zsSHD;ASt-Y`5IR#=jGE~u7y@-EEzF=qY>hCcxcqu?itNj+Wl|gdQ!P{b!O2NG@1tp z2EEkAQ}vI%ymq(3{U99mm|8oEc>)&7g}bRhZDgW>VD2bXjNgWCb z!x&7IKY-2q??%)0!ew(6y*7ZA&A2!6=nDiiIpQo`;BIAS}GAD_Q-U(YSmQZO2lQCdYDwUKsPeG78=d7~VQBV8cY{l1;>$}{c2YsU6)kZ7qFhIIhjc*KeP0Q%SI}8=? zU_h4=^Az%gNIC28zguaRo*5Ch!8cttU*KBxGh1*}A~DuX%>9!INdcxX2Tlw(R1Ar7 znc8jeirSUo7zxR@)r1F@-QDa{ElwrJXy+U~FFmvC+_l1$7_g^wPjv6$c#Mt}Es~d|#Z1PrJg#YE+EftK=_|Y28jWThfItWN%LX2J|L7fSVv2 z3d{^~xf3*GJIeL>RFd_|10Nb!mBS0IYlakmVSXwGQc`&MR2w35+pv3NQ$pCp1t=9J zHdZJg%kl#YT$hAXrFpTq?$|F#*>_>csnj$3VSh|5`++&1W@FU}U;Ht-~% z&tIGXd1yLKL(rnm#FqZB{Spx*-mEiosc2@h2fL*V+){=DopP}>FolX$&P$KldIlsT zi6xrdNbpzmY+#KAf-f-%=h69@u9Zha=ocD4=mGzg>eD9@FH|VaGD;tlr;8R)#Vc82 zeE1LY@190?_O?Z5<-bY(K?eE@f-szl{~1qp)?G z^vnHNt&23;-q`_=ede8krFugimmL!d?OlL(evJ#s2h_Ft%H{uP`wg0Zl^$n=xlKNW zk?I*Q2EX?hHca#h+*Dxj*f%ej(T{a3=6k`}JvZb8CkNb$PHVmRNYR*+@%8Z=hhpkY z+)G8q?H_r~#YL_vMapKCF5H_M)}pFp%u=Mw!k+8MS)hm(o*WSjOdOPJKAr%niO6`7 zd5~YOdV@BABA~RJW`|FWewi?80%Kymp?Q^xe*69PMT@O<2kIX3{ zGkK$yvA~_Tsn*_Q^Nsv%3?H%YiQ7Am}STlY2{}=6QYxlgI<*f9r@kTnIXO% zgfG+e=_`TW9PGE{R`v+eLOh{0> zuf#<^dsoq||DO~dn7RX%oK!(-l4Dw5u20G-qFcQqs&8V=3RXQZZY1tM$-u`P>qmaBOY?(&pJ1jeLpK^VM^2vu1lrZ9>v-&e=|~a zFy8(L66X=d$)HZ4G_9M*Ib3Pr8Xs$EMp8MXt7c0I-X$W3gSdQ#pB=Dil^nB5xS2ZY z2$9M(k=Uc$8|CBODe@cMn5C?dvWM0kbjedLk}yLWlm_aI56)Mc>b`;B_Vp)(^{ z`*p=i05@d6&yEf1u@e|=3((6teE4ePIXit5#f;K$==LVFOH9y_j*|ahjb-m((Ae{t z(kKseP+vwwfs_%xK3_mqAAbu7;os>PftCqqoPIIat^_ykHI(RbO~P|~uoXYkgO23u z!fng>8jTl*EG}lnR8tSv6w;u!C!RP06msXykL+J|F^q$56PGx1!TYEN2HaXYMrKy& zsw_j|0pF7D65r^=dK_K&3_&VT) z+Z+ghk)PY$G{C{+A+e}2x(?%VwMKqX{1IBnFge4+%xZMyGs+S%*6I;J-B2H^9ARmw zKjbw2b;*3TtQ860ql^wX%*JR22(9(X*Pkrag!}^MI}2>Spu$b%Hu;nL-Wx=CgAeqU z(zNMX-bo542K5)<2}KKLyenB<$paFfW;jet!1|k}*`)+Zyca~$O zyL;NO^KHyKSIEoKhlY8F0E~CeGf*@#-772hpI?4$(lJYZh4ODApR_t>2WdR<7eIxu zL%z4}>8y>MbG%|(q3bW`Rnex4#Dde|eoB2%Z??9qwu%iZ%fAsS#%H58d+eUD*1J^L zpAlw!{;K{18=&yKGB}i@Yb~?kmZ%RfB@6Y0v1eK4Wt+h+^cG@wIrOiCLag51z?9*I zTi?f%-u2mi&ja;UPcql^YRkB7PuX@;np;MA%GK5*ZNq@n7qd0n6Y#xcmTw`4b-a`% zN3Fnqzp`P26C|!t1`qsB-`_25t=7+k_`ASNNzf`4_NXK&5a=hufNuyKQOm6|=>Utjt3-nH;JF=jjwb z-p2`sov@y9x9O$>@2B;|&~B|rW1ia9ACmrSvEkMV)0i`p49oDsNP?+PKR!tqEFuPK zt_7A}>xkumoe|p=rO{$mdL$WZ9PUtFI>6?%&EVlXZj-@$c<-QbK-D49gx;qC5m=BA z^fFHWBok<{Z@8t~6DCh4`psKL@DfaBn@PggqcHMV19biOAJDt~Gjpj(z-eFx3Wl)F z;zk~{dNS4bSvxvnarA|DP}PUIPk6&ZuI;3IhZOU)KVCa|kgos7&5;?-|T; zbTIhHT@;a5z+D@#j|d0KnL`2}AhVecyB3VF*@`gXxr8sj5Ar*6+Z}maz4chOfn^8l zeHcSf!*kIPa>>5JofRA$JE}~Zl1$;>1xNT(Lu((=_M-Z}5h{VH+k;b&n$^?rKwzbV=ua#w z5UCZj_(Rg%sht>RtU&6+0iWkFC6K*dB1FKr{_W%Y4%Adx+I@9m?w^ik>4zVo|0b8- z8qGbMXA?-hi1KRM*gfmvXEExl8$g9H06v= zI#yNsKNNi?kni2?)+{uIh9yK-!LP*pr+fCo8#0ys@x)N;Y7bfL}c)JG$c14$v7*6518B#+X+y+V$+`s zc5zY$*uFq1PMLvdB9}U@?XD#$HvAt`^1c&D%e}Qmlb1--TPPPMfSgI@+Vut4qDsSC z<7LIIV+^VJW>)0)WueVUmD)U2`ikN7S{}ii<-Ra}KC4$-LgiNt@wL}ie=5I1OUxvq zmTRFonRp|Go{a@N8^pTTy=27(NlW}ZvuPzN3IZE`L(1Sebml@4$kYZ!Y!BK%9|m`e zum0BQ>(CJSlv@X%Ie=D2ldO5jaicXzyy)Nz&KZG2uyJ@DWsTwMCA8&_K1{2)t18CJ zNzPfMoH}N}?nT>eq9;=5VQ{0wT+47GBlYQw2X`^%OR>9BWbVSSAS^)P)CeIyRQMU@ zpXWHERvhgYyw~yuZUDx=V@+{GJEE1qL0>tOqqyY4mW1#@Nk$T5d2Q zdgtS+Xdi;TxTwPTsTir}qh2=i{GTP!zz#Ds2kt^tM%8g`L3$iPN!zU}*0zkT0odmh z)}|2_x0Uo++Gp2J3+`OKTS&mS(Wb!|-}q#)6rd)g(z+rKn85Y^0ajJqmMgD~_fIei z)aJ`&L{gy=s)UJ4ZFU;vj|f2hb15iR$vt#dSE-E3aiXm^ea<`$AvAlNJ7tloSYyMk zdAu!G1jb00#v+y6PbA`1&&3tR-8h2#&Ua3JkfnY|-jW?C=%IRh{d`m%!2 z1E=BafLT-;U*4sb+{7%-AV)bRPt$c`@xTBvz4C9JRw%XhX|9j!zMK^WOa|doDXu3nK|L?6edH?`{GY75@*ZG)M2-HaBYvMMi^WLc; zHG~BklEIOn0rE~DM&ifEyuV$zufWV5uHiON2n#JrPisB`O>R2ZM+r?Y_f4r)7tbR? zRB&npN&~?NeR>P!kD?0SyoJTsT+Yw%d~A17{z)_4A0web>6RtR&#CyjrE~;vWH(*o ziuNw%XGw^Qay)Xc2C9^-ggzp*N*V5o3?voQoNlz^P9olx{s{~)Y68%SpP6-Q}f6(2F88 zdCF09F~)PGTr!g7$8T{Ue?Kz0e=59{n1@xdXs1n*@)TeD+BPujc66cf zwfN3*hReK3l5}^hs+i*$2~W<8Gu-^sZ{h0MN+029<%#*sI?5SeJFNsI#UG+64EVfv zwVfOzJV!EhyxidmNx_{p^S9*8_vk;O70C|1+#aNh&tDnYQDe)Z8obN$rlDPNmE>{x z%!yvGNABNEpgP!%>U({!Qv5CxHpAVof7#;a{n^@C?tC!7;XW7;qfRQjghNNC#Q^A7 z=4vL^k89#`s?9t`qDLN=1z`eo${r_`4AufWYg^EH7g9n48ft4X;t@8~VuRqo6za|} z7*ACOw=g3wJ}9Wb7atJ<$ETW2MG#ry-}h3A%O5qEOG7x3j9=J2>)7~#?#;9p4uJ#F zo8C&!!cAC-nV=5V%dro3>ud{t@fmVW`@rr5L|h6PAgOv7&dair)H)00uG)0vd1Ixy~FBaOXK`e#iPARgrF&@4)gB{uuHx$Z@sb%L|;` z{KJ46_UnWhT}79!eouCD+Z9m%E2h(uO?9}KEPMC6Vh`5)0RBy*<`oQ)=k8%eeW9JD zXxU}JA4M80^ou)3CT2eG$4R9-ZwJ(dgEI!#*dJ$r8RBDoB9RwZMh+4~=_p;J{@P#6 zCk34?l&tFWIiE1gPa#7nBy$8hR`~K8&$+KlarSJC{$?8EnB%DlD9F5#yfNYJXi=xk zb2v#q?mCHyE=3Im<&{=t0}8gG%9X8Alon}TZm`Wx>DSSq#u>8 zyE!u~s;2_;N{wqF_`vz`S?{ULuN3`cZqz3fBj{1c4Zt=18&{>Fj(5!{cTBZ9O9mzu zsFcdoK-nrEIEn9Y@qb20()Bz@&Iki24e|4*e6FWCMqoLG^<5tVd;Z*g>X2Bl1l?a- zhv46~r6ZR^Ksm)qOT)XQInEfSYvLA|lc&|2SbeB}DxLMl++rfaXXQNyrG<2Y0*=Jl zUyIF!)Q=UWQs}~Khs&>gKsGX%(SzW!BPslHZ&PqU!Hdsq4qf_uq>-I|IY~H*q--v< z5%>;V6*{p<76( z-{-!IrO}ZF(u;HSWM`1m|4Q_fGN)67th>;6Tni^`E69}TxTx9nf2a|kEPlL{zeqopusVk)i*Kn?g`6U?V) z79mpW^UJr&d13==z~l`E9w9*0H17UwSe&mgn&c&p)3tI>qTI5#OP?9Jxno02)LwnK zNN^j9@qEFC>`5fYUurM-eLxz;om?7K-|6nLbs}*O)qQ>PIy*0~^dXb__aSL5(i^!; zBT=v`o{T|sF}4gN1kc2ktkJMgaxEqGRbRB2rMgYUyudT_=grWs&O20(VayKLf&g#k zQ*Z^|1gwN(saVxken&F}UUy&M-s7G9Ti(y8sBeHq`lCeTb>)xY~E`roZhzpLeFKLi}U9BE0`A$Upa67HYZ?WpO2JJ-{$ z7LzLLO`)w1!h`0#@g{V$6q#_$EBOiYG8n`>f?q2~x>hN;=OdDFI$+n1pZGr$6L)y{ zT$RdiL8DvhXGdvQc0C^LyZVle^-wixAp!P~>;~8!@pe{Yw%x8y6vNp0KO&wQ5{~Zm z`C*2yc`T9}B-8QL)WV*IdcE+;KAwv&KO@sU!A9a?i$;iBh)vjW;BFeWq^sAPWB`1n z-li9?C5}EO9QLXdaykO*O-h=kf6Q&ll)4H4?liZO`Q`xV`cM+@#Cb_TT|zW$w$JA> zrvwIQCm7KKd`P4C{+QdzI_v;S?`MDHkWc*x(Y}*1>R{w=Dc9@cqCBv{Yty@Cqrhq2f5E;Dc2=qGCp!mZ15Z z^_Xx5zd?{}+y}Q%~sq?>}AwAt>)i=+uF`yzy z8O*kx?_jJPxh?W$c6vP$o-_j-^JfrZ^s)emG>oZ=#vwwrQRo_|hDvdNs;?LQkGvk2 z!RBBo!G@0>NElvabIY+3rAen$ZsReRfcAr26l z)Ic>?9;K`Kl?l2Mt^Yh{lxNH?c?0Mxw;wh%<_E}|rJ;kV2uR2mWA2U3dLXT8Se%4g zZn9{=-n2n;?b|^U+?DEc`;&uo%4!_>Joporji%LSJI zP8J4bwB%w$?*u>)s@zY;;X4kg7bH78NUhnFcE8(>d~XH9Ml`CdtI(ceJx~R5hi%Rd zwDgZXcPyTi>%m)xACTMrCcrvBzY^2;vEIz6*Mz0bmII&p)oXY6AAo$hk`QFGa&7Us z^LfDy+MpXi00f@Iy+v-(A+4fUqb?;{{?}s03zhB`L(k2V*N9p87COSD_EkXAv1wT< z8k0sr*Je?hh5NDEOhFfnVSz98)fl9RxHQD23$cP z@0Vfj77pb|+zx@P%WV)Yq(|}LtAD}(OML9;F-u&qm=f2HYQiwxMCAiF3IGLDB)4$S z4e-o!)dsd@S`^hnm!$UX4^btuH1TJEO&>R2m`ReEOo1;#u$u>Q!s~m>1cph0CXDKG zBSW;525V%n3LDu9ntO_Yq%7^M3eAm<(Q+Ko&%^$x5K`Tq z|1#-#f=;yd{Em|!vtz!zg*G*hh=t(uZK+|T{LhcqYj5J*eUJ3XelCfpQ~sWYGu3cY z_c4o$8igF>FuE#(4ab)xyJANz#P#aIB3V6c%4UMD8_leKXEF&s!l*PfxlV%A9ysW*2YlBh&I`1%f|a~nrDE2 zcoCBhqiU!-NR;~Q;~reHBX>MdZ?1kiiuE#=|I{t6x5awT@p%hcFJUg0QQo9;Ju9w> zAOk<7*9v;0ui_}Yg@+W! zLV|gSE#1xZBS4Y6(F**F($&5YbbCeF6GgNF5F_{PMOt~2ym^zO>Rk#LXGeW%AWNv1 z07S-|gR)=Acy1KxF#@AF#SOo8RdEX$dojT&n1Z20m6+QVor+L$tjpAs4{q!{?t%ta z)Y%k`LKrp)w$>#%7}xg8WN>jv_F#1o@23fm%$R67nBtp8o1mEL3E^Wl=~BoR7gmE& zIOyetniARyEIb>(!48_XZ*2jHe{pskBmrJ^6Rb0xh5_VFl=%e1Vm2S51Q-#4iilvw zT&qO9hZx|okFK4o1hmZF;95JU^Z2vq03y#x#NWy>2pOmaUPGBZygFD7SxweHX|Ndp z!oQGf2g7giwmj5;ycPoZ(4-a}*XP82xt?Z$!y%Qv*Z?}KcE`2&ns^VEV5X&3Qq~#% z2~7NQcX2{mW>NWDW3P>j$3WVGzoxHNY*+r-1)8iS3c zL(s97x3Ueg%5u08+g{*;6{}2P-BvdFXU~sPY&^dbbkZzXEie;{ z8WSkfG1&Jj-Z7981+-u6pgFva#@}=)bh+&eJG)pxFbaGorZmC(k3_B2IBiuE-E;V-1=w`DH(OO5Vo0 ztXs9UQV@Ssu4pB>^CTtIDtq(2%6Bwg1Yl6f?uTf&ux!vjDLs&Bv|;sW%%>ui2!(x?Q&Z zfghBOX*r@W*SWkdg~RFW@A$>v4y7QHnE4iwhM=EIQ3~MCMfMw4*QZPpzj4usu=DXr zi4sLP1;Gg`h-!ZjCmF1x@@ZP;qKQP8P%LuP?wWu>9!^|+YKY|y3P(-wyjO)8tEaVG zWTI3i?&L_h;LRCZ4g@ z#;|PkzUCo>;TEe%?M;KZ?&@xIU}m9#e?L(W9aNzvaN_oN8;y@Od+{fzSEsnMAe&(S zqK(pQi_0^9>xE{=d5*pqBE^d4O-K2-ldmyW3y{BYjql|Pzi{rmW1(OWnN;f#6yX49 ztj`;T4`dU|vQp+Jz(mFY_i;@WGFlV_IJ=RhJQw@Qcx*D>@rAT%#HkJ-T(f!zoL~3H{-;BsH|Ls!She9Dw;<#jq`?kMhcnR%XW_#$eJ0NWFL!;u0M~z?n>GNp&aO`P`p)2XMFKdec1PS*22$9el~DWux4;lx z)}{Z8i;9`kB?h62K{EkZ(l^5c9pb_@CnC9!I`zvNkpZQ`&YtmkWZVxjlsF8Gv>o7esTA~Zuy>_DPxEdZ@T!!TTu~xYYN#{LU7l% zqT>x9AoP5IY-~)aWQNB`gt?5{9^?XKb-Mf_`h8Tlr)fbw)~?m_E9Kn)cwYxZC&xftAx~qZs zs40j8OX)?Di(LO@Q3rWe<-6`K)&Eq@02WIU z5?U6hc5VI?Q`D4Z0;b&{pTC$1wP3M8)>GRQX2CSw=J6mmD#$DjzW=4K`MoO;y&eHk z3f98RYlJBkDQCaw4=R04dqJP@$S-`9Y1kAR8C7G|>Z~D3;6T`K1%0%{>lTir>m`?u z+Shy773-wbNQ%MJTD`lTeGvFrkA$d9jMz~xQ|e4zj^i1XkR|_}L&7Gh__9h4NKd~W z{#?Ao!({@rI`mq_p-8BT8T%|lYiv0`fAI_ z4J^R~nJ?&}P|iN>1H!x}6s7gVIa-s98==&m>QqMN{YkQ;&WOYxV$NU(Hap18^&(oE2LWG4rBIQldjUOP4d|jI;XQ)a3H{ znNp&htKOeo{Qw-^5aZZW^E<0^+8`q#>d#(%PC4{SwV1i|TA+i~Dz3mCLX)MrXye(- z)#bdh{Yl!q0JJta{S#h-6UI4{p{Zqgd4fg_ukw!uFT$JGhF?cGfryTWbakMK=Vp3k z75aIgSI!Pfk!EtE3b)i&4mOetAGuAM_ii^{5-oDKyWy>@vSpQiwFW;{3*AOf*z}RY z0iRq{mrTAZb+?J=Q3t)>>Ok<{gq@{UQtI%xLi+Ev#BGzNlc7g)^*pJtgjeuoq8(c1 zxXDH6-U?FQi!@H{@GCi9Ua|Q%(qY-*WeDgy5l!COj(+Np@quno>V|j_OC0lLaH*pp z#-}fr8JJ}}im4^}9EmYx8(mt@U#V-f32*`nY^<1EXjl8(rXUe9-|Adm&Oi9^qIdFf z?}DP9E%++tq8`9nKMF+Dz0X2+t39D9j?H>IG1~{z?nyfpJOYl|{*K@hhmS*GhlNrg zp80qxYXD~yORj$X!%3DpqqQ)}Yz>>}0 z!@w?c1EVGFJFCwLVCs6;aAa=DIa1)(uW~Vp0a?yA(GS<>tv$eXN!P{Nh_Z!tN&zwx zg-0zznF^6yQusWQ8ktquNbRn9;)B|)@r~f%rD)zn%k*bvSqYu5>=|?mYb40*Rr9lS z0Y3x4{G4tOl;&%&8}I{ixS~^9i+C8?1e(fijXP?6>?6O2nYo-&tRFZi-hUfmY6jji zoHH7d5F^-D{Wf1QSTD*x8C>tNa=%@6R!3h<@BT_W7JmgShOW8WsrcB?)foe{&R7wAgdT_gR&r{fk)e15UHcSs2V3hFw%F5tv6{ zfGC@pfn-&3_p;q$v-@TZ79*(Giqb(j#9R09SdadxFdY#&BFk~@!YHWubHAW9tn1t3mzBOp zW0fb@H;0;Pqh!;3qNjaY27#)K>f!b6*$DqmkAAEO$6*(pqmgS4n(t@Fg%i7Tu2kLu za(C%U2GQ%hOeCpA)V?P&kF++xyD-h0Pc>)4K#PGDwoxP={9)(rUfmP29`gqN}{D2uKtL`O2;&Rs;SnjIfO^T;jKZgZx7)F@ZpEHg;;!*Vc)g03$ z6`8oVnCh_xR2^)KD{dR`G^~~v2Ej_`0STRD00#>J00AQd0RaVF004jh48jm+3ISK= Hj?e%A;yf>N diff --git a/tests/integration/studies_blueprint/assets/test_synthesis/raw_study.synthesis.json b/tests/integration/studies_blueprint/assets/test_synthesis/raw_study.synthesis.json index 1e0f3ada52..c0d5635c70 100644 --- a/tests/integration/studies_blueprint/assets/test_synthesis/raw_study.synthesis.json +++ b/tests/integration/studies_blueprint/assets/test_synthesis/raw_study.synthesis.json @@ -1067,5 +1067,5 @@ "store_new_set": true, "archive_input_series": [], "enr_modelling": "aggregated", - "zip_path": null + "archive_path": null } \ No newline at end of file diff --git a/tests/integration/studies_blueprint/assets/test_synthesis/variant_study.synthesis.json b/tests/integration/studies_blueprint/assets/test_synthesis/variant_study.synthesis.json index 7e449747e4..2d3c3baf2a 100644 --- a/tests/integration/studies_blueprint/assets/test_synthesis/variant_study.synthesis.json +++ b/tests/integration/studies_blueprint/assets/test_synthesis/variant_study.synthesis.json @@ -983,5 +983,5 @@ "store_new_set": true, "archive_input_series": [], "enr_modelling": "aggregated", - "zip_path": null + "archive_path": null } \ No newline at end of file diff --git a/tests/integration/test_integration.py b/tests/integration/test_integration.py index e3d614ea9d..da7b312e9c 100644 --- a/tests/integration/test_integration.py +++ b/tests/integration/test_integration.py @@ -254,7 +254,7 @@ def test_main(client: TestClient, admin_access_token: str) -> None: headers={"Authorization": f'Bearer {fred_credentials["refresh_token"]}'}, ) fred_credentials = res.json() - res = client.post( + client.post( f"/v1/studies?name=bar&groups={group_id}", headers={"Authorization": f'Bearer {george_credentials["access_token"]}'}, ) @@ -1554,7 +1554,7 @@ def test_archive(client: TestClient, admin_access_token: str, tmp_path: Path, in res = client.get(f"/v1/studies/{study_id}") assert res.json()["archived"] - assert (tmp_path / "archive_dir" / f"{study_id}.zip").exists() + assert (tmp_path / "archive_dir" / f"{study_id}.7z").exists() res = client.put(f"/v1/studies/{study_id}/unarchive") @@ -1563,12 +1563,12 @@ def test_archive(client: TestClient, admin_access_token: str, tmp_path: Path, in lambda: client.get( f"/v1/tasks/{task_id}", ).json()["status"] - == 3 + == 3, ) res = client.get(f"/v1/studies/{study_id}") assert not res.json()["archived"] - assert not (tmp_path / "archive_dir" / f"{study_id}.zip").exists() + assert not (tmp_path / "archive_dir" / f"{study_id}.7z").exists() def test_maintenance(client: TestClient, admin_access_token: str) -> None: diff --git a/tests/storage/business/test_export.py b/tests/storage/business/test_export.py index 667f357ab9..d75783fc59 100644 --- a/tests/storage/business/test_export.py +++ b/tests/storage/business/test_export.py @@ -16,6 +16,7 @@ import pytest from checksumdir import dirhash +from py7zr import SevenZipFile from antarest.core.config import Config, StorageConfig from antarest.study.model import DEFAULT_WORKSPACE_NAME, RawStudy @@ -48,7 +49,13 @@ def test_export_file(tmp_path: Path): @pytest.mark.unit_test -@pytest.mark.parametrize("outputs", [True, False]) +@pytest.mark.parametrize( + "outputs", + [ + True, + False, + ], +) def test_export_file(tmp_path: Path, outputs: bool): root = tmp_path / "folder" root.mkdir() @@ -58,7 +65,7 @@ def test_export_file(tmp_path: Path, outputs: bool): (root / "output/results1").mkdir(parents=True) (root / "output/results1/file.txt").write_text("42") - export_path = tmp_path / "study.zip" + export_path = tmp_path / "study.7z" study_factory = Mock() study_service = RawStudyService( @@ -74,10 +81,11 @@ def test_export_file(tmp_path: Path, outputs: bool): study_factory.create_from_fs.return_value = study_tree study_service.export_study(study, export_path, outputs=outputs) - with ZipFile(export_path) as zipf: - assert "file.txt" in zipf.namelist() - assert "test/file.txt" in zipf.namelist() - assert ("output/results1/file.txt" in zipf.namelist()) == outputs + with SevenZipFile(export_path) as szf: + szf_files = set(szf.getnames()) + assert "file.txt" in szf_files + assert "test/file.txt" in szf_files + assert ("output/results1/file.txt" in szf_files) == outputs @pytest.mark.unit_test diff --git a/tests/storage/repository/filesystem/test_folder_node.py b/tests/storage/repository/filesystem/test_folder_node.py index 073fead252..bd0ee4c3f4 100644 --- a/tests/storage/repository/filesystem/test_folder_node.py +++ b/tests/storage/repository/filesystem/test_folder_node.py @@ -31,7 +31,7 @@ def build_tree() -> INode[t.Any, t.Any, t.Any]: config = Mock() config.path.exist.return_value = True - config.zip_path = None + config.archive_path = None return TestMiddleNode( context=Mock(), config=config, diff --git a/tests/storage/repository/filesystem/test_ini_file_node.py b/tests/storage/repository/filesystem/test_ini_file_node.py index f4571d3ea9..3864fa875f 100644 --- a/tests/storage/repository/filesystem/test_ini_file_node.py +++ b/tests/storage/repository/filesystem/test_ini_file_node.py @@ -96,7 +96,7 @@ def test_get(tmp_path: Path) -> None: areas={}, outputs={}, study_id="id", - zip_path=zipped_path, + archive_path=zipped_path, ), types=types, ) @@ -147,7 +147,7 @@ def test_get_depth(tmp_path: Path) -> None: areas={}, outputs={}, study_id="id", - zip_path=zipped_path, + archive_path=zipped_path, ), types=types, ) diff --git a/tests/storage/test_service.py b/tests/storage/test_service.py index a1d0724c76..6490a46096 100644 --- a/tests/storage/test_service.py +++ b/tests/storage/test_service.py @@ -1569,7 +1569,7 @@ def test_get_save_logs(tmp_path: Path) -> None: output_config = Mock(get_file=Mock(return_value="output_id"), archived=False) - file_study_config = FileStudyTreeConfig(tmp_path, tmp_path, "study_id", 0, zip_path=None) + file_study_config = FileStudyTreeConfig(tmp_path, tmp_path, "study_id", 0, archive_path=None) file_study_config.outputs = {"output_id": output_config} context = Mock() diff --git a/tests/storage/web/test_studies_bp.py b/tests/storage/web/test_studies_bp.py index 6774f6127e..9729cf57bc 100644 --- a/tests/storage/web/test_studies_bp.py +++ b/tests/storage/web/test_studies_bp.py @@ -356,29 +356,6 @@ def test_edit_study() -> None: mock_storage_service.edit_study.assert_called_once_with("my-uuid", "url/to/change", {"Hello": "World"}, PARAMS) -# @pytest.mark.unit_test -# def test_edit_study_fail() -> None: -# mock_storage_service = Mock() -# -# app = FastAPI(title=__name__) -# build_study_service( -# app, -# cache=Mock(), -# task_service=Mock(), -# file_transfer_manager=Mock(), -# study_service=mock_storage_service, -# config=CONFIG, -# user_service=Mock(), -# matrix_service=Mock(spec=MatrixService), -# ) -# client = TestClient(app, raise_server_exceptions=False) -# res = client.post("/v1/studies/my-uuid/raw?path=url/to/change", json={}) -# -# assert res.status_code == 400 -# -# mock_storage_service.edit_study.assert_not_called() - - @pytest.mark.unit_test def test_validate() -> None: mock_service = Mock() diff --git a/tests/study/storage/test_abstract_storage_service.py b/tests/study/storage/test_abstract_storage_service.py index 97793c206d..7b2dc79c28 100644 --- a/tests/study/storage/test_abstract_storage_service.py +++ b/tests/study/storage/test_abstract_storage_service.py @@ -11,126 +11,46 @@ # This file is part of the Antares project. import datetime -import zipfile from pathlib import Path -from typing import List, Optional, Sequence -from unittest.mock import Mock, call -from antarest.core.config import Config, StorageConfig -from antarest.core.interfaces.cache import ICache +from py7zr import SevenZipFile + from antarest.core.model import PublicMode -from antarest.core.requests import RequestParameters from antarest.core.utils.fastapi_sqlalchemy import db from antarest.login.model import Group, User from antarest.study.model import Study -from antarest.study.storage.abstract_storage_service import AbstractStorageService -from antarest.study.storage.patch_service import PatchService -from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfigDTO -from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy, StudyFactory +from antarest.study.storage.rawstudy.raw_study_service import RawStudyService from tests.helpers import with_db_context -class MyStorageService(AbstractStorageService): - """ - This class is only defined to test `AbstractStorageService` class PUBLIC methods. - Abstract methods are not implemented: there are not used or patched with a Mock object. - """ - - def create(self, metadata: Study) -> Study: - raise NotImplementedError - - def exists(self, metadata: Study) -> bool: - raise NotImplementedError - - # noinspection SpellCheckingInspection - def copy(self, src_meta: Study, dest_name: str, groups: Sequence[str], with_outputs: bool = False) -> Study: - raise NotImplementedError - - def get_raw( - self, - metadata: Study, - use_cache: bool = True, - output_dir: Optional[Path] = None, - ) -> FileStudy: - raise NotImplementedError - - def set_reference_output(self, metadata: Study, output_id: str, status: bool) -> None: - raise NotImplementedError - - def delete(self, metadata: Study) -> None: - raise NotImplementedError - - def delete_output(self, metadata: Study, output_id: str) -> None: - raise NotImplementedError - - def get_study_path(self, metadata: Study) -> Path: - raise NotImplementedError - - def export_study_flat( - self, - metadata: Study, - dst_path: Path, - outputs: bool = True, - output_list_filter: Optional[List[str]] = None, - denormalize: bool = True, - ) -> None: - raise NotImplementedError - - def get_synthesis(self, metadata: Study, params: Optional[RequestParameters] = None) -> FileStudyTreeConfigDTO: - raise NotImplementedError - - def initialize_additional_data(self, study: Study) -> bool: - raise NotImplementedError - - -class TmpCopy(object): - """A helper object that compares equal if a folder is a "tmp_copy" folder.""" - - def __init__(self, tmp_path: Path): - self.tmp_path = tmp_path - - def __eq__(self, other: Path): - if isinstance(other, Path) and other.name == "tmp_copy": - # `is_relative_to` is not available for Python < 3.9 - try: - other.relative_to(self.tmp_path) - return True - except ValueError: - return False - - def __ne__(self, other): - return not self.__eq__(other) - - def __repr__(self): - return f"" - - class TestAbstractStorageService: @with_db_context - def test_export_study(self, tmp_path: Path) -> None: - tmp_dir = tmp_path / "tmp" - tmp_dir.mkdir() - study_path = tmp_path / "My Study" + def test_export_study(self, tmp_path: Path, raw_study_service: RawStudyService) -> None: + """ + Test the `export_study` method of the `AbstractStorageService` class. + Args: + tmp_path: The temporary directory where to store the 7z file. + raw_study_service: The `RawStudyService` instance to test the `export_study` method. - service = MyStorageService( - config=Config(storage=StorageConfig(tmp_dir=tmp_dir)), - study_factory=Mock(spec=StudyFactory), - patch_service=Mock(spec=PatchService), - cache=Mock(spec=ICache), - ) + Returns: - ## Prepare database objects + """ + # Prepare a dummy study with a `study.antares` file, and non-empty input and output folder + study_path = tmp_path / "My Study" + study_path.mkdir() + content_list = ["study.antares", "input/areas/foo.ini", "output/20240424-1200eco/result.log"] + for content in content_list: + study_path.joinpath(content).parent.mkdir(parents=True, exist_ok=True) + study_path.joinpath(content).touch() # noinspection PyArgumentList user = User(id=0, name="admin") db.session.add(user) db.session.commit() - # noinspection PyArgumentList group = Group(id="my-group", name="group") db.session.add(group) db.session.commit() - # noinspection PyArgumentList metadata = Study( name="My Study", @@ -146,18 +66,23 @@ def test_export_study(self, tmp_path: Path) -> None: ) db.session.add(metadata) db.session.commit() + db.session.refresh(metadata) - ## Check the `export_study` function - service.export_study_flat = Mock(return_value=None) - target_path = tmp_path / "export.zip" - actual = service.export_study(metadata, target_path, outputs=True) + # Check the `export_study` function + target_path = tmp_path / "export.7z" + actual = raw_study_service.export_study(metadata, target_path, outputs=True) assert actual == target_path - ## Check the call to export_study_flat - assert service.export_study_flat.mock_calls == [call(metadata, TmpCopy(tmp_path), True)] - - ## Check that the ZIP file exist and is valid - with zipfile.ZipFile(target_path) as zf: - # Actually, there is nothing is the ZIP file, - # because the Study files doesn't really exist. - assert not zf.namelist() + # Check that the 7zip file exist and is valid + with SevenZipFile(target_path) as szf: + # Check that the content of the 7z file is the same as the study folder + assert set(content_list) == ( + set(szf.getnames()) + - { + ".", + "input", + "output", + "input/areas", + "output/20240424-1200eco", + } + ) From 45a8f4680f3464725c8ce4d52ddb95e173fec795 Mon Sep 17 00:00:00 2001 From: Mohamed Abdel Wedoud Date: Fri, 18 Oct 2024 17:16:31 +0200 Subject: [PATCH 052/182] perf(archive-apis): extract lines without un-archiving a study --- .../model/filesystem/root/input/areas/list.py | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/antarest/study/storage/rawstudy/model/filesystem/root/input/areas/list.py b/antarest/study/storage/rawstudy/model/filesystem/root/input/areas/list.py index 3db25a0fc5..1779e9aa06 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/root/input/areas/list.py +++ b/antarest/study/storage/rawstudy/model/filesystem/root/input/areas/list.py @@ -10,14 +10,17 @@ # # This file is part of the Antares project. -from typing import List, Optional +import typing as t +from antarest.study.storage.rawstudy.model.filesystem.config.files import extract_lines_from_archive from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfig from antarest.study.storage.rawstudy.model.filesystem.context import ContextServer from antarest.study.storage.rawstudy.model.filesystem.inode import INode +AREAS_LIST_RELATIVE_PATH = "input/areas/list.txt" -class InputAreasList(INode[List[str], List[str], List[str]]): + +class InputAreasList(INode[t.List[str], t.List[str], t.List[str]]): def normalize(self) -> None: pass # no external store in this node @@ -30,42 +33,40 @@ def __init__(self, context: ContextServer, config: FileStudyTreeConfig): def get_node( self, - url: Optional[List[str]] = None, + url: t.Optional[t.List[str]] = None, depth: int = -1, expanded: bool = False, formatted: bool = True, - ) -> INode[List[str], List[str], List[str]]: + ) -> INode[t.List[str], t.List[str], t.List[str]]: return self def get( self, - url: Optional[List[str]] = None, + url: t.Optional[t.List[str]] = None, depth: int = -1, expanded: bool = False, formatted: bool = True, - ) -> List[str]: + ) -> t.List[str]: if self.config.archive_path: - path, tmp_dir = self._extract_file_to_tmp_dir() - lines = path.read_text().split("\n") - tmp_dir.cleanup() + lines = extract_lines_from_archive(self.config.archive_path, AREAS_LIST_RELATIVE_PATH) else: lines = self.config.path.read_text().split("\n") return [l.strip() for l in lines if l.strip()] - def save(self, data: List[str], url: Optional[List[str]] = None) -> None: + def save(self, data: t.List[str], url: t.Optional[t.List[str]] = None) -> None: self._assert_not_in_zipped_file() self.config.path.write_text("\n".join(data)) - def delete(self, url: Optional[List[str]] = None) -> None: + def delete(self, url: t.Optional[t.List[str]] = None) -> None: if self.config.path.exists(): self.config.path.unlink() def check_errors( self, - data: List[str], - url: Optional[List[str]] = None, + data: t.List[str], + url: t.Optional[t.List[str]] = None, raising: bool = False, - ) -> List[str]: + ) -> t.List[str]: errors = [] if any(a not in data for a in [area.name for area in self.config.areas.values()]): errors.append(f"list.txt should have {self.config.area_names()} nodes but given {data}") From 27429815714fc27c422cc686a444ee991ca07a6a Mon Sep 17 00:00:00 2001 From: Mohamed Abdel Wedoud Date: Fri, 18 Oct 2024 17:17:54 +0200 Subject: [PATCH 053/182] style(archive-apis): improve code style --- tests/storage/business/test_export.py | 8 +------- .../filesystem/special_node/input_areas_list_test.py | 2 +- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/tests/storage/business/test_export.py b/tests/storage/business/test_export.py index d75783fc59..f98b151a4d 100644 --- a/tests/storage/business/test_export.py +++ b/tests/storage/business/test_export.py @@ -49,13 +49,7 @@ def test_export_file(tmp_path: Path): @pytest.mark.unit_test -@pytest.mark.parametrize( - "outputs", - [ - True, - False, - ], -) +@pytest.mark.parametrize("outputs", [True, False]) def test_export_file(tmp_path: Path, outputs: bool): root = tmp_path / "folder" root.mkdir() diff --git a/tests/storage/repository/filesystem/special_node/input_areas_list_test.py b/tests/storage/repository/filesystem/special_node/input_areas_list_test.py index 2bdf043763..a26635466b 100644 --- a/tests/storage/repository/filesystem/special_node/input_areas_list_test.py +++ b/tests/storage/repository/filesystem/special_node/input_areas_list_test.py @@ -17,7 +17,7 @@ from antarest.study.storage.rawstudy.model.filesystem.root.input.areas.list import InputAreasList -def test(tmp_path: Path): +def test_unarchived(tmp_path: Path): file = tmp_path / "list.txt" content = """ FR From bc6107c4b8035b2878170fd45b74970dd11bc1e8 Mon Sep 17 00:00:00 2001 From: Mohamed Abdel Wedoud Date: Fri, 18 Oct 2024 17:25:03 +0200 Subject: [PATCH 054/182] fix(archive-apis): rename archived study export test function --- tests/storage/business/test_export.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/storage/business/test_export.py b/tests/storage/business/test_export.py index f98b151a4d..9ddadadbc7 100644 --- a/tests/storage/business/test_export.py +++ b/tests/storage/business/test_export.py @@ -50,7 +50,7 @@ def test_export_file(tmp_path: Path): @pytest.mark.unit_test @pytest.mark.parametrize("outputs", [True, False]) -def test_export_file(tmp_path: Path, outputs: bool): +def test_export_archived_study(tmp_path: Path, outputs: bool): root = tmp_path / "folder" root.mkdir() (root / "test").mkdir() From c72678f3f1b376a7a36c4fd69ee37d6a929707a6 Mon Sep 17 00:00:00 2001 From: Mohamed Abdel Wedoud Date: Fri, 18 Oct 2024 17:41:43 +0200 Subject: [PATCH 055/182] fix(archive-apis): define study path in `test_export_file` --- tests/storage/business/test_export.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/storage/business/test_export.py b/tests/storage/business/test_export.py index 9ddadadbc7..e9e37211e1 100644 --- a/tests/storage/business/test_export.py +++ b/tests/storage/business/test_export.py @@ -43,8 +43,8 @@ def test_export_file(tmp_path: Path): study_service.export_file.return_value = b"Hello" # Test good study - md = RawStudy(id=name, workspace=DEFAULT_WORKSPACE_NAME) - export_path = tmp_path / "export.zip" + md = RawStudy(id=name, workspace=DEFAULT_WORKSPACE_NAME, path=study_path) + export_path = tmp_path / "export.7z" study_service.export_study(md, export_path) From 42cd8213e51a04b9943884dc603fa5d948cf3222 Mon Sep 17 00:00:00 2001 From: Mohamed Abdel Wedoud Date: Fri, 18 Oct 2024 17:45:02 +0200 Subject: [PATCH 056/182] style(archive-apis): remove line break --- antarest/study/storage/rawstudy/raw_study_service.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/antarest/study/storage/rawstudy/raw_study_service.py b/antarest/study/storage/rawstudy/raw_study_service.py index 1dd0110a07..b99b7ec444 100644 --- a/antarest/study/storage/rawstudy/raw_study_service.py +++ b/antarest/study/storage/rawstudy/raw_study_service.py @@ -329,10 +329,7 @@ def import_study(self, metadata: RawStudy, stream: t.BinaryIO) -> Study: try: extract_archive(stream, study_path) fix_study_root(study_path) - self.update_from_raw_meta( - metadata, - study_path=study_path, - ) + self.update_from_raw_meta(metadata, study_path=study_path) except Exception: shutil.rmtree(study_path) From 93d9f142e12a3459e8a567e992cffc667f0348e3 Mon Sep 17 00:00:00 2001 From: Mohamed Abdel Wedoud Date: Tue, 22 Oct 2024 11:31:03 +0200 Subject: [PATCH 057/182] fix(archive-study): remove unused imports --- antarest/core/utils/utils.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/antarest/core/utils/utils.py b/antarest/core/utils/utils.py index 1686811ff3..756d07ae52 100644 --- a/antarest/core/utils/utils.py +++ b/antarest/core/utils/utils.py @@ -24,9 +24,7 @@ from pathlib import Path import py7zr -import redis from fastapi import HTTPException -from py7zr import SevenZipFile from antarest.core.exceptions import ShouldNotHappenException From 1e465b72cb657775ab10ad34b531bd66ac353e34 Mon Sep 17 00:00:00 2001 From: Mohamed Abdel Wedoud Date: Tue, 22 Oct 2024 11:31:46 +0200 Subject: [PATCH 058/182] fix(archive-study): rename archive path inferring function --- antarest/study/storage/rawstudy/raw_study_service.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/antarest/study/storage/rawstudy/raw_study_service.py b/antarest/study/storage/rawstudy/raw_study_service.py index b99b7ec444..07af3d6dda 100644 --- a/antarest/study/storage/rawstudy/raw_study_service.py +++ b/antarest/study/storage/rawstudy/raw_study_service.py @@ -384,7 +384,7 @@ def set_reference_output(self, study: RawStudy, output_id: str, status: bool) -> remove_from_cache(self.cache, study.id) def archive(self, study: RawStudy) -> Path: - archive_path = self.create_archive_path(study) + archive_path = self.infer_archive_path(study) new_study_path = self.export_study(study, archive_path) shutil.rmtree(study.path) remove_from_cache(cache=self.cache, root_id=study.id) @@ -422,7 +422,7 @@ def find_archive_path(self, study: RawStudy) -> Path: return path raise FileNotFoundError(f"Study {study.id} archiving process is corrupted (no archive file found).") - def create_archive_path(self, study: RawStudy) -> Path: + def infer_archive_path(self, study: RawStudy) -> Path: """ Create archive path of a study. From 8af63b6253e4e57d1e2d85a22de58b87548f591b Mon Sep 17 00:00:00 2001 From: Mohamed Abdel Wedoud Date: Wed, 23 Oct 2024 16:55:32 +0200 Subject: [PATCH 059/182] fix(filesystem): retrieve files from inside an archived study in `.7z` format --- .../rawstudy/model/filesystem/ini_file_node.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/antarest/study/storage/rawstudy/model/filesystem/ini_file_node.py b/antarest/study/storage/rawstudy/model/filesystem/ini_file_node.py index 9d91ca23de..55a8645ab6 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/ini_file_node.py +++ b/antarest/study/storage/rawstudy/model/filesystem/ini_file_node.py @@ -20,9 +20,11 @@ import zipfile from pathlib import Path +import py7zr import pydantic_core from filelock import FileLock +from antarest.core.exceptions import ShouldNotHappenException from antarest.core.model import JSON, SUB_JSON from antarest.core.serialization import from_json from antarest.study.storage.rawstudy.ini_reader import IniReader, IReader @@ -106,10 +108,17 @@ def _get( kwargs = self._get_filtering_kwargs(url) if self.config.archive_path: - with zipfile.ZipFile(self.config.archive_path, mode="r") as zipped_folder: - inside_zip_path = self.config.path.relative_to(self.config.archive_path.with_suffix("")).as_posix() - with io.TextIOWrapper(zipped_folder.open(inside_zip_path)) as f: - data = self.reader.read(f, **kwargs) + inside_archive_path = self.config.path.relative_to(self.config.archive_path.with_suffix("")).as_posix() + if self.config.archive_path.suffix == ".zip": + with zipfile.ZipFile(self.config.archive_path, mode="r") as zipped_folder: + with io.TextIOWrapper(zipped_folder.open(inside_archive_path)) as f: + data = self.reader.read(f, **kwargs) + elif self.config.archive_path.suffix == ".7z": + with py7zr.SevenZipFile(self.config.archive_path, mode="r") as zipped_folder: + with io.TextIOWrapper(zipped_folder.read([inside_archive_path])[inside_archive_path]) as f: + data = self.reader.read(f, **kwargs) + else: + raise ShouldNotHappenException(f"Unsupported archived study format: {self.config.archive_path.suffix}") else: data = self.reader.read(self.path, **kwargs) From 8d20874e70dfcb353e57f9bd77d5c1cd4737f846 Mon Sep 17 00:00:00 2001 From: Mohamed Abdel Wedoud Date: Wed, 23 Oct 2024 16:55:41 +0200 Subject: [PATCH 060/182] test(filesystem): retrieve files from inside an archived study in `.7z` format --- .../test_fetch_raw_data.py | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/tests/integration/raw_studies_blueprint/test_fetch_raw_data.py b/tests/integration/raw_studies_blueprint/test_fetch_raw_data.py index b67fffe9e2..d2c0a5540b 100644 --- a/tests/integration/raw_studies_blueprint/test_fetch_raw_data.py +++ b/tests/integration/raw_studies_blueprint/test_fetch_raw_data.py @@ -25,6 +25,7 @@ from antarest.core.utils.fastapi_sqlalchemy import db from antarest.study.model import RawStudy, Study from tests.integration.raw_studies_blueprint.assets import ASSETS_DIR +from tests.integration.utils import wait_for @pytest.mark.integration_test @@ -327,3 +328,53 @@ def test_delete_raw(client: TestClient, user_access_token: str, internal_study_i assert res.status_code == 403 assert res.json()["exception"] == "FileDeletionNotAllowed" assert "the given path doesn't exist" in res.json()["description"] + + +def test_retrieve_from_archive(client: TestClient, user_access_token: str) -> None: + # client headers + client.headers = {"Authorization": f"Bearer {user_access_token}"} + + # create a new study + res = client.post("/v1/studies?name=MyStudy") + assert res.status_code == 201 + + # get the study id + study_id = res.json() + + # add a new area to the study + res = client.post( + f"/v1/studies/{study_id}/areas", + json={ + "name": "area 1", + "type": "AREA", + "metadata": {"country": "FR", "tags": ["a"]}, + }, + ) + assert res.status_code == 200, res.json() + + # archive the study + res = client.put(f"/v1/studies/{study_id}/archive") + assert res.status_code == 200 + task_id = res.json() + wait_for( + lambda: client.get( + f"/v1/tasks/{task_id}", + ).json()["status"] + == 3 + ) + + # retrieve a `Desktop.ini` file from inside the archive + rel_path = "Desktop" + res = client.get( + f"/v1/studies/{study_id}/raw", + params={"path": rel_path, "formatted": True}, + ) + assert res.status_code == 200 + + # retrieve a `study.antares` file from inside the archive + rel_path = "study" + res = client.get( + f"/v1/studies/{study_id}/raw", + params={"path": rel_path, "formatted": True}, + ) + assert res.status_code == 200 From dc6d4b6216da3d98b612ab40a122493ada69e60f Mon Sep 17 00:00:00 2001 From: Mohamed Abdel Wedoud Date: Wed, 23 Oct 2024 16:57:47 +0200 Subject: [PATCH 061/182] refactor(filesystem): redefine `inside_archive_path` --- antarest/core/utils/utils.py | 9 +++------ .../study/storage/rawstudy/model/filesystem/inode.py | 2 +- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/antarest/core/utils/utils.py b/antarest/core/utils/utils.py index 756d07ae52..c84e016cce 100644 --- a/antarest/core/utils/utils.py +++ b/antarest/core/utils/utils.py @@ -211,16 +211,13 @@ def extract_file_to_tmp_dir(archive_path: Path, inside_archive_path: Path) -> t. with zipfile.ZipFile(archive_path) as zip_obj: zip_obj.extract(str_inside_archive_path, tmp_dir.name) elif archive_path.suffix == ".7z": - with py7zr.SevenZipFile(archive_path, mode="r") as zip_obj: - str_inside_archive_path = ( - str_inside_archive_path[1:] if str_inside_archive_path.startswith("/") else str_inside_archive_path - ) - zip_obj.extract(path=tmp_dir.name, targets=[str_inside_archive_path]) + with py7zr.SevenZipFile(archive_path, mode="r") as szf: + szf.extract(path=tmp_dir.name, targets=[str_inside_archive_path]) else: raise ValueError(f"Unsupported archive format for {archive_path}") except Exception as e: logger.warning( - f"Failed to extract {str_inside_archive_path} in zip {archive_path}", + f"Failed to extract {str_inside_archive_path} in archive {archive_path}", exc_info=e, ) tmp_dir.cleanup() diff --git a/antarest/study/storage/rawstudy/model/filesystem/inode.py b/antarest/study/storage/rawstudy/model/filesystem/inode.py index 2e565c5627..418d237283 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/inode.py +++ b/antarest/study/storage/rawstudy/model/filesystem/inode.py @@ -150,7 +150,7 @@ def _extract_file_to_tmp_dir( """ if self.config.archive_path is None: raise ShouldNotHappenException() - inside_archive_path = str(self.config.path)[len(str(self.config.archive_path)[:-4]) + 1 :] + inside_archive_path = self.config.path.relative_to(self.config.archive_path.parent / self.config.study_id) if self.config.archive_path: return extract_file_to_tmp_dir(self.config.archive_path, Path(inside_archive_path)) else: From 6c06b5a7df9e2ee30ac8b64eb78486cf2d37297f Mon Sep 17 00:00:00 2001 From: Mohamed Abdel Wedoud Date: Wed, 23 Oct 2024 20:50:32 +0200 Subject: [PATCH 062/182] refactor(archiving): move `archiving` specific utils to `archives.py` --- antarest/core/utils/archives.py | 126 ++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 antarest/core/utils/archives.py diff --git a/antarest/core/utils/archives.py b/antarest/core/utils/archives.py new file mode 100644 index 0000000000..fe44c1f92d --- /dev/null +++ b/antarest/core/utils/archives.py @@ -0,0 +1,126 @@ +import logging +import os +import shutil +import tempfile +import typing as t +import zipfile +from enum import Enum +from pathlib import Path + +import py7zr + +from antarest.core.exceptions import BadArchiveContent, ShouldNotHappenException + +logger = logging.getLogger(__name__) + + +class ArchiveFormat(str, Enum): + ZIP = ".zip" + SEVEN_ZIP = ".7z" + + +def archive_dir( + src_dir_path: Path, + target_archive_path: Path, + remove_source_dir: bool = False, + archive_format: ArchiveFormat = ArchiveFormat.SEVEN_ZIP, +) -> None: + if archive_format == ArchiveFormat.SEVEN_ZIP: + with py7zr.SevenZipFile(target_archive_path, mode="w") as szf: + szf.writeall(src_dir_path) + elif archive_format == ArchiveFormat.ZIP: + with zipfile.ZipFile(target_archive_path, mode="w", compression=zipfile.ZIP_DEFLATED, compresslevel=2) as zipf: + len_dir_path = len(str(src_dir_path)) + for root, _, files in os.walk(src_dir_path): + for file in files: + file_path = os.path.join(root, file) + zipf.write(file_path, file_path[len_dir_path:]) + else: + raise ShouldNotHappenException(f"Unsupported archive format {archive_format}") + if remove_source_dir: + shutil.rmtree(src_dir_path) + + +def unzip(dir_path: Path, zip_path: Path, remove_source_zip: bool = False) -> None: + with zipfile.ZipFile(zip_path, mode="r") as zipf: + zipf.extractall(dir_path) + if remove_source_zip: + zip_path.unlink() + + +def is_zip(path: Path) -> bool: + return path.name.endswith(".zip") + + +def read_in_zip( + zip_path: Path, + inside_zip_path: Path, + read: t.Callable[[t.Optional[Path]], None], +) -> None: + tmp_dir = None + try: + path, tmp_dir = extract_file_to_tmp_dir(zip_path, inside_zip_path) + read(path) + except KeyError: + logger.warning(f"{inside_zip_path} not found in {zip_path}") + read(None) + finally: + if tmp_dir is not None: + tmp_dir.cleanup() + + +def extract_archive(stream: t.BinaryIO, target_dir: Path) -> None: + """ + Extract a ZIP archive to a given destination. + + Args: + stream: The stream containing the archive. + target_dir: The directory where to extract the archive. + + Raises: + BadArchiveContent: If the archive is corrupted or in an unknown format. + """ + + # Read the first few bytes to identify the file format + file_format = stream.read(4) + stream.seek(0) + + if file_format[:4] == b"PK\x03\x04": + try: + with zipfile.ZipFile(stream) as zf: + zf.extractall(path=target_dir) + except zipfile.BadZipFile as error: + raise BadArchiveContent("Unsupported ZIP format") from error + + elif file_format[:2] == b"7z": + try: + with py7zr.SevenZipFile(stream, "r") as zf: + zf.extractall(target_dir) + except py7zr.exceptions.Bad7zFile as error: + raise BadArchiveContent("Unsupported 7z format") from error + + else: + raise BadArchiveContent + + +def extract_file_to_tmp_dir(archive_path: Path, inside_archive_path: Path) -> t.Tuple[Path, t.Any]: + str_inside_archive_path = str(inside_archive_path).replace("\\", "/") + tmp_dir = tempfile.TemporaryDirectory() + try: + if archive_path.suffix == ".zip": + with zipfile.ZipFile(archive_path) as zip_obj: + zip_obj.extract(str_inside_archive_path, tmp_dir.name) + elif archive_path.suffix == ".7z": + with py7zr.SevenZipFile(archive_path, mode="r") as szf: + szf.extract(path=tmp_dir.name, targets=[str_inside_archive_path]) + else: + raise ValueError(f"Unsupported archive format for {archive_path}") + except Exception as e: + logger.warning( + f"Failed to extract {str_inside_archive_path} in archive {archive_path}", + exc_info=e, + ) + tmp_dir.cleanup() + raise + path = Path(tmp_dir.name) / str_inside_archive_path + return path, tmp_dir From 945783495b9975870751fb27fe54c1b1a0b1816a Mon Sep 17 00:00:00 2001 From: Mohamed Abdel Wedoud Date: Wed, 23 Oct 2024 20:58:45 +0200 Subject: [PATCH 063/182] refactor(archiving): use archiving utils from `archives.py` --- antarest/core/exceptions.py | 9 ++ antarest/core/utils/utils.py | 110 ------------------ .../adapters/slurm_launcher/slurm_launcher.py | 3 +- antarest/launcher/service.py | 7 +- antarest/matrixstore/service.py | 5 +- .../rawstudy/model/filesystem/inode.py | 2 +- .../storage/rawstudy/raw_study_service.py | 2 +- antarest/study/web/studies_blueprint.py | 4 +- antarest/worker/archive_worker.py | 3 +- tests/core/test_utils.py | 3 +- tests/core/utils/test_extract_zip.py | 3 +- tests/storage/business/test_import.py | 3 +- 12 files changed, 29 insertions(+), 125 deletions(-) diff --git a/antarest/core/exceptions.py b/antarest/core/exceptions.py index c02cbf966b..f26a16c59b 100644 --- a/antarest/core/exceptions.py +++ b/antarest/core/exceptions.py @@ -666,3 +666,12 @@ def __init__(self) -> None: class ChildNotFoundError(HTTPException): def __init__(self, message: str) -> None: super().__init__(HTTPStatus.NOT_FOUND, message) + + +class BadArchiveContent(Exception): + """ + Exception raised when the archive file is corrupted (or unknown). + """ + + def __init__(self, message: str = "Unsupported archive format") -> None: + super().__init__(message) diff --git a/antarest/core/utils/utils.py b/antarest/core/utils/utils.py index c84e016cce..c748420549 100644 --- a/antarest/core/utils/utils.py +++ b/antarest/core/utils/utils.py @@ -14,16 +14,11 @@ import glob import http import logging -import os import re -import shutil -import tempfile import time import typing as t -import zipfile from pathlib import Path -import py7zr from fastapi import HTTPException from antarest.core.exceptions import ShouldNotHappenException @@ -65,49 +60,6 @@ def sanitize_string(string: str) -> str: return str(glob.escape(string)) -class BadArchiveContent(Exception): - """ - Exception raised when the archive file is corrupted (or unknown). - """ - - def __init__(self, message: str = "Unsupported archive format") -> None: - super().__init__(message) - - -def extract_archive(stream: t.BinaryIO, target_dir: Path) -> None: - """ - Extract a ZIP archive to a given destination. - - Args: - stream: The stream containing the archive. - target_dir: The directory where to extract the archive. - - Raises: - BadArchiveContent: If the archive is corrupted or in an unknown format. - """ - - # Read the first few bytes to identify the file format - file_format = stream.read(4) - stream.seek(0) - - if file_format[:4] == b"PK\x03\x04": - try: - with zipfile.ZipFile(stream) as zf: - zf.extractall(path=target_dir) - except zipfile.BadZipFile as error: - raise BadArchiveContent("Unsupported ZIP format") from error - - elif file_format[:2] == b"7z": - try: - with py7zr.SevenZipFile(stream, "r") as zf: - zf.extractall(target_dir) - except py7zr.exceptions.Bad7zFile as error: - raise BadArchiveContent("Unsupported 7z format") from error - - else: - raise BadArchiveContent - - def get_default_config_path() -> t.Optional[Path]: config = Path("config.yaml") if config.exists(): @@ -181,68 +133,6 @@ def concat_files_to_str(files: t.List[Path]) -> str: return concat_str -def zip_dir(dir_path: Path, zip_path: Path, remove_source_dir: bool = False) -> None: - with zipfile.ZipFile(zip_path, mode="w", compression=zipfile.ZIP_DEFLATED, compresslevel=2) as zipf: - len_dir_path = len(str(dir_path)) - for root, _, files in os.walk(dir_path): - for file in files: - file_path = os.path.join(root, file) - zipf.write(file_path, file_path[len_dir_path:]) - if remove_source_dir: - shutil.rmtree(dir_path) - - -def unzip(dir_path: Path, zip_path: Path, remove_source_zip: bool = False) -> None: - with zipfile.ZipFile(zip_path, mode="r") as zipf: - zipf.extractall(dir_path) - if remove_source_zip: - zip_path.unlink() - - -def is_zip(path: Path) -> bool: - return path.name.endswith(".zip") - - -def extract_file_to_tmp_dir(archive_path: Path, inside_archive_path: Path) -> t.Tuple[Path, t.Any]: - str_inside_archive_path = str(inside_archive_path).replace("\\", "/") - tmp_dir = tempfile.TemporaryDirectory() - try: - if archive_path.suffix == ".zip": - with zipfile.ZipFile(archive_path) as zip_obj: - zip_obj.extract(str_inside_archive_path, tmp_dir.name) - elif archive_path.suffix == ".7z": - with py7zr.SevenZipFile(archive_path, mode="r") as szf: - szf.extract(path=tmp_dir.name, targets=[str_inside_archive_path]) - else: - raise ValueError(f"Unsupported archive format for {archive_path}") - except Exception as e: - logger.warning( - f"Failed to extract {str_inside_archive_path} in archive {archive_path}", - exc_info=e, - ) - tmp_dir.cleanup() - raise - path = Path(tmp_dir.name) / str_inside_archive_path - return path, tmp_dir - - -def read_in_zip( - zip_path: Path, - inside_zip_path: Path, - read: t.Callable[[t.Optional[Path]], None], -) -> None: - tmp_dir = None - try: - path, tmp_dir = extract_file_to_tmp_dir(zip_path, inside_zip_path) - read(path) - except KeyError: - logger.warning(f"{inside_zip_path} not found in {zip_path}") - read(None) - finally: - if tmp_dir is not None: - tmp_dir.cleanup() - - def suppress_exception( callback: t.Callable[[], T], logger_: t.Callable[[Exception], None], diff --git a/antarest/launcher/adapters/slurm_launcher/slurm_launcher.py b/antarest/launcher/adapters/slurm_launcher/slurm_launcher.py index 577ee031b5..d4f5c30da8 100644 --- a/antarest/launcher/adapters/slurm_launcher/slurm_launcher.py +++ b/antarest/launcher/adapters/slurm_launcher/slurm_launcher.py @@ -34,7 +34,8 @@ from antarest.core.interfaces.eventbus import Event, EventType, IEventBus from antarest.core.model import PermissionInfo, PublicMode from antarest.core.requests import RequestParameters -from antarest.core.utils.utils import assert_this, unzip +from antarest.core.utils.archives import unzip +from antarest.core.utils.utils import assert_this from antarest.launcher.adapters.abstractlauncher import AbstractLauncher, LauncherCallbacks, LauncherInitException from antarest.launcher.adapters.log_manager import LogTailManager from antarest.launcher.model import JobStatus, LauncherParametersDTO, LogType, XpansionParametersDTO diff --git a/antarest/launcher/service.py b/antarest/launcher/service.py index c03902eecb..573aaf3b9d 100644 --- a/antarest/launcher/service.py +++ b/antarest/launcher/service.py @@ -34,8 +34,9 @@ from antarest.core.requests import RequestParameters, UserHasNotPermissionError from antarest.core.tasks.model import TaskResult, TaskType from antarest.core.tasks.service import ITaskService, TaskUpdateNotifier +from antarest.core.utils.archives import ArchiveFormat, archive_dir, is_zip, read_in_zip from antarest.core.utils.fastapi_sqlalchemy import db -from antarest.core.utils.utils import StopWatch, concat_files, concat_files_to_str, is_zip, read_in_zip, zip_dir +from antarest.core.utils.utils import StopWatch, concat_files, concat_files_to_str from antarest.launcher.adapters.abstractlauncher import LauncherCallbacks from antarest.launcher.adapters.factory_launcher import FactoryLauncher from antarest.launcher.extensions.adequacy_patch.extension import AdequacyPatchExtension @@ -548,7 +549,7 @@ def _import_output( if not output_is_zipped and job_launch_params.archive_output: logger.info("Re zipping output for transfer") zip_path = output_true_path.parent / f"{output_true_path.name}.zip" - zip_dir(output_true_path, zip_path=zip_path) + archive_dir(output_true_path, target_archive_path=zip_path, archive_format=ArchiveFormat.ZIP) stopwatch.log_elapsed(lambda x: logger.info(f"Zipped output for job {job_id} in {x}s")) final_output_path = zip_path or output_true_path @@ -600,7 +601,7 @@ def _download_fallback_output(self, job_id: str, params: RequestParameters) -> F def export_task(_: TaskUpdateNotifier) -> TaskResult: try: # - zip_dir(output_path, export_path) + archive_dir(output_path, export_path, archive_format=ArchiveFormat.ZIP) self.file_transfer_manager.set_ready(export_id) return TaskResult(success=True, message="") except Exception as e: diff --git a/antarest/matrixstore/service.py b/antarest/matrixstore/service.py index aae9a52cca..3a10ed09df 100644 --- a/antarest/matrixstore/service.py +++ b/antarest/matrixstore/service.py @@ -33,8 +33,9 @@ from antarest.core.serialization import from_json from antarest.core.tasks.model import TaskResult, TaskType from antarest.core.tasks.service import ITaskService, TaskUpdateNotifier +from antarest.core.utils.archives import ArchiveFormat, archive_dir from antarest.core.utils.fastapi_sqlalchemy import db -from antarest.core.utils.utils import StopWatch, zip_dir +from antarest.core.utils.utils import StopWatch from antarest.login.service import LoginService from antarest.matrixstore.exceptions import MatrixDataSetNotFound from antarest.matrixstore.model import ( @@ -469,7 +470,7 @@ def create_matrix_files(self, matrix_ids: t.Sequence[str], export_path: Path) -> else: # noinspection PyTypeChecker np.savetxt(filepath, array, delimiter="\t", fmt="%.18f") - zip_dir(Path(tmpdir), export_path) + archive_dir(Path(tmpdir), export_path, archive_format=ArchiveFormat.ZIP) stopwatch.log_elapsed(lambda x: logger.info(f"Matrix dataset exported (zipped mode) in {x}s")) return str(export_path) diff --git a/antarest/study/storage/rawstudy/model/filesystem/inode.py b/antarest/study/storage/rawstudy/model/filesystem/inode.py index 418d237283..cf4aa13e0a 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/inode.py +++ b/antarest/study/storage/rawstudy/model/filesystem/inode.py @@ -15,7 +15,7 @@ from typing import Any, Dict, Generic, List, Optional, Tuple, TypeVar from antarest.core.exceptions import ShouldNotHappenException, WritingInsideZippedFileException -from antarest.core.utils.utils import extract_file_to_tmp_dir +from antarest.core.utils.archives import extract_file_to_tmp_dir from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfig G = TypeVar("G") diff --git a/antarest/study/storage/rawstudy/raw_study_service.py b/antarest/study/storage/rawstudy/raw_study_service.py index 07af3d6dda..4812aaeea2 100644 --- a/antarest/study/storage/rawstudy/raw_study_service.py +++ b/antarest/study/storage/rawstudy/raw_study_service.py @@ -26,7 +26,7 @@ from antarest.core.interfaces.cache import ICache from antarest.core.model import PublicMode from antarest.core.requests import RequestParameters -from antarest.core.utils.utils import extract_archive +from antarest.core.utils.archives import extract_archive from antarest.study.model import DEFAULT_WORKSPACE_NAME, Patch, RawStudy, Study, StudyAdditionalData from antarest.study.storage.abstract_storage_service import AbstractStorageService from antarest.study.storage.patch_service import PatchService diff --git a/antarest/study/web/studies_blueprint.py b/antarest/study/web/studies_blueprint.py index 41398dee6a..6fe9758186 100644 --- a/antarest/study/web/studies_blueprint.py +++ b/antarest/study/web/studies_blueprint.py @@ -22,13 +22,13 @@ from pydantic import NonNegativeInt from antarest.core.config import Config -from antarest.core.exceptions import BadZipBinary +from antarest.core.exceptions import BadArchiveContent, BadZipBinary from antarest.core.filetransfer.model import FileDownloadTaskDTO from antarest.core.filetransfer.service import FileTransferManager from antarest.core.jwt import JWTUser from antarest.core.model import PublicMode from antarest.core.requests import RequestParameters, UserHasNotPermissionError -from antarest.core.utils.utils import BadArchiveContent, sanitize_string, sanitize_uuid +from antarest.core.utils.utils import sanitize_string, sanitize_uuid from antarest.core.utils.web import APITag from antarest.login.auth import Auth from antarest.study.model import ( diff --git a/antarest/worker/archive_worker.py b/antarest/worker/archive_worker.py index a488d42d0d..6ce01acf85 100644 --- a/antarest/worker/archive_worker.py +++ b/antarest/worker/archive_worker.py @@ -17,7 +17,8 @@ from antarest.core.interfaces.eventbus import IEventBus from antarest.core.serialization import AntaresBaseModel from antarest.core.tasks.model import TaskResult -from antarest.core.utils.utils import StopWatch, unzip +from antarest.core.utils.archives import unzip +from antarest.core.utils.utils import StopWatch from antarest.worker.worker import AbstractWorker, WorkerTaskCommand logger = logging.getLogger(__name__) diff --git a/tests/core/test_utils.py b/tests/core/test_utils.py index d57ac68d21..e6022f139e 100644 --- a/tests/core/test_utils.py +++ b/tests/core/test_utils.py @@ -16,7 +16,8 @@ import pytest from antarest.core.exceptions import ShouldNotHappenException -from antarest.core.utils.utils import concat_files, concat_files_to_str, read_in_zip, retry, suppress_exception +from antarest.core.utils.archives import read_in_zip +from antarest.core.utils.utils import concat_files, concat_files_to_str, retry, suppress_exception def test_retry() -> None: diff --git a/tests/core/utils/test_extract_zip.py b/tests/core/utils/test_extract_zip.py index f38a3f336f..b1005559ec 100644 --- a/tests/core/utils/test_extract_zip.py +++ b/tests/core/utils/test_extract_zip.py @@ -17,7 +17,8 @@ import py7zr import pytest -from antarest.core.utils.utils import BadArchiveContent, extract_archive +from antarest.core.exceptions import BadArchiveContent +from antarest.core.utils.archives import extract_archive class TestExtractZip: diff --git a/tests/storage/business/test_import.py b/tests/storage/business/test_import.py index ddf984dc06..5770c2bf36 100644 --- a/tests/storage/business/test_import.py +++ b/tests/storage/business/test_import.py @@ -18,8 +18,7 @@ import pytest -from antarest.core.exceptions import StudyValidationError -from antarest.core.utils.utils import BadArchiveContent +from antarest.core.exceptions import BadArchiveContent, StudyValidationError from antarest.study.model import DEFAULT_WORKSPACE_NAME, RawStudy, StudyAdditionalData from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy from antarest.study.storage.rawstudy.raw_study_service import RawStudyService From bd0b9ebd59aaa1a1111b9b981d5ad4b9251b6a44 Mon Sep 17 00:00:00 2001 From: Mohamed Abdel Wedoud Date: Wed, 23 Oct 2024 20:59:26 +0200 Subject: [PATCH 064/182] feat(archiving): use `archive_dir` function for archiving --- antarest/study/storage/abstract_storage_service.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/antarest/study/storage/abstract_storage_service.py b/antarest/study/storage/abstract_storage_service.py index 432d95719c..0fd1d1ec9f 100644 --- a/antarest/study/storage/abstract_storage_service.py +++ b/antarest/study/storage/abstract_storage_service.py @@ -25,7 +25,8 @@ from antarest.core.interfaces.cache import CacheConstants, ICache from antarest.core.model import JSON, PublicMode from antarest.core.serialization import from_json -from antarest.core.utils.utils import StopWatch, extract_archive, unzip, zip_dir +from antarest.core.utils.archives import ArchiveFormat, archive_dir, extract_archive, unzip +from antarest.core.utils.utils import StopWatch from antarest.login.model import GroupDTO from antarest.study.common.studystorage import IStudyStorageService, T from antarest.study.model import ( @@ -296,6 +297,7 @@ def export_study(self, metadata: T, target: Path, outputs: bool = True) -> Path: tmp_study_path = Path(tmpdir) / "tmp_copy" self.export_study_flat(metadata, tmp_study_path, outputs) stopwatch = StopWatch() + archive_dir(tmp_study_path, target, archive_format=ArchiveFormat.SEVEN_ZIP) with py7zr.SevenZipFile(target, "w") as szf: szf.writeall(tmp_study_path, arcname="") stopwatch.log_elapsed(lambda x: logger.info(f"Study {path_study} exported (7zip mode) in {x}s")) @@ -322,7 +324,7 @@ def export_output(self, metadata: T, output_id: str, target: Path) -> None: raise StudyOutputNotFoundError() stopwatch = StopWatch() if not path_output_zip.exists(): - zip_dir(path_output, target) + archive_dir(path_output, target, archive_format=ArchiveFormat.ZIP) stopwatch.log_elapsed(lambda x: logger.info(f"Output {output_id} from study {metadata.path} exported in {x}s")) def _read_additional_data_from_files(self, file_study: FileStudy) -> StudyAdditionalData: @@ -335,10 +337,11 @@ def _read_additional_data_from_files(self, file_study: FileStudy) -> StudyAdditi def archive_study_output(self, study: T, output_id: str) -> bool: try: - zip_dir( + archive_dir( Path(study.path) / "output" / output_id, Path(study.path) / "output" / f"{output_id}.zip", remove_source_dir=True, + archive_format=ArchiveFormat.ZIP, ) remove_from_cache(self.cache, study.id) return True From 6d69a25efe61033c502d9ae1aa4215795ea30e81 Mon Sep 17 00:00:00 2001 From: Mohamed Abdel Wedoud Date: Wed, 23 Oct 2024 21:01:16 +0200 Subject: [PATCH 065/182] feat(archiving): add license headers to `archives.py` --- antarest/core/utils/archives.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/antarest/core/utils/archives.py b/antarest/core/utils/archives.py index fe44c1f92d..1f6f7bb0f1 100644 --- a/antarest/core/utils/archives.py +++ b/antarest/core/utils/archives.py @@ -1,3 +1,15 @@ +# Copyright (c) 2024, RTE (https://www.rte-france.com) +# +# See AUTHORS.txt +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +# This file is part of the Antares project. + import logging import os import shutil From de970b2125e707f8c78db507e79215afc861ea0c Mon Sep 17 00:00:00 2001 From: Mohamed Abdel Wedoud Date: Wed, 23 Oct 2024 21:48:32 +0200 Subject: [PATCH 066/182] refactor(filesystem): move archiving generic functions/utils to `antarest.core.utils` modules --- antarest/core/utils/archives.py | 34 +++++++++++++++++- .../rawstudy/model/filesystem/config/files.py | 35 +------------------ .../model/filesystem/root/input/areas/list.py | 2 +- 3 files changed, 35 insertions(+), 36 deletions(-) diff --git a/antarest/core/utils/archives.py b/antarest/core/utils/archives.py index 1f6f7bb0f1..eb049861cb 100644 --- a/antarest/core/utils/archives.py +++ b/antarest/core/utils/archives.py @@ -9,7 +9,6 @@ # SPDX-License-Identifier: MPL-2.0 # # This file is part of the Antares project. - import logging import os import shutil @@ -136,3 +135,36 @@ def extract_file_to_tmp_dir(archive_path: Path, inside_archive_path: Path) -> t. raise path = Path(tmp_dir.name) / str_inside_archive_path return path, tmp_dir + + +def extract_lines_from_archive(root: Path, posix_path: str) -> t.List[str]: + """ + Extract text lines from various types of files. + + Args: + root: 7zip or ZIP file containing the study. + posix_path: Relative path to the file to extract. + + Returns: + list of lines + """ + if root.suffix.lower() == ".zip": + with zipfile.ZipFile(root) as zf: + try: + with zf.open(posix_path) as f: + text = f.read().decode("utf-8") + return text.splitlines(keepends=False) + except KeyError: + # File not found in the ZIP archive + return [] + elif root.suffix.lower() == ".7z": + with py7zr.SevenZipFile(root, mode="r") as z: + try: + data = z.read([posix_path]) + text = data[posix_path].read().decode("utf-8") + return text.splitlines(keepends=False) + except KeyError: + # File not found in the 7z archive + return [] + else: + raise ValueError(f"Unsupported file type: {root}") diff --git a/antarest/study/storage/rawstudy/model/filesystem/config/files.py b/antarest/study/storage/rawstudy/model/filesystem/config/files.py index ff4227914e..35eb183087 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/config/files.py +++ b/antarest/study/storage/rawstudy/model/filesystem/config/files.py @@ -22,10 +22,10 @@ import py7zr from antares.study.version import StudyVersion -from py7zr import SevenZipFile from antarest.core.model import JSON from antarest.core.serialization import from_json +from antarest.core.utils.archives import extract_lines_from_archive from antarest.study.model import STUDY_VERSION_8_1, STUDY_VERSION_8_6 from antarest.study.storage.rawstudy.ini_reader import IniReader from antarest.study.storage.rawstudy.model.filesystem.config.binding_constraint import ( @@ -67,39 +67,6 @@ class FileType(Enum): MULTI_INI = "multi_ini" -def extract_lines_from_archive(root: Path, posix_path: str) -> t.List[str]: - """ - Extract text lines from various types of files. - - Args: - root: 7zip or ZIP file containing the study. - posix_path: Relative path to the file to extract. - - Returns: - list of lines - """ - if root.suffix.lower() == ".zip": - with zipfile.ZipFile(root) as zf: - try: - with zf.open(posix_path) as f: - text = f.read().decode("utf-8") - return text.splitlines(keepends=False) - except KeyError: - # File not found in the ZIP archive - return [] - elif root.suffix.lower() == ".7z": - with py7zr.SevenZipFile(root, mode="r") as z: - try: - data = z.read([posix_path]) - text = data[posix_path].read().decode("utf-8") - return text.splitlines(keepends=False) - except KeyError: - # File not found in the 7z archive - return [] - else: - raise ValueError(f"Unsupported file type: {root}") - - def extract_data_from_archive( root: Path, posix_path: str, diff --git a/antarest/study/storage/rawstudy/model/filesystem/root/input/areas/list.py b/antarest/study/storage/rawstudy/model/filesystem/root/input/areas/list.py index 1779e9aa06..04564300c6 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/root/input/areas/list.py +++ b/antarest/study/storage/rawstudy/model/filesystem/root/input/areas/list.py @@ -12,7 +12,7 @@ import typing as t -from antarest.study.storage.rawstudy.model.filesystem.config.files import extract_lines_from_archive +from antarest.core.utils.archives import extract_lines_from_archive from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfig from antarest.study.storage.rawstudy.model.filesystem.context import ContextServer from antarest.study.storage.rawstudy.model.filesystem.inode import INode From cadd289f7cefbbb2913bcb5eb62e323c097b9eff Mon Sep 17 00:00:00 2001 From: Mohamed Abdel Wedoud Date: Wed, 23 Oct 2024 22:28:33 +0200 Subject: [PATCH 067/182] refactor(study-service): remove unused methods of `RawStudyService` --- .../study/storage/rawstudy/raw_study_service.py | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/antarest/study/storage/rawstudy/raw_study_service.py b/antarest/study/storage/rawstudy/raw_study_service.py index 4812aaeea2..5ca6eabdac 100644 --- a/antarest/study/storage/rawstudy/raw_study_service.py +++ b/antarest/study/storage/rawstudy/raw_study_service.py @@ -384,7 +384,7 @@ def set_reference_output(self, study: RawStudy, output_id: str, status: bool) -> remove_from_cache(self.cache, study.id) def archive(self, study: RawStudy) -> Path: - archive_path = self.infer_archive_path(study) + archive_path = self.config.storage.archive_dir.joinpath(f"{study.id}.7z") new_study_path = self.export_study(study, archive_path) shutil.rmtree(study.path) remove_from_cache(cache=self.cache, root_id=study.id) @@ -422,19 +422,6 @@ def find_archive_path(self, study: RawStudy) -> Path: return path raise FileNotFoundError(f"Study {study.id} archiving process is corrupted (no archive file found).") - def infer_archive_path(self, study: RawStudy) -> Path: - """ - Create archive path of a study. - - Args: - study: The study to get the archive path for. - - Returns: - The full path of the archive file (7z). - """ - archive_dir: Path = self.config.storage.archive_dir - return archive_dir.joinpath(f"{study.id}.7z") - def get_study_path(self, metadata: Study) -> Path: """ Get study path From 54bcb2d55d1bdbfae413980762c216111b7ee3ef Mon Sep 17 00:00:00 2001 From: Mohamed Abdel Wedoud Date: Wed, 23 Oct 2024 22:31:47 +0200 Subject: [PATCH 068/182] test(archiving): rename `TestExtractZip` to `TestExtractArchive` --- tests/core/utils/test_extract_zip.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/core/utils/test_extract_zip.py b/tests/core/utils/test_extract_zip.py index b1005559ec..5d24e6c772 100644 --- a/tests/core/utils/test_extract_zip.py +++ b/tests/core/utils/test_extract_zip.py @@ -21,7 +21,7 @@ from antarest.core.utils.archives import extract_archive -class TestExtractZip: +class TestExtractArchive: """ Test the `extract_zip` function. """ From 0491d75ed643d6dbace825c421aa8f53ac7cdbd8 Mon Sep 17 00:00:00 2001 From: Mohamed Abdel Wedoud Date: Thu, 24 Oct 2024 10:49:32 +0200 Subject: [PATCH 069/182] refactor(archiving): remove hard coded archive extensions `.zip` and `.7z` --- antarest/core/utils/archives.py | 12 +++++++---- antarest/study/service.py | 11 +++++----- .../study/storage/abstract_storage_service.py | 21 ++++++++++++------- .../rawstudy/model/filesystem/config/files.py | 8 +++---- .../storage/rawstudy/raw_study_service.py | 6 +++--- antarest/study/storage/utils.py | 3 ++- 6 files changed, 36 insertions(+), 25 deletions(-) diff --git a/antarest/core/utils/archives.py b/antarest/core/utils/archives.py index eb049861cb..aa94e58c1b 100644 --- a/antarest/core/utils/archives.py +++ b/antarest/core/utils/archives.py @@ -30,6 +30,10 @@ class ArchiveFormat(str, Enum): SEVEN_ZIP = ".7z" +def is_archive_format(suffix: str) -> bool: + return suffix in {ArchiveFormat.ZIP, ArchiveFormat.SEVEN_ZIP} + + def archive_dir( src_dir_path: Path, target_archive_path: Path, @@ -118,10 +122,10 @@ def extract_file_to_tmp_dir(archive_path: Path, inside_archive_path: Path) -> t. str_inside_archive_path = str(inside_archive_path).replace("\\", "/") tmp_dir = tempfile.TemporaryDirectory() try: - if archive_path.suffix == ".zip": + if archive_path.suffix == ArchiveFormat.ZIP: with zipfile.ZipFile(archive_path) as zip_obj: zip_obj.extract(str_inside_archive_path, tmp_dir.name) - elif archive_path.suffix == ".7z": + elif archive_path.suffix == ArchiveFormat.SEVEN_ZIP: with py7zr.SevenZipFile(archive_path, mode="r") as szf: szf.extract(path=tmp_dir.name, targets=[str_inside_archive_path]) else: @@ -148,7 +152,7 @@ def extract_lines_from_archive(root: Path, posix_path: str) -> t.List[str]: Returns: list of lines """ - if root.suffix.lower() == ".zip": + if root.suffix.lower() == ArchiveFormat.ZIP: with zipfile.ZipFile(root) as zf: try: with zf.open(posix_path) as f: @@ -157,7 +161,7 @@ def extract_lines_from_archive(root: Path, posix_path: str) -> t.List[str]: except KeyError: # File not found in the ZIP archive return [] - elif root.suffix.lower() == ".7z": + elif root.suffix.lower() == ArchiveFormat.SEVEN_ZIP: with py7zr.SevenZipFile(root, mode="r") as z: try: data = z.read([posix_path]) diff --git a/antarest/study/service.py b/antarest/study/service.py index 85dc52a02f..28afa70858 100644 --- a/antarest/study/service.py +++ b/antarest/study/service.py @@ -58,6 +58,7 @@ from antarest.core.serialization import to_json from antarest.core.tasks.model import TaskListFilter, TaskResult, TaskStatus, TaskType from antarest.core.tasks.service import ITaskService, TaskUpdateNotifier, noop_notifier +from antarest.core.utils.archives import ArchiveFormat, is_archive_format from antarest.core.utils.fastapi_sqlalchemy import db from antarest.core.utils.utils import StopWatch from antarest.login.model import Group @@ -168,7 +169,7 @@ def get_disk_usage(path: t.Union[str, Path]) -> int: """Calculate the total disk usage (in bytes) of a study in a compressed file or directory.""" path = Path(path) - if path.suffix.lower() in {".zip", ".7z"}: + if is_archive_format(path.suffix.lower()): return os.path.getsize(path) total_size = 0 with os.scandir(path) as it: @@ -1046,7 +1047,7 @@ def export_study( logger.info("Exporting study %s", uuid) export_name = f"Study {study.name} ({uuid}) export" export_file_download = self.file_transfer_manager.request_download( - f"{study.name}-{uuid}.zip", export_name, params.user + f"{study.name}-{uuid}{ArchiveFormat.ZIP}", export_name, params.user ) export_path = Path(export_file_download.path) export_id = export_file_download.id @@ -1111,7 +1112,7 @@ def export_output( logger.info(f"Exporting {output_uuid} from study {study_uuid}") export_name = f"Study output {study.name}/{output_uuid} export" export_file_download = self.file_transfer_manager.request_download( - f"{study.name}-{study_uuid}-{output_uuid}.zip", + f"{study.name}-{study_uuid}-{output_uuid}{ArchiveFormat.ZIP}", export_name, params.user, ) @@ -1469,7 +1470,7 @@ def import_output( remove_from_cache(cache=self.cache_service, root_id=study.id) logger.info("output added to study %s by user %s", uuid, params.get_user_id()) - if output_id and isinstance(output, Path) and output.suffix == ".zip" and auto_unzip: + if output_id and isinstance(output, Path) and output.suffix == ArchiveFormat.ZIP and auto_unzip: self.unarchive_output(uuid, output_id, not is_managed(study), params) return output_id @@ -2446,7 +2447,7 @@ def unarchive_output_task( workspace = getattr(study, "workspace", DEFAULT_WORKSPACE_NAME) if workspace != DEFAULT_WORKSPACE_NAME: dest = Path(study.path) / "output" / output_id - src = Path(study.path) / "output" / f"{output_id}.zip" + src = Path(study.path) / "output" / f"{output_id}{ArchiveFormat.ZIP}" task_id = self.task_service.add_worker_task( TaskType.UNARCHIVE, f"unarchive_{workspace}", diff --git a/antarest/study/storage/abstract_storage_service.py b/antarest/study/storage/abstract_storage_service.py index 0fd1d1ec9f..49e3ec15b3 100644 --- a/antarest/study/storage/abstract_storage_service.py +++ b/antarest/study/storage/abstract_storage_service.py @@ -248,12 +248,12 @@ def import_output( stopwatch = StopWatch() try: if isinstance(output, Path): - if output != path_output and output.suffix != ".zip": + if output != path_output and output.suffix != ArchiveFormat.ZIP: shutil.copytree(output, path_output / "imported") - elif output.suffix == ".zip": + elif output.suffix == ArchiveFormat.ZIP: is_zipped = True path_output.rmdir() - path_output = Path(str(path_output) + ".zip") + path_output = Path(str(path_output) + f"{ArchiveFormat.ZIP}") shutil.copyfile(output, path_output) else: extract_archive(output, path_output) @@ -261,7 +261,7 @@ def import_output( stopwatch.log_elapsed(lambda elapsed_time: logger.info(f"Copied output for {study_id} in {elapsed_time}s")) fix_study_root(path_output) output_full_name = extract_output_name(path_output, output_name) - extension = ".zip" if is_zipped else "" + extension = f"{ArchiveFormat.ZIP}" if is_zipped else "" path_output = path_output.rename(Path(path_output.parent, output_full_name + extension)) data = self.get(metadata, f"output/{output_full_name}", 1, use_cache=False) @@ -274,7 +274,7 @@ def import_output( logger.error("Failed to import output", exc_info=e) shutil.rmtree(path_output, ignore_errors=True) if is_zipped: - Path(str(path_output) + ".zip").unlink(missing_ok=True) + Path(str(path_output) + f"{ArchiveFormat.ZIP}").unlink(missing_ok=True) output_full_name = None return output_full_name @@ -314,7 +314,7 @@ def export_output(self, metadata: T, output_id: str, target: Path) -> None: logger.info(f"Exporting output {output_id} from study {metadata.id}") path_output = Path(metadata.path) / "output" / output_id - path_output_zip = Path(metadata.path) / "output" / f"{output_id}.zip" + path_output_zip = Path(metadata.path) / "output" / f"{output_id}.{ArchiveFormat.ZIP}" if path_output_zip.exists(): shutil.copyfile(path_output_zip, target) @@ -339,7 +339,7 @@ def archive_study_output(self, study: T, output_id: str) -> bool: try: archive_dir( Path(study.path) / "output" / output_id, - Path(study.path) / "output" / f"{output_id}.zip", + Path(study.path) / "output" / f"{output_id}{ArchiveFormat.ZIP}", remove_source_dir=True, archive_format=ArchiveFormat.ZIP, ) @@ -353,10 +353,15 @@ def archive_study_output(self, study: T, output_id: str) -> bool: return False def unarchive_study_output(self, study: T, output_id: str, keep_src_zip: bool) -> bool: + if not (Path(study.path) / "output" / f"{output_id}{ArchiveFormat.ZIP}").exists(): + logger.warning( + f"Failed to archive study {study.name} output {output_id}. Maybe it's already unarchived", + ) + return False try: unzip( Path(study.path) / "output" / output_id, - Path(study.path) / "output" / f"{output_id}.zip", + Path(study.path) / "output" / f"{output_id}{ArchiveFormat.ZIP}", remove_source_zip=not keep_src_zip, ) remove_from_cache(self.cache, study.id) diff --git a/antarest/study/storage/rawstudy/model/filesystem/config/files.py b/antarest/study/storage/rawstudy/model/filesystem/config/files.py index 35eb183087..03b2ab0dea 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/config/files.py +++ b/antarest/study/storage/rawstudy/model/filesystem/config/files.py @@ -25,7 +25,7 @@ from antarest.core.model import JSON from antarest.core.serialization import from_json -from antarest.core.utils.archives import extract_lines_from_archive +from antarest.core.utils.archives import ArchiveFormat, extract_lines_from_archive, is_archive_format from antarest.study.model import STUDY_VERSION_8_1, STUDY_VERSION_8_6 from antarest.study.storage.rawstudy.ini_reader import IniReader from antarest.study.storage.rawstudy.model.filesystem.config.binding_constraint import ( @@ -93,7 +93,7 @@ def extract_data_from_archive( except KeyError: # File not found in the ZIP archive return {} - elif root.suffix.lower() == ".7z": + elif root.suffix.lower() == ArchiveFormat.SEVEN_ZIP: with py7zr.SevenZipFile(root, mode="r") as z: try: data = z.read([posix_path]) @@ -119,7 +119,7 @@ def build(study_path: Path, study_id: str, output_path: t.Optional[Path] = None) Returns: An instance of `FileStudyTreeConfig` filled with the study data. """ - is_archive = study_path.suffix.lower() in {".zip", ".7z"} + is_archive = is_archive_format(study_path.suffix.lower()) # Study directory to use if the study is compressed study_dir = study_path.with_suffix("") if is_archive else study_path @@ -164,7 +164,7 @@ def _extract_data_from_file( - SIMPLE_INI or MULTI_INI: dictionary of keys/values """ - is_archive: bool = root.suffix.lower() in {".zip", ".7z"} + is_archive: bool = is_archive_format(root.suffix.lower()) posix_path: str = inside_root_path.as_posix() output_data_path = root / inside_root_path diff --git a/antarest/study/storage/rawstudy/raw_study_service.py b/antarest/study/storage/rawstudy/raw_study_service.py index 5ca6eabdac..e90b9b33ed 100644 --- a/antarest/study/storage/rawstudy/raw_study_service.py +++ b/antarest/study/storage/rawstudy/raw_study_service.py @@ -26,7 +26,7 @@ from antarest.core.interfaces.cache import ICache from antarest.core.model import PublicMode from antarest.core.requests import RequestParameters -from antarest.core.utils.archives import extract_archive +from antarest.core.utils.archives import ArchiveFormat, extract_archive from antarest.study.model import DEFAULT_WORKSPACE_NAME, Patch, RawStudy, Study, StudyAdditionalData from antarest.study.storage.abstract_storage_service import AbstractStorageService from antarest.study.storage.patch_service import PatchService @@ -384,7 +384,7 @@ def set_reference_output(self, study: RawStudy, output_id: str, status: bool) -> remove_from_cache(self.cache, study.id) def archive(self, study: RawStudy) -> Path: - archive_path = self.config.storage.archive_dir.joinpath(f"{study.id}.7z") + archive_path = self.config.storage.archive_dir.joinpath(f"{study.id}{ArchiveFormat.SEVEN_ZIP}") new_study_path = self.export_study(study, archive_path) shutil.rmtree(study.path) remove_from_cache(cache=self.cache, root_id=study.id) @@ -416,7 +416,7 @@ def find_archive_path(self, study: RawStudy) -> Path: The full path of the archive file (zip or 7z). """ archive_dir: Path = self.config.storage.archive_dir - for suffix in [".zip", ".7z"]: + for suffix in list(ArchiveFormat): path = archive_dir.joinpath(f"{study.id}{suffix}") if path.is_file(): return path diff --git a/antarest/study/storage/utils.py b/antarest/study/storage/utils.py index c2d0f46b5e..85ba04b630 100644 --- a/antarest/study/storage/utils.py +++ b/antarest/study/storage/utils.py @@ -31,6 +31,7 @@ from antarest.core.model import PermissionInfo, StudyPermissionType from antarest.core.permissions import check_permission from antarest.core.requests import UserHasNotPermissionError +from antarest.core.utils.archives import is_archive_format from antarest.core.utils.utils import StopWatch from antarest.study.model import ( DEFAULT_WORKSPACE_NAME, @@ -79,7 +80,7 @@ def fix_study_root(study_path: Path) -> None: study_path: the study initial root path """ # TODO: what if it is a zipped output ? - if study_path.suffix in {".zip", ".7z"}: + if is_archive_format(study_path.suffix): return None if not study_path.is_dir(): From aef85fe7f18b487a233b27f39bcec37c1438a5a1 Mon Sep 17 00:00:00 2001 From: Mohamed Abdel Wedoud Date: Thu, 24 Oct 2024 10:57:31 +0200 Subject: [PATCH 070/182] style(filesystem): remove `Path` casting --- antarest/study/storage/rawstudy/model/filesystem/inode.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/antarest/study/storage/rawstudy/model/filesystem/inode.py b/antarest/study/storage/rawstudy/model/filesystem/inode.py index cf4aa13e0a..f88903c729 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/inode.py +++ b/antarest/study/storage/rawstudy/model/filesystem/inode.py @@ -152,7 +152,7 @@ def _extract_file_to_tmp_dir( raise ShouldNotHappenException() inside_archive_path = self.config.path.relative_to(self.config.archive_path.parent / self.config.study_id) if self.config.archive_path: - return extract_file_to_tmp_dir(self.config.archive_path, Path(inside_archive_path)) + return extract_file_to_tmp_dir(self.config.archive_path, inside_archive_path) else: raise ShouldNotHappenException() From 2f2ca593c39228088ee10398520c0157e965192a Mon Sep 17 00:00:00 2001 From: Mohamed Abdel Wedoud Date: Thu, 24 Oct 2024 12:36:33 +0200 Subject: [PATCH 071/182] test(import-study): remove unused function `build_storage_service` --- tests/storage/business/test_import.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/tests/storage/business/test_import.py b/tests/storage/business/test_import.py index 5770c2bf36..25bc1c4f74 100644 --- a/tests/storage/business/test_import.py +++ b/tests/storage/business/test_import.py @@ -25,13 +25,6 @@ from antarest.study.storage.utils import fix_study_root -def build_storage_service(workspace: Path, uuid: str) -> RawStudyService: - service = Mock() - service.get_workspace_path.return_value = workspace - service.get_study_path.return_value = workspace / uuid - return service - - @pytest.mark.unit_test def test_import_study(tmp_path: Path) -> None: name = "my-study" From 02f3d17c17b5bf9f4055d7d618b3f430954c1cf0 Mon Sep 17 00:00:00 2001 From: Mohamed Abdel Wedoud Date: Thu, 24 Oct 2024 13:33:03 +0200 Subject: [PATCH 072/182] refactor(storage-service): remove duplicate code in `abstract_storage_service.py` --- antarest/study/storage/abstract_storage_service.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/antarest/study/storage/abstract_storage_service.py b/antarest/study/storage/abstract_storage_service.py index 49e3ec15b3..7b68c2fd07 100644 --- a/antarest/study/storage/abstract_storage_service.py +++ b/antarest/study/storage/abstract_storage_service.py @@ -298,8 +298,6 @@ def export_study(self, metadata: T, target: Path, outputs: bool = True) -> Path: self.export_study_flat(metadata, tmp_study_path, outputs) stopwatch = StopWatch() archive_dir(tmp_study_path, target, archive_format=ArchiveFormat.SEVEN_ZIP) - with py7zr.SevenZipFile(target, "w") as szf: - szf.writeall(tmp_study_path, arcname="") stopwatch.log_elapsed(lambda x: logger.info(f"Study {path_study} exported (7zip mode) in {x}s")) return target From 051460284dcf16d63aaa431dbead46db09246c47 Mon Sep 17 00:00:00 2001 From: Mohamed Abdel Wedoud Date: Thu, 24 Oct 2024 14:34:45 +0200 Subject: [PATCH 073/182] refactor(archives-utils): merge reading in archive duplicate code --- antarest/core/utils/archives.py | 54 ++++++++++++------- .../rawstudy/model/filesystem/config/files.py | 33 +++++------- 2 files changed, 46 insertions(+), 41 deletions(-) diff --git a/antarest/core/utils/archives.py b/antarest/core/utils/archives.py index aa94e58c1b..93d05da5b3 100644 --- a/antarest/core/utils/archives.py +++ b/antarest/core/utils/archives.py @@ -40,6 +40,10 @@ def archive_dir( remove_source_dir: bool = False, archive_format: ArchiveFormat = ArchiveFormat.SEVEN_ZIP, ) -> None: + if target_archive_path.suffix != archive_format: + raise ShouldNotHappenException( + f"Non matching archive format {archive_format} and target archive suffix {target_archive_path.suffix}" + ) if archive_format == ArchiveFormat.SEVEN_ZIP: with py7zr.SevenZipFile(target_archive_path, mode="w") as szf: szf.writeall(src_dir_path) @@ -141,6 +145,30 @@ def extract_file_to_tmp_dir(archive_path: Path, inside_archive_path: Path) -> t. return path, tmp_dir +def read_file_from_archive(archive_path: Path, posix_path: str) -> str: + """ + Read a file from an archive. + + Args: + archive_path: the path to the archive file. + posix_path: path to the file inside the archive. + + Returns: + The content of the file as a string. + """ + + if archive_path.suffix == ArchiveFormat.ZIP: + with zipfile.ZipFile(archive_path) as zip_obj: + with zip_obj.open(posix_path) as f: + return f.read().decode("utf-8") + elif archive_path.suffix == ArchiveFormat.SEVEN_ZIP: + with py7zr.SevenZipFile(archive_path, mode="r") as szf: + file_text: str = szf.read([posix_path])[posix_path].read().decode("utf-8") + return file_text + else: + raise ValueError(f"Unsupported {archive_path.suffix} archive format for {archive_path}") + + def extract_lines_from_archive(root: Path, posix_path: str) -> t.List[str]: """ Extract text lines from various types of files. @@ -152,23 +180,9 @@ def extract_lines_from_archive(root: Path, posix_path: str) -> t.List[str]: Returns: list of lines """ - if root.suffix.lower() == ArchiveFormat.ZIP: - with zipfile.ZipFile(root) as zf: - try: - with zf.open(posix_path) as f: - text = f.read().decode("utf-8") - return text.splitlines(keepends=False) - except KeyError: - # File not found in the ZIP archive - return [] - elif root.suffix.lower() == ArchiveFormat.SEVEN_ZIP: - with py7zr.SevenZipFile(root, mode="r") as z: - try: - data = z.read([posix_path]) - text = data[posix_path].read().decode("utf-8") - return text.splitlines(keepends=False) - except KeyError: - # File not found in the 7z archive - return [] - else: - raise ValueError(f"Unsupported file type: {root}") + try: + text = read_file_from_archive(root, posix_path) + return text.splitlines(keepends=False) + # File not found in the archive + except KeyError: + return [] diff --git a/antarest/study/storage/rawstudy/model/filesystem/config/files.py b/antarest/study/storage/rawstudy/model/filesystem/config/files.py index 03b2ab0dea..8f23fecd25 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/config/files.py +++ b/antarest/study/storage/rawstudy/model/filesystem/config/files.py @@ -25,7 +25,12 @@ from antarest.core.model import JSON from antarest.core.serialization import from_json -from antarest.core.utils.archives import ArchiveFormat, extract_lines_from_archive, is_archive_format +from antarest.core.utils.archives import ( + ArchiveFormat, + extract_lines_from_archive, + is_archive_format, + read_file_from_archive, +) from antarest.study.model import STUDY_VERSION_8_1, STUDY_VERSION_8_6 from antarest.study.storage.rawstudy.ini_reader import IniReader from antarest.study.storage.rawstudy.model.filesystem.config.binding_constraint import ( @@ -84,26 +89,12 @@ def extract_data_from_archive( The content of the file, processed according to its type: - SIMPLE_INI or MULTI_INI: dictionary of keys/values """ - if root.suffix.lower() == ".zip": - with zipfile.ZipFile(root) as zf: - try: - with zf.open(posix_path) as f: - buffer = io.StringIO(f.read().decode("utf-8")) - return reader.read(buffer) - except KeyError: - # File not found in the ZIP archive - return {} - elif root.suffix.lower() == ArchiveFormat.SEVEN_ZIP: - with py7zr.SevenZipFile(root, mode="r") as z: - try: - data = z.read([posix_path]) - buffer = io.StringIO(data[posix_path].read().decode("utf-8")) - return reader.read(buffer) - except KeyError: - # File not found in the 7z archive - return {} - else: - raise ValueError(f"Unsupported file type: {root}") + try: + file_text = read_file_from_archive(root, posix_path) + buffer = io.StringIO(file_text) + return reader.read(buffer) + except KeyError: # File not found in the archive + return {} def build(study_path: Path, study_id: str, output_path: t.Optional[Path] = None) -> "FileStudyTreeConfig": From b61cd8ef7949a14094db88b649370ae52cd6b29c Mon Sep 17 00:00:00 2001 From: Mohamed Abdel Wedoud Date: Thu, 24 Oct 2024 14:39:03 +0200 Subject: [PATCH 074/182] fix(archives-utils): add empty string as `arcname` when writing a `.7z` file --- antarest/core/utils/archives.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/antarest/core/utils/archives.py b/antarest/core/utils/archives.py index 93d05da5b3..7a5732b7c0 100644 --- a/antarest/core/utils/archives.py +++ b/antarest/core/utils/archives.py @@ -46,7 +46,7 @@ def archive_dir( ) if archive_format == ArchiveFormat.SEVEN_ZIP: with py7zr.SevenZipFile(target_archive_path, mode="w") as szf: - szf.writeall(src_dir_path) + szf.writeall(src_dir_path, arcname="") elif archive_format == ArchiveFormat.ZIP: with zipfile.ZipFile(target_archive_path, mode="w", compression=zipfile.ZIP_DEFLATED, compresslevel=2) as zipf: len_dir_path = len(str(src_dir_path)) From 2d87696c52db7c9a2cc0d19403733b06d87747f4 Mon Sep 17 00:00:00 2001 From: Mohamed Abdel Wedoud Date: Thu, 24 Oct 2024 15:24:09 +0200 Subject: [PATCH 075/182] test(export-apis): add `STA-mini.7z` path as a fixture --- tests/storage/integration/conftest.py | 17 +++++++++++++++++ tests/storage/integration/test_exporter.py | 8 ++++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/tests/storage/integration/conftest.py b/tests/storage/integration/conftest.py index dcf7e5e830..3c7da36de9 100644 --- a/tests/storage/integration/conftest.py +++ b/tests/storage/integration/conftest.py @@ -11,10 +11,13 @@ # This file is part of the Antares project. import datetime +import shutil +import zipfile from pathlib import Path from unittest.mock import Mock from zipfile import ZipFile +import py7zr import pytest from sqlalchemy import create_engine @@ -43,6 +46,20 @@ def sta_mini_zip_path(project_path: Path) -> Path: return project_path / "examples/studies/STA-mini.zip" +@pytest.fixture +def sta_mini_seven_zip_path(project_path: Path, sta_mini_zip_path: Path) -> Path: + target = project_path / "examples/studies/STA-mini.7z" + if target.is_file(): + return target + with zipfile.ZipFile(sta_mini_zip_path, "r") as zf: + zf.extractall(sta_mini_zip_path.parent) + extracted_dir_path = sta_mini_zip_path.parent / "STA-mini" + with py7zr.SevenZipFile(target, "w") as szf: + szf.writeall(extracted_dir_path, arcname="") + shutil.rmtree(extracted_dir_path) + return target + + @pytest.fixture def storage_service(tmp_path: Path, project_path: Path, sta_mini_zip_path: Path) -> StudyService: engine = create_engine("sqlite:///:memory:", echo=False) diff --git a/tests/storage/integration/test_exporter.py b/tests/storage/integration/test_exporter.py index 46e077a9ca..9e32e872dc 100644 --- a/tests/storage/integration/test_exporter.py +++ b/tests/storage/integration/test_exporter.py @@ -94,20 +94,20 @@ def assert_url_content(url: str, tmp_dir: Path, sta_mini_zip_path: Path) -> byte return fh.read() -def test_exporter_file(tmp_path: Path, sta_mini_zip_path: Path) -> None: +def test_exporter_file(tmp_path: Path, sta_mini_seven_zip_path: Path) -> None: data = assert_url_content( url=f"/v1/studies/{UUID}/export", tmp_dir=tmp_path, - sta_mini_zip_path=sta_mini_zip_path, + sta_mini_zip_path=sta_mini_seven_zip_path, ) assert data and b" None: +def test_exporter_file_no_output(tmp_path: Path, sta_mini_seven_zip_path: Path) -> None: data = assert_url_content( url=f"/v1/studies/{UUID}/export?no-output", tmp_dir=tmp_path, - sta_mini_zip_path=sta_mini_zip_path, + sta_mini_zip_path=sta_mini_seven_zip_path, ) assert data and b" Date: Thu, 24 Oct 2024 16:21:32 +0200 Subject: [PATCH 076/182] fix(export-apis): make `archive_format` optional but enforce that `target.suffix` is valid --- antarest/core/utils/archives.py | 10 ++--- .../study/storage/abstract_storage_service.py | 6 ++- tests/storage/integration/test_exporter.py | 39 +++++++++++++------ 3 files changed, 37 insertions(+), 18 deletions(-) diff --git a/antarest/core/utils/archives.py b/antarest/core/utils/archives.py index 7a5732b7c0..a128cd4438 100644 --- a/antarest/core/utils/archives.py +++ b/antarest/core/utils/archives.py @@ -38,16 +38,16 @@ def archive_dir( src_dir_path: Path, target_archive_path: Path, remove_source_dir: bool = False, - archive_format: ArchiveFormat = ArchiveFormat.SEVEN_ZIP, + archive_format: t.Optional[ArchiveFormat] = None, ) -> None: - if target_archive_path.suffix != archive_format: + if archive_format is not None and target_archive_path.suffix != archive_format: raise ShouldNotHappenException( f"Non matching archive format {archive_format} and target archive suffix {target_archive_path.suffix}" ) - if archive_format == ArchiveFormat.SEVEN_ZIP: + if target_archive_path.suffix == ArchiveFormat.SEVEN_ZIP: with py7zr.SevenZipFile(target_archive_path, mode="w") as szf: szf.writeall(src_dir_path, arcname="") - elif archive_format == ArchiveFormat.ZIP: + elif target_archive_path.suffix == ArchiveFormat.ZIP: with zipfile.ZipFile(target_archive_path, mode="w", compression=zipfile.ZIP_DEFLATED, compresslevel=2) as zipf: len_dir_path = len(str(src_dir_path)) for root, _, files in os.walk(src_dir_path): @@ -55,7 +55,7 @@ def archive_dir( file_path = os.path.join(root, file) zipf.write(file_path, file_path[len_dir_path:]) else: - raise ShouldNotHappenException(f"Unsupported archive format {archive_format}") + raise ShouldNotHappenException(f"Unsupported archive format {target_archive_path.suffix}") if remove_source_dir: shutil.rmtree(src_dir_path) diff --git a/antarest/study/storage/abstract_storage_service.py b/antarest/study/storage/abstract_storage_service.py index 7b68c2fd07..782eb5516f 100644 --- a/antarest/study/storage/abstract_storage_service.py +++ b/antarest/study/storage/abstract_storage_service.py @@ -297,8 +297,10 @@ def export_study(self, metadata: T, target: Path, outputs: bool = True) -> Path: tmp_study_path = Path(tmpdir) / "tmp_copy" self.export_study_flat(metadata, tmp_study_path, outputs) stopwatch = StopWatch() - archive_dir(tmp_study_path, target, archive_format=ArchiveFormat.SEVEN_ZIP) - stopwatch.log_elapsed(lambda x: logger.info(f"Study {path_study} exported (7zip mode) in {x}s")) + archive_dir(tmp_study_path, target) + stopwatch.log_elapsed( + lambda x: logger.info(f"Study {path_study} exported ({target.suffix} format) in {x}s") + ) return target def export_output(self, metadata: T, output_id: str, target: Path) -> None: diff --git a/tests/storage/integration/test_exporter.py b/tests/storage/integration/test_exporter.py index 9e32e872dc..39ad4b1b7a 100644 --- a/tests/storage/integration/test_exporter.py +++ b/tests/storage/integration/test_exporter.py @@ -17,6 +17,7 @@ from typing import List, Optional from unittest.mock import Mock +import py7zr import pytest from fastapi import FastAPI from starlette.testclient import TestClient @@ -35,11 +36,17 @@ from tests.storage.integration.conftest import UUID -def assert_url_content(url: str, tmp_dir: Path, sta_mini_zip_path: Path) -> bytes: +def assert_url_content(url: str, tmp_dir: Path, sta_mini_archive_path: Path) -> bytes: path_studies = tmp_dir / "studies" - with zipfile.ZipFile(sta_mini_zip_path) as zip_output: - zip_output.extractall(path=path_studies) + if sta_mini_archive_path.suffix == ".zip": + with zipfile.ZipFile(sta_mini_archive_path) as zip_output: + zip_output.extractall(path=path_studies) + elif sta_mini_archive_path.suffix == ".7z": + with py7zr.SevenZipFile(sta_mini_archive_path, "r") as szf: + szf.extractall(path=path_studies / "STA-mini") + else: + raise ValueError(f"Unsupported archive format {sta_mini_archive_path.suffix}") config = Config( resources_path=Path(), @@ -94,20 +101,30 @@ def assert_url_content(url: str, tmp_dir: Path, sta_mini_zip_path: Path) -> byte return fh.read() -def test_exporter_file(tmp_path: Path, sta_mini_seven_zip_path: Path) -> None: +def test_exporter_file(tmp_path: Path, sta_mini_zip_path: Path, sta_mini_seven_zip_path: Path) -> None: + # test with zip file data = assert_url_content( - url=f"/v1/studies/{UUID}/export", - tmp_dir=tmp_path, - sta_mini_zip_path=sta_mini_seven_zip_path, + url=f"/v1/studies/{UUID}/export", tmp_dir=tmp_path, sta_mini_archive_path=sta_mini_zip_path ) assert data and b" None: + # test with zip file + data = assert_url_content( + url=f"/v1/studies/{UUID}/export?no-output", tmp_dir=tmp_path, sta_mini_archive_path=sta_mini_zip_path + ) + assert data and b" None: + # test with 7zip file data = assert_url_content( - url=f"/v1/studies/{UUID}/export?no-output", - tmp_dir=tmp_path, - sta_mini_zip_path=sta_mini_seven_zip_path, + url=f"/v1/studies/{UUID}/export?no-output", tmp_dir=tmp_path, sta_mini_archive_path=sta_mini_seven_zip_path ) assert data and b" Date: Thu, 24 Oct 2024 17:52:15 +0200 Subject: [PATCH 077/182] test(import-study): add unittest for importing a study in a `.7z` format --- tests/storage/business/test_import.py | 42 +++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/tests/storage/business/test_import.py b/tests/storage/business/test_import.py index 25bc1c4f74..6cf9a7ef74 100644 --- a/tests/storage/business/test_import.py +++ b/tests/storage/business/test_import.py @@ -16,6 +16,7 @@ from pathlib import Path from unittest.mock import Mock +import py7zr import pytest from antarest.core.exceptions import BadArchiveContent, StudyValidationError @@ -49,7 +50,9 @@ def test_import_study(tmp_path: Path) -> None: study_service.get = Mock() study_service.get_study_path = Mock() study_service.get.return_value = data - study_service.get_study_path.return_value = tmp_path / "other-study" + + # first test importing a study for an archived study with `.zip` format + study_service.get_study_path.return_value = tmp_path / "other-study-zip" filepath_zip = shutil.make_archive(str(study_path.absolute()), "zip", study_path) shutil.rmtree(study_path) @@ -57,19 +60,48 @@ def test_import_study(tmp_path: Path) -> None: path_zip = Path(filepath_zip) md = RawStudy( - id="other-study", + id="other-study-zip", workspace=DEFAULT_WORKSPACE_NAME, - path=tmp_path / "other-study", + path=tmp_path / "other-study-zip", additional_data=StudyAdditionalData(), groups=["fake_group_1", "fake_group_2"], ) with path_zip.open("rb") as input_file: md = study_service.import_study(md, input_file) - assert md.path == f"{tmp_path}{os.sep}other-study" + assert md.path == f"{tmp_path}{os.sep}other-study-zip" # assert that importing file into a created study does not alter its group assert md.groups == ["fake_group_1", "fake_group_2"] - shutil.rmtree(tmp_path / "other-study") + shutil.rmtree(tmp_path / "other-study-zip") + + # second test for an archived study with a `.7z` format + study_service.get_study_path.return_value = tmp_path / "other-study-7zip" + + study_path.mkdir() + (study_path / "study.antares").touch() + + filepath_7zip = study_path.parent / f"{study_path.name}.7z" + with py7zr.SevenZipFile(filepath_7zip, "w") as archive: + archive.writeall(study_path, arcname="") + + shutil.rmtree(study_path) + + md = RawStudy( + id="other-study-7zip", + workspace=DEFAULT_WORKSPACE_NAME, + path=tmp_path / "other-study-7zip", + additional_data=StudyAdditionalData(), + groups=["fake_group_1", "fake_group_2"], + ) + with filepath_7zip.open("rb") as input_file: + md = study_service.import_study(md, input_file) + assert md.path == f"{tmp_path}{os.sep}other-study-7zip" + # assert that importing file into a created study does not alter its group + assert md.groups == ["fake_group_1", "fake_group_2"] + + shutil.rmtree(tmp_path / "other-study-7zip") + + # test for an unsupported archive format with pytest.raises(BadArchiveContent, match="Unsupported archive format"): study_service.import_study(md, io.BytesIO(b"")) From 19e056177e989419ec416472e6a992978325ab2c Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Fri, 25 Oct 2024 10:16:36 +0200 Subject: [PATCH 078/182] feat(bc): use `update_config` instead of `update_bc` for multiple updates (#2105) --- .../business/binding_constraint_management.py | 132 ++++++++++++++++-- .../command/create_binding_constraint.py | 3 + .../command/update_binding_constraint.py | 4 +- .../test_binding_constraints.py | 80 ++++++++++- .../test_manage_binding_constraints.py | 4 +- 5 files changed, 202 insertions(+), 21 deletions(-) diff --git a/antarest/study/business/binding_constraint_management.py b/antarest/study/business/binding_constraint_management.py index 985123003d..e4b5125379 100644 --- a/antarest/study/business/binding_constraint_management.py +++ b/antarest/study/business/binding_constraint_management.py @@ -11,6 +11,7 @@ # This file is part of the Antares project. import collections +import copy import logging import typing as t @@ -65,9 +66,17 @@ CreateBindingConstraint, OptionalProperties, TermMatrices, + create_binding_constraint_config, ) +from antarest.study.storage.variantstudy.model.command.icommand import ICommand from antarest.study.storage.variantstudy.model.command.remove_binding_constraint import RemoveBindingConstraint -from antarest.study.storage.variantstudy.model.command.update_binding_constraint import UpdateBindingConstraint +from antarest.study.storage.variantstudy.model.command.replace_matrix import ReplaceMatrix +from antarest.study.storage.variantstudy.model.command.update_binding_constraint import ( + UpdateBindingConstraint, + update_matrices_names, +) +from antarest.study.storage.variantstudy.model.command.update_config import UpdateConfig +from antarest.study.storage.variantstudy.model.command_context import CommandContext from antarest.study.storage.variantstudy.model.dbmodel import VariantStudy logger = logging.getLogger(__name__) @@ -338,6 +347,13 @@ class ConstraintOutput870(ConstraintOutput830): # the type of the output constraint in the FastAPI endpoint. ConstraintOutput = t.Union[ConstraintOutputBase, ConstraintOutput830, ConstraintOutput870] +OPERATOR_MATRIX_FILE_MAP = { + BindingConstraintOperator.EQUAL: ["{bc_id}_eq"], + BindingConstraintOperator.GREATER: ["{bc_id}_gt"], + BindingConstraintOperator.LESS: ["{bc_id}_lt"], + BindingConstraintOperator.BOTH: ["{bc_id}_lt", "{bc_id}_gt"], +} + def _get_references_by_widths( file_study: FileStudy, bcs: t.Sequence[ConstraintOutput] @@ -351,17 +367,13 @@ def _get_references_by_widths( The height of the matrices may vary depending on the time step, but the width should be consistent within a group of binding constraints. """ - operator_matrix_file_map = { - BindingConstraintOperator.EQUAL: ["{bc_id}_eq"], - BindingConstraintOperator.GREATER: ["{bc_id}_gt"], - BindingConstraintOperator.LESS: ["{bc_id}_lt"], - BindingConstraintOperator.BOTH: ["{bc_id}_lt", "{bc_id}_gt"], - } references_by_width: t.Dict[int, t.List[t.Tuple[str, str]]] = {} _total = len(bcs) for _index, bc in enumerate(bcs): - matrices_name = operator_matrix_file_map[bc.operator] if file_study.config.version >= 870 else ["{bc_id}"] + matrices_name = ( + OPERATOR_MATRIX_FILE_MAP[bc.operator] if file_study.config.version >= STUDY_VERSION_8_7 else ["{bc_id}"] + ) for matrix_name in matrices_name: matrix_id = matrix_name.format(bc_id=bc.id) logger.info(f"⏲ Validating BC '{bc.id}': {matrix_id=} [{_index+1}/{_total}]") @@ -384,6 +396,40 @@ def _get_references_by_widths( return references_by_width +def _generate_replace_matrix_commands( + bc_id: str, + study_version: StudyVersion, + value: ConstraintInput, + operator: BindingConstraintOperator, + command_context: CommandContext, +) -> t.List[ICommand]: + commands: t.List[ICommand] = [] + if study_version < STUDY_VERSION_8_7: + matrix = { + BindingConstraintFrequency.HOURLY.value: default_bc_hourly_86, + BindingConstraintFrequency.DAILY.value: default_bc_weekly_daily_86, + BindingConstraintFrequency.WEEKLY.value: default_bc_weekly_daily_86, + }[value.time_step].tolist() + command = ReplaceMatrix( + target=f"input/bindingconstraints/{bc_id}", matrix=matrix, command_context=command_context + ) + commands.append(command) + else: + matrix = { + BindingConstraintFrequency.HOURLY.value: default_bc_hourly_87, + BindingConstraintFrequency.DAILY.value: default_bc_weekly_daily_87, + BindingConstraintFrequency.WEEKLY.value: default_bc_weekly_daily_87, + }[value.time_step].tolist() + matrices_to_replace = OPERATOR_MATRIX_FILE_MAP[operator] + for matrix_name in matrices_to_replace: + matrix_id = matrix_name.format(bc_id=bc_id) + command = ReplaceMatrix( + target=f"input/bindingconstraints/{matrix_id}", matrix=matrix, command_context=command_context + ) + commands.append(command) + return commands + + def _validate_binding_constraints(file_study: FileStudy, bcs: t.Sequence[ConstraintOutput]) -> bool: """ Validates the binding constraints within a group. @@ -747,9 +793,10 @@ def update_binding_constraint( study: Study, binding_constraint_id: str, data: ConstraintInput, + existing_constraint: t.Optional[ConstraintOutput] = None, ) -> ConstraintOutput: file_study = self.storage_service.get_storage(study).get_raw(study) - existing_constraint = self.get_binding_constraint(study, binding_constraint_id) + existing_constraint = existing_constraint or self.get_binding_constraint(study, binding_constraint_id) study_version = StudyVersion.parse(study.version) check_attributes_coherence(data, study_version, data.operator or existing_constraint.operator) @@ -774,10 +821,11 @@ def update_binding_constraint( # Validates the matrices. Needed when the study is a variant because we only append the command to the list if isinstance(study, VariantStudy): updated_matrices = [term for term in [m.value for m in TermMatrices] if getattr(data, term)] - time_step = data.time_step or existing_constraint.time_step - command.validates_and_fills_matrices( - time_step=time_step, specific_matrices=updated_matrices, version=study_version, create=False # type: ignore - ) + if updated_matrices: + time_step = data.time_step or existing_constraint.time_step + command.validates_and_fills_matrices( + time_step=time_step, specific_matrices=updated_matrices, version=study_version, create=False # type: ignore + ) execute_or_add_commands(study, file_study, [command], self.storage_service) @@ -807,15 +855,69 @@ def update_binding_constraints( study: The study from which to update the constraints. bcs_by_ids: A mapping of binding constraint IDs to their updated configurations. + If there's more than 50 BCs updated as the same time, the 'update_binding_constraint' command takes more than 1 second. + And for thousands of BCs updated as the same time, it takes several minutes. + This is mainly because we open/close the 'bindingconstraints.ini' file multiple times for each constraint. + To avoid this, when dealing with such a case we'll use the 'update_config' command to write all the data at once. + However, such command is not really clear, so we won't use it on variants with less than 50 updated BCs. + Returns: A dictionary of the updated binding constraints, indexed by their IDs. Raises: BindingConstraintNotFound: If any of the specified binding constraint IDs are not found. """ + + # Variant study with less than 50 updated constraints updated_constraints = {} - for bc_id, data in bcs_by_ids.items(): - updated_constraints[bc_id] = self.update_binding_constraint(study, bc_id, data) + if len(bcs_by_ids) < 50 and isinstance(study, VariantStudy): + existing_constraints = {bc.id: bc for bc in self.get_binding_constraints(study)} + for bc_id, data in bcs_by_ids.items(): + updated_constraints[bc_id] = self.update_binding_constraint( + study, bc_id, data, existing_constraints[bc_id] + ) + return updated_constraints + + # More efficient way of doing things but using less readable commands. + study_version = StudyVersion.parse(study.version) + commands = [] + command_context = self.storage_service.variant_study_service.command_factory.command_context + + file_study = self.storage_service.get_storage(study).get_raw(study) + config = file_study.tree.get(["input", "bindingconstraints", "bindingconstraints"]) + dict_config = {value["id"]: key for (key, value) in config.items()} + for bc_id, value in bcs_by_ids.items(): + if bc_id not in dict_config: + raise BindingConstraintNotFound(f"Binding constraint '{bc_id}' not found") + + props = create_binding_constraint_config(study_version, **value.dict()) + new_values = props.model_dump(mode="json", by_alias=True, exclude_unset=True) + upd_obj = config[dict_config[bc_id]] + current_value = copy.deepcopy(upd_obj) + upd_obj.update(new_values) + output = self.constraint_model_adapter(upd_obj, study_version) + updated_constraints[bc_id] = output + + if value.time_step and value.time_step != BindingConstraintFrequency(current_value["type"]): + # The user changed the time step, we need to update the matrix accordingly + replace_matrix_commands = _generate_replace_matrix_commands( + bc_id, study_version, value, output.operator, command_context + ) + commands.extend(replace_matrix_commands) + + if value.operator and study_version >= STUDY_VERSION_8_7: + # The user changed the operator, we have to rename matrices accordingly + existing_operator = BindingConstraintOperator(current_value["operator"]) + update_matrices_names(file_study, bc_id, existing_operator, value.operator) + + # Updates the file only once with all the information + command = UpdateConfig( + target="input/bindingconstraints/bindingconstraints", + data=config, + command_context=command_context, + ) + commands.append(command) + execute_or_add_commands(study, file_study, commands, self.storage_service) return updated_constraints def remove_binding_constraint(self, study: Study, binding_constraint_id: str) -> None: diff --git a/antarest/study/storage/variantstudy/model/command/create_binding_constraint.py b/antarest/study/storage/variantstudy/model/command/create_binding_constraint.py index a57f51a666..e84564de57 100644 --- a/antarest/study/storage/variantstudy/model/command/create_binding_constraint.py +++ b/antarest/study/storage/variantstudy/model/command/create_binding_constraint.py @@ -499,6 +499,9 @@ def remove_bc_from_scenario_builder(study_data: FileStudy, removed_groups: t.Set NOTE: this update can be very long if the scenario builder configuration is large. """ + if not removed_groups: + return + rulesets = study_data.tree.get(["settings", "scenariobuilder"]) for ruleset in rulesets.values(): diff --git a/antarest/study/storage/variantstudy/model/command/update_binding_constraint.py b/antarest/study/storage/variantstudy/model/command/update_binding_constraint.py index b5a847f4a1..bc582d0036 100644 --- a/antarest/study/storage/variantstudy/model/command/update_binding_constraint.py +++ b/antarest/study/storage/variantstudy/model/command/update_binding_constraint.py @@ -33,7 +33,7 @@ from antarest.study.storage.variantstudy.model.model import CommandDTO -def _update_matrices_names( +def update_matrices_names( file_study: FileStudy, bc_id: str, existing_operator: BindingConstraintOperator, @@ -170,7 +170,7 @@ def _apply(self, study_data: FileStudy) -> CommandOutput: if self.operator and study_version >= STUDY_VERSION_8_7: existing_operator = BindingConstraintOperator(actual_cfg.get("operator")) new_operator = self.operator - _update_matrices_names(study_data, self.id, existing_operator, new_operator) + update_matrices_names(study_data, self.id, existing_operator, new_operator) self._apply_config(study_data.config) diff --git a/tests/integration/study_data_blueprint/test_binding_constraints.py b/tests/integration/study_data_blueprint/test_binding_constraints.py index 42b7a9cc57..c5e8d17b5b 100644 --- a/tests/integration/study_data_blueprint/test_binding_constraints.py +++ b/tests/integration/study_data_blueprint/test_binding_constraints.py @@ -11,6 +11,7 @@ # This file is part of the Antares project. import re +import time import numpy as np import pandas as pd @@ -23,7 +24,6 @@ MATRIX_SIZES = {"hourly": 8784, "daily": 366, "weekly": 366} - REQUIRED_MATRICES = { "less": {"lt"}, "equal": {"eq"}, @@ -97,9 +97,85 @@ class TestBindingConstraints: Test the end points related to binding constraints. """ + def test_update_multiple_binding_constraints(self, client: TestClient, user_access_token: str) -> None: + client.headers = {"Authorization": f"Bearer {user_access_token}"} + preparer = PreparerProxy(client, user_access_token) + study_id = preparer.create_study("foo", version=880) + body = {} + # Creates 50 BCs + for k in range(50): + bc_id = f"bc_{k}" + client.post( + f"/v1/studies/{study_id}/commands", + json=[{"action": "create_binding_constraint", "args": {"name": bc_id}}], + ) + body[bc_id] = {"filterSynthesis": "hourly"} + # Modify all of them with the table-mode endpoints + start = time.time() + res = client.put(f"/v1/studies/{study_id}/table-mode/binding-constraints", json=body) + assert res.status_code in {200, 201} + end = time.time() + duration = end - start + # due to new code this should be extremely fast. + assert duration < 0.2 + # asserts the changes are effective. + res = client.get(f"/v1/studies/{study_id}/bindingconstraints") + assert res.status_code == 200 + for bc in res.json(): + assert bc["filterSynthesis"] == "hourly" + # create a variant from the study + study_id = preparer.create_variant(study_id, name="var_1") + # Update 10 BCs + body = {} + for k in range(10): + body[f"bc_{k}"] = {"enabled": False} + res = client.put(f"/v1/studies/{study_id}/table-mode/binding-constraints", json=body) + assert res.status_code in {200, 201} + # asserts changes are effective + res = client.get(f"/v1/studies/{study_id}/bindingconstraints") + assert res.status_code == 200 + for bc in res.json(): + bc_id = bc["id"] + if int(bc_id[3:]) < 10: + assert not bc["enabled"] + else: + assert bc["enabled"] + # asserts commands used are update_binding_constraint + res = client.get(f"/v1/studies/{study_id}/commands") + assert res.status_code == 200 + json_result = res.json() + assert len(json_result) == 10 + for cmd in json_result: + assert cmd["action"] == "update_binding_constraint" + # create another variant from the parent study + study_id = preparer.create_variant(study_id, name="var_1") + # update 50 BCs + body = {} + for k in range(49): + body[f"bc_{k}"] = {"comments": "New comment !"} + body["bc_49"] = {"time_step": "daily"} + res = client.put(f"/v1/studies/{study_id}/table-mode/binding-constraints", json=body) + assert res.status_code in {200, 201} + # asserts changes are effective + res = client.get(f"/v1/studies/{study_id}/bindingconstraints") + assert res.status_code == 200 + for bc in res.json(): + bc_id = bc["id"] + if int(bc_id[3:]) < 49: + assert bc["comments"] == "New comment !" + else: + assert bc["timeStep"] == "daily" + # asserts commands used are update_config and replace_matrix + res = client.get(f"/v1/studies/{study_id}/commands") + assert res.status_code == 200 + json_result = res.json() + assert len(json_result) == 2 + assert json_result[0]["action"] == "replace_matrix" + assert json_result[1]["action"] == "update_config" + @pytest.mark.parametrize("study_type", ["raw", "variant"]) def test_lifecycle__nominal(self, client: TestClient, user_access_token: str, study_type: str) -> None: - client.headers = {"Authorization": f"Bearer {user_access_token}"} # type: ignore + client.headers = {"Authorization": f"Bearer {user_access_token}"} # ============================= # STUDY PREPARATION diff --git a/tests/variantstudy/model/command/test_manage_binding_constraints.py b/tests/variantstudy/model/command/test_manage_binding_constraints.py index 746790ef3d..c62cdc8e27 100644 --- a/tests/variantstudy/model/command/test_manage_binding_constraints.py +++ b/tests/variantstudy/model/command/test_manage_binding_constraints.py @@ -40,7 +40,7 @@ from antarest.study.storage.variantstudy.model.command.remove_link import RemoveLink from antarest.study.storage.variantstudy.model.command.update_binding_constraint import ( UpdateBindingConstraint, - _update_matrices_names, + update_matrices_names, ) from antarest.study.storage.variantstudy.model.command.update_scenario_builder import UpdateScenarioBuilder from antarest.study.storage.variantstudy.model.command_context import CommandContext @@ -599,7 +599,7 @@ def test__update_matrices_names( assert not link_path.exists(), f"Superfluous matrix link: {matrix_link!r}" # update matrices names - _update_matrices_names( + update_matrices_names( file_study=empty_study, bc_id="bd_rename_matrices", existing_operator=existing_operator, From eb10ca17d99f2d4faf0372ae85ccb20be9e8f804 Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Tue, 29 Oct 2024 09:30:32 +0100 Subject: [PATCH 079/182] build(python): bump python version to use v3.11 (#2164) --- .github/workflows/deploy.yml | 2 +- .github/workflows/license_header.yml | 2 +- .github/workflows/main.yml | 4 +-- .github/workflows/worker.yml | 2 +- Dockerfile | 8 ++--- antarest/core/config.py | 4 +-- antarest/core/configdata/model.py | 4 +-- antarest/core/interfaces/eventbus.py | 4 +-- antarest/core/maintenance/model.py | 4 +-- antarest/core/model.py | 4 +-- antarest/core/tasks/model.py | 4 +-- antarest/core/utils/archives.py | 4 +-- antarest/eventbus/web.py | 4 +-- antarest/gui.py | 12 ++++++++ .../launcher/adapters/abstractlauncher.py | 2 +- antarest/launcher/model.py | 8 ++--- antarest/launcher/service.py | 2 +- antarest/matrixstore/service.py | 6 +--- antarest/service_creator.py | 4 +-- .../study/business/aggregator_management.py | 14 ++++----- antarest/study/business/area_management.py | 8 ++--- .../business/areas/renewable_management.py | 2 +- .../business/areas/st_storage_management.py | 25 +++++++++------- .../business/areas/thermal_management.py | 21 +++++++------ antarest/study/business/enum_ignore_case.py | 2 +- antarest/study/business/link_management.py | 6 ++-- .../business/scenario_builder_management.py | 2 +- .../study/business/table_mode_management.py | 4 +-- .../business/thematic_trimming_management.py | 2 +- .../business/timeseries_config_management.py | 2 +- .../study/business/xpansion_management.py | 18 ++++++----- antarest/study/model.py | 6 ++-- antarest/study/repository.py | 2 +- antarest/study/service.py | 4 +-- .../filesystem/config/ruleset_matrices.py | 6 ++-- .../filesystem/matrix/date_serializer.py | 30 ++++++++++--------- .../model/filesystem/matrix/matrix.py | 4 +-- .../variantstudy/model/command/icommand.py | 4 +-- .../command/update_binding_constraint.py | 4 +-- antarest/study/web/study_data_blueprint.py | 2 +- docs/install/0-INSTALL.md | 2 +- pyproject.toml | 9 ++---- readthedocs.yml | 2 +- requirements-dev.txt | 8 ++--- requirements.txt | 12 ++++---- scripts/install-debug.sh | 8 ----- scripts/stacktrace.sh | 6 ---- sonar-project.properties | 2 +- tests/cache/test_local_cache.py | 6 ++-- tests/cache/test_redis_cache.py | 6 ++-- tests/integration/test_integration.py | 10 +++---- tests/variantstudy/conftest.py | 6 +--- .../model/command/test_create_area.py | 7 +++-- tests/variantstudy/test_command_factory.py | 6 +--- 54 files changed, 168 insertions(+), 174 deletions(-) delete mode 100755 scripts/install-debug.sh delete mode 100755 scripts/stacktrace.sh diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index b67a63c435..1338b744f4 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -42,7 +42,7 @@ jobs: - name: 🐍 Set up Python uses: actions/setup-python@v5 with: - python-version: 3.8 + python-version: 3.11 - name: 🐍 Install development dependencies run: | diff --git a/.github/workflows/license_header.yml b/.github/workflows/license_header.yml index 51b8172825..cf577e51c9 100644 --- a/.github/workflows/license_header.yml +++ b/.github/workflows/license_header.yml @@ -13,7 +13,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: 3.8 + python-version: 3.11 - name: Install dependencies run: | python -m pip install --upgrade pip diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7a590a8214..0e41bf08b1 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -13,7 +13,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: 3.8 + python-version: 3.11 - name: Install dependencies run: | python -m pip install --upgrade pip @@ -46,7 +46,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: 3.8 + python-version: 3.11 - name: Install dependencies run: | python -m pip install --upgrade pip diff --git a/.github/workflows/worker.yml b/.github/workflows/worker.yml index 4839670d62..bbaa285c78 100644 --- a/.github/workflows/worker.yml +++ b/.github/workflows/worker.yml @@ -18,7 +18,7 @@ jobs: - name: 🐍 Set up Python uses: actions/setup-python@v5 with: - python-version: 3.8 + python-version: 3.11 - name: 🐍 Install dependencies run: | diff --git a/Dockerfile b/Dockerfile index 3cdb34dd06..4004b4f70d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.8-slim-bullseye +FROM python:3.11-slim-bullseye # RUN apt update && apt install -y procps gdb @@ -16,10 +16,6 @@ COPY ./scripts /scripts COPY ./alembic /alembic COPY ./alembic.ini /alembic.ini -RUN ./scripts/install-debug.sh - -RUN pip3 install --no-cache-dir --upgrade pip \ - && pip3 install --no-cache-dir -r /conf/requirements.txt - +RUN pip3 install --no-cache-dir --upgrade pip && pip3 install --no-cache-dir -r /conf/requirements.txt ENTRYPOINT ["./scripts/start.sh"] diff --git a/antarest/core/config.py b/antarest/core/config.py index b88e4f44bb..0ff5082d54 100644 --- a/antarest/core/config.py +++ b/antarest/core/config.py @@ -13,7 +13,7 @@ import multiprocessing import tempfile from dataclasses import asdict, dataclass, field -from enum import Enum +from enum import StrEnum from pathlib import Path from typing import Dict, List, Optional @@ -25,7 +25,7 @@ DEFAULT_WORKSPACE_NAME = "default" -class Launcher(str, Enum): +class Launcher(StrEnum): SLURM = "slurm" LOCAL = "local" DEFAULT = "default" diff --git a/antarest/core/configdata/model.py b/antarest/core/configdata/model.py index bd243387ec..3a4512e44c 100644 --- a/antarest/core/configdata/model.py +++ b/antarest/core/configdata/model.py @@ -10,7 +10,7 @@ # # This file is part of the Antares project. -from enum import Enum +from enum import StrEnum from typing import Any, Optional from sqlalchemy import Column, Integer, String # type: ignore @@ -43,6 +43,6 @@ def to_dto(self) -> ConfigDataDTO: # APP MAIN CONFIG KEYS -class ConfigDataAppKeys(str, Enum): +class ConfigDataAppKeys(StrEnum): MAINTENANCE_MODE = "MAINTENANCE_MODE" MESSAGE_INFO = "MESSAGE_INFO" diff --git a/antarest/core/interfaces/eventbus.py b/antarest/core/interfaces/eventbus.py index c6e36a4b80..30771baff4 100644 --- a/antarest/core/interfaces/eventbus.py +++ b/antarest/core/interfaces/eventbus.py @@ -11,14 +11,14 @@ # This file is part of the Antares project. from abc import ABC, abstractmethod -from enum import Enum +from enum import StrEnum from typing import Any, Awaitable, Callable, List, Optional from antarest.core.model import PermissionInfo from antarest.core.serialization import AntaresBaseModel -class EventType(str, Enum): +class EventType(StrEnum): ANY = "_ANY" STUDY_CREATED = "STUDY_CREATED" STUDY_DELETED = "STUDY_DELETED" diff --git a/antarest/core/maintenance/model.py b/antarest/core/maintenance/model.py index c133e4ea9f..c17beadbc3 100644 --- a/antarest/core/maintenance/model.py +++ b/antarest/core/maintenance/model.py @@ -10,10 +10,10 @@ # # This file is part of the Antares project. -from enum import Enum +from enum import StrEnum -class MaintenanceMode(str, Enum): +class MaintenanceMode(StrEnum): NORMAL_MODE = "NORMAL" MAINTENANCE_MODE = "MAINTENANCE" diff --git a/antarest/core/model.py b/antarest/core/model.py index dd4ea511aa..78aa7a1e82 100644 --- a/antarest/core/model.py +++ b/antarest/core/model.py @@ -24,7 +24,7 @@ SUB_JSON = Union[ELEMENT, JSON, List[Any], None] -class PublicMode(str, enum.Enum): +class PublicMode(enum.StrEnum): NONE = "NONE" READ = "READ" EXECUTE = "EXECUTE" @@ -32,7 +32,7 @@ class PublicMode(str, enum.Enum): FULL = "FULL" -class StudyPermissionType(str, enum.Enum): +class StudyPermissionType(enum.StrEnum): """ User permission belongs to Study """ diff --git a/antarest/core/tasks/model.py b/antarest/core/tasks/model.py index 10f7ef0d34..7da1d201ad 100644 --- a/antarest/core/tasks/model.py +++ b/antarest/core/tasks/model.py @@ -13,7 +13,7 @@ import typing as t import uuid from datetime import datetime -from enum import Enum +from enum import Enum, StrEnum from sqlalchemy import Boolean, Column, DateTime, ForeignKey, Integer, Sequence, String # type: ignore from sqlalchemy.engine.base import Engine # type: ignore @@ -28,7 +28,7 @@ from antarest.study.model import Study -class TaskType(str, Enum): +class TaskType(StrEnum): EXPORT = "EXPORT" VARIANT_GENERATION = "VARIANT_GENERATION" COPY = "COPY" diff --git a/antarest/core/utils/archives.py b/antarest/core/utils/archives.py index a128cd4438..2356653b78 100644 --- a/antarest/core/utils/archives.py +++ b/antarest/core/utils/archives.py @@ -15,7 +15,7 @@ import tempfile import typing as t import zipfile -from enum import Enum +from enum import StrEnum from pathlib import Path import py7zr @@ -25,7 +25,7 @@ logger = logging.getLogger(__name__) -class ArchiveFormat(str, Enum): +class ArchiveFormat(StrEnum): ZIP = ".zip" SEVEN_ZIP = ".7z" diff --git a/antarest/eventbus/web.py b/antarest/eventbus/web.py index 7f7050a793..d2d9405235 100644 --- a/antarest/eventbus/web.py +++ b/antarest/eventbus/web.py @@ -12,7 +12,7 @@ import dataclasses import logging -from enum import Enum +from enum import StrEnum from http import HTTPStatus from typing import List, Optional @@ -32,7 +32,7 @@ logger = logging.getLogger(__name__) -class WebsocketMessageAction(str, Enum): +class WebsocketMessageAction(StrEnum): SUBSCRIBE = "SUBSCRIBE" UNSUBSCRIBE = "UNSUBSCRIBE" diff --git a/antarest/gui.py b/antarest/gui.py index 4926e011af..86ddd5efd1 100644 --- a/antarest/gui.py +++ b/antarest/gui.py @@ -9,6 +9,18 @@ # SPDX-License-Identifier: MPL-2.0 # # This file is part of the Antares project. + +import os +import sys + +# The Pyinstaller version we use has a known issue on windows and to fix it we need to implement this workaround. +# See issue description and workaround on pyinstaller website: +# https://pyinstaller.org/en/stable/common-issues-and-pitfalls.html#sys-stdin-sys-stdout-and-sys-stderr-in-noconsole-windowed-applications-windows-only +if sys.stdout is None: + sys.stdout = open(os.devnull, "w") +if sys.stderr is None: + sys.stderr = open(os.devnull, "w") + import argparse import multiprocessing diff --git a/antarest/launcher/adapters/abstractlauncher.py b/antarest/launcher/adapters/abstractlauncher.py index 48f18e78e0..ac36176300 100644 --- a/antarest/launcher/adapters/abstractlauncher.py +++ b/antarest/launcher/adapters/abstractlauncher.py @@ -116,6 +116,6 @@ def update_log(log_line: str) -> None: channel=EventChannelDirectory.JOB_STATUS + job_id, ) ) - self.cache.put(f"Launch_Progress_{job_id}", launch_progress_dto.model_dump()) + self.cache.put(f"Launch_Progress_{job_id}", launch_progress_dto.model_dump(mode="json")) return update_log diff --git a/antarest/launcher/model.py b/antarest/launcher/model.py index d053a55c85..dbd90e3ef4 100644 --- a/antarest/launcher/model.py +++ b/antarest/launcher/model.py @@ -57,7 +57,7 @@ def from_launcher_params(cls, params: t.Optional[str]) -> "LauncherParametersDTO return cls.model_validate(from_json(params)) -class LogType(str, enum.Enum): +class LogType(enum.StrEnum): STDOUT = "STDOUT" STDERR = "STDERR" @@ -79,14 +79,14 @@ def to_suffix(self) -> str: return "out.log" -class JobStatus(str, enum.Enum): +class JobStatus(enum.StrEnum): PENDING = "pending" FAILED = "failed" SUCCESS = "success" RUNNING = "running" -class JobLogType(str, enum.Enum): +class JobLogType(enum.StrEnum): BEFORE = "BEFORE" AFTER = "AFTER" @@ -139,7 +139,7 @@ def json_schema_extra(schema: t.MutableMapping[str, t.Any]) -> None: exit_code=0, solver_stats="time: 1651s, call_count: 1, optimization_issues: []", owner=UserInfo(id=0o007, name="James BOND"), - ).model_dump() + ).model_dump(mode="json") class JobLog(Base): # type: ignore diff --git a/antarest/launcher/service.py b/antarest/launcher/service.py index 573aaf3b9d..e5f78ede3f 100644 --- a/antarest/launcher/service.py +++ b/antarest/launcher/service.py @@ -185,7 +185,7 @@ def update( self.event_bus.push( Event( type=EventType.STUDY_JOB_COMPLETED if final_status else EventType.STUDY_JOB_STATUS_UPDATE, - payload=job_result.to_dto().model_dump(), + payload=job_result.to_dto().model_dump(mode="json"), permissions=PermissionInfo(public_mode=PublicMode.READ), channel=EventChannelDirectory.JOB_STATUS + job_result.id, ) diff --git a/antarest/matrixstore/service.py b/antarest/matrixstore/service.py index 3a10ed09df..1d7bc27955 100644 --- a/antarest/matrixstore/service.py +++ b/antarest/matrixstore/service.py @@ -101,11 +101,7 @@ def get_matrix_id(self, matrix: t.Union[t.List[t.List[float]], str]) -> str: """ # noinspection SpellCheckingInspection if isinstance(matrix, str): - # str.removeprefix() is not available in Python 3.8 - prefix = "matrix://" - if matrix.startswith(prefix): - return matrix[len(prefix) :] - return matrix + return matrix.removeprefix("matrix://") elif isinstance(matrix, list): return self.create(matrix) else: diff --git a/antarest/service_creator.py b/antarest/service_creator.py index fa8086b789..3bee50cc45 100644 --- a/antarest/service_creator.py +++ b/antarest/service_creator.py @@ -12,7 +12,7 @@ import logging import typing as t -from enum import Enum +from enum import StrEnum from pathlib import Path import redis @@ -65,7 +65,7 @@ """ -class Module(str, Enum): +class Module(StrEnum): APP = "app" WATCHER = "watcher" MATRIX_GC = "matrix_gc" diff --git a/antarest/study/business/aggregator_management.py b/antarest/study/business/aggregator_management.py index a040faf1de..df5bbaa30b 100644 --- a/antarest/study/business/aggregator_management.py +++ b/antarest/study/business/aggregator_management.py @@ -12,7 +12,7 @@ import logging import typing as t -from enum import Enum +from enum import StrEnum from pathlib import Path import numpy as np @@ -54,19 +54,19 @@ logger = logging.getLogger(__name__) -class MCRoot(str, Enum): +class MCRoot(StrEnum): MC_IND = "mc-ind" MC_ALL = "mc-all" -class MCIndAreasQueryFile(str, Enum): +class MCIndAreasQueryFile(StrEnum): VALUES = "values" DETAILS = "details" DETAILS_ST_STORAGE = "details-STstorage" DETAILS_RES = "details-res" -class MCAllAreasQueryFile(str, Enum): +class MCAllAreasQueryFile(StrEnum): VALUES = "values" DETAILS = "details" DETAILS_ST_STORAGE = "details-STstorage" @@ -74,11 +74,11 @@ class MCAllAreasQueryFile(str, Enum): ID = "id" -class MCIndLinksQueryFile(str, Enum): +class MCIndLinksQueryFile(StrEnum): VALUES = "values" -class MCAllLinksQueryFile(str, Enum): +class MCAllLinksQueryFile(StrEnum): VALUES = "values" ID = "id" @@ -308,7 +308,7 @@ def _process_df(self, file_path: Path, is_details: bool) -> pd.DataFrame: # loop over the cluster id to extract the values of the actual columns for cluster_id, dummy_component in cluster_dummy_product_cols: for actual_col in actual_cols: - col_values = un_normalized_df[(cluster_id, actual_col, dummy_component)].tolist() # type: ignore + col_values = un_normalized_df[(cluster_id, actual_col, dummy_component)].tolist() new_obj[actual_col] += col_values new_obj[CLUSTER_ID_COL] += [cluster_id for _ in range(df_len)] new_obj[TIME_ID_COL] += list(range(1, df_len + 1)) diff --git a/antarest/study/business/area_management.py b/antarest/study/business/area_management.py index 9712a3daba..d90ec4c554 100644 --- a/antarest/study/business/area_management.py +++ b/antarest/study/business/area_management.py @@ -229,11 +229,11 @@ def from_model( obj = { "average_unsupplied_energy_cost": average_unsupplied_energy_cost, "average_spilled_energy_cost": average_spilled_energy_cost, - **area_folder.optimization.filtering.model_dump(by_alias=False), - **area_folder.optimization.nodal_optimization.model_dump(by_alias=False), + **area_folder.optimization.filtering.model_dump(mode="json", by_alias=False), + **area_folder.optimization.nodal_optimization.model_dump(mode="json", by_alias=False), # adequacy_patch is only available if study version >= 830. **( - area_folder.adequacy_patch.adequacy_patch.model_dump(by_alias=False) + area_folder.adequacy_patch.adequacy_patch.model_dump(mode="json", by_alias=False) if area_folder.adequacy_patch else {} ), @@ -363,7 +363,7 @@ def update_areas_props( for area_id, update_area in update_areas_by_ids.items(): # Update the area properties. old_area = old_areas_by_ids[area_id] - new_area = old_area.copy(update=update_area.model_dump(by_alias=False, exclude_none=True)) + new_area = old_area.copy(update=update_area.model_dump(mode="json", by_alias=False, exclude_none=True)) new_areas_by_ids[area_id] = new_area # Convert the DTO to a configuration object and update the configuration file. diff --git a/antarest/study/business/areas/renewable_management.py b/antarest/study/business/areas/renewable_management.py index f102c6a251..b093aa325f 100644 --- a/antarest/study/business/areas/renewable_management.py +++ b/antarest/study/business/areas/renewable_management.py @@ -65,7 +65,7 @@ def json_schema_extra(schema: t.MutableMapping[str, t.Any]) -> None: unit_count=100, nominal_capacity=1000.0, ts_interpretation="power-generation", - ).model_dump() + ).model_dump(mode="json") class RenewableClusterCreation(RenewableClusterInput): diff --git a/antarest/study/business/areas/st_storage_management.py b/antarest/study/business/areas/st_storage_management.py index 7592d50423..8c1a197861 100644 --- a/antarest/study/business/areas/st_storage_management.py +++ b/antarest/study/business/areas/st_storage_management.py @@ -68,7 +68,7 @@ def json_schema_extra(schema: t.MutableMapping[str, t.Any]) -> None: efficiency=0.94, initial_level=0.5, initial_level_optim=True, - ).model_dump() + ).model_dump(mode="json") class STStorageCreation(STStorageInput): @@ -88,7 +88,7 @@ def validate_name(cls, name: t.Optional[str]) -> str: # noinspection PyUnusedLocal def to_config(self, study_version: StudyVersion) -> STStorageConfigType: - values = self.model_dump(by_alias=False, exclude_none=True) + values = self.model_dump(mode="json", by_alias=False, exclude_none=True) return create_st_storage_config(study_version=study_version, **values) @@ -111,7 +111,7 @@ def json_schema_extra(schema: t.MutableMapping[str, t.Any]) -> None: reservoir_capacity=600, efficiency=0.94, initial_level_optim=True, - ).model_dump() + ).model_dump(mode="json") # ============= @@ -246,7 +246,7 @@ def create_storage_output( config: t.Mapping[str, t.Any], ) -> "STStorageOutput": obj = create_st_storage_config(study_version=study_version, **config, id=cluster_id) - kwargs = obj.model_dump(by_alias=False) + kwargs = obj.model_dump(mode="json", by_alias=False) return STStorageOutput(**kwargs) @@ -390,12 +390,15 @@ def update_storages_props( for storage_id, update_cluster in update_storages_by_ids.items(): # Update the storage cluster properties. old_cluster = old_storages_by_ids[storage_id] - new_cluster = old_cluster.copy(update=update_cluster.model_dump(by_alias=False, exclude_none=True)) + new_cluster = old_cluster.copy( + update=update_cluster.model_dump(mode="json", by_alias=False, exclude_none=True) + ) new_storages_by_areas[area_id][storage_id] = new_cluster # Convert the DTO to a configuration object and update the configuration file. properties = create_st_storage_config( - StudyVersion.parse(study.version), **new_cluster.model_dump(by_alias=False, exclude_none=True) + StudyVersion.parse(study.version), + **new_cluster.model_dump(mode="json", by_alias=False, exclude_none=True), ) path = _STORAGE_LIST_PATH.format(area_id=area_id, storage_id=storage_id) cmd = UpdateConfig( @@ -469,7 +472,7 @@ def update_storage( old_config = create_st_storage_config(study_version, **values) # use Python values to synchronize Config and Form values - new_values = form.model_dump(by_alias=False, exclude_none=True) + new_values = form.model_dump(mode="json", by_alias=False, exclude_none=True) new_config = old_config.copy(exclude={"id"}, update=new_values) new_data = new_config.model_dump(mode="json", by_alias=True, exclude={"id"}) @@ -489,7 +492,7 @@ def update_storage( ] execute_or_add_commands(study, file_study, commands, self.storage_service) - values = new_config.model_dump(by_alias=False) + values = new_config.model_dump(mode="json", by_alias=False) return STStorageOutput(**values, id=storage_id) def delete_storages( @@ -552,7 +555,9 @@ def duplicate_cluster(self, study: Study, area_id: str, source_id: str, new_clus study_version = StudyVersion.parse(study.version) if study_version < STUDY_VERSION_8_8: fields_to_exclude.add("enabled") - creation_form = STStorageCreation(**current_cluster.model_dump(by_alias=False, exclude=fields_to_exclude)) + creation_form = STStorageCreation( + **current_cluster.model_dump(mode="json", by_alias=False, exclude=fields_to_exclude) + ) new_config = creation_form.to_config(study_version) create_cluster_cmd = self._make_create_cluster_cmd(area_id, new_config) @@ -581,7 +586,7 @@ def duplicate_cluster(self, study: Study, area_id: str, source_id: str, new_clus execute_or_add_commands(study, self._get_file_study(study), commands, self.storage_service) - return STStorageOutput(**new_config.model_dump(by_alias=False)) + return STStorageOutput(**new_config.model_dump(mode="json", by_alias=False)) def get_matrix( self, diff --git a/antarest/study/business/areas/thermal_management.py b/antarest/study/business/areas/thermal_management.py index d9679355fd..2786617cc1 100644 --- a/antarest/study/business/areas/thermal_management.py +++ b/antarest/study/business/areas/thermal_management.py @@ -72,7 +72,7 @@ def json_schema_extra(schema: t.MutableMapping[str, t.Any]) -> None: nominal_capacity=1000.0, gen_ts="use global", co2=7.0, - ).model_dump() + ).model_dump(mode="json") @camel_case_model @@ -92,7 +92,7 @@ def validate_name(cls, name: t.Optional[str]) -> str: return name def to_config(self, study_version: StudyVersion) -> ThermalConfigType: - values = self.model_dump(by_alias=False, exclude_none=True) + values = self.model_dump(mode="json", by_alias=False, exclude_none=True) return create_thermal_config(study_version=study_version, **values) @@ -115,7 +115,7 @@ def json_schema_extra(schema: t.MutableMapping[str, t.Any]) -> None: nominal_capacity=1000.0, gen_ts="use global", co2=7.0, - ).model_dump() + ).model_dump(mode="json") def create_thermal_output( @@ -124,7 +124,7 @@ def create_thermal_output( config: t.Mapping[str, t.Any], ) -> "ThermalClusterOutput": obj = create_thermal_config(study_version=study_version, **config, id=cluster_id) - kwargs = obj.model_dump(by_alias=False) + kwargs = obj.model_dump(mode="json", by_alias=False) return ThermalClusterOutput(**kwargs) @@ -255,12 +255,15 @@ def update_thermals_props( for thermal_id, update_cluster in update_thermals_by_ids.items(): # Update the thermal cluster properties. old_cluster = old_thermals_by_ids[thermal_id] - new_cluster = old_cluster.copy(update=update_cluster.model_dump(by_alias=False, exclude_none=True)) + new_cluster = old_cluster.copy( + update=update_cluster.model_dump(mode="json", by_alias=False, exclude_none=True) + ) new_thermals_by_areas[area_id][thermal_id] = new_cluster # Convert the DTO to a configuration object and update the configuration file. properties = create_thermal_config( - StudyVersion.parse(study.version), **new_cluster.model_dump(by_alias=False, exclude_none=True) + StudyVersion.parse(study.version), + **new_cluster.model_dump(mode="json", by_alias=False, exclude_none=True), ) path = _CLUSTER_PATH.format(area_id=area_id, cluster_id=thermal_id) cmd = UpdateConfig( @@ -352,7 +355,7 @@ def update_cluster( old_config = create_thermal_config(study_version, **values) # Use Python values to synchronize Config and Form values - new_values = cluster_data.model_dump(by_alias=False, exclude_none=True) + new_values = cluster_data.model_dump(mode="json", by_alias=False, exclude_none=True) new_config = old_config.copy(exclude={"id"}, update=new_values) new_data = new_config.model_dump(mode="json", by_alias=True, exclude={"id"}) @@ -424,7 +427,7 @@ def duplicate_cluster( # Cluster duplication source_cluster = self.get_cluster(study, area_id, source_id) source_cluster.name = new_cluster_name - creation_form = ThermalClusterCreation(**source_cluster.model_dump(by_alias=False, exclude={"id"})) + creation_form = ThermalClusterCreation(**source_cluster.model_dump(mode="json", by_alias=False, exclude={"id"})) new_config = creation_form.to_config(StudyVersion.parse(study.version)) create_cluster_cmd = self._make_create_cluster_cmd(area_id, new_config) @@ -457,7 +460,7 @@ def duplicate_cluster( execute_or_add_commands(study, self._get_file_study(study), commands, self.storage_service) - return ThermalClusterOutput(**new_config.model_dump(by_alias=False)) + return ThermalClusterOutput(**new_config.model_dump(mode="json", by_alias=False)) def validate_series(self, study: Study, area_id: str, cluster_id: str) -> bool: lower_cluster_id = cluster_id.lower() diff --git a/antarest/study/business/enum_ignore_case.py b/antarest/study/business/enum_ignore_case.py index 2259d229f7..9d0bcf3396 100644 --- a/antarest/study/business/enum_ignore_case.py +++ b/antarest/study/business/enum_ignore_case.py @@ -14,7 +14,7 @@ import typing -class EnumIgnoreCase(str, enum.Enum): +class EnumIgnoreCase(enum.StrEnum): """ Case-insensitive enum base class diff --git a/antarest/study/business/link_management.py b/antarest/study/business/link_management.py index f14c43ef07..54831ad8ac 100644 --- a/antarest/study/business/link_management.py +++ b/antarest/study/business/link_management.py @@ -121,7 +121,7 @@ def get_all_links_props(self, study: RawStudy) -> t.Mapping[t.Tuple[str, str], L for area2_id, properties_cfg in property_map.items(): area1_id, area2_id = sorted([area1_id, area2_id]) properties = LinkProperties(**properties_cfg) - links_by_ids[(area1_id, area2_id)] = LinkOutput(**properties.model_dump(by_alias=False)) + links_by_ids[(area1_id, area2_id)] = LinkOutput(**properties.model_dump(mode="json", by_alias=False)) return links_by_ids @@ -137,7 +137,9 @@ def update_links_props( for (area1, area2), update_link_dto in update_links_by_ids.items(): # Update the link properties. old_link_dto = old_links_by_ids[(area1, area2)] - new_link_dto = old_link_dto.copy(update=update_link_dto.model_dump(by_alias=False, exclude_none=True)) + new_link_dto = old_link_dto.copy( + update=update_link_dto.model_dump(mode="json", by_alias=False, exclude_none=True) + ) new_links_by_ids[(area1, area2)] = new_link_dto # Convert the DTO to a configuration object and update the configuration file. diff --git a/antarest/study/business/scenario_builder_management.py b/antarest/study/business/scenario_builder_management.py index c8a38b28c3..ac5a6a2bb6 100644 --- a/antarest/study/business/scenario_builder_management.py +++ b/antarest/study/business/scenario_builder_management.py @@ -37,7 +37,7 @@ Rulesets: te.TypeAlias = t.MutableMapping[str, Ruleset] -class ScenarioType(str, enum.Enum): +class ScenarioType(enum.StrEnum): """ Scenario type diff --git a/antarest/study/business/table_mode_management.py b/antarest/study/business/table_mode_management.py index 342c1c5abb..b108c57cb8 100644 --- a/antarest/study/business/table_mode_management.py +++ b/antarest/study/business/table_mode_management.py @@ -95,11 +95,11 @@ def __init__( def _get_table_data_unsafe(self, study: RawStudy, table_type: TableModeType) -> TableDataDTO: if table_type == TableModeType.AREA: areas_map = self._area_manager.get_all_area_props(study) - data = {area_id: area.model_dump(by_alias=True) for area_id, area in areas_map.items()} + data = {area_id: area.model_dump(mode="json", by_alias=True) for area_id, area in areas_map.items()} elif table_type == TableModeType.LINK: links_map = self._link_manager.get_all_links_props(study) data = { - f"{area1_id} / {area2_id}": link.model_dump(by_alias=True) + f"{area1_id} / {area2_id}": link.model_dump(mode="json", by_alias=True) for (area1_id, area2_id), link in links_map.items() } elif table_type == TableModeType.THERMAL: diff --git a/antarest/study/business/thematic_trimming_management.py b/antarest/study/business/thematic_trimming_management.py index 96fd8aa106..d0ada30b65 100644 --- a/antarest/study/business/thematic_trimming_management.py +++ b/antarest/study/business/thematic_trimming_management.py @@ -51,7 +51,7 @@ def set_field_values(self, study: Study, field_values: ThematicTrimmingFormField Set Thematic Trimming config from the webapp form """ file_study = self.storage_service.get_storage(study).get_raw(study) - field_values_dict = field_values.model_dump() + field_values_dict = field_values.model_dump(mode="json") keys_by_bool: t.Dict[bool, t.List[t.Any]] = {True: [], False: []} fields_info = get_fields_info(StudyVersion.parse(study.version)) diff --git a/antarest/study/business/timeseries_config_management.py b/antarest/study/business/timeseries_config_management.py index da28a5e468..8b01bfe24e 100644 --- a/antarest/study/business/timeseries_config_management.py +++ b/antarest/study/business/timeseries_config_management.py @@ -133,7 +133,7 @@ def __set_field_values_for_type( field_values: TSFormFieldsForType, ) -> None: commands: t.List[UpdateConfig] = [] - values = field_values.model_dump() + values = field_values.model_dump(mode="json") for field, path in PATH_BY_TS_STR_FIELD.items(): field_val = values[field] diff --git a/antarest/study/business/xpansion_management.py b/antarest/study/business/xpansion_management.py index 318adde367..02e1fc795c 100644 --- a/antarest/study/business/xpansion_management.py +++ b/antarest/study/business/xpansion_management.py @@ -342,10 +342,12 @@ def create_xpansion_configuration(self, study: Study, zipped_config: t.Optional[ xpansion_settings = XpansionSettings() settings_obj = xpansion_settings.model_dump( - by_alias=True, exclude_none=True, exclude={"sensitivity_config"} + mode="json", by_alias=True, exclude_none=True, exclude={"sensitivity_config"} ) if xpansion_settings.sensitivity_config: - sensitivity_obj = xpansion_settings.sensitivity_config.model_dump(by_alias=True, exclude_none=True) + sensitivity_obj = xpansion_settings.sensitivity_config.model_dump( + mode="json", by_alias=True, exclude_none=True + ) else: sensitivity_obj = {} @@ -386,7 +388,7 @@ def update_xpansion_settings( actual_settings = self.get_xpansion_settings(study) settings_fields = new_xpansion_settings.model_dump( - by_alias=False, exclude_none=True, exclude={"sensitivity_config"} + mode="json", by_alias=False, exclude_none=True, exclude={"sensitivity_config"} ) updated_settings = actual_settings.copy(deep=True, update=settings_fields) @@ -407,11 +409,11 @@ def update_xpansion_settings( msg = f"Additional constraints file '{constraints_file}' does not exist" raise XpansionFileNotFoundError(msg) from None - config_obj = updated_settings.model_dump(by_alias=True, exclude={"sensitivity_config"}) + config_obj = updated_settings.model_dump(mode="json", by_alias=True, exclude={"sensitivity_config"}) file_study.tree.save(config_obj, ["user", "expansion", "settings"]) if new_xpansion_settings.sensitivity_config: - sensitivity_obj = new_xpansion_settings.sensitivity_config.model_dump(by_alias=True) + sensitivity_obj = new_xpansion_settings.sensitivity_config.model_dump(mode="json", by_alias=True) file_study.tree.save(sensitivity_obj, ["user", "expansion", "sensitivity", "sensitivity_in"]) return self.get_xpansion_settings(study) @@ -551,7 +553,7 @@ def add_candidate(self, study: Study, xpansion_candidate: XpansionCandidateDTO) ) # The primary key is actually the name, the id does not matter and is never checked. logger.info(f"Adding candidate '{xpansion_candidate.name}' to study '{study.id}'") - candidates_obj[next_id] = xpansion_candidate.model_dump(by_alias=True, exclude_none=True) + candidates_obj[next_id] = xpansion_candidate.model_dump(mode="json", by_alias=True, exclude_none=True) candidates_data = {"user": {"expansion": {"candidates": candidates_obj}}} file_study.tree.save(candidates_data) # Should we add a field in the study config containing the xpansion candidates like the links or the areas ? @@ -592,7 +594,9 @@ def update_candidate( for candidate_id, candidate in candidates.items(): if candidate["name"] == candidate_name: logger.info(f"Updating candidate '{candidate_name}' of study '{study.id}'") - candidates[candidate_id] = xpansion_candidate_dto.model_dump(by_alias=True, exclude_none=True) + candidates[candidate_id] = xpansion_candidate_dto.model_dump( + mode="json", by_alias=True, exclude_none=True + ) file_study.tree.save(candidates, ["user", "expansion", "candidates"]) return raise CandidateNotFoundError(f"The candidate '{xpansion_candidate_dto.name}' does not exist") diff --git a/antarest/study/model.py b/antarest/study/model.py index fbeefef1f4..aec84fcc7d 100644 --- a/antarest/study/model.py +++ b/antarest/study/model.py @@ -437,13 +437,13 @@ class StudySimResultDTO(AntaresBaseModel): archived: bool -class StudyDownloadType(str, enum.Enum): +class StudyDownloadType(enum.StrEnum): LINK = "LINK" DISTRICT = "DISTRICT" AREA = "AREA" -class StudyDownloadLevelDTO(str, enum.Enum): +class StudyDownloadLevelDTO(enum.StrEnum): ANNUAL = "annual" MONTHLY = "monthly" WEEKLY = "weekly" @@ -468,7 +468,7 @@ def inc_date(self, date: datetime) -> datetime: raise ShouldNotHappenException() -class ExportFormat(str, enum.Enum): +class ExportFormat(enum.StrEnum): ZIP = "application/zip" TAR_GZ = "application/tar+gz" JSON = "application/json" diff --git a/antarest/study/repository.py b/antarest/study/repository.py index a485b24652..6ecad45df7 100644 --- a/antarest/study/repository.py +++ b/antarest/study/repository.py @@ -119,7 +119,7 @@ class StudyFilter(AntaresBaseModel, frozen=True, extra="forbid"): access_permissions: AccessPermissions = AccessPermissions() -class StudySortBy(str, enum.Enum): +class StudySortBy(enum.StrEnum): """How to sort the results of studies query results""" NAME_ASC = "+name" diff --git a/antarest/study/service.py b/antarest/study/service.py index 28afa70858..166c92f17b 100644 --- a/antarest/study/service.py +++ b/antarest/study/service.py @@ -1345,7 +1345,7 @@ def export_task(_notifier: TaskUpdateNotifier) -> TaskResult: return FileResponse(tmp_export_file, headers=headers, media_type=filetype) else: - json_response = to_json(matrix.model_dump()) + json_response = to_json(matrix.model_dump(mode="json")) return Response(content=json_response, media_type="application/json") def get_study_sim_result(self, study_id: str, params: RequestParameters) -> t.List[StudySimResultDTO]: @@ -2455,7 +2455,7 @@ def unarchive_output_task( src=str(src), dest=str(dest), remove_src=not keep_src_zip, - ).model_dump(), + ).model_dump(mode="json"), name=task_name, ref_id=study.id, request_params=params, diff --git a/antarest/study/storage/rawstudy/model/filesystem/config/ruleset_matrices.py b/antarest/study/storage/rawstudy/model/filesystem/config/ruleset_matrices.py index 29da19c30e..6ed47a3e17 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/config/ruleset_matrices.py +++ b/antarest/study/storage/rawstudy/model/filesystem/config/ruleset_matrices.py @@ -397,11 +397,11 @@ def update_table_form(self, table_form: TableForm, scenario_type: str, *, nan_va scenario = self.scenarios[scenario_type] if isinstance(scenario, pd.DataFrame): simple_table_form = t.cast(SimpleTableForm, table_form) - df = pd.DataFrame(simple_table_form).transpose().replace([None, nan_value], np.nan) - scenario.at[df.index, df.columns] = df + df = pd.DataFrame.from_dict(simple_table_form, orient="index").replace([None, nan_value], np.nan) + scenario.loc[df.index, df.columns] = df else: cluster_table_form = t.cast(ClusterTableForm, table_form) for area, simple_table_form in cluster_table_form.items(): scenario = t.cast(pd.DataFrame, self.scenarios[scenario_type][area]) df = pd.DataFrame(simple_table_form).transpose().replace([None, nan_value], np.nan) - scenario.at[df.index, df.columns] = df + scenario.loc[df.index, df.columns] = df diff --git a/antarest/study/storage/rawstudy/model/filesystem/matrix/date_serializer.py b/antarest/study/storage/rawstudy/model/filesystem/matrix/date_serializer.py index cdc67b8ac5..2b8c431085 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/matrix/date_serializer.py +++ b/antarest/study/storage/rawstudy/model/filesystem/matrix/date_serializer.py @@ -10,6 +10,8 @@ # # This file is part of the Antares project. +from __future__ import annotations + import re from abc import ABC, abstractmethod from typing import Hashable, List, Sequence, Tuple, cast @@ -43,7 +45,7 @@ def __init__(self, area: str): self.area = area @abstractmethod - def extract_date(self, df: pd.DataFrame) -> Tuple[pd.Index, pd.DataFrame]: + def extract_date(self, df: pd.DataFrame) -> Tuple[pd.Index[str], pd.DataFrame]: """ Extract date from raw columns inside matrix file Args: @@ -54,7 +56,7 @@ def extract_date(self, df: pd.DataFrame) -> Tuple[pd.Index, pd.DataFrame]: raise NotImplementedError() @abstractmethod - def build_date(self, index: pd.Index) -> pd.DataFrame: + def build_date(self, index: pd.Index[str]) -> pd.DataFrame: """ Format in antares style date index Args: @@ -78,7 +80,7 @@ class HourlyMatrixSerializer(IDateMatrixSerializer): Class implementation for hourly index """ - def build_date(self, index: pd.Index) -> pd.DataFrame: + def build_date(self, index: pd.Index[str]) -> pd.DataFrame: def _map(row: str) -> Tuple[str, int, str, str, str]: m, d, h = re.split(r"[\s/]", row) return "", 1, d, IDateMatrixSerializer._R_MONTHS[m], h @@ -97,7 +99,7 @@ def _map(row: str) -> Tuple[str, int, str, str, str]: return pd.concat([headers, matrix], axis=0) - def extract_date(self, df: pd.DataFrame) -> Tuple[pd.Index, pd.DataFrame]: + def extract_date(self, df: pd.DataFrame) -> Tuple[pd.Index[str], pd.DataFrame]: # Extract left part with date df_date = df.iloc[:, 2:5] df_date.columns = pd.Index(data=["day", "month", "hour"]) @@ -108,7 +110,7 @@ def extract_date(self, df: pd.DataFrame) -> Tuple[pd.Index, pd.DataFrame]: to_remove = cast(Sequence[Hashable], df.columns[0:5]) body = df.drop(to_remove, axis=1) - return pd.Index(date), body + return pd.Index(date), body # type: ignore class DailyMatrixSerializer(IDateMatrixSerializer): @@ -116,7 +118,7 @@ class DailyMatrixSerializer(IDateMatrixSerializer): Class implementation for daily index """ - def build_date(self, index: pd.Index) -> pd.DataFrame: + def build_date(self, index: pd.Index[str]) -> pd.DataFrame: def _map(row: str) -> Tuple[str, int, str, str]: m, d = row.split("/") return "", 1, d, IDateMatrixSerializer._R_MONTHS[m] @@ -135,7 +137,7 @@ def _map(row: str) -> Tuple[str, int, str, str]: return pd.concat([headers, matrix], axis=0) - def extract_date(self, df: pd.DataFrame) -> Tuple[pd.Index, pd.DataFrame]: + def extract_date(self, df: pd.DataFrame) -> Tuple[pd.Index[str], pd.DataFrame]: # Extract left part with date df_date = df.iloc[:, 2:4] df_date.columns = pd.Index(["day", "month"]) @@ -146,7 +148,7 @@ def extract_date(self, df: pd.DataFrame) -> Tuple[pd.Index, pd.DataFrame]: to_remove = cast(Sequence[Hashable], df.columns[0:4]) body = df.drop(to_remove, axis=1) - return pd.Index(date), body + return pd.Index(date), body # type: ignore class WeeklyMatrixSerializer(IDateMatrixSerializer): @@ -154,7 +156,7 @@ class WeeklyMatrixSerializer(IDateMatrixSerializer): Class implementation for weekly index """ - def build_date(self, index: pd.Index) -> pd.DataFrame: + def build_date(self, index: pd.Index[str]) -> pd.DataFrame: matrix = pd.DataFrame({0: [""] * index.size, 1: index.values}) headers = pd.DataFrame( @@ -167,7 +169,7 @@ def build_date(self, index: pd.Index) -> pd.DataFrame: return pd.concat([headers, matrix], axis=0) - def extract_date(self, df: pd.DataFrame) -> Tuple[pd.Index, pd.DataFrame]: + def extract_date(self, df: pd.DataFrame) -> Tuple[pd.Index[str], pd.DataFrame]: # Extract left part with date df_date = df.iloc[:, 1:2] df_date.columns = pd.Index(["weekly"]) @@ -184,7 +186,7 @@ class MonthlyMatrixSerializer(IDateMatrixSerializer): Class implementation for monthly index """ - def build_date(self, index: pd.Index) -> pd.DataFrame: + def build_date(self, index: pd.Index[str]) -> pd.DataFrame: matrix = pd.DataFrame( { 0: [""] * index.size, @@ -203,7 +205,7 @@ def build_date(self, index: pd.Index) -> pd.DataFrame: return pd.concat([headers, matrix], axis=0) - def extract_date(self, df: pd.DataFrame) -> Tuple[pd.Index, pd.DataFrame]: + def extract_date(self, df: pd.DataFrame) -> Tuple[pd.Index[str], pd.DataFrame]: # Extract left part with date df_date = df.iloc[:, 2:3] df_date.columns = pd.Index(["month"]) @@ -222,7 +224,7 @@ class AnnualMatrixSerializer(IDateMatrixSerializer): Class implementation for annual index """ - def build_date(self, index: pd.Index) -> pd.DataFrame: + def build_date(self, index: pd.Index[str]) -> pd.DataFrame: return pd.DataFrame( [ [self.area.upper(), "annual"], @@ -232,7 +234,7 @@ def build_date(self, index: pd.Index) -> pd.DataFrame: ] ) - def extract_date(self, df: pd.DataFrame) -> Tuple[pd.Index, pd.DataFrame]: + def extract_date(self, df: pd.DataFrame) -> Tuple[pd.Index[str], pd.DataFrame]: # Extract left part with date df_date = df.iloc[:, 1:2] df_date.columns = pd.Index(["annual"]) diff --git a/antarest/study/storage/rawstudy/model/filesystem/matrix/matrix.py b/antarest/study/storage/rawstudy/model/filesystem/matrix/matrix.py index 9c421f59e1..427631427a 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/matrix/matrix.py +++ b/antarest/study/storage/rawstudy/model/filesystem/matrix/matrix.py @@ -12,7 +12,7 @@ import logging from abc import ABC, abstractmethod -from enum import Enum +from enum import StrEnum from pathlib import Path from typing import Any, List, Optional, Union, cast @@ -27,7 +27,7 @@ logger = logging.getLogger(__name__) -class MatrixFrequency(str, Enum): +class MatrixFrequency(StrEnum): """ An enumeration of matrix frequencies. diff --git a/antarest/study/storage/variantstudy/model/command/icommand.py b/antarest/study/storage/variantstudy/model/command/icommand.py index eb9a1f1285..537b5ddb5b 100644 --- a/antarest/study/storage/variantstudy/model/command/icommand.py +++ b/antarest/study/storage/variantstudy/model/command/icommand.py @@ -139,8 +139,8 @@ def match(self, other: "ICommand", equal: bool = False) -> bool: if not isinstance(other, self.__class__): return False excluded_fields = set(ICommand.model_fields) - this_values = self.model_dump(exclude=excluded_fields) - that_values = other.model_dump(exclude=excluded_fields) + this_values = self.model_dump(mode="json", exclude=excluded_fields) + that_values = other.model_dump(mode="json", exclude=excluded_fields) return this_values == that_values @abstractmethod diff --git a/antarest/study/storage/variantstudy/model/command/update_binding_constraint.py b/antarest/study/storage/variantstudy/model/command/update_binding_constraint.py index bc582d0036..423c431d38 100644 --- a/antarest/study/storage/variantstudy/model/command/update_binding_constraint.py +++ b/antarest/study/storage/variantstudy/model/command/update_binding_constraint.py @@ -168,7 +168,7 @@ def _apply(self, study_data: FileStudy) -> CommandOutput: study_version = study_data.config.version # rename matrices if the operator has changed for version >= 870 if self.operator and study_version >= STUDY_VERSION_8_7: - existing_operator = BindingConstraintOperator(actual_cfg.get("operator")) + existing_operator = BindingConstraintOperator(actual_cfg["operator"]) new_operator = self.operator update_matrices_names(study_data, self.id, existing_operator, new_operator) @@ -178,7 +178,7 @@ def _apply(self, study_data: FileStudy) -> CommandOutput: term for term in [m.value for m in TermMatrices] if hasattr(self, term) and getattr(self, term) ] - time_step = self.time_step or BindingConstraintFrequency(actual_cfg.get("type")) + time_step = self.time_step or BindingConstraintFrequency(actual_cfg["type"]) self.validates_and_fills_matrices( time_step=time_step, specific_matrices=updated_matrices or None, version=study_version, create=False ) diff --git a/antarest/study/web/study_data_blueprint.py b/antarest/study/web/study_data_blueprint.py index 2128ed849c..a6d39c7164 100644 --- a/antarest/study/web/study_data_blueprint.py +++ b/antarest/study/web/study_data_blueprint.py @@ -94,7 +94,7 @@ class BCKeyValueType(te.TypedDict): value: t.Union[str, int, float, bool] -class ClusterType(str, enum.Enum): +class ClusterType(enum.StrEnum): """ Cluster type: diff --git a/docs/install/0-INSTALL.md b/docs/install/0-INSTALL.md index 388f98b5f7..8206af7c6e 100644 --- a/docs/install/0-INSTALL.md +++ b/docs/install/0-INSTALL.md @@ -8,7 +8,7 @@ A local build allows using Antares Web as a desktop application. Requirements: -- python : 3.8.x +- python : 3.11.x - node : 18.16.1 Then perform the following steps: diff --git a/pyproject.toml b/pyproject.toml index 42c259d133..cfde64c238 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,12 +8,9 @@ authors = [{name="RTE, Antares Web Team", email="andrea.sgattoni@rte-france.com" description="Antares Server" readme = {file = "README.md", content-type = "text/markdown"} license = {file = "LICENSE"} -requires-python = ">=3.8" +requires-python = ">=3.11" classifiers=[ "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "License :: Apache License :: 2.0", "Operating System :: OS Independent", @@ -126,8 +123,8 @@ exclude = [ line-length = 120 indent-width = 4 -# Assume Python 3.8 -target-version = "py38" +# Assumes Python 3.11 +target-version = "py311" [tool.ruff.lint] # Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`) codes by default. diff --git a/readthedocs.yml b/readthedocs.yml index bf990c8405..d0135160a8 100644 --- a/readthedocs.yml +++ b/readthedocs.yml @@ -8,7 +8,7 @@ version: 2 build: os: ubuntu-22.04 tools: - python: '3.8' + python: '3.11' mkdocs: configuration: mkdocs.yml diff --git a/requirements-dev.txt b/requirements-dev.txt index 462d77bb3c..14c06c1ed6 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -4,16 +4,16 @@ black~=23.7.0 isort~=5.12.0 mypy~=1.11.1 -pyinstaller==5.6.2 -pyinstaller-hooks-contrib==2024.6 +pyinstaller==6.10.0 +pyinstaller-hooks-contrib==2024.8 # Extra requirements installed by `mypy --install-types`. # IMPORTANT: Make sure the versions of these typing libraries match the versions # of the corresponding implementation libraries used in production (in `requirements.txt`). -pandas-stubs~=1.4.0 +pandas-stubs~=2.2.2 types-paramiko~=3.4.0 -types-psycopg2~=2.9.4 +types-psycopg2~=2.9.9 types-redis~=4.1.2 types-requests~=2.27.1 types-PyYAML~=5.4.1 diff --git a/requirements.txt b/requirements.txt index eefa07d92f..2e191bb01f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -33,18 +33,16 @@ humanize~=4.11.0; python_version > '3.8' jsonref~=0.2 PyJWT~=2.9.0 MarkupSafe~=2.0.1 -numpy~=1.22.1 -pandas~=1.4.0 +numpy~=1.26.4 +pandas~=2.2.3 paramiko~=3.4.1 plyer~=2.0.0 -psycopg2-binary==2.9.4 +psycopg2-binary~=2.9.9 py7zr~=0.20.6 python-json-logger~=2.0.7 -PyYAML~=5.4.1; python_version <= '3.9' -PyYAML~=5.3.1; python_version > '3.9' +PyYAML~=5.3.1 redis~=4.1.2 SQLAlchemy~=1.4.46 -tables==3.6.1; python_version <= '3.8' -tables==3.9.2; python_version > '3.8' +tables==3.9.2 typing_extensions~=4.12.2 xlsxwriter~=3.2.0 \ No newline at end of file diff --git a/scripts/install-debug.sh b/scripts/install-debug.sh deleted file mode 100755 index 2ada4a30c4..0000000000 --- a/scripts/install-debug.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -set -e - -python3 -m venv /debug_env -source /debug_env/bin/activate -pip3 install pystack-debugger -deactivate \ No newline at end of file diff --git a/scripts/stacktrace.sh b/scripts/stacktrace.sh deleted file mode 100755 index 4ce721ad78..0000000000 --- a/scripts/stacktrace.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -source /debug_env/bin/activate -echo "Printing stacktraces" -ps aux | grep python | awk '{print $2}' | xargs -I{} bash -c "echo {}; pystack --include-greenlet {}" -echo "Done" \ No newline at end of file diff --git a/sonar-project.properties b/sonar-project.properties index fa40909147..dd7384df7d 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -4,7 +4,7 @@ sonar.sources=antarest, webapp/src sonar.language=python, js sonar.exclusions=antarest/gui.py,antarest/main.py sonar.python.coverage.reportPaths=coverage.xml -sonar.python.version=3.8 +sonar.python.version=3.11 sonar.javascript.lcov.reportPaths=webapp/coverage/lcov.info sonar.projectVersion=2.17.6 sonar.coverage.exclusions=antarest/gui.py,antarest/main.py,antarest/singleton_services.py,antarest/worker/archive_worker_service.py,webapp/**/*,,antarest/fastapi_jwt_auth/** \ No newline at end of file diff --git a/tests/cache/test_local_cache.py b/tests/cache/test_local_cache.py index 3242d92533..dc6382cac5 100644 --- a/tests/cache/test_local_cache.py +++ b/tests/cache/test_local_cache.py @@ -43,11 +43,11 @@ def test_lifecycle(): id = "some_id" duration = 3600 timeout = int(time.time()) + duration - cache_element = LocalCacheElement(duration=duration, data=config.model_dump(), timeout=timeout) + cache_element = LocalCacheElement(duration=duration, data=config.model_dump(mode="json"), timeout=timeout) # PUT - cache.put(id=id, data=config.model_dump(), duration=duration) + cache.put(id=id, data=config.model_dump(mode="json"), duration=duration) assert cache.cache[id] == cache_element # GET - assert cache.get(id=id) == config.model_dump() + assert cache.get(id=id) == config.model_dump(mode="json") diff --git a/tests/cache/test_redis_cache.py b/tests/cache/test_redis_cache.py index f5fe9c37a3..808131fabb 100644 --- a/tests/cache/test_redis_cache.py +++ b/tests/cache/test_redis_cache.py @@ -42,7 +42,7 @@ def test_lifecycle(): id = "some_id" redis_key = f"cache:{id}" duration = 3600 - cache_element = RedisCacheElement(duration=duration, data=config.model_dump()).model_dump_json() + cache_element = RedisCacheElement(duration=duration, data=config.model_dump(mode="json")).model_dump_json() # GET redis_client.get.return_value = cache_element @@ -53,7 +53,7 @@ def test_lifecycle(): # PUT duration = 7200 - cache_element = RedisCacheElement(duration=duration, data=config.model_dump()).model_dump_json() - cache.put(id=id, data=config.model_dump(), duration=duration) + cache_element = RedisCacheElement(duration=duration, data=config.model_dump(mode="json")).model_dump_json() + cache.put(id=id, data=config.model_dump(mode="json"), duration=duration) redis_client.set.assert_called_once_with(redis_key, cache_element) redis_client.expire.assert_called_with(redis_key, duration) diff --git a/tests/integration/test_integration.py b/tests/integration/test_integration.py index da7b312e9c..a9fa59088f 100644 --- a/tests/integration/test_integration.py +++ b/tests/integration/test_integration.py @@ -606,15 +606,15 @@ def test_area_management(client: TestClient, admin_access_token: str) -> None: res = client.get(f"/v1/studies/{study_id}/layers") res.raise_for_status() - assert res.json() == [LayerInfoDTO(id="0", name="All", areas=["area 1", "area 2"]).model_dump()] + assert res.json() == [LayerInfoDTO(id="0", name="All", areas=["area 1", "area 2"]).model_dump(mode="json")] res = client.post(f"/v1/studies/{study_id}/layers?name=test") assert res.json() == "1" res = client.get(f"/v1/studies/{study_id}/layers") assert res.json() == [ - LayerInfoDTO(id="0", name="All", areas=["area 1", "area 2"]).model_dump(), - LayerInfoDTO(id="1", name="test", areas=[]).model_dump(), + LayerInfoDTO(id="0", name="All", areas=["area 1", "area 2"]).model_dump(mode="json"), + LayerInfoDTO(id="1", name="test", areas=[]).model_dump(mode="json"), ] res = client.put(f"/v1/studies/{study_id}/layers/1?name=test2") @@ -625,8 +625,8 @@ def test_area_management(client: TestClient, admin_access_token: str) -> None: assert res.status_code in {200, 201}, res.json() res = client.get(f"/v1/studies/{study_id}/layers") assert res.json() == [ - LayerInfoDTO(id="0", name="All", areas=["area 1", "area 2"]).model_dump(), - LayerInfoDTO(id="1", name="test2", areas=["area 2"]).model_dump(), + LayerInfoDTO(id="0", name="All", areas=["area 1", "area 2"]).model_dump(mode="json"), + LayerInfoDTO(id="1", name="test2", areas=["area 2"]).model_dump(mode="json"), ] # Delete the layer '1' that has 1 area diff --git a/tests/variantstudy/conftest.py b/tests/variantstudy/conftest.py index beaaf34065..6d3039d4f9 100644 --- a/tests/variantstudy/conftest.py +++ b/tests/variantstudy/conftest.py @@ -94,11 +94,7 @@ def get_matrix_id(matrix: t.Union[t.List[t.List[float]], str]) -> str: Get the matrix ID from a matrix or a matrix link. """ if isinstance(matrix, str): - # str.removeprefix() is not available in Python 3.8 - prefix = "matrix://" - if matrix.startswith(prefix): - return matrix[len(prefix) :] - return matrix + return matrix.removeprefix("matrix://") elif isinstance(matrix, list): return create(matrix) else: diff --git a/tests/variantstudy/model/command/test_create_area.py b/tests/variantstudy/model/command/test_create_area.py index 0bb8c104c7..d6593a929b 100644 --- a/tests/variantstudy/model/command/test_create_area.py +++ b/tests/variantstudy/model/command/test_create_area.py @@ -15,6 +15,7 @@ import pytest +from antarest.study.storage.rawstudy.ini_reader import IniReader from antarest.study.storage.rawstudy.model.filesystem.config.model import EnrModelling, transform_name_to_id from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy from antarest.study.storage.variantstudy.business.command_reverter import CommandReverter @@ -96,9 +97,9 @@ def test_apply( # Allocation assert (study_path / "input" / "hydro" / "allocation" / f"{area_id}.ini").exists() - allocation = configparser.ConfigParser() - allocation.read(study_path / "input" / "hydro" / "allocation" / f"{area_id}.ini") - assert int(allocation["[allocation"][area_id]) == 1 + reader = IniReader() + allocation = reader.read(study_path / "input" / "hydro" / "allocation" / f"{area_id}.ini") + assert int(allocation["[allocation]"][area_id]) == 1 # Capacity assert (study_path / "input" / "hydro" / "common" / "capacity" / f"maxpower_{area_id}.txt.link").exists() diff --git a/tests/variantstudy/test_command_factory.py b/tests/variantstudy/test_command_factory.py index b78ba393e5..dd47e0453c 100644 --- a/tests/variantstudy/test_command_factory.py +++ b/tests/variantstudy/test_command_factory.py @@ -386,11 +386,7 @@ @pytest.fixture def command_factory() -> CommandFactory: def get_matrix_id(matrix: str) -> str: - # str.removeprefix() is not available in Python 3.8 - prefix = "matrix://" - if matrix.startswith(prefix): - return matrix[len(prefix) :] - return matrix + return matrix.removeprefix("matrix://") return CommandFactory( generator_matrix_constants=Mock(spec=GeneratorMatrixConstants), From d845e5ff9efa7c394a4075c05a4add2b9e411efc Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Tue, 29 Oct 2024 16:59:08 +0100 Subject: [PATCH 080/182] feat(ts-gen): display progress bar via websockets (#2194) --- antarest/core/filesystem_blueprint.py | 9 +- antarest/core/interfaces/eventbus.py | 7 +- antarest/core/tasks/service.py | 57 ++++-- antarest/launcher/service.py | 4 +- antarest/matrixstore/service.py | 4 +- antarest/study/business/utils.py | 8 +- antarest/study/service.py | 68 ++++--- .../model/filesystem/config/ini_properties.py | 6 +- antarest/study/storage/rawstudy/watcher.py | 4 +- .../variantstudy/model/command/create_area.py | 3 +- .../command/create_binding_constraint.py | 3 +- .../model/command/create_cluster.py | 3 +- .../model/command/create_district.py | 3 +- .../variantstudy/model/command/create_link.py | 3 +- .../command/create_renewables_cluster.py | 3 +- .../model/command/create_st_storage.py | 3 +- .../generate_thermal_cluster_timeseries.py | 30 ++- .../variantstudy/model/command/icommand.py | 12 +- .../variantstudy/model/command/remove_area.py | 3 +- .../command/remove_binding_constraint.py | 5 +- .../model/command/remove_cluster.py | 3 +- .../model/command/remove_district.py | 5 +- .../variantstudy/model/command/remove_link.py | 3 +- .../command/remove_renewables_cluster.py | 3 +- .../model/command/remove_st_storage.py | 3 +- .../model/command/replace_matrix.py | 3 +- .../command/update_binding_constraint.py | 3 +- .../model/command/update_comments.py | 5 +- .../model/command/update_config.py | 3 +- .../model/command/update_district.py | 3 +- .../model/command/update_playlist.py | 3 +- .../model/command/update_raw_file.py | 5 +- .../model/command/update_scenario_builder.py | 3 +- .../model/command_listener/__init__.py | 11 ++ .../command_listener/command_listener.py | 26 +++ .../variantstudy/snapshot_generator.py | 12 +- .../variantstudy/variant_command_generator.py | 13 +- .../variantstudy/variant_study_service.py | 21 ++- tests/conftest_services.py | 4 +- tests/core/test_tasks.py | 171 +++++++++++++++++- tests/storage/conftest.py | 4 +- tests/storage/test_service.py | 5 +- .../variantstudy/test_snapshot_generator.py | 23 ++- 43 files changed, 444 insertions(+), 129 deletions(-) create mode 100644 antarest/study/storage/variantstudy/model/command_listener/__init__.py create mode 100644 antarest/study/storage/variantstudy/model/command_listener/command_listener.py diff --git a/antarest/core/filesystem_blueprint.py b/antarest/core/filesystem_blueprint.py index d625d19c07..804746993d 100644 --- a/antarest/core/filesystem_blueprint.py +++ b/antarest/core/filesystem_blueprint.py @@ -23,10 +23,11 @@ import typing_extensions as te from fastapi import APIRouter, Depends, HTTPException -from pydantic import BaseModel, Field +from pydantic import Field from starlette.responses import PlainTextResponse, StreamingResponse from antarest.core.config import Config +from antarest.core.serialization import AntaresBaseModel from antarest.core.utils.web import APITag from antarest.login.auth import Auth @@ -35,7 +36,7 @@ class FilesystemDTO( - BaseModel, + AntaresBaseModel, extra="forbid", json_schema_extra={ "example": { @@ -61,7 +62,7 @@ class FilesystemDTO( class MountPointDTO( - BaseModel, + AntaresBaseModel, extra="forbid", json_schema_extra={ "example": { @@ -109,7 +110,7 @@ async def from_path(cls, name: str, path: Path) -> "MountPointDTO": class FileInfoDTO( - BaseModel, + AntaresBaseModel, extra="forbid", json_schema_extra={ "example": { diff --git a/antarest/core/interfaces/eventbus.py b/antarest/core/interfaces/eventbus.py index 30771baff4..c590233f43 100644 --- a/antarest/core/interfaces/eventbus.py +++ b/antarest/core/interfaces/eventbus.py @@ -46,7 +46,7 @@ class EventType(StrEnum): WORKER_TASK_STARTED = "WORKER_TASK_STARTED" WORKER_TASK_ENDED = "WORKER_TASK_ENDED" LAUNCH_PROGRESS = "LAUNCH_PROGRESS" - TS_GENERATION_PROGRESS = "TS_GENERATION_PROGRESS" + TASK_PROGRESS = "TASK_PROGRESS" class EventChannelDirectory: @@ -137,6 +137,9 @@ def start(self, threaded: bool = True) -> None: class DummyEventBusService(IEventBus): + def __init__(self) -> None: + self.events: List[Event] = [] + def queue(self, event: Event, queue: str) -> None: # Noop pass @@ -150,7 +153,7 @@ def remove_queue_consumer(self, listener_id: str) -> None: def push(self, event: Event) -> None: # Noop - pass + self.events.append(event) def add_listener( self, diff --git a/antarest/core/tasks/service.py b/antarest/core/tasks/service.py index 2b8bfb725d..8a0ec83105 100644 --- a/antarest/core/tasks/service.py +++ b/antarest/core/tasks/service.py @@ -42,13 +42,23 @@ logger = logging.getLogger(__name__) -TaskUpdateNotifier = t.Callable[[str], None] -Task = t.Callable[[TaskUpdateNotifier], TaskResult] - DEFAULT_AWAIT_MAX_TIMEOUT = 172800 # 48 hours """Default timeout for `await_task` in seconds.""" +class ITaskNotifier(ABC): + @abstractmethod + def notify_message(self, message: str) -> None: + raise NotImplementedError() + + @abstractmethod + def notify_progress(self, progress: int) -> None: + raise NotImplementedError() + + +Task = t.Callable[[ITaskNotifier], TaskResult] + + class ITaskService(ABC): @abstractmethod def add_worker_task( @@ -94,11 +104,17 @@ def await_task(self, task_id: str, timeout_sec: int = DEFAULT_AWAIT_MAX_TIMEOUT) # noinspection PyUnusedLocal -def noop_notifier(message: str) -> None: - """This function is used in tasks when no notification is required.""" +class NoopNotifier(ITaskNotifier): + """This class is used in tasks when no notification is required.""" + + def notify_message(self, message: str) -> None: + return + def notify_progress(self, progress: int) -> None: + return -class TaskJobLogRecorder: + +class TaskLogAndProgressRecorder(ITaskNotifier): """ Callback used to register log messages in the TaskJob table. @@ -107,15 +123,32 @@ class TaskJobLogRecorder: session: The database session created in the same thread as the task thread. """ - def __init__(self, task_id: str, session: Session): + def __init__(self, task_id: str, session: Session, event_bus: IEventBus) -> None: self.session = session self.task_id = task_id + self.event_bus = event_bus - def __call__(self, message: str) -> None: + def notify_message(self, message: str) -> None: task = self.session.query(TaskJob).get(self.task_id) if task: task.logs.append(TaskJobLog(message=message, task_id=self.task_id)) - db.session.commit() + self.session.commit() + + def notify_progress(self, progress: int) -> None: + self.session.query(TaskJob).filter(TaskJob.id == self.task_id).update({TaskJob.progress: progress}) + self.session.commit() + + self.event_bus.push( + Event( + type=EventType.TASK_PROGRESS, + payload={ + "task_id": self.task_id, + "progress": progress, + }, + permissions=PermissionInfo(public_mode=PublicMode.READ), + channel=EventChannelDirectory.TASK + self.task_id, + ) + ) class TaskJobService(ITaskService): @@ -138,7 +171,7 @@ def _create_worker_task( task_id: str, task_type: str, task_args: t.Dict[str, t.Union[int, float, bool, str]], - ) -> t.Callable[[TaskUpdateNotifier], TaskResult]: + ) -> Task: task_result_wrapper: t.List[TaskResult] = [] def _create_awaiter( @@ -152,7 +185,7 @@ async def _await_task_end(event: Event) -> None: return _await_task_end # noinspection PyUnusedLocal - def _send_worker_task(logger_: TaskUpdateNotifier) -> TaskResult: + def _send_worker_task(logger_: ITaskNotifier) -> TaskResult: listener_id = self.event_bus.add_listener( _create_awaiter(task_result_wrapper), [EventType.WORKER_TASK_ENDED], @@ -380,7 +413,7 @@ def _run_task( try: with db(): # We must use the DB session attached to the current thread - result = callback(TaskJobLogRecorder(task_id, session=db.session)) + result = callback(TaskLogAndProgressRecorder(task_id, db.session, self.event_bus)) status = TaskStatus.COMPLETED if result.success else TaskStatus.FAILED logger.info(f"Task {task_id} ended with status {status}") diff --git a/antarest/launcher/service.py b/antarest/launcher/service.py index e5f78ede3f..7032e388c0 100644 --- a/antarest/launcher/service.py +++ b/antarest/launcher/service.py @@ -33,7 +33,7 @@ from antarest.core.model import PermissionInfo, PublicMode, StudyPermissionType from antarest.core.requests import RequestParameters, UserHasNotPermissionError from antarest.core.tasks.model import TaskResult, TaskType -from antarest.core.tasks.service import ITaskService, TaskUpdateNotifier +from antarest.core.tasks.service import ITaskNotifier, ITaskService from antarest.core.utils.archives import ArchiveFormat, archive_dir, is_zip, read_in_zip from antarest.core.utils.fastapi_sqlalchemy import db from antarest.core.utils.utils import StopWatch, concat_files, concat_files_to_str @@ -598,7 +598,7 @@ def _download_fallback_output(self, job_id: str, params: RequestParameters) -> F export_path = Path(export_file_download.path) export_id = export_file_download.id - def export_task(_: TaskUpdateNotifier) -> TaskResult: + def export_task(_: ITaskNotifier) -> TaskResult: try: # archive_dir(output_path, export_path, archive_format=ArchiveFormat.ZIP) diff --git a/antarest/matrixstore/service.py b/antarest/matrixstore/service.py index 1d7bc27955..c2a8ca5c5d 100644 --- a/antarest/matrixstore/service.py +++ b/antarest/matrixstore/service.py @@ -32,7 +32,7 @@ from antarest.core.requests import RequestParameters, UserHasNotPermissionError from antarest.core.serialization import from_json from antarest.core.tasks.model import TaskResult, TaskType -from antarest.core.tasks.service import ITaskService, TaskUpdateNotifier +from antarest.core.tasks.service import ITaskNotifier, ITaskService from antarest.core.utils.archives import ArchiveFormat, archive_dir from antarest.core.utils.fastapi_sqlalchemy import db from antarest.core.utils.utils import StopWatch @@ -510,7 +510,7 @@ def download_matrix_list( export_path = Path(export_file_download.path) export_id = export_file_download.id - def export_task(notifier: TaskUpdateNotifier) -> TaskResult: + def export_task(notifier: ITaskNotifier) -> TaskResult: try: self.create_matrix_files(matrix_ids=matrix_list, export_path=export_path) self.file_transfer_manager.set_ready(export_id) diff --git a/antarest/study/business/utils.py b/antarest/study/business/utils.py index 58682fd596..76671f2eec 100644 --- a/antarest/study/business/utils.py +++ b/antarest/study/business/utils.py @@ -13,11 +13,11 @@ import typing as t from antares.study.version import StudyVersion -from pydantic import BaseModel from antarest.core.exceptions import CommandApplicationError from antarest.core.jwt import DEFAULT_ADMIN_USER from antarest.core.requests import RequestParameters +from antarest.core.serialization import AntaresBaseModel from antarest.study.business.all_optional_meta import camel_case_model from antarest.study.model import RawStudy, Study from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy @@ -25,6 +25,7 @@ from antarest.study.storage.utils import is_managed from antarest.study.storage.variantstudy.business.utils import transform_command_to_dto from antarest.study.storage.variantstudy.model.command.icommand import ICommand +from antarest.study.storage.variantstudy.model.command_listener.command_listener import ICommandListener # noinspection SpellCheckingInspection GENERAL_DATA_PATH = "settings/generaldata" @@ -35,11 +36,12 @@ def execute_or_add_commands( file_study: FileStudy, commands: t.Sequence[ICommand], storage_service: StudyStorageService, + listener: t.Optional[ICommandListener] = None, ) -> None: if isinstance(study, RawStudy): executed_commands: t.MutableSequence[ICommand] = [] for command in commands: - result = command.apply(file_study) + result = command.apply(file_study, listener) if not result.status: raise CommandApplicationError(result.message) executed_commands.append(command) @@ -72,7 +74,7 @@ def execute_or_add_commands( @camel_case_model class FormFieldsBaseModel( - BaseModel, + AntaresBaseModel, extra="forbid", validate_assignment=True, populate_by_name=True, diff --git a/antarest/study/service.py b/antarest/study/service.py index 166c92f17b..5bd0cd4d88 100644 --- a/antarest/study/service.py +++ b/antarest/study/service.py @@ -57,7 +57,7 @@ from antarest.core.requests import RequestParameters, UserHasNotPermissionError from antarest.core.serialization import to_json from antarest.core.tasks.model import TaskListFilter, TaskResult, TaskStatus, TaskType -from antarest.core.tasks.service import ITaskService, TaskUpdateNotifier, noop_notifier +from antarest.core.tasks.service import ITaskNotifier, ITaskService, NoopNotifier from antarest.core.utils.archives import ArchiveFormat, is_archive_format from antarest.core.utils.fastapi_sqlalchemy import db from antarest.core.utils.utils import StopWatch @@ -156,6 +156,7 @@ from antarest.study.storage.variantstudy.model.command.update_comments import UpdateComments from antarest.study.storage.variantstudy.model.command.update_config import UpdateConfig from antarest.study.storage.variantstudy.model.command.update_raw_file import UpdateRawFile +from antarest.study.storage.variantstudy.model.command_listener.command_listener import ICommandListener from antarest.study.storage.variantstudy.model.dbmodel import VariantStudy from antarest.study.storage.variantstudy.model.model import CommandDTO from antarest.study.storage.variantstudy.variant_study_service import VariantStudyService @@ -181,6 +182,14 @@ def get_disk_usage(path: t.Union[str, Path]) -> int: return total_size +class TaskProgressRecorder(ICommandListener): + def __init__(self, notifier: ITaskNotifier) -> None: + self.notifier = notifier + + def notify_progress(self, progress: int) -> None: + return self.notifier.notify_progress(progress) + + class ThermalClusterTimeSeriesGeneratorTask: """ Task to generate thermal clusters time series @@ -198,14 +207,29 @@ def __init__( self.storage_service = storage_service self.event_bus = event_bus - def _generate_timeseries(self) -> None: + def _generate_timeseries(self, notifier: ITaskNotifier) -> None: """Run the task (lock the database).""" command_context = self.storage_service.variant_study_service.command_factory.command_context - command = GenerateThermalClusterTimeSeries(command_context=command_context) + command = GenerateThermalClusterTimeSeries.model_construct(command_context=command_context) + listener = TaskProgressRecorder(notifier=notifier) with db(): study = self.repository.one(self._study_id) file_study = self.storage_service.get_storage(study).get_raw(study) - execute_or_add_commands(study, file_study, [command], self.storage_service) + execute_or_add_commands(study, file_study, [command], self.storage_service, listener) + + if isinstance(file_study, VariantStudy): + # In this case we only added the command to the list. + # It means the generation will really be executed in the next snapshot generation. + # We don't want this, we want this task to generate the matrices no matter the study. + # Therefore, we have to launch a variant generation task inside the timeseries generation one. + variant_service = self.storage_service.variant_study_service + task_service = variant_service.task_service + generation_task_id = variant_service.generate_task(study, True, False, listener) + task_service.await_task(generation_task_id) + result = task_service.status_task(generation_task_id, RequestParameters(DEFAULT_ADMIN_USER)) + if not result.result or not result.result.success: + raise ValueError(f"Failed to generate variant study {self._study_id}") + self.event_bus.push( Event( type=EventType.STUDY_EDITED, @@ -214,12 +238,12 @@ def _generate_timeseries(self) -> None: ) ) - def run_task(self, notifier: TaskUpdateNotifier) -> TaskResult: + def run_task(self, notifier: ITaskNotifier) -> TaskResult: msg = f"Generating thermal timeseries for study '{self._study_id}'" - notifier(msg) - self._generate_timeseries() + notifier.notify_message(msg) + self._generate_timeseries(notifier) msg = f"Successfully generated thermal timeseries for study '{self._study_id}'" - notifier(msg) + notifier.notify_message(msg) return TaskResult(success=True, message=msg) # Make `ThermalClusterTimeSeriesGeneratorTask` object callable @@ -285,7 +309,7 @@ def _upgrade_study(self) -> None: file_study = self.storage_service.get_storage(study_to_upgrade).get_raw(study_to_upgrade) file_study.tree.normalize() - def run_task(self, notifier: TaskUpdateNotifier) -> TaskResult: + def run_task(self, notifier: ITaskNotifier) -> TaskResult: """ Run the study upgrade task. @@ -298,10 +322,10 @@ def run_task(self, notifier: TaskUpdateNotifier) -> TaskResult: # The call to `_upgrade_study` may raise an exception, which will be # handled in the task service (see: `TaskJobService._run_task`) msg = f"Upgrade study '{self._study_id}' to version {self._target_version}" - notifier(msg) + notifier.notify_message(msg) self._upgrade_study() msg = f"Successfully upgraded study '{self._study_id}' to version {self._target_version}" - notifier(msg) + notifier.notify_message(msg) return TaskResult(success=True, message=msg) # Make `StudyUpgraderTask` object is callable @@ -966,7 +990,7 @@ def copy_study( assert_permission(params.user, src_study, StudyPermissionType.READ) self._assert_study_unarchived(src_study) - def copy_task(notifier: TaskUpdateNotifier) -> TaskResult: + def copy_task(notifier: ITaskNotifier) -> TaskResult: origin_study = self.get_study(src_uuid) study = self.storage_service.get_storage(origin_study).copy( origin_study, @@ -1006,7 +1030,7 @@ def copy_task(notifier: TaskUpdateNotifier) -> TaskResult: request_params=params, ) else: - res = copy_task(noop_notifier) + res = copy_task(NoopNotifier()) task_or_study_id = res.return_value or "" return task_or_study_id @@ -1052,7 +1076,7 @@ def export_study( export_path = Path(export_file_download.path) export_id = export_file_download.id - def export_task(notifier: TaskUpdateNotifier) -> TaskResult: + def export_task(notifier: ITaskNotifier) -> TaskResult: try: target_study = self.get_study(uuid) self.storage_service.get_storage(target_study).export_study(target_study, export_path, outputs) @@ -1119,7 +1143,7 @@ def export_output( export_path = Path(export_file_download.path) export_id = export_file_download.id - def export_task(notifier: TaskUpdateNotifier) -> TaskResult: + def export_task(notifier: ITaskNotifier) -> TaskResult: try: target_study = self.get_study(study_uuid) self.storage_service.get_storage(target_study).export_output( @@ -1283,7 +1307,7 @@ def download_outputs( export_path = Path(export_file_download.path) export_id = export_file_download.id - def export_task(_notifier: TaskUpdateNotifier) -> TaskResult: + def export_task(_notifier: ITaskNotifier) -> TaskResult: try: _study = self.get_study(study_id) _stopwatch = StopWatch() @@ -2008,7 +2032,7 @@ def archive(self, uuid: str, params: RequestParameters) -> str: ): raise TaskAlreadyRunning() - def archive_task(notifier: TaskUpdateNotifier) -> TaskResult: + def archive_task(notifier: ITaskNotifier) -> TaskResult: study_to_archive = self.get_study(uuid) self.storage_service.raw_study_service.archive(study_to_archive) study_to_archive.archived = True @@ -2052,7 +2076,7 @@ def unarchive(self, uuid: str, params: RequestParameters) -> str: if not isinstance(study, RawStudy): raise StudyTypeUnsupported(study.id, study.type) - def unarchive_task(notifier: TaskUpdateNotifier) -> TaskResult: + def unarchive_task(notifier: ITaskNotifier) -> TaskResult: study_to_archive = self.get_study(uuid) self.storage_service.raw_study_service.unarchive(study_to_archive) study_to_archive.archived = False @@ -2360,9 +2384,7 @@ def archive_output( if len(list(filter(lambda t: t.name in archive_task_names, study_tasks))): raise TaskAlreadyRunning() - def archive_output_task( - notifier: TaskUpdateNotifier, - ) -> TaskResult: + def archive_output_task(notifier: ITaskNotifier) -> TaskResult: try: study = self.get_study(study_id) stopwatch = StopWatch() @@ -2422,9 +2444,7 @@ def unarchive_output( if len(list(filter(lambda t: t.name in archive_task_names, study_tasks))): raise TaskAlreadyRunning() - def unarchive_output_task( - notifier: TaskUpdateNotifier, - ) -> TaskResult: + def unarchive_output_task(notifier: ITaskNotifier) -> TaskResult: try: study = self.get_study(study_id) stopwatch = StopWatch() diff --git a/antarest/study/storage/rawstudy/model/filesystem/config/ini_properties.py b/antarest/study/storage/rawstudy/model/filesystem/config/ini_properties.py index e731ea203b..c5c3c83950 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/config/ini_properties.py +++ b/antarest/study/storage/rawstudy/model/filesystem/config/ini_properties.py @@ -12,13 +12,11 @@ import typing as t -from pydantic import BaseModel - -from antarest.core.serialization import from_json, to_json +from antarest.core.serialization import AntaresBaseModel, from_json, to_json class IniProperties( - BaseModel, + AntaresBaseModel, # On reading, if the configuration contains an extra field, it is better # to forbid it, because it allows errors to be detected early. # Ignoring extra attributes can hide errors. diff --git a/antarest/study/storage/rawstudy/watcher.py b/antarest/study/storage/rawstudy/watcher.py index 5648629090..d00a7f7204 100644 --- a/antarest/study/storage/rawstudy/watcher.py +++ b/antarest/study/storage/rawstudy/watcher.py @@ -28,7 +28,7 @@ from antarest.core.interfaces.service import IService from antarest.core.requests import RequestParameters from antarest.core.tasks.model import TaskResult, TaskType -from antarest.core.tasks.service import ITaskService, TaskUpdateNotifier +from antarest.core.tasks.service import ITaskNotifier, ITaskService from antarest.core.utils.fastapi_sqlalchemy import db from antarest.core.utils.utils import StopWatch from antarest.login.model import Group @@ -186,7 +186,7 @@ def oneshot_scan( """ # noinspection PyUnusedLocal - def scan_task(notifier: TaskUpdateNotifier) -> TaskResult: + def scan_task(notifier: ITaskNotifier) -> TaskResult: self.scan(workspace, path) return TaskResult(success=True, message="Scan completed") diff --git a/antarest/study/storage/variantstudy/model/command/create_area.py b/antarest/study/storage/variantstudy/model/command/create_area.py index b3f1a30e7f..5c7f76a8d1 100644 --- a/antarest/study/storage/variantstudy/model/command/create_area.py +++ b/antarest/study/storage/variantstudy/model/command/create_area.py @@ -25,6 +25,7 @@ from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy from antarest.study.storage.variantstudy.model.command.common import CommandName, CommandOutput, FilteringOptions from antarest.study.storage.variantstudy.model.command.icommand import MATCH_SIGNATURE_SEPARATOR, ICommand +from antarest.study.storage.variantstudy.model.command_listener.command_listener import ICommandListener from antarest.study.storage.variantstudy.model.model import CommandDTO @@ -105,7 +106,7 @@ def _apply_config(self, study_data: FileStudyTreeConfig) -> t.Tuple[CommandOutpu {"area_id": area_id}, ) - def _apply(self, study_data: FileStudy) -> CommandOutput: + def _apply(self, study_data: FileStudy, listener: t.Optional[ICommandListener] = None) -> CommandOutput: config = study_data.config output, data = self._apply_config(config) diff --git a/antarest/study/storage/variantstudy/model/command/create_binding_constraint.py b/antarest/study/storage/variantstudy/model/command/create_binding_constraint.py index e84564de57..84a7c4ecee 100644 --- a/antarest/study/storage/variantstudy/model/command/create_binding_constraint.py +++ b/antarest/study/storage/variantstudy/model/command/create_binding_constraint.py @@ -39,6 +39,7 @@ ) from antarest.study.storage.variantstudy.model.command.common import CommandName, CommandOutput from antarest.study.storage.variantstudy.model.command.icommand import MATCH_SIGNATURE_SEPARATOR, ICommand +from antarest.study.storage.variantstudy.model.command_listener.command_listener import ICommandListener from antarest.study.storage.variantstudy.model.model import CommandDTO MatrixType = t.List[t.List[MatrixData]] @@ -424,7 +425,7 @@ def _apply_config(self, study_data_config: FileStudyTreeConfig) -> t.Tuple[Comma ) return CommandOutput(status=True), {} - def _apply(self, study_data: FileStudy) -> CommandOutput: + def _apply(self, study_data: FileStudy, listener: t.Optional[ICommandListener] = None) -> CommandOutput: binding_constraints = study_data.tree.get(["input", "bindingconstraints", "bindingconstraints"]) new_key = str(len(binding_constraints)) bd_id = transform_name_to_id(self.name) diff --git a/antarest/study/storage/variantstudy/model/command/create_cluster.py b/antarest/study/storage/variantstudy/model/command/create_cluster.py index ace36bce74..d45a223b39 100644 --- a/antarest/study/storage/variantstudy/model/command/create_cluster.py +++ b/antarest/study/storage/variantstudy/model/command/create_cluster.py @@ -28,6 +28,7 @@ from antarest.study.storage.variantstudy.business.utils import strip_matrix_protocol, validate_matrix from antarest.study.storage.variantstudy.model.command.common import CommandName, CommandOutput from antarest.study.storage.variantstudy.model.command.icommand import MATCH_SIGNATURE_SEPARATOR, ICommand +from antarest.study.storage.variantstudy.model.command_listener.command_listener import ICommandListener from antarest.study.storage.variantstudy.model.model import CommandDTO @@ -119,7 +120,7 @@ def _apply_config(self, study_data: FileStudyTreeConfig) -> t.Tuple[CommandOutpu {"cluster_id": cluster.id}, ) - def _apply(self, study_data: FileStudy) -> CommandOutput: + def _apply(self, study_data: FileStudy, listener: t.Optional[ICommandListener] = None) -> CommandOutput: output, data = self._apply_config(study_data.config) if not output.status: return output diff --git a/antarest/study/storage/variantstudy/model/command/create_district.py b/antarest/study/storage/variantstudy/model/command/create_district.py index afb9736806..9c5aff55f6 100644 --- a/antarest/study/storage/variantstudy/model/command/create_district.py +++ b/antarest/study/storage/variantstudy/model/command/create_district.py @@ -23,6 +23,7 @@ from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy from antarest.study.storage.variantstudy.model.command.common import CommandName, CommandOutput from antarest.study.storage.variantstudy.model.command.icommand import MATCH_SIGNATURE_SEPARATOR, ICommand +from antarest.study.storage.variantstudy.model.command_listener.command_listener import ICommandListener from antarest.study.storage.variantstudy.model.model import CommandDTO @@ -83,7 +84,7 @@ def _apply_config(self, study_data: FileStudyTreeConfig) -> Tuple[CommandOutput, "item_key": item_key, } - def _apply(self, study_data: FileStudy) -> CommandOutput: + def _apply(self, study_data: FileStudy, listener: Optional[ICommandListener] = None) -> CommandOutput: output, data = self._apply_config(study_data.config) if not output.status: return output diff --git a/antarest/study/storage/variantstudy/model/command/create_link.py b/antarest/study/storage/variantstudy/model/command/create_link.py index eec1c4f7ea..7954981d99 100644 --- a/antarest/study/storage/variantstudy/model/command/create_link.py +++ b/antarest/study/storage/variantstudy/model/command/create_link.py @@ -23,6 +23,7 @@ from antarest.study.storage.variantstudy.business.utils import strip_matrix_protocol, validate_matrix from antarest.study.storage.variantstudy.model.command.common import CommandName, CommandOutput, FilteringOptions from antarest.study.storage.variantstudy.model.command.icommand import MATCH_SIGNATURE_SEPARATOR, ICommand +from antarest.study.storage.variantstudy.model.command_listener.command_listener import ICommandListener from antarest.study.storage.variantstudy.model.model import CommandDTO @@ -205,7 +206,7 @@ def _apply_config(self, study_data: FileStudyTreeConfig) -> Tuple[CommandOutput, {"area_from": area_from, "area_to": area_to}, ) - def _apply(self, study_data: FileStudy) -> CommandOutput: + def _apply(self, study_data: FileStudy, listener: Optional[ICommandListener] = None) -> CommandOutput: version = study_data.config.version output, data = self._apply_config(study_data.config) if not output.status: diff --git a/antarest/study/storage/variantstudy/model/command/create_renewables_cluster.py b/antarest/study/storage/variantstudy/model/command/create_renewables_cluster.py index 1a932dd30d..5c0120f7a9 100644 --- a/antarest/study/storage/variantstudy/model/command/create_renewables_cluster.py +++ b/antarest/study/storage/variantstudy/model/command/create_renewables_cluster.py @@ -25,6 +25,7 @@ from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy from antarest.study.storage.variantstudy.model.command.common import CommandName, CommandOutput from antarest.study.storage.variantstudy.model.command.icommand import MATCH_SIGNATURE_SEPARATOR, ICommand +from antarest.study.storage.variantstudy.model.command_listener.command_listener import ICommandListener from antarest.study.storage.variantstudy.model.model import CommandDTO @@ -100,7 +101,7 @@ def _apply_config(self, study_data: FileStudyTreeConfig) -> t.Tuple[CommandOutpu {"cluster_id": cluster.id}, ) - def _apply(self, study_data: FileStudy) -> CommandOutput: + def _apply(self, study_data: FileStudy, listener: t.Optional[ICommandListener] = None) -> CommandOutput: output, data = self._apply_config(study_data.config) if not output.status: return output diff --git a/antarest/study/storage/variantstudy/model/command/create_st_storage.py b/antarest/study/storage/variantstudy/model/command/create_st_storage.py index 4bebf009c3..ed68124bbb 100644 --- a/antarest/study/storage/variantstudy/model/command/create_st_storage.py +++ b/antarest/study/storage/variantstudy/model/command/create_st_storage.py @@ -25,6 +25,7 @@ from antarest.study.storage.variantstudy.business.utils import strip_matrix_protocol, validate_matrix from antarest.study.storage.variantstudy.model.command.common import CommandName, CommandOutput from antarest.study.storage.variantstudy.model.command.icommand import MATCH_SIGNATURE_SEPARATOR, ICommand +from antarest.study.storage.variantstudy.model.command_listener.command_listener import ICommandListener from antarest.study.storage.variantstudy.model.model import CommandDTO # noinspection SpellCheckingInspection @@ -214,7 +215,7 @@ def _apply_config(self, study_data: FileStudyTreeConfig) -> t.Tuple[CommandOutpu {"storage_id": self.storage_id}, ) - def _apply(self, study_data: FileStudy) -> CommandOutput: + def _apply(self, study_data: FileStudy, listener: t.Optional[ICommandListener] = None) -> CommandOutput: """ Applies the study data to update storage configurations and saves the changes. diff --git a/antarest/study/storage/variantstudy/model/command/generate_thermal_cluster_timeseries.py b/antarest/study/storage/variantstudy/model/command/generate_thermal_cluster_timeseries.py index c2709dfc86..1ff3dffc05 100644 --- a/antarest/study/storage/variantstudy/model/command/generate_thermal_cluster_timeseries.py +++ b/antarest/study/storage/variantstudy/model/command/generate_thermal_cluster_timeseries.py @@ -28,6 +28,7 @@ from antarest.study.storage.rawstudy.model.filesystem.matrix.matrix import dump_dataframe from antarest.study.storage.variantstudy.model.command.common import CommandName, CommandOutput from antarest.study.storage.variantstudy.model.command.icommand import ICommand, OutputTuple +from antarest.study.storage.variantstudy.model.command_listener.command_listener import ICommandListener from antarest.study.storage.variantstudy.model.model import CommandDTO logger = logging.getLogger(__name__) @@ -63,13 +64,13 @@ class GenerateThermalClusterTimeSeries(ICommand): def _apply_config(self, study_data: FileStudyTreeConfig) -> OutputTuple: return CommandOutput(status=True, message="Nothing to do"), {} - def _apply(self, study_data: FileStudy) -> CommandOutput: + def _apply(self, study_data: FileStudy, listener: t.Optional[ICommandListener] = None) -> CommandOutput: study_path = study_data.config.study_path with tempfile.TemporaryDirectory(suffix=TS_GEN_SUFFIX, prefix=TS_GEN_PREFIX, dir=study_path.parent) as path: tmp_dir = Path(path) try: shutil.copytree(study_path / "input" / "thermal" / "series", tmp_dir, dirs_exist_ok=True) - self._build_timeseries(study_data, tmp_dir) + self._build_timeseries(study_data, tmp_dir, listener) except Exception as e: logger.error(f"Unhandled exception when trying to generate thermal timeseries: {e}", exc_info=True) raise @@ -77,7 +78,9 @@ def _apply(self, study_data: FileStudy) -> CommandOutput: self._replace_safely_original_files(study_path, tmp_dir) return CommandOutput(status=True, message="All time series were generated successfully") - def _build_timeseries(self, study_data: FileStudy, tmp_path: Path) -> None: + def _build_timeseries( + self, study_data: FileStudy, tmp_path: Path, listener: t.Optional[ICommandListener] = None + ) -> None: # 1- Get the seed and nb_years to generate # NB: Default seed in IHM Legacy: 5489, default seed in web: 3005489. general_data = study_data.tree.get(["settings", "generaldata"], depth=3) @@ -86,17 +89,21 @@ def _build_timeseries(self, study_data: FileStudy, tmp_path: Path) -> None: # 2 - Build the generator rng = MersenneTwisterRNG(seed=thermal_seed) generator = ThermalDataGenerator(rng=rng, days=365) - # 3- Loop through areas in alphabetical order + # 3- Do a first loop to know how many operations will be performed + total_generations = sum(len(area.thermals) for area in study_data.config.areas.values()) + # 4- Loop through areas in alphabetical order areas: t.Dict[str, Area] = study_data.config.areas sorted_areas = {k: areas[k] for k in sorted(areas)} + generation_performed = 0 for area_id, area in sorted_areas.items(): - # 4- Loop through thermal clusters in alphabetical order + # 5- Loop through thermal clusters in alphabetical order sorted_thermals = sorted(area.thermals, key=lambda x: x.id) for thermal in sorted_thermals: - # 5 - Filters out clusters with no generation + # 6 - Filters out clusters with no generation if thermal.gen_ts == LocalTSGenerationBehavior.FORCE_NO_GENERATION: + generation_performed += 1 continue - # 6- Build the cluster + # 7- Build the cluster url = ["input", "thermal", "prepro", area_id, thermal.id.lower(), "modulation"] matrix = study_data.tree.get_node(url) matrix_df = matrix.parse(return_dataframe=True) # type: ignore @@ -123,13 +130,18 @@ def _build_timeseries(self, study_data: FileStudy, tmp_path: Path) -> None: npo_min=npo_min, npo_max=npo_max, ) - # 7- Generate the time-series + # 8- Generate the time-series results = generator.generate_time_series(cluster, nb_years) generated_matrix = results.available_power - # 8- Write the matrix inside the input folder. + # 9- Write the matrix inside the input folder. df = pd.DataFrame(data=generated_matrix, dtype=int) target_path = self._build_matrix_path(tmp_path / area_id / thermal.id.lower()) dump_dataframe(df, target_path, None) + # 10- Notify the progress to the notifier + generation_performed += 1 + if listener: + progress = int(100 * generation_performed / total_generations) + listener.notify_progress(progress) def to_dto(self) -> CommandDTO: return CommandDTO(action=self.command_name.value, args={}) diff --git a/antarest/study/storage/variantstudy/model/command/icommand.py b/antarest/study/storage/variantstudy/model/command/icommand.py index 537b5ddb5b..7ea0bd64ba 100644 --- a/antarest/study/storage/variantstudy/model/command/icommand.py +++ b/antarest/study/storage/variantstudy/model/command/icommand.py @@ -16,13 +16,14 @@ from abc import ABC, abstractmethod import typing_extensions as te -from pydantic import BaseModel +from antarest.core.serialization import AntaresBaseModel from antarest.core.utils.utils import assert_this from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfig from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy from antarest.study.storage.variantstudy.model.command.common import CommandName, CommandOutput from antarest.study.storage.variantstudy.model.command_context import CommandContext +from antarest.study.storage.variantstudy.model.command_listener.command_listener import ICommandListener from antarest.study.storage.variantstudy.model.model import CommandDTO if t.TYPE_CHECKING: # False at runtime, for mypy @@ -35,7 +36,7 @@ OutputTuple: te.TypeAlias = t.Tuple[CommandOutput, t.Dict[str, t.Any]] -class ICommand(ABC, BaseModel, extra="forbid", arbitrary_types_allowed=True): +class ICommand(ABC, AntaresBaseModel, extra="forbid", arbitrary_types_allowed=True): """ Interface for all commands that can be applied to a study. @@ -78,7 +79,7 @@ def apply_config(self, study_data: FileStudyTreeConfig) -> CommandOutput: return output @abstractmethod - def _apply(self, study_data: FileStudy) -> CommandOutput: + def _apply(self, study_data: FileStudy, listener: t.Optional[ICommandListener] = None) -> CommandOutput: """ Applies the study data to update storage configurations and saves the changes. @@ -90,18 +91,19 @@ def _apply(self, study_data: FileStudy) -> CommandOutput: """ raise NotImplementedError() - def apply(self, study_data: FileStudy) -> CommandOutput: + def apply(self, study_data: FileStudy, listener: t.Optional[ICommandListener] = None) -> CommandOutput: """ Applies the study data to update storage configurations and saves the changes. Args: study_data: The study data to be applied. + listener: Can be used by the command to notify anyone giving one. Returns: The output of the command execution. """ try: - return self._apply(study_data) + return self._apply(study_data, listener) except Exception as e: logger.warning( f"Failed to execute variant command {self.command_name}", diff --git a/antarest/study/storage/variantstudy/model/command/remove_area.py b/antarest/study/storage/variantstudy/model/command/remove_area.py index a61290bab1..39162252e8 100644 --- a/antarest/study/storage/variantstudy/model/command/remove_area.py +++ b/antarest/study/storage/variantstudy/model/command/remove_area.py @@ -30,6 +30,7 @@ ) from antarest.study.storage.variantstudy.model.command.common import CommandName, CommandOutput from antarest.study.storage.variantstudy.model.command.icommand import MATCH_SIGNATURE_SEPARATOR, ICommand +from antarest.study.storage.variantstudy.model.command_listener.command_listener import ICommandListener from antarest.study.storage.variantstudy.model.model import CommandDTO logger = logging.getLogger(__name__) @@ -222,7 +223,7 @@ def _remove_area_from_scenario_builder(self, study_data: FileStudy) -> None: study_data.tree.save(rulesets, ["settings", "scenariobuilder"]) # noinspection SpellCheckingInspection - def _apply(self, study_data: FileStudy) -> CommandOutput: + def _apply(self, study_data: FileStudy, listener: t.Optional[ICommandListener] = None) -> CommandOutput: study_data.tree.delete(["input", "areas", self.id]) study_data.tree.delete(["input", "hydro", "common", "capacity", f"maxpower_{self.id}"]) study_data.tree.delete(["input", "hydro", "common", "capacity", f"reservoir_{self.id}"]) diff --git a/antarest/study/storage/variantstudy/model/command/remove_binding_constraint.py b/antarest/study/storage/variantstudy/model/command/remove_binding_constraint.py index d497576b22..ca77cad860 100644 --- a/antarest/study/storage/variantstudy/model/command/remove_binding_constraint.py +++ b/antarest/study/storage/variantstudy/model/command/remove_binding_constraint.py @@ -10,7 +10,7 @@ # # This file is part of the Antares project. -from typing import Any, Dict, List, Tuple +from typing import Any, Dict, List, Optional, Tuple from antarest.core.model import JSON from antarest.study.model import STUDY_VERSION_8_7 @@ -20,6 +20,7 @@ from antarest.study.storage.variantstudy.model.command.common import CommandName, CommandOutput from antarest.study.storage.variantstudy.model.command.create_binding_constraint import remove_bc_from_scenario_builder from antarest.study.storage.variantstudy.model.command.icommand import MATCH_SIGNATURE_SEPARATOR, ICommand +from antarest.study.storage.variantstudy.model.command_listener.command_listener import ICommandListener from antarest.study.storage.variantstudy.model.model import CommandDTO @@ -43,7 +44,7 @@ def _apply_config(self, study_data: FileStudyTreeConfig) -> Tuple[CommandOutput, study_data.bindings.remove(next(iter([bind for bind in study_data.bindings if bind.id == self.id]))) return CommandOutput(status=True), {} - def _apply(self, study_data: FileStudy) -> CommandOutput: + def _apply(self, study_data: FileStudy, listener: Optional[ICommandListener] = None) -> CommandOutput: if self.id not in [bind.id for bind in study_data.config.bindings]: return CommandOutput(status=False, message=f"Binding constraint not found: '{self.id}'") binding_constraints = study_data.tree.get(["input", "bindingconstraints", "bindingconstraints"]) diff --git a/antarest/study/storage/variantstudy/model/command/remove_cluster.py b/antarest/study/storage/variantstudy/model/command/remove_cluster.py index 3895b423e9..76aafc36c1 100644 --- a/antarest/study/storage/variantstudy/model/command/remove_cluster.py +++ b/antarest/study/storage/variantstudy/model/command/remove_cluster.py @@ -19,6 +19,7 @@ ) from antarest.study.storage.variantstudy.model.command.common import CommandName, CommandOutput from antarest.study.storage.variantstudy.model.command.icommand import MATCH_SIGNATURE_SEPARATOR, ICommand +from antarest.study.storage.variantstudy.model.command_listener.command_listener import ICommandListener from antarest.study.storage.variantstudy.model.model import CommandDTO @@ -97,7 +98,7 @@ def _remove_cluster_from_scenario_builder(self, study_data: FileStudy) -> None: study_data.tree.save(rulesets, ["settings", "scenariobuilder"]) - def _apply(self, study_data: FileStudy) -> CommandOutput: + def _apply(self, study_data: FileStudy, listener: t.Optional[ICommandListener] = None) -> CommandOutput: """ Applies the study data to update thermal cluster configurations and saves the changes: remove corresponding the configuration and remove the attached time series. diff --git a/antarest/study/storage/variantstudy/model/command/remove_district.py b/antarest/study/storage/variantstudy/model/command/remove_district.py index 586a827943..9176aa9ac4 100644 --- a/antarest/study/storage/variantstudy/model/command/remove_district.py +++ b/antarest/study/storage/variantstudy/model/command/remove_district.py @@ -10,12 +10,13 @@ # # This file is part of the Antares project. -from typing import Any, Dict, List, Tuple +from typing import Any, Dict, List, Optional, Tuple from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfig from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy from antarest.study.storage.variantstudy.model.command.common import CommandName, CommandOutput from antarest.study.storage.variantstudy.model.command.icommand import MATCH_SIGNATURE_SEPARATOR, ICommand +from antarest.study.storage.variantstudy.model.command_listener.command_listener import ICommandListener from antarest.study.storage.variantstudy.model.model import CommandDTO @@ -39,7 +40,7 @@ def _apply_config(self, study_data: FileStudyTreeConfig) -> Tuple[CommandOutput, del study_data.sets[self.id] return CommandOutput(status=True, message=self.id), dict() - def _apply(self, study_data: FileStudy) -> CommandOutput: + def _apply(self, study_data: FileStudy, listener: Optional[ICommandListener] = None) -> CommandOutput: output, _ = self._apply_config(study_data.config) study_data.tree.delete(["input", "areas", "sets", self.id]) return output diff --git a/antarest/study/storage/variantstudy/model/command/remove_link.py b/antarest/study/storage/variantstudy/model/command/remove_link.py index eeb7ad81f7..154fd10ed1 100644 --- a/antarest/study/storage/variantstudy/model/command/remove_link.py +++ b/antarest/study/storage/variantstudy/model/command/remove_link.py @@ -19,6 +19,7 @@ from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy from antarest.study.storage.variantstudy.model.command.common import CommandName, CommandOutput from antarest.study.storage.variantstudy.model.command.icommand import MATCH_SIGNATURE_SEPARATOR, ICommand, OutputTuple +from antarest.study.storage.variantstudy.model.command_listener.command_listener import ICommandListener from antarest.study.storage.variantstudy.model.model import CommandDTO @@ -124,7 +125,7 @@ def _remove_link_from_scenario_builder(self, study_data: FileStudy) -> None: study_data.tree.save(rulesets, ["settings", "scenariobuilder"]) - def _apply(self, study_data: FileStudy) -> CommandOutput: + def _apply(self, study_data: FileStudy, listener: t.Optional[ICommandListener] = None) -> CommandOutput: """ Update the configuration and the study data by removing the link between the source and target areas. diff --git a/antarest/study/storage/variantstudy/model/command/remove_renewables_cluster.py b/antarest/study/storage/variantstudy/model/command/remove_renewables_cluster.py index 834dc1043b..b80eb83219 100644 --- a/antarest/study/storage/variantstudy/model/command/remove_renewables_cluster.py +++ b/antarest/study/storage/variantstudy/model/command/remove_renewables_cluster.py @@ -16,6 +16,7 @@ from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy from antarest.study.storage.variantstudy.model.command.common import CommandName, CommandOutput from antarest.study.storage.variantstudy.model.command.icommand import MATCH_SIGNATURE_SEPARATOR, ICommand +from antarest.study.storage.variantstudy.model.command_listener.command_listener import ICommandListener from antarest.study.storage.variantstudy.model.model import CommandDTO @@ -92,7 +93,7 @@ def _remove_cluster_from_scenario_builder(self, study_data: FileStudy) -> None: study_data.tree.save(rulesets, ["settings", "scenariobuilder"]) - def _apply(self, study_data: FileStudy) -> CommandOutput: + def _apply(self, study_data: FileStudy, listener: t.Optional[ICommandListener] = None) -> CommandOutput: """ Applies the study data to update renewable cluster configurations and saves the changes: remove corresponding the configuration and remove the attached time series. diff --git a/antarest/study/storage/variantstudy/model/command/remove_st_storage.py b/antarest/study/storage/variantstudy/model/command/remove_st_storage.py index 9f60befabe..15e6e1c1ae 100644 --- a/antarest/study/storage/variantstudy/model/command/remove_st_storage.py +++ b/antarest/study/storage/variantstudy/model/command/remove_st_storage.py @@ -19,6 +19,7 @@ from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy from antarest.study.storage.variantstudy.model.command.common import CommandName, CommandOutput from antarest.study.storage.variantstudy.model.command.icommand import MATCH_SIGNATURE_SEPARATOR, ICommand +from antarest.study.storage.variantstudy.model.command_listener.command_listener import ICommandListener from antarest.study.storage.variantstudy.model.model import CommandDTO # minimum required version. @@ -99,7 +100,7 @@ def _apply_config(self, study_data: FileStudyTreeConfig) -> t.Tuple[CommandOutpu {}, ) - def _apply(self, study_data: FileStudy) -> CommandOutput: + def _apply(self, study_data: FileStudy, listener: t.Optional[ICommandListener] = None) -> CommandOutput: """ Applies the study data to update storage configurations and saves the changes: remove the storage from the configuration and remove the attached time series. diff --git a/antarest/study/storage/variantstudy/model/command/replace_matrix.py b/antarest/study/storage/variantstudy/model/command/replace_matrix.py index 8a26f12f28..d74333cb2e 100644 --- a/antarest/study/storage/variantstudy/model/command/replace_matrix.py +++ b/antarest/study/storage/variantstudy/model/command/replace_matrix.py @@ -24,6 +24,7 @@ from antarest.study.storage.variantstudy.business.utils import AliasDecoder, strip_matrix_protocol, validate_matrix from antarest.study.storage.variantstudy.model.command.common import CommandName, CommandOutput from antarest.study.storage.variantstudy.model.command.icommand import MATCH_SIGNATURE_SEPARATOR, ICommand +from antarest.study.storage.variantstudy.model.command_listener.command_listener import ICommandListener from antarest.study.storage.variantstudy.model.model import CommandDTO @@ -57,7 +58,7 @@ def _apply_config(self, study_data: FileStudyTreeConfig) -> t.Tuple[CommandOutpu {}, ) - def _apply(self, study_data: FileStudy) -> CommandOutput: + def _apply(self, study_data: FileStudy, listener: t.Optional[ICommandListener] = None) -> CommandOutput: if self.target[0] == "@": self.target = AliasDecoder.decode(self.target, study_data) diff --git a/antarest/study/storage/variantstudy/model/command/update_binding_constraint.py b/antarest/study/storage/variantstudy/model/command/update_binding_constraint.py index 423c431d38..d9b1620c2a 100644 --- a/antarest/study/storage/variantstudy/model/command/update_binding_constraint.py +++ b/antarest/study/storage/variantstudy/model/command/update_binding_constraint.py @@ -30,6 +30,7 @@ create_binding_constraint_config, ) from antarest.study.storage.variantstudy.model.command.icommand import MATCH_SIGNATURE_SEPARATOR, ICommand +from antarest.study.storage.variantstudy.model.command_listener.command_listener import ICommandListener from antarest.study.storage.variantstudy.model.model import CommandDTO @@ -150,7 +151,7 @@ def _find_binding_config(self, binding_constraints: t.Mapping[str, JSON]) -> t.O return str(index), binding_config return None - def _apply(self, study_data: FileStudy) -> CommandOutput: + def _apply(self, study_data: FileStudy, listener: t.Optional[ICommandListener] = None) -> CommandOutput: binding_constraints = study_data.tree.get(["input", "bindingconstraints", "bindingconstraints"]) # When all BC of a given group are removed, the group should be removed from the scenario builder diff --git a/antarest/study/storage/variantstudy/model/command/update_comments.py b/antarest/study/storage/variantstudy/model/command/update_comments.py index 5a3d57a670..7c77c920e8 100644 --- a/antarest/study/storage/variantstudy/model/command/update_comments.py +++ b/antarest/study/storage/variantstudy/model/command/update_comments.py @@ -10,13 +10,14 @@ # # This file is part of the Antares project. -from typing import Any, Dict, List, Tuple +from typing import Any, Dict, List, Optional, Tuple from antarest.core.model import JSON from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfig from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy from antarest.study.storage.variantstudy.model.command.common import CommandName, CommandOutput from antarest.study.storage.variantstudy.model.command.icommand import ICommand +from antarest.study.storage.variantstudy.model.command_listener.command_listener import ICommandListener from antarest.study.storage.variantstudy.model.model import CommandDTO @@ -45,7 +46,7 @@ def _apply_config(self, study_data: FileStudyTreeConfig) -> Tuple[CommandOutput, dict(), ) - def _apply(self, study_data: FileStudy) -> CommandOutput: + def _apply(self, study_data: FileStudy, listener: Optional[ICommandListener] = None) -> CommandOutput: replace_comment_data: JSON = {"settings": {"comments": self.comments.encode("utf-8")}} study_data.tree.save(replace_comment_data) diff --git a/antarest/study/storage/variantstudy/model/command/update_config.py b/antarest/study/storage/variantstudy/model/command/update_config.py index 067b0ecba1..538d5c5923 100644 --- a/antarest/study/storage/variantstudy/model/command/update_config.py +++ b/antarest/study/storage/variantstudy/model/command/update_config.py @@ -20,6 +20,7 @@ from antarest.study.storage.rawstudy.model.filesystem.ini_file_node import IniFileNode from antarest.study.storage.variantstudy.model.command.common import CommandName, CommandOutput from antarest.study.storage.variantstudy.model.command.icommand import MATCH_SIGNATURE_SEPARATOR, ICommand +from antarest.study.storage.variantstudy.model.command_listener.command_listener import ICommandListener from antarest.study.storage.variantstudy.model.model import CommandDTO _ENR_MODELLING_KEY = "settings/generaldata/other preferences/renewable-generation-modelling" @@ -63,7 +64,7 @@ def _apply_config(self, study_data: FileStudyTreeConfig) -> t.Tuple[CommandOutpu return CommandOutput(status=True, message="ok"), {} - def _apply(self, study_data: FileStudy) -> CommandOutput: + def _apply(self, study_data: FileStudy, listener: t.Optional[ICommandListener] = None) -> CommandOutput: url = self.target.split("/") tree_node = study_data.tree.get_node(url) if not isinstance(tree_node, IniFileNode): diff --git a/antarest/study/storage/variantstudy/model/command/update_district.py b/antarest/study/storage/variantstudy/model/command/update_district.py index e0d63dfafd..e5ceffb2d2 100644 --- a/antarest/study/storage/variantstudy/model/command/update_district.py +++ b/antarest/study/storage/variantstudy/model/command/update_district.py @@ -17,6 +17,7 @@ from antarest.study.storage.variantstudy.model.command.common import CommandName, CommandOutput from antarest.study.storage.variantstudy.model.command.create_district import DistrictBaseFilter from antarest.study.storage.variantstudy.model.command.icommand import MATCH_SIGNATURE_SEPARATOR, ICommand +from antarest.study.storage.variantstudy.model.command_listener.command_listener import ICommandListener from antarest.study.storage.variantstudy.model.model import CommandDTO @@ -66,7 +67,7 @@ def _apply_config(self, study_data: FileStudyTreeConfig) -> Tuple[CommandOutput, "item_key": item_key, } - def _apply(self, study_data: FileStudy) -> CommandOutput: + def _apply(self, study_data: FileStudy, listener: Optional[ICommandListener] = None) -> CommandOutput: output, data = self._apply_config(study_data.config) if not output.status: return output diff --git a/antarest/study/storage/variantstudy/model/command/update_playlist.py b/antarest/study/storage/variantstudy/model/command/update_playlist.py index 52f6f70c5c..5dbb63a2a6 100644 --- a/antarest/study/storage/variantstudy/model/command/update_playlist.py +++ b/antarest/study/storage/variantstudy/model/command/update_playlist.py @@ -17,6 +17,7 @@ from antarest.study.storage.rawstudy.model.helpers import FileStudyHelpers from antarest.study.storage.variantstudy.model.command.common import CommandName, CommandOutput from antarest.study.storage.variantstudy.model.command.icommand import ICommand +from antarest.study.storage.variantstudy.model.command_listener.command_listener import ICommandListener from antarest.study.storage.variantstudy.model.model import CommandDTO @@ -39,7 +40,7 @@ class UpdatePlaylist(ICommand): weights: Optional[Dict[int, float]] = None reverse: bool = False - def _apply(self, study_data: FileStudy) -> CommandOutput: + def _apply(self, study_data: FileStudy, listener: Optional[ICommandListener] = None) -> CommandOutput: FileStudyHelpers.set_playlist( study_data, self.items or [], diff --git a/antarest/study/storage/variantstudy/model/command/update_raw_file.py b/antarest/study/storage/variantstudy/model/command/update_raw_file.py index 1a3414f90b..5b6ed99296 100644 --- a/antarest/study/storage/variantstudy/model/command/update_raw_file.py +++ b/antarest/study/storage/variantstudy/model/command/update_raw_file.py @@ -11,13 +11,14 @@ # This file is part of the Antares project. import base64 -from typing import Any, Dict, List, Tuple +from typing import Any, Dict, List, Optional, Tuple from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfig from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy from antarest.study.storage.rawstudy.model.filesystem.raw_file_node import RawFileNode from antarest.study.storage.variantstudy.model.command.common import CommandName, CommandOutput from antarest.study.storage.variantstudy.model.command.icommand import MATCH_SIGNATURE_SEPARATOR, ICommand +from antarest.study.storage.variantstudy.model.command_listener.command_listener import ICommandListener from antarest.study.storage.variantstudy.model.model import CommandDTO @@ -50,7 +51,7 @@ def __repr__(self) -> str: def _apply_config(self, study_data: FileStudyTreeConfig) -> Tuple[CommandOutput, Dict[str, Any]]: return CommandOutput(status=True, message="ok"), {} - def _apply(self, study_data: FileStudy) -> CommandOutput: + def _apply(self, study_data: FileStudy, listener: Optional[ICommandListener] = None) -> CommandOutput: url = self.target.split("/") tree_node = study_data.tree.get_node(url) if not isinstance(tree_node, RawFileNode): diff --git a/antarest/study/storage/variantstudy/model/command/update_scenario_builder.py b/antarest/study/storage/variantstudy/model/command/update_scenario_builder.py index 86a127f776..c660dc226b 100644 --- a/antarest/study/storage/variantstudy/model/command/update_scenario_builder.py +++ b/antarest/study/storage/variantstudy/model/command/update_scenario_builder.py @@ -19,6 +19,7 @@ from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy from antarest.study.storage.variantstudy.model.command.common import CommandName, CommandOutput from antarest.study.storage.variantstudy.model.command.icommand import ICommand +from antarest.study.storage.variantstudy.model.command_listener.command_listener import ICommandListener from antarest.study.storage.variantstudy.model.model import CommandDTO @@ -53,7 +54,7 @@ class UpdateScenarioBuilder(ICommand): data: t.Union[t.Dict[str, t.Any], t.Mapping[str, t.Any], t.MutableMapping[str, t.Any]] - def _apply(self, study_data: FileStudy) -> CommandOutput: + def _apply(self, study_data: FileStudy, listener: t.Optional[ICommandListener] = None) -> CommandOutput: """ Apply the command to the study data. diff --git a/antarest/study/storage/variantstudy/model/command_listener/__init__.py b/antarest/study/storage/variantstudy/model/command_listener/__init__.py new file mode 100644 index 0000000000..058c6b221a --- /dev/null +++ b/antarest/study/storage/variantstudy/model/command_listener/__init__.py @@ -0,0 +1,11 @@ +# Copyright (c) 2024, RTE (https://www.rte-france.com) +# +# See AUTHORS.txt +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +# This file is part of the Antares project. diff --git a/antarest/study/storage/variantstudy/model/command_listener/command_listener.py b/antarest/study/storage/variantstudy/model/command_listener/command_listener.py new file mode 100644 index 0000000000..c2c4da8f4e --- /dev/null +++ b/antarest/study/storage/variantstudy/model/command_listener/command_listener.py @@ -0,0 +1,26 @@ +# Copyright (c) 2024, RTE (https://www.rte-france.com) +# +# See AUTHORS.txt +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +# This file is part of the Antares project. + +from abc import ABC, abstractmethod + + +class ICommandListener(ABC): + """ + Interface for all listeners that can be given inside the `apply` method of a command. + """ + + @abstractmethod + def notify_progress(self, progress: int) -> None: + """ + Given a command progression, notifies the information. + """ + raise NotImplementedError() diff --git a/antarest/study/storage/variantstudy/snapshot_generator.py b/antarest/study/storage/variantstudy/snapshot_generator.py index 086c6d3952..afde1004eb 100644 --- a/antarest/study/storage/variantstudy/snapshot_generator.py +++ b/antarest/study/storage/variantstudy/snapshot_generator.py @@ -23,7 +23,7 @@ from antarest.core.interfaces.cache import CacheConstants, ICache from antarest.core.jwt import JWTUser from antarest.core.model import StudyPermissionType -from antarest.core.tasks.service import TaskUpdateNotifier, noop_notifier +from antarest.core.tasks.service import ITaskNotifier, NoopNotifier from antarest.study.model import RawStudy, StudyAdditionalData from antarest.study.storage.patch_service import PatchService from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfigDTO @@ -31,6 +31,7 @@ from antarest.study.storage.rawstudy.raw_study_service import RawStudyService from antarest.study.storage.utils import assert_permission_on_studies, export_study_flat from antarest.study.storage.variantstudy.command_factory import CommandFactory +from antarest.study.storage.variantstudy.model.command_listener.command_listener import ICommandListener from antarest.study.storage.variantstudy.model.dbmodel import CommandBlock, VariantStudy, VariantStudySnapshot from antarest.study.storage.variantstudy.model.model import GenerationResultInfoDTO from antarest.study.storage.variantstudy.repository import VariantStudyRepository @@ -70,7 +71,8 @@ def generate_snapshot( *, denormalize: bool = True, from_scratch: bool = False, - notifier: TaskUpdateNotifier = noop_notifier, + notifier: ITaskNotifier = NoopNotifier(), + listener: t.Optional[ICommandListener] = None, ) -> GenerationResultInfoDTO: # ATTENTION: since we are making changes to disk, a file lock is needed. # The locking is currently done in the `VariantStudyService.generate_task` function @@ -100,7 +102,7 @@ def generate_snapshot( self._export_ref_study(snapshot_dir, ref_study) logger.info(f"Applying commands to the reference study '{ref_study.id}'...") - results = self._apply_commands(snapshot_dir, variant_study, cmd_blocks) + results = self._apply_commands(snapshot_dir, variant_study, cmd_blocks, listener) # The snapshot is generated, we also need to de-normalize the matrices. file_study = self.study_factory.create_from_fs( @@ -133,7 +135,7 @@ def generate_snapshot( else: try: - notifier(results.model_dump_json()) + notifier.notify_message(results.model_dump_json()) except Exception as exc: # This exception is ignored, because it is not critical. logger.warning(f"Error while sending notification: {exc}", exc_info=True) @@ -174,6 +176,7 @@ def _apply_commands( snapshot_dir: Path, variant_study: VariantStudy, cmd_blocks: t.Sequence[CommandBlock], + listener: t.Optional[ICommandListener] = None, ) -> GenerationResultInfoDTO: commands = [self.command_factory.to_command(cb.to_dto()) for cb in cmd_blocks] generator = VariantCommandGenerator(self.study_factory) @@ -183,6 +186,7 @@ def _apply_commands( variant_study, delete_on_failure=False, # Not needed, because we are using a temporary directory notifier=None, + listener=listener, ) if not results.success: message = f"Failed to generate variant study {variant_study.id}" diff --git a/antarest/study/storage/variantstudy/variant_command_generator.py b/antarest/study/storage/variantstudy/variant_command_generator.py index de4bd60c0f..13e93a561f 100644 --- a/antarest/study/storage/variantstudy/variant_command_generator.py +++ b/antarest/study/storage/variantstudy/variant_command_generator.py @@ -14,7 +14,7 @@ import shutil import uuid from pathlib import Path -from typing import Callable, List, Optional, Tuple, Union, cast +from typing import Any, Callable, List, Optional, Tuple, Union, cast from antarest.core.utils.utils import StopWatch from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfig @@ -22,12 +22,13 @@ from antarest.study.storage.utils import update_antares_info from antarest.study.storage.variantstudy.model.command.common import CommandOutput from antarest.study.storage.variantstudy.model.command.icommand import ICommand +from antarest.study.storage.variantstudy.model.command_listener.command_listener import ICommandListener from antarest.study.storage.variantstudy.model.dbmodel import VariantStudy from antarest.study.storage.variantstudy.model.model import GenerationResultInfoDTO, NewDetailsDTO logger = logging.getLogger(__name__) -APPLY_CALLBACK = Callable[[ICommand, Union[FileStudyTreeConfig, FileStudy]], CommandOutput] +APPLY_CALLBACK = Callable[[ICommand, Union[FileStudyTreeConfig, FileStudy], Optional[ICommandListener]], CommandOutput] class CmdNotifier: @@ -51,6 +52,7 @@ def _generate( applier: APPLY_CALLBACK, metadata: Optional[VariantStudy] = None, notifier: Optional[Callable[[int, bool, str], None]] = None, + listener: Optional[ICommandListener] = None, ) -> GenerationResultInfoDTO: stopwatch = StopWatch() # Apply commands @@ -69,7 +71,7 @@ def _generate( # Store all the outputs for index, cmd in enumerate(all_commands, 1): try: - output = applier(cmd, data) + output = applier(cmd, data, listener) except Exception as e: # Unhandled exception output = CommandOutput( @@ -116,6 +118,7 @@ def generate( metadata: Optional[VariantStudy] = None, delete_on_failure: bool = True, notifier: Optional[Callable[[int, bool, str], None]] = None, + listener: Optional[ICommandListener] = None, ) -> GenerationResultInfoDTO: # Build file study logger.info("Building study tree") @@ -126,7 +129,7 @@ def generate( results = VariantCommandGenerator._generate( commands, study, - lambda command, data: command.apply(cast(FileStudy, data)), + lambda command, data, listener: command.apply(cast(FileStudy, data), listener), metadata, notifier, ) @@ -146,7 +149,7 @@ def generate_config( results = VariantCommandGenerator._generate( commands, config, - lambda command, data: command.apply_config(cast(FileStudyTreeConfig, data)), + lambda command, data, listener: command.apply_config(cast(FileStudyTreeConfig, data)), metadata, notifier, ) diff --git a/antarest/study/storage/variantstudy/variant_study_service.py b/antarest/study/storage/variantstudy/variant_study_service.py index 72bd1804c7..df5fde4456 100644 --- a/antarest/study/storage/variantstudy/variant_study_service.py +++ b/antarest/study/storage/variantstudy/variant_study_service.py @@ -45,7 +45,7 @@ from antarest.core.requests import RequestParameters, UserHasNotPermissionError from antarest.core.serialization import to_json_string from antarest.core.tasks.model import CustomTaskEventMessages, TaskDTO, TaskResult, TaskType -from antarest.core.tasks.service import DEFAULT_AWAIT_MAX_TIMEOUT, ITaskService, TaskUpdateNotifier, noop_notifier +from antarest.core.tasks.service import DEFAULT_AWAIT_MAX_TIMEOUT, ITaskNotifier, ITaskService, NoopNotifier from antarest.core.utils.fastapi_sqlalchemy import db from antarest.core.utils.utils import assert_this, suppress_exception from antarest.matrixstore.service import MatrixService @@ -60,6 +60,7 @@ from antarest.study.storage.variantstudy.business.utils import transform_command_to_dto from antarest.study.storage.variantstudy.command_factory import CommandFactory from antarest.study.storage.variantstudy.model.command.icommand import ICommand +from antarest.study.storage.variantstudy.model.command_listener.command_listener import ICommandListener from antarest.study.storage.variantstudy.model.dbmodel import CommandBlock, VariantStudy from antarest.study.storage.variantstudy.model.model import ( CommandDTO, @@ -587,6 +588,7 @@ def generate_task( metadata: VariantStudy, denormalize: bool = False, from_scratch: bool = False, + listener: t.Optional[ICommandListener] = None, ) -> str: study_id = metadata.id with FileLock(str(self.config.storage.tmp_dir / f"study-generation-{study_id}.lock")): @@ -611,7 +613,7 @@ def generate_task( # db context, so we need to fetch the id attribute before study_id = metadata.id - def callback(notifier: TaskUpdateNotifier) -> TaskResult: + def callback(notifier: ITaskNotifier) -> TaskResult: generator = SnapshotGenerator( cache=self.cache, raw_study_service=self.raw_study_service, @@ -626,6 +628,7 @@ def callback(notifier: TaskUpdateNotifier) -> TaskResult: denormalize=denormalize, from_scratch=from_scratch, notifier=notifier, + listener=listener, ) return TaskResult( success=generate_result.success, @@ -710,7 +713,7 @@ def _generate_study_config( def _get_commands_and_notifier( self, variant_study: VariantStudy, - notifier: TaskUpdateNotifier, + notifier: ITaskNotifier, from_index: int = 0, ) -> t.Tuple[t.List[t.List[ICommand]], t.Callable[[int, bool, str], None]]: # Generate @@ -724,7 +727,7 @@ def notify(command_index: int, command_result: bool, command_message: str) -> No success=command_result, message=command_message, ) - notifier(command_result_obj.model_dump_json()) + notifier.notify_message(command_result_obj.model_dump_json()) self.event_bus.push( Event( type=EventType.STUDY_VARIANT_GENERATION_COMMAND_RESULT, @@ -753,7 +756,7 @@ def _generate_config( self, variant_study: VariantStudy, config: FileStudyTreeConfig, - notifier: TaskUpdateNotifier = noop_notifier, + notifier: ITaskNotifier = NoopNotifier(), ) -> t.Tuple[GenerationResultInfoDTO, FileStudyTreeConfig]: commands, notify = self._get_commands_and_notifier(variant_study=variant_study, notifier=notifier) return self.generator.generate_config(commands, config, variant_study, notifier=notify) @@ -762,7 +765,7 @@ def _generate_snapshot( self, variant_study: VariantStudy, dst_path: Path, - notifier: TaskUpdateNotifier = noop_notifier, + notifier: ITaskNotifier = NoopNotifier(), from_command_index: int = 0, ) -> GenerationResultInfoDTO: commands, notify = self._get_commands_and_notifier( @@ -1112,12 +1115,12 @@ def _clear_all_snapshots(self) -> None: if variant.last_access and variant.last_access < datetime.utcnow() - self._retention_time: self._variant_study_service.clear_snapshot(variant) - def run_task(self, notifier: TaskUpdateNotifier) -> TaskResult: + def run_task(self, notifier: ITaskNotifier) -> TaskResult: msg = f"Start cleaning all snapshots updated or accessed {humanize.precisedelta(self._retention_time)} ago." - notifier(msg) + notifier.notify_message(msg) self._clear_all_snapshots() msg = "All selected snapshots were successfully cleared." - notifier(msg) + notifier.notify_message(msg) return TaskResult(success=True, message=msg) __call__ = run_task diff --git a/tests/conftest_services.py b/tests/conftest_services.py index 70abcd6007..aef3457e3b 100644 --- a/tests/conftest_services.py +++ b/tests/conftest_services.py @@ -29,7 +29,7 @@ from antarest.core.interfaces.eventbus import IEventBus from antarest.core.requests import RequestParameters from antarest.core.tasks.model import CustomTaskEventMessages, TaskDTO, TaskListFilter, TaskResult, TaskStatus, TaskType -from antarest.core.tasks.service import ITaskService, Task +from antarest.core.tasks.service import ITaskService, NoopNotifier, Task from antarest.core.utils.fastapi_sqlalchemy import DBSessionMiddleware from antarest.eventbus.business.local_eventbus import LocalEventBus from antarest.eventbus.service import EventBusService @@ -89,7 +89,7 @@ def add_task( custom_event_messages: t.Optional[CustomTaskEventMessages], request_params: RequestParameters, ) -> str: - self._task_result = action(lambda message: None) + self._task_result = action(NoopNotifier()) return str(uuid.uuid4()) def status_task( diff --git a/tests/core/test_tasks.py b/tests/core/test_tasks.py index 3ae45525c5..ba3f6de813 100644 --- a/tests/core/test_tasks.py +++ b/tests/core/test_tasks.py @@ -16,6 +16,8 @@ from pathlib import Path from unittest.mock import ANY, Mock +import numpy as np +import pandas as pd import pytest from fastapi import HTTPException from sqlalchemy import create_engine # type: ignore @@ -23,8 +25,8 @@ from sqlalchemy.orm import Session, sessionmaker # type: ignore from antarest.core.config import Config -from antarest.core.interfaces.eventbus import EventType, IEventBus -from antarest.core.jwt import JWTUser +from antarest.core.interfaces.eventbus import DummyEventBusService, EventType, IEventBus +from antarest.core.jwt import DEFAULT_ADMIN_USER, JWTUser from antarest.core.model import PermissionInfo, PublicMode from antarest.core.persistence import Base from antarest.core.requests import RequestParameters, UserHasNotPermissionError @@ -38,15 +40,22 @@ cancel_orphan_tasks, ) from antarest.core.tasks.repository import TaskJobRepository -from antarest.core.tasks.service import TaskJobService +from antarest.core.tasks.service import ITaskNotifier, TaskJobService from antarest.core.utils.fastapi_sqlalchemy import db from antarest.eventbus.business.local_eventbus import LocalEventBus from antarest.eventbus.service import EventBusService from antarest.login.model import User from antarest.service_creator import SESSION_ARGS from antarest.study.model import RawStudy +from antarest.study.repository import StudyMetadataRepository +from antarest.study.service import ThermalClusterTimeSeriesGeneratorTask +from antarest.study.storage.rawstudy.raw_study_service import RawStudyService +from antarest.study.storage.variantstudy.command_factory import CommandFactory +from antarest.study.storage.variantstudy.model.command_context import CommandContext +from antarest.study.storage.variantstudy.variant_study_service import VariantStudyService from antarest.worker.worker import AbstractWorker, WorkerTaskCommand from tests.helpers import with_db_context +from tests.storage.test_service import build_study_service @pytest.fixture(name="db_engine", autouse=True) @@ -128,7 +137,7 @@ def test_service(core_config: Config, event_bus: IEventBus, admin_user: JWTUser) # ================================================ # noinspection PyUnusedLocal - def action_fail(update_msg: t.Callable[[str], None]) -> TaskResult: + def action_fail(notifier: ITaskNotifier) -> TaskResult: raise Exception("this action failed") failed_id = service.add_task( @@ -155,9 +164,9 @@ def action_fail(update_msg: t.Callable[[str], None]) -> TaskResult: # Test Case: add a task that succeeds and wait for it # =================================================== - def action_ok(update_msg: t.Callable[[str], None]) -> TaskResult: - update_msg("start") - update_msg("end") + def action_ok(notifier: ITaskNotifier) -> TaskResult: + notifier.notify_message("start") + notifier.notify_message("end") return TaskResult(success=True, message="OK") ok_id = service.add_task( @@ -440,3 +449,151 @@ def test_get_progress(db_session: Session, admin_user: JWTUser, core_config: Con wrong_id = "foo_bar" with pytest.raises(HTTPException, match=f"Task {wrong_id} not found"): service.get_task_progress(wrong_id, RequestParameters(user)) + + +def test_ts_generation_task( + tmp_path: Path, + core_config: Config, + admin_user: JWTUser, + raw_study_service: RawStudyService, + db_session: Session, +) -> None: + # ======================= + # SET UP + # ======================= + + event_bus = DummyEventBusService() + + # Create a TaskJobService and add tasks + task_job_repo = TaskJobRepository(db_session) + + # Create a TaskJobService + task_job_service = TaskJobService(config=core_config, repository=task_job_repo, event_bus=event_bus) + + # Create a raw study + raw_study_path = tmp_path / "study" + + regular_user = User(id=99, name="regular") + db_session.add(regular_user) + db_session.commit() + + raw_study = RawStudy( + id="my_raw_study", + name="my_raw_study", + version="860", + author="John Smith", + created_at=datetime.datetime(2023, 7, 15, 16, 45), + updated_at=datetime.datetime(2023, 7, 19, 8, 15), + last_access=datetime.datetime.utcnow(), + public_mode=PublicMode.FULL, + owner=regular_user, + path=str(raw_study_path), + ) + study_metadata_repository = StudyMetadataRepository(Mock(), None) + db_session.add(raw_study) + db_session.commit() + + # Set up the Raw Study + raw_study_service.create(raw_study) + # Create an area + areas_path = raw_study_path / "input" / "areas" + areas_path.mkdir(parents=True, exist_ok=True) + (areas_path / "fr").mkdir(parents=True, exist_ok=True) + (areas_path / "list.txt").touch(exist_ok=True) + with open(areas_path / "list.txt", mode="w") as f: + f.writelines(["fr"]) + # Create 2 thermal clusters + thermal_path = raw_study_path / "input" / "thermal" + thermal_path.mkdir(parents=True, exist_ok=True) + fr_path = thermal_path / "clusters" / "fr" + fr_path.mkdir(parents=True, exist_ok=True) + (fr_path / "list.ini").touch(exist_ok=True) + content = """ + [th_1] +name = th_1 +nominalcapacity = 14.0 + +[th_2] +name = th_2 +nominalcapacity = 14.0 +""" + (fr_path / "list.ini").write_text(content) + # Create matrix files + for th_name in ["th_1", "th_2"]: + prepro_folder = thermal_path / "prepro" / "fr" / th_name + prepro_folder.mkdir(parents=True, exist_ok=True) + # Modulation + modulation_df = pd.DataFrame(data=np.ones((8760, 3))) + modulation_df.to_csv(prepro_folder / "modulation.txt", sep="\t", header=False, index=False) + (prepro_folder / "data.txt").touch() + # Data + data_df = pd.DataFrame(data=np.zeros((365, 6))) + data_df[0] = [1] * 365 + data_df[1] = [1] * 365 + data_df.to_csv(prepro_folder / "data.txt", sep="\t", header=False, index=False) + # Series + series_path = thermal_path / "series" / "fr" / th_name + series_path.mkdir(parents=True, exist_ok=True) + (series_path / "series.txt").touch() + + # Set up the mocks + variant_study_service = Mock(spec=VariantStudyService) + command_factory = Mock(spec=CommandFactory) + variant_study_service.command_factory = command_factory + command_factory.command_context = Mock(spec=CommandContext) + config = Mock(spec=Config) + + study_service = build_study_service( + raw_study_service, + study_metadata_repository, + config, + task_service=task_job_service, + event_bus=event_bus, + variant_study_service=variant_study_service, + ) + + # ======================= + # TEST CASE + # ======================= + + task = ThermalClusterTimeSeriesGeneratorTask( + raw_study.id, + repository=study_service.repository, + storage_service=study_service.storage_service, + event_bus=study_service.event_bus, + ) + + task_id = study_service.task_service.add_task( + task, + "test_generation", + task_type=TaskType.THERMAL_CLUSTER_SERIES_GENERATION, + ref_id=raw_study.id, + progress=0, + custom_event_messages=None, + request_params=RequestParameters(DEFAULT_ADMIN_USER), + ) + + # Await task + study_service.task_service.await_task(task_id, 2) + tasks = study_service.task_service.list_tasks(TaskListFilter(), RequestParameters(DEFAULT_ADMIN_USER)) + assert len(tasks) == 1 + task = tasks[0] + assert task.ref_id == raw_study.id + assert task.id == task_id + assert task.name == "test_generation" + assert task.status == TaskStatus.COMPLETED + assert task.progress == 100 + + # Check eventbus + events = event_bus.events + assert len(events) == 6 + assert events[0].type == EventType.TASK_ADDED + assert events[1].type == EventType.TASK_RUNNING + + assert events[2].type == EventType.TASK_PROGRESS + assert events[2].payload == {"task_id": task_id, "progress": 50} + assert events[3].type == EventType.TASK_PROGRESS + assert events[3].payload == {"task_id": task_id, "progress": 100} + + assert events[4].type == EventType.STUDY_EDITED + assert events[5].type == EventType.TASK_COMPLETED diff --git a/tests/storage/conftest.py b/tests/storage/conftest.py index bad7def6a6..589d023919 100644 --- a/tests/storage/conftest.py +++ b/tests/storage/conftest.py @@ -25,7 +25,7 @@ from antarest.core.model import JSON from antarest.core.requests import RequestParameters from antarest.core.tasks.model import CustomTaskEventMessages, TaskDTO, TaskListFilter, TaskStatus, TaskType -from antarest.core.tasks.service import ITaskService, Task +from antarest.core.tasks.service import ITaskService, NoopNotifier, Task @pytest.fixture @@ -296,7 +296,7 @@ def add_task( custom_event_messages: Optional[CustomTaskEventMessages], request_params: RequestParameters, ) -> str: - action(lambda message: None) + action(NoopNotifier()) return str(uuid.uuid4()) def status_task( diff --git a/tests/storage/test_service.py b/tests/storage/test_service.py index 6490a46096..d15e8f6d7a 100644 --- a/tests/storage/test_service.py +++ b/tests/storage/test_service.py @@ -28,7 +28,7 @@ from antarest.core.exceptions import StudyVariantUpgradeError, TaskAlreadyRunning from antarest.core.filetransfer.model import FileDownload, FileDownloadTaskDTO from antarest.core.interfaces.cache import ICache -from antarest.core.interfaces.eventbus import Event, EventType +from antarest.core.interfaces.eventbus import Event, EventType, IEventBus from antarest.core.jwt import DEFAULT_ADMIN_USER, JWTGroup, JWTUser from antarest.core.model import JSON, SUB_JSON, PermissionInfo, PublicMode, StudyPermissionType from antarest.core.requests import RequestParameters, UserHasNotPermissionError @@ -92,13 +92,14 @@ def build_study_service( cache_service: ICache = Mock(spec=ICache), variant_study_service: VariantStudyService = Mock(spec=VariantStudyService), task_service: ITaskService = Mock(spec=ITaskService), + event_bus: IEventBus = Mock(spec=IEventBus), ) -> StudyService: return StudyService( raw_study_service=raw_study_service, variant_study_service=variant_study_service, user_service=user_service, repository=repository, - event_bus=Mock(), + event_bus=event_bus, task_service=task_service, file_transfer_manager=Mock(), cache_service=cache_service, diff --git a/tests/study/storage/variantstudy/test_snapshot_generator.py b/tests/study/storage/variantstudy/test_snapshot_generator.py index 0f2d4775ef..5fcd7c5dbd 100644 --- a/tests/study/storage/variantstudy/test_snapshot_generator.py +++ b/tests/study/storage/variantstudy/test_snapshot_generator.py @@ -28,6 +28,7 @@ from antarest.core.jwt import JWTGroup, JWTUser from antarest.core.requests import RequestParameters from antarest.core.roles import RoleType +from antarest.core.tasks.service import ITaskNotifier from antarest.core.utils.fastapi_sqlalchemy import db from antarest.login.model import Group, Role, User from antarest.study.model import RawStudy, Study, StudyAdditionalData @@ -39,6 +40,8 @@ from tests.db_statement_recorder import DBStatementRecorder from tests.helpers import AnyUUID, with_db_context +logger = logging.getLogger(__name__) + def _create_variant( tmp_path: Path, @@ -682,7 +685,7 @@ def test_search_ref_study__deleted_last_command(self, tmp_path: Path) -> None: assert search_result.force_regenerate is True -class RegisterNotification: +class RegisterNotification(ITaskNotifier): """ Callable used to register notifications. """ @@ -690,9 +693,23 @@ class RegisterNotification: def __init__(self) -> None: self.notifications: t.MutableSequence[str] = [] - def __call__(self, notification: str) -> None: + def notify_message(self, notification: str) -> None: self.notifications.append(json.loads(notification)) + def notify_progress(self, progress: int) -> None: + return + + +class FailingNotifier(ITaskNotifier): + def __init__(self) -> None: + pass + + def notify_message(self, notification: str) -> None: + logger.warning("Something went wrong") + + def notify_progress(self, progress: int) -> None: + return + class TestSnapshotGenerator: """ @@ -1159,7 +1176,7 @@ def test_generate__notification_failure( repository=variant_study_service.repository, ) - notifier = Mock(side_effect=Exception("Something went wrong")) + notifier = FailingNotifier() with caplog.at_level(logging.WARNING): results = generator.generate_snapshot( From 2b6b6b1a82577684d0fd2517dbf9406324a27eb1 Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Wed, 11 Sep 2024 18:28:57 +0200 Subject: [PATCH 081/182] feat(ui): add `customColumns` prop to `Matrix` --- .../components/common/MatrixGrid/Matrix.tsx | 10 ++- .../src/components/common/MatrixGrid/types.ts | 14 ++++ .../components/common/MatrixGrid/useMatrix.ts | 12 ++-- .../src/components/common/MatrixGrid/utils.ts | 65 +++++++++++++++---- 4 files changed, 85 insertions(+), 16 deletions(-) diff --git a/webapp/src/components/common/MatrixGrid/Matrix.tsx b/webapp/src/components/common/MatrixGrid/Matrix.tsx index 128bf480cc..c7b6004417 100644 --- a/webapp/src/components/common/MatrixGrid/Matrix.tsx +++ b/webapp/src/components/common/MatrixGrid/Matrix.tsx @@ -29,6 +29,7 @@ interface MatrixProps { title?: string; enableTimeSeriesColumns?: boolean; enableAggregateColumns?: boolean; + customColumns?: string[]; } function Matrix({ @@ -36,6 +37,7 @@ function Matrix({ title = "global.timeSeries", enableTimeSeriesColumns = true, enableAggregateColumns = false, + customColumns, }: MatrixProps) { const { t } = useTranslation(); const { study } = useOutletContext<{ study: StudyMetadata }>(); @@ -57,7 +59,13 @@ function Matrix({ redo, canUndo, canRedo, - } = useMatrix(study.id, url, enableTimeSeriesColumns, enableAggregateColumns); + } = useMatrix( + study.id, + url, + enableTimeSeriesColumns, + enableAggregateColumns, + customColumns, + ); //////////////////////////////////////////////////////////////// // JSX diff --git a/webapp/src/components/common/MatrixGrid/types.ts b/webapp/src/components/common/MatrixGrid/types.ts index af94b98d97..016c0c28b9 100644 --- a/webapp/src/components/common/MatrixGrid/types.ts +++ b/webapp/src/components/common/MatrixGrid/types.ts @@ -46,6 +46,20 @@ export const Operations = { export type ColumnType = (typeof ColumnTypes)[keyof typeof ColumnTypes]; export type Operation = (typeof Operations)[keyof typeof Operations]; +export interface TimeSeriesColumnOptions { + count: number; + startIndex?: number; + prefix?: string; + width?: number; + editable?: boolean; + style?: BaseGridColumn["style"]; +} + +export interface CustomColumnOptions { + titles: string[]; + width?: number; +} + export interface EnhancedGridColumn extends BaseGridColumn { id: string; width?: number; diff --git a/webapp/src/components/common/MatrixGrid/useMatrix.ts b/webapp/src/components/common/MatrixGrid/useMatrix.ts index 3332bcfa6e..e5ef022676 100644 --- a/webapp/src/components/common/MatrixGrid/useMatrix.ts +++ b/webapp/src/components/common/MatrixGrid/useMatrix.ts @@ -30,7 +30,7 @@ import { GridUpdate, MatrixUpdateDTO, } from "./types"; -import { generateDateTime, generateTimeSeriesColumns } from "./utils"; +import { generateDataColumns, generateDateTime } from "./utils"; import useUndo from "use-undo"; import { GridCellKind } from "@glideapps/glide-data-grid"; import { importFile } from "../../../services/api/studies/raw"; @@ -45,6 +45,7 @@ export function useMatrix( url: string, enableTimeSeriesColumns: boolean, enableAggregateColumns: boolean, + customColumns?: string[], ) { const enqueueErrorSnackbar = useEnqueueErrorSnackbar(); const [columnCount, setColumnCount] = useState(0); @@ -97,9 +98,11 @@ export function useMatrix( }, ]; - const dataColumns = enableTimeSeriesColumns - ? generateTimeSeriesColumns({ count: columnCount }) - : []; + const dataColumns = generateDataColumns( + enableTimeSeriesColumns, + columnCount, + customColumns, + ); const aggregateColumns = enableAggregateColumns ? [ @@ -130,6 +133,7 @@ export function useMatrix( return [...baseColumns, ...dataColumns, ...aggregateColumns]; }, [ currentState.data, + customColumns, enableTimeSeriesColumns, columnCount, enableAggregateColumns, diff --git a/webapp/src/components/common/MatrixGrid/utils.ts b/webapp/src/components/common/MatrixGrid/utils.ts index ed3e1094ee..97e6720d6a 100644 --- a/webapp/src/components/common/MatrixGrid/utils.ts +++ b/webapp/src/components/common/MatrixGrid/utils.ts @@ -17,6 +17,8 @@ import { DateIncrementStrategy, EnhancedGridColumn, ColumnTypes, + TimeSeriesColumnOptions, + CustomColumnOptions, } from "./types"; import { getCurrentLanguage } from "../../../utils/i18nUtils"; import { Theme } from "@glideapps/glide-data-grid"; @@ -195,20 +197,61 @@ export function generateTimeSeriesColumns({ width = 50, editable = true, style = "normal", -}: { - count: number; - startIndex?: number; - prefix?: string; - width?: number; - editable?: boolean; - style?: "normal" | "highlight"; -}): EnhancedGridColumn[] { +}: TimeSeriesColumnOptions): EnhancedGridColumn[] { return Array.from({ length: count }, (_, index) => ({ id: `data${startIndex + index}`, title: `${prefix} ${startIndex + index}`, type: ColumnTypes.Number, - style: style, - width: width, - editable: editable, + style, + width, + editable, })); } + +/** + * Generates custom columns for a matrix grid. + * + * @param customColumns - An array of strings representing the custom column titles. + * @param customColumns.titles - The titles of the custom columns. + * @param customColumns.width - The width of each custom column. + * @returns An array of EnhancedGridColumn objects representing the generated custom columns. + */ +export function generateCustomColumns({ + titles, + width = 100, +}: CustomColumnOptions): EnhancedGridColumn[] { + return titles.map((title, index) => ({ + id: `custom${index + 1}`, + title, + type: ColumnTypes.Number, + style: "normal", + width, + editable: true, + })); +} + +/** + * Generates an array of data columns for a matrix grid. + * + * @param enableTimeSeriesColumns - A boolean indicating whether to enable time series columns. + * @param columnCount - The number of columns to generate. + * @param customColumns - An optional array of custom column titles. + * @returns An array of EnhancedGridColumn objects representing the generated data columns. + */ +export function generateDataColumns( + enableTimeSeriesColumns: boolean, + columnCount: number, + customColumns?: string[], +): EnhancedGridColumn[] { + // If custom columns are provided, use them + if (customColumns) { + return generateCustomColumns({ titles: customColumns }); + } + + // Else, generate time series columns if enabled + if (enableTimeSeriesColumns) { + return generateTimeSeriesColumns({ count: columnCount }); + } + + return []; +} From 5a33677354710013e46b37acf2fc2b4e9617f6d3 Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Thu, 12 Sep 2024 14:55:02 +0200 Subject: [PATCH 082/182] refactor(ui): update matrix views replacing `MatrixInput` with `Matrix` refactor(ui): update `MiscGen` matrix refactor(ui): update `Reserves` matrix refactor(ui): update `Solar` matrix refactor(ui): update `Wind` matrix refactor(ui): update `Thermal` matrices refactor(ui): update `Renewables` matrix refactor(ui): update `Storages` matrices --- .../explore/Modelization/Areas/MiscGen.tsx | 18 +- .../Modelization/Areas/Renewables/Form.tsx | 13 +- .../Modelization/Areas/Renewables/Matrix.tsx | 38 +-- .../explore/Modelization/Areas/Reserve.tsx | 22 +- .../explore/Modelization/Areas/Solar.tsx | 11 +- .../Modelization/Areas/Storages/Form.tsx | 7 +- .../Modelization/Areas/Storages/Matrix.tsx | 220 +++++++++--------- .../Modelization/Areas/Thermal/Matrix.tsx | 18 +- .../explore/Modelization/Areas/Wind.tsx | 11 +- .../components/common/MatrixGrid/Matrix.tsx | 3 +- .../src/components/common/MatrixGrid/types.ts | 2 +- .../components/common/MatrixGrid/useMatrix.ts | 6 +- .../src/components/common/MatrixGrid/utils.ts | 5 +- 13 files changed, 156 insertions(+), 218 deletions(-) diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx index 46451653a9..dde3f72734 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx @@ -15,15 +15,12 @@ import { useOutletContext } from "react-router"; import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../redux/selectors"; -import { MatrixStats, StudyMetadata } from "../../../../../../common/types"; -import MatrixInput from "../../../../../common/MatrixInput"; -import { Root } from "./style"; +import Matrix from "../../../../../common/MatrixGrid/Matrix"; function MiscGen() { - const { study } = useOutletContext<{ study: StudyMetadata }>(); const currentArea = useAppSelector(getCurrentAreaId); const url = `input/misc-gen/miscgen-${currentArea}`; - const colmunsNames = [ + const columns = [ "CHP", "Bio Mass", "Bio Gaz", @@ -38,16 +35,7 @@ function MiscGen() { // JSX //////////////////////////////////////////////////////////////// - return ( - - - - ); + return ; } export default MiscGen; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Form.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Form.tsx index 0d3b21cf17..a180b0fe05 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Form.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Form.tsx @@ -81,23 +81,16 @@ function Renewables() { config={{ defaultValues }} onSubmit={handleSubmit} enableUndoRedo + sx={{ height: "50%" }} > - + diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Matrix.tsx index 4de557f4e5..2948c33584 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Matrix.tsx @@ -25,43 +25,17 @@ import { import MatrixInput from "../../../../../../common/MatrixInput"; interface Props { - study: StudyMetadata; areaId: string; clusterId: Cluster["id"]; } -function Matrix({ study, areaId, clusterId }: Props) { - const [t] = useTranslation(); - const [value, setValue] = React.useState(0); - +function RenewablesMatrix({ areaId, clusterId }: Props) { return ( - - setValue(v)} sx={{ width: 1 }}> - - - - - - + ); } -export default Matrix; +export default RenewablesMatrix; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Reserve.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Reserve.tsx index 0aae3af44d..279ddebfde 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Reserve.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Reserve.tsx @@ -15,31 +15,23 @@ import { useOutletContext } from "react-router"; import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../redux/selectors"; -import { MatrixStats, StudyMetadata } from "../../../../../../common/types"; -import MatrixInput from "../../../../../common/MatrixInput"; -import { Root } from "./style"; +import Matrix from "../../../../../common/MatrixGrid/Matrix"; function Reserve() { - const { study } = useOutletContext<{ study: StudyMetadata }>(); const currentArea = useAppSelector(getCurrentAreaId); const url = `input/reserves/${currentArea}`; - const colmunsNames = [ + const columns = [ "Primary Res. (draft)", "Strategic Res. (draft)", "DSM", "Day Ahead", ]; - return ( - - - - ); + //////////////////////////////////////////////////////////////// + // JSX + //////////////////////////////////////////////////////////////// + + return ; } export default Reserve; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Solar.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Solar.tsx index 2aeddedd2d..029146ddc0 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Solar.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Solar.tsx @@ -15,12 +15,9 @@ import { useOutletContext } from "react-router"; import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../redux/selectors"; -import { MatrixStats, StudyMetadata } from "../../../../../../common/types"; -import MatrixInput from "../../../../../common/MatrixInput"; -import { Root } from "./style"; +import Matrix from "../../../../../common/MatrixGrid/Matrix"; function Solar() { - const { study } = useOutletContext<{ study: StudyMetadata }>(); const currentArea = useAppSelector(getCurrentAreaId); const url = `input/solar/series/solar_${currentArea}`; @@ -28,11 +25,7 @@ function Solar() { // JSX //////////////////////////////////////////////////////////////// - return ( - - - - ); + return ; } export default Solar; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Form.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Form.tsx index daa773bf9d..22899502df 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Form.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Form.tsx @@ -95,16 +95,13 @@ function Storages() { }} onSubmit={handleSubmit} enableUndoRedo + sx={{ height: "50%" }} > { + setActiveTab(newValue); + }; + + const MATRICES: MatrixItem[] = useMemo( + () => [ + { + titleKey: "modulation", + content: { + type: "split", + matrices: [ + { + url: `input/st-storage/series/${areaId}/${storageId}/pmax_injection`, + titleKey: "injectionModulation", + }, + { + url: `input/st-storage/series/${areaId}/${storageId}/pmax_withdrawal`, + titleKey: "withdrawalModulation", + }, + ], + }, + }, + { + titleKey: "ruleCurves", + content: { + type: "split", + matrices: [ + { + url: `input/st-storage/series/${areaId}/${storageId}/lower_rule_curve`, + titleKey: "lowerRuleCurve", + }, + { + url: `input/st-storage/series/${areaId}/${storageId}/upper_rule_curve`, + titleKey: "upperRuleCurve", + }, + ], + }, + }, + { + titleKey: "inflows", + content: { + type: "single", + matrix: { + url: `input/st-storage/series/${areaId}/${storageId}/inflows`, + titleKey: "inflows", + }, + }, + }, + ], + [areaId, storageId], + ); //////////////////////////////////////////////////////////////// // JSX //////////////////////////////////////////////////////////////// return ( - - setValue(v)}> - - - + + + {MATRICES.map(({ titleKey }) => ( + + ))} - - {R.cond([ - [ - () => value === 0, - () => ( - - } - right={ - + {MATRICES.map( + ({ titleKey, content }) => + activeTab === titleKey && ( + + {content.type === "split" ? ( + + {content.matrices.map(({ url, titleKey }) => ( + + + + ))} + + ) : ( + - } - sx={{ - mt: 1, - ".SplitLayoutView__Left": { - width: "50%", - }, - ".SplitLayoutView__Right": { - height: 1, - width: "50%", - }, - }} - /> - ), - ], - [ - () => value === 1, - () => ( - - } - right={ - - } - sx={{ - mt: 1, - ".SplitLayoutView__Left": { - width: "50%", - }, - ".SplitLayoutView__Right": { - height: 1, - width: "50%", - }, - }} - /> + )} + ), - ], - [ - R.T, - () => ( - - ), - ], - ])()} + )} ); } -export default Matrix; +export default StorageMatrices; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Matrix.tsx index e735f20402..60a15a02c6 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Matrix.tsx @@ -17,13 +17,9 @@ import Tabs from "@mui/material/Tabs"; import Tab from "@mui/material/Tab"; import Box from "@mui/material/Box"; import { useTranslation } from "react-i18next"; -import { - Cluster, - MatrixStats, - StudyMetadata, -} from "../../../../../../../common/types"; -import MatrixInput from "../../../../../../common/MatrixInput"; +import { Cluster, StudyMetadata } from "../../../../../../../common/types"; import { COMMON_MATRIX_COLS, TS_GEN_MATRIX_COLS } from "./utils"; +import Matrix from "../../../../../../common/MatrixGrid/Matrix"; interface Props { study: StudyMetadata; @@ -31,7 +27,7 @@ interface Props { clusterId: Cluster["id"]; } -function Matrix({ study, areaId, clusterId }: Props) { +function ThermalMatrices({ study, areaId, clusterId }: Props) { const [t] = useTranslation(); const [value, setValue] = useState("common"); const studyVersion = Number(study.version); @@ -113,13 +109,11 @@ function Matrix({ study, areaId, clusterId }: Props) { {filteredMatrices.map( ({ url, titleKey, columns }) => value === titleKey && ( - ), )} @@ -128,4 +122,4 @@ function Matrix({ study, areaId, clusterId }: Props) { ); } -export default Matrix; +export default ThermalMatrices; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Wind.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Wind.tsx index 39339779c4..af966811f2 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Wind.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Wind.tsx @@ -15,12 +15,9 @@ import { useOutletContext } from "react-router"; import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../redux/selectors"; -import { MatrixStats, StudyMetadata } from "../../../../../../common/types"; -import MatrixInput from "../../../../../common/MatrixInput"; -import { Root } from "./style"; +import Matrix from "../../../../../common/MatrixGrid/Matrix"; function Wind() { - const { study } = useOutletContext<{ study: StudyMetadata }>(); const currentArea = useAppSelector(getCurrentAreaId); const url = `input/wind/series/wind_${currentArea}`; @@ -28,11 +25,7 @@ function Wind() { // JSX //////////////////////////////////////////////////////////////// - return ( - - - - ); + return ; } export default Wind; diff --git a/webapp/src/components/common/MatrixGrid/Matrix.tsx b/webapp/src/components/common/MatrixGrid/Matrix.tsx index c7b6004417..88fb2499c7 100644 --- a/webapp/src/components/common/MatrixGrid/Matrix.tsx +++ b/webapp/src/components/common/MatrixGrid/Matrix.tsx @@ -29,7 +29,8 @@ interface MatrixProps { title?: string; enableTimeSeriesColumns?: boolean; enableAggregateColumns?: boolean; - customColumns?: string[]; + customColumns?: string[] | readonly string[]; + colWidth?: number; } function Matrix({ diff --git a/webapp/src/components/common/MatrixGrid/types.ts b/webapp/src/components/common/MatrixGrid/types.ts index 016c0c28b9..5168f1e819 100644 --- a/webapp/src/components/common/MatrixGrid/types.ts +++ b/webapp/src/components/common/MatrixGrid/types.ts @@ -56,7 +56,7 @@ export interface TimeSeriesColumnOptions { } export interface CustomColumnOptions { - titles: string[]; + titles: string[] | readonly string[]; width?: number; } diff --git a/webapp/src/components/common/MatrixGrid/useMatrix.ts b/webapp/src/components/common/MatrixGrid/useMatrix.ts index e5ef022676..083b75c629 100644 --- a/webapp/src/components/common/MatrixGrid/useMatrix.ts +++ b/webapp/src/components/common/MatrixGrid/useMatrix.ts @@ -45,7 +45,8 @@ export function useMatrix( url: string, enableTimeSeriesColumns: boolean, enableAggregateColumns: boolean, - customColumns?: string[], + customColumns?: string[] | readonly string[], + colWidth?: number, ) { const enqueueErrorSnackbar = useEnqueueErrorSnackbar(); const [columnCount, setColumnCount] = useState(0); @@ -133,9 +134,10 @@ export function useMatrix( return [...baseColumns, ...dataColumns, ...aggregateColumns]; }, [ currentState.data, - customColumns, enableTimeSeriesColumns, columnCount, + customColumns, + colWidth, enableAggregateColumns, ]); diff --git a/webapp/src/components/common/MatrixGrid/utils.ts b/webapp/src/components/common/MatrixGrid/utils.ts index 97e6720d6a..11c589a615 100644 --- a/webapp/src/components/common/MatrixGrid/utils.ts +++ b/webapp/src/components/common/MatrixGrid/utils.ts @@ -218,7 +218,7 @@ export function generateTimeSeriesColumns({ */ export function generateCustomColumns({ titles, - width = 100, + width, }: CustomColumnOptions): EnhancedGridColumn[] { return titles.map((title, index) => ({ id: `custom${index + 1}`, @@ -241,7 +241,8 @@ export function generateCustomColumns({ export function generateDataColumns( enableTimeSeriesColumns: boolean, columnCount: number, - customColumns?: string[], + customColumns?: string[] | readonly string[], + colWidth?: number, ): EnhancedGridColumn[] { // If custom columns are provided, use them if (customColumns) { From 9f26788042498531c387dffc8ebbb66595810b7a Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Wed, 11 Sep 2024 18:38:08 +0200 Subject: [PATCH 083/182] feat(ui): add `colWidth` prop to `Matrix` for custom columns width --- webapp/src/components/common/MatrixGrid/Matrix.tsx | 2 ++ webapp/src/components/common/MatrixGrid/useMatrix.ts | 1 + webapp/src/components/common/MatrixGrid/utils.ts | 5 +++-- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/webapp/src/components/common/MatrixGrid/Matrix.tsx b/webapp/src/components/common/MatrixGrid/Matrix.tsx index 88fb2499c7..79c8fac9cb 100644 --- a/webapp/src/components/common/MatrixGrid/Matrix.tsx +++ b/webapp/src/components/common/MatrixGrid/Matrix.tsx @@ -39,6 +39,7 @@ function Matrix({ enableTimeSeriesColumns = true, enableAggregateColumns = false, customColumns, + colWidth, }: MatrixProps) { const { t } = useTranslation(); const { study } = useOutletContext<{ study: StudyMetadata }>(); @@ -66,6 +67,7 @@ function Matrix({ enableTimeSeriesColumns, enableAggregateColumns, customColumns, + colWidth, ); //////////////////////////////////////////////////////////////// diff --git a/webapp/src/components/common/MatrixGrid/useMatrix.ts b/webapp/src/components/common/MatrixGrid/useMatrix.ts index 083b75c629..94931457c1 100644 --- a/webapp/src/components/common/MatrixGrid/useMatrix.ts +++ b/webapp/src/components/common/MatrixGrid/useMatrix.ts @@ -103,6 +103,7 @@ export function useMatrix( enableTimeSeriesColumns, columnCount, customColumns, + colWidth, ); const aggregateColumns = enableAggregateColumns diff --git a/webapp/src/components/common/MatrixGrid/utils.ts b/webapp/src/components/common/MatrixGrid/utils.ts index 11c589a615..731e5d2b21 100644 --- a/webapp/src/components/common/MatrixGrid/utils.ts +++ b/webapp/src/components/common/MatrixGrid/utils.ts @@ -236,17 +236,18 @@ export function generateCustomColumns({ * @param enableTimeSeriesColumns - A boolean indicating whether to enable time series columns. * @param columnCount - The number of columns to generate. * @param customColumns - An optional array of custom column titles. + * @param colWidth - The width of each column. * @returns An array of EnhancedGridColumn objects representing the generated data columns. */ export function generateDataColumns( enableTimeSeriesColumns: boolean, columnCount: number, - customColumns?: string[] | readonly string[], + customColumns?: string[], colWidth?: number, ): EnhancedGridColumn[] { // If custom columns are provided, use them if (customColumns) { - return generateCustomColumns({ titles: customColumns }); + return generateCustomColumns({ titles: customColumns, width: colWidth }); } // Else, generate time series columns if enabled From 1357bf8fba9609463f371d5df9974f663f5b9d8c Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Thu, 12 Sep 2024 18:07:32 +0200 Subject: [PATCH 084/182] feat(ui): add custom `rowHeaders` prop on `Matrix` --- .../src/components/common/MatrixGrid/Matrix.tsx | 6 ++++++ .../components/common/MatrixGrid/useMatrix.ts | 17 ++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/webapp/src/components/common/MatrixGrid/Matrix.tsx b/webapp/src/components/common/MatrixGrid/Matrix.tsx index 79c8fac9cb..0a08e668ac 100644 --- a/webapp/src/components/common/MatrixGrid/Matrix.tsx +++ b/webapp/src/components/common/MatrixGrid/Matrix.tsx @@ -29,8 +29,10 @@ interface MatrixProps { title?: string; enableTimeSeriesColumns?: boolean; enableAggregateColumns?: boolean; + enableRowHeaders?: boolean; customColumns?: string[] | readonly string[]; colWidth?: number; + rowHeaders?: string[]; } function Matrix({ @@ -38,8 +40,10 @@ function Matrix({ title = "global.timeSeries", enableTimeSeriesColumns = true, enableAggregateColumns = false, + enableRowHeaders = false, customColumns, colWidth, + rowHeaders, }: MatrixProps) { const { t } = useTranslation(); const { study } = useOutletContext<{ study: StudyMetadata }>(); @@ -66,6 +70,7 @@ function Matrix({ url, enableTimeSeriesColumns, enableAggregateColumns, + enableRowHeaders, customColumns, colWidth, ); @@ -109,6 +114,7 @@ function Matrix({ data={data} columns={columns} rows={data.length} + rowHeaders={rowHeaders} dateTime={dateTime} onCellEdit={handleCellEdit} onMultipleCellsEdit={handleMultipleCellsEdit} diff --git a/webapp/src/components/common/MatrixGrid/useMatrix.ts b/webapp/src/components/common/MatrixGrid/useMatrix.ts index 94931457c1..c626521fbe 100644 --- a/webapp/src/components/common/MatrixGrid/useMatrix.ts +++ b/webapp/src/components/common/MatrixGrid/useMatrix.ts @@ -45,6 +45,7 @@ export function useMatrix( url: string, enableTimeSeriesColumns: boolean, enableAggregateColumns: boolean, + enableRowHeaders?: boolean, customColumns?: string[] | readonly string[], colWidth?: number, ) { @@ -85,12 +86,12 @@ export function useMatrix( return index ? generateDateTime(index) : []; }, [index]); - const columns: EnhancedGridColumn[] = useMemo(() => { + const columns = useMemo(() => { if (!currentState.data) { return []; } - const baseColumns = [ + const baseColumns: EnhancedGridColumn[] = [ { id: "date", title: "Date", @@ -99,6 +100,15 @@ export function useMatrix( }, ]; + if (enableRowHeaders) { + baseColumns.unshift({ + id: "rowHeaders", + title: "", + type: ColumnTypes.Text, + editable: false, + }); + } + const dataColumns = generateDataColumns( enableTimeSeriesColumns, columnCount, @@ -106,7 +116,7 @@ export function useMatrix( colWidth, ); - const aggregateColumns = enableAggregateColumns + const aggregateColumns: EnhancedGridColumn[] = enableAggregateColumns ? [ { id: "min", @@ -135,6 +145,7 @@ export function useMatrix( return [...baseColumns, ...dataColumns, ...aggregateColumns]; }, [ currentState.data, + enableRowHeaders, enableTimeSeriesColumns, columnCount, customColumns, From 0f302bef44e72acd54f03a5af59344973f44351e Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Thu, 12 Sep 2024 18:35:53 +0200 Subject: [PATCH 085/182] feat(ui): add `enablePercentDisplay` prop on `Matrix` --- .../components/common/MatrixGrid/Matrix.tsx | 3 +++ .../components/common/MatrixGrid/index.tsx | 5 ++++- .../common/MatrixGrid/useGridCellContent.ts | 21 ++++++++++++++++++- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/webapp/src/components/common/MatrixGrid/Matrix.tsx b/webapp/src/components/common/MatrixGrid/Matrix.tsx index 0a08e668ac..06d00ec503 100644 --- a/webapp/src/components/common/MatrixGrid/Matrix.tsx +++ b/webapp/src/components/common/MatrixGrid/Matrix.tsx @@ -30,6 +30,7 @@ interface MatrixProps { enableTimeSeriesColumns?: boolean; enableAggregateColumns?: boolean; enableRowHeaders?: boolean; + enablePercentDisplay?: boolean; customColumns?: string[] | readonly string[]; colWidth?: number; rowHeaders?: string[]; @@ -41,6 +42,7 @@ function Matrix({ enableTimeSeriesColumns = true, enableAggregateColumns = false, enableRowHeaders = false, + enablePercentDisplay = false, customColumns, colWidth, rowHeaders, @@ -119,6 +121,7 @@ function Matrix({ onCellEdit={handleCellEdit} onMultipleCellsEdit={handleMultipleCellsEdit} readOnly={isSubmitting} + isPercentDisplayEnabled={enablePercentDisplay} /> {openImportDialog && ( void; onMultipleCellsEdit?: (updates: GridUpdate[]) => void; readOnly?: boolean; + isPercentDisplayEnabled?: boolean; } function MatrixGrid({ @@ -52,7 +53,8 @@ function MatrixGrid({ height = "100%", onCellEdit, onMultipleCellsEdit, - readOnly = false, + readOnly, + isPercentDisplayEnabled, }: MatrixGridProps) { const [selection, setSelection] = useState({ columns: CompactSelection.empty(), @@ -80,6 +82,7 @@ function MatrixGrid({ aggregates, rowHeaders, readOnly, + isPercentDisplayEnabled, ); //////////////////////////////////////////////////////////////// diff --git a/webapp/src/components/common/MatrixGrid/useGridCellContent.ts b/webapp/src/components/common/MatrixGrid/useGridCellContent.ts index ca610950a8..96ad5f0d0c 100644 --- a/webapp/src/components/common/MatrixGrid/useGridCellContent.ts +++ b/webapp/src/components/common/MatrixGrid/useGridCellContent.ts @@ -101,6 +101,7 @@ const cellContentGenerators: Record = { * @param aggregates - Optional object mapping column IDs to arrays of aggregated values. * @param rowHeaders - Optional array of row header labels. * @param readOnly - Whether the grid is read-only (default is false). + * @param isPercentDisplayEnabled - Whether to display number values as percentages (default is false). * @returns A function that accepts a grid item and returns the configured grid cell content. */ export function useGridCellContent( @@ -111,6 +112,7 @@ export function useGridCellContent( aggregates?: Record, rowHeaders?: string[], readOnly = false, + isPercentDisplayEnabled = false, ): (cell: Item) => GridCell { const columnMap = useMemo(() => { return new Map(columns.map((column, index) => [index, column])); @@ -176,9 +178,26 @@ export function useGridCellContent( }; } + // Display number values as percentages if enabled + if (isPercentDisplayEnabled && gridCell.kind === GridCellKind.Number) { + return { + ...gridCell, + displayData: `${gridCell.data}%`, + }; + } + return gridCell; }, - [columnMap, gridToData, data, dateTime, aggregates, rowHeaders, readOnly], + [ + columnMap, + gridToData, + data, + dateTime, + aggregates, + rowHeaders, + readOnly, + isPercentDisplayEnabled, + ], ); return getCellContent; From 4677c9b29290b93277a8b4ae572ddfc43b388156 Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Thu, 12 Sep 2024 18:42:32 +0200 Subject: [PATCH 086/182] feat(ui): add `enableReadOnly` prop on `Matrix` --- webapp/src/components/common/MatrixGrid/Matrix.tsx | 14 ++++++++------ webapp/src/components/common/MatrixGrid/index.tsx | 10 +++++----- .../common/MatrixGrid/useGridCellContent.ts | 8 ++++---- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/webapp/src/components/common/MatrixGrid/Matrix.tsx b/webapp/src/components/common/MatrixGrid/Matrix.tsx index 06d00ec503..9b69edc4e1 100644 --- a/webapp/src/components/common/MatrixGrid/Matrix.tsx +++ b/webapp/src/components/common/MatrixGrid/Matrix.tsx @@ -27,25 +27,27 @@ import EmptyView from "../page/SimpleContent"; interface MatrixProps { url: string; title?: string; + rowHeaders?: string[]; enableTimeSeriesColumns?: boolean; enableAggregateColumns?: boolean; enableRowHeaders?: boolean; enablePercentDisplay?: boolean; + enableReadOnly?: boolean; customColumns?: string[] | readonly string[]; colWidth?: number; - rowHeaders?: string[]; } function Matrix({ url, title = "global.timeSeries", + rowHeaders = [], enableTimeSeriesColumns = true, enableAggregateColumns = false, - enableRowHeaders = false, + enableRowHeaders = rowHeaders.length > 0, enablePercentDisplay = false, - customColumns, + enableReadOnly = false, + customColumns = [], colWidth, - rowHeaders, }: MatrixProps) { const { t } = useTranslation(); const { study } = useOutletContext<{ study: StudyMetadata }>(); @@ -86,7 +88,7 @@ function Matrix({ } if (error) { - return ; + return ; } if (!data || data.length === 0) { @@ -120,7 +122,7 @@ function Matrix({ dateTime={dateTime} onCellEdit={handleCellEdit} onMultipleCellsEdit={handleMultipleCellsEdit} - readOnly={isSubmitting} + isReaOnlyEnabled={isSubmitting || enableReadOnly} isPercentDisplayEnabled={enablePercentDisplay} /> {openImportDialog && ( diff --git a/webapp/src/components/common/MatrixGrid/index.tsx b/webapp/src/components/common/MatrixGrid/index.tsx index 6df71cdb1f..d9776cbf9a 100644 --- a/webapp/src/components/common/MatrixGrid/index.tsx +++ b/webapp/src/components/common/MatrixGrid/index.tsx @@ -38,7 +38,7 @@ export interface MatrixGridProps { height?: string; onCellEdit?: (update: GridUpdate) => void; onMultipleCellsEdit?: (updates: GridUpdate[]) => void; - readOnly?: boolean; + isReaOnlyEnabled?: boolean; isPercentDisplayEnabled?: boolean; } @@ -53,7 +53,7 @@ function MatrixGrid({ height = "100%", onCellEdit, onMultipleCellsEdit, - readOnly, + isReaOnlyEnabled, isPercentDisplayEnabled, }: MatrixGridProps) { const [selection, setSelection] = useState({ @@ -64,7 +64,7 @@ function MatrixGrid({ const { gridToData } = useColumnMapping(columns); const theme = useMemo(() => { - if (readOnly) { + if (isReaOnlyEnabled) { return { ...darkTheme, ...readOnlyDarkTheme, @@ -72,7 +72,7 @@ function MatrixGrid({ } return darkTheme; - }, [readOnly]); + }, [isReaOnlyEnabled]); const getCellContent = useGridCellContent( data, @@ -81,7 +81,7 @@ function MatrixGrid({ dateTime, aggregates, rowHeaders, - readOnly, + isReaOnlyEnabled, isPercentDisplayEnabled, ); diff --git a/webapp/src/components/common/MatrixGrid/useGridCellContent.ts b/webapp/src/components/common/MatrixGrid/useGridCellContent.ts index 96ad5f0d0c..67d0718212 100644 --- a/webapp/src/components/common/MatrixGrid/useGridCellContent.ts +++ b/webapp/src/components/common/MatrixGrid/useGridCellContent.ts @@ -100,7 +100,7 @@ const cellContentGenerators: Record = { * @param dateTime - Optional array of date-time strings for date columns. * @param aggregates - Optional object mapping column IDs to arrays of aggregated values. * @param rowHeaders - Optional array of row header labels. - * @param readOnly - Whether the grid is read-only (default is false). + * @param isReadOnlyEnabled - Whether the grid is read-only (default is false). * @param isPercentDisplayEnabled - Whether to display number values as percentages (default is false). * @returns A function that accepts a grid item and returns the configured grid cell content. */ @@ -111,7 +111,7 @@ export function useGridCellContent( dateTime?: string[], aggregates?: Record, rowHeaders?: string[], - readOnly = false, + isReadOnlyEnabled = false, isPercentDisplayEnabled = false, ): (cell: Item) => GridCell { const columnMap = useMemo(() => { @@ -171,7 +171,7 @@ export function useGridCellContent( ); // Prevent updates for read-only grids - if (readOnly) { + if (isReadOnlyEnabled) { return { ...gridCell, allowOverlay: false, @@ -195,7 +195,7 @@ export function useGridCellContent( dateTime, aggregates, rowHeaders, - readOnly, + isReadOnlyEnabled, isPercentDisplayEnabled, ], ); From 5254febbff9fe96d7cd62503cc0281eb6c528ee8 Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Fri, 13 Sep 2024 11:27:10 +0200 Subject: [PATCH 087/182] refactor(ui-hydro): update `HydroMatrix` to use glide data grid --- .../Areas/Hydro/Allocation/index.tsx | 4 +- .../Areas/Hydro/Correlation/index.tsx | 4 +- .../Modelization/Areas/Hydro/HydroMatrix.tsx | 25 ++-- .../explore/Modelization/Areas/Hydro/style.ts | 10 -- .../explore/Modelization/Areas/Hydro/utils.ts | 107 ++++++++---------- .../components/common/MatrixGrid/Matrix.tsx | 2 +- 6 files changed, 62 insertions(+), 90 deletions(-) diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/index.tsx index 8231ad0613..fc50dff4a8 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/index.tsx @@ -27,7 +27,7 @@ import { } from "./utils"; import { SubmitHandlerPlus } from "../../../../../../../common/Form/types"; import HydroMatrixDialog from "../HydroMatrixDialog"; -import { HydroMatrixType } from "../utils"; +import { HydroMatrix } from "../utils"; import { FormBox, FormPaper } from "../style"; import ViewMatrixButton from "../ViewMatrixButton"; @@ -84,7 +84,7 @@ function Allocation() { {matrixDialogOpen && ( setMatrixDialogOpen(false)} /> diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/index.tsx index d6dce25747..df566ba68d 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/index.tsx @@ -27,7 +27,7 @@ import { } from "./utils"; import Fields from "./Fields"; import HydroMatrixDialog from "../HydroMatrixDialog"; -import { HydroMatrixType } from "../utils"; +import { HydroMatrix } from "../utils"; import { FormBox, FormPaper } from "../style"; import ViewMatrixButton from "../ViewMatrixButton"; @@ -79,7 +79,7 @@ function Correlation() { {matrixDialogOpen && ( setMatrixDialogOpen(false)} /> diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx index ff6218de35..f557f39bf3 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx @@ -16,16 +16,14 @@ import { useOutletContext } from "react-router"; import { StudyMetadata } from "../../../../../../../common/types"; import useAppSelector from "../../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../../redux/selectors"; -import MatrixInput from "../../../../../../common/MatrixInput"; -import { Root } from "./style"; import { MATRICES, HydroMatrixType } from "./utils"; +import Matrix from "../../../../../../common/MatrixGrid/Matrix"; interface Props { type: HydroMatrixType; } function HydroMatrix({ type }: Props) { - const { study } = useOutletContext<{ study: StudyMetadata }>(); const areaId = useAppSelector(getCurrentAreaId); const hydroMatrix = MATRICES[type]; @@ -35,19 +33,14 @@ function HydroMatrix({ type }: Props) { //////////////////////////////////////////////////////////////// return ( - - - + ); } diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/style.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/style.ts index b707cafec5..b329679cc6 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/style.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/style.ts @@ -14,16 +14,6 @@ import { styled, Box, Paper } from "@mui/material"; -export const Root = styled(Box)(({ theme }) => ({ - width: "100%", - height: "100%", - padding: theme.spacing(2), - paddingTop: 0, - marginTop: theme.spacing(1), - display: "flex", - overflowY: "auto", -})); - export const FormBox = styled(Box)(({ theme }) => ({ width: "100%", height: "100%", diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts index 316745826e..5d95859a2d 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts @@ -22,34 +22,34 @@ import InflowStructure from "./InflowStructure"; // Enums //////////////////////////////////////////////////////////////// -export enum HydroMatrixType { - Dailypower, - EnergyCredits, - ReservoirLevels, - WaterValues, - HydroStorage, - RunOfRiver, - MinGen, - InflowPattern, - OverallMonthlyHydro, - Allocation, - Correlation, -} +export const HydroMatrix = { + Dailypower: "Dailypower", + EnergyCredits: "EnergyCredits", + ReservoirLevels: "ReservoirLevels", + WaterValues: "WaterValues", + HydroStorage: "HydroStorage", + RunOfRiver: "RunOfRiver", + MinGen: "MinGen", + InflowPattern: "InflowPattern", + OverallMonthlyHydro: "OverallMonthlyHydro", + Allocation: "Allocation", + Correlation: "Correlation", +} as const; //////////////////////////////////////////////////////////////// // Types //////////////////////////////////////////////////////////////// export type fetchMatrixFn = (studyId: string) => Promise; +export type HydroMatrixType = (typeof HydroMatrix)[keyof typeof HydroMatrix]; export interface HydroMatrixProps { title: string; url: string; - cols?: string[]; - rows?: string[]; - stats: MatrixStats; + columns?: string[]; + rowHeaders?: string[]; fetchFn?: fetchMatrixFn; - disableEdit?: boolean; + enableReadOnly?: boolean; enablePercentDisplay?: boolean; } @@ -57,7 +57,7 @@ type Matrices = Record; export interface HydroRoute { path: string; - type: number; + type: HydroMatrixType; isSplitView?: boolean; splitConfig?: { direction: SplitViewProps["direction"]; @@ -79,112 +79,104 @@ export interface AreaCoefficientItem { export const HYDRO_ROUTES: HydroRoute[] = [ { path: "inflow-structure", - type: HydroMatrixType.InflowPattern, + type: HydroMatrix.InflowPattern, isSplitView: true, splitConfig: { direction: "horizontal", - partnerType: HydroMatrixType.OverallMonthlyHydro, + partnerType: HydroMatrix.OverallMonthlyHydro, sizes: [50, 50], }, form: InflowStructure, }, { path: "dailypower&energy", - type: HydroMatrixType.Dailypower, + type: HydroMatrix.Dailypower, isSplitView: true, splitConfig: { direction: "vertical", - partnerType: HydroMatrixType.EnergyCredits, + partnerType: HydroMatrix.EnergyCredits, sizes: [30, 70], }, }, { path: "reservoirlevels", - type: HydroMatrixType.ReservoirLevels, + type: HydroMatrix.ReservoirLevels, }, { path: "watervalues", - type: HydroMatrixType.WaterValues, + type: HydroMatrix.WaterValues, }, { path: "hydrostorage", - type: HydroMatrixType.HydroStorage, + type: HydroMatrix.HydroStorage, }, { path: "ror", - type: HydroMatrixType.RunOfRiver, + type: HydroMatrix.RunOfRiver, }, { path: "mingen", - type: HydroMatrixType.MinGen, + type: HydroMatrix.MinGen, }, ]; export const MATRICES: Matrices = { - [HydroMatrixType.Dailypower]: { + [HydroMatrix.Dailypower]: { title: "Credit Modulations", url: "input/hydro/common/capacity/creditmodulations_{areaId}", - cols: generateColumns("%"), - rows: ["Generating Power", "Pumping Power"], - stats: MatrixStats.NOCOL, + columns: generateColumns("%"), + rowHeaders: ["Generating Power", "Pumping Power"], enablePercentDisplay: true, }, - [HydroMatrixType.EnergyCredits]: { + [HydroMatrix.EnergyCredits]: { title: "Standard Credits", url: "input/hydro/common/capacity/maxpower_{areaId}", - cols: [ + columns: [ "Generating Max Power (MW)", "Generating Max Energy (Hours at Pmax)", "Pumping Max Power (MW)", "Pumping Max Energy (Hours at Pmax)", ], - stats: MatrixStats.NOCOL, }, - [HydroMatrixType.ReservoirLevels]: { + [HydroMatrix.ReservoirLevels]: { title: "Reservoir Levels", url: "input/hydro/common/capacity/reservoir_{areaId}", - cols: ["Lev Low (%)", "Lev Avg (%)", "Lev High (%)"], - stats: MatrixStats.NOCOL, + columns: ["Lev Low (%)", "Lev Avg (%)", "Lev High (%)"], enablePercentDisplay: true, }, - [HydroMatrixType.WaterValues]: { + [HydroMatrix.WaterValues]: { title: "Water Values", url: "input/hydro/common/capacity/waterValues_{areaId}", - cols: generateColumns("%"), - stats: MatrixStats.NOCOL, + // columns: generateColumns("%"), // TODO this causes the data is undefined error }, - [HydroMatrixType.HydroStorage]: { + [HydroMatrix.HydroStorage]: { title: "Hydro Storage", url: "input/hydro/series/{areaId}/mod", - stats: MatrixStats.STATS, }, - [HydroMatrixType.RunOfRiver]: { + [HydroMatrix.RunOfRiver]: { title: "Run Of River", url: "input/hydro/series/{areaId}/ror", - stats: MatrixStats.STATS, }, - [HydroMatrixType.MinGen]: { + [HydroMatrix.MinGen]: { title: "Min Gen", url: "input/hydro/series/{areaId}/mingen", - stats: MatrixStats.STATS, }, - [HydroMatrixType.InflowPattern]: { + [HydroMatrix.InflowPattern]: { title: "Inflow Pattern", url: "input/hydro/common/capacity/inflowPattern_{areaId}", - cols: ["Inflow Pattern (X)"], - stats: MatrixStats.NOCOL, + columns: ["Inflow Pattern (X)"], }, - [HydroMatrixType.OverallMonthlyHydro]: { + [HydroMatrix.OverallMonthlyHydro]: { title: "Overall Monthly Hydro", url: "input/hydro/prepro/{areaId}/energy", - cols: [ + columns: [ "Expectation (MWh)", "Std Deviation (MWh)", "Min. (MWh)", "Max. (MWh)", "ROR Share", ], - rows: [ + rowHeaders: [ "January", "February", "March", @@ -198,22 +190,19 @@ export const MATRICES: Matrices = { "November", "December", ], - stats: MatrixStats.NOCOL, }, - [HydroMatrixType.Allocation]: { + [HydroMatrix.Allocation]: { title: "Allocation", url: "", - stats: MatrixStats.NOCOL, fetchFn: getAllocationMatrix, - disableEdit: true, + enableReadOnly: true, enablePercentDisplay: true, }, - [HydroMatrixType.Correlation]: { + [HydroMatrix.Correlation]: { title: "Correlation", url: "", - stats: MatrixStats.NOCOL, fetchFn: getCorrelationMatrix, - disableEdit: true, + enableReadOnly: true, enablePercentDisplay: true, }, }; diff --git a/webapp/src/components/common/MatrixGrid/Matrix.tsx b/webapp/src/components/common/MatrixGrid/Matrix.tsx index 9b69edc4e1..4de4ae62aa 100644 --- a/webapp/src/components/common/MatrixGrid/Matrix.tsx +++ b/webapp/src/components/common/MatrixGrid/Matrix.tsx @@ -46,7 +46,7 @@ function Matrix({ enableRowHeaders = rowHeaders.length > 0, enablePercentDisplay = false, enableReadOnly = false, - customColumns = [], + customColumns, colWidth, }: MatrixProps) { const { t } = useTranslation(); From 97d901a0ed054e193dfc9adf77f51d38101f0df8 Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Tue, 17 Sep 2024 18:39:00 +0200 Subject: [PATCH 088/182] feat(ui): add `calculateMatrixAggregates` and update Hydro matrices --- .../Areas/Hydro/Allocation/utils.ts | 3 +- .../Areas/Hydro/Correlation/utils.ts | 3 +- .../Modelization/Areas/Hydro/HydroMatrix.tsx | 21 ++-- .../Modelization/Areas/Hydro/index.tsx | 4 +- .../explore/Modelization/Areas/Hydro/utils.ts | 8 +- .../explore/Modelization/Areas/Load.tsx | 2 +- .../components/common/MatrixGrid/Matrix.tsx | 19 ++- .../components/common/MatrixGrid/index.tsx | 4 +- .../src/components/common/MatrixGrid/types.ts | 8 ++ .../MatrixGrid/useGridCellContent.test.ts | 37 ++++-- .../common/MatrixGrid/useGridCellContent.ts | 29 +++-- .../common/MatrixGrid/useMatrix.test.tsx | 2 +- .../components/common/MatrixGrid/useMatrix.ts | 119 +++++++++++++----- .../common/MatrixGrid/utils.test.ts | 87 +++++++++++-- .../src/components/common/MatrixGrid/utils.ts | 67 +++++++++- 15 files changed, 330 insertions(+), 83 deletions(-) diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts index 46041fdcc2..75cbf73862 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts @@ -18,6 +18,7 @@ import { MatrixType, } from "../../../../../../../../common/types"; import client from "../../../../../../../../services/api/client"; +import { MatrixDataDTO } from "../../../../../../../common/MatrixGrid/types"; import { AreaCoefficientItem } from "../utils"; //////////////////////////////////////////////////////////////// @@ -58,7 +59,7 @@ export async function setAllocationFormFields( export const getAllocationMatrix = async ( studyId: StudyMetadata["id"], -): Promise => { +): Promise => { const res = await client.get( `v1/studies/${studyId}/areas/hydro/allocation/matrix`, ); diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts index dc2b547e63..bcf4137a36 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts @@ -18,6 +18,7 @@ import { MatrixType, } from "../../../../../../../../common/types"; import client from "../../../../../../../../services/api/client"; +import { MatrixDataDTO } from "../../../../../../../common/MatrixGrid/types"; import { AreaCoefficientItem } from "../utils"; //////////////////////////////////////////////////////////////// @@ -58,7 +59,7 @@ export async function setCorrelationFormFields( export async function getCorrelationMatrix( studyId: StudyMetadata["id"], -): Promise { +): Promise { const res = await client.get( `v1/studies/${studyId}/areas/hydro/correlation/matrix`, ); diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx index f557f39bf3..33a3f3461b 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx @@ -18,6 +18,7 @@ import useAppSelector from "../../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../../redux/selectors"; import { MATRICES, HydroMatrixType } from "./utils"; import Matrix from "../../../../../../common/MatrixGrid/Matrix"; +import { Box } from "@mui/material"; interface Props { type: HydroMatrixType; @@ -33,14 +34,18 @@ function HydroMatrix({ type }: Props) { //////////////////////////////////////////////////////////////// return ( - + + + ); } diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/index.tsx index 4209e439bf..215b3b5954 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/index.tsx @@ -50,7 +50,9 @@ function Hydro() { // JSX //////////////////////////////////////////////////////////////// - return ; + return ( + + ); } export default Hydro; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts index 5d95859a2d..e067c36b31 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts @@ -40,7 +40,7 @@ export const HydroMatrix = { // Types //////////////////////////////////////////////////////////////// -export type fetchMatrixFn = (studyId: string) => Promise; +export type fetchMatrixFn = (studyId: string) => Promise; export type HydroMatrixType = (typeof HydroMatrix)[keyof typeof HydroMatrix]; export interface HydroMatrixProps { @@ -49,6 +49,7 @@ export interface HydroMatrixProps { columns?: string[]; rowHeaders?: string[]; fetchFn?: fetchMatrixFn; + enableDateTimeColumn?: boolean; enableReadOnly?: boolean; enablePercentDisplay?: boolean; } @@ -126,6 +127,7 @@ export const MATRICES: Matrices = { url: "input/hydro/common/capacity/creditmodulations_{areaId}", columns: generateColumns("%"), rowHeaders: ["Generating Power", "Pumping Power"], + enableDateTimeColumn: false, enablePercentDisplay: true, }, [HydroMatrix.EnergyCredits]: { @@ -147,7 +149,7 @@ export const MATRICES: Matrices = { [HydroMatrix.WaterValues]: { title: "Water Values", url: "input/hydro/common/capacity/waterValues_{areaId}", - // columns: generateColumns("%"), // TODO this causes the data is undefined error + // columns: generateColumns("%"), // TODO this causes Runtime error to be fixed }, [HydroMatrix.HydroStorage]: { title: "Hydro Storage", @@ -195,6 +197,7 @@ export const MATRICES: Matrices = { title: "Allocation", url: "", fetchFn: getAllocationMatrix, + enableDateTimeColumn: false, enableReadOnly: true, enablePercentDisplay: true, }, @@ -202,6 +205,7 @@ export const MATRICES: Matrices = { title: "Correlation", url: "", fetchFn: getCorrelationMatrix, + enableDateTimeColumn: false, enableReadOnly: true, enablePercentDisplay: true, }, diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx index a9d67519de..b6c051dc41 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx @@ -24,7 +24,7 @@ function Load() { // JSX //////////////////////////////////////////////////////////////// - return ; + return ; } export default Load; diff --git a/webapp/src/components/common/MatrixGrid/Matrix.tsx b/webapp/src/components/common/MatrixGrid/Matrix.tsx index 4de4ae62aa..6affd46d11 100644 --- a/webapp/src/components/common/MatrixGrid/Matrix.tsx +++ b/webapp/src/components/common/MatrixGrid/Matrix.tsx @@ -23,11 +23,13 @@ import { StudyMetadata } from "../../../common/types"; import { MatrixContainer, MatrixHeader, MatrixTitle } from "./style"; import MatrixActions from "./MatrixActions"; import EmptyView from "../page/SimpleContent"; +import { fetchMatrixFn } from "../../App/Singlestudy/explore/Modelization/Areas/Hydro/utils"; interface MatrixProps { url: string; title?: string; - rowHeaders?: string[]; + customRowHeaders?: string[]; + enableDateTimeColumn?: boolean; enableTimeSeriesColumns?: boolean; enableAggregateColumns?: boolean; enableRowHeaders?: boolean; @@ -35,19 +37,22 @@ interface MatrixProps { enableReadOnly?: boolean; customColumns?: string[] | readonly string[]; colWidth?: number; + fetchMatrixData?: fetchMatrixFn; } function Matrix({ url, title = "global.timeSeries", - rowHeaders = [], + customRowHeaders = [], + enableDateTimeColumn = true, enableTimeSeriesColumns = true, enableAggregateColumns = false, - enableRowHeaders = rowHeaders.length > 0, + enableRowHeaders = customRowHeaders.length > 0, enablePercentDisplay = false, enableReadOnly = false, customColumns, colWidth, + fetchMatrixData, }: MatrixProps) { const { t } = useTranslation(); const { study } = useOutletContext<{ study: StudyMetadata }>(); @@ -55,6 +60,7 @@ function Matrix({ const { data, + aggregates, error, isLoading, isSubmitting, @@ -72,11 +78,13 @@ function Matrix({ } = useMatrix( study.id, url, + enableDateTimeColumn, enableTimeSeriesColumns, enableAggregateColumns, enableRowHeaders, customColumns, colWidth, + fetchMatrixData, ); //////////////////////////////////////////////////////////////// @@ -88,7 +96,7 @@ function Matrix({ } if (error) { - return ; + return ; } if (!data || data.length === 0) { @@ -116,9 +124,10 @@ function Matrix({ ; + aggregates?: MatrixAggregates; rowHeaders?: string[]; width?: string; height?: string; diff --git a/webapp/src/components/common/MatrixGrid/types.ts b/webapp/src/components/common/MatrixGrid/types.ts index 5168f1e819..87f7b80f3f 100644 --- a/webapp/src/components/common/MatrixGrid/types.ts +++ b/webapp/src/components/common/MatrixGrid/types.ts @@ -66,6 +66,14 @@ export interface EnhancedGridColumn extends BaseGridColumn { type: ColumnType; editable: boolean; } + +export interface MatrixAggregates { + min: number[]; + max: number[]; + avg: number[]; + total: number[]; +} + // Represents data coming from the API export interface MatrixDataDTO { data: number[][]; diff --git a/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts b/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts index 084a52d429..11485c9f0c 100644 --- a/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts +++ b/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts @@ -14,7 +14,11 @@ import { renderHook } from "@testing-library/react"; import { useGridCellContent } from "./useGridCellContent"; -import { ColumnTypes, type EnhancedGridColumn } from "./types"; +import { + ColumnTypes, + MatrixAggregates, + type EnhancedGridColumn, +} from "./types"; import { useColumnMapping } from "./useColumnMapping"; // Mocking i18next @@ -55,7 +59,7 @@ function renderGridCellContent( data: number[][], columns: EnhancedGridColumn[], dateTime?: string[], - aggregates?: Record, + aggregates?: MatrixAggregates, rowHeaders?: string[], ) { const { result: mappingResult } = renderHook(() => useColumnMapping(columns)); @@ -130,14 +134,17 @@ describe("useGridCellContent", () => { ]; const aggregates = { - total: [60, 75, 45], + min: [5, 15, 25], + max: [15, 25, 35], + avg: [10, 20, 30], + total: [30, 60, 90], }; - // Tests for each row in the aggregates array + // Test each row for correct numeric cell content test.each([ - [0, 60], // Row index 0, expected sum 60 - [1, 75], // Row index 1, expected sum 75 - [2, 45], // Row index 2, expected sum 45 + [0, 30], // Total of first row + [1, 60], // Total of second row + [2, 90], // Total of third row ])( "ensures the correct numeric cell content is returned for aggregates at row %i", (row, expectedData) => { @@ -148,7 +155,7 @@ describe("useGridCellContent", () => { aggregates, ); - const cell = getCellContent([0, row]); // Column index is 0 because we only have one column of aggregates + const cell = getCellContent([0, row]); // Accessing the only column if ("data" in cell) { expect(cell.kind).toBe("number"); @@ -200,7 +207,10 @@ describe("useGridCellContent", () => { ]; const aggregates = { - total: [300, 400], + min: [100, 200], + max: [150, 250], + avg: [125, 225], + total: [250, 450], }; const getCellContent = renderGridCellContent( @@ -232,7 +242,7 @@ describe("useGridCellContent", () => { const aggregateCell = getCellContent([3, 0]); if (aggregateCell.kind === "number" && "data" in aggregateCell) { - expect(aggregateCell.data).toBe(300); + expect(aggregateCell.data).toBe(250); } else { throw new Error("Expected an Aggregate cell with data"); } @@ -286,7 +296,10 @@ describe("useGridCellContent with mixed column types", () => { [150, 250], ]; const aggregates = { - total: [300, 400], + min: [100, 200], + max: [150, 250], + avg: [125, 225], + total: [250, 450], }; const getCellContent = renderGridCellContent( @@ -339,7 +352,7 @@ describe("useGridCellContent with mixed column types", () => { const aggregateCell = getCellContent([4, 0]); if (aggregateCell.kind === "number" && "data" in aggregateCell) { - expect(aggregateCell.data).toBe(300); + expect(aggregateCell.data).toBe(250); } else { throw new Error("Expected a number cell with data for aggregate column"); } diff --git a/webapp/src/components/common/MatrixGrid/useGridCellContent.ts b/webapp/src/components/common/MatrixGrid/useGridCellContent.ts index 67d0718212..7e385a448c 100644 --- a/webapp/src/components/common/MatrixGrid/useGridCellContent.ts +++ b/webapp/src/components/common/MatrixGrid/useGridCellContent.ts @@ -14,7 +14,12 @@ import { useCallback, useMemo } from "react"; import { GridCell, GridCellKind, Item } from "@glideapps/glide-data-grid"; -import { type EnhancedGridColumn, type ColumnType, ColumnTypes } from "./types"; +import { + type EnhancedGridColumn, + type ColumnType, + ColumnTypes, + MatrixAggregates, +} from "./types"; import { formatDateTime } from "./utils"; type CellContentGenerator = ( @@ -23,7 +28,7 @@ type CellContentGenerator = ( column: EnhancedGridColumn, data: number[][], dateTime?: string[], - aggregates?: Record, + aggregates?: MatrixAggregates, rowHeaders?: string[], ) => GridCell; @@ -66,14 +71,14 @@ const cellContentGenerators: Record = { }; }, [ColumnTypes.Aggregate]: (row, col, column, data, dateTime, aggregates) => { - const value = aggregates?.[column.id]?.[row]; + const value = aggregates?.[column.id as keyof MatrixAggregates]?.[row]; return { kind: GridCellKind.Number, data: value, displayData: value?.toString() ?? "", readonly: !column.editable, - allowOverlay: false, + allowOverlay: true, }; }, }; @@ -109,7 +114,7 @@ export function useGridCellContent( columns: EnhancedGridColumn[], gridToData: (cell: Item) => Item | null, dateTime?: string[], - aggregates?: Record, + aggregates?: MatrixAggregates, rowHeaders?: string[], isReadOnlyEnabled = false, isPercentDisplayEnabled = false, @@ -170,19 +175,21 @@ export function useGridCellContent( rowHeaders, ); - // Prevent updates for read-only grids - if (isReadOnlyEnabled) { + // Display number values as percentages if enabled + if (isPercentDisplayEnabled && gridCell.kind === GridCellKind.Number) { return { ...gridCell, - allowOverlay: false, + displayData: `${gridCell.data}%`, + // If ReadOnly is enabled, we don't want to allow overlay + allowOverlay: !isReadOnlyEnabled, }; } - // Display number values as percentages if enabled - if (isPercentDisplayEnabled && gridCell.kind === GridCellKind.Number) { + // Prevent updates for read-only grids + if (isReadOnlyEnabled) { return { ...gridCell, - displayData: `${gridCell.data}%`, + allowOverlay: false, }; } diff --git a/webapp/src/components/common/MatrixGrid/useMatrix.test.tsx b/webapp/src/components/common/MatrixGrid/useMatrix.test.tsx index aad25a253f..f6de8f7596 100644 --- a/webapp/src/components/common/MatrixGrid/useMatrix.test.tsx +++ b/webapp/src/components/common/MatrixGrid/useMatrix.test.tsx @@ -57,7 +57,7 @@ describe("useMatrix", () => { vi.mocked(apiMatrix.getStudyMatrixIndex).mockResolvedValue(mockMatrixIndex); const { result } = renderHook(() => - useMatrix(mockStudyId, mockUrl, true, true), + useMatrix(mockStudyId, mockUrl, true, true, true), ); await waitFor(() => { diff --git a/webapp/src/components/common/MatrixGrid/useMatrix.ts b/webapp/src/components/common/MatrixGrid/useMatrix.ts index c626521fbe..e219845c9f 100644 --- a/webapp/src/components/common/MatrixGrid/useMatrix.ts +++ b/webapp/src/components/common/MatrixGrid/useMatrix.ts @@ -29,25 +29,35 @@ import { ColumnTypes, GridUpdate, MatrixUpdateDTO, + MatrixAggregates, } from "./types"; -import { generateDataColumns, generateDateTime } from "./utils"; +import { + aggregatesTheme, + calculateMatrixAggregates, + generateDataColumns, + generateDateTime, +} from "./utils"; import useUndo from "use-undo"; import { GridCellKind } from "@glideapps/glide-data-grid"; import { importFile } from "../../../services/api/studies/raw"; +import { fetchMatrixFn } from "../../App/Singlestudy/explore/Modelization/Areas/Hydro/utils"; interface DataState { - data: number[][]; + data: MatrixDataDTO["data"]; + aggregates: MatrixAggregates; pendingUpdates: MatrixUpdateDTO[]; } export function useMatrix( studyId: string, url: string, + enableDateTimeColumn: boolean, enableTimeSeriesColumns: boolean, enableAggregateColumns: boolean, enableRowHeaders?: boolean, customColumns?: string[] | readonly string[], colWidth?: number, + fetchMatrixData?: fetchMatrixFn, ) { const enqueueErrorSnackbar = useEnqueueErrorSnackbar(); const [columnCount, setColumnCount] = useState(0); @@ -56,27 +66,60 @@ export function useMatrix( const [isSubmitting, setIsSubmitting] = useState(false); const [error, setError] = useState(undefined); const [{ present: currentState }, { set: setState, undo, redo, canRedo }] = - useUndo({ data: [], pendingUpdates: [] }); + useUndo({ + data: [], + aggregates: { min: [], max: [], avg: [], total: [] }, + pendingUpdates: [], + }); - const fetchMatrix = useCallback(async () => { - setIsLoading(true); - try { - const [matrix, index] = await Promise.all([ - getStudyData(studyId, url), - getStudyMatrixIndex(studyId, url), - ]); - - setState({ data: matrix.data, pendingUpdates: [] }); - setColumnCount(matrix.columns.length); - setIndex(index); - setIsLoading(false); - } catch (error) { - setError(new Error(t("data.error.matrix"))); - enqueueErrorSnackbar(t("data.error.matrix"), error as AxiosError); - } finally { - setIsLoading(false); - } - }, [enqueueErrorSnackbar, setState, studyId, url]); + const fetchMatrix = useCallback( + async (loadingState = true) => { + // !NOTE This is a temporary solution to ensure the matrix is up to date + // TODO: Remove this once the matrix API is updated to return the correct data + if (loadingState) { + setIsLoading(true); + } + + try { + const [matrix, index] = await Promise.all([ + fetchMatrixData + ? // If a custom fetch function is provided, use it + fetchMatrixData(studyId) + : getStudyData(studyId, url, 1), + getStudyMatrixIndex(studyId, url), + ]); + + setState({ + data: matrix.data, + aggregates: enableAggregateColumns + ? calculateMatrixAggregates(matrix.data) + : { min: [], max: [], avg: [], total: [] }, + pendingUpdates: [], + }); + setColumnCount(matrix.columns.length); + setIndex(index); + setIsLoading(false); + + return { + matrix, + index, + }; + } catch (error) { + setError(new Error(t("data.error.matrix"))); + enqueueErrorSnackbar(t("data.error.matrix"), error as AxiosError); + } finally { + setIsLoading(false); + } + }, + [ + enableAggregateColumns, + enqueueErrorSnackbar, + fetchMatrixData, + setState, + studyId, + url, + ], + ); useEffect(() => { fetchMatrix(); @@ -91,14 +134,16 @@ export function useMatrix( return []; } - const baseColumns: EnhancedGridColumn[] = [ - { + const baseColumns: EnhancedGridColumn[] = []; + + if (enableDateTimeColumn) { + baseColumns.push({ id: "date", title: "Date", type: ColumnTypes.DateTime, editable: false, - }, - ]; + }); + } if (enableRowHeaders) { baseColumns.unshift({ @@ -122,22 +167,22 @@ export function useMatrix( id: "min", title: "Min", type: ColumnTypes.Aggregate, - width: 50, editable: false, + themeOverride: aggregatesTheme, }, { id: "max", title: "Max", type: ColumnTypes.Aggregate, - width: 50, editable: false, + themeOverride: aggregatesTheme, }, { id: "avg", title: "Avg", type: ColumnTypes.Aggregate, - width: 50, editable: false, + themeOverride: aggregatesTheme, }, ] : []; @@ -145,6 +190,7 @@ export function useMatrix( return [...baseColumns, ...dataColumns, ...aggregateColumns]; }, [ currentState.data, + enableDateTimeColumn, enableRowHeaders, enableTimeSeriesColumns, columnCount, @@ -180,6 +226,7 @@ export function useMatrix( setState({ data: updatedData, + aggregates: currentState.aggregates, pendingUpdates: [...currentState.pendingUpdates, ...newUpdates], }); }, @@ -209,12 +256,23 @@ export function useMatrix( } setIsSubmitting(true); + try { await updateMatrix(studyId, url, currentState.pendingUpdates); - setState({ data: currentState.data, pendingUpdates: [] }); + + setState({ + data: currentState.data, + aggregates: currentState.aggregates, + pendingUpdates: [], + }); + enqueueSnackbar(t("matrix.success.matrixUpdate"), { variant: "success", }); + + // !NOTE This is a temporary solution to ensure the matrix is up to date + // TODO: Remove this once the matrix API is updated to return the correct data + await fetchMatrix(false); } catch (error) { setError(new Error(t("matrix.error.matrixUpdate"))); enqueueErrorSnackbar(t("matrix.error.matrixUpdate"), error as AxiosError); @@ -238,6 +296,7 @@ export function useMatrix( return { data: currentState.data, + aggregates: currentState.aggregates, error, isLoading, isSubmitting, diff --git a/webapp/src/components/common/MatrixGrid/utils.test.ts b/webapp/src/components/common/MatrixGrid/utils.test.ts index afe4e21c5c..b6444c43cb 100644 --- a/webapp/src/components/common/MatrixGrid/utils.test.ts +++ b/webapp/src/components/common/MatrixGrid/utils.test.ts @@ -17,7 +17,11 @@ import { StudyOutputDownloadLevelDTO, } from "../../../common/types"; import { ColumnTypes } from "./types"; -import { generateDateTime, generateTimeSeriesColumns } from "./utils"; +import { + calculateMatrixAggregates, + generateDateTime, + generateTimeSeriesColumns, +} from "./utils"; describe("generateDateTime", () => { test("generates correct number of dates", () => { @@ -118,7 +122,6 @@ describe("generateTimeSeriesColumns", () => { title: "TS 1", type: ColumnTypes.Number, style: "normal", - width: 50, editable: true, }, { @@ -126,7 +129,6 @@ describe("generateTimeSeriesColumns", () => { title: "TS 2", type: ColumnTypes.Number, style: "normal", - width: 50, editable: true, }, { @@ -134,7 +136,6 @@ describe("generateTimeSeriesColumns", () => { title: "TS 3", type: ColumnTypes.Number, style: "normal", - width: 50, editable: true, }, ]); @@ -145,7 +146,6 @@ describe("generateTimeSeriesColumns", () => { count: 2, startIndex: 10, prefix: "Data", - width: 80, editable: false, }); expect(result).toEqual([ @@ -154,7 +154,6 @@ describe("generateTimeSeriesColumns", () => { title: "Data 10", type: ColumnTypes.Number, style: "normal", - width: 80, editable: false, }, { @@ -162,7 +161,6 @@ describe("generateTimeSeriesColumns", () => { title: "Data 11", type: ColumnTypes.Number, style: "normal", - width: 80, editable: false, }, ]); @@ -188,3 +186,78 @@ describe("generateTimeSeriesColumns", () => { }); }); }); + +describe("calculateMatrixAggregates", () => { + it("should calculate correct aggregates for a simple matrix", () => { + const matrix = [ + [1, 2, 3], + [4, 5, 6], + [7, 8, 9], + ]; + const result = calculateMatrixAggregates(matrix); + + expect(result.min).toEqual([1, 4, 7]); + expect(result.max).toEqual([3, 6, 9]); + expect(result.avg).toEqual([2, 5, 8]); + expect(result.total).toEqual([6, 15, 24]); + }); + + it("should handle decimal numbers correctly by rounding", () => { + const matrix = [ + [1.1, 2.2, 3.3], + [4.4, 5.5, 6.6], + ]; + const result = calculateMatrixAggregates(matrix); + + expect(result.min).toEqual([1.1, 4.4]); + expect(result.max).toEqual([3.3, 6.6]); + expect(result.avg).toEqual([2, 6]); + expect(result.total).toEqual([7, 17]); + }); + + it("should handle negative numbers", () => { + const matrix = [ + [-1, -2, -3], + [-4, 0, 4], + ]; + const result = calculateMatrixAggregates(matrix); + + expect(result.min).toEqual([-3, -4]); + expect(result.max).toEqual([-1, 4]); + expect(result.avg).toEqual([-2, 0]); + expect(result.total).toEqual([-6, 0]); + }); + + it("should handle single-element rows", () => { + const matrix = [[1], [2], [3]]; + const result = calculateMatrixAggregates(matrix); + + expect(result.min).toEqual([1, 2, 3]); + expect(result.max).toEqual([1, 2, 3]); + expect(result.avg).toEqual([1, 2, 3]); + expect(result.total).toEqual([1, 2, 3]); + }); + + it("should handle large numbers", () => { + const matrix = [ + [1000000, 2000000, 3000000], + [4000000, 5000000, 6000000], + ]; + const result = calculateMatrixAggregates(matrix); + + expect(result.min).toEqual([1000000, 4000000]); + expect(result.max).toEqual([3000000, 6000000]); + expect(result.avg).toEqual([2000000, 5000000]); + expect(result.total).toEqual([6000000, 15000000]); + }); + + it("should round average correctly", () => { + const matrix = [ + [1, 2, 4], + [10, 20, 39], + ]; + const result = calculateMatrixAggregates(matrix); + + expect(result.avg).toEqual([2, 23]); + }); +}); diff --git a/webapp/src/components/common/MatrixGrid/utils.ts b/webapp/src/components/common/MatrixGrid/utils.ts index 731e5d2b21..77a0482eb5 100644 --- a/webapp/src/components/common/MatrixGrid/utils.ts +++ b/webapp/src/components/common/MatrixGrid/utils.ts @@ -19,6 +19,7 @@ import { ColumnTypes, TimeSeriesColumnOptions, CustomColumnOptions, + MatrixAggregates, } from "./types"; import { getCurrentLanguage } from "../../../utils/i18nUtils"; import { Theme } from "@glideapps/glide-data-grid"; @@ -71,6 +72,23 @@ export const readOnlyDarkTheme: Partial = { drilldownBorder: "rgba(255, 255, 255, 0.2)", }; +export const aggregatesTheme: Partial = { + bgCell: "#31324A", + bgCellMedium: "#383A5C", + textDark: "#1976D2", + textMedium: "#2196F3", + textLight: "#64B5F6", + accentColor: "#2196F3", + accentLight: "#64B5F633", + fontFamily: "Inter, sans-serif", + baseFontStyle: "bold 13px", + editorFontSize: "13px", + headerFontStyle: "bold 11px", + accentFg: "#2196F3", // This affects the selection border + borderColor: "#2196F3", // This affects the general cell borders + drilldownBorder: "#2196F3", // This affects the border when drilling down into a cell +}; + const dateIncrementStrategies: Record< MatrixIndex["level"], DateIncrementStrategy @@ -194,7 +212,7 @@ export function generateTimeSeriesColumns({ count, startIndex = 1, prefix = "TS", - width = 50, + width, editable = true, style = "normal", }: TimeSeriesColumnOptions): EnhancedGridColumn[] { @@ -257,3 +275,50 @@ export function generateDataColumns( return []; } + +/** + * Calculates aggregate values (min, max, avg, total) for each column in a 2D numeric matrix. + * + * This function processes a 2D array (matrix) of numbers, computing four types of aggregates + * for each column. + * + * @param matrix - A 2D array of numbers representing the matrix. Each inner array is treated as a column. + * @returns An object containing four arrays, each corresponding to an aggregate type: + * min: An array of minimum values for each column. + * max: An array of maximum values for each column. + * avg: An array of average values for each column. + * total: An array of sum totals for each column. + * + * @example Calculating aggregates for a 3x3 matrix + * const matrix = [ + * [1, 2, 3], + * [4, 5, 6], + * [7, 8, 9] + * ]; + * const result = calculateAggregates(matrix); + * console.log(result); + * Output: { + * min: [1, 2, 3], + * max: [7, 8, 9], + * avg: [4, 5, 6], + * total: [12, 15, 18] + * } + */ +export function calculateMatrixAggregates(matrix: number[][]) { + const aggregates: MatrixAggregates = { + min: [], + max: [], + avg: [], + total: [], + }; + + matrix.forEach((row) => { + aggregates.min.push(Math.min(...row)); + aggregates.max.push(Math.max(...row)); + const sum = row.reduce((sum, num) => sum + num, 0); + aggregates.avg.push(Number((sum / row.length).toFixed())); + aggregates.total.push(Number(sum.toFixed())); + }); + + return aggregates; +} From c03e5e60eb99fbfc6be0d46ab0b17a4aa537c12b Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Tue, 17 Sep 2024 13:28:36 +0200 Subject: [PATCH 089/182] refactor(ui-links): update `Links` matrices --- .../Links/LinkView/LinkMatrixView.tsx | 191 +++++++++++------- 1 file changed, 116 insertions(+), 75 deletions(-) diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkMatrixView.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkMatrixView.tsx index 7cb84b4ae6..fe498f56fb 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkMatrixView.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkMatrixView.tsx @@ -18,14 +18,9 @@ import Tabs from "@mui/material/Tabs"; import Tab from "@mui/material/Tab"; import Box from "@mui/material/Box"; import { useTranslation } from "react-i18next"; -import { MatrixStats, StudyMetadata } from "../../../../../../../common/types"; -import MatrixInput from "../../../../../../common/MatrixInput"; - -export const StyledTab = styled(Tabs)({ - width: "100%", - borderBottom: 1, - borderColor: "divider", -}); +import { StudyMetadata } from "../../../../../../../common/types"; +import SplitView from "../../../../../../common/SplitView"; +import Matrix from "../../../../../../common/MatrixGrid/Matrix"; interface Props { study: StudyMetadata; @@ -33,78 +28,124 @@ interface Props { area2: string; } -function LinkMatrixView(props: Props) { - const [t] = useTranslation(); - const { study, area1, area2 } = props; - const [value, setValue] = React.useState(0); +interface MatrixConfig { + url: string; + titleKey: string; + columnsNames?: string[]; +} + +interface SplitMatrixContent { + type: "split"; + matrices: [MatrixConfig, MatrixConfig]; +} - const columnsNames = [ - `${t( - "study.modelization.links.matrix.columns.hurdleCostsDirect", - )} (${area1}->${area2})`, - `${t( - "study.modelization.links.matrix.columns.hurdleCostsIndirect", - )} (${area2}->${area1})`, - t("study.modelization.links.matrix.columns.impedances"), - t("study.modelization.links.matrix.columns.loopFlow"), - t("study.modelization.links.matrix.columns.pShiftMin"), - t("study.modelization.links.matrix.columns.pShiftMax"), - ]; +interface SingleMatrixContent { + type: "single"; + matrix: MatrixConfig; +} - const handleChange = (event: React.SyntheticEvent, newValue: number) => { - setValue(newValue); +interface MatrixItem { + titleKey: string; + content: SplitMatrixContent | SingleMatrixContent; +} + +function LinkMatrixView({ area1, area2 }: Props) { + const { t } = useTranslation(); + const [activeTab, setActiveTab] = useState("parameters"); + + const handleTabChange = (event: React.SyntheticEvent, newValue: string) => { + setActiveTab(newValue); }; + + const MATRICES: MatrixItem[] = useMemo( + () => [ + { + titleKey: "parameters", + content: { + type: "single", + matrix: { + url: `input/links/${area1.toLowerCase()}/${area2.toLowerCase()}_parameters`, + titleKey: "parameters", + columnsNames: [ + `${t( + "study.modelization.links.matrix.columns.hurdleCostsDirect", + )} (${area1}->${area2})`, + `${t( + "study.modelization.links.matrix.columns.hurdleCostsIndirect", + )} (${area2}->${area1})`, + t("study.modelization.links.matrix.columns.impedances"), + t("study.modelization.links.matrix.columns.loopFlow"), + t("study.modelization.links.matrix.columns.pShiftMin"), + t("study.modelization.links.matrix.columns.pShiftMax"), + ], + }, + }, + }, + { + titleKey: "capacities", + content: { + type: "split", + matrices: [ + { + url: `input/links/${area1.toLowerCase()}/capacities/${area2.toLowerCase()}_direct`, + titleKey: "transCapaDirect", + }, + { + url: `input/links/${area1.toLowerCase()}/capacities/${area2.toLowerCase()}_indirect`, + titleKey: "transCapaIndirect", + }, + ], + }, + }, + ], + [area1, area2, t], + ); + return ( - - - - - - - {value === 0 ? ( - + + {MATRICES.map(({ titleKey }) => ( + - ) : ( - <> - ${area2})`} - url={`input/links/${area1.toLowerCase()}/capacities/${area2.toLowerCase()}_direct`} - computStats={MatrixStats.NOCOL} - /> - - ${area1})`} - url={`input/links/${area1.toLowerCase()}/capacities/${area2.toLowerCase()}_indirect`} - computStats={MatrixStats.NOCOL} - /> - + ))} + + + {MATRICES.map( + ({ titleKey, content }) => + activeTab === titleKey && ( + + {content.type === "split" ? ( + + {content.matrices.map(({ url, titleKey }) => ( + + + + ))} + + ) : ( + + )} + + ), )} From eebd01030a26bc82fc0adc18b9886e79f60c382a Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Tue, 17 Sep 2024 13:29:51 +0200 Subject: [PATCH 090/182] fix(ui): prevent 0 to be processed as falsy value --- webapp/src/components/common/MatrixGrid/useMatrix.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/src/components/common/MatrixGrid/useMatrix.ts b/webapp/src/components/common/MatrixGrid/useMatrix.ts index e219845c9f..5575ade4ec 100644 --- a/webapp/src/components/common/MatrixGrid/useMatrix.ts +++ b/webapp/src/components/common/MatrixGrid/useMatrix.ts @@ -206,7 +206,7 @@ export function useMatrix( const newUpdates: MatrixUpdateDTO[] = updates .map(({ coordinates: [row, col], value }) => { - if (value.kind === GridCellKind.Number && value.data) { + if (value.kind === GridCellKind.Number && value.data !== undefined) { updatedData[col][row] = value.data; return { From 9ad6ac46a065a32daec4505b2a2669491092fd96 Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Wed, 18 Sep 2024 15:18:03 +0200 Subject: [PATCH 091/182] refactor(ui-results): update `Results` view matrices --- .../explore/Results/ResultDetails/index.tsx | 66 ++++++++++++------- 1 file changed, 44 insertions(+), 22 deletions(-) diff --git a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx index 7beaf0ec2a..2a080f5d68 100644 --- a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx @@ -39,7 +39,6 @@ import { } from "../../../../../../redux/selectors"; import { getStudyData } from "../../../../../../services/api/study"; import { isSearchMatching } from "../../../../../../utils/stringUtils"; -import EditableMatrix from "../../../../../common/EditableMatrix"; import PropertiesView from "../../../../../common/PropertiesView"; import SplitLayoutView from "../../../../../common/SplitLayoutView"; import ListElement from "../../common/ListElement"; @@ -60,7 +59,10 @@ import BooleanFE from "../../../../../common/fieldEditors/BooleanFE"; import SelectFE from "../../../../../common/fieldEditors/SelectFE"; import NumberFE from "../../../../../common/fieldEditors/NumberFE"; import moment from "moment"; -import DownloadMatrixButton from "../../../../../common/buttons/DownloadMatrixButton.tsx"; +import DownloadMatrixButton from "../../../../../common/DownloadMatrixButton.tsx"; +import MatrixGrid from "../../../../../common/MatrixGrid/index.tsx"; +import { generateCustomColumns } from "../../../../../common/MatrixGrid/utils.ts"; +import { ColumnTypes } from "../../../../../common/MatrixGrid/types.ts"; function ResultDetails() { const { study } = useOutletContext<{ study: StudyMetadata }>(); @@ -284,16 +286,21 @@ function ResultDetails() { ifPending={() => ( )} - ifResolved={(matrix) => - matrix && ( - - ) - } + ifResolved={(matrix) => { + console.log("synthesisRes", matrix); + return ( + matrix && ( + + ) + ); + }} /> ) : ( @@ -412,16 +419,31 @@ function ResultDetails() { ifPending={() => ( )} - ifResolved={([, matrix]) => - matrix && ( - - ) - } + ifResolved={([, matrix]) => { + return ( + matrix && ( + <> + + + ) + ); + }} ifRejected={(err) => ( Date: Wed, 18 Sep 2024 17:34:01 +0200 Subject: [PATCH 092/182] refactor(ui-results): refresh and improve `ResultsDetails` --- .../Results/ResultDetails/ResultFilters.tsx | 143 +++++++++ .../explore/Results/ResultDetails/index.tsx | 296 +++++------------- 2 files changed, 225 insertions(+), 214 deletions(-) create mode 100644 webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/ResultFilters.tsx diff --git a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/ResultFilters.tsx b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/ResultFilters.tsx new file mode 100644 index 0000000000..b6bcc9f4b9 --- /dev/null +++ b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/ResultFilters.tsx @@ -0,0 +1,143 @@ +import { Box } from "@mui/material"; +import { useTranslation } from "react-i18next"; +import { DataType, Timestep } from "./utils"; +import BooleanFE from "../../../../../common/fieldEditors/BooleanFE"; +import SelectFE from "../../../../../common/fieldEditors/SelectFE"; +import NumberFE from "../../../../../common/fieldEditors/NumberFE"; +import DownloadMatrixButton from "../../../../../common/DownloadMatrixButton"; + +interface Props { + year: number; + setYear: (year: number) => void; + dataType: DataType; + setDataType: (dataType: DataType) => void; + timestep: Timestep; + setTimestep: (timestep: Timestep) => void; + maxYear: number; + studyId: string; + path: string; +} + +function ResultFilters({ + year, + setYear, + dataType, + setDataType, + timestep, + setTimestep, + maxYear, + studyId, + path, +}: Props) { + const { t } = useTranslation(); + + const controls = [ + { + label: `${t("study.results.mc")}:`, + control: ( + <> + { + setYear(event?.target.value ? -1 : 1); + }} + /> + {year > 0 && ( + { + setYear(Number(event.target.value)); + }} + /> + )} + + ), + }, + { + label: `${t("study.results.display")}:`, + control: ( + { + setDataType(event?.target.value as DataType); + }} + /> + ), + }, + { + label: `${t("study.results.temporality")}:`, + control: ( + { + setTimestep(event?.target.value as Timestep); + }} + /> + ), + }, + ]; + + //////////////////////////////////////////////////////////////// + // JSX + //////////////////////////////////////////////////////////////// + + return ( + + {controls.map(({ label, control }) => ( + + + {label} + + {control} + + ))} + + + ); +} + +export default ResultFilters; diff --git a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx index 2a080f5d68..317dc599ff 100644 --- a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx @@ -22,7 +22,6 @@ import { import { useEffect, useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; import { useNavigate, useOutletContext, useParams } from "react-router"; -import axios from "axios"; import GridOffIcon from "@mui/icons-material/GridOff"; import { Area, @@ -40,7 +39,6 @@ import { import { getStudyData } from "../../../../../../services/api/study"; import { isSearchMatching } from "../../../../../../utils/stringUtils"; import PropertiesView from "../../../../../common/PropertiesView"; -import SplitLayoutView from "../../../../../common/SplitLayoutView"; import ListElement from "../../common/ListElement"; import { createPath, @@ -55,14 +53,14 @@ import UsePromiseCond, { } from "../../../../../common/utils/UsePromiseCond"; import useStudySynthesis from "../../../../../../redux/hooks/useStudySynthesis"; import ButtonBack from "../../../../../common/ButtonBack"; -import BooleanFE from "../../../../../common/fieldEditors/BooleanFE"; -import SelectFE from "../../../../../common/fieldEditors/SelectFE"; -import NumberFE from "../../../../../common/fieldEditors/NumberFE"; import moment from "moment"; -import DownloadMatrixButton from "../../../../../common/DownloadMatrixButton.tsx"; import MatrixGrid from "../../../../../common/MatrixGrid/index.tsx"; import { generateCustomColumns } from "../../../../../common/MatrixGrid/utils.ts"; import { ColumnTypes } from "../../../../../common/MatrixGrid/types.ts"; +import SplitView from "../../../../../common/SplitView/index.tsx"; +import ResultFilters from "./ResultFilters.tsx"; +import { toError } from "../../../../../../utils/fnUtils.ts"; +import EmptyView from "../../../../../common/page/SimpleContent.tsx"; function ResultDetails() { const { study } = useOutletContext<{ study: StudyMetadata }>(); @@ -225,16 +223,12 @@ function ResultDetails() { //////////////////////////////////////////////////////////////// return ( - + {/* Left */} + + navigate("..")} /> } @@ -269,208 +263,82 @@ function ResultDetails() { } onSearchFilterChange={setSearchValue} /> - } - right={ - isSynthesis ? ( - - ( - - )} - ifResolved={(matrix) => { - console.log("synthesisRes", matrix); - return ( - matrix && ( - - ) - ); - }} - /> - + + {/* Right */} + + + {isSynthesis ? ( + } + ifResolved={(matrix) => + matrix && ( + + ) + } + /> ) : ( - - - {( - [ - [ - `${t("study.results.mc")}:`, - () => ( - <> - { - setYear(event?.target.value ? -1 : 1); - }} - /> - {year > 0 && ( - { - setYear(Number(event.target.value)); - }} - /> - )} - - ), - ], - [ - `${t("study.results.display")}:`, - () => ( - { - setDataType(event?.target.value as DataType); - }} - /> - ), - ], - [ - `${t("study.results.temporality")}:`, - () => ( - { - setTimestep(event?.target.value as Timestep); - }} - /> - ), - ], - ] as const - ).map(([label, Field]) => ( - - - {label} - - - - ))} - - - - ( - - )} - ifResolved={([, matrix]) => { - return ( - matrix && ( - <> - - - ) - ); - }} - ifRejected={(err) => ( - - {axios.isAxiosError(err) && err.response?.status === 404 ? ( - <> - - {t("study.results.noData")} - - ) : ( - t("data.error.matrix") - )} - - )} + } + ifResolved={([, matrix]) => + matrix && ( + + ) + } + ifRejected={(err) => ( + - - - ) - } - /> + )} + /> + )} + + ); } From e309997c16dcb8df7d1e27bf70448f3e84bf1105 Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Fri, 20 Sep 2024 09:18:43 +0200 Subject: [PATCH 093/182] refactor(ui-bc): update `BindingConstraints` matrices --- .../BindingConstView/ConstraintFields.tsx | 2 +- .../BindingConstView/Matrix.tsx | 41 ++++++++----------- 2 files changed, 18 insertions(+), 25 deletions(-) diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintFields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintFields.tsx index 49063ced45..ec0eea9385 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintFields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintFields.tsx @@ -174,7 +174,7 @@ function Fields({ study, constraintId }: Props) { {matrixDialogOpen && ( - void; } -// TODO rename MatrixDialog or ConstraintMatrixDialog -function Matrix({ study, operator, constraintId, open, onClose }: Props) { +function ConstraintMatrix({ + study, + operator, + constraintId, + open, + onClose, +}: Props) { const { t } = useTranslation(); const dialogProps: BasicDialogProps = { open, @@ -59,63 +64,51 @@ function Matrix({ study, operator, constraintId, open, onClose }: Props) { {Number(study.version) >= 870 ? ( <> {operator === "less" && ( - )} {operator === "equal" && ( - )} {operator === "greater" && ( - )} {operator === "both" && ( - - )} ) : ( - ", "="]} - computStats={MatrixStats.NOCOL} + customColumns={["<", ">", "="]} /> )} ); } -export default Matrix; +export default ConstraintMatrix; From e5e5e8f6f6f6bda839c86be726a892b83d2de76d Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Fri, 20 Sep 2024 10:18:41 +0200 Subject: [PATCH 094/182] refactor(ui): use the number of updates as the indicator for the save button instead of the number of cells edited --- webapp/src/components/common/MatrixGrid/useMatrix.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/webapp/src/components/common/MatrixGrid/useMatrix.ts b/webapp/src/components/common/MatrixGrid/useMatrix.ts index 5575ade4ec..3b37f6989f 100644 --- a/webapp/src/components/common/MatrixGrid/useMatrix.ts +++ b/webapp/src/components/common/MatrixGrid/useMatrix.ts @@ -46,6 +46,7 @@ interface DataState { data: MatrixDataDTO["data"]; aggregates: MatrixAggregates; pendingUpdates: MatrixUpdateDTO[]; + updateCount: number; } export function useMatrix( @@ -70,6 +71,7 @@ export function useMatrix( data: [], aggregates: { min: [], max: [], avg: [], total: [] }, pendingUpdates: [], + updateCount: 0, }); const fetchMatrix = useCallback( @@ -95,6 +97,7 @@ export function useMatrix( ? calculateMatrixAggregates(matrix.data) : { min: [], max: [], avg: [], total: [] }, pendingUpdates: [], + updateCount: 0, }); setColumnCount(matrix.columns.length); setIndex(index); @@ -228,6 +231,9 @@ export function useMatrix( data: updatedData, aggregates: currentState.aggregates, pendingUpdates: [...currentState.pendingUpdates, ...newUpdates], + updateCount: currentState.updateCount + ? currentState.updateCount + 1 + : 1, }); }, [currentState, setState], @@ -261,9 +267,9 @@ export function useMatrix( await updateMatrix(studyId, url, currentState.pendingUpdates); setState({ - data: currentState.data, - aggregates: currentState.aggregates, + ...currentState, pendingUpdates: [], + updateCount: 0, }); enqueueSnackbar(t("matrix.success.matrixUpdate"), { @@ -306,7 +312,7 @@ export function useMatrix( handleMultipleCellsEdit, handleImport, handleSaveUpdates, - pendingUpdatesCount: currentState.pendingUpdates.length, + pendingUpdatesCount: currentState.updateCount, undo: handleUndo, redo: handleRedo, canUndo: canUndoChanges, From 359bec9035ebcaa3c2a77936deba3f5b8c9e1ff1 Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Fri, 20 Sep 2024 10:23:29 +0200 Subject: [PATCH 095/182] feat(ui): add dynamic aggregates changes at each update --- .../components/common/MatrixGrid/useMatrix.ts | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/webapp/src/components/common/MatrixGrid/useMatrix.ts b/webapp/src/components/common/MatrixGrid/useMatrix.ts index 3b37f6989f..b35bbcf765 100644 --- a/webapp/src/components/common/MatrixGrid/useMatrix.ts +++ b/webapp/src/components/common/MatrixGrid/useMatrix.ts @@ -227,16 +227,25 @@ export function useMatrix( (update): update is NonNullable => update !== null, ); + // Recalculate aggregates with the updated data + const newAggregates = enableAggregateColumns + ? calculateMatrixAggregates(updatedData) + : { min: [], max: [], avg: [], total: [] }; + setState({ data: updatedData, - aggregates: currentState.aggregates, + aggregates: newAggregates, pendingUpdates: [...currentState.pendingUpdates, ...newUpdates], - updateCount: currentState.updateCount - ? currentState.updateCount + 1 - : 1, + updateCount: currentState.updateCount + 1 || 1, }); }, - [currentState, setState], + [ + currentState.data, + currentState.pendingUpdates, + currentState.updateCount, + enableAggregateColumns, + setState, + ], ); const handleCellEdit = function (update: GridUpdate) { From e326c28e794978de9b017014d166e7c459cbd804 Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Fri, 20 Sep 2024 18:15:02 +0200 Subject: [PATCH 096/182] refactor(ui): change position of aggregates cols and background colors --- .../components/common/MatrixGrid/useMatrix.ts | 16 ++++++++-------- webapp/src/components/common/MatrixGrid/utils.ts | 11 ++--------- 2 files changed, 10 insertions(+), 17 deletions(-) diff --git a/webapp/src/components/common/MatrixGrid/useMatrix.ts b/webapp/src/components/common/MatrixGrid/useMatrix.ts index b35bbcf765..dac4021252 100644 --- a/webapp/src/components/common/MatrixGrid/useMatrix.ts +++ b/webapp/src/components/common/MatrixGrid/useMatrix.ts @@ -167,25 +167,25 @@ export function useMatrix( const aggregateColumns: EnhancedGridColumn[] = enableAggregateColumns ? [ { - id: "min", - title: "Min", + id: "avg", + title: "Avg", type: ColumnTypes.Aggregate, editable: false, themeOverride: aggregatesTheme, }, { - id: "max", - title: "Max", + id: "min", + title: "Min", type: ColumnTypes.Aggregate, editable: false, - themeOverride: aggregatesTheme, + themeOverride: { ...aggregatesTheme, bgCell: "#464770" }, }, { - id: "avg", - title: "Avg", + id: "max", + title: "Max", type: ColumnTypes.Aggregate, editable: false, - themeOverride: aggregatesTheme, + themeOverride: { ...aggregatesTheme, bgCell: "#464770" }, }, ] : []; diff --git a/webapp/src/components/common/MatrixGrid/utils.ts b/webapp/src/components/common/MatrixGrid/utils.ts index 77a0482eb5..c27c8f9b85 100644 --- a/webapp/src/components/common/MatrixGrid/utils.ts +++ b/webapp/src/components/common/MatrixGrid/utils.ts @@ -73,20 +73,13 @@ export const readOnlyDarkTheme: Partial = { }; export const aggregatesTheme: Partial = { - bgCell: "#31324A", + bgCell: "#3D3E5F", bgCellMedium: "#383A5C", - textDark: "#1976D2", - textMedium: "#2196F3", - textLight: "#64B5F6", - accentColor: "#2196F3", - accentLight: "#64B5F633", + textDark: "#FFFFFF", fontFamily: "Inter, sans-serif", baseFontStyle: "bold 13px", editorFontSize: "13px", headerFontStyle: "bold 11px", - accentFg: "#2196F3", // This affects the selection border - borderColor: "#2196F3", // This affects the general cell borders - drilldownBorder: "#2196F3", // This affects the border when drilling down into a cell }; const dateIncrementStrategies: Record< From d43782fd308454560af88bd0ed07f50d4cb19a63 Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Fri, 20 Sep 2024 18:29:09 +0200 Subject: [PATCH 097/182] feat(ui): make the `dateTime` column sticky --- webapp/src/components/common/MatrixGrid/index.tsx | 1 + webapp/src/components/common/MatrixGrid/useMatrix.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/webapp/src/components/common/MatrixGrid/index.tsx b/webapp/src/components/common/MatrixGrid/index.tsx index e4b6aa2f1d..29363ac26b 100644 --- a/webapp/src/components/common/MatrixGrid/index.tsx +++ b/webapp/src/components/common/MatrixGrid/index.tsx @@ -159,6 +159,7 @@ function MatrixGrid({ onPaste fillHandle rowMarkers="both" + freezeColumns={1} // Make the first column sticky />

diff --git a/webapp/src/components/common/MatrixGrid/useMatrix.ts b/webapp/src/components/common/MatrixGrid/useMatrix.ts index dac4021252..54739e8bb5 100644 --- a/webapp/src/components/common/MatrixGrid/useMatrix.ts +++ b/webapp/src/components/common/MatrixGrid/useMatrix.ts @@ -145,6 +145,7 @@ export function useMatrix( title: "Date", type: ColumnTypes.DateTime, editable: false, + themeOverride: { bgCell: "#2D2E40" }, }); } From 6cdd151e3e5ee6f81c13788f474a9482f9af90fb Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Mon, 23 Sep 2024 14:47:52 +0200 Subject: [PATCH 098/182] feat(ui): add columns resize to `MatrixGrid` --- .../src/components/common/MatrixGrid/index.tsx | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/webapp/src/components/common/MatrixGrid/index.tsx b/webapp/src/components/common/MatrixGrid/index.tsx index 29363ac26b..4638aa2966 100644 --- a/webapp/src/components/common/MatrixGrid/index.tsx +++ b/webapp/src/components/common/MatrixGrid/index.tsx @@ -18,6 +18,7 @@ import DataEditor, { EditableGridCell, EditListItem, GridCellKind, + GridColumn, GridSelection, Item, } from "@glideapps/glide-data-grid"; @@ -45,7 +46,7 @@ export interface MatrixGridProps { function MatrixGrid({ data, rows, - columns, + columns: initialColumns, dateTime, aggregates, rowHeaders, @@ -56,6 +57,7 @@ function MatrixGrid({ isReaOnlyEnabled, isPercentDisplayEnabled, }: MatrixGridProps) { + const [columns, setColumns] = useState(initialColumns); const [selection, setSelection] = useState({ columns: CompactSelection.empty(), rows: CompactSelection.empty(), @@ -88,6 +90,18 @@ function MatrixGrid({ //////////////////////////////////////////////////////////////// // Event Handlers //////////////////////////////////////////////////////////////// + const handleColumnResize = ( + column: GridColumn, + newSize: number, + colIndex: number, + newSizeWithGrow: number, + ) => { + const newColumns = columns.map((col, index) => + index === colIndex ? { ...col, width: newSize } : col, + ); + + setColumns(newColumns); + }; const handleCellEdited = (coordinates: Item, value: EditableGridCell) => { if (value.kind !== GridCellKind.Number) { @@ -160,6 +174,7 @@ function MatrixGrid({ fillHandle rowMarkers="both" freezeColumns={1} // Make the first column sticky + onColumnResize={handleColumnResize} />
From 39cb34c0a8f56bdd74eb4e49749b625f3dc024ef Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Mon, 23 Sep 2024 15:05:26 +0200 Subject: [PATCH 099/182] feat(ui): change the decimal and thousand separator for number cells --- webapp/src/components/common/MatrixGrid/index.tsx | 1 + .../common/MatrixGrid/useGridCellContent.ts | 12 ++++++++---- webapp/src/components/common/MatrixGrid/utils.ts | 13 +++++++++++++ 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/webapp/src/components/common/MatrixGrid/index.tsx b/webapp/src/components/common/MatrixGrid/index.tsx index 4638aa2966..456967a2b0 100644 --- a/webapp/src/components/common/MatrixGrid/index.tsx +++ b/webapp/src/components/common/MatrixGrid/index.tsx @@ -90,6 +90,7 @@ function MatrixGrid({ //////////////////////////////////////////////////////////////// // Event Handlers //////////////////////////////////////////////////////////////// + const handleColumnResize = ( column: GridColumn, newSize: number, diff --git a/webapp/src/components/common/MatrixGrid/useGridCellContent.ts b/webapp/src/components/common/MatrixGrid/useGridCellContent.ts index 7e385a448c..f9364a129b 100644 --- a/webapp/src/components/common/MatrixGrid/useGridCellContent.ts +++ b/webapp/src/components/common/MatrixGrid/useGridCellContent.ts @@ -20,7 +20,7 @@ import { ColumnTypes, MatrixAggregates, } from "./types"; -import { formatDateTime } from "./utils"; +import { formatDateTime, formatNumber } from "./utils"; type CellContentGenerator = ( row: number, @@ -65,9 +65,11 @@ const cellContentGenerators: Record = { return { kind: GridCellKind.Number, data: value, - displayData: value?.toString(), + displayData: formatNumber(value), // Format thousands and decimal separator readonly: !column.editable, allowOverlay: true, + decimalSeparator: ".", + thousandSeparator: " ", }; }, [ColumnTypes.Aggregate]: (row, col, column, data, dateTime, aggregates) => { @@ -76,9 +78,11 @@ const cellContentGenerators: Record = { return { kind: GridCellKind.Number, data: value, - displayData: value?.toString() ?? "", + displayData: formatNumber(value ?? 0), // Format thousands and decimal separator readonly: !column.editable, - allowOverlay: true, + allowOverlay: false, + decimalSeparator: ".", + thousandSeparator: " ", }; }, }; diff --git a/webapp/src/components/common/MatrixGrid/utils.ts b/webapp/src/components/common/MatrixGrid/utils.ts index c27c8f9b85..f61938aa11 100644 --- a/webapp/src/components/common/MatrixGrid/utils.ts +++ b/webapp/src/components/common/MatrixGrid/utils.ts @@ -106,6 +106,19 @@ const dateTimeFormatOptions: Intl.DateTimeFormatOptions = { // Functions //////////////////////////////////////////////////////////////// +/** + * Formats a number by adding spaces as thousand separators. + * + * @param num - The number to format. + * @returns The formatted number as a string. + */ +export function formatNumber(num: number): string { + // TODO: Add tests + const parts = num.toString().split("."); + parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, " "); + return parts.join("."); +} + /** * Formats a date and time string using predefined locale and format options. * From eb3b1d2ccaa3c9860d60fe5372c8bc9b14577174 Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Thu, 26 Sep 2024 15:59:49 +0200 Subject: [PATCH 100/182] refactor(ui): improve aggregates columns usage --- .../Modelization/Areas/Hydro/HydroMatrix.tsx | 1 + .../explore/Modelization/Areas/Hydro/utils.ts | 3 + .../explore/Modelization/Areas/Load.tsx | 2 +- .../explore/Modelization/Areas/MiscGen.tsx | 4 +- .../explore/Modelization/Areas/Reserve.tsx | 4 +- .../explore/Modelization/Areas/Solar.tsx | 2 +- .../explore/Modelization/Areas/Wind.tsx | 2 +- .../components/common/MatrixGrid/Matrix.tsx | 7 +- .../components/common/MatrixGrid/index.tsx | 2 +- .../src/components/common/MatrixGrid/types.ts | 23 +++- .../MatrixGrid/useGridCellContent.test.ts | 99 ++++++++++++++- .../common/MatrixGrid/useGridCellContent.ts | 4 +- .../common/MatrixGrid/useMatrix.test.tsx | 2 +- .../components/common/MatrixGrid/useMatrix.ts | 76 ++++++----- .../common/MatrixGrid/utils.test.ts | 54 +++++++- .../src/components/common/MatrixGrid/utils.ts | 119 +++++++++++------- 16 files changed, 289 insertions(+), 115 deletions(-) diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx index 33a3f3461b..701891c9db 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx @@ -40,6 +40,7 @@ function HydroMatrix({ type }: Props) { url={hydroMatrix.url.replace("{areaId}", areaId)} customColumns={hydroMatrix.columns} customRowHeaders={hydroMatrix.rowHeaders} + aggregateColumns={hydroMatrix.aggregates} enableDateTimeColumn={hydroMatrix.enableDateTimeColumn} enableReadOnly={hydroMatrix.enableReadOnly} enablePercentDisplay={hydroMatrix.enablePercentDisplay} diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts index e067c36b31..de05c04983 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts @@ -49,6 +49,7 @@ export interface HydroMatrixProps { columns?: string[]; rowHeaders?: string[]; fetchFn?: fetchMatrixFn; + aggregates?: AggregateConfig; enableDateTimeColumn?: boolean; enableReadOnly?: boolean; enablePercentDisplay?: boolean; @@ -154,10 +155,12 @@ export const MATRICES: Matrices = { [HydroMatrix.HydroStorage]: { title: "Hydro Storage", url: "input/hydro/series/{areaId}/mod", + aggregates: "stats", }, [HydroMatrix.RunOfRiver]: { title: "Run Of River", url: "input/hydro/series/{areaId}/ror", + aggregates: "stats", }, [HydroMatrix.MinGen]: { title: "Min Gen", diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx index b6c051dc41..2f83633bb7 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx @@ -24,7 +24,7 @@ function Load() { // JSX //////////////////////////////////////////////////////////////// - return ; + return ; } export default Load; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx index dde3f72734..e2926384b5 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx @@ -35,7 +35,9 @@ function MiscGen() { // JSX //////////////////////////////////////////////////////////////// - return ; + return ( + + ); } export default MiscGen; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Reserve.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Reserve.tsx index 279ddebfde..844dba6d7a 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Reserve.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Reserve.tsx @@ -31,7 +31,9 @@ function Reserve() { // JSX //////////////////////////////////////////////////////////////// - return ; + return ( + + ); } export default Reserve; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Solar.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Solar.tsx index 029146ddc0..0217250d97 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Solar.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Solar.tsx @@ -25,7 +25,7 @@ function Solar() { // JSX //////////////////////////////////////////////////////////////// - return ; + return ; } export default Solar; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Wind.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Wind.tsx index af966811f2..7a545803c0 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Wind.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Wind.tsx @@ -25,7 +25,7 @@ function Wind() { // JSX //////////////////////////////////////////////////////////////// - return ; + return ; } export default Wind; diff --git a/webapp/src/components/common/MatrixGrid/Matrix.tsx b/webapp/src/components/common/MatrixGrid/Matrix.tsx index 6affd46d11..896f0a377f 100644 --- a/webapp/src/components/common/MatrixGrid/Matrix.tsx +++ b/webapp/src/components/common/MatrixGrid/Matrix.tsx @@ -24,6 +24,7 @@ import { MatrixContainer, MatrixHeader, MatrixTitle } from "./style"; import MatrixActions from "./MatrixActions"; import EmptyView from "../page/SimpleContent"; import { fetchMatrixFn } from "../../App/Singlestudy/explore/Modelization/Areas/Hydro/utils"; +import { AggregateConfig } from "./types"; interface MatrixProps { url: string; @@ -31,7 +32,7 @@ interface MatrixProps { customRowHeaders?: string[]; enableDateTimeColumn?: boolean; enableTimeSeriesColumns?: boolean; - enableAggregateColumns?: boolean; + aggregateColumns?: AggregateConfig; enableRowHeaders?: boolean; enablePercentDisplay?: boolean; enableReadOnly?: boolean; @@ -46,7 +47,7 @@ function Matrix({ customRowHeaders = [], enableDateTimeColumn = true, enableTimeSeriesColumns = true, - enableAggregateColumns = false, + aggregateColumns = false, enableRowHeaders = customRowHeaders.length > 0, enablePercentDisplay = false, enableReadOnly = false, @@ -80,8 +81,8 @@ function Matrix({ url, enableDateTimeColumn, enableTimeSeriesColumns, - enableAggregateColumns, enableRowHeaders, + aggregateColumns, customColumns, colWidth, fetchMatrixData, diff --git a/webapp/src/components/common/MatrixGrid/index.tsx b/webapp/src/components/common/MatrixGrid/index.tsx index 456967a2b0..a96ec48176 100644 --- a/webapp/src/components/common/MatrixGrid/index.tsx +++ b/webapp/src/components/common/MatrixGrid/index.tsx @@ -33,7 +33,7 @@ export interface MatrixGridProps { rows: number; columns: EnhancedGridColumn[]; dateTime?: string[]; - aggregates?: MatrixAggregates; + aggregates?: Partial; rowHeaders?: string[]; width?: string; height?: string; diff --git a/webapp/src/components/common/MatrixGrid/types.ts b/webapp/src/components/common/MatrixGrid/types.ts index 87f7b80f3f..f090a869e6 100644 --- a/webapp/src/components/common/MatrixGrid/types.ts +++ b/webapp/src/components/common/MatrixGrid/types.ts @@ -30,12 +30,20 @@ export const ColumnTypes = { } as const; export const Operations = { - ADD: "+", - SUB: "-", - MUL: "*", - DIV: "/", - ABS: "ABS", - EQ: "=", + Add: "+", + Sub: "-", + Mul: "*", + Div: "/", + Abs: "ABS", + Eq: "=", +} as const; + +// !NOTE: Keep lowercase to match Glide Data Grid column ids +export const Aggregates = { + Min: "min", + Max: "max", + Avg: "avg", + Total: "total", } as const; //////////////////////////////////////////////////////////////// @@ -67,6 +75,9 @@ export interface EnhancedGridColumn extends BaseGridColumn { editable: boolean; } +export type AggregateType = (typeof Aggregates)[keyof typeof Aggregates]; +export type AggregateConfig = AggregateType[] | boolean | "stats" | "all"; + export interface MatrixAggregates { min: number[]; max: number[]; diff --git a/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts b/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts index 11485c9f0c..880cf9fe5b 100644 --- a/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts +++ b/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts @@ -527,7 +527,7 @@ describe("useGridCellContent additional tests", () => { } }); - test("handles very large numbers correctly", () => { + test("formats number cells correctly", () => { const columns: EnhancedGridColumn[] = [ { id: "data1", @@ -537,17 +537,104 @@ describe("useGridCellContent additional tests", () => { editable: true, }, ]; - const largeNumber = 1e20; - const data = [[largeNumber]]; + + const data = [[1234567.89]]; + + const getCellContent = renderGridCellContent(data, columns); + const cell = getCellContent([0, 0]); + + if (cell.kind === "number" && "data" in cell) { + expect(cell.data).toBe(1234567.89); + expect(cell.displayData).toBe("1 234 567.89"); + } else { + throw new Error("Expected a number cell with formatted display data"); + } + }); + + test("handles very large and very small numbers correctly", () => { + const columns: EnhancedGridColumn[] = [ + { + id: "large", + title: "Large", + type: ColumnTypes.Number, + width: 50, + editable: true, + }, + { + id: "small", + title: "Small", + type: ColumnTypes.Number, + width: 50, + editable: true, + }, + ]; + + const data = [[1e20, 0.00001]]; + + const getCellContent = renderGridCellContent(data, columns); + + const largeCell = getCellContent([0, 0]); + if (largeCell.kind === "number" && "data" in largeCell) { + expect(largeCell.data).toBe(1e20); + expect(largeCell.displayData).toBe("100 000 000 000 000 000 000"); + } else { + throw new Error("Expected a number cell for large number"); + } + + const smallCell = getCellContent([1, 0]); + if (smallCell.kind === "number" && "data" in smallCell) { + expect(smallCell.data).toBe(0.00001); + expect(smallCell.displayData).toBe("0.00001"); + } else { + throw new Error("Expected a number cell for small number"); + } + }); + + test("handles negative numbers correctly", () => { + const columns: EnhancedGridColumn[] = [ + { + id: "negative", + title: "Negative", + type: ColumnTypes.Number, + width: 50, + editable: true, + }, + ]; + + const data = [[-1234567.89]]; const getCellContent = renderGridCellContent(data, columns); + const cell = getCellContent([0, 0]); + if (cell.kind === "number" && "data" in cell) { + expect(cell.data).toBe(-1234567.89); + expect(cell.displayData).toBe("-1 234 567.89"); + } else { + throw new Error("Expected a number cell with formatted negative number"); + } + }); + + test("handles zero correctly", () => { + const columns: EnhancedGridColumn[] = [ + { + id: "zero", + title: "Zero", + type: ColumnTypes.Number, + width: 50, + editable: true, + }, + ]; + + const data = [[0]]; + + const getCellContent = renderGridCellContent(data, columns); const cell = getCellContent([0, 0]); + if (cell.kind === "number" && "data" in cell) { - expect(cell.data).toBe(largeNumber); - expect(cell.displayData).toBe(largeNumber.toString()); + expect(cell.data).toBe(0); + expect(cell.displayData).toBe("0"); } else { - throw new Error("Expected a number cell with correct large number data"); + throw new Error("Expected a number cell for zero"); } }); }); diff --git a/webapp/src/components/common/MatrixGrid/useGridCellContent.ts b/webapp/src/components/common/MatrixGrid/useGridCellContent.ts index f9364a129b..efd696f3d2 100644 --- a/webapp/src/components/common/MatrixGrid/useGridCellContent.ts +++ b/webapp/src/components/common/MatrixGrid/useGridCellContent.ts @@ -28,7 +28,7 @@ type CellContentGenerator = ( column: EnhancedGridColumn, data: number[][], dateTime?: string[], - aggregates?: MatrixAggregates, + aggregates?: Partial, rowHeaders?: string[], ) => GridCell; @@ -118,7 +118,7 @@ export function useGridCellContent( columns: EnhancedGridColumn[], gridToData: (cell: Item) => Item | null, dateTime?: string[], - aggregates?: MatrixAggregates, + aggregates?: Partial, rowHeaders?: string[], isReadOnlyEnabled = false, isPercentDisplayEnabled = false, diff --git a/webapp/src/components/common/MatrixGrid/useMatrix.test.tsx b/webapp/src/components/common/MatrixGrid/useMatrix.test.tsx index f6de8f7596..492a433097 100644 --- a/webapp/src/components/common/MatrixGrid/useMatrix.test.tsx +++ b/webapp/src/components/common/MatrixGrid/useMatrix.test.tsx @@ -138,7 +138,7 @@ describe("useMatrix", () => { expect(result.current.data[1][0]).toBe(5); expect(result.current.data[0][1]).toBe(6); - expect(result.current.pendingUpdatesCount).toBe(2); + expect(result.current.pendingUpdatesCount).toBe(1); }); test("should handle save updates", async () => { diff --git a/webapp/src/components/common/MatrixGrid/useMatrix.ts b/webapp/src/components/common/MatrixGrid/useMatrix.ts index 54739e8bb5..9ae7536c78 100644 --- a/webapp/src/components/common/MatrixGrid/useMatrix.ts +++ b/webapp/src/components/common/MatrixGrid/useMatrix.ts @@ -16,7 +16,7 @@ import { useCallback, useEffect, useMemo, useState } from "react"; import { AxiosError } from "axios"; import { enqueueSnackbar } from "notistack"; import { t } from "i18next"; -import { MatrixIndex, Operator } from "../../../common/types"; +import { MatrixIndex } from "../../../common/types"; import useEnqueueErrorSnackbar from "../../../hooks/useEnqueueErrorSnackbar"; import { getStudyMatrixIndex, @@ -30,12 +30,16 @@ import { GridUpdate, MatrixUpdateDTO, MatrixAggregates, + AggregateConfig, + Aggregates, + Operations, } from "./types"; import { aggregatesTheme, calculateMatrixAggregates, generateDataColumns, generateDateTime, + getAggregateTypes, } from "./utils"; import useUndo from "use-undo"; import { GridCellKind } from "@glideapps/glide-data-grid"; @@ -44,7 +48,7 @@ import { fetchMatrixFn } from "../../App/Singlestudy/explore/Modelization/Areas/ interface DataState { data: MatrixDataDTO["data"]; - aggregates: MatrixAggregates; + aggregates: Partial; pendingUpdates: MatrixUpdateDTO[]; updateCount: number; } @@ -54,8 +58,8 @@ export function useMatrix( url: string, enableDateTimeColumn: boolean, enableTimeSeriesColumns: boolean, - enableAggregateColumns: boolean, enableRowHeaders?: boolean, + aggregatesConfig?: AggregateConfig, customColumns?: string[] | readonly string[], colWidth?: number, fetchMatrixData?: fetchMatrixFn, @@ -74,6 +78,12 @@ export function useMatrix( updateCount: 0, }); + // Determine the aggregate types to display in the matrix + const aggregateTypes = useMemo( + () => getAggregateTypes(aggregatesConfig || []), + [aggregatesConfig], + ); + const fetchMatrix = useCallback( async (loadingState = true) => { // !NOTE This is a temporary solution to ensure the matrix is up to date @@ -93,9 +103,7 @@ export function useMatrix( setState({ data: matrix.data, - aggregates: enableAggregateColumns - ? calculateMatrixAggregates(matrix.data) - : { min: [], max: [], avg: [], total: [] }, + aggregates: calculateMatrixAggregates(matrix.data, aggregateTypes), pendingUpdates: [], updateCount: 0, }); @@ -115,7 +123,7 @@ export function useMatrix( } }, [ - enableAggregateColumns, + aggregateTypes, enqueueErrorSnackbar, fetchMatrixData, setState, @@ -165,33 +173,20 @@ export function useMatrix( colWidth, ); - const aggregateColumns: EnhancedGridColumn[] = enableAggregateColumns - ? [ - { - id: "avg", - title: "Avg", - type: ColumnTypes.Aggregate, - editable: false, - themeOverride: aggregatesTheme, - }, - { - id: "min", - title: "Min", - type: ColumnTypes.Aggregate, - editable: false, - themeOverride: { ...aggregatesTheme, bgCell: "#464770" }, - }, - { - id: "max", - title: "Max", - type: ColumnTypes.Aggregate, - editable: false, - themeOverride: { ...aggregatesTheme, bgCell: "#464770" }, - }, - ] - : []; - - return [...baseColumns, ...dataColumns, ...aggregateColumns]; + const aggregatesColumns: EnhancedGridColumn[] = aggregateTypes.map( + (aggregateType) => ({ + id: aggregateType, + title: aggregateType.charAt(0).toUpperCase() + aggregateType.slice(1), // Capitalize first letter + type: ColumnTypes.Aggregate, + editable: false, + themeOverride: + aggregateType === Aggregates.Avg + ? aggregatesTheme + : { ...aggregatesTheme, bgCell: "#464770" }, + }), + ); + + return [...baseColumns, ...dataColumns, ...aggregatesColumns]; }, [ currentState.data, enableDateTimeColumn, @@ -200,7 +195,7 @@ export function useMatrix( columnCount, customColumns, colWidth, - enableAggregateColumns, + aggregateTypes, ]); // Apply updates to the matrix data and store them in the pending updates list @@ -216,7 +211,7 @@ export function useMatrix( return { coordinates: [[col, row]], operation: { - operation: Operator.EQ, + operation: Operations.Eq, value: value.data, }, }; @@ -229,9 +224,10 @@ export function useMatrix( ); // Recalculate aggregates with the updated data - const newAggregates = enableAggregateColumns - ? calculateMatrixAggregates(updatedData) - : { min: [], max: [], avg: [], total: [] }; + const newAggregates = calculateMatrixAggregates( + updatedData, + aggregateTypes, + ); setState({ data: updatedData, @@ -244,7 +240,7 @@ export function useMatrix( currentState.data, currentState.pendingUpdates, currentState.updateCount, - enableAggregateColumns, + aggregateTypes, setState, ], ); diff --git a/webapp/src/components/common/MatrixGrid/utils.test.ts b/webapp/src/components/common/MatrixGrid/utils.test.ts index b6444c43cb..6d96350d86 100644 --- a/webapp/src/components/common/MatrixGrid/utils.test.ts +++ b/webapp/src/components/common/MatrixGrid/utils.test.ts @@ -19,6 +19,7 @@ import { import { ColumnTypes } from "./types"; import { calculateMatrixAggregates, + formatNumber, generateDateTime, generateTimeSeriesColumns, } from "./utils"; @@ -194,7 +195,12 @@ describe("calculateMatrixAggregates", () => { [4, 5, 6], [7, 8, 9], ]; - const result = calculateMatrixAggregates(matrix); + const result = calculateMatrixAggregates(matrix, [ + "min", + "max", + "avg", + "total", + ]); expect(result.min).toEqual([1, 4, 7]); expect(result.max).toEqual([3, 6, 9]); @@ -207,7 +213,12 @@ describe("calculateMatrixAggregates", () => { [1.1, 2.2, 3.3], [4.4, 5.5, 6.6], ]; - const result = calculateMatrixAggregates(matrix); + const result = calculateMatrixAggregates(matrix, [ + "min", + "max", + "avg", + "total", + ]); expect(result.min).toEqual([1.1, 4.4]); expect(result.max).toEqual([3.3, 6.6]); @@ -220,7 +231,12 @@ describe("calculateMatrixAggregates", () => { [-1, -2, -3], [-4, 0, 4], ]; - const result = calculateMatrixAggregates(matrix); + const result = calculateMatrixAggregates(matrix, [ + "min", + "max", + "avg", + "total", + ]); expect(result.min).toEqual([-3, -4]); expect(result.max).toEqual([-1, 4]); @@ -230,7 +246,12 @@ describe("calculateMatrixAggregates", () => { it("should handle single-element rows", () => { const matrix = [[1], [2], [3]]; - const result = calculateMatrixAggregates(matrix); + const result = calculateMatrixAggregates(matrix, [ + "min", + "max", + "avg", + "total", + ]); expect(result.min).toEqual([1, 2, 3]); expect(result.max).toEqual([1, 2, 3]); @@ -243,7 +264,12 @@ describe("calculateMatrixAggregates", () => { [1000000, 2000000, 3000000], [4000000, 5000000, 6000000], ]; - const result = calculateMatrixAggregates(matrix); + const result = calculateMatrixAggregates(matrix, [ + "min", + "max", + "avg", + "total", + ]); expect(result.min).toEqual([1000000, 4000000]); expect(result.max).toEqual([3000000, 6000000]); @@ -256,8 +282,24 @@ describe("calculateMatrixAggregates", () => { [1, 2, 4], [10, 20, 39], ]; - const result = calculateMatrixAggregates(matrix); + const result = calculateMatrixAggregates(matrix, ["avg"]); expect(result.avg).toEqual([2, 23]); }); }); + +describe("formatNumber", () => { + test("formats numbers correctly", () => { + expect(formatNumber(1234567.89)).toBe("1 234 567.89"); + expect(formatNumber(1000000)).toBe("1 000 000"); + expect(formatNumber(1234.5678)).toBe("1 234.5678"); + expect(formatNumber(undefined)).toBe(""); + }); + + test("handles edge cases", () => { + expect(formatNumber(0)).toBe("0"); + expect(formatNumber(-1234567.89)).toBe("-1 234 567.89"); + expect(formatNumber(0.00001)).toBe("0.00001"); + expect(formatNumber(1e20)).toBe("100 000 000 000 000 000 000"); + }); +}); diff --git a/webapp/src/components/common/MatrixGrid/utils.ts b/webapp/src/components/common/MatrixGrid/utils.ts index f61938aa11..a1709130f6 100644 --- a/webapp/src/components/common/MatrixGrid/utils.ts +++ b/webapp/src/components/common/MatrixGrid/utils.ts @@ -20,6 +20,9 @@ import { TimeSeriesColumnOptions, CustomColumnOptions, MatrixAggregates, + AggregateType, + AggregateConfig, + Aggregates, } from "./types"; import { getCurrentLanguage } from "../../../utils/i18nUtils"; import { Theme } from "@glideapps/glide-data-grid"; @@ -112,11 +115,18 @@ const dateTimeFormatOptions: Intl.DateTimeFormatOptions = { * @param num - The number to format. * @returns The formatted number as a string. */ -export function formatNumber(num: number): string { - // TODO: Add tests - const parts = num.toString().split("."); - parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, " "); - return parts.join("."); +export function formatNumber(num: number | undefined): string { + if (num === undefined) { + return ""; + } + + const [integerPart, decimalPart] = num.toString().split("."); + + // Format integer part with thousand separators + const formattedInteger = integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, " "); + + // Return formatted number, preserving decimal part if it exists + return decimalPart ? `${formattedInteger}.${decimalPart}` : formattedInteger; } /** @@ -282,48 +292,67 @@ export function generateDataColumns( return []; } -/** - * Calculates aggregate values (min, max, avg, total) for each column in a 2D numeric matrix. - * - * This function processes a 2D array (matrix) of numbers, computing four types of aggregates - * for each column. - * - * @param matrix - A 2D array of numbers representing the matrix. Each inner array is treated as a column. - * @returns An object containing four arrays, each corresponding to an aggregate type: - * min: An array of minimum values for each column. - * max: An array of maximum values for each column. - * avg: An array of average values for each column. - * total: An array of sum totals for each column. - * - * @example Calculating aggregates for a 3x3 matrix - * const matrix = [ - * [1, 2, 3], - * [4, 5, 6], - * [7, 8, 9] - * ]; - * const result = calculateAggregates(matrix); - * console.log(result); - * Output: { - * min: [1, 2, 3], - * max: [7, 8, 9], - * avg: [4, 5, 6], - * total: [12, 15, 18] - * } - */ -export function calculateMatrixAggregates(matrix: number[][]) { - const aggregates: MatrixAggregates = { - min: [], - max: [], - avg: [], - total: [], - }; +export function getAggregateTypes( + aggregateConfig: AggregateConfig, +): AggregateType[] { + if (aggregateConfig === "stats") { + return [Aggregates.Avg, Aggregates.Min, Aggregates.Max]; + } + + if (aggregateConfig === "all") { + return [Aggregates.Min, Aggregates.Max, Aggregates.Avg, Aggregates.Total]; + } + + if (Array.isArray(aggregateConfig)) { + return aggregateConfig; + } + + return []; +} + +export function calculateMatrixAggregates( + matrix: number[][], + aggregateTypes: AggregateType[], +): Partial { + const aggregates: Partial = {}; matrix.forEach((row) => { - aggregates.min.push(Math.min(...row)); - aggregates.max.push(Math.max(...row)); - const sum = row.reduce((sum, num) => sum + num, 0); - aggregates.avg.push(Number((sum / row.length).toFixed())); - aggregates.total.push(Number(sum.toFixed())); + if (aggregateTypes.includes(Aggregates.Min)) { + if (!aggregates.min) { + aggregates.min = []; + } + aggregates.min.push(Math.min(...row)); + } + + if (aggregateTypes.includes(Aggregates.Max)) { + if (!aggregates.max) { + aggregates.max = []; + } + aggregates.max.push(Math.max(...row)); + } + + if ( + aggregateTypes.includes(Aggregates.Avg) || + aggregateTypes.includes(Aggregates.Total) + ) { + const sum = row.reduce((sum, num) => sum + num, 0); + + if (aggregateTypes.includes(Aggregates.Avg)) { + if (!aggregates.avg) { + aggregates.avg = []; + } + + aggregates.avg.push(Number((sum / row.length).toFixed())); + } + + if (aggregateTypes.includes(Aggregates.Total)) { + if (!aggregates.total) { + aggregates.total = []; + } + + aggregates.total.push(Number(sum.toFixed())); + } + } }); return aggregates; From 5188e5e33d07200ccc0c9bc989035fcfe0cda2aa Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Mon, 30 Sep 2024 16:22:26 +0200 Subject: [PATCH 101/182] feat(ui): update date generation using `date-fns` instead of `moment` --- webapp/package-lock.json | 21 +++ webapp/package.json | 2 + webapp/public/locales/en/main.json | 1 + webapp/public/locales/fr/main.json | 1 + .../explore/Results/ResultDetails/index.tsx | 59 ++---- .../src/components/common/MatrixGrid/types.ts | 32 +++- .../common/MatrixGrid/useGridCellContent.ts | 4 +- .../src/components/common/MatrixGrid/utils.ts | 170 +++++++++--------- 8 files changed, 152 insertions(+), 138 deletions(-) diff --git a/webapp/package-lock.json b/webapp/package-lock.json index c516722650..809c088d3d 100644 --- a/webapp/package-lock.json +++ b/webapp/package-lock.json @@ -20,6 +20,7 @@ "axios": "1.7.7", "clsx": "2.1.1", "d3": "5.16.0", + "date-fns": "4.1.0", "debug": "4.3.7", "draft-convert": "2.1.13", "draft-js": "0.11.7", @@ -72,6 +73,7 @@ "@testing-library/user-event": "14.5.2", "@total-typescript/ts-reset": "0.6.1", "@types/d3": "5.16.0", + "@types/date-fns": "2.6.0", "@types/debug": "4.1.12", "@types/draft-convert": "2.1.8", "@types/draft-js": "0.11.18", @@ -3732,6 +3734,16 @@ "@types/d3-selection": "*" } }, + "node_modules/@types/date-fns": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@types/date-fns/-/date-fns-2.6.0.tgz", + "integrity": "sha512-9DSw2ZRzV0Tmpa6PHHJbMcZn79HHus+BBBohcOaDzkK/G3zMjDUDYjJIWBFLbkh+1+/IOS0A59BpQfdr37hASg==", + "deprecated": "This is a stub types definition for date-fns (https://github.com/date-fns/date-fns). date-fns provides its own type definitions, so you don't need @types/date-fns installed!", + "dev": true, + "dependencies": { + "date-fns": "*" + } + }, "node_modules/@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", @@ -6148,6 +6160,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/date-fns": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", + "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, "node_modules/debug": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", diff --git a/webapp/package.json b/webapp/package.json index da78848498..117add1312 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -27,6 +27,7 @@ "clsx": "2.1.1", "d3": "5.16.0", "debug": "4.3.7", + "date-fns": "4.1.0", "draft-convert": "2.1.13", "draft-js": "0.11.7", "draftjs-to-html": "0.9.1", @@ -83,6 +84,7 @@ "@types/draft-js": "0.11.18", "@types/draftjs-to-html": "0.8.4", "@types/js-cookie": "3.0.6", + "@types/date-fns": "2.6.0", "@types/jsoneditor": "9.9.5", "@types/lodash": "4.17.9", "@types/node": "22.7.3", diff --git a/webapp/public/locales/en/main.json b/webapp/public/locales/en/main.json index eb81c6c734..cd400940b1 100644 --- a/webapp/public/locales/en/main.json +++ b/webapp/public/locales/en/main.json @@ -80,6 +80,7 @@ "global.time.weekly": "Weekly", "global.time.monthly": "Monthly", "global.time.annual": "Annual", + "global.time.weekShort": "W.", "global.update.success": "Update successful", "global.errorLogs": "Error logs", "global.error.emptyName": "Name cannot be empty", diff --git a/webapp/public/locales/fr/main.json b/webapp/public/locales/fr/main.json index a22f7ce299..99c53ce430 100644 --- a/webapp/public/locales/fr/main.json +++ b/webapp/public/locales/fr/main.json @@ -80,6 +80,7 @@ "global.time.weekly": "Hebdomadaire", "global.time.monthly": "Mensuel", "global.time.annual": "Annuel", + "global.time.weekShort": "S.", "global.update.success": "Mise à jour réussie", "global.errorLogs": "Logs d'erreurs", "global.error.emptyName": "Le nom ne peut pas être vide", diff --git a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx index 317dc599ff..ad2a838019 100644 --- a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx @@ -53,14 +53,17 @@ import UsePromiseCond, { } from "../../../../../common/utils/UsePromiseCond"; import useStudySynthesis from "../../../../../../redux/hooks/useStudySynthesis"; import ButtonBack from "../../../../../common/ButtonBack"; -import moment from "moment"; import MatrixGrid from "../../../../../common/MatrixGrid/index.tsx"; -import { generateCustomColumns } from "../../../../../common/MatrixGrid/utils.ts"; +import { + generateCustomColumns, + generateDateTime, +} from "../../../../../common/MatrixGrid/utils.ts"; import { ColumnTypes } from "../../../../../common/MatrixGrid/types.ts"; import SplitView from "../../../../../common/SplitView/index.tsx"; import ResultFilters from "./ResultFilters.tsx"; import { toError } from "../../../../../../utils/fnUtils.ts"; import EmptyView from "../../../../../common/page/SimpleContent.tsx"; +import { getStudyMatrixIndex } from "../../../../../../services/api/matrix.ts"; function ResultDetails() { const { study } = useOutletContext<{ study: StudyMetadata }>(); @@ -151,6 +154,15 @@ function ResultDetails() { }, ); + const { data: dateTimeMetadata } = usePromise( + () => getStudyMatrixIndex(study.id, path), + { + deps: [study.id, path], + }, + ); + + const dateTime = dateTimeMetadata && generateDateTime(dateTimeMetadata); + const synthesisRes = usePromise( () => { if (outputId && selectedItem && isSynthesis) { @@ -164,47 +176,6 @@ function ResultDetails() { }, ); - // !NOTE: Workaround to display the date in the correct format, to be replaced by a proper solution. - const dateTimeFromIndex = useMemo(() => { - if (!matrixRes.data) { - return []; - } - - // Annual format has a static string - if (timestep === Timestep.Annual) { - return ["Annual"]; - } - - // Directly use API's week index (handles 53 weeks) as no formatting is required. - // !NOTE: Suboptimal: Assumes API consistency, lacks flexibility. - if (timestep === Timestep.Weekly) { - return matrixRes.data.index.map((weekNumber) => weekNumber.toString()); - } - - // Original date/time format mapping for moment parsing - const parseFormat = { - [Timestep.Hourly]: "MM/DD HH:mm", - [Timestep.Daily]: "MM/DD", - [Timestep.Monthly]: "MM", - }[timestep]; - - // Output formats for each timestep to match legacy UI requirements - const outputFormat = { - [Timestep.Hourly]: "DD MMM HH:mm I", - [Timestep.Daily]: "DD MMM I", - [Timestep.Monthly]: "MMM", - }[timestep]; - - const needsIndex = - timestep === Timestep.Hourly || timestep === Timestep.Daily; - - return matrixRes.data.index.map((dateTime, i) => - moment(dateTime, parseFormat).format( - outputFormat.replace("I", needsIndex ? ` - ${i + 1}` : ""), - ), - ); - }, [matrixRes.data, timestep]); - //////////////////////////////////////////////////////////////// // Event Handlers //////////////////////////////////////////////////////////////// @@ -320,7 +291,7 @@ function ResultDetails() { titles: matrix.columns, }), ]} - dateTime={dateTimeFromIndex} + dateTime={dateTime} isReaOnlyEnabled /> ) diff --git a/webapp/src/components/common/MatrixGrid/types.ts b/webapp/src/components/common/MatrixGrid/types.ts index f090a869e6..a996de9a63 100644 --- a/webapp/src/components/common/MatrixGrid/types.ts +++ b/webapp/src/components/common/MatrixGrid/types.ts @@ -22,6 +22,8 @@ import { // Enums //////////////////////////////////////////////////////////////// +// TODO update enums to be singular + export const ColumnTypes = { DateTime: "datetime", Number: "number", @@ -46,13 +48,37 @@ export const Aggregates = { Total: "total", } as const; +export const TimeFrequency = { + // TODO update old enum occurrences + ANNUAL: "annual", + MONTHLY: "monthly", + WEEKLY: "weekly", + DAILY: "daily", + HOURLY: "hourly", +} as const; + //////////////////////////////////////////////////////////////// // Types //////////////////////////////////////////////////////////////// // Derived types export type ColumnType = (typeof ColumnTypes)[keyof typeof ColumnTypes]; +// TODO add sufix Type export type Operation = (typeof Operations)[keyof typeof Operations]; +export type AggregateType = (typeof Aggregates)[keyof typeof Aggregates]; +export type TimeFrequencyType = + (typeof TimeFrequency)[keyof typeof TimeFrequency]; + +export type DateIncrementFunction = (date: Date, amount: number) => Date; +export type FormatFunction = (date: Date, firstWeekSize: number) => string; + +// !NOTE: This is temporary, date/time array should be generated by the API +export interface DateTimeMetadataDTO { + start_date: string; + steps: number; + first_week_size: number; + level: TimeFrequencyType; +} export interface TimeSeriesColumnOptions { count: number; @@ -75,7 +101,6 @@ export interface EnhancedGridColumn extends BaseGridColumn { editable: boolean; } -export type AggregateType = (typeof Aggregates)[keyof typeof Aggregates]; export type AggregateConfig = AggregateType[] | boolean | "stats" | "all"; export interface MatrixAggregates { @@ -111,8 +136,3 @@ export interface MatrixUpdateDTO { coordinates: number[][]; // Array of [col, row] pairs operation: MatrixUpdate; } - -export type DateIncrementStrategy = ( - date: moment.Moment, - step: number, -) => moment.Moment; diff --git a/webapp/src/components/common/MatrixGrid/useGridCellContent.ts b/webapp/src/components/common/MatrixGrid/useGridCellContent.ts index efd696f3d2..57c94c5fe4 100644 --- a/webapp/src/components/common/MatrixGrid/useGridCellContent.ts +++ b/webapp/src/components/common/MatrixGrid/useGridCellContent.ts @@ -20,7 +20,7 @@ import { ColumnTypes, MatrixAggregates, } from "./types"; -import { formatDateTime, formatNumber } from "./utils"; +import { formatNumber } from "./utils"; type CellContentGenerator = ( row: number, @@ -55,7 +55,7 @@ const cellContentGenerators: Record = { [ColumnTypes.DateTime]: (row, col, column, data, dateTime) => ({ kind: GridCellKind.Text, data: "", // Date/time columns are not editable - displayData: formatDateTime(dateTime?.[row] ?? ""), + displayData: dateTime?.[row] ?? "", readonly: !column.editable, allowOverlay: false, }), diff --git a/webapp/src/components/common/MatrixGrid/utils.ts b/webapp/src/components/common/MatrixGrid/utils.ts index a1709130f6..7589e5d711 100644 --- a/webapp/src/components/common/MatrixGrid/utils.ts +++ b/webapp/src/components/common/MatrixGrid/utils.ts @@ -12,9 +12,7 @@ * This file is part of the Antares project. */ -import moment from "moment"; import { - DateIncrementStrategy, EnhancedGridColumn, ColumnTypes, TimeSeriesColumnOptions, @@ -23,10 +21,28 @@ import { AggregateType, AggregateConfig, Aggregates, + DateIncrementFunction, + FormatFunction, + TimeFrequency, + TimeFrequencyType, + DateTimeMetadataDTO, } from "./types"; +import { + type FirstWeekContainsDate, + parseISO, + addHours, + addDays, + addWeeks, + addMonths, + addYears, + format, + startOfWeek, + Locale, +} from "date-fns"; +import { fr, enUS } from "date-fns/locale"; import { getCurrentLanguage } from "../../../utils/i18nUtils"; import { Theme } from "@glideapps/glide-data-grid"; -import { MatrixIndex } from "../../../common/types"; +import { t } from "i18next"; export const darkTheme: Theme = { accentColor: "rgba(255, 184, 0, 0.9)", @@ -85,26 +101,6 @@ export const aggregatesTheme: Partial = { headerFontStyle: "bold 11px", }; -const dateIncrementStrategies: Record< - MatrixIndex["level"], - DateIncrementStrategy -> = { - hourly: (date, step) => date.clone().add(step, "hours"), - daily: (date, step) => date.clone().add(step, "days"), - weekly: (date, step) => date.clone().add(step, "weeks"), - monthly: (date, step) => date.clone().add(step, "months"), - annual: (date, step) => date.clone().add(step, "years"), -}; - -const dateTimeFormatOptions: Intl.DateTimeFormatOptions = { - year: "numeric", - month: "short", - day: "numeric", - hour: "numeric", - minute: "numeric", - timeZone: "UTC", // Ensures consistent UTC-based time representation -}; - //////////////////////////////////////////////////////////////// // Functions //////////////////////////////////////////////////////////////// @@ -121,7 +117,6 @@ export function formatNumber(num: number | undefined): string { } const [integerPart, decimalPart] = num.toString().split("."); - // Format integer part with thousand separators const formattedInteger = integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, " "); @@ -129,78 +124,80 @@ export function formatNumber(num: number | undefined): string { return decimalPart ? `${formattedInteger}.${decimalPart}` : formattedInteger; } +function getLocale(): Locale { + const lang = getCurrentLanguage(); + return lang && lang.startsWith("fr") ? fr : enUS; +} + /** - * Formats a date and time string using predefined locale and format options. - * - * This function takes a date/time string, creates a Date object from it, - * and then formats it according to the specified options. The formatting - * is done using the French locale as the primary choice, falling back to - * English if French is not available. - * - * Important: This function will always return the time in UTC, regardless - * of the system's local time zone. This behavior is controlled by the - * 'timeZone' option in dateTimeFormatOptions. - * - * @param dateTime - The date/time string to format. This should be an ISO 8601 string (e.g., "2024-01-01T00:00:00Z"). - * @returns The formatted date/time string in the format specified by dateTimeFormatOptions, always in UTC. - * - * @example returns "1 janv. 2024, 00:00" (French locale) - * formatDateTime("2024-01-01T00:00:00Z") + * Configuration object for different time frequencies * - * @example returns "Jan 1, 2024, 12:00 AM" (English locale) - * formatDateTime("2024-01-01T00:00:00Z") + * This object defines how to increment and format dates for various time frequencies. + * The WEEKLY frequency is of particular interest as it implements custom week starts + * and handles ISO week numbering. */ -export function formatDateTime(dateTime: string): string { - const date = moment.utc(dateTime); - const currentLocale = getCurrentLanguage(); - const locales = [currentLocale, "en-US"]; - - return date.toDate().toLocaleString(locales, dateTimeFormatOptions); -} +const TIME_FREQUENCY_CONFIG: Record< + TimeFrequencyType, + { + increment: DateIncrementFunction; + format: FormatFunction; + } +> = { + [TimeFrequency.ANNUAL]: { + increment: addYears, + format: () => t("global.time.annual"), + }, + [TimeFrequency.MONTHLY]: { + increment: addMonths, + format: (date: Date) => format(date, "MMM", { locale: getLocale() }), + }, + [TimeFrequency.WEEKLY]: { + increment: addWeeks, + format: (date: Date, firstWeekSize: number) => { + const weekStart = startOfWeek(date, { locale: getLocale() }); + + return format(weekStart, `'${t("global.time.weekShort")}' ww`, { + locale: getLocale(), + weekStartsOn: firstWeekSize === 1 ? 0 : 1, + firstWeekContainsDate: firstWeekSize as FirstWeekContainsDate, + }); + }, + }, + [TimeFrequency.DAILY]: { + increment: addDays, + format: (date: Date) => format(date, "EEE d", { locale: getLocale() }), + }, + [TimeFrequency.HOURLY]: { + increment: addHours, + format: (date: Date) => + format(date, "EEE d HH:mm", { locale: getLocale() }), + }, +}; /** - * Generates an array of date-time strings based on the provided time metadata. - * - * This function creates a series of date-time strings, starting from the given start date - * and incrementing based on the specified level (hourly, daily, weekly, monthly, or yearly). - * It uses the Moment.js library for date manipulation and the ISO 8601 format for date-time strings. + * Generates an array of formatted date/time strings based on the provided configuration * - * @param timeMetadata - The time metadata object. - * @param timeMetadata.start_date - The starting date-time in ISO 8601 format (e.g., "2023-01-01T00:00:00Z"). - * @param timeMetadata.steps - The number of date-time strings to generate. - * @param timeMetadata.level - The increment level for date-time generation. + * This function handles various time frequencies, with special attention to weekly formatting. + * For weekly frequency, it respects custom week starts while maintaining ISO week numbering. * - * @returns An array of ISO 8601 formatted date-time strings. - * - * @example - * const result = generateDateTime({ - * start_date: "2023-01-01T00:00:00Z", - * steps: 3, - * level: "daily" - * }); - * - * Returns: [ - * "2023-01-01T00:00:00.000Z", - * "2023-01-02T00:00:00.000Z", - * "2023-01-03T00:00:00.000Z" - * ] - * - * @see {@link MatrixIndex} for the structure of the timeMetadata object. - * @see {@link DateIncrementStrategy} for the date increment strategy type. + * @param config - Configuration object for date/time generation + * @param config.start_date - The starting date for generation + * @param config.steps - Number of increments to generate + * @param config.first_week_size - Defines the number of days for the first the week (from 1 to 7) + * @param config.level - The time frequency level (ANNUAL, MONTHLY, WEEKLY, DAILY, HOURLY) + * @returns An array of formatted date/time strings */ -export function generateDateTime({ +export const generateDateTime = (config: DateTimeMetadataDTO): string[] => { // eslint-disable-next-line camelcase - start_date, - steps, - level, -}: MatrixIndex): string[] { - const startDate = moment.utc(start_date, "YYYY-MM-DD HH:mm:ss"); - const incrementStrategy = dateIncrementStrategies[level]; + const { start_date, steps, first_week_size, level } = config; + const { increment, format } = TIME_FREQUENCY_CONFIG[level]; + const initialDate = parseISO(start_date); - return Array.from({ length: steps }, (_, i) => - incrementStrategy(startDate, i).toISOString(), - ); -} + return Array.from({ length: steps }, (_, index) => { + const currentDate = increment(initialDate, index); + return format(currentDate, first_week_size); + }); +}; /** * Generates an array of EnhancedGridColumn objects representing time series data columns. @@ -292,6 +289,7 @@ export function generateDataColumns( return []; } +// TODO add docs + refactor export function getAggregateTypes( aggregateConfig: AggregateConfig, ): AggregateType[] { From 242e42a9cacceabf9d76b396230849bfaf95e7f4 Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Tue, 1 Oct 2024 09:40:50 +0200 Subject: [PATCH 102/182] feat(ui): add prompt for unsaved changes when switching views --- webapp/src/components/common/MatrixGrid/useMatrix.test.tsx | 1 + webapp/src/components/common/MatrixGrid/useMatrix.ts | 7 +++++++ webapp/src/components/common/MatrixGrid/utils.ts | 4 ++-- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/webapp/src/components/common/MatrixGrid/useMatrix.test.tsx b/webapp/src/components/common/MatrixGrid/useMatrix.test.tsx index 492a433097..4a6c8b4e68 100644 --- a/webapp/src/components/common/MatrixGrid/useMatrix.test.tsx +++ b/webapp/src/components/common/MatrixGrid/useMatrix.test.tsx @@ -30,6 +30,7 @@ import { GridCellKind } from "@glideapps/glide-data-grid"; vi.mock("../../../services/api/matrix"); vi.mock("../../../services/api/study"); vi.mock("../../../services/api/studies/raw"); +vi.mock("../../../hooks/usePrompt"); describe("useMatrix", () => { const mockStudyId = "study123"; diff --git a/webapp/src/components/common/MatrixGrid/useMatrix.ts b/webapp/src/components/common/MatrixGrid/useMatrix.ts index 9ae7536c78..b747aadce2 100644 --- a/webapp/src/components/common/MatrixGrid/useMatrix.ts +++ b/webapp/src/components/common/MatrixGrid/useMatrix.ts @@ -45,6 +45,7 @@ import useUndo from "use-undo"; import { GridCellKind } from "@glideapps/glide-data-grid"; import { importFile } from "../../../services/api/studies/raw"; import { fetchMatrixFn } from "../../App/Singlestudy/explore/Modelization/Areas/Hydro/utils"; +import usePrompt from "../../../hooks/usePrompt"; interface DataState { data: MatrixDataDTO["data"]; @@ -84,6 +85,12 @@ export function useMatrix( [aggregatesConfig], ); + // Display warning prompts to prevent unintended navigation + // 1. When the matrix is currently being submitted + usePrompt(t("form.submit.inProgress"), isSubmitting); + // 2. When there are unsaved changes in the matrix + usePrompt(t("form.changeNotSaved"), currentState.pendingUpdates.length > 0); + const fetchMatrix = useCallback( async (loadingState = true) => { // !NOTE This is a temporary solution to ensure the matrix is up to date diff --git a/webapp/src/components/common/MatrixGrid/utils.ts b/webapp/src/components/common/MatrixGrid/utils.ts index 7589e5d711..e416b9b300 100644 --- a/webapp/src/components/common/MatrixGrid/utils.ts +++ b/webapp/src/components/common/MatrixGrid/utils.ts @@ -194,8 +194,8 @@ export const generateDateTime = (config: DateTimeMetadataDTO): string[] => { const initialDate = parseISO(start_date); return Array.from({ length: steps }, (_, index) => { - const currentDate = increment(initialDate, index); - return format(currentDate, first_week_size); + const date = increment(initialDate, index); + return format(date, first_week_size); }); }; From c99bcc978a190de357246a13ac5f3483d96f97e5 Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Tue, 1 Oct 2024 10:06:29 +0200 Subject: [PATCH 103/182] feat(ui): allow fill handle on any direction --- webapp/src/components/common/MatrixGrid/index.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/webapp/src/components/common/MatrixGrid/index.tsx b/webapp/src/components/common/MatrixGrid/index.tsx index a96ec48176..940bf23e10 100644 --- a/webapp/src/components/common/MatrixGrid/index.tsx +++ b/webapp/src/components/common/MatrixGrid/index.tsx @@ -176,6 +176,7 @@ function MatrixGrid({ rowMarkers="both" freezeColumns={1} // Make the first column sticky onColumnResize={handleColumnResize} + allowedFillDirections="any" />
From 4e138535860f39730d824a76de0b41148a64d64c Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Wed, 9 Oct 2024 15:47:15 +0200 Subject: [PATCH 104/182] feat(ui): add month display to daily and hourly frequencies --- webapp/src/components/common/MatrixGrid/utils.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webapp/src/components/common/MatrixGrid/utils.ts b/webapp/src/components/common/MatrixGrid/utils.ts index e416b9b300..ad750728a0 100644 --- a/webapp/src/components/common/MatrixGrid/utils.ts +++ b/webapp/src/components/common/MatrixGrid/utils.ts @@ -165,12 +165,12 @@ const TIME_FREQUENCY_CONFIG: Record< }, [TimeFrequency.DAILY]: { increment: addDays, - format: (date: Date) => format(date, "EEE d", { locale: getLocale() }), + format: (date: Date) => format(date, "EEE d MMM", { locale: getLocale() }), }, [TimeFrequency.HOURLY]: { increment: addHours, format: (date: Date) => - format(date, "EEE d HH:mm", { locale: getLocale() }), + format(date, "EEE d MMM HH:mm", { locale: getLocale() }), }, }; From c6f01319c3398a9aa7936886fc4f03a1e015affe Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Wed, 9 Oct 2024 16:29:19 +0200 Subject: [PATCH 105/182] feat(ui): reduce cells height and add smooth scroll --- .../components/common/MatrixGrid/Matrix.tsx | 2 +- .../src/components/common/MatrixGrid/index.tsx | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/webapp/src/components/common/MatrixGrid/Matrix.tsx b/webapp/src/components/common/MatrixGrid/Matrix.tsx index 896f0a377f..8b24f35cb0 100644 --- a/webapp/src/components/common/MatrixGrid/Matrix.tsx +++ b/webapp/src/components/common/MatrixGrid/Matrix.tsx @@ -132,7 +132,7 @@ function Matrix({ dateTime={dateTime} onCellEdit={handleCellEdit} onMultipleCellsEdit={handleMultipleCellsEdit} - isReaOnlyEnabled={isSubmitting || enableReadOnly} + isReadOnlyEnabled={isSubmitting || enableReadOnly} isPercentDisplayEnabled={enablePercentDisplay} /> {openImportDialog && ( diff --git a/webapp/src/components/common/MatrixGrid/index.tsx b/webapp/src/components/common/MatrixGrid/index.tsx index 940bf23e10..b82625bb7a 100644 --- a/webapp/src/components/common/MatrixGrid/index.tsx +++ b/webapp/src/components/common/MatrixGrid/index.tsx @@ -39,7 +39,7 @@ export interface MatrixGridProps { height?: string; onCellEdit?: (update: GridUpdate) => void; onMultipleCellsEdit?: (updates: GridUpdate[]) => void; - isReaOnlyEnabled?: boolean; + isReadOnlyEnabled?: boolean; isPercentDisplayEnabled?: boolean; } @@ -54,7 +54,7 @@ function MatrixGrid({ height = "100%", onCellEdit, onMultipleCellsEdit, - isReaOnlyEnabled, + isReadOnlyEnabled, isPercentDisplayEnabled, }: MatrixGridProps) { const [columns, setColumns] = useState(initialColumns); @@ -66,7 +66,7 @@ function MatrixGrid({ const { gridToData } = useColumnMapping(columns); const theme = useMemo(() => { - if (isReaOnlyEnabled) { + if (isReadOnlyEnabled) { return { ...darkTheme, ...readOnlyDarkTheme, @@ -74,7 +74,7 @@ function MatrixGrid({ } return darkTheme; - }, [isReaOnlyEnabled]); + }, [isReadOnlyEnabled]); const getCellContent = useGridCellContent( data, @@ -83,7 +83,7 @@ function MatrixGrid({ dateTime, aggregates, rowHeaders, - isReaOnlyEnabled, + isReadOnlyEnabled, isPercentDisplayEnabled, ); @@ -173,10 +173,16 @@ function MatrixGrid({ getCellsForSelection // Enable copy support onPaste fillHandle + allowedFillDirections="any" rowMarkers="both" freezeColumns={1} // Make the first column sticky onColumnResize={handleColumnResize} - allowedFillDirections="any" + smoothScrollX + smoothScrollY + rowHeight={30} + verticalBorder={false} + overscrollX={100} + overscrollY={100} />
From eb3eb37f1b7de3f1cfaab4da9d48b55e26cca2af Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Mon, 14 Oct 2024 16:43:23 +0200 Subject: [PATCH 106/182] feat(ui): disable copy/paste keybindings --- webapp/src/components/common/MatrixGrid/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webapp/src/components/common/MatrixGrid/index.tsx b/webapp/src/components/common/MatrixGrid/index.tsx index b82625bb7a..8b19f32b9a 100644 --- a/webapp/src/components/common/MatrixGrid/index.tsx +++ b/webapp/src/components/common/MatrixGrid/index.tsx @@ -170,8 +170,8 @@ function MatrixGrid({ onCellsEdited={handleCellsEdited} gridSelection={selection} onGridSelectionChange={setSelection} - getCellsForSelection // Enable copy support - onPaste + keybindings={{ paste: false, copy: false }} + onPaste={false} fillHandle allowedFillDirections="any" rowMarkers="both" From dbb485faaa855e1ce092bd360af0895cd0b4a9aa Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Mon, 21 Oct 2024 17:30:55 +0200 Subject: [PATCH 107/182] fix(ui): resolve imports errors due to merge conflicts fix: correct lint and types issues fix(ui): resolve merge conflict --- .../Areas/Hydro/Allocation/utils.ts | 6 +- .../Areas/Hydro/Correlation/utils.ts | 6 +- .../Modelization/Areas/Hydro/HydroMatrix.tsx | 2 - .../explore/Modelization/Areas/Hydro/utils.ts | 5 +- .../explore/Modelization/Areas/MiscGen.tsx | 1 - .../Modelization/Areas/Renewables/Matrix.tsx | 13 +--- .../explore/Modelization/Areas/Reserve.tsx | 1 - .../explore/Modelization/Areas/Solar.tsx | 1 - .../Modelization/Areas/Storages/Matrix.tsx | 3 +- .../explore/Modelization/Areas/Wind.tsx | 1 - .../BindingConstView/ConstraintFields.tsx | 2 +- .../Links/LinkView/LinkMatrixView.tsx | 5 +- .../Results/ResultDetails/ResultFilters.tsx | 16 ++++- .../explore/Results/ResultDetails/index.tsx | 4 +- .../MatrixGrid/useGridCellContent.test.ts | 56 --------------- .../common/MatrixGrid/utils.test.ts | 72 ------------------- 16 files changed, 29 insertions(+), 165 deletions(-) diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts index 75cbf73862..7bb47baffb 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts @@ -12,11 +12,7 @@ * This file is part of the Antares project. */ -import { - StudyMetadata, - Area, - MatrixType, -} from "../../../../../../../../common/types"; +import { StudyMetadata, Area } from "../../../../../../../../common/types"; import client from "../../../../../../../../services/api/client"; import { MatrixDataDTO } from "../../../../../../../common/MatrixGrid/types"; import { AreaCoefficientItem } from "../utils"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts index bcf4137a36..5806dd3e9b 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts @@ -12,11 +12,7 @@ * This file is part of the Antares project. */ -import { - StudyMetadata, - Area, - MatrixType, -} from "../../../../../../../../common/types"; +import { StudyMetadata, Area } from "../../../../../../../../common/types"; import client from "../../../../../../../../services/api/client"; import { MatrixDataDTO } from "../../../../../../../common/MatrixGrid/types"; import { AreaCoefficientItem } from "../utils"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx index 701891c9db..0a6a6f22e1 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx @@ -12,8 +12,6 @@ * This file is part of the Antares project. */ -import { useOutletContext } from "react-router"; -import { StudyMetadata } from "../../../../../../../common/types"; import useAppSelector from "../../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../../redux/selectors"; import { MATRICES, HydroMatrixType } from "./utils"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts index de05c04983..ac83b0a214 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts @@ -12,7 +12,10 @@ * This file is part of the Antares project. */ -import { MatrixStats, MatrixType } from "../../../../../../../common/types"; +import { + MatrixDataDTO, + AggregateConfig, +} from "../../../../../../common/MatrixGrid/types"; import { SplitViewProps } from "../../../../../../common/SplitView"; import { getAllocationMatrix } from "./Allocation/utils"; import { getCorrelationMatrix } from "./Correlation/utils"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx index e2926384b5..ccdba1652e 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx @@ -12,7 +12,6 @@ * This file is part of the Antares project. */ -import { useOutletContext } from "react-router"; import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../redux/selectors"; import Matrix from "../../../../../common/MatrixGrid/Matrix"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Matrix.tsx index 2948c33584..c6bbac8c3e 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Matrix.tsx @@ -12,17 +12,8 @@ * This file is part of the Antares project. */ -import * as React from "react"; -import Tabs from "@mui/material/Tabs"; -import Tab from "@mui/material/Tab"; -import Box from "@mui/material/Box"; -import { useTranslation } from "react-i18next"; -import { - Cluster, - MatrixStats, - StudyMetadata, -} from "../../../../../../../common/types"; -import MatrixInput from "../../../../../../common/MatrixInput"; +import { Cluster } from "../../../../../../../common/types"; +import Matrix from "../../../../../../common/MatrixGrid/Matrix"; interface Props { areaId: string; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Reserve.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Reserve.tsx index 844dba6d7a..da9d01870e 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Reserve.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Reserve.tsx @@ -12,7 +12,6 @@ * This file is part of the Antares project. */ -import { useOutletContext } from "react-router"; import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../redux/selectors"; import Matrix from "../../../../../common/MatrixGrid/Matrix"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Solar.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Solar.tsx index 0217250d97..487f4b4e70 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Solar.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Solar.tsx @@ -12,7 +12,6 @@ * This file is part of the Antares project. */ -import { useOutletContext } from "react-router"; import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../redux/selectors"; import Matrix from "../../../../../common/MatrixGrid/Matrix"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Matrix.tsx index bb7449dad0..9dbd2484ec 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Matrix.tsx @@ -12,8 +12,7 @@ * This file is part of the Antares project. */ -import * as React from "react"; -import * as R from "ramda"; +import { useMemo, useState } from "react"; import Tabs from "@mui/material/Tabs"; import Tab from "@mui/material/Tab"; import Box from "@mui/material/Box"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Wind.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Wind.tsx index 7a545803c0..40e7277c0f 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Wind.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Wind.tsx @@ -12,7 +12,6 @@ * This file is part of the Antares project. */ -import { useOutletContext } from "react-router"; import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../redux/selectors"; import Matrix from "../../../../../common/MatrixGrid/Matrix"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintFields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintFields.tsx index ec0eea9385..285c3fd11e 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintFields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintFields.tsx @@ -27,10 +27,10 @@ import SwitchFE from "../../../../../../common/fieldEditors/SwitchFE"; import { useFormContextPlus } from "../../../../../../common/Form"; import { useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; -import Matrix from "./Matrix"; import { Box, Button } from "@mui/material"; import { Dataset } from "@mui/icons-material"; import { validateString } from "@/utils/validation/string"; +import ConstraintMatrix from "./Matrix"; interface Props { study: StudyMetadata; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkMatrixView.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkMatrixView.tsx index fe498f56fb..c0a92068a3 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkMatrixView.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkMatrixView.tsx @@ -12,8 +12,7 @@ * This file is part of the Antares project. */ -import * as React from "react"; -import { Divider, styled } from "@mui/material"; +import { SyntheticEvent, useMemo, useState } from "react"; import Tabs from "@mui/material/Tabs"; import Tab from "@mui/material/Tab"; import Box from "@mui/material/Box"; @@ -53,7 +52,7 @@ function LinkMatrixView({ area1, area2 }: Props) { const { t } = useTranslation(); const [activeTab, setActiveTab] = useState("parameters"); - const handleTabChange = (event: React.SyntheticEvent, newValue: string) => { + const handleTabChange = (event: SyntheticEvent, newValue: string) => { setActiveTab(newValue); }; diff --git a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/ResultFilters.tsx b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/ResultFilters.tsx index b6bcc9f4b9..bdefbea3c1 100644 --- a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/ResultFilters.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/ResultFilters.tsx @@ -1,10 +1,24 @@ +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + import { Box } from "@mui/material"; import { useTranslation } from "react-i18next"; import { DataType, Timestep } from "./utils"; import BooleanFE from "../../../../../common/fieldEditors/BooleanFE"; import SelectFE from "../../../../../common/fieldEditors/SelectFE"; import NumberFE from "../../../../../common/fieldEditors/NumberFE"; -import DownloadMatrixButton from "../../../../../common/DownloadMatrixButton"; +import DownloadMatrixButton from "../../../../../common/buttons/DownloadMatrixButton"; interface Props { year: number; diff --git a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx index ad2a838019..3011f257d6 100644 --- a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx @@ -266,7 +266,7 @@ function ResultDetails() { columns={generateCustomColumns({ titles: matrix.columns, })} - isReaOnlyEnabled + isReadOnlyEnabled /> ) } @@ -292,7 +292,7 @@ function ResultDetails() { }), ]} dateTime={dateTime} - isReaOnlyEnabled + isReadOnlyEnabled /> ) } diff --git a/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts b/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts index 880cf9fe5b..8adf3041d5 100644 --- a/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts +++ b/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts @@ -80,42 +80,6 @@ function renderGridCellContent( } describe("useGridCellContent", () => { - test("returns correct text cell content for DateTime columns", () => { - const columns: EnhancedGridColumn[] = [ - { - id: "date", - title: "Date", - type: ColumnTypes.DateTime, - width: 150, - editable: false, - }, - { - id: "data1", - title: "TS 1", - type: ColumnTypes.Number, - width: 50, - editable: true, - }, - ]; - - const dateTime = ["2024-01-07T00:00:00Z", "2024-01-02T00:00:00Z"]; - - const data = [ - [11, 10], - [12, 15], - ]; - - const getCellContent = renderGridCellContent(data, columns, dateTime); - const cell = getCellContent([0, 0]); - - if ("displayData" in cell) { - expect(cell.kind).toBe("text"); - expect(cell.displayData).toBe("7 janv. 2024, 00:00"); - } else { - throw new Error("Expected a text cell with displayData"); - } - }); - describe("returns correct cell content for Aggregate columns", () => { const columns: EnhancedGridColumn[] = [ { @@ -220,17 +184,6 @@ describe("useGridCellContent", () => { aggregates, ); - const dateTimeCell = getCellContent([0, 0]); - - if (dateTimeCell.kind === "text" && "displayData" in dateTimeCell) { - expect(dateTimeCell.data).toBe(""); - expect(dateTimeCell.displayData).toBe("1 janv. 2021, 00:00"); - } else { - throw new Error( - "Expected a DateTime cell with displayData containing the year 2021", - ); - } - const numberCell = getCellContent([1, 0]); if (numberCell.kind === "number" && "data" in numberCell) { @@ -319,15 +272,6 @@ describe("useGridCellContent with mixed column types", () => { throw new Error("Expected a text cell with data for row header"); } - // Test date column (DateTime column) - const dateCell = getCellContent([1, 0]); - if (dateCell.kind === "text" && "displayData" in dateCell) { - expect(dateCell.data).toBe(""); - expect(dateCell.displayData).toBe("1 janv. 2024, 00:00"); - } else { - throw new Error("Expected a text cell with data for date"); - } - // Test first data column (Number column) const firstDataCell = getCellContent([2, 0]); diff --git a/webapp/src/components/common/MatrixGrid/utils.test.ts b/webapp/src/components/common/MatrixGrid/utils.test.ts index 6d96350d86..403e46c0ed 100644 --- a/webapp/src/components/common/MatrixGrid/utils.test.ts +++ b/webapp/src/components/common/MatrixGrid/utils.test.ts @@ -35,78 +35,6 @@ describe("generateDateTime", () => { const result = generateDateTime(metadata); expect(result).toHaveLength(5); }); - - test.each([ - { - level: "hourly", - start: "2023-01-01T00:00:00Z", - expected: [ - "2023-01-01T00:00:00.000Z", - "2023-01-01T01:00:00.000Z", - "2023-01-01T02:00:00.000Z", - ], - }, - { - level: "daily", - start: "2023-01-01T00:00:00Z", - expected: [ - "2023-01-01T00:00:00.000Z", - "2023-01-02T00:00:00.000Z", - "2023-01-03T00:00:00.000Z", - ], - }, - { - level: "weekly", - start: "2023-01-01T00:00:00Z", - expected: [ - "2023-01-01T00:00:00.000Z", - "2023-01-08T00:00:00.000Z", - "2023-01-15T00:00:00.000Z", - ], - }, - { - level: "monthly", - start: "2023-01-15T00:00:00Z", - expected: [ - "2023-01-15T00:00:00.000Z", - "2023-02-15T00:00:00.000Z", - "2023-03-15T00:00:00.000Z", - ], - }, - { - level: "annual", - start: "2020-02-29T00:00:00Z", - expected: ["2020-02-29T00:00:00.000Z", "2021-02-28T00:00:00.000Z"], - }, - ] as const)( - "generates correct dates for $level level", - ({ level, start, expected }) => { - const metadata: MatrixIndex = { - start_date: start, - steps: expected.length, - first_week_size: 7, - level: level as MatrixIndex["level"], - }; - - const result = generateDateTime(metadata); - - expect(result).toEqual(expected); - }, - ); - - test("handles edge cases", () => { - const metadata: MatrixIndex = { - start_date: "2023-12-31T23:59:59Z", - steps: 2, - first_week_size: 7, - level: StudyOutputDownloadLevelDTO.HOURLY, - }; - const result = generateDateTime(metadata); - expect(result).toEqual([ - "2023-12-31T23:59:59.000Z", - "2024-01-01T00:59:59.000Z", - ]); - }); }); describe("generateTimeSeriesColumns", () => { From f936584b69b5e96de6d8525289bd6df8850e5161 Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Mon, 14 Oct 2024 20:25:20 +0200 Subject: [PATCH 108/182] fix(ui): prevent regex DoS vulnerability in `formatNumber` function --- webapp/src/components/common/MatrixGrid/index.tsx | 2 +- webapp/src/components/common/MatrixGrid/utils.ts | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/webapp/src/components/common/MatrixGrid/index.tsx b/webapp/src/components/common/MatrixGrid/index.tsx index 8b19f32b9a..7873ab1d12 100644 --- a/webapp/src/components/common/MatrixGrid/index.tsx +++ b/webapp/src/components/common/MatrixGrid/index.tsx @@ -171,7 +171,7 @@ function MatrixGrid({ gridSelection={selection} onGridSelectionChange={setSelection} keybindings={{ paste: false, copy: false }} - onPaste={false} + getCellsForSelection // TODO handle large copy/paste using this fillHandle allowedFillDirections="any" rowMarkers="both" diff --git a/webapp/src/components/common/MatrixGrid/utils.ts b/webapp/src/components/common/MatrixGrid/utils.ts index ad750728a0..89b126afa1 100644 --- a/webapp/src/components/common/MatrixGrid/utils.ts +++ b/webapp/src/components/common/MatrixGrid/utils.ts @@ -117,8 +117,17 @@ export function formatNumber(num: number | undefined): string { } const [integerPart, decimalPart] = num.toString().split("."); - // Format integer part with thousand separators - const formattedInteger = integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, " "); + + // Format integer part with thousand separators using a non-regex approach + const formattedInteger = integerPart + .split("") + .reverse() + .reduce((acc, digit, index) => { + if (index > 0 && index % 3 === 0) { + return digit + " " + acc; + } + return digit + acc; + }, ""); // Return formatted number, preserving decimal part if it exists return decimalPart ? `${formattedInteger}.${decimalPart}` : formattedInteger; From a818c4976af8764092117ad742d62d65912c235b Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Mon, 21 Oct 2024 17:08:05 +0200 Subject: [PATCH 109/182] refactor(ui): improves `Matrix` types and variables naming refactor(ui): rename variables and add minor improvements --- webapp/src/common/types.ts | 21 +++++ .../Modelization/Areas/Hydro/HydroMatrix.tsx | 4 +- .../explore/Modelization/Areas/Hydro/utils.ts | 16 ++-- .../Modelization/Areas/Storages/Matrix.tsx | 25 +----- .../Modelization/Links/LinkView/LinkForm.tsx | 14 +--- .../Links/LinkView/LinkMatrixView.tsx | 23 +----- .../Results/ResultDetails/ResultFilters.tsx | 12 +-- .../explore/Results/ResultDetails/index.tsx | 8 +- .../components/common/MatrixGrid/Matrix.tsx | 18 ++--- .../common/MatrixGrid/index.test.tsx | 20 ++--- .../components/common/MatrixGrid/index.tsx | 10 +-- .../src/components/common/MatrixGrid/types.ts | 28 +++---- .../MatrixGrid/useColumnMapping.test.ts | 20 ++--- .../common/MatrixGrid/useColumnMapping.ts | 4 +- .../MatrixGrid/useGridCellContent.test.ts | 54 ++++++------- .../common/MatrixGrid/useGridCellContent.ts | 22 ++--- .../components/common/MatrixGrid/useMatrix.ts | 16 ++-- .../common/MatrixGrid/utils.test.ts | 14 ++-- .../src/components/common/MatrixGrid/utils.ts | 81 ++++++++++--------- .../components/common/MatrixInput/index.tsx | 6 +- 20 files changed, 193 insertions(+), 223 deletions(-) diff --git a/webapp/src/common/types.ts b/webapp/src/common/types.ts index 9966fdf62c..a58766e444 100644 --- a/webapp/src/common/types.ts +++ b/webapp/src/common/types.ts @@ -661,3 +661,24 @@ export interface TaskView { } export type ValidationReturn = string | true; + +export interface MatrixConfig { + url: string; + titleKey: string; + columnsNames?: string[]; +} + +export interface SplitMatrixContent { + type: "split"; + matrices: [MatrixConfig, MatrixConfig]; +} + +export interface SingleMatrixContent { + type: "single"; + matrix: MatrixConfig; +} + +export interface MatrixItem { + titleKey: string; + content: SplitMatrixContent | SingleMatrixContent; +} diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx index 0a6a6f22e1..ff54f64df7 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx @@ -40,8 +40,8 @@ function HydroMatrix({ type }: Props) { customRowHeaders={hydroMatrix.rowHeaders} aggregateColumns={hydroMatrix.aggregates} enableDateTimeColumn={hydroMatrix.enableDateTimeColumn} - enableReadOnly={hydroMatrix.enableReadOnly} - enablePercentDisplay={hydroMatrix.enablePercentDisplay} + readOnly={hydroMatrix.readOnly} + showPercent={hydroMatrix.showPercent} fetchMatrixData={hydroMatrix.fetchFn} /> diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts index ac83b0a214..c6438d1125 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts @@ -54,8 +54,8 @@ export interface HydroMatrixProps { fetchFn?: fetchMatrixFn; aggregates?: AggregateConfig; enableDateTimeColumn?: boolean; - enableReadOnly?: boolean; - enablePercentDisplay?: boolean; + readOnly?: boolean; + showPercent?: boolean; } type Matrices = Record; @@ -132,7 +132,7 @@ export const MATRICES: Matrices = { columns: generateColumns("%"), rowHeaders: ["Generating Power", "Pumping Power"], enableDateTimeColumn: false, - enablePercentDisplay: true, + showPercent: true, }, [HydroMatrix.EnergyCredits]: { title: "Standard Credits", @@ -148,7 +148,7 @@ export const MATRICES: Matrices = { title: "Reservoir Levels", url: "input/hydro/common/capacity/reservoir_{areaId}", columns: ["Lev Low (%)", "Lev Avg (%)", "Lev High (%)"], - enablePercentDisplay: true, + showPercent: true, }, [HydroMatrix.WaterValues]: { title: "Water Values", @@ -204,16 +204,16 @@ export const MATRICES: Matrices = { url: "", fetchFn: getAllocationMatrix, enableDateTimeColumn: false, - enableReadOnly: true, - enablePercentDisplay: true, + readOnly: true, + showPercent: true, }, [HydroMatrix.Correlation]: { title: "Correlation", url: "", fetchFn: getCorrelationMatrix, enableDateTimeColumn: false, - enableReadOnly: true, - enablePercentDisplay: true, + readOnly: true, + showPercent: true, }, }; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Matrix.tsx index 9dbd2484ec..1062c86138 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Matrix.tsx @@ -17,7 +17,10 @@ import Tabs from "@mui/material/Tabs"; import Tab from "@mui/material/Tab"; import Box from "@mui/material/Box"; import { useTranslation } from "react-i18next"; -import { StudyMetadata } from "../../../../../../../common/types"; +import { + type MatrixItem, + type StudyMetadata, +} from "../../../../../../../common/types"; import { Storage } from "./utils"; import SplitView from "../../../../../../common/SplitView"; import Matrix from "../../../../../../common/MatrixGrid/Matrix"; @@ -28,26 +31,6 @@ interface Props { storageId: Storage["id"]; } -interface MatrixConfig { - url: string; - titleKey: string; -} - -interface SplitMatrixContent { - type: "split"; - matrices: [MatrixConfig, MatrixConfig]; -} - -interface SingleMatrixContent { - type: "single"; - matrix: MatrixConfig; -} - -interface MatrixItem { - titleKey: string; - content: SplitMatrixContent | SingleMatrixContent; -} - function StorageMatrices({ areaId, storageId }: Props) { const { t } = useTranslation(); const [activeTab, setActiveTab] = useState("modulation"); diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkForm.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkForm.tsx index 6bae8f2f63..88d5e389e2 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkForm.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkForm.tsx @@ -22,16 +22,12 @@ import Fieldset from "../../../../../../common/Fieldset"; import { AutoSubmitHandler } from "../../../../../../common/Form/types"; import { getLinkPath, LinkFields } from "./utils"; import SwitchFE from "../../../../../../common/fieldEditors/SwitchFE"; -import { - LinkElement, - MatrixStats, - StudyMetadata, -} from "../../../../../../../common/types"; +import { LinkElement, StudyMetadata } from "../../../../../../../common/types"; import SelectFE from "../../../../../../common/fieldEditors/SelectFE"; -import MatrixInput from "../../../../../../common/MatrixInput"; import LinkMatrixView from "./LinkMatrixView"; import OutputFilters from "../../../common/OutputFilters"; import { useFormContextPlus } from "../../../../../../common/Form"; +import Matrix from "../../../../../../common/MatrixGrid/Matrix"; interface Props { link: LinkElement; @@ -251,11 +247,9 @@ function LinkForm(props: Props) { {isTabMatrix ? ( ) : ( - )} diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkMatrixView.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkMatrixView.tsx index c0a92068a3..503b6c3bd1 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkMatrixView.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkMatrixView.tsx @@ -17,7 +17,7 @@ import Tabs from "@mui/material/Tabs"; import Tab from "@mui/material/Tab"; import Box from "@mui/material/Box"; import { useTranslation } from "react-i18next"; -import { StudyMetadata } from "../../../../../../../common/types"; +import { MatrixItem, StudyMetadata } from "../../../../../../../common/types"; import SplitView from "../../../../../../common/SplitView"; import Matrix from "../../../../../../common/MatrixGrid/Matrix"; @@ -27,27 +27,6 @@ interface Props { area2: string; } -interface MatrixConfig { - url: string; - titleKey: string; - columnsNames?: string[]; -} - -interface SplitMatrixContent { - type: "split"; - matrices: [MatrixConfig, MatrixConfig]; -} - -interface SingleMatrixContent { - type: "single"; - matrix: MatrixConfig; -} - -interface MatrixItem { - titleKey: string; - content: SplitMatrixContent | SingleMatrixContent; -} - function LinkMatrixView({ area1, area2 }: Props) { const { t } = useTranslation(); const [activeTab, setActiveTab] = useState("parameters"); diff --git a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/ResultFilters.tsx b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/ResultFilters.tsx index bdefbea3c1..d6295c3127 100644 --- a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/ResultFilters.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/ResultFilters.tsx @@ -45,10 +45,10 @@ function ResultFilters({ }: Props) { const { t } = useTranslation(); - const controls = [ + const filters = [ { label: `${t("study.results.mc")}:`, - control: ( + field: ( <> - {controls.map(({ label, control }) => ( + {filters.map(({ label, field }) => ( {label} - {control} + {field} ))} diff --git a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx index 3011f257d6..fbcfedfe9c 100644 --- a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx @@ -58,7 +58,7 @@ import { generateCustomColumns, generateDateTime, } from "../../../../../common/MatrixGrid/utils.ts"; -import { ColumnTypes } from "../../../../../common/MatrixGrid/types.ts"; +import { Column } from "../../../../../common/MatrixGrid/types.ts"; import SplitView from "../../../../../common/SplitView/index.tsx"; import ResultFilters from "./ResultFilters.tsx"; import { toError } from "../../../../../../utils/fnUtils.ts"; @@ -266,7 +266,7 @@ function ResultDetails() { columns={generateCustomColumns({ titles: matrix.columns, })} - isReadOnlyEnabled + isReadOnly /> ) } @@ -284,7 +284,7 @@ function ResultDetails() { { id: "date", title: "Date", - type: ColumnTypes.DateTime, + type: Column.DateTime, editable: false, }, ...generateCustomColumns({ @@ -292,7 +292,7 @@ function ResultDetails() { }), ]} dateTime={dateTime} - isReadOnlyEnabled + isReadOnly /> ) } diff --git a/webapp/src/components/common/MatrixGrid/Matrix.tsx b/webapp/src/components/common/MatrixGrid/Matrix.tsx index 8b24f35cb0..ae7cefe6ba 100644 --- a/webapp/src/components/common/MatrixGrid/Matrix.tsx +++ b/webapp/src/components/common/MatrixGrid/Matrix.tsx @@ -33,9 +33,9 @@ interface MatrixProps { enableDateTimeColumn?: boolean; enableTimeSeriesColumns?: boolean; aggregateColumns?: AggregateConfig; - enableRowHeaders?: boolean; - enablePercentDisplay?: boolean; - enableReadOnly?: boolean; + rowHeaders?: boolean; + showPercent?: boolean; + readOnly?: boolean; customColumns?: string[] | readonly string[]; colWidth?: number; fetchMatrixData?: fetchMatrixFn; @@ -48,9 +48,9 @@ function Matrix({ enableDateTimeColumn = true, enableTimeSeriesColumns = true, aggregateColumns = false, - enableRowHeaders = customRowHeaders.length > 0, - enablePercentDisplay = false, - enableReadOnly = false, + rowHeaders = customRowHeaders.length > 0, + showPercent = false, + readOnly = false, customColumns, colWidth, fetchMatrixData, @@ -81,7 +81,7 @@ function Matrix({ url, enableDateTimeColumn, enableTimeSeriesColumns, - enableRowHeaders, + rowHeaders, aggregateColumns, customColumns, colWidth, @@ -132,8 +132,8 @@ function Matrix({ dateTime={dateTime} onCellEdit={handleCellEdit} onMultipleCellsEdit={handleMultipleCellsEdit} - isReadOnlyEnabled={isSubmitting || enableReadOnly} - isPercentDisplayEnabled={enablePercentDisplay} + isReadOnly={isSubmitting || readOnly} + isPercentDisplayEnabled={showPercent} /> {openImportDialog && ( { @@ -67,7 +67,7 @@ describe("MatrixGrid rendering", () => { id: "col1", title: "Column 1", width: 100, - type: ColumnTypes.Number, + type: Column.Number, editable: true, order: 0, }, @@ -75,7 +75,7 @@ describe("MatrixGrid rendering", () => { id: "col2", title: "Column 2", width: 100, - type: ColumnTypes.Number, + type: Column.Number, editable: true, order: 1, }, @@ -83,7 +83,7 @@ describe("MatrixGrid rendering", () => { id: "col3", title: "Column 3", width: 100, - type: ColumnTypes.Number, + type: Column.Number, editable: true, order: 2, }, @@ -118,7 +118,7 @@ describe("MatrixGrid rendering", () => { id: "col1", title: "Column 1", width: 100, - type: ColumnTypes.Number, + type: Column.Number, editable: true, order: 0, }, @@ -126,7 +126,7 @@ describe("MatrixGrid rendering", () => { id: "col2", title: "Column 2", width: 100, - type: ColumnTypes.Number, + type: Column.Number, editable: true, order: 1, }, @@ -134,7 +134,7 @@ describe("MatrixGrid rendering", () => { id: "col3", title: "Column 3", width: 100, - type: ColumnTypes.Number, + type: Column.Number, editable: true, order: 2, }, @@ -171,7 +171,7 @@ describe("MatrixGrid rendering", () => { id: "col1", title: "Column 1", width: 100, - type: ColumnTypes.Number, + type: Column.Number, editable: true, order: 0, }, @@ -179,7 +179,7 @@ describe("MatrixGrid rendering", () => { id: "col2", title: "Column 2", width: 100, - type: ColumnTypes.Number, + type: Column.Number, editable: true, order: 1, }, @@ -187,7 +187,7 @@ describe("MatrixGrid rendering", () => { id: "col3", title: "Column 3", width: 100, - type: ColumnTypes.Number, + type: Column.Number, editable: true, order: 2, }, diff --git a/webapp/src/components/common/MatrixGrid/index.tsx b/webapp/src/components/common/MatrixGrid/index.tsx index 7873ab1d12..b68f608605 100644 --- a/webapp/src/components/common/MatrixGrid/index.tsx +++ b/webapp/src/components/common/MatrixGrid/index.tsx @@ -39,7 +39,7 @@ export interface MatrixGridProps { height?: string; onCellEdit?: (update: GridUpdate) => void; onMultipleCellsEdit?: (updates: GridUpdate[]) => void; - isReadOnlyEnabled?: boolean; + isReadOnly?: boolean; isPercentDisplayEnabled?: boolean; } @@ -54,7 +54,7 @@ function MatrixGrid({ height = "100%", onCellEdit, onMultipleCellsEdit, - isReadOnlyEnabled, + isReadOnly, isPercentDisplayEnabled, }: MatrixGridProps) { const [columns, setColumns] = useState(initialColumns); @@ -66,7 +66,7 @@ function MatrixGrid({ const { gridToData } = useColumnMapping(columns); const theme = useMemo(() => { - if (isReadOnlyEnabled) { + if (isReadOnly) { return { ...darkTheme, ...readOnlyDarkTheme, @@ -74,7 +74,7 @@ function MatrixGrid({ } return darkTheme; - }, [isReadOnlyEnabled]); + }, [isReadOnly]); const getCellContent = useGridCellContent( data, @@ -83,7 +83,7 @@ function MatrixGrid({ dateTime, aggregates, rowHeaders, - isReadOnlyEnabled, + isReadOnly, isPercentDisplayEnabled, ); diff --git a/webapp/src/components/common/MatrixGrid/types.ts b/webapp/src/components/common/MatrixGrid/types.ts index a996de9a63..aa6044fca1 100644 --- a/webapp/src/components/common/MatrixGrid/types.ts +++ b/webapp/src/components/common/MatrixGrid/types.ts @@ -22,16 +22,14 @@ import { // Enums //////////////////////////////////////////////////////////////// -// TODO update enums to be singular - -export const ColumnTypes = { +export const Column = { DateTime: "datetime", Number: "number", Text: "text", Aggregate: "aggregate", } as const; -export const Operations = { +export const Operation = { Add: "+", Sub: "-", Mul: "*", @@ -41,7 +39,7 @@ export const Operations = { } as const; // !NOTE: Keep lowercase to match Glide Data Grid column ids -export const Aggregates = { +export const Aggregate = { Min: "min", Max: "max", Avg: "avg", @@ -49,12 +47,11 @@ export const Aggregates = { } as const; export const TimeFrequency = { - // TODO update old enum occurrences - ANNUAL: "annual", - MONTHLY: "monthly", - WEEKLY: "weekly", - DAILY: "daily", - HOURLY: "hourly", + Annual: "annual", + Monthly: "monthly", + Weekly: "weekly", + Daily: "daily", + Hourly: "hourly", } as const; //////////////////////////////////////////////////////////////// @@ -62,10 +59,9 @@ export const TimeFrequency = { //////////////////////////////////////////////////////////////// // Derived types -export type ColumnType = (typeof ColumnTypes)[keyof typeof ColumnTypes]; -// TODO add sufix Type -export type Operation = (typeof Operations)[keyof typeof Operations]; -export type AggregateType = (typeof Aggregates)[keyof typeof Aggregates]; +export type ColumnType = (typeof Column)[keyof typeof Column]; +export type OperationType = (typeof Operation)[keyof typeof Operation]; +export type AggregateType = (typeof Aggregate)[keyof typeof Aggregate]; export type TimeFrequencyType = (typeof TimeFrequency)[keyof typeof TimeFrequency]; @@ -127,7 +123,7 @@ export interface GridUpdate { // Shape of updates to be sent to the API export interface MatrixUpdate { - operation: Operation; + operation: OperationType; value: number; } diff --git a/webapp/src/components/common/MatrixGrid/useColumnMapping.test.ts b/webapp/src/components/common/MatrixGrid/useColumnMapping.test.ts index e88473b9a6..2dc3ebd7f2 100644 --- a/webapp/src/components/common/MatrixGrid/useColumnMapping.test.ts +++ b/webapp/src/components/common/MatrixGrid/useColumnMapping.test.ts @@ -15,42 +15,42 @@ import { renderHook } from "@testing-library/react"; import { describe, test, expect } from "vitest"; import { useColumnMapping } from "./useColumnMapping"; -import { EnhancedGridColumn, ColumnTypes } from "./types"; +import { EnhancedGridColumn, Column } from "./types"; describe("useColumnMapping", () => { const testColumns: EnhancedGridColumn[] = [ { id: "text", title: "Text", - type: ColumnTypes.Text, + type: Column.Text, width: 100, editable: false, }, { id: "date", title: "Date", - type: ColumnTypes.DateTime, + type: Column.DateTime, width: 100, editable: false, }, { id: "num1", title: "Number 1", - type: ColumnTypes.Number, + type: Column.Number, width: 100, editable: true, }, { id: "num2", title: "Number 2", - type: ColumnTypes.Number, + type: Column.Number, width: 100, editable: true, }, { id: "agg", title: "Aggregate", - type: ColumnTypes.Aggregate, + type: Column.Aggregate, width: 100, editable: false, }, @@ -90,14 +90,14 @@ describe("useColumnMapping", () => { { id: "text", title: "Text", - type: ColumnTypes.Text, + type: Column.Text, width: 100, editable: false, }, { id: "date", title: "Date", - type: ColumnTypes.DateTime, + type: Column.DateTime, width: 100, editable: false, }, @@ -113,14 +113,14 @@ describe("useColumnMapping", () => { { id: "num1", title: "Number 1", - type: ColumnTypes.Number, + type: Column.Number, width: 100, editable: true, }, { id: "num2", title: "Number 2", - type: ColumnTypes.Number, + type: Column.Number, width: 100, editable: true, }, diff --git a/webapp/src/components/common/MatrixGrid/useColumnMapping.ts b/webapp/src/components/common/MatrixGrid/useColumnMapping.ts index 522f93d025..ffbf683965 100644 --- a/webapp/src/components/common/MatrixGrid/useColumnMapping.ts +++ b/webapp/src/components/common/MatrixGrid/useColumnMapping.ts @@ -14,7 +14,7 @@ import { useMemo } from "react"; import { Item } from "@glideapps/glide-data-grid"; -import { EnhancedGridColumn, ColumnTypes } from "./types"; +import { EnhancedGridColumn, Column } from "./types"; /** * A custom hook that provides coordinate mapping functions for a grid with mixed column types. @@ -48,7 +48,7 @@ import { EnhancedGridColumn, ColumnTypes } from "./types"; export function useColumnMapping(columns: EnhancedGridColumn[]) { return useMemo(() => { const dataColumnIndices = columns.reduce((acc, col, index) => { - if (col.type === ColumnTypes.Number) { + if (col.type === Column.Number) { acc.push(index); } return acc; diff --git a/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts b/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts index 8adf3041d5..cdb2c2003c 100644 --- a/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts +++ b/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts @@ -14,11 +14,7 @@ import { renderHook } from "@testing-library/react"; import { useGridCellContent } from "./useGridCellContent"; -import { - ColumnTypes, - MatrixAggregates, - type EnhancedGridColumn, -} from "./types"; +import { Column, MatrixAggregates, type EnhancedGridColumn } from "./types"; import { useColumnMapping } from "./useColumnMapping"; // Mocking i18next @@ -85,7 +81,7 @@ describe("useGridCellContent", () => { { id: "total", title: "Total", - type: ColumnTypes.Aggregate, + type: Column.Aggregate, width: 100, editable: false, }, @@ -136,28 +132,28 @@ describe("useGridCellContent", () => { { id: "date", title: "Date", - type: ColumnTypes.DateTime, + type: Column.DateTime, width: 150, editable: false, }, { id: "ts1", title: "TS 1", - type: ColumnTypes.Number, + type: Column.Number, width: 50, editable: true, }, { id: "ts2", title: "TS 2", - type: ColumnTypes.Number, + type: Column.Number, width: 50, editable: true, }, { id: "total", title: "Total", - type: ColumnTypes.Aggregate, + type: Column.Aggregate, width: 100, editable: false, }, @@ -208,35 +204,35 @@ describe("useGridCellContent with mixed column types", () => { { id: "rowHeader", title: "Row", - type: ColumnTypes.Text, + type: Column.Text, width: 100, editable: false, }, { id: "date", title: "Date", - type: ColumnTypes.DateTime, + type: Column.DateTime, width: 150, editable: false, }, { id: "data1", title: "TS 1", - type: ColumnTypes.Number, + type: Column.Number, width: 50, editable: true, }, { id: "data2", title: "TS 2", - type: ColumnTypes.Number, + type: Column.Number, width: 50, editable: true, }, { id: "total", title: "Total", - type: ColumnTypes.Aggregate, + type: Column.Aggregate, width: 100, editable: false, }, @@ -307,21 +303,21 @@ describe("useGridCellContent with mixed column types", () => { { id: "data1", title: "TS 1", - type: ColumnTypes.Number, + type: Column.Number, width: 50, editable: true, }, { id: "data2", title: "TS 2", - type: ColumnTypes.Number, + type: Column.Number, width: 50, editable: true, }, { id: "data3", title: "TS 3", - type: ColumnTypes.Number, + type: Column.Number, width: 50, editable: true, }, @@ -352,7 +348,7 @@ describe("useGridCellContent additional tests", () => { { id: "data1", title: "TS 1", - type: ColumnTypes.Number, + type: Column.Number, width: 50, editable: true, }, @@ -374,7 +370,7 @@ describe("useGridCellContent additional tests", () => { { id: "data1", title: "TS 1", - type: ColumnTypes.Number, + type: Column.Number, width: 50, editable: true, }, @@ -397,7 +393,7 @@ describe("useGridCellContent additional tests", () => { { id: "data1", title: "TS 1", - type: ColumnTypes.Number, + type: Column.Number, width: 50, editable: true, }, @@ -419,7 +415,7 @@ describe("useGridCellContent additional tests", () => { { id: "total", title: "Total", - type: ColumnTypes.Aggregate, + type: Column.Aggregate, width: 100, editable: false, }, @@ -444,14 +440,14 @@ describe("useGridCellContent additional tests", () => { { id: "data1", title: "TS 1", - type: ColumnTypes.Number, + type: Column.Number, width: 50, editable: true, }, { id: "data2", title: "TS 2", - type: ColumnTypes.Number, + type: Column.Number, width: 50, editable: false, }, @@ -476,7 +472,7 @@ describe("useGridCellContent additional tests", () => { { id: "data1", title: "TS 1", - type: ColumnTypes.Number, + type: Column.Number, width: 50, editable: true, }, @@ -500,14 +496,14 @@ describe("useGridCellContent additional tests", () => { { id: "large", title: "Large", - type: ColumnTypes.Number, + type: Column.Number, width: 50, editable: true, }, { id: "small", title: "Small", - type: ColumnTypes.Number, + type: Column.Number, width: 50, editable: true, }, @@ -539,7 +535,7 @@ describe("useGridCellContent additional tests", () => { { id: "negative", title: "Negative", - type: ColumnTypes.Number, + type: Column.Number, width: 50, editable: true, }, @@ -563,7 +559,7 @@ describe("useGridCellContent additional tests", () => { { id: "zero", title: "Zero", - type: ColumnTypes.Number, + type: Column.Number, width: 50, editable: true, }, diff --git a/webapp/src/components/common/MatrixGrid/useGridCellContent.ts b/webapp/src/components/common/MatrixGrid/useGridCellContent.ts index 57c94c5fe4..2257fa518d 100644 --- a/webapp/src/components/common/MatrixGrid/useGridCellContent.ts +++ b/webapp/src/components/common/MatrixGrid/useGridCellContent.ts @@ -17,8 +17,8 @@ import { GridCell, GridCellKind, Item } from "@glideapps/glide-data-grid"; import { type EnhancedGridColumn, type ColumnType, - ColumnTypes, MatrixAggregates, + Column, } from "./types"; import { formatNumber } from "./utils"; @@ -37,7 +37,7 @@ type CellContentGenerator = ( * Each generator function creates the appropriate GridCell based on the column type and data. */ const cellContentGenerators: Record = { - [ColumnTypes.Text]: ( + [Column.Text]: ( row, col, column, @@ -52,14 +52,14 @@ const cellContentGenerators: Record = { readonly: !column.editable, allowOverlay: false, }), - [ColumnTypes.DateTime]: (row, col, column, data, dateTime) => ({ + [Column.DateTime]: (row, col, column, data, dateTime) => ({ kind: GridCellKind.Text, data: "", // Date/time columns are not editable displayData: dateTime?.[row] ?? "", readonly: !column.editable, allowOverlay: false, }), - [ColumnTypes.Number]: (row, col, column, data) => { + [Column.Number]: (row, col, column, data) => { const value = data?.[row]?.[col]; return { @@ -72,7 +72,7 @@ const cellContentGenerators: Record = { thousandSeparator: " ", }; }, - [ColumnTypes.Aggregate]: (row, col, column, data, dateTime, aggregates) => { + [Column.Aggregate]: (row, col, column, data, dateTime, aggregates) => { const value = aggregates?.[column.id as keyof MatrixAggregates]?.[row]; return { @@ -109,7 +109,7 @@ const cellContentGenerators: Record = { * @param dateTime - Optional array of date-time strings for date columns. * @param aggregates - Optional object mapping column IDs to arrays of aggregated values. * @param rowHeaders - Optional array of row header labels. - * @param isReadOnlyEnabled - Whether the grid is read-only (default is false). + * @param isReadOnly - Whether the grid is read-only (default is false). * @param isPercentDisplayEnabled - Whether to display number values as percentages (default is false). * @returns A function that accepts a grid item and returns the configured grid cell content. */ @@ -120,7 +120,7 @@ export function useGridCellContent( dateTime?: string[], aggregates?: Partial, rowHeaders?: string[], - isReadOnlyEnabled = false, + isReadOnly = false, isPercentDisplayEnabled = false, ): (cell: Item) => GridCell { const columnMap = useMemo(() => { @@ -160,7 +160,7 @@ export function useGridCellContent( // accounting for any non-data columns in the grid let adjustedCol = col; - if (column.type === ColumnTypes.Number && gridToData) { + if (column.type === Column.Number && gridToData) { // Map grid cell to data array index const dataCell = gridToData(cell); @@ -185,12 +185,12 @@ export function useGridCellContent( ...gridCell, displayData: `${gridCell.data}%`, // If ReadOnly is enabled, we don't want to allow overlay - allowOverlay: !isReadOnlyEnabled, + allowOverlay: !isReadOnly, }; } // Prevent updates for read-only grids - if (isReadOnlyEnabled) { + if (isReadOnly) { return { ...gridCell, allowOverlay: false, @@ -206,7 +206,7 @@ export function useGridCellContent( dateTime, aggregates, rowHeaders, - isReadOnlyEnabled, + isReadOnly, isPercentDisplayEnabled, ], ); diff --git a/webapp/src/components/common/MatrixGrid/useMatrix.ts b/webapp/src/components/common/MatrixGrid/useMatrix.ts index b747aadce2..225b1146e0 100644 --- a/webapp/src/components/common/MatrixGrid/useMatrix.ts +++ b/webapp/src/components/common/MatrixGrid/useMatrix.ts @@ -26,13 +26,13 @@ import { getStudyData } from "../../../services/api/study"; import { EnhancedGridColumn, MatrixDataDTO, - ColumnTypes, GridUpdate, MatrixUpdateDTO, MatrixAggregates, AggregateConfig, - Aggregates, - Operations, + Column, + Operation, + Aggregate, } from "./types"; import { aggregatesTheme, @@ -158,7 +158,7 @@ export function useMatrix( baseColumns.push({ id: "date", title: "Date", - type: ColumnTypes.DateTime, + type: Column.DateTime, editable: false, themeOverride: { bgCell: "#2D2E40" }, }); @@ -168,7 +168,7 @@ export function useMatrix( baseColumns.unshift({ id: "rowHeaders", title: "", - type: ColumnTypes.Text, + type: Column.Text, editable: false, }); } @@ -184,10 +184,10 @@ export function useMatrix( (aggregateType) => ({ id: aggregateType, title: aggregateType.charAt(0).toUpperCase() + aggregateType.slice(1), // Capitalize first letter - type: ColumnTypes.Aggregate, + type: Column.Aggregate, editable: false, themeOverride: - aggregateType === Aggregates.Avg + aggregateType === Aggregate.Avg ? aggregatesTheme : { ...aggregatesTheme, bgCell: "#464770" }, }), @@ -218,7 +218,7 @@ export function useMatrix( return { coordinates: [[col, row]], operation: { - operation: Operations.Eq, + operation: Operation.Eq, value: value.data, }, }; diff --git a/webapp/src/components/common/MatrixGrid/utils.test.ts b/webapp/src/components/common/MatrixGrid/utils.test.ts index 403e46c0ed..93a419f742 100644 --- a/webapp/src/components/common/MatrixGrid/utils.test.ts +++ b/webapp/src/components/common/MatrixGrid/utils.test.ts @@ -16,7 +16,7 @@ import { MatrixIndex, StudyOutputDownloadLevelDTO, } from "../../../common/types"; -import { ColumnTypes } from "./types"; +import { Column } from "./types"; import { calculateMatrixAggregates, formatNumber, @@ -49,21 +49,21 @@ describe("generateTimeSeriesColumns", () => { { id: "data1", title: "TS 1", - type: ColumnTypes.Number, + type: Column.Number, style: "normal", editable: true, }, { id: "data2", title: "TS 2", - type: ColumnTypes.Number, + type: Column.Number, style: "normal", editable: true, }, { id: "data3", title: "TS 3", - type: ColumnTypes.Number, + type: Column.Number, style: "normal", editable: true, }, @@ -81,14 +81,14 @@ describe("generateTimeSeriesColumns", () => { { id: "data10", title: "Data 10", - type: ColumnTypes.Number, + type: Column.Number, style: "normal", editable: false, }, { id: "data11", title: "Data 11", - type: ColumnTypes.Number, + type: Column.Number, style: "normal", editable: false, }, @@ -110,7 +110,7 @@ describe("generateTimeSeriesColumns", () => { test("maintains consistent type and style", () => { const result = generateTimeSeriesColumns({ count: 1000 }); result.forEach((column) => { - expect(column.type).toBe(ColumnTypes.Number); + expect(column.type).toBe(Column.Number); expect(column.style).toBe("normal"); }); }); diff --git a/webapp/src/components/common/MatrixGrid/utils.ts b/webapp/src/components/common/MatrixGrid/utils.ts index 89b126afa1..37254f0211 100644 --- a/webapp/src/components/common/MatrixGrid/utils.ts +++ b/webapp/src/components/common/MatrixGrid/utils.ts @@ -14,18 +14,18 @@ import { EnhancedGridColumn, - ColumnTypes, TimeSeriesColumnOptions, CustomColumnOptions, MatrixAggregates, AggregateType, AggregateConfig, - Aggregates, DateIncrementFunction, FormatFunction, TimeFrequency, TimeFrequencyType, DateTimeMetadataDTO, + Aggregate, + Column, } from "./types"; import { type FirstWeekContainsDate, @@ -82,7 +82,7 @@ export const darkTheme: Theme = { export const readOnlyDarkTheme: Partial = { bgCell: "#1A1C2A", bgCellMedium: "#22243A", - textDark: "#A0A0A0", + textDark: "#FAF9F6", textMedium: "#808080", textLight: "#606060", accentColor: "#4A4C66", @@ -118,7 +118,6 @@ export function formatNumber(num: number | undefined): string { const [integerPart, decimalPart] = num.toString().split("."); - // Format integer part with thousand separators using a non-regex approach const formattedInteger = integerPart .split("") .reverse() @@ -152,15 +151,15 @@ const TIME_FREQUENCY_CONFIG: Record< format: FormatFunction; } > = { - [TimeFrequency.ANNUAL]: { + [TimeFrequency.Annual]: { increment: addYears, format: () => t("global.time.annual"), }, - [TimeFrequency.MONTHLY]: { + [TimeFrequency.Monthly]: { increment: addMonths, format: (date: Date) => format(date, "MMM", { locale: getLocale() }), }, - [TimeFrequency.WEEKLY]: { + [TimeFrequency.Weekly]: { increment: addWeeks, format: (date: Date, firstWeekSize: number) => { const weekStart = startOfWeek(date, { locale: getLocale() }); @@ -172,11 +171,11 @@ const TIME_FREQUENCY_CONFIG: Record< }); }, }, - [TimeFrequency.DAILY]: { + [TimeFrequency.Daily]: { increment: addDays, format: (date: Date) => format(date, "EEE d MMM", { locale: getLocale() }), }, - [TimeFrequency.HOURLY]: { + [TimeFrequency.Hourly]: { increment: addHours, format: (date: Date) => format(date, "EEE d MMM HH:mm", { locale: getLocale() }), @@ -222,12 +221,12 @@ export const generateDateTime = (config: DateTimeMetadataDTO): string[] => { * * @example Usage within a column definition array * const columns = [ - * { id: "rowHeaders", title: "", type: ColumnTypes.Text, ... }, - * { id: "date", title: "Date", type: ColumnTypes.DateTime, ... }, + * { id: "rowHeaders", title: "", type: Column.Text, ... }, + * { id: "date", title: "Date", type: Column.DateTime, ... }, * ...generateTimeSeriesColumns({ count: 60 }), - * { id: "min", title: "Min", type: ColumnTypes.Aggregate, ... }, - * { id: "max", title: "Max", type: ColumnTypes.Aggregate, ... }, - * { id: "avg", title: "Avg", type: ColumnTypes.Aggregate, ... } + * { id: "min", title: "Min", type: Column.Aggregate, ... }, + * { id: "max", title: "Max", type: Column.Aggregate, ... }, + * { id: "avg", title: "Avg", type: Column.Aggregate, ... } * ]; */ export function generateTimeSeriesColumns({ @@ -241,7 +240,7 @@ export function generateTimeSeriesColumns({ return Array.from({ length: count }, (_, index) => ({ id: `data${startIndex + index}`, title: `${prefix} ${startIndex + index}`, - type: ColumnTypes.Number, + type: Column.Number, style, width, editable, @@ -263,7 +262,7 @@ export function generateCustomColumns({ return titles.map((title, index) => ({ id: `custom${index + 1}`, title, - type: ColumnTypes.Number, + type: Column.Number, style: "normal", width, editable: true, @@ -298,16 +297,21 @@ export function generateDataColumns( return []; } -// TODO add docs + refactor +/** + * Determines the aggregate types based on the provided configuration. + * + * @param aggregateConfig - The configuration for aggregates. + * @returns An array of AggregateType. + */ export function getAggregateTypes( aggregateConfig: AggregateConfig, ): AggregateType[] { if (aggregateConfig === "stats") { - return [Aggregates.Avg, Aggregates.Min, Aggregates.Max]; + return [Aggregate.Avg, Aggregate.Min, Aggregate.Max]; } if (aggregateConfig === "all") { - return [Aggregates.Min, Aggregates.Max, Aggregates.Avg, Aggregates.Total]; + return [Aggregate.Min, Aggregate.Max, Aggregate.Avg, Aggregate.Total]; } if (Array.isArray(aggregateConfig)) { @@ -317,6 +321,13 @@ export function getAggregateTypes( return []; } +/** + * Calculates matrix aggregates based on the provided matrix and aggregate types. + * + * @param matrix - The input matrix of numbers. + * @param aggregateTypes - The types of aggregates to calculate. + * @returns An object containing the calculated aggregates. + */ export function calculateMatrixAggregates( matrix: number[][], aggregateTypes: AggregateType[], @@ -324,39 +335,29 @@ export function calculateMatrixAggregates( const aggregates: Partial = {}; matrix.forEach((row) => { - if (aggregateTypes.includes(Aggregates.Min)) { - if (!aggregates.min) { - aggregates.min = []; - } + if (aggregateTypes.includes(Aggregate.Min)) { + aggregates.min = aggregates.min || []; aggregates.min.push(Math.min(...row)); } - if (aggregateTypes.includes(Aggregates.Max)) { - if (!aggregates.max) { - aggregates.max = []; - } + if (aggregateTypes.includes(Aggregate.Max)) { + aggregates.max = aggregates.max || []; aggregates.max.push(Math.max(...row)); } if ( - aggregateTypes.includes(Aggregates.Avg) || - aggregateTypes.includes(Aggregates.Total) + aggregateTypes.includes(Aggregate.Avg) || + aggregateTypes.includes(Aggregate.Total) ) { - const sum = row.reduce((sum, num) => sum + num, 0); - - if (aggregateTypes.includes(Aggregates.Avg)) { - if (!aggregates.avg) { - aggregates.avg = []; - } + const sum = row.reduce((acc, num) => acc + num, 0); + if (aggregateTypes.includes(Aggregate.Avg)) { + aggregates.avg = aggregates.avg || []; aggregates.avg.push(Number((sum / row.length).toFixed())); } - if (aggregateTypes.includes(Aggregates.Total)) { - if (!aggregates.total) { - aggregates.total = []; - } - + if (aggregateTypes.includes(Aggregate.Total)) { + aggregates.total = aggregates.total || []; aggregates.total.push(Number(sum.toFixed())); } } diff --git a/webapp/src/components/common/MatrixInput/index.tsx b/webapp/src/components/common/MatrixInput/index.tsx index 62219a43d8..4034517235 100644 --- a/webapp/src/components/common/MatrixInput/index.tsx +++ b/webapp/src/components/common/MatrixInput/index.tsx @@ -49,7 +49,7 @@ interface Props { fetchFn?: fetchMatrixFn; disableEdit?: boolean; disableImport?: boolean; - enablePercentDisplay?: boolean; + showPercent?: boolean; } function MatrixInput({ @@ -62,7 +62,7 @@ function MatrixInput({ fetchFn, disableEdit = false, disableImport = false, - enablePercentDisplay, + showPercent, }: Props) { const { enqueueSnackbar } = useSnackbar(); const enqueueErrorSnackbar = useEnqueueErrorSnackbar(); @@ -201,7 +201,7 @@ function MatrixInput({ readOnly={disableEdit} onUpdate={handleUpdate} computStats={computStats} - isPercentDisplayEnabled={enablePercentDisplay} + isPercentDisplayEnabled={showPercent} /> ) : ( !isLoading && ( From e95c0636a74229a9327e681a660f8a31caee221f Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Wed, 16 Oct 2024 16:26:41 +0200 Subject: [PATCH 110/182] test(ui): enhance `utils` tests and add `MatrixActions` component tests --- .../common/MatrixGrid/MatrixActions.test.tsx | 164 +++++++++++ .../MatrixGrid/useGridCellContent.test.ts | 34 --- .../common/MatrixGrid/utils.test.ts | 258 +++++++++++++++++- 3 files changed, 420 insertions(+), 36 deletions(-) create mode 100644 webapp/src/components/common/MatrixGrid/MatrixActions.test.tsx diff --git a/webapp/src/components/common/MatrixGrid/MatrixActions.test.tsx b/webapp/src/components/common/MatrixGrid/MatrixActions.test.tsx new file mode 100644 index 0000000000..f7b3802fef --- /dev/null +++ b/webapp/src/components/common/MatrixGrid/MatrixActions.test.tsx @@ -0,0 +1,164 @@ +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + +import React from "react"; +import { render, screen, fireEvent } from "@testing-library/react"; +import { describe, it, expect, vi, beforeEach } from "vitest"; +import MatrixActions from "./MatrixActions"; + +vi.mock("../buttons/SplitButton", () => ({ + default: ({ + children, + onClick, + disabled, + }: { + children: React.ReactNode; + onClick: () => void; + disabled?: boolean; + }) => ( + + ), +})); + +vi.mock("../buttons/DownloadMatrixButton", () => ({ + default: ({ disabled, label }: { disabled: boolean; label?: string }) => ( + + ), +})); + +describe("MatrixActions", () => { + const defaultProps = { + onImport: vi.fn(), + onSave: vi.fn(), + studyId: "study1", + path: "/path/to/matrix", + disabled: false, + pendingUpdatesCount: 0, + isSubmitting: false, + undo: vi.fn(), + redo: vi.fn(), + canUndo: true, + canRedo: true, + }; + + beforeEach(() => { + vi.clearAllMocks(); + }); + + it("renders all buttons and controls", () => { + render(); + + expect(screen.getByLabelText("global.undo")).toBeDefined(); + expect(screen.getByLabelText("global.redo")).toBeDefined(); + expect(screen.getByText("(0)")).toBeDefined(); + expect(screen.getByText("global.import")).toBeDefined(); + expect(screen.getByText("global.export")).toBeDefined(); + }); + + it("disables undo button when canUndo is false", () => { + render(); + expect( + screen.getByLabelText("global.undo").querySelector("button"), + ).toBeDisabled(); + }); + + it("disables redo button when canRedo is false", () => { + render(); + expect( + screen.getByLabelText("global.redo").querySelector("button"), + ).toBeDisabled(); + }); + + it("calls undo function when undo button is clicked", () => { + render(); + const undoButton = screen + .getByLabelText("global.undo") + .querySelector("button"); + if (undoButton) { + fireEvent.click(undoButton); + expect(defaultProps.undo).toHaveBeenCalled(); + } else { + throw new Error("Undo button not found"); + } + }); + + it("calls redo function when redo button is clicked", () => { + render(); + const redoButton = screen + .getByLabelText("global.redo") + .querySelector("button"); + if (redoButton) { + fireEvent.click(redoButton); + expect(defaultProps.redo).toHaveBeenCalled(); + } else { + throw new Error("Redo button not found"); + } + }); + + it("disables save button when pendingUpdatesCount is 0", () => { + render(); + expect(screen.getByText("(0)").closest("button")).toBeDisabled(); + }); + + it("enables save button when pendingUpdatesCount is greater than 0", () => { + render(); + expect(screen.getByText("(1)").closest("button")).not.toBeDisabled(); + }); + + it("calls onSave function when save button is clicked", () => { + render(); + const saveButton = screen.getByText("(1)").closest("button"); + if (saveButton) { + fireEvent.click(saveButton); + expect(defaultProps.onSave).toHaveBeenCalled(); + } else { + throw new Error("Save button not found"); + } + }); + + it("shows loading state on save button when isSubmitting is true", () => { + render( + , + ); + expect(screen.getByText("(1)").closest("button")).toBeDisabled(); + }); + + it("calls onImport function when import button is clicked", () => { + render(); + fireEvent.click(screen.getByText("global.import")); + expect(defaultProps.onImport).toHaveBeenCalled(); + }); + + it("disables import button when isSubmitting is true", () => { + render(); + expect(screen.getByText("global.import")).toBeDisabled(); + }); + + it("passes correct props to DownloadMatrixButton", () => { + const { rerender } = render(); + expect(screen.getByText("global.export")).not.toBeDisabled(); + + rerender(); + expect(screen.getByText("global.export")).toBeDisabled(); + + rerender(); + expect(screen.getByText("global.export")).toBeDisabled(); + }); +}); diff --git a/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts b/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts index cdb2c2003c..ad28cfed59 100644 --- a/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts +++ b/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts @@ -17,40 +17,6 @@ import { useGridCellContent } from "./useGridCellContent"; import { Column, MatrixAggregates, type EnhancedGridColumn } from "./types"; import { useColumnMapping } from "./useColumnMapping"; -// Mocking i18next -vi.mock("i18next", () => { - const i18n = { - language: "fr", - use: vi.fn().mockReturnThis(), - init: vi.fn(), - t: vi.fn((key) => key), - changeLanguage: vi.fn((lang) => { - i18n.language = lang; - return Promise.resolve(); - }), - on: vi.fn(), - }; - return { default: i18n }; -}); - -// Mocking react-i18next -vi.mock("react-i18next", async (importOriginal) => { - const actual = await importOriginal(); - return Object.assign({}, actual, { - useTranslation: () => ({ - t: vi.fn((key) => key), - i18n: { - changeLanguage: vi.fn(), - language: "fr", - }, - }), - initReactI18next: { - type: "3rdParty", - init: vi.fn(), - }, - }); -}); - function renderGridCellContent( data: number[][], columns: EnhancedGridColumn[], diff --git a/webapp/src/components/common/MatrixGrid/utils.test.ts b/webapp/src/components/common/MatrixGrid/utils.test.ts index 93a419f742..c2054c34fd 100644 --- a/webapp/src/components/common/MatrixGrid/utils.test.ts +++ b/webapp/src/components/common/MatrixGrid/utils.test.ts @@ -16,18 +16,112 @@ import { MatrixIndex, StudyOutputDownloadLevelDTO, } from "../../../common/types"; -import { Column } from "./types"; +import { + Aggregate, + AggregateType, + Column, + DateTimeMetadataDTO, + TimeFrequency, +} from "./types"; import { calculateMatrixAggregates, formatNumber, + generateCustomColumns, + generateDataColumns, generateDateTime, generateTimeSeriesColumns, + getAggregateTypes, } from "./utils"; +vi.mock("date-fns", async () => { + const actual = (await vi.importActual( + "date-fns", + )) as typeof import("date-fns"); + return { + ...actual, + format: vi.fn((date: Date, formatString: string) => { + if (formatString.includes("ww")) { + const weekNumber = actual.getWeek(date); + return `W ${weekNumber.toString().padStart(2, "0")}`; + } + return actual.format(date, formatString); + }), + }; +}); + describe("generateDateTime", () => { + beforeAll(() => { + // Set a fixed date for consistent testing + vi.useFakeTimers(); + vi.setSystemTime(new Date("2023-01-01 00:00:00")); + }); + + it("generates correct annual format", () => { + const config: DateTimeMetadataDTO = { + start_date: "2023-01-01 00:00:00", + steps: 3, + first_week_size: 7, + level: TimeFrequency.Annual, + }; + const result = generateDateTime(config); + expect(result).toEqual([ + "global.time.annual", + "global.time.annual", + "global.time.annual", + ]); + }); + + it("generates correct monthly format", () => { + const config: DateTimeMetadataDTO = { + start_date: "2023-01-01 00:00:00", + steps: 3, + first_week_size: 7, + level: TimeFrequency.Monthly, + }; + const result = generateDateTime(config); + expect(result).toEqual(["Jan", "Feb", "Mar"]); + }); + + it("generates correct weekly format with first_week_size 1", () => { + const config: DateTimeMetadataDTO = { + start_date: "2023-01-01 00:00:00", + steps: 3, + first_week_size: 1, + level: TimeFrequency.Weekly, + }; + const result = generateDateTime(config); + expect(result).toEqual(["W 01", "W 02", "W 03"]); + }); + + it("generates correct daily format", () => { + const config: DateTimeMetadataDTO = { + start_date: "2023-01-01 00:00:00", + steps: 3, + first_week_size: 7, + level: TimeFrequency.Daily, + }; + const result = generateDateTime(config); + expect(result).toEqual(["Sun 1 Jan", "Mon 2 Jan", "Tue 3 Jan"]); + }); + + it("generates correct hourly format", () => { + const config: DateTimeMetadataDTO = { + start_date: "2039-07-01 00:00:00", + steps: 3, + first_week_size: 7, + level: TimeFrequency.Hourly, + }; + const result = generateDateTime(config); + expect(result).toEqual([ + "Fri 1 Jul 00:00", + "Fri 1 Jul 01:00", + "Fri 1 Jul 02:00", + ]); + }); + test("generates correct number of dates", () => { const metadata: MatrixIndex = { - start_date: "2023-01-01T00:00:00Z", + start_date: "2023-01-01 00:00:00", steps: 5, first_week_size: 7, level: StudyOutputDownloadLevelDTO.DAILY, @@ -231,3 +325,163 @@ describe("formatNumber", () => { expect(formatNumber(1e20)).toBe("100 000 000 000 000 000 000"); }); }); + +describe("generateCustomColumns", () => { + it("should generate custom columns with correct properties", () => { + const titles = ["Custom 1", "Custom 2", "Custom 3"]; + const width = 100; + const result = generateCustomColumns({ titles, width }); + + expect(result).toHaveLength(3); + result.forEach((column, index) => { + expect(column).toEqual({ + id: `custom${index + 1}`, + title: titles[index], + type: Column.Number, + style: "normal", + width: 100, + editable: true, + }); + }); + }); + + it("should handle empty titles array", () => { + const result = generateCustomColumns({ titles: [], width: 100 }); + expect(result).toEqual([]); + }); +}); + +describe("generateDataColumns", () => { + it("should generate custom columns when provided", () => { + const customColumns = ["Custom 1", "Custom 2"]; + const result = generateDataColumns(false, 5, customColumns, 100); + + expect(result).toHaveLength(2); + expect(result[0].title).toBe("Custom 1"); + expect(result[1].title).toBe("Custom 2"); + }); + + it("should generate time series columns when enabled", () => { + const result = generateDataColumns(true, 3); + + expect(result).toHaveLength(3); + expect(result[0].title).toBe("TS 1"); + expect(result[1].title).toBe("TS 2"); + expect(result[2].title).toBe("TS 3"); + }); + + it("should return empty array when custom columns not provided and time series disabled", () => { + const result = generateDataColumns(false, 5); + expect(result).toEqual([]); + }); +}); + +describe("getAggregateTypes", () => { + it('should return correct aggregate types for "stats" config', () => { + const result = getAggregateTypes("stats"); + expect(result).toEqual([Aggregate.Avg, Aggregate.Min, Aggregate.Max]); + }); + + it('should return correct aggregate types for "all" config', () => { + const result = getAggregateTypes("all"); + expect(result).toEqual([ + Aggregate.Min, + Aggregate.Max, + Aggregate.Avg, + Aggregate.Total, + ]); + }); + + it("should return provided aggregate types for array config", () => { + const config: AggregateType[] = [Aggregate.Min, Aggregate.Max]; + const result = getAggregateTypes(config); + expect(result).toEqual(config); + }); + + it("should return empty array for invalid config", () => { + // @ts-expect-error : we are testing an invalid value + const result = getAggregateTypes("invalid"); + expect(result).toEqual([]); + }); +}); + +describe("calculateMatrixAggregates", () => { + const matrix = [ + [1, 2, 3], + [4, 5, 6], + [7, 8, 9], + ]; + + it("should calculate min aggregate correctly", () => { + const result = calculateMatrixAggregates(matrix, [Aggregate.Min]); + expect(result).toEqual({ min: [1, 4, 7] }); + }); + + it("should calculate max aggregate correctly", () => { + const result = calculateMatrixAggregates(matrix, [Aggregate.Max]); + expect(result).toEqual({ max: [3, 6, 9] }); + }); + + it("should calculate avg aggregate correctly", () => { + const result = calculateMatrixAggregates(matrix, [Aggregate.Avg]); + expect(result).toEqual({ avg: [2, 5, 8] }); + }); + + it("should calculate total aggregate correctly", () => { + const result = calculateMatrixAggregates(matrix, [Aggregate.Total]); + expect(result).toEqual({ total: [6, 15, 24] }); + }); + + it("should calculate multiple aggregates correctly", () => { + const result = calculateMatrixAggregates(matrix, [ + Aggregate.Min, + Aggregate.Max, + Aggregate.Avg, + Aggregate.Total, + ]); + expect(result).toEqual({ + min: [1, 4, 7], + max: [3, 6, 9], + avg: [2, 5, 8], + total: [6, 15, 24], + }); + }); + + it("should handle empty matrix", () => { + const result = calculateMatrixAggregates( + [], + [Aggregate.Min, Aggregate.Max, Aggregate.Avg, Aggregate.Total], + ); + expect(result).toEqual({}); + }); +}); + +describe("formatNumber", () => { + it("should format integer numbers correctly", () => { + expect(formatNumber(1234567)).toBe("1 234 567"); + expect(formatNumber(1000000)).toBe("1 000 000"); + expect(formatNumber(1)).toBe("1"); + }); + + it("should format decimal numbers correctly", () => { + expect(formatNumber(1234.56)).toBe("1 234.56"); + expect(formatNumber(1000000.123)).toBe("1 000 000.123"); + }); + + it("should handle negative numbers", () => { + expect(formatNumber(-1234567)).toBe("-1 234 567"); + expect(formatNumber(-1234.56)).toBe("-1 234.56"); + }); + + it("should handle zero", () => { + expect(formatNumber(0)).toBe("0"); + }); + + it("should handle undefined", () => { + expect(formatNumber(undefined)).toBe(""); + }); + + it("should handle large numbers", () => { + expect(formatNumber(1e15)).toBe("1 000 000 000 000 000"); + }); +}); From 6f9cd44da25fa0bc135bd97f5033796feb248ae0 Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Mon, 21 Oct 2024 17:25:23 +0200 Subject: [PATCH 111/182] feat(ui-debug): replace `MatrixInput` and add disable import prop --- .../Singlestudy/explore/Debug/Data/Matrix.tsx | 18 +++++------------- .../components/common/MatrixGrid/Matrix.tsx | 3 +++ .../common/MatrixGrid/MatrixActions.tsx | 4 +++- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx index 4957e3a88e..f360f12a13 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx @@ -12,20 +12,12 @@ * This file is part of the Antares project. */ -import { MatrixStats } from "../../../../../../common/types"; -import MatrixInput from "../../../../../common/MatrixInput"; +import Matrix from "../../../../../common/MatrixGrid/Matrix"; import type { DataCompProps } from "../utils"; -function Matrix({ studyId, filename, filePath, canEdit }: DataCompProps) { - return ( - - ); +function DebugMatrix({ studyId, filename, filePath, canEdit }: DataCompProps) { + console.log("canEdit", canEdit); + return ; } -export default Matrix; +export default DebugMatrix; diff --git a/webapp/src/components/common/MatrixGrid/Matrix.tsx b/webapp/src/components/common/MatrixGrid/Matrix.tsx index ae7cefe6ba..c10dd05f7b 100644 --- a/webapp/src/components/common/MatrixGrid/Matrix.tsx +++ b/webapp/src/components/common/MatrixGrid/Matrix.tsx @@ -39,6 +39,7 @@ interface MatrixProps { customColumns?: string[] | readonly string[]; colWidth?: number; fetchMatrixData?: fetchMatrixFn; + isImportDisabled?: boolean; } function Matrix({ @@ -54,6 +55,7 @@ function Matrix({ customColumns, colWidth, fetchMatrixData, + isImportDisabled = false, }: MatrixProps) { const { t } = useTranslation(); const { study } = useOutletContext<{ study: StudyMetadata }>(); @@ -120,6 +122,7 @@ function Matrix({ redo={redo} canUndo={canUndo} canRedo={canRedo} + isImportDisabled={isImportDisabled} /> diff --git a/webapp/src/components/common/MatrixGrid/MatrixActions.tsx b/webapp/src/components/common/MatrixGrid/MatrixActions.tsx index 46cae239cc..d822c13f69 100644 --- a/webapp/src/components/common/MatrixGrid/MatrixActions.tsx +++ b/webapp/src/components/common/MatrixGrid/MatrixActions.tsx @@ -33,6 +33,7 @@ interface MatrixActionsProps { redo: VoidFunction; canUndo: boolean; canRedo: boolean; + isImportDisabled?: boolean; } function MatrixActions({ @@ -47,6 +48,7 @@ function MatrixActions({ redo, canUndo, canRedo, + isImportDisabled = false, }: MatrixActionsProps) { const { t } = useTranslation(); @@ -99,7 +101,7 @@ function MatrixActions({ ButtonProps={{ startIcon: , }} - disabled={isSubmitting} + disabled={isSubmitting || isImportDisabled} > {t("global.import")} From d84b6e1c8147484ee1767515507530e8d9934300 Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Wed, 23 Oct 2024 14:33:09 +0200 Subject: [PATCH 112/182] fix(ui): correct display condition in `Matrix` to handle empty subarray presence correctly --- .../components/App/Singlestudy/explore/Debug/Data/Matrix.tsx | 1 - webapp/src/components/common/MatrixGrid/Matrix.tsx | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx index f360f12a13..6e0c1b91c0 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx @@ -16,7 +16,6 @@ import Matrix from "../../../../../common/MatrixGrid/Matrix"; import type { DataCompProps } from "../utils"; function DebugMatrix({ studyId, filename, filePath, canEdit }: DataCompProps) { - console.log("canEdit", canEdit); return ; } diff --git a/webapp/src/components/common/MatrixGrid/Matrix.tsx b/webapp/src/components/common/MatrixGrid/Matrix.tsx index c10dd05f7b..101cb961b8 100644 --- a/webapp/src/components/common/MatrixGrid/Matrix.tsx +++ b/webapp/src/components/common/MatrixGrid/Matrix.tsx @@ -102,7 +102,7 @@ function Matrix({ return ; } - if (!data || data.length === 0) { + if (!data[0]?.length) { return ; } From a5365e7e06342dd9ad83c44d009e2eba6b1c7f88 Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Wed, 23 Oct 2024 14:45:50 +0200 Subject: [PATCH 113/182] feat(ui): enable aggregates on thermal and renewables clusters --- .../explore/Modelization/Areas/Renewables/Matrix.tsx | 1 + .../Singlestudy/explore/Modelization/Areas/Thermal/Matrix.tsx | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Matrix.tsx index c6bbac8c3e..70429f1883 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Matrix.tsx @@ -25,6 +25,7 @@ function RenewablesMatrix({ areaId, clusterId }: Props) { ); } diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Matrix.tsx index 60a15a02c6..a2a0924fa7 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Matrix.tsx @@ -58,6 +58,7 @@ function ThermalMatrices({ study, areaId, clusterId }: Props) { { url: `input/thermal/series/${areaId}/${clusterId}/series`, titleKey: "availability", + aggregates: "stats" as const, // avg, min, max }, { url: `input/thermal/series/${areaId}/${clusterId}/fuelCost`, @@ -107,13 +108,14 @@ function ThermalMatrices({ study, areaId, clusterId }: Props) { {filteredMatrices.map( - ({ url, titleKey, columns }) => + ({ url, titleKey, columns, aggregates }) => value === titleKey && ( ), )} From 5a95b8c7556a2c92f21d2ebfdcc63b8b2ed37892 Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Thu, 24 Oct 2024 10:52:55 +0200 Subject: [PATCH 114/182] feat(ui): add `useMatrixPortal`to manage matrices on split views feat(ui): update `useMatrixPortal` and improve test coverage --- .../common/MatrixGrid/index.test.tsx | 201 +++++++++++++++++- .../components/common/MatrixGrid/index.tsx | 70 +++--- .../src/components/common/MatrixGrid/types.ts | 5 + .../common/MatrixGrid/useGridCellContent.ts | 4 +- .../components/common/MatrixGrid/useMatrix.ts | 87 ++++---- .../MatrixGrid/useMatrixPortal.test.tsx | 156 ++++++++++++++ .../common/MatrixGrid/useMatrixPortal.ts | 76 +++++++ .../common/MatrixGrid/utils.test.ts | 70 +++--- .../src/components/common/MatrixGrid/utils.ts | 33 ++- 9 files changed, 579 insertions(+), 123 deletions(-) create mode 100644 webapp/src/components/common/MatrixGrid/useMatrixPortal.test.tsx create mode 100644 webapp/src/components/common/MatrixGrid/useMatrixPortal.ts diff --git a/webapp/src/components/common/MatrixGrid/index.test.tsx b/webapp/src/components/common/MatrixGrid/index.test.tsx index fbbeaa4a2c..467f2c913c 100644 --- a/webapp/src/components/common/MatrixGrid/index.test.tsx +++ b/webapp/src/components/common/MatrixGrid/index.test.tsx @@ -18,6 +18,8 @@ import Box from "@mui/material/Box"; import { mockGetBoundingClientRect } from "../../../tests/mocks/mockGetBoundingClientRect"; import { type EnhancedGridColumn, Column } from "./types"; import { mockHTMLCanvasElement } from "../../../tests/mocks/mockHTMLCanvasElement"; +import SplitView from "../SplitView"; +import userEvent from "@testing-library/user-event"; beforeEach(() => { mockHTMLCanvasElement(); @@ -69,7 +71,6 @@ describe("MatrixGrid rendering", () => { width: 100, type: Column.Number, editable: true, - order: 0, }, { id: "col2", @@ -77,7 +78,6 @@ describe("MatrixGrid rendering", () => { width: 100, type: Column.Number, editable: true, - order: 1, }, { id: "col3", @@ -85,7 +85,6 @@ describe("MatrixGrid rendering", () => { width: 100, type: Column.Number, editable: true, - order: 2, }, ]; @@ -120,7 +119,6 @@ describe("MatrixGrid rendering", () => { width: 100, type: Column.Number, editable: true, - order: 0, }, { id: "col2", @@ -128,7 +126,6 @@ describe("MatrixGrid rendering", () => { width: 100, type: Column.Number, editable: true, - order: 1, }, { id: "col3", @@ -136,7 +133,6 @@ describe("MatrixGrid rendering", () => { width: 100, type: Column.Number, editable: true, - order: 2, }, ]; @@ -173,7 +169,6 @@ describe("MatrixGrid rendering", () => { width: 100, type: Column.Number, editable: true, - order: 0, }, { id: "col2", @@ -181,7 +176,6 @@ describe("MatrixGrid rendering", () => { width: 100, type: Column.Number, editable: true, - order: 1, }, { id: "col3", @@ -189,7 +183,6 @@ describe("MatrixGrid rendering", () => { width: 100, type: Column.Number, editable: true, - order: 2, }, ]; @@ -231,4 +224,194 @@ describe("MatrixGrid rendering", () => { throw new Error("Expected an HTMLElement but received a different node."); } }); + + describe("MatrixGrid portal management", () => { + const sampleData = [ + [1, 2], + [4, 5], + ]; + + const sampleColumns: EnhancedGridColumn[] = [ + { + id: "col1", + title: "Column 1", + width: 100, + type: Column.Number, + editable: true, + }, + { + id: "col2", + title: "Column 2", + width: 100, + type: Column.Number, + editable: true, + }, + ]; + + test("should create portal when MatrixGrid mounts", () => { + render( + , + ); + + const portal = document.getElementById("portal"); + expect(portal).toBeInTheDocument(); + expect(portal?.style.display).toBe("none"); + }); + + test("should show/hide portal on mouse enter/leave", async () => { + const user = userEvent.setup(); + const { container } = render( + , + ); + + const matrix = container.querySelector(".matrix-container"); + expect(matrix).toBeInTheDocument(); + + // Mouse enter + await user.hover(matrix!); + const portalAfterEnter = document.getElementById("portal"); + expect(portalAfterEnter?.style.display).toBe("block"); + + // Mouse leave + await user.unhover(matrix!); + const portalAfterLeave = document.getElementById("portal"); + expect(portalAfterLeave?.style.display).toBe("none"); + }); + + test("should handle portal in split view with multiple matrices", async () => { + const user = userEvent.setup(); + + render( + + + + + + + + + + , + ); + + const matrices = document.querySelectorAll(".matrix-container"); + expect(matrices.length).toBe(2); + + // Test first matrix + await user.hover(matrices[0]); + expect(document.getElementById("portal")?.style.display).toBe("block"); + + // Test second matrix while first is still hovered + await user.hover(matrices[1]); + expect(document.getElementById("portal")?.style.display).toBe("block"); + + // Leave second matrix + await user.unhover(matrices[1]); + const portalAfterSecondLeave = document.getElementById("portal"); + expect(portalAfterSecondLeave?.style.display).toBe("none"); + }); + + test("should maintain portal when switching between matrices", async () => { + const user = userEvent.setup(); + + render( + + + + + + + + + + , + ); + + const matrices = document.querySelectorAll(".matrix-container"); + + // Rapid switching between matrices + await user.hover(matrices[0]); + expect(document.getElementById("portal")?.style.display).toBe("block"); + + await user.hover(matrices[1]); + expect(document.getElementById("portal")?.style.display).toBe("block"); + + await user.hover(matrices[0]); + expect(document.getElementById("portal")?.style.display).toBe("block"); + + // Final cleanup + await user.unhover(matrices[0]); + expect(document.getElementById("portal")?.style.display).toBe("none"); + }); + + test("should handle unmounting matrices in split view", () => { + const { unmount } = render( + + + + + + + + + + , + ); + + const portal = document.getElementById("portal"); + expect(portal).toBeInTheDocument(); + + unmount(); + expect(document.getElementById("portal")).toBeInTheDocument(); + expect(document.getElementById("portal")?.style.display).toBe("none"); + }); + }); }); diff --git a/webapp/src/components/common/MatrixGrid/index.tsx b/webapp/src/components/common/MatrixGrid/index.tsx index b68f608605..51ce67b3a0 100644 --- a/webapp/src/components/common/MatrixGrid/index.tsx +++ b/webapp/src/components/common/MatrixGrid/index.tsx @@ -27,6 +27,7 @@ import { useMemo, useState } from "react"; import { EnhancedGridColumn, GridUpdate, MatrixAggregates } from "./types"; import { darkTheme, readOnlyDarkTheme } from "./utils"; import { useColumnMapping } from "./useColumnMapping"; +import { useMatrixPortal } from "./useMatrixPortal"; export interface MatrixGridProps { data: number[][]; @@ -65,6 +66,15 @@ function MatrixGrid({ const { gridToData } = useColumnMapping(columns); + // Due to a current limitation of Glide Data Grid, only one id="portal" is active on the DOM + // This is an issue on splited matrices, the second matrix does not have an id="portal" + // Causing the overlay editor to not behave correctly on click + // This hook manage portal creation and cleanup for matrices in split views + // TODO: add a prop to detect matrices in split views and enable this conditionnaly + // !Workaround: a proper solution should be replacing this in the future + const { containerRef, handleMouseEnter, handleMouseLeave } = + useMatrixPortal(); + const theme = useMemo(() => { if (isReadOnly) { return { @@ -159,32 +169,40 @@ function MatrixGrid({ return ( <> - -
+
+ +
); } diff --git a/webapp/src/components/common/MatrixGrid/types.ts b/webapp/src/components/common/MatrixGrid/types.ts index aa6044fca1..cda4e32a13 100644 --- a/webapp/src/components/common/MatrixGrid/types.ts +++ b/webapp/src/components/common/MatrixGrid/types.ts @@ -90,6 +90,11 @@ export interface CustomColumnOptions { width?: number; } +export interface FormatNumberOptions { + value?: number; + maxDecimals?: number; +} + export interface EnhancedGridColumn extends BaseGridColumn { id: string; width?: number; diff --git a/webapp/src/components/common/MatrixGrid/useGridCellContent.ts b/webapp/src/components/common/MatrixGrid/useGridCellContent.ts index 2257fa518d..a5b1843cf8 100644 --- a/webapp/src/components/common/MatrixGrid/useGridCellContent.ts +++ b/webapp/src/components/common/MatrixGrid/useGridCellContent.ts @@ -65,7 +65,7 @@ const cellContentGenerators: Record = { return { kind: GridCellKind.Number, data: value, - displayData: formatNumber(value), // Format thousands and decimal separator + displayData: formatNumber({ value, maxDecimals: 6 }), readonly: !column.editable, allowOverlay: true, decimalSeparator: ".", @@ -78,7 +78,7 @@ const cellContentGenerators: Record = { return { kind: GridCellKind.Number, data: value, - displayData: formatNumber(value ?? 0), // Format thousands and decimal separator + displayData: formatNumber({ value, maxDecimals: 3 }), readonly: !column.editable, allowOverlay: false, decimalSeparator: ".", diff --git a/webapp/src/components/common/MatrixGrid/useMatrix.ts b/webapp/src/components/common/MatrixGrid/useMatrix.ts index 225b1146e0..29908d97a2 100644 --- a/webapp/src/components/common/MatrixGrid/useMatrix.ts +++ b/webapp/src/components/common/MatrixGrid/useMatrix.ts @@ -91,57 +91,48 @@ export function useMatrix( // 2. When there are unsaved changes in the matrix usePrompt(t("form.changeNotSaved"), currentState.pendingUpdates.length > 0); - const fetchMatrix = useCallback( - async (loadingState = true) => { - // !NOTE This is a temporary solution to ensure the matrix is up to date - // TODO: Remove this once the matrix API is updated to return the correct data - if (loadingState) { - setIsLoading(true); - } - - try { - const [matrix, index] = await Promise.all([ - fetchMatrixData - ? // If a custom fetch function is provided, use it - fetchMatrixData(studyId) - : getStudyData(studyId, url, 1), - getStudyMatrixIndex(studyId, url), - ]); - - setState({ - data: matrix.data, - aggregates: calculateMatrixAggregates(matrix.data, aggregateTypes), - pendingUpdates: [], - updateCount: 0, - }); - setColumnCount(matrix.columns.length); - setIndex(index); - setIsLoading(false); - - return { - matrix, - index, - }; - } catch (error) { - setError(new Error(t("data.error.matrix"))); - enqueueErrorSnackbar(t("data.error.matrix"), error as AxiosError); - } finally { - setIsLoading(false); - } - }, - [ - aggregateTypes, - enqueueErrorSnackbar, - fetchMatrixData, - setState, - studyId, - url, - ], - ); + const fetchMatrix = async (loadingState = true) => { + // !NOTE This is a temporary solution to ensure the matrix is up to date + // TODO: Remove this once the matrix API is updated to return the correct data + if (loadingState) { + setIsLoading(true); + } + + try { + const [matrix, index] = await Promise.all([ + fetchMatrixData + ? // If a custom fetch function is provided, use it + fetchMatrixData(studyId) + : getStudyData(studyId, url, 1), + getStudyMatrixIndex(studyId, url), + ]); + + setState({ + data: matrix.data, + aggregates: calculateMatrixAggregates(matrix.data, aggregateTypes), + pendingUpdates: [], + updateCount: 0, + }); + setColumnCount(matrix.columns.length); + setIndex(index); + setIsLoading(false); + + return { + matrix, + index, + }; + } catch (error) { + setError(new Error(t("data.error.matrix"))); + enqueueErrorSnackbar(t("data.error.matrix"), error as AxiosError); + } finally { + setIsLoading(false); + } + }; useEffect(() => { fetchMatrix(); - }, [fetchMatrix]); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [studyId, url, aggregateTypes, fetchMatrixData]); const dateTime = useMemo(() => { return index ? generateDateTime(index) : []; diff --git a/webapp/src/components/common/MatrixGrid/useMatrixPortal.test.tsx b/webapp/src/components/common/MatrixGrid/useMatrixPortal.test.tsx new file mode 100644 index 0000000000..638214349a --- /dev/null +++ b/webapp/src/components/common/MatrixGrid/useMatrixPortal.test.tsx @@ -0,0 +1,156 @@ +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + +import { describe, it, expect, beforeEach } from "vitest"; +import { cleanup, render, screen } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { useMatrixPortal } from "./useMatrixPortal"; + +// Test component without ref +function NonRefComponent() { + return
Test Container
; +} + +// Test component with ref +function TestComponent() { + const { containerRef, handleMouseEnter, handleMouseLeave } = + useMatrixPortal(); + return ( +
+ Test Container +
+ ); +} + +describe("useMatrixPortal", () => { + beforeEach(() => { + cleanup(); // Clean up after each test + const existingPortal = document.getElementById("portal"); + if (existingPortal) { + existingPortal.remove(); + } + }); + + it("should create hidden portal initially", () => { + render(); + const portal = document.getElementById("portal"); + expect(portal).toBeInTheDocument(); + expect(portal?.style.display).toBe("none"); + }); + + it("should show portal with correct styles when mouse enters", async () => { + const user = userEvent.setup(); + render(); + + const container = screen.getByTestId("ref-container"); + await user.hover(container); + + const portal = document.getElementById("portal"); + expect(portal).toBeInTheDocument(); + expect(portal?.style.display).toBe("block"); + expect(portal?.style.position).toBe("fixed"); + expect(portal?.style.left).toBe("0px"); + expect(portal?.style.top).toBe("0px"); + expect(portal?.style.zIndex).toBe("9999"); + }); + + it("should hide portal when mouse leaves", async () => { + const user = userEvent.setup(); + render(); + + const container = screen.getByTestId("ref-container"); + + // Show portal + await user.hover(container); + expect(document.getElementById("portal")?.style.display).toBe("block"); + + // Hide portal + await user.unhover(container); + expect(document.getElementById("portal")?.style.display).toBe("none"); + }); + + it("should keep portal hidden if containerRef is null", async () => { + const user = userEvent.setup(); + + // First render test component to create portal + render(); + const portal = document.getElementById("portal"); + expect(portal?.style.display).toBe("none"); + + cleanup(); // Clean up the test component + + // Then render component without ref + render(); + const container = screen.getByTestId("non-ref-container"); + await user.hover(container); + + // Portal should stay hidden + expect(portal?.style.display).toBe("none"); + }); + + it("should handle multiple mouse enter/leave cycles", async () => { + const user = userEvent.setup(); + render(); + + const container = screen.getByTestId("ref-container"); + const portal = document.getElementById("portal"); + + // First cycle + await user.hover(container); + expect(portal?.style.display).toBe("block"); + + await user.unhover(container); + expect(portal?.style.display).toBe("none"); + + // Second cycle + await user.hover(container); + expect(portal?.style.display).toBe("block"); + + await user.unhover(container); + expect(portal?.style.display).toBe("none"); + }); + + it("should handle rapid mouse events", async () => { + const user = userEvent.setup(); + render(); + + const container = screen.getByTestId("ref-container"); + const portal = document.getElementById("portal"); + + // Rapid sequence + await user.hover(container); + await user.unhover(container); + await user.hover(container); + + expect(portal?.style.display).toBe("block"); + }); + + it("should maintain portal existence across multiple component instances", () => { + // Render first instance + const { unmount } = render(); + expect(document.getElementById("portal")).toBeInTheDocument(); + + // Unmount first instance + unmount(); + + // Render second instance + render(); + expect(document.getElementById("portal")).toBeInTheDocument(); + }); +}); diff --git a/webapp/src/components/common/MatrixGrid/useMatrixPortal.ts b/webapp/src/components/common/MatrixGrid/useMatrixPortal.ts new file mode 100644 index 0000000000..c6174d39d2 --- /dev/null +++ b/webapp/src/components/common/MatrixGrid/useMatrixPortal.ts @@ -0,0 +1,76 @@ +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + +import { useEffect, useRef, useState } from "react"; + +/** + * Custom hook to manage portal creation and cleanup for matrices in split views. + * This hook is specifically designed to work around a limitation where multiple + * Glide Data Grid instances compete for a single portal with id="portal". + * + * @returns Hook handlers and ref to be applied to the matrix container + * + * @example + * ```tsx + * function MatrixGrid() { + * const { containerRef, handleMouseEnter, handleMouseLeave } = useMatrixPortal(); + * + * return ( + *
+ * + *
+ * ); + * } + * ``` + */ +export function useMatrixPortal() { + const [isActive, setIsActive] = useState(false); + const containerRef = useRef(null); + + useEffect(() => { + let portal = document.getElementById("portal"); + + if (!portal) { + portal = document.createElement("div"); + portal.id = "portal"; + portal.style.position = "fixed"; + portal.style.left = "0"; + portal.style.top = "0"; + portal.style.zIndex = "9999"; + portal.style.display = "none"; + document.body.appendChild(portal); + } + + // Update visibility based on active state + if (containerRef.current && isActive) { + portal.style.display = "block"; + } else { + portal.style.display = "none"; + } + }, [isActive]); + + const handleMouseEnter = () => { + setIsActive(true); + }; + + const handleMouseLeave = () => { + setIsActive(false); + }; + + return { + containerRef, + handleMouseEnter, + handleMouseLeave, + }; +} diff --git a/webapp/src/components/common/MatrixGrid/utils.test.ts b/webapp/src/components/common/MatrixGrid/utils.test.ts index c2054c34fd..f451164ad6 100644 --- a/webapp/src/components/common/MatrixGrid/utils.test.ts +++ b/webapp/src/components/common/MatrixGrid/utils.test.ts @@ -310,22 +310,6 @@ describe("calculateMatrixAggregates", () => { }); }); -describe("formatNumber", () => { - test("formats numbers correctly", () => { - expect(formatNumber(1234567.89)).toBe("1 234 567.89"); - expect(formatNumber(1000000)).toBe("1 000 000"); - expect(formatNumber(1234.5678)).toBe("1 234.5678"); - expect(formatNumber(undefined)).toBe(""); - }); - - test("handles edge cases", () => { - expect(formatNumber(0)).toBe("0"); - expect(formatNumber(-1234567.89)).toBe("-1 234 567.89"); - expect(formatNumber(0.00001)).toBe("0.00001"); - expect(formatNumber(1e20)).toBe("100 000 000 000 000 000 000"); - }); -}); - describe("generateCustomColumns", () => { it("should generate custom columns with correct properties", () => { const titles = ["Custom 1", "Custom 2", "Custom 3"]; @@ -457,31 +441,53 @@ describe("calculateMatrixAggregates", () => { }); describe("formatNumber", () => { - it("should format integer numbers correctly", () => { - expect(formatNumber(1234567)).toBe("1 234 567"); - expect(formatNumber(1000000)).toBe("1 000 000"); - expect(formatNumber(1)).toBe("1"); + test("should format integer numbers correctly", () => { + expect(formatNumber({ value: 1234567 })).toBe("1 234 567"); + expect(formatNumber({ value: 1000000 })).toBe("1 000 000"); + expect(formatNumber({ value: 1 })).toBe("1"); }); - it("should format decimal numbers correctly", () => { - expect(formatNumber(1234.56)).toBe("1 234.56"); - expect(formatNumber(1000000.123)).toBe("1 000 000.123"); + test("should format decimal numbers correctly", () => { + expect(formatNumber({ value: 1234.56, maxDecimals: 2 })).toBe("1 234.56"); + expect(formatNumber({ value: 1000000.123, maxDecimals: 3 })).toBe( + "1 000 000.123", + ); }); - it("should handle negative numbers", () => { - expect(formatNumber(-1234567)).toBe("-1 234 567"); - expect(formatNumber(-1234.56)).toBe("-1 234.56"); + test("should format load factors correctly with 6 decimal places", () => { + expect(formatNumber({ value: 0.123456, maxDecimals: 6 })).toBe("0.123456"); + expect(formatNumber({ value: 0.999999, maxDecimals: 6 })).toBe("0.999999"); + expect(formatNumber({ value: 0.000001, maxDecimals: 6 })).toBe("0.000001"); }); - it("should handle zero", () => { - expect(formatNumber(0)).toBe("0"); + test("should format statistics correctly with 3 decimal places", () => { + expect(formatNumber({ value: 1.23456, maxDecimals: 3 })).toBe("1.235"); // rounding + expect(formatNumber({ value: 0.001234, maxDecimals: 3 })).toBe("0.001"); + expect(formatNumber({ value: 0.1234567, maxDecimals: 3 })).toBe("0.123"); // truncation }); - it("should handle undefined", () => { - expect(formatNumber(undefined)).toBe(""); + test("should handle negative numbers", () => { + expect(formatNumber({ value: -1234567 })).toBe("-1 234 567"); + expect(formatNumber({ value: -1234.56, maxDecimals: 2 })).toBe("-1 234.56"); }); - it("should handle large numbers", () => { - expect(formatNumber(1e15)).toBe("1 000 000 000 000 000"); + test("should handle zero", () => { + expect(formatNumber({ value: 0 })).toBe("0"); + }); + + test("should handle undefined", () => { + expect(formatNumber({ value: undefined, maxDecimals: 3 })).toBe(""); + }); + + test("should handle large numbers", () => { + expect(formatNumber({ value: 1e15 })).toBe("1 000 000 000 000 000"); + }); + + test("should handle edge cases", () => { + expect(formatNumber({ value: 0, maxDecimals: 2 })).toBe("0"); + expect(formatNumber({ value: -0.123456, maxDecimals: 6 })).toBe( + "-0.123456", + ); + expect(formatNumber({ value: 1e20 })).toBe("100 000 000 000 000 000 000"); }); }); diff --git a/webapp/src/components/common/MatrixGrid/utils.ts b/webapp/src/components/common/MatrixGrid/utils.ts index 37254f0211..9b45a91745 100644 --- a/webapp/src/components/common/MatrixGrid/utils.ts +++ b/webapp/src/components/common/MatrixGrid/utils.ts @@ -26,6 +26,7 @@ import { DateTimeMetadataDTO, Aggregate, Column, + FormatNumberOptions, } from "./types"; import { type FirstWeekContainsDate, @@ -106,17 +107,38 @@ export const aggregatesTheme: Partial = { //////////////////////////////////////////////////////////////// /** - * Formats a number by adding spaces as thousand separators. + * Formats a number by adding thousand separators. * - * @param num - The number to format. + * This function is particularly useful for displaying load factors, + * which are numbers between 0 and 1. For load factors, a maximum of + * 6 decimal places should be displayed. For statistics, a maximum of + * 3 decimal places is recommended. + * + * @param options - The options for formatting the number. + * @param options.value - The number to format. + * @param options.maxDecimals - The maximum number of decimal places to keep. * @returns The formatted number as a string. */ -export function formatNumber(num: number | undefined): string { - if (num === undefined) { +export function formatNumber({ + value, + maxDecimals = 0, +}: FormatNumberOptions): string { + if (value === undefined) { return ""; } - const [integerPart, decimalPart] = num.toString().split("."); + // Determine if we need to apply maxDecimals + const shouldFormatDecimals = + value % 1 !== 0 && + maxDecimals > 0 && + value.toString().split(".")[1].length > maxDecimals; + + // Use toFixed only if we need to control decimals + const formattedValue = shouldFormatDecimals + ? value.toFixed(maxDecimals) + : value.toString(); + + const [integerPart, decimalPart] = formattedValue.split("."); const formattedInteger = integerPart .split("") @@ -128,7 +150,6 @@ export function formatNumber(num: number | undefined): string { return digit + acc; }, ""); - // Return formatted number, preserving decimal part if it exists return decimalPart ? `${formattedInteger}.${decimalPart}` : formattedInteger; } From 7889c669a856448bf72d4b2a985857efe6d138c8 Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Thu, 24 Oct 2024 11:16:17 +0200 Subject: [PATCH 115/182] fix(ui): disable percent display on allocation and correlation matrices --- .../App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts index c6438d1125..b7d00a68de 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts @@ -205,7 +205,6 @@ export const MATRICES: Matrices = { fetchFn: getAllocationMatrix, enableDateTimeColumn: false, readOnly: true, - showPercent: true, }, [HydroMatrix.Correlation]: { title: "Correlation", @@ -213,7 +212,6 @@ export const MATRICES: Matrices = { fetchFn: getCorrelationMatrix, enableDateTimeColumn: false, readOnly: true, - showPercent: true, }, }; From d0e4200d8186c71116e7740ee35b7543d6d24081 Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Thu, 24 Oct 2024 16:54:57 +0200 Subject: [PATCH 116/182] test(ui): improve `Matrix` test suite organization and maintainability test(ui): improve MatrixActions test suite organization test(ui): improve and fix type issues in useColumnMapping tests test(ui): improve useGridCellContent test organization test(ui): fix async handling in useMatrix tests test(ui): improve utils test suite organisation and typing --- .../common/MatrixGrid/MatrixActions.test.tsx | 190 ++--- .../common/MatrixGrid/index.test.tsx | 469 ++++-------- .../src/components/common/MatrixGrid/types.ts | 9 + .../MatrixGrid/useColumnMapping.test.ts | 228 +++--- .../MatrixGrid/useGridCellContent.test.ts | 691 ++++++------------ .../common/MatrixGrid/useMatrix.test.tsx | 337 ++++----- .../common/MatrixGrid/utils.test.ts | 677 +++++++---------- 7 files changed, 977 insertions(+), 1624 deletions(-) diff --git a/webapp/src/components/common/MatrixGrid/MatrixActions.test.tsx b/webapp/src/components/common/MatrixGrid/MatrixActions.test.tsx index f7b3802fef..487959168d 100644 --- a/webapp/src/components/common/MatrixGrid/MatrixActions.test.tsx +++ b/webapp/src/components/common/MatrixGrid/MatrixActions.test.tsx @@ -13,8 +13,8 @@ */ import React from "react"; -import { render, screen, fireEvent } from "@testing-library/react"; -import { describe, it, expect, vi, beforeEach } from "vitest"; +import { render, screen } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; import MatrixActions from "./MatrixActions"; vi.mock("../buttons/SplitButton", () => ({ @@ -54,111 +54,127 @@ describe("MatrixActions", () => { canRedo: true, }; + type RenderOptions = Partial; + + const renderMatrixActions = (props: RenderOptions = {}) => { + return render(); + }; + + const getButton = (label: string) => { + const element = screen.getByText(label); + const button = element.closest("button"); + + if (!button) { + throw new Error(`Button with label "${label}" not found`); + } + + return button; + }; + + const getActionButton = (label: string) => { + const element = screen.getByLabelText(label); + const button = element.querySelector("button"); + + if (!button) { + throw new Error(`Action button "${label}" not found`); + } + + return button; + }; + beforeEach(() => { vi.clearAllMocks(); }); - it("renders all buttons and controls", () => { - render(); + describe("rendering", () => { + test("renders all buttons and controls", () => { + renderMatrixActions(); - expect(screen.getByLabelText("global.undo")).toBeDefined(); - expect(screen.getByLabelText("global.redo")).toBeDefined(); - expect(screen.getByText("(0)")).toBeDefined(); - expect(screen.getByText("global.import")).toBeDefined(); - expect(screen.getByText("global.export")).toBeDefined(); + expect(screen.getByLabelText("global.undo")).toBeInTheDocument(); + expect(screen.getByLabelText("global.redo")).toBeInTheDocument(); + expect(screen.getByText("(0)")).toBeInTheDocument(); + expect(screen.getByText("global.import")).toBeInTheDocument(); + expect(screen.getByText("global.export")).toBeInTheDocument(); + }); }); - it("disables undo button when canUndo is false", () => { - render(); - expect( - screen.getByLabelText("global.undo").querySelector("button"), - ).toBeDisabled(); - }); + describe("undo/redo functionality", () => { + test("manages undo button state correctly", () => { + const { rerender } = renderMatrixActions(); + expect(getActionButton("global.undo")).not.toBeDisabled(); - it("disables redo button when canRedo is false", () => { - render(); - expect( - screen.getByLabelText("global.redo").querySelector("button"), - ).toBeDisabled(); - }); + rerender(); + expect(getActionButton("global.undo")).toBeDisabled(); + }); - it("calls undo function when undo button is clicked", () => { - render(); - const undoButton = screen - .getByLabelText("global.undo") - .querySelector("button"); - if (undoButton) { - fireEvent.click(undoButton); - expect(defaultProps.undo).toHaveBeenCalled(); - } else { - throw new Error("Undo button not found"); - } - }); + test("manages redo button state correctly", () => { + const { rerender } = renderMatrixActions(); + expect(getActionButton("global.redo")).not.toBeDisabled(); - it("calls redo function when redo button is clicked", () => { - render(); - const redoButton = screen - .getByLabelText("global.redo") - .querySelector("button"); - if (redoButton) { - fireEvent.click(redoButton); - expect(defaultProps.redo).toHaveBeenCalled(); - } else { - throw new Error("Redo button not found"); - } - }); + rerender(); + expect(getActionButton("global.redo")).toBeDisabled(); + }); - it("disables save button when pendingUpdatesCount is 0", () => { - render(); - expect(screen.getByText("(0)").closest("button")).toBeDisabled(); - }); + test("handles undo/redo button clicks", async () => { + const user = userEvent.setup(); + renderMatrixActions(); - it("enables save button when pendingUpdatesCount is greater than 0", () => { - render(); - expect(screen.getByText("(1)").closest("button")).not.toBeDisabled(); - }); + await user.click(getActionButton("global.undo")); + expect(defaultProps.undo).toHaveBeenCalledTimes(1); - it("calls onSave function when save button is clicked", () => { - render(); - const saveButton = screen.getByText("(1)").closest("button"); - if (saveButton) { - fireEvent.click(saveButton); - expect(defaultProps.onSave).toHaveBeenCalled(); - } else { - throw new Error("Save button not found"); - } + await user.click(getActionButton("global.redo")); + expect(defaultProps.redo).toHaveBeenCalledTimes(1); + }); }); - it("shows loading state on save button when isSubmitting is true", () => { - render( - , - ); - expect(screen.getByText("(1)").closest("button")).toBeDisabled(); + describe("save functionality", () => { + test("manages save button state based on pending updates", () => { + const { rerender } = renderMatrixActions(); + expect(getButton("(0)")).toBeDisabled(); + + rerender(); + expect(getButton("(1)")).not.toBeDisabled(); + }); + + test("handles save button click", async () => { + const user = userEvent.setup(); + renderMatrixActions({ pendingUpdatesCount: 1 }); + + await user.click(getButton("(1)")); + expect(defaultProps.onSave).toHaveBeenCalledTimes(1); + }); + + test("disables save button during submission", () => { + renderMatrixActions({ + isSubmitting: true, + pendingUpdatesCount: 1, + }); + expect(getButton("(1)")).toBeDisabled(); + }); }); - it("calls onImport function when import button is clicked", () => { - render(); - fireEvent.click(screen.getByText("global.import")); - expect(defaultProps.onImport).toHaveBeenCalled(); - }); + describe("import/export functionality", () => { + test("handles import button click", async () => { + const user = userEvent.setup(); + renderMatrixActions(); - it("disables import button when isSubmitting is true", () => { - render(); - expect(screen.getByText("global.import")).toBeDisabled(); - }); + await user.click(getButton("global.import")); + expect(defaultProps.onImport).toHaveBeenCalledTimes(1); + }); + + test("manages button states during submission", () => { + renderMatrixActions({ isSubmitting: true }); - it("passes correct props to DownloadMatrixButton", () => { - const { rerender } = render(); - expect(screen.getByText("global.export")).not.toBeDisabled(); + expect(getButton("global.import")).toBeDisabled(); + expect(getButton("global.export")).toBeDisabled(); + }); - rerender(); - expect(screen.getByText("global.export")).toBeDisabled(); + test("manages export button state based on disabled prop", () => { + const { rerender } = renderMatrixActions(); + expect(getButton("global.export")).not.toBeDisabled(); - rerender(); - expect(screen.getByText("global.export")).toBeDisabled(); + rerender(); + expect(getButton("global.export")).toBeDisabled(); + }); }); }); diff --git a/webapp/src/components/common/MatrixGrid/index.test.tsx b/webapp/src/components/common/MatrixGrid/index.test.tsx index 467f2c913c..81cf7f8ebd 100644 --- a/webapp/src/components/common/MatrixGrid/index.test.tsx +++ b/webapp/src/components/common/MatrixGrid/index.test.tsx @@ -13,27 +13,56 @@ */ import { render } from "@testing-library/react"; -import MatrixGrid, { MatrixGridProps } from "."; +import userEvent from "@testing-library/user-event"; import Box from "@mui/material/Box"; +import MatrixGrid from "."; +import SplitView from "../SplitView"; +import { type EnhancedGridColumn, Column, RenderMatrixOptions } from "./types"; import { mockGetBoundingClientRect } from "../../../tests/mocks/mockGetBoundingClientRect"; -import { type EnhancedGridColumn, Column } from "./types"; import { mockHTMLCanvasElement } from "../../../tests/mocks/mockHTMLCanvasElement"; -import SplitView from "../SplitView"; -import userEvent from "@testing-library/user-event"; -beforeEach(() => { +const setupMocks = () => { mockHTMLCanvasElement(); mockGetBoundingClientRect(); vi.clearAllMocks(); -}); - -function renderMatrixGrid( - width: string, - height: string, - data: MatrixGridProps["data"], - columns: EnhancedGridColumn[], - rows: number, -) { +}; + +const COLUMNS: EnhancedGridColumn[] = [ + { + id: "col1", + title: "Column 1", + width: 100, + type: Column.Number, + editable: true, + }, + { + id: "col2", + title: "Column 2", + width: 100, + type: Column.Number, + editable: true, + }, + { + id: "col3", + title: "Column 3", + width: 100, + type: Column.Number, + editable: true, + }, +]; + +const DATA = [ + [1, 2, 3], + [4, 5, 6], +]; + +const renderMatrixGrid = ({ + width = "450px", + height = "500px", + data = DATA, + columns = COLUMNS, + rows = 2, +}: RenderMatrixOptions = {}) => { return render( , ); -} +}; -function assertDimensions( +const assertDimensions = ( element: HTMLElement, expectedWidth: number, expectedHeight: number, -) { +) => { const rect = element.getBoundingClientRect(); expect(rect.width).toBe(expectedWidth); expect(rect.height).toBe(expectedHeight); -} - -describe("MatrixGrid rendering", () => { - test("MatrixGrid should be rendered within a 450x500px container and match these dimensions", () => { - const data = [ - [1, 2, 3], - [4, 5, 6], - ]; - - const columns = [ - { - id: "col1", - title: "Column 1", - width: 100, - type: Column.Number, - editable: true, - }, - { - id: "col2", - title: "Column 2", - width: 100, - type: Column.Number, - editable: true, - }, - { - id: "col3", - title: "Column 3", - width: 100, - type: Column.Number, - editable: true, - }, - ]; - - const rows = 2; - - // Render the MatrixGrid inside a parent container with specific dimensions - const { container } = renderMatrixGrid( - "450px", // Use inline style for exact measurement - "500px", - data, - columns, - rows, - ); - - const matrix = container.firstChild; - - if (matrix instanceof HTMLElement) { +}; + +const getMatrixElement = (container: HTMLElement) => { + const matrix = container.firstChild; + + if (!(matrix instanceof HTMLElement)) { + throw new Error("Expected an HTMLElement but received a different node."); + } + + return matrix; +}; + +describe("MatrixGrid", () => { + beforeEach(setupMocks); + + describe("rendering", () => { + test("should match container dimensions", () => { + const { container } = renderMatrixGrid(); + const matrix = getMatrixElement(container); + expect(matrix).toBeInTheDocument(); assertDimensions(matrix, 450, 500); - } else { - throw new Error("Expected an HTMLElement but received a different node."); - } - }); + }); + + test("should render with empty data", () => { + const { container } = renderMatrixGrid({ data: [], rows: 0 }); + const matrix = getMatrixElement(container); - test("MatrixGrid should render correctly with no data", () => { - const data: MatrixGridProps["data"] = []; - - const columns = [ - { - id: "col1", - title: "Column 1", - width: 100, - type: Column.Number, - editable: true, - }, - { - id: "col2", - title: "Column 2", - width: 100, - type: Column.Number, - editable: true, - }, - { - id: "col3", - title: "Column 3", - width: 100, - type: Column.Number, - editable: true, - }, - ]; - - const rows = 0; - - const { container } = renderMatrixGrid( - "450px", - "500px", - data, - columns, - rows, - ); - - const matrix = container.firstChild; - - if (matrix instanceof HTMLElement) { expect(matrix).toBeInTheDocument(); assertDimensions(matrix, 450, 500); - } else { - throw new Error("Expected an HTMLElement but received a different node."); - } - }); + }); - test("MatrixGrid should match the provided dimensions when resized", () => { - const data = [ - [1, 2, 3], - [4, 5, 6], - ]; - - const columns = [ - { - id: "col1", - title: "Column 1", - width: 100, - type: Column.Number, - editable: true, - }, - { - id: "col2", - title: "Column 2", - width: 100, - type: Column.Number, - editable: true, - }, - { - id: "col3", - title: "Column 3", - width: 100, - type: Column.Number, - editable: true, - }, - ]; - - const rows = 2; - - const { container, rerender } = renderMatrixGrid( - "450px", - "500px", - data, - columns, - rows, - ); - - let matrix = container.firstChild; - - if (matrix instanceof HTMLElement) { + test("should update dimensions when resized", () => { + const { container, rerender } = renderMatrixGrid(); + let matrix = getMatrixElement(container); assertDimensions(matrix, 450, 500); - } else { - throw new Error("Expected an HTMLElement but received a different node."); - } - - rerender( - - - , - ); - - matrix = container.firstChild; - - if (matrix instanceof HTMLElement) { + + rerender( + + + , + ); + + matrix = getMatrixElement(container); assertDimensions(matrix, 300, 400); - } else { - throw new Error("Expected an HTMLElement but received a different node."); - } + }); }); - describe("MatrixGrid portal management", () => { - const sampleData = [ - [1, 2], - [4, 5], - ]; - - const sampleColumns: EnhancedGridColumn[] = [ - { - id: "col1", - title: "Column 1", - width: 100, - type: Column.Number, - editable: true, - }, - { - id: "col2", - title: "Column 2", - width: 100, - type: Column.Number, - editable: true, - }, - ]; - - test("should create portal when MatrixGrid mounts", () => { - render( - , + describe("portal management", () => { + const renderSplitView = () => { + return render( + + + {[0, 1].map((index) => ( + + + + ))} + + , ); + }; + + const getPortal = () => document.getElementById("portal"); - const portal = document.getElementById("portal"); - expect(portal).toBeInTheDocument(); - expect(portal?.style.display).toBe("none"); + test("should manage portal visibility on mount", () => { + renderMatrixGrid(); + expect(getPortal()).toBeInTheDocument(); + expect(getPortal()?.style.display).toBe("none"); }); - test("should show/hide portal on mouse enter/leave", async () => { + test("should toggle portal visibility on mouse events", async () => { const user = userEvent.setup(); - const { container } = render( - , - ); - + const { container } = renderMatrixGrid(); const matrix = container.querySelector(".matrix-container"); expect(matrix).toBeInTheDocument(); - // Mouse enter await user.hover(matrix!); - const portalAfterEnter = document.getElementById("portal"); - expect(portalAfterEnter?.style.display).toBe("block"); + expect(getPortal()?.style.display).toBe("block"); - // Mouse leave await user.unhover(matrix!); - const portalAfterLeave = document.getElementById("portal"); - expect(portalAfterLeave?.style.display).toBe("none"); + expect(getPortal()?.style.display).toBe("none"); }); - test("should handle portal in split view with multiple matrices", async () => { + test("should handle portal in split view", async () => { const user = userEvent.setup(); - - render( - - - - - - - - - - , - ); - + renderSplitView(); const matrices = document.querySelectorAll(".matrix-container"); - expect(matrices.length).toBe(2); - // Test first matrix + // Test portal behavior with multiple matrices await user.hover(matrices[0]); - expect(document.getElementById("portal")?.style.display).toBe("block"); + expect(getPortal()?.style.display).toBe("block"); - // Test second matrix while first is still hovered await user.hover(matrices[1]); - expect(document.getElementById("portal")?.style.display).toBe("block"); + expect(getPortal()?.style.display).toBe("block"); - // Leave second matrix await user.unhover(matrices[1]); - const portalAfterSecondLeave = document.getElementById("portal"); - expect(portalAfterSecondLeave?.style.display).toBe("none"); + expect(getPortal()?.style.display).toBe("none"); }); - test("should maintain portal when switching between matrices", async () => { + test("should maintain portal state when switching between matrices", async () => { const user = userEvent.setup(); - - render( - - - - - - - - - - , - ); - + renderSplitView(); const matrices = document.querySelectorAll(".matrix-container"); - // Rapid switching between matrices - await user.hover(matrices[0]); - expect(document.getElementById("portal")?.style.display).toBe("block"); - - await user.hover(matrices[1]); - expect(document.getElementById("portal")?.style.display).toBe("block"); - - await user.hover(matrices[0]); - expect(document.getElementById("portal")?.style.display).toBe("block"); + for (const matrix of [matrices[0], matrices[1], matrices[0]]) { + await user.hover(matrix); + expect(getPortal()?.style.display).toBe("block"); + } - // Final cleanup await user.unhover(matrices[0]); - expect(document.getElementById("portal")?.style.display).toBe("none"); + expect(getPortal()?.style.display).toBe("none"); }); - test("should handle unmounting matrices in split view", () => { - const { unmount } = render( - - - - - - - - - - , - ); - - const portal = document.getElementById("portal"); - expect(portal).toBeInTheDocument(); + test("should handle unmounting correctly", () => { + const { unmount } = renderSplitView(); + expect(getPortal()).toBeInTheDocument(); unmount(); - expect(document.getElementById("portal")).toBeInTheDocument(); - expect(document.getElementById("portal")?.style.display).toBe("none"); + expect(getPortal()).toBeInTheDocument(); + expect(getPortal()?.style.display).toBe("none"); }); }); }); diff --git a/webapp/src/components/common/MatrixGrid/types.ts b/webapp/src/components/common/MatrixGrid/types.ts index cda4e32a13..4e6d60d6e8 100644 --- a/webapp/src/components/common/MatrixGrid/types.ts +++ b/webapp/src/components/common/MatrixGrid/types.ts @@ -17,6 +17,7 @@ import { EditableGridCell, Item, } from "@glideapps/glide-data-grid"; +import { MatrixGridProps } from "."; //////////////////////////////////////////////////////////////// // Enums @@ -137,3 +138,11 @@ export interface MatrixUpdateDTO { coordinates: number[][]; // Array of [col, row] pairs operation: MatrixUpdate; } + +export interface RenderMatrixOptions { + width?: string; + height?: string; + data?: MatrixGridProps["data"]; + columns?: EnhancedGridColumn[]; + rows?: number; +} diff --git a/webapp/src/components/common/MatrixGrid/useColumnMapping.test.ts b/webapp/src/components/common/MatrixGrid/useColumnMapping.test.ts index 2dc3ebd7f2..45a8913826 100644 --- a/webapp/src/components/common/MatrixGrid/useColumnMapping.test.ts +++ b/webapp/src/components/common/MatrixGrid/useColumnMapping.test.ts @@ -13,132 +13,138 @@ */ import { renderHook } from "@testing-library/react"; -import { describe, test, expect } from "vitest"; import { useColumnMapping } from "./useColumnMapping"; import { EnhancedGridColumn, Column } from "./types"; +import type { ColumnType } from "./types"; +import { Item } from "@glideapps/glide-data-grid"; describe("useColumnMapping", () => { - const testColumns: EnhancedGridColumn[] = [ - { - id: "text", - title: "Text", - type: Column.Text, - width: 100, - editable: false, - }, - { - id: "date", - title: "Date", - type: Column.DateTime, - width: 100, - editable: false, - }, - { - id: "num1", - title: "Number 1", - type: Column.Number, - width: 100, - editable: true, - }, - { - id: "num2", - title: "Number 2", - type: Column.Number, - width: 100, - editable: true, - }, - { - id: "agg", - title: "Aggregate", - type: Column.Aggregate, - width: 100, - editable: false, - }, - ]; - - test("should create gridToData and dataToGrid functions", () => { - const { result } = renderHook(() => useColumnMapping(testColumns)); - expect(result.current.gridToData).toBeDefined(); - expect(result.current.dataToGrid).toBeDefined(); + // Test data factories + const createColumn = ( + id: string, + type: ColumnType, + editable = false, + ): EnhancedGridColumn => ({ + id, + title: id.charAt(0).toUpperCase() + id.slice(1), + type, + width: 100, + editable, }); - describe("gridToData", () => { - test("should return null for non-data columns", () => { - const { result } = renderHook(() => useColumnMapping(testColumns)); - expect(result.current.gridToData([0, 0])).toBeNull(); // Text column - expect(result.current.gridToData([1, 0])).toBeNull(); // DateTime column - expect(result.current.gridToData([4, 0])).toBeNull(); // Aggregate column + const createNumericColumn = (id: string) => + createColumn(id, Column.Number, true); + + const COLUMNS = { + mixed: [ + createColumn("text", Column.Text), + createColumn("date", Column.DateTime), + createNumericColumn("num1"), + createNumericColumn("num2"), + createColumn("agg", Column.Aggregate), + ], + nonData: [ + createColumn("text", Column.Text), + createColumn("date", Column.DateTime), + ], + dataOnly: [createNumericColumn("num1"), createNumericColumn("num2")], + }; + + // Helper function to create properly typed coordinates + const createCoordinate = (col: number, row: number): Item => + [col, row] as Item; + + // Helper function to render the hook + const renderColumnMapping = (columns: EnhancedGridColumn[]) => + renderHook(() => useColumnMapping(columns)); + + describe("hook initialization", () => { + test("should create mapping functions", () => { + const { result } = renderColumnMapping(COLUMNS.mixed); + + expect(result.current.gridToData).toBeInstanceOf(Function); + expect(result.current.dataToGrid).toBeInstanceOf(Function); }); - test("should map grid coordinates to data coordinates for data columns", () => { - const { result } = renderHook(() => useColumnMapping(testColumns)); - expect(result.current.gridToData([2, 0])).toEqual([0, 0]); // First Number column - expect(result.current.gridToData([3, 1])).toEqual([1, 1]); // Second Number column + test("should memoize the result", () => { + const { result, rerender } = renderHook( + (props) => useColumnMapping(props.columns), + { initialProps: { columns: COLUMNS.mixed } }, + ); + + const initialResult = result.current; + rerender({ columns: COLUMNS.mixed }); + expect(result.current).toBe(initialResult); }); }); - describe("dataToGrid", () => { - test("should map data coordinates to grid coordinates", () => { - const { result } = renderHook(() => useColumnMapping(testColumns)); - expect(result.current.dataToGrid([0, 0])).toEqual([2, 0]); // First data column - expect(result.current.dataToGrid([1, 1])).toEqual([3, 1]); // Second data column + describe("gridToData mapping", () => { + describe("with mixed columns", () => { + test("should return null for non-data columns", () => { + const { result } = renderColumnMapping(COLUMNS.mixed); + + const nonDataCoordinates: Item[] = [ + createCoordinate(0, 0), // Text column + createCoordinate(1, 0), // DateTime column + createCoordinate(4, 0), // Aggregate column + ]; + + nonDataCoordinates.forEach((coord) => { + expect(result.current.gridToData(coord)).toBeNull(); + }); + }); + + test("should map data columns correctly", () => { + const { result } = renderColumnMapping(COLUMNS.mixed); + + const mappings = [ + { grid: createCoordinate(2, 0), expected: createCoordinate(0, 0) }, // First Number column + { grid: createCoordinate(3, 1), expected: createCoordinate(1, 1) }, // Second Number column + ]; + + mappings.forEach(({ grid, expected }) => { + expect(result.current.gridToData(grid)).toEqual(expected); + }); + }); }); - }); - test("should handle columns with only non-data types", () => { - const nonDataColumns: EnhancedGridColumn[] = [ - { - id: "text", - title: "Text", - type: Column.Text, - width: 100, - editable: false, - }, - { - id: "date", - title: "Date", - type: Column.DateTime, - width: 100, - editable: false, - }, - ]; - const { result } = renderHook(() => useColumnMapping(nonDataColumns)); - expect(result.current.gridToData([0, 0])).toBeNull(); - expect(result.current.gridToData([1, 0])).toBeNull(); - expect(result.current.dataToGrid([0, 0])).toEqual([undefined, 0]); // No data columns, so this should return an invalid grid coordinate - }); + describe("with specific column configurations", () => { + test("should handle non-data columns only", () => { + const { result } = renderColumnMapping(COLUMNS.nonData); + const coord = createCoordinate(0, 0); + + expect(result.current.gridToData(coord)).toBeNull(); + expect(result.current.gridToData(createCoordinate(1, 0))).toBeNull(); + expect(result.current.dataToGrid(coord)).toEqual([undefined, 0]); + }); + + test("should handle data columns only", () => { + const { result } = renderColumnMapping(COLUMNS.dataOnly); - test("should handle columns with only data types", () => { - const dataOnlyColumns: EnhancedGridColumn[] = [ - { - id: "num1", - title: "Number 1", - type: Column.Number, - width: 100, - editable: true, - }, - { - id: "num2", - title: "Number 2", - type: Column.Number, - width: 100, - editable: true, - }, - ]; - const { result } = renderHook(() => useColumnMapping(dataOnlyColumns)); - expect(result.current.gridToData([0, 0])).toEqual([0, 0]); - expect(result.current.gridToData([1, 1])).toEqual([1, 1]); - expect(result.current.dataToGrid([0, 0])).toEqual([0, 0]); - expect(result.current.dataToGrid([1, 1])).toEqual([1, 1]); + const mappings = [ + { grid: createCoordinate(0, 0), data: createCoordinate(0, 0) }, + { grid: createCoordinate(1, 1), data: createCoordinate(1, 1) }, + ]; + + mappings.forEach(({ grid, data }) => { + expect(result.current.gridToData(grid)).toEqual(data); + expect(result.current.dataToGrid(data)).toEqual(grid); + }); + }); + }); }); - test("should memoize the result", () => { - const { result, rerender } = renderHook( - (props) => useColumnMapping(props.columns), - { initialProps: { columns: testColumns } }, - ); - const initialResult = result.current; - rerender({ columns: testColumns }); - expect(result.current).toBe(initialResult); + describe("dataToGrid mapping", () => { + test("should map data coordinates to grid coordinates", () => { + const { result } = renderColumnMapping(COLUMNS.mixed); + const mappings = [ + { data: createCoordinate(0, 0), expected: createCoordinate(2, 0) }, // First data column + { data: createCoordinate(1, 1), expected: createCoordinate(3, 1) }, // Second data column + ]; + + mappings.forEach(({ data, expected }) => { + expect(result.current.dataToGrid(data)).toEqual(expected); + }); + }); }); }); diff --git a/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts b/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts index ad28cfed59..0a1c75d87c 100644 --- a/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts +++ b/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts @@ -14,533 +14,254 @@ import { renderHook } from "@testing-library/react"; import { useGridCellContent } from "./useGridCellContent"; -import { Column, MatrixAggregates, type EnhancedGridColumn } from "./types"; +import { + Column, + type ColumnType, + type MatrixAggregates, + type EnhancedGridColumn, +} from "./types"; import { useColumnMapping } from "./useColumnMapping"; - -function renderGridCellContent( - data: number[][], - columns: EnhancedGridColumn[], - dateTime?: string[], - aggregates?: MatrixAggregates, - rowHeaders?: string[], -) { - const { result: mappingResult } = renderHook(() => useColumnMapping(columns)); - const { gridToData } = mappingResult.current; - - const { result } = renderHook(() => - useGridCellContent( - data, - columns, - gridToData, - dateTime, - aggregates, - rowHeaders, - ), - ); - - return result.current; -} +import { type Item } from "@glideapps/glide-data-grid"; describe("useGridCellContent", () => { - describe("returns correct cell content for Aggregate columns", () => { - const columns: EnhancedGridColumn[] = [ - { - id: "total", - title: "Total", - type: Column.Aggregate, - width: 100, - editable: false, - }, - ]; - - const data = [ - [10, 20, 30], - [15, 25, 35], - [5, 15, 25], - ]; - - const aggregates = { - min: [5, 15, 25], - max: [15, 25, 35], - avg: [10, 20, 30], - total: [30, 60, 90], - }; - - // Test each row for correct numeric cell content - test.each([ - [0, 30], // Total of first row - [1, 60], // Total of second row - [2, 90], // Total of third row - ])( - "ensures the correct numeric cell content is returned for aggregates at row %i", - (row, expectedData) => { - const getCellContent = renderGridCellContent( - data, - columns, - undefined, - aggregates, - ); - - const cell = getCellContent([0, row]); // Accessing the only column - - if ("data" in cell) { - expect(cell.kind).toBe("number"); - expect(cell.data).toBe(expectedData); - } else { - throw new Error(`Expected a number cell with data at row [${row}]`); - } - }, - ); + // Test data factories + const createColumn = ( + id: string, + type: ColumnType, + editable = false, + ): EnhancedGridColumn => ({ + id, + title: id.charAt(0).toUpperCase() + id.slice(1), + type, + width: type === Column.DateTime ? 150 : 50, + editable, }); - test("returns correct content for DateTime, Number, and Aggregate columns", () => { - const columns = [ - { - id: "date", - title: "Date", - type: Column.DateTime, - width: 150, - editable: false, - }, - { - id: "ts1", - title: "TS 1", - type: Column.Number, - width: 50, - editable: true, - }, - { - id: "ts2", - title: "TS 2", - type: Column.Number, - width: 50, - editable: true, - }, - { - id: "total", - title: "Total", - type: Column.Aggregate, - width: 100, - editable: false, - }, - ]; - - const dateTime = ["2021-01-01T00:00:00Z", "2021-01-02T00:00:00Z"]; - - const data = [ - [100, 200], - [150, 250], - ]; - - const aggregates = { - min: [100, 200], - max: [150, 250], - avg: [125, 225], - total: [250, 450], - }; + const createCoordinate = (col: number, row: number): Item => + [col, row] as Item; + + interface RenderOptions { + data: number[][]; + columns: EnhancedGridColumn[]; + dateTime?: string[]; + aggregates?: MatrixAggregates; + rowHeaders?: string[]; + } + + const renderGridCellContent = ({ + data, + columns, + dateTime, + aggregates, + rowHeaders, + }: RenderOptions) => { + const { result: mappingResult } = renderHook(() => + useColumnMapping(columns), + ); - const getCellContent = renderGridCellContent( - data, - columns, - dateTime, - aggregates, + const { gridToData } = mappingResult.current; + + const { result } = renderHook(() => + useGridCellContent( + data, + columns, + gridToData, + dateTime, + aggregates, + rowHeaders, + ), ); - const numberCell = getCellContent([1, 0]); + return result.current; + }; - if (numberCell.kind === "number" && "data" in numberCell) { - expect(numberCell.data).toBe(100); + const assertNumberCell = ( + cell: ReturnType>, + expectedValue: number | undefined, + message: string, + ) => { + if (cell.kind === "number" && "data" in cell) { + expect(cell.data).toBe(expectedValue); } else { - throw new Error("Expected a Number cell with data"); + throw new Error(message); } - - const aggregateCell = getCellContent([3, 0]); - - if (aggregateCell.kind === "number" && "data" in aggregateCell) { - expect(aggregateCell.data).toBe(250); + }; + + const assertTextCell = ( + cell: ReturnType>, + expectedValue: string, + message: string, + ) => { + if (cell.kind === "text" && "displayData" in cell) { + expect(cell.displayData).toBe(expectedValue); } else { - throw new Error("Expected an Aggregate cell with data"); + throw new Error(message); } - }); -}); - -describe("useGridCellContent with mixed column types", () => { - test("handles non-data columns correctly and accesses data columns properly", () => { - const columns: EnhancedGridColumn[] = [ - { - id: "rowHeader", - title: "Row", - type: Column.Text, - width: 100, - editable: false, - }, - { - id: "date", - title: "Date", - type: Column.DateTime, - width: 150, - editable: false, - }, - { - id: "data1", - title: "TS 1", - type: Column.Number, - width: 50, - editable: true, + }; + + describe("Aggregate columns", () => { + const DATA = { + columns: [createColumn("total", Column.Aggregate)], + data: [ + [10, 20, 30], + [15, 25, 35], + [5, 15, 25], + ], + aggregates: { + min: [5, 15, 25], + max: [15, 25, 35], + avg: [10, 20, 30], + total: [30, 60, 90], }, - { - id: "data2", - title: "TS 2", - type: Column.Number, - width: 50, - editable: true, - }, - { - id: "total", - title: "Total", - type: Column.Aggregate, - width: 100, - editable: false, - }, - ]; - - const rowHeaders = ["Row 1", "Row 2"]; - const dateTime = ["2024-01-01T00:00:00Z", "2024-01-02T00:00:00Z"]; - const data = [ - [100, 200], - [150, 250], - ]; - const aggregates = { - min: [100, 200], - max: [150, 250], - avg: [125, 225], - total: [250, 450], }; - const getCellContent = renderGridCellContent( - data, - columns, - dateTime, - aggregates, - rowHeaders, - ); - - // Test row header (Text column) - const rowHeaderCell = getCellContent([0, 0]); - - if (rowHeaderCell.kind === "text" && "displayData" in rowHeaderCell) { - expect(rowHeaderCell.displayData).toBe("Row 1"); - } else { - throw new Error("Expected a text cell with data for row header"); - } - - // Test first data column (Number column) - const firstDataCell = getCellContent([2, 0]); - - if (firstDataCell.kind === "number" && "data" in firstDataCell) { - expect(firstDataCell.data).toBe(100); - } else { - throw new Error("Expected a number cell with data for first data column"); - } - - // Test second data column (Number column) - const secondDataCell = getCellContent([3, 0]); - - if (secondDataCell.kind === "number" && "data" in secondDataCell) { - expect(secondDataCell.data).toBe(200); - } else { - throw new Error( - "Expected a number cell with data for second data column", + test.each([ + [0, 30], + [1, 60], + [2, 90], + ])("returns correct aggregate for row %i", (row, expected) => { + const getCellContent = renderGridCellContent(DATA); + const cell = getCellContent(createCoordinate(0, row)); + assertNumberCell( + cell, + expected, + `Expected aggregate value ${expected} at row ${row}`, ); - } - - // Test aggregate column - const aggregateCell = getCellContent([4, 0]); - - if (aggregateCell.kind === "number" && "data" in aggregateCell) { - expect(aggregateCell.data).toBe(250); - } else { - throw new Error("Expected a number cell with data for aggregate column"); - } + }); }); - test("correctly handles data columns when non-data columns are removed", () => { - const columns: EnhancedGridColumn[] = [ - { - id: "data1", - title: "TS 1", - type: Column.Number, - width: 50, - editable: true, + describe("Mixed column types", () => { + const DATA = { + columns: [ + createColumn("rowHeader", Column.Text), + createColumn("date", Column.DateTime), + createColumn("data1", Column.Number, true), + createColumn("data2", Column.Number, true), + createColumn("total", Column.Aggregate), + ], + data: [ + [100, 200], + [150, 250], + ], + dateTime: ["2024-01-01T00:00:00Z", "2024-01-02T00:00:00Z"], + rowHeaders: ["Row 1", "Row 2"], + aggregates: { + min: [100, 200], + max: [150, 250], + avg: [125, 225], + total: [250, 450], }, - { - id: "data2", - title: "TS 2", - type: Column.Number, - width: 50, - editable: true, - }, - { - id: "data3", - title: "TS 3", - type: Column.Number, - width: 50, - editable: true, - }, - ]; - - const data = [ - [100, 200, 300], - [150, 250, 350], - ]; - - const getCellContent = renderGridCellContent(data, columns); - - // Test all data columns - for (let i = 0; i < 3; i++) { - const cell = getCellContent([i, 0]); - if (cell.kind === "number" && "data" in cell) { - expect(cell.data).toBe(data[0][i]); - } else { - throw new Error(`Expected a number cell with data for column ${i}`); - } - } - }); -}); - -describe("useGridCellContent additional tests", () => { - test("handles empty data array correctly", () => { - const columns: EnhancedGridColumn[] = [ - { - id: "data1", - title: "TS 1", - type: Column.Number, - width: 50, - editable: true, - }, - ]; - const data: number[][] = []; - - const getCellContent = renderGridCellContent(data, columns); - - const cell = getCellContent([0, 0]); - if (cell.kind === "number" && "data" in cell) { - expect(cell.data).toBeUndefined(); - } else { - throw new Error("Expected a number cell with undefined data"); - } - }); - - test("handles column access out of bounds", () => { - const columns: EnhancedGridColumn[] = [ - { - id: "data1", - title: "TS 1", - type: Column.Number, - width: 50, - editable: true, - }, - ]; - const data = [[100]]; - - const getCellContent = renderGridCellContent(data, columns); - - const cell = getCellContent([1, 0]); // Accessing column index 1 which doesn't exist - expect(cell.kind).toBe("text"); - if ("displayData" in cell) { - expect(cell.displayData).toBe("N/A"); - } else { - throw new Error("Expected a text cell with 'N/A' displayData"); - } - }); - - test("handles row access out of bounds", () => { - const columns: EnhancedGridColumn[] = [ - { - id: "data1", - title: "TS 1", - type: Column.Number, - width: 50, - editable: true, - }, - ]; - const data = [[100]]; + }; - const getCellContent = renderGridCellContent(data, columns); + test("handles all column types correctly", () => { + const getCellContent = renderGridCellContent(DATA); - const cell = getCellContent([0, 1]); // Accessing row index 1 which doesn't exist - if (cell.kind === "number" && "data" in cell) { - expect(cell.data).toBeUndefined(); - } else { - throw new Error("Expected a number cell with undefined data"); - } - }); - - test("handles missing aggregates correctly", () => { - const columns: EnhancedGridColumn[] = [ - { - id: "total", - title: "Total", - type: Column.Aggregate, - width: 100, - editable: false, - }, - ]; - const data = [[100]]; - // No aggregates provided + // Text column (Row header) + assertTextCell( + getCellContent(createCoordinate(0, 0)), + "Row 1", + "Expected row header text", + ); - const getCellContent = renderGridCellContent(data, columns); + // Number columns + assertNumberCell( + getCellContent(createCoordinate(2, 0)), + 100, + "Expected first data column value", + ); + assertNumberCell( + getCellContent(createCoordinate(3, 0)), + 200, + "Expected second data column value", + ); - const cell = getCellContent([0, 0]); - if (cell.kind === "number" && "data" in cell) { - expect(cell.data).toBeUndefined(); - } else { - throw new Error( - "Expected a number cell with undefined data for missing aggregate", + // Aggregate column + assertNumberCell( + getCellContent(createCoordinate(4, 0)), + 250, + "Expected aggregate value", ); - } + }); }); - test("handles mixed editable and non-editable columns", () => { - const columns: EnhancedGridColumn[] = [ - { - id: "data1", - title: "TS 1", - type: Column.Number, - width: 50, - editable: true, - }, - { - id: "data2", - title: "TS 2", - type: Column.Number, - width: 50, - editable: false, - }, - ]; - const data = [[100, 200]]; - - const getCellContent = renderGridCellContent(data, columns); - - const editableCell = getCellContent([0, 0]); - const nonEditableCell = getCellContent([1, 0]); - - if (editableCell.kind === "number" && nonEditableCell.kind === "number") { - expect(editableCell.readonly).toBe(false); - expect(nonEditableCell.readonly).toBe(true); - } else { - throw new Error("Expected number cells with correct readonly property"); - } + describe("Edge cases", () => { + test("handles empty data array", () => { + const options = { + columns: [createColumn("data1", Column.Number, true)], + data: [], + }; + + const getCellContent = renderGridCellContent(options); + const cell = getCellContent(createCoordinate(0, 0)); + assertNumberCell(cell, undefined, "Expected undefined for empty data"); + }); + + test("handles out of bounds access", () => { + const options = { + columns: [createColumn("data1", Column.Number, true)], + data: [[100]], + }; + + const getCellContent = renderGridCellContent(options); + + // Column out of bounds + const colCell = getCellContent(createCoordinate(1, 0)); + assertTextCell(colCell, "N/A", "Expected N/A for column out of bounds"); + + // Row out of bounds + const rowCell = getCellContent(createCoordinate(0, 1)); + assertNumberCell( + rowCell, + undefined, + "Expected undefined for row out of bounds", + ); + }); }); - test("formats number cells correctly", () => { - const columns: EnhancedGridColumn[] = [ + describe("Number formatting", () => { + const formatTestCases = [ { - id: "data1", - title: "TS 1", - type: Column.Number, - width: 50, - editable: true, + desc: "formats regular numbers", + value: 1234567.89, + expected: "1 234 567.89", }, - ]; - - const data = [[1234567.89]]; - - const getCellContent = renderGridCellContent(data, columns); - const cell = getCellContent([0, 0]); - - if (cell.kind === "number" && "data" in cell) { - expect(cell.data).toBe(1234567.89); - expect(cell.displayData).toBe("1 234 567.89"); - } else { - throw new Error("Expected a number cell with formatted display data"); - } - }); - - test("handles very large and very small numbers correctly", () => { - const columns: EnhancedGridColumn[] = [ { - id: "large", - title: "Large", - type: Column.Number, - width: 50, - editable: true, + desc: "handles very large numbers", + value: 1e20, + expected: "100 000 000 000 000 000 000", }, { - id: "small", - title: "Small", - type: Column.Number, - width: 50, - editable: true, + desc: "handles very small numbers", + value: 0.00001, + expected: "0.00001", }, - ]; - - const data = [[1e20, 0.00001]]; - - const getCellContent = renderGridCellContent(data, columns); - - const largeCell = getCellContent([0, 0]); - if (largeCell.kind === "number" && "data" in largeCell) { - expect(largeCell.data).toBe(1e20); - expect(largeCell.displayData).toBe("100 000 000 000 000 000 000"); - } else { - throw new Error("Expected a number cell for large number"); - } - - const smallCell = getCellContent([1, 0]); - if (smallCell.kind === "number" && "data" in smallCell) { - expect(smallCell.data).toBe(0.00001); - expect(smallCell.displayData).toBe("0.00001"); - } else { - throw new Error("Expected a number cell for small number"); - } - }); - - test("handles negative numbers correctly", () => { - const columns: EnhancedGridColumn[] = [ { - id: "negative", - title: "Negative", - type: Column.Number, - width: 50, - editable: true, + desc: "handles negative numbers", + value: -1234567.89, + expected: "-1 234 567.89", }, - ]; - - const data = [[-1234567.89]]; - - const getCellContent = renderGridCellContent(data, columns); - const cell = getCellContent([0, 0]); - - if (cell.kind === "number" && "data" in cell) { - expect(cell.data).toBe(-1234567.89); - expect(cell.displayData).toBe("-1 234 567.89"); - } else { - throw new Error("Expected a number cell with formatted negative number"); - } - }); - - test("handles zero correctly", () => { - const columns: EnhancedGridColumn[] = [ { - id: "zero", - title: "Zero", - type: Column.Number, - width: 50, - editable: true, + desc: "handles zero", + value: 0, + expected: "0", }, ]; - const data = [[0]]; + test.each(formatTestCases)("$desc", ({ value, expected }) => { + const options = { + columns: [createColumn("number", Column.Number, true)], + data: [[value]], + }; - const getCellContent = renderGridCellContent(data, columns); - const cell = getCellContent([0, 0]); + const getCellContent = renderGridCellContent(options); + const cell = getCellContent(createCoordinate(0, 0)); - if (cell.kind === "number" && "data" in cell) { - expect(cell.data).toBe(0); - expect(cell.displayData).toBe("0"); - } else { - throw new Error("Expected a number cell for zero"); - } + if (cell.kind === "number" && "data" in cell) { + expect(cell.data).toBe(value); + expect(cell.displayData).toBe(expected); + } else { + throw new Error(`Expected formatted number cell for value ${value}`); + } + }); }); }); diff --git a/webapp/src/components/common/MatrixGrid/useMatrix.test.tsx b/webapp/src/components/common/MatrixGrid/useMatrix.test.tsx index 4a6c8b4e68..09bdce7eff 100644 --- a/webapp/src/components/common/MatrixGrid/useMatrix.test.tsx +++ b/webapp/src/components/common/MatrixGrid/useMatrix.test.tsx @@ -27,48 +27,34 @@ import { import { GridUpdate, MatrixDataDTO } from "./types"; import { GridCellKind } from "@glideapps/glide-data-grid"; +// Mock external dependencies vi.mock("../../../services/api/matrix"); vi.mock("../../../services/api/study"); vi.mock("../../../services/api/studies/raw"); vi.mock("../../../hooks/usePrompt"); describe("useMatrix", () => { - const mockStudyId = "study123"; - const mockUrl = "https://studies/study123/matrix"; - - const mockMatrixData: MatrixDataDTO = { - data: [ - [1, 2], - [3, 4], - ], - columns: [0, 1], - index: [0, 1], + // Test constants and fixtures + const DATA = { + studyId: "study123", + url: "https://studies/study123/matrix", + matrixData: { + data: [ + [1, 2], + [3, 4], + ], + columns: [0, 1], + index: [0, 1], + } as MatrixDataDTO, + matrixIndex: { + start_date: "2023-01-01", + steps: 2, + first_week_size: 7, + level: StudyOutputDownloadLevelDTO.DAILY, + } as MatrixIndex, }; - const mockMatrixIndex: MatrixIndex = { - start_date: "2023-01-01", - steps: 2, - first_week_size: 7, - level: StudyOutputDownloadLevelDTO.DAILY, - }; - - // Helper function to set up the hook and wait for initial loading - const setupHook = async () => { - vi.mocked(apiStudy.getStudyData).mockResolvedValue(mockMatrixData); - vi.mocked(apiMatrix.getStudyMatrixIndex).mockResolvedValue(mockMatrixIndex); - - const { result } = renderHook(() => - useMatrix(mockStudyId, mockUrl, true, true, true), - ); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - }); - - return result; - }; - - // Helper function to create a grid update object + // Helper functions const createGridUpdate = ( row: number, col: number, @@ -83,221 +69,174 @@ describe("useMatrix", () => { }, }); - beforeEach(() => { - vi.clearAllMocks(); - }); + interface SetupOptions { + mockData?: MatrixDataDTO; + mockIndex?: MatrixIndex; + } - test("should fetch matrix data and index on mount", async () => { - vi.mocked(apiStudy.getStudyData).mockResolvedValue(mockMatrixData); - vi.mocked(apiMatrix.getStudyMatrixIndex).mockResolvedValue(mockMatrixIndex); + const setupHook = async ({ + mockData = DATA.matrixData, + mockIndex = DATA.matrixIndex, + }: SetupOptions = {}) => { + vi.mocked(apiStudy.getStudyData).mockResolvedValue(mockData); + vi.mocked(apiMatrix.getStudyMatrixIndex).mockResolvedValue(mockIndex); - const result = await setupHook(); + const hook = renderHook(() => + useMatrix(DATA.studyId, DATA.url, true, true, true), + ); await waitFor(() => { - expect(result.current.isLoading).toBe(false); + expect(hook.result.current.isLoading).toBe(false); }); - expect(result.current.data).toEqual(mockMatrixData.data); - expect(result.current.columns.length).toBeGreaterThan(0); - expect(result.current.dateTime.length).toBeGreaterThan(0); - }); - - test("should handle cell edit", async () => { - vi.mocked(apiStudy.getStudyData).mockResolvedValue(mockMatrixData); - vi.mocked(apiMatrix.getStudyMatrixIndex).mockResolvedValue(mockMatrixIndex); - - const result = await setupHook(); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - }); + return hook; + }; + const performEdit = async ( + hook: Awaited>, + updates: GridUpdate | GridUpdate[], + ) => { act(() => { - result.current.handleCellEdit(createGridUpdate(0, 1, 5)); + if (Array.isArray(updates)) { + hook.result.current.handleMultipleCellsEdit(updates); + } else { + hook.result.current.handleCellEdit(updates); + } }); + }; - expect(result.current.data[1][0]).toBe(5); - expect(result.current.pendingUpdatesCount).toBe(1); + beforeEach(() => { + vi.clearAllMocks(); }); - test("should handle multiple cells edit", async () => { - vi.mocked(apiStudy.getStudyData).mockResolvedValue(mockMatrixData); - vi.mocked(apiMatrix.getStudyMatrixIndex).mockResolvedValue(mockMatrixIndex); - - const result = await setupHook(); + describe("Initialization", () => { + test("should fetch and initialize matrix data", async () => { + const hook = await setupHook(); - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - }); - - act(() => { - result.current.handleMultipleCellsEdit([ - createGridUpdate(0, 1, 5), - createGridUpdate(1, 0, 6), - ]); + expect(hook.result.current.data).toEqual(DATA.matrixData.data); + expect(hook.result.current.columns.length).toBeGreaterThan(0); + expect(hook.result.current.dateTime.length).toBeGreaterThan(0); + expect(hook.result.current.isLoading).toBe(false); }); - - expect(result.current.data[1][0]).toBe(5); - expect(result.current.data[0][1]).toBe(6); - expect(result.current.pendingUpdatesCount).toBe(1); }); - test("should handle save updates", async () => { - vi.mocked(apiStudy.getStudyData).mockResolvedValue(mockMatrixData); - vi.mocked(apiMatrix.getStudyMatrixIndex).mockResolvedValue(mockMatrixIndex); - vi.mocked(apiMatrix.updateMatrix).mockResolvedValue(undefined); + describe("Edit operations", () => { + test("should handle single cell edit", async () => { + const hook = await setupHook(); + const update = createGridUpdate(0, 1, 5); - const result = await setupHook(); + await performEdit(hook, update); - await waitFor(() => { - expect(result.current.isLoading).toBe(false); + expect(hook.result.current.data[1][0]).toBe(5); + expect(hook.result.current.pendingUpdatesCount).toBe(1); }); - act(() => { - result.current.handleCellEdit(createGridUpdate(0, 1, 5)); - }); + test("should handle multiple cell edits", async () => { + const hook = await setupHook(); + const updates = [createGridUpdate(0, 1, 5), createGridUpdate(1, 0, 6)]; - await act(async () => { - await result.current.handleSaveUpdates(); - }); - - const expectedEdit: MatrixEditDTO = { - coordinates: [[1, 0]], - operation: { - operation: Operator.EQ, - value: 5, - }, - }; - - expect(apiMatrix.updateMatrix).toHaveBeenCalledWith(mockStudyId, mockUrl, [ - expectedEdit, - ]); - expect(result.current.pendingUpdatesCount).toBe(0); - }); - - test("should handle file import", async () => { - const mockFile = new File([""], "test.csv", { type: "text/csv" }); - vi.mocked(rawStudy.importFile).mockResolvedValue(); - vi.mocked(apiStudy.getStudyData).mockResolvedValue(mockMatrixData); - vi.mocked(apiMatrix.getStudyMatrixIndex).mockResolvedValue(mockMatrixIndex); + await performEdit(hook, updates); - const result = await setupHook(); - - await act(async () => { - await result.current.handleImport(mockFile); - }); - - expect(rawStudy.importFile).toHaveBeenCalledWith({ - file: mockFile, - studyId: mockStudyId, - path: mockUrl, + expect(hook.result.current.data[1][0]).toBe(5); + expect(hook.result.current.data[0][1]).toBe(6); + expect(hook.result.current.pendingUpdatesCount).toBe(1); }); - }); - describe("Undo and Redo functionality", () => { - test("should have correct initial undo/redo states", async () => { - vi.mocked(apiStudy.getStudyData).mockResolvedValue(mockMatrixData); - vi.mocked(apiMatrix.getStudyMatrixIndex).mockResolvedValue( - mockMatrixIndex, - ); + test("should save updates correctly", async () => { + vi.mocked(apiMatrix.updateMatrix).mockResolvedValue(undefined); + const hook = await setupHook(); - const result = await setupHook(); + await performEdit(hook, createGridUpdate(0, 1, 5)); - await waitFor(() => { - expect(result.current.isLoading).toBe(false); + await act(async () => { + await hook.result.current.handleSaveUpdates(); }); - expect(result.current.canUndo).toBe(false); - expect(result.current.canRedo).toBe(false); - }); + const expectedEdit: MatrixEditDTO = { + coordinates: [[1, 0]], + operation: { operation: Operator.EQ, value: 5 }, + }; - test("should update canUndo and canRedo states correctly after edits", async () => { - vi.mocked(apiStudy.getStudyData).mockResolvedValue(mockMatrixData); - vi.mocked(apiMatrix.getStudyMatrixIndex).mockResolvedValue( - mockMatrixIndex, + expect(apiMatrix.updateMatrix).toHaveBeenCalledWith( + DATA.studyId, + DATA.url, + [expectedEdit], ); + expect(hook.result.current.pendingUpdatesCount).toBe(0); + }); + }); - const result = await setupHook(); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - }); - - act(() => { - result.current.handleCellEdit(createGridUpdate(0, 1, 5)); - }); + describe("File operations", () => { + test("should handle file import", async () => { + const mockFile = new File([""], "test.csv", { type: "text/csv" }); + vi.mocked(rawStudy.importFile).mockResolvedValue(); - expect(result.current.canUndo).toBe(true); - expect(result.current.canRedo).toBe(false); + const hook = await setupHook(); - act(() => { - result.current.undo(); + await act(async () => { + await hook.result.current.handleImport(mockFile); }); - expect(result.current.canUndo).toBe(false); - expect(result.current.canRedo).toBe(true); - - act(() => { - result.current.redo(); + expect(rawStudy.importFile).toHaveBeenCalledWith({ + file: mockFile, + studyId: DATA.studyId, + path: DATA.url, }); - - expect(result.current.canUndo).toBe(true); - expect(result.current.canRedo).toBe(false); }); + }); - test("should reset redo state after a new edit", async () => { - vi.mocked(apiStudy.getStudyData).mockResolvedValue(mockMatrixData); - vi.mocked(apiMatrix.getStudyMatrixIndex).mockResolvedValue( - mockMatrixIndex, - ); - - const result = await setupHook(); - - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - }); + describe("Undo/Redo functionality", () => { + test("should initialize with correct undo/redo states", async () => { + const hook = await setupHook(); - act(() => { - result.current.handleCellEdit(createGridUpdate(0, 1, 5)); - }); + expect(hook.result.current.canUndo).toBe(false); + expect(hook.result.current.canRedo).toBe(false); + }); - act(() => { - result.current.undo(); - }); + test("should update states after edit operations", async () => { + const hook = await setupHook(); + const update = createGridUpdate(0, 1, 5); - expect(result.current.canRedo).toBe(true); + // Initial edit + await performEdit(hook, update); + expect(hook.result.current.canUndo).toBe(true); + expect(hook.result.current.canRedo).toBe(false); - act(() => { - result.current.handleCellEdit(createGridUpdate(1, 0, 6)); - }); + // Undo + act(() => hook.result.current.undo()); + expect(hook.result.current.canUndo).toBe(false); + expect(hook.result.current.canRedo).toBe(true); - expect(result.current.canUndo).toBe(true); - expect(result.current.canRedo).toBe(false); + // Redo + act(() => hook.result.current.redo()); + expect(hook.result.current.canUndo).toBe(true); + expect(hook.result.current.canRedo).toBe(false); }); - test("should handle undo to initial state", async () => { - vi.mocked(apiStudy.getStudyData).mockResolvedValue(mockMatrixData); - vi.mocked(apiMatrix.getStudyMatrixIndex).mockResolvedValue( - mockMatrixIndex, - ); + test("should clear redo history after new edit", async () => { + const hook = await setupHook(); - const result = await setupHook(); + // Create edit history + await performEdit(hook, createGridUpdate(0, 1, 5)); + act(() => hook.result.current.undo()); + expect(hook.result.current.canRedo).toBe(true); - await waitFor(() => { - expect(result.current.isLoading).toBe(false); - }); + // New edit should clear redo history + await performEdit(hook, createGridUpdate(1, 0, 6)); + expect(hook.result.current.canUndo).toBe(true); + expect(hook.result.current.canRedo).toBe(false); + }); - act(() => { - result.current.handleCellEdit(createGridUpdate(0, 1, 5)); - }); + test("should restore initial state after full undo", async () => { + const hook = await setupHook(); + const initialData = [...DATA.matrixData.data]; - act(() => { - result.current.undo(); - }); + await performEdit(hook, createGridUpdate(0, 1, 5)); + act(() => hook.result.current.undo()); - expect(result.current.data).toEqual(mockMatrixData.data); - expect(result.current.canUndo).toBe(false); - expect(result.current.canRedo).toBe(true); + expect(hook.result.current.data).toEqual(initialData); + expect(hook.result.current.canUndo).toBe(false); + expect(hook.result.current.canRedo).toBe(true); }); }); }); diff --git a/webapp/src/components/common/MatrixGrid/utils.test.ts b/webapp/src/components/common/MatrixGrid/utils.test.ts index f451164ad6..f39fb513e0 100644 --- a/webapp/src/components/common/MatrixGrid/utils.test.ts +++ b/webapp/src/components/common/MatrixGrid/utils.test.ts @@ -12,27 +12,17 @@ * This file is part of the Antares project. */ -import { - MatrixIndex, - StudyOutputDownloadLevelDTO, -} from "../../../common/types"; -import { - Aggregate, - AggregateType, - Column, - DateTimeMetadataDTO, - TimeFrequency, -} from "./types"; +import { Aggregate, Column, TimeFrequency } from "./types"; import { calculateMatrixAggregates, formatNumber, generateCustomColumns, - generateDataColumns, generateDateTime, generateTimeSeriesColumns, getAggregateTypes, } from "./utils"; +// Mock date-fns for consistent date formatting vi.mock("date-fns", async () => { const actual = (await vi.importActual( "date-fns", @@ -49,445 +39,312 @@ vi.mock("date-fns", async () => { }; }); -describe("generateDateTime", () => { - beforeAll(() => { - // Set a fixed date for consistent testing - vi.useFakeTimers(); - vi.setSystemTime(new Date("2023-01-01 00:00:00")); - }); - - it("generates correct annual format", () => { - const config: DateTimeMetadataDTO = { +describe("Matrix Utils", () => { + // Test data and helpers + const TEST_DATA = { + dateConfig: { start_date: "2023-01-01 00:00:00", steps: 3, first_week_size: 7, - level: TimeFrequency.Annual, - }; - const result = generateDateTime(config); - expect(result).toEqual([ - "global.time.annual", - "global.time.annual", - "global.time.annual", - ]); - }); - - it("generates correct monthly format", () => { - const config: DateTimeMetadataDTO = { - start_date: "2023-01-01 00:00:00", - steps: 3, - first_week_size: 7, - level: TimeFrequency.Monthly, - }; - const result = generateDateTime(config); - expect(result).toEqual(["Jan", "Feb", "Mar"]); - }); - - it("generates correct weekly format with first_week_size 1", () => { - const config: DateTimeMetadataDTO = { - start_date: "2023-01-01 00:00:00", - steps: 3, - first_week_size: 1, - level: TimeFrequency.Weekly, - }; - const result = generateDateTime(config); - expect(result).toEqual(["W 01", "W 02", "W 03"]); - }); - - it("generates correct daily format", () => { - const config: DateTimeMetadataDTO = { - start_date: "2023-01-01 00:00:00", - steps: 3, - first_week_size: 7, - level: TimeFrequency.Daily, - }; - const result = generateDateTime(config); - expect(result).toEqual(["Sun 1 Jan", "Mon 2 Jan", "Tue 3 Jan"]); - }); - - it("generates correct hourly format", () => { - const config: DateTimeMetadataDTO = { - start_date: "2039-07-01 00:00:00", - steps: 3, - first_week_size: 7, - level: TimeFrequency.Hourly, - }; - const result = generateDateTime(config); - expect(result).toEqual([ - "Fri 1 Jul 00:00", - "Fri 1 Jul 01:00", - "Fri 1 Jul 02:00", - ]); - }); - - test("generates correct number of dates", () => { - const metadata: MatrixIndex = { - start_date: "2023-01-01 00:00:00", - steps: 5, - first_week_size: 7, - level: StudyOutputDownloadLevelDTO.DAILY, - }; - const result = generateDateTime(metadata); - expect(result).toHaveLength(5); - }); -}); + }, + matrix: [ + [1, 2, 3], + [4, 5, 6], + [7, 8, 9], + ], + }; -describe("generateTimeSeriesColumns", () => { - test("generates correct number of columns", () => { - const result = generateTimeSeriesColumns({ count: 5 }); - expect(result).toHaveLength(5); + beforeAll(() => { + vi.useFakeTimers(); + vi.setSystemTime(new Date("2023-01-01 00:00:00")); }); - test("generates columns with default options", () => { - const result = generateTimeSeriesColumns({ count: 3 }); - expect(result).toEqual([ + describe("DateTime Generation", () => { + const dateTimeTestCases = [ { - id: "data1", - title: "TS 1", - type: Column.Number, - style: "normal", - editable: true, + name: "annual format", + config: { ...TEST_DATA.dateConfig, level: TimeFrequency.Annual }, + expected: [ + "global.time.annual", + "global.time.annual", + "global.time.annual", + ], }, { - id: "data2", - title: "TS 2", - type: Column.Number, - style: "normal", - editable: true, + name: "monthly format", + config: { ...TEST_DATA.dateConfig, level: TimeFrequency.Monthly }, + expected: ["Jan", "Feb", "Mar"], }, { - id: "data3", - title: "TS 3", - type: Column.Number, - style: "normal", - editable: true, + name: "weekly format", + config: { + ...TEST_DATA.dateConfig, + level: TimeFrequency.Weekly, + first_week_size: 1, + }, + expected: ["W 01", "W 02", "W 03"], }, - ]); - }); - - test("generates columns with custom options", () => { - const result = generateTimeSeriesColumns({ - count: 2, - startIndex: 10, - prefix: "Data", - editable: false, - }); - expect(result).toEqual([ { - id: "data10", - title: "Data 10", - type: Column.Number, - style: "normal", - editable: false, + name: "daily format", + config: { ...TEST_DATA.dateConfig, level: TimeFrequency.Daily }, + expected: ["Sun 1 Jan", "Mon 2 Jan", "Tue 3 Jan"], }, { - id: "data11", - title: "Data 11", - type: Column.Number, - style: "normal", - editable: false, + name: "hourly format", + config: { + start_date: "2039-07-01 00:00:00", + steps: 3, + first_week_size: 7, + level: TimeFrequency.Hourly, + }, + expected: ["Fri 1 Jul 00:00", "Fri 1 Jul 01:00", "Fri 1 Jul 02:00"], }, - ]); - }); - - test("handles zero count", () => { - const result = generateTimeSeriesColumns({ count: 0 }); - expect(result).toEqual([]); - }); - - test("handles large count", () => { - const result = generateTimeSeriesColumns({ count: 1000 }); - expect(result).toHaveLength(1000); - expect(result[999].id).toBe("data1000"); - expect(result[999].title).toBe("TS 1000"); - }); - - test("maintains consistent type and style", () => { - const result = generateTimeSeriesColumns({ count: 1000 }); - result.forEach((column) => { - expect(column.type).toBe(Column.Number); - expect(column.style).toBe("normal"); - }); - }); -}); - -describe("calculateMatrixAggregates", () => { - it("should calculate correct aggregates for a simple matrix", () => { - const matrix = [ - [1, 2, 3], - [4, 5, 6], - [7, 8, 9], ]; - const result = calculateMatrixAggregates(matrix, [ - "min", - "max", - "avg", - "total", - ]); - expect(result.min).toEqual([1, 4, 7]); - expect(result.max).toEqual([3, 6, 9]); - expect(result.avg).toEqual([2, 5, 8]); - expect(result.total).toEqual([6, 15, 24]); + test.each(dateTimeTestCases)( + "generates correct $name", + ({ config, expected }) => { + const result = generateDateTime(config); + expect(result).toEqual(expected); + }, + ); }); - it("should handle decimal numbers correctly by rounding", () => { - const matrix = [ - [1.1, 2.2, 3.3], - [4.4, 5.5, 6.6], + describe("Time Series Column Generation", () => { + const columnTestCases = [ + { + name: "default options", + input: { count: 3 }, + expectedLength: 3, + validate: (result: ReturnType) => { + expect(result[0]).toEqual({ + id: "data1", + title: "TS 1", + type: Column.Number, + style: "normal", + editable: true, + }); + }, + }, + { + name: "custom options", + input: { count: 2, startIndex: 10, prefix: "Data", editable: false }, + expectedLength: 2, + validate: (result: ReturnType) => { + expect(result[0]).toEqual({ + id: "data10", + title: "Data 10", + type: Column.Number, + style: "normal", + editable: false, + }); + }, + }, + { + name: "zero count", + input: { count: 0 }, + expectedLength: 0, + validate: (result: ReturnType) => { + expect(result).toEqual([]); + }, + }, + { + name: "large count", + input: { count: 1000 }, + expectedLength: 1000, + validate: (result: ReturnType) => { + expect(result[999].id).toBe("data1000"); + expect(result[999].title).toBe("TS 1000"); + }, + }, ]; - const result = calculateMatrixAggregates(matrix, [ - "min", - "max", - "avg", - "total", - ]); - expect(result.min).toEqual([1.1, 4.4]); - expect(result.max).toEqual([3.3, 6.6]); - expect(result.avg).toEqual([2, 6]); - expect(result.total).toEqual([7, 17]); + test.each(columnTestCases)( + "handles $name correctly", + ({ input, expectedLength, validate }) => { + const result = generateTimeSeriesColumns(input); + expect(result).toHaveLength(expectedLength); + validate(result); + }, + ); }); - it("should handle negative numbers", () => { - const matrix = [ - [-1, -2, -3], - [-4, 0, 4], + describe("Matrix Aggregates Calculation", () => { + const aggregateTestCases = [ + { + name: "simple matrix with all aggregates", + matrix: TEST_DATA.matrix, + aggregates: "all" as const, + expected: { + min: [1, 4, 7], + max: [3, 6, 9], + avg: [2, 5, 8], + total: [6, 15, 24], + }, + }, + { + name: "decimal numbers", + matrix: [ + [1.1, 2.2, 3.3], + [4.4, 5.5, 6.6], + ], + aggregates: "all" as const, + expected: { + min: [1.1, 4.4], + max: [3.3, 6.6], + avg: [2, 6], + total: [7, 17], + }, + }, + { + name: "negative numbers", + matrix: [ + [-1, -2, -3], + [-4, 0, 4], + ], + aggregates: "all" as const, + expected: { + min: [-3, -4], + max: [-1, 4], + avg: [-2, 0], + total: [-6, 0], + }, + }, ]; - const result = calculateMatrixAggregates(matrix, [ - "min", - "max", - "avg", - "total", - ]); - - expect(result.min).toEqual([-3, -4]); - expect(result.max).toEqual([-1, 4]); - expect(result.avg).toEqual([-2, 0]); - expect(result.total).toEqual([-6, 0]); - }); - it("should handle single-element rows", () => { - const matrix = [[1], [2], [3]]; - const result = calculateMatrixAggregates(matrix, [ - "min", - "max", - "avg", - "total", - ]); - - expect(result.min).toEqual([1, 2, 3]); - expect(result.max).toEqual([1, 2, 3]); - expect(result.avg).toEqual([1, 2, 3]); - expect(result.total).toEqual([1, 2, 3]); + test.each(aggregateTestCases)( + "calculates $name correctly", + ({ matrix, aggregates, expected }) => { + const aggregatesTypes = getAggregateTypes(aggregates); + const result = calculateMatrixAggregates(matrix, aggregatesTypes); + expect(result).toEqual(expected); + }, + ); }); - it("should handle large numbers", () => { - const matrix = [ - [1000000, 2000000, 3000000], - [4000000, 5000000, 6000000], - ]; - const result = calculateMatrixAggregates(matrix, [ - "min", - "max", - "avg", - "total", - ]); - - expect(result.min).toEqual([1000000, 4000000]); - expect(result.max).toEqual([3000000, 6000000]); - expect(result.avg).toEqual([2000000, 5000000]); - expect(result.total).toEqual([6000000, 15000000]); - }); + describe("Number Formatting", () => { + interface FormatTestCase { + description: string; + value: number | undefined; + maxDecimals?: number; + expected: string; + } - it("should round average correctly", () => { - const matrix = [ - [1, 2, 4], - [10, 20, 39], + const formatTestCases: Array<{ name: string; cases: FormatTestCase[] }> = [ + { + name: "integer numbers", + cases: [ + { + description: "formats large number", + value: 1234567, + expected: "1 234 567", + }, + { + description: "formats million", + value: 1000000, + expected: "1 000 000", + }, + { description: "formats single digit", value: 1, expected: "1" }, + ], + }, + { + name: "decimal numbers", + cases: [ + { + description: "formats with 2 decimals", + value: 1234.56, + maxDecimals: 2, + expected: "1 234.56", + }, + { + description: "formats with 3 decimals", + value: 1000000.123, + maxDecimals: 3, + expected: "1 000 000.123", + }, + ], + }, + { + name: "special cases", + cases: [ + { + description: "handles undefined", + value: undefined, + maxDecimals: 3, + expected: "", + }, + { description: "handles zero", value: 0, expected: "0" }, + { + description: "handles negative", + value: -1234567, + expected: "-1 234 567", + }, + { + description: "handles very large number", + value: 1e20, + expected: "100 000 000 000 000 000 000", + }, + ], + }, ]; - const result = calculateMatrixAggregates(matrix, ["avg"]); - - expect(result.avg).toEqual([2, 23]); - }); -}); -describe("generateCustomColumns", () => { - it("should generate custom columns with correct properties", () => { - const titles = ["Custom 1", "Custom 2", "Custom 3"]; - const width = 100; - const result = generateCustomColumns({ titles, width }); - - expect(result).toHaveLength(3); - result.forEach((column, index) => { - expect(column).toEqual({ - id: `custom${index + 1}`, - title: titles[index], - type: Column.Number, - style: "normal", - width: 100, - editable: true, + describe.each(formatTestCases)("$name", ({ cases }) => { + test.each(cases)("$description", ({ value, maxDecimals, expected }) => { + expect(formatNumber({ value, maxDecimals })).toBe(expected); }); }); }); - it("should handle empty titles array", () => { - const result = generateCustomColumns({ titles: [], width: 100 }); - expect(result).toEqual([]); - }); -}); + describe("Custom Column Generation", () => { + test("generates columns with correct properties", () => { + const titles = ["Custom 1", "Custom 2", "Custom 3"]; + const width = 100; -describe("generateDataColumns", () => { - it("should generate custom columns when provided", () => { - const customColumns = ["Custom 1", "Custom 2"]; - const result = generateDataColumns(false, 5, customColumns, 100); + const result = generateCustomColumns({ titles, width }); + expect(result).toHaveLength(3); - expect(result).toHaveLength(2); - expect(result[0].title).toBe("Custom 1"); - expect(result[1].title).toBe("Custom 2"); - }); - - it("should generate time series columns when enabled", () => { - const result = generateDataColumns(true, 3); - - expect(result).toHaveLength(3); - expect(result[0].title).toBe("TS 1"); - expect(result[1].title).toBe("TS 2"); - expect(result[2].title).toBe("TS 3"); - }); - - it("should return empty array when custom columns not provided and time series disabled", () => { - const result = generateDataColumns(false, 5); - expect(result).toEqual([]); - }); -}); - -describe("getAggregateTypes", () => { - it('should return correct aggregate types for "stats" config', () => { - const result = getAggregateTypes("stats"); - expect(result).toEqual([Aggregate.Avg, Aggregate.Min, Aggregate.Max]); - }); - - it('should return correct aggregate types for "all" config', () => { - const result = getAggregateTypes("all"); - expect(result).toEqual([ - Aggregate.Min, - Aggregate.Max, - Aggregate.Avg, - Aggregate.Total, - ]); - }); - - it("should return provided aggregate types for array config", () => { - const config: AggregateType[] = [Aggregate.Min, Aggregate.Max]; - const result = getAggregateTypes(config); - expect(result).toEqual(config); - }); - - it("should return empty array for invalid config", () => { - // @ts-expect-error : we are testing an invalid value - const result = getAggregateTypes("invalid"); - expect(result).toEqual([]); - }); -}); - -describe("calculateMatrixAggregates", () => { - const matrix = [ - [1, 2, 3], - [4, 5, 6], - [7, 8, 9], - ]; - - it("should calculate min aggregate correctly", () => { - const result = calculateMatrixAggregates(matrix, [Aggregate.Min]); - expect(result).toEqual({ min: [1, 4, 7] }); - }); - - it("should calculate max aggregate correctly", () => { - const result = calculateMatrixAggregates(matrix, [Aggregate.Max]); - expect(result).toEqual({ max: [3, 6, 9] }); - }); - - it("should calculate avg aggregate correctly", () => { - const result = calculateMatrixAggregates(matrix, [Aggregate.Avg]); - expect(result).toEqual({ avg: [2, 5, 8] }); - }); - - it("should calculate total aggregate correctly", () => { - const result = calculateMatrixAggregates(matrix, [Aggregate.Total]); - expect(result).toEqual({ total: [6, 15, 24] }); - }); - - it("should calculate multiple aggregates correctly", () => { - const result = calculateMatrixAggregates(matrix, [ - Aggregate.Min, - Aggregate.Max, - Aggregate.Avg, - Aggregate.Total, - ]); - expect(result).toEqual({ - min: [1, 4, 7], - max: [3, 6, 9], - avg: [2, 5, 8], - total: [6, 15, 24], + result.forEach((column, index) => { + expect(column).toEqual({ + id: `custom${index + 1}`, + title: titles[index], + type: Column.Number, + style: "normal", + width, + editable: true, + }); + }); }); }); - it("should handle empty matrix", () => { - const result = calculateMatrixAggregates( - [], - [Aggregate.Min, Aggregate.Max, Aggregate.Avg, Aggregate.Total], - ); - expect(result).toEqual({}); - }); -}); - -describe("formatNumber", () => { - test("should format integer numbers correctly", () => { - expect(formatNumber({ value: 1234567 })).toBe("1 234 567"); - expect(formatNumber({ value: 1000000 })).toBe("1 000 000"); - expect(formatNumber({ value: 1 })).toBe("1"); - }); - - test("should format decimal numbers correctly", () => { - expect(formatNumber({ value: 1234.56, maxDecimals: 2 })).toBe("1 234.56"); - expect(formatNumber({ value: 1000000.123, maxDecimals: 3 })).toBe( - "1 000 000.123", - ); - }); - - test("should format load factors correctly with 6 decimal places", () => { - expect(formatNumber({ value: 0.123456, maxDecimals: 6 })).toBe("0.123456"); - expect(formatNumber({ value: 0.999999, maxDecimals: 6 })).toBe("0.999999"); - expect(formatNumber({ value: 0.000001, maxDecimals: 6 })).toBe("0.000001"); - }); - - test("should format statistics correctly with 3 decimal places", () => { - expect(formatNumber({ value: 1.23456, maxDecimals: 3 })).toBe("1.235"); // rounding - expect(formatNumber({ value: 0.001234, maxDecimals: 3 })).toBe("0.001"); - expect(formatNumber({ value: 0.1234567, maxDecimals: 3 })).toBe("0.123"); // truncation - }); - - test("should handle negative numbers", () => { - expect(formatNumber({ value: -1234567 })).toBe("-1 234 567"); - expect(formatNumber({ value: -1234.56, maxDecimals: 2 })).toBe("-1 234.56"); - }); - - test("should handle zero", () => { - expect(formatNumber({ value: 0 })).toBe("0"); - }); - - test("should handle undefined", () => { - expect(formatNumber({ value: undefined, maxDecimals: 3 })).toBe(""); - }); - - test("should handle large numbers", () => { - expect(formatNumber({ value: 1e15 })).toBe("1 000 000 000 000 000"); - }); + describe("Aggregate Type Configuration", () => { + const aggregateConfigCases = [ + { + name: "stats configuration", + aggregates: "stats" as const, + expected: [Aggregate.Avg, Aggregate.Min, Aggregate.Max], + }, + { + name: "all configuration", + aggregates: "all" as const, + expected: [ + Aggregate.Min, + Aggregate.Max, + Aggregate.Avg, + Aggregate.Total, + ], + }, + { + name: "custom configuration", + aggregates: [Aggregate.Min, Aggregate.Max], + expected: [Aggregate.Min, Aggregate.Max], + }, + ]; - test("should handle edge cases", () => { - expect(formatNumber({ value: 0, maxDecimals: 2 })).toBe("0"); - expect(formatNumber({ value: -0.123456, maxDecimals: 6 })).toBe( - "-0.123456", + test.each(aggregateConfigCases)( + "handles $name correctly", + ({ aggregates, expected }) => { + expect(getAggregateTypes(aggregates)).toEqual(expected); + }, ); - expect(formatNumber({ value: 1e20 })).toBe("100 000 000 000 000 000 000"); }); }); From 5b79b237c5d2b705f4f0efcc6bcdb1072059cfed Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Thu, 24 Oct 2024 16:56:47 +0200 Subject: [PATCH 117/182] refactor(ui): remove `MatrixInput` --- .../common/MatrixInput/MatrixAssignDialog.tsx | 210 --------------- .../components/common/MatrixInput/index.tsx | 240 ------------------ .../components/common/MatrixInput/style.ts | 60 ----- 3 files changed, 510 deletions(-) delete mode 100644 webapp/src/components/common/MatrixInput/MatrixAssignDialog.tsx delete mode 100644 webapp/src/components/common/MatrixInput/index.tsx delete mode 100644 webapp/src/components/common/MatrixInput/style.ts diff --git a/webapp/src/components/common/MatrixInput/MatrixAssignDialog.tsx b/webapp/src/components/common/MatrixInput/MatrixAssignDialog.tsx deleted file mode 100644 index 4ca1978912..0000000000 --- a/webapp/src/components/common/MatrixInput/MatrixAssignDialog.tsx +++ /dev/null @@ -1,210 +0,0 @@ -/** - * Copyright (c) 2024, RTE (https://www.rte-france.com) - * - * See AUTHORS.txt - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * SPDX-License-Identifier: MPL-2.0 - * - * This file is part of the Antares project. - */ - -import { Box, Button, Divider, Typography } from "@mui/material"; -import { AxiosError } from "axios"; -import { useSnackbar } from "notistack"; -import { useEffect, useState } from "react"; -import { useTranslation } from "react-i18next"; -import { MatrixInfoDTO, StudyMetadata } from "../../../common/types"; -import useEnqueueErrorSnackbar from "../../../hooks/useEnqueueErrorSnackbar"; -import usePromiseWithSnackbarError from "../../../hooks/usePromiseWithSnackbarError"; -import { getMatrix, getMatrixList } from "../../../services/api/matrix"; -import { appendCommands } from "../../../services/api/variant"; -import DataPropsView from "../../App/Data/DataPropsView"; -import { CommandEnum } from "../../App/Singlestudy/Commands/Edition/commandTypes"; -import ButtonBack from "../ButtonBack"; -import BasicDialog, { BasicDialogProps } from "../dialogs/BasicDialog"; -import EditableMatrix from "../EditableMatrix"; -import FileTable from "../FileTable"; -import UsePromiseCond from "../utils/UsePromiseCond"; -import SplitView from "../SplitView"; - -interface Props { - studyId: StudyMetadata["id"]; - path: string; - open: BasicDialogProps["open"]; - onClose: VoidFunction; -} - -function MatrixAssignDialog(props: Props) { - const [t] = useTranslation(); - const { studyId, path, open, onClose } = props; - const [selectedItem, setSelectedItem] = useState(""); - const [currentMatrix, setCurrentMatrix] = useState(); - const enqueueErrorSnackbar = useEnqueueErrorSnackbar(); - const { enqueueSnackbar } = useSnackbar(); - - const resList = usePromiseWithSnackbarError(() => getMatrixList(), { - errorMessage: t("data.error.matrixList"), - }); - - const resMatrix = usePromiseWithSnackbarError( - async () => { - if (currentMatrix) { - const res = await getMatrix(currentMatrix.id); - return res; - } - }, - { - errorMessage: t("data.error.matrix"), - deps: [currentMatrix], - }, - ); - - useEffect(() => { - setCurrentMatrix(undefined); - }, [selectedItem]); - - const dataSet = resList.data?.find((item) => item.id === selectedItem); - const matrices = dataSet?.matrices; - const matrixName = `${t("global.matrices")} - ${dataSet?.name}`; - - //////////////////////////////////////////////////////////////// - // Event Handlers - //////////////////////////////////////////////////////////////// - - const handleMatrixClick = async (id: string) => { - if (matrices) { - setCurrentMatrix({ - id, - name: matrices.find((o) => o.id === id)?.name || "", - }); - } - }; - - const handleAssignation = async (matrixId: string) => { - try { - await appendCommands(studyId, [ - { - action: CommandEnum.REPLACE_MATRIX, - args: { - target: path, - matrix: matrixId, - }, - }, - ]); - enqueueSnackbar(t("data.success.matrixAssignation"), { - variant: "success", - }); - onClose(); - } catch (e) { - enqueueErrorSnackbar(t("data.error.matrixAssignation"), e as AxiosError); - } - }; - - //////////////////////////////////////////////////////////////// - // JSX - //////////////////////////////////////////////////////////////// - - return ( - {t("global.close")}} - contentProps={{ - sx: { width: "1200px", height: "700px" }, - }} - > - - dataset && ( - - - - {selectedItem && !currentMatrix && ( - - - {matrixName} - - - } - content={matrices || []} - onRead={handleMatrixClick} - onAssign={handleAssignation} - /> - )} - - matrix && ( - <> - - - {matrixName} - - - - setCurrentMatrix(undefined)} - /> - - - - - - ) - } - /> - - - ) - } - /> - - ); -} - -export default MatrixAssignDialog; diff --git a/webapp/src/components/common/MatrixInput/index.tsx b/webapp/src/components/common/MatrixInput/index.tsx deleted file mode 100644 index 4034517235..0000000000 --- a/webapp/src/components/common/MatrixInput/index.tsx +++ /dev/null @@ -1,240 +0,0 @@ -/** - * Copyright (c) 2024, RTE (https://www.rte-france.com) - * - * See AUTHORS.txt - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * SPDX-License-Identifier: MPL-2.0 - * - * This file is part of the Antares project. - */ - -import { useTranslation } from "react-i18next"; -import { useSnackbar } from "notistack"; -import { useState } from "react"; -import { AxiosError } from "axios"; -import { Typography, Box, Divider } from "@mui/material"; -import FileDownloadIcon from "@mui/icons-material/FileDownload"; -import GridOffIcon from "@mui/icons-material/GridOff"; -import { - MatrixEditDTO, - MatrixStats, - StudyMetadata, -} from "../../../common/types"; -import useEnqueueErrorSnackbar from "../../../hooks/useEnqueueErrorSnackbar"; -import { getStudyData } from "../../../services/api/study"; -import usePromiseWithSnackbarError from "../../../hooks/usePromiseWithSnackbarError"; -import { editMatrix, getStudyMatrixIndex } from "../../../services/api/matrix"; -import { Root, Content, Header } from "./style"; -import SimpleLoader from "../loaders/SimpleLoader"; -import EmptyView from "../page/SimpleContent"; -import EditableMatrix from "../EditableMatrix"; -import ImportDialog from "../dialogs/ImportDialog"; -import MatrixAssignDialog from "./MatrixAssignDialog"; -import { fetchMatrixFn } from "../../App/Singlestudy/explore/Modelization/Areas/Hydro/utils"; -import SplitButton from "../buttons/SplitButton"; -import DownloadMatrixButton from "../buttons/DownloadMatrixButton.tsx"; -import { importFile } from "../../../services/api/studies/raw/index.ts"; - -interface Props { - study: StudyMetadata | StudyMetadata["id"]; - url: string; - columnsNames?: string[] | readonly string[]; - rowNames?: string[]; - title?: string; - computStats: MatrixStats; - fetchFn?: fetchMatrixFn; - disableEdit?: boolean; - disableImport?: boolean; - showPercent?: boolean; -} - -function MatrixInput({ - study, - url, - columnsNames, - rowNames: initialRowNames, - title, - computStats, - fetchFn, - disableEdit = false, - disableImport = false, - showPercent, -}: Props) { - const { enqueueSnackbar } = useSnackbar(); - const enqueueErrorSnackbar = useEnqueueErrorSnackbar(); - const [t] = useTranslation(); - const [openImportDialog, setOpenImportDialog] = useState(false); - const [openMatrixAsignDialog, setOpenMatrixAsignDialog] = useState(false); - const studyId = typeof study === "string" ? study : study.id; - - const { - data: matrixData, - isLoading, - reload: reloadMatrix, - } = usePromiseWithSnackbarError(fetchMatrixData, { - errorMessage: t("data.error.matrix"), - deps: [studyId, url, fetchFn], - }); - - const { data: matrixIndex } = usePromiseWithSnackbarError( - async () => { - if (fetchFn) { - return matrixData?.index; - } - return getStudyMatrixIndex(studyId, url); - }, - { - errorMessage: t("matrix.error.failedToretrieveIndex"), - deps: [study, url, fetchFn, matrixData], - }, - ); - - /** - * If fetchFn is provided, custom row names (area names) are used from the matrixData's index property. - * Otherwise, default row numbers and timestamps are displayed using initialRowNames. - */ - const rowNames = fetchFn ? matrixIndex : initialRowNames; - const columnsLength = matrixData?.columns?.length ?? 0; - - //////////////////////////////////////////////////////////////// - // Utils - //////////////////////////////////////////////////////////////// - - async function fetchMatrixData() { - const res = fetchFn - ? await fetchFn(studyId) - : await getStudyData(studyId, url); - if (typeof res === "string") { - const fixed = res - .replace(/NaN/g, '"NaN"') - .replace(/Infinity/g, '"Infinity"'); - return JSON.parse(fixed); - } - return res; - } - - //////////////////////////////////////////////////////////////// - // Event Handlers - //////////////////////////////////////////////////////////////// - - const handleUpdate = async (change: MatrixEditDTO[], source: string) => { - if (source !== "loadData" && source !== "updateData") { - try { - if (change.length > 0) { - const sanitizedUrl = url.startsWith("/") ? url.substring(1) : url; - await editMatrix(studyId, sanitizedUrl, change); - enqueueSnackbar(t("matrix.success.matrixUpdate"), { - variant: "success", - }); - } - } catch (e) { - enqueueErrorSnackbar(t("matrix.error.matrixUpdate"), e as AxiosError); - } - } - }; - - const handleImport = async (file: File) => { - await importFile({ file, studyId, path: url }); - reloadMatrix(); - }; - - //////////////////////////////////////////////////////////////// - // JSX - //////////////////////////////////////////////////////////////// - - return ( - - -
- - {title || t("xpansion.timeSeries")} - - - {!disableImport && ( - { - if (index === 0) { - setOpenImportDialog(true); - } else { - setOpenMatrixAsignDialog(true); - } - }} - size="small" - ButtonProps={{ - startIcon: , - }} - > - {t("global.import")} - - )} - - -
- - {isLoading && } - {!isLoading && columnsLength >= 1 && matrixIndex ? ( - - ) : ( - !isLoading && ( - - ) - )} -
- {openImportDialog && ( - setOpenImportDialog(false)} - onImport={handleImport} - accept={{ "text/*": [".csv", ".tsv", ".txt"] }} - /> - )} - {openMatrixAsignDialog && ( - { - setOpenMatrixAsignDialog(false); - reloadMatrix(); - }} - /> - )} -
- ); -} - -export default MatrixInput; diff --git a/webapp/src/components/common/MatrixInput/style.ts b/webapp/src/components/common/MatrixInput/style.ts deleted file mode 100644 index 148f1b191d..0000000000 --- a/webapp/src/components/common/MatrixInput/style.ts +++ /dev/null @@ -1,60 +0,0 @@ -/** - * Copyright (c) 2024, RTE (https://www.rte-france.com) - * - * See AUTHORS.txt - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * SPDX-License-Identifier: MPL-2.0 - * - * This file is part of the Antares project. - */ - -import { styled, Box, Button } from "@mui/material"; - -export const Root = styled(Box)(({ theme }) => ({ - flex: 1, - height: "100%", - width: "100%", - display: "flex", - flexFlow: "column nowrap", - justifyContent: "flex-start", - alignItems: "center", -})); - -export const Header = styled(Box)(({ theme }) => ({ - width: "100%", - display: "flex", - flexFlow: "row wrap", - gap: theme.spacing(1), - justifyContent: "space-between", - alignItems: "flex-end", -})); - -export const Content = styled(Box)(({ theme }) => ({ - boxSizing: "border-box", - flex: 1, - width: "100%", - display: "flex", - flexFlow: "column nowrap", - justifyContent: "flex-start", - alignItems: "flex-start", - overflow: "auto", - position: "relative", -})); - -export const StyledButton = styled(Button)(({ theme }) => ({ - backgroundColor: "rgba(180, 180, 180, 0.09)", - color: "white", - borderRight: "none !important", - "&:hover": { - color: "white", - backgroundColor: theme.palette.secondary.main, - }, - "&:disabled": { - backgroundColor: theme.palette.secondary.dark, - color: "white !important", - }, -})); From c377f3be1f0158a0c7b474043ba212edb1d16715 Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Fri, 25 Oct 2024 16:41:10 +0200 Subject: [PATCH 118/182] refactor(ui): improves `Matrix` folder and files overall organization --- .../Singlestudy/explore/Debug/Data/Matrix.tsx | 2 +- .../Areas/Hydro/Allocation/utils.ts | 2 +- .../Areas/Hydro/Correlation/utils.ts | 2 +- .../Modelization/Areas/Hydro/HydroMatrix.tsx | 2 +- .../explore/Modelization/Areas/Hydro/utils.ts | 2 +- .../explore/Modelization/Areas/Load.tsx | 2 +- .../explore/Modelization/Areas/MiscGen.tsx | 2 +- .../Modelization/Areas/Renewables/Matrix.tsx | 2 +- .../explore/Modelization/Areas/Reserve.tsx | 2 +- .../explore/Modelization/Areas/Solar.tsx | 2 +- .../Modelization/Areas/Storages/Matrix.tsx | 2 +- .../Modelization/Areas/Thermal/Matrix.tsx | 2 +- .../explore/Modelization/Areas/Wind.tsx | 2 +- .../BindingConstView/Matrix.tsx | 2 +- .../Modelization/Links/LinkView/LinkForm.tsx | 2 +- .../Links/LinkView/LinkMatrixView.tsx | 2 +- .../explore/Results/ResultDetails/index.tsx | 6 +- .../MatrixActions}/MatrixActions.test.tsx | 2 +- .../components/MatrixActions/index.tsx} | 8 +- .../MatrixGrid/MatrixGrid.test.tsx} | 19 +- .../components}/MatrixGrid/index.tsx | 14 +- .../Matrix/components/MatrixGrid/styles.ts | 72 ++++ .../common/Matrix/core/__tests__/fixtures.ts | 214 +++++++++++ .../common/Matrix/core/__tests__/types.ts | 20 + .../Matrix/core/__tests__/utils.test.ts | 138 +++++++ .../common/Matrix/core/constants.ts | 116 ++++++ .../{MatrixGrid => Matrix/core}/types.ts | 50 +-- .../{MatrixGrid => Matrix/core}/utils.ts | 156 +------- .../useColumnMapping/__tests__/fixtures.ts | 31 ++ .../__tests__}/useColumnMapping.test.ts | 45 +-- .../hooks/useColumnMapping/__tests__/utils.ts | 40 ++ .../hooks/useColumnMapping/index.ts} | 3 +- .../__tests__/assertions.ts | 51 +++ .../useGridCellContent/__tests__/fixtures.ts | 105 ++++++ .../__tests__/useGridCellContent.test.ts | 124 +++++++ .../useGridCellContent/__tests__/utils.ts | 47 +++ .../hooks/useGridCellContent/index.ts} | 17 +- .../Matrix/hooks/useGridCellContent/types.ts | 51 +++ .../hooks/useMatrix/index.ts} | 24 +- .../hooks/useMatrix}/useMatrix.test.tsx | 155 ++++---- .../hooks/useMatrixPortal/index.ts} | 0 .../useMatrixPortal}/useMatrixPortal.test.tsx | 21 +- .../Matrix.tsx => Matrix/index.tsx} | 10 +- .../{MatrixGrid/style.ts => Matrix/styles.ts} | 0 .../MatrixGrid/useGridCellContent.test.ts | 267 ------------- .../common/MatrixGrid/utils.test.ts | 350 ------------------ webapp/src/services/api/matrix.ts | 2 +- .../validation/{ => __tests__}/array.test.ts | 2 +- .../validation/{ => __tests__}/number.test.ts | 2 +- .../validation/{ => __tests__}/string.test.ts | 2 +- 50 files changed, 1189 insertions(+), 1007 deletions(-) rename webapp/src/components/common/{MatrixGrid => Matrix/components/MatrixActions}/MatrixActions.test.tsx (99%) rename webapp/src/components/common/{MatrixGrid/MatrixActions.tsx => Matrix/components/MatrixActions/index.tsx} (91%) rename webapp/src/components/common/{MatrixGrid/index.test.tsx => Matrix/components/MatrixGrid/MatrixGrid.test.tsx} (91%) rename webapp/src/components/common/{ => Matrix/components}/MatrixGrid/index.tsx (93%) create mode 100644 webapp/src/components/common/Matrix/components/MatrixGrid/styles.ts create mode 100644 webapp/src/components/common/Matrix/core/__tests__/fixtures.ts create mode 100644 webapp/src/components/common/Matrix/core/__tests__/types.ts create mode 100644 webapp/src/components/common/Matrix/core/__tests__/utils.test.ts create mode 100644 webapp/src/components/common/Matrix/core/constants.ts rename webapp/src/components/common/{MatrixGrid => Matrix/core}/types.ts (70%) rename webapp/src/components/common/{MatrixGrid => Matrix/core}/utils.ts (68%) create mode 100644 webapp/src/components/common/Matrix/hooks/useColumnMapping/__tests__/fixtures.ts rename webapp/src/components/common/{MatrixGrid => Matrix/hooks/useColumnMapping/__tests__}/useColumnMapping.test.ts (75%) create mode 100644 webapp/src/components/common/Matrix/hooks/useColumnMapping/__tests__/utils.ts rename webapp/src/components/common/{MatrixGrid/useColumnMapping.ts => Matrix/hooks/useColumnMapping/index.ts} (96%) create mode 100644 webapp/src/components/common/Matrix/hooks/useGridCellContent/__tests__/assertions.ts create mode 100644 webapp/src/components/common/Matrix/hooks/useGridCellContent/__tests__/fixtures.ts create mode 100644 webapp/src/components/common/Matrix/hooks/useGridCellContent/__tests__/useGridCellContent.test.ts create mode 100644 webapp/src/components/common/Matrix/hooks/useGridCellContent/__tests__/utils.ts rename webapp/src/components/common/{MatrixGrid/useGridCellContent.ts => Matrix/hooks/useGridCellContent/index.ts} (95%) create mode 100644 webapp/src/components/common/Matrix/hooks/useGridCellContent/types.ts rename webapp/src/components/common/{MatrixGrid/useMatrix.ts => Matrix/hooks/useMatrix/index.ts} (92%) rename webapp/src/components/common/{MatrixGrid => Matrix/hooks/useMatrix}/useMatrix.test.tsx (69%) rename webapp/src/components/common/{MatrixGrid/useMatrixPortal.ts => Matrix/hooks/useMatrixPortal/index.ts} (100%) rename webapp/src/components/common/{MatrixGrid => Matrix/hooks/useMatrixPortal}/useMatrixPortal.test.tsx (85%) rename webapp/src/components/common/{MatrixGrid/Matrix.tsx => Matrix/index.tsx} (95%) rename webapp/src/components/common/{MatrixGrid/style.ts => Matrix/styles.ts} (100%) delete mode 100644 webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts delete mode 100644 webapp/src/components/common/MatrixGrid/utils.test.ts rename webapp/src/utils/validation/{ => __tests__}/array.test.ts (98%) rename webapp/src/utils/validation/{ => __tests__}/number.test.ts (98%) rename webapp/src/utils/validation/{ => __tests__}/string.test.ts (98%) diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx index 6e0c1b91c0..8c791964ab 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx @@ -12,7 +12,7 @@ * This file is part of the Antares project. */ -import Matrix from "../../../../../common/MatrixGrid/Matrix"; +import Matrix from "../../../../../common/Matrix"; import type { DataCompProps } from "../utils"; function DebugMatrix({ studyId, filename, filePath, canEdit }: DataCompProps) { diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts index 7bb47baffb..96d48cb669 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts @@ -14,7 +14,7 @@ import { StudyMetadata, Area } from "../../../../../../../../common/types"; import client from "../../../../../../../../services/api/client"; -import { MatrixDataDTO } from "../../../../../../../common/MatrixGrid/types"; +import { MatrixDataDTO } from "../../../../../../../common/Matrix/core/types"; import { AreaCoefficientItem } from "../utils"; //////////////////////////////////////////////////////////////// diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts index 5806dd3e9b..0c538682bc 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts @@ -14,7 +14,7 @@ import { StudyMetadata, Area } from "../../../../../../../../common/types"; import client from "../../../../../../../../services/api/client"; -import { MatrixDataDTO } from "../../../../../../../common/MatrixGrid/types"; +import { MatrixDataDTO } from "../../../../../../../common/Matrix/core/types"; import { AreaCoefficientItem } from "../utils"; //////////////////////////////////////////////////////////////// diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx index ff54f64df7..372ae3cfce 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx @@ -15,7 +15,7 @@ import useAppSelector from "../../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../../redux/selectors"; import { MATRICES, HydroMatrixType } from "./utils"; -import Matrix from "../../../../../../common/MatrixGrid/Matrix"; +import Matrix from "../../../../../../common/Matrix"; import { Box } from "@mui/material"; interface Props { diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts index b7d00a68de..735fecd13f 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts @@ -15,7 +15,7 @@ import { MatrixDataDTO, AggregateConfig, -} from "../../../../../../common/MatrixGrid/types"; +} from "../../../../../../common/Matrix/core/types"; import { SplitViewProps } from "../../../../../../common/SplitView"; import { getAllocationMatrix } from "./Allocation/utils"; import { getCorrelationMatrix } from "./Correlation/utils"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx index 2f83633bb7..9581fae79d 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx @@ -14,7 +14,7 @@ import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../redux/selectors"; -import Matrix from "../../../../../common/MatrixGrid/Matrix"; +import Matrix from "../../../../../common/Matrix"; function Load() { const currentArea = useAppSelector(getCurrentAreaId); diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx index ccdba1652e..8cdf4946af 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx @@ -14,7 +14,7 @@ import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../redux/selectors"; -import Matrix from "../../../../../common/MatrixGrid/Matrix"; +import Matrix from "../../../../../common/Matrix"; function MiscGen() { const currentArea = useAppSelector(getCurrentAreaId); diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Matrix.tsx index 70429f1883..47ff9dcf82 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Matrix.tsx @@ -13,7 +13,7 @@ */ import { Cluster } from "../../../../../../../common/types"; -import Matrix from "../../../../../../common/MatrixGrid/Matrix"; +import Matrix from "../../../../../../common/Matrix"; interface Props { areaId: string; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Reserve.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Reserve.tsx index da9d01870e..926286613e 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Reserve.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Reserve.tsx @@ -14,7 +14,7 @@ import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../redux/selectors"; -import Matrix from "../../../../../common/MatrixGrid/Matrix"; +import Matrix from "../../../../../common/Matrix"; function Reserve() { const currentArea = useAppSelector(getCurrentAreaId); diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Solar.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Solar.tsx index 487f4b4e70..7a2a3a8284 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Solar.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Solar.tsx @@ -14,7 +14,7 @@ import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../redux/selectors"; -import Matrix from "../../../../../common/MatrixGrid/Matrix"; +import Matrix from "../../../../../common/Matrix"; function Solar() { const currentArea = useAppSelector(getCurrentAreaId); diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Matrix.tsx index 1062c86138..424d482b57 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Matrix.tsx @@ -23,7 +23,7 @@ import { } from "../../../../../../../common/types"; import { Storage } from "./utils"; import SplitView from "../../../../../../common/SplitView"; -import Matrix from "../../../../../../common/MatrixGrid/Matrix"; +import Matrix from "../../../../../../common/Matrix"; interface Props { study: StudyMetadata; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Matrix.tsx index a2a0924fa7..8d46249fac 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Matrix.tsx @@ -19,7 +19,7 @@ import Box from "@mui/material/Box"; import { useTranslation } from "react-i18next"; import { Cluster, StudyMetadata } from "../../../../../../../common/types"; import { COMMON_MATRIX_COLS, TS_GEN_MATRIX_COLS } from "./utils"; -import Matrix from "../../../../../../common/MatrixGrid/Matrix"; +import Matrix from "../../../../../../common/Matrix"; interface Props { study: StudyMetadata; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Wind.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Wind.tsx index 40e7277c0f..68291addcf 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Wind.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Wind.tsx @@ -14,7 +14,7 @@ import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../redux/selectors"; -import Matrix from "../../../../../common/MatrixGrid/Matrix"; +import Matrix from "../../../../../common/Matrix"; function Wind() { const currentArea = useAppSelector(getCurrentAreaId); diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/Matrix.tsx index 666f3fb82c..03f7bfddf3 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/Matrix.tsx @@ -20,7 +20,7 @@ import { Box, Button } from "@mui/material"; import BasicDialog, { BasicDialogProps, } from "../../../../../../common/dialogs/BasicDialog"; -import Matrix from "../../../../../../common/MatrixGrid/Matrix"; +import Matrix from "../../../../../../common/Matrix"; interface Props { study: StudyMetadata; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkForm.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkForm.tsx index 88d5e389e2..9721b9b82c 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkForm.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkForm.tsx @@ -27,7 +27,7 @@ import SelectFE from "../../../../../../common/fieldEditors/SelectFE"; import LinkMatrixView from "./LinkMatrixView"; import OutputFilters from "../../../common/OutputFilters"; import { useFormContextPlus } from "../../../../../../common/Form"; -import Matrix from "../../../../../../common/MatrixGrid/Matrix"; +import Matrix from "../../../../../../common/Matrix"; interface Props { link: LinkElement; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkMatrixView.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkMatrixView.tsx index 503b6c3bd1..ce0960ac7d 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkMatrixView.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkMatrixView.tsx @@ -19,7 +19,7 @@ import Box from "@mui/material/Box"; import { useTranslation } from "react-i18next"; import { MatrixItem, StudyMetadata } from "../../../../../../../common/types"; import SplitView from "../../../../../../common/SplitView"; -import Matrix from "../../../../../../common/MatrixGrid/Matrix"; +import Matrix from "../../../../../../common/Matrix"; interface Props { study: StudyMetadata; diff --git a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx index fbcfedfe9c..ea82685854 100644 --- a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx @@ -53,12 +53,12 @@ import UsePromiseCond, { } from "../../../../../common/utils/UsePromiseCond"; import useStudySynthesis from "../../../../../../redux/hooks/useStudySynthesis"; import ButtonBack from "../../../../../common/ButtonBack"; -import MatrixGrid from "../../../../../common/MatrixGrid/index.tsx"; +import MatrixGrid from "../../../../../common/Matrix/components/MatrixGrid/index.tsx"; import { generateCustomColumns, generateDateTime, -} from "../../../../../common/MatrixGrid/utils.ts"; -import { Column } from "../../../../../common/MatrixGrid/types.ts"; +} from "../../../../../common/Matrix/core/utils.ts"; +import { Column } from "@/components/common/Matrix/core/constants.ts"; import SplitView from "../../../../../common/SplitView/index.tsx"; import ResultFilters from "./ResultFilters.tsx"; import { toError } from "../../../../../../utils/fnUtils.ts"; diff --git a/webapp/src/components/common/MatrixGrid/MatrixActions.test.tsx b/webapp/src/components/common/Matrix/components/MatrixActions/MatrixActions.test.tsx similarity index 99% rename from webapp/src/components/common/MatrixGrid/MatrixActions.test.tsx rename to webapp/src/components/common/Matrix/components/MatrixActions/MatrixActions.test.tsx index 487959168d..f2077c21aa 100644 --- a/webapp/src/components/common/MatrixGrid/MatrixActions.test.tsx +++ b/webapp/src/components/common/Matrix/components/MatrixActions/MatrixActions.test.tsx @@ -15,7 +15,7 @@ import React from "react"; import { render, screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; -import MatrixActions from "./MatrixActions"; +import MatrixActions from "."; vi.mock("../buttons/SplitButton", () => ({ default: ({ diff --git a/webapp/src/components/common/MatrixGrid/MatrixActions.tsx b/webapp/src/components/common/Matrix/components/MatrixActions/index.tsx similarity index 91% rename from webapp/src/components/common/MatrixGrid/MatrixActions.tsx rename to webapp/src/components/common/Matrix/components/MatrixActions/index.tsx index d822c13f69..b5faa9b785 100644 --- a/webapp/src/components/common/MatrixGrid/MatrixActions.tsx +++ b/webapp/src/components/common/Matrix/components/MatrixActions/index.tsx @@ -13,13 +13,11 @@ */ import { Box, Divider, IconButton, Tooltip } from "@mui/material"; -import SplitButton from "../buttons/SplitButton"; -import FileDownload from "@mui/icons-material/FileDownload"; +import SplitButton from "@/components/common/buttons/SplitButton"; +import DownloadMatrixButton from "@/components/common/buttons/DownloadMatrixButton"; +import { FileDownload, Save, Undo, Redo } from "@mui/icons-material"; import { useTranslation } from "react-i18next"; import { LoadingButton } from "@mui/lab"; -import Save from "@mui/icons-material/Save"; -import { Undo, Redo } from "@mui/icons-material"; -import DownloadMatrixButton from "../buttons/DownloadMatrixButton"; interface MatrixActionsProps { onImport: VoidFunction; diff --git a/webapp/src/components/common/MatrixGrid/index.test.tsx b/webapp/src/components/common/Matrix/components/MatrixGrid/MatrixGrid.test.tsx similarity index 91% rename from webapp/src/components/common/MatrixGrid/index.test.tsx rename to webapp/src/components/common/Matrix/components/MatrixGrid/MatrixGrid.test.tsx index 81cf7f8ebd..5a9325f7f9 100644 --- a/webapp/src/components/common/MatrixGrid/index.test.tsx +++ b/webapp/src/components/common/Matrix/components/MatrixGrid/MatrixGrid.test.tsx @@ -15,11 +15,20 @@ import { render } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import Box from "@mui/material/Box"; -import MatrixGrid from "."; -import SplitView from "../SplitView"; -import { type EnhancedGridColumn, Column, RenderMatrixOptions } from "./types"; -import { mockGetBoundingClientRect } from "../../../tests/mocks/mockGetBoundingClientRect"; -import { mockHTMLCanvasElement } from "../../../tests/mocks/mockHTMLCanvasElement"; +import MatrixGrid, { MatrixGridProps } from "."; +import SplitView from "../../../SplitView"; +import type { EnhancedGridColumn } from "../../core/types"; +import { mockGetBoundingClientRect } from "../../../../../tests/mocks/mockGetBoundingClientRect"; +import { mockHTMLCanvasElement } from "../../../../../tests/mocks/mockHTMLCanvasElement"; +import { Column } from "../../core/constants"; + +interface RenderMatrixOptions { + width?: string; + height?: string; + data?: MatrixGridProps["data"]; + columns?: EnhancedGridColumn[]; + rows?: number; +} const setupMocks = () => { mockHTMLCanvasElement(); diff --git a/webapp/src/components/common/MatrixGrid/index.tsx b/webapp/src/components/common/Matrix/components/MatrixGrid/index.tsx similarity index 93% rename from webapp/src/components/common/MatrixGrid/index.tsx rename to webapp/src/components/common/Matrix/components/MatrixGrid/index.tsx index 51ce67b3a0..73395dd7bc 100644 --- a/webapp/src/components/common/MatrixGrid/index.tsx +++ b/webapp/src/components/common/Matrix/components/MatrixGrid/index.tsx @@ -22,12 +22,16 @@ import DataEditor, { GridSelection, Item, } from "@glideapps/glide-data-grid"; -import { useGridCellContent } from "./useGridCellContent"; +import { useGridCellContent } from "../../hooks/useGridCellContent"; import { useMemo, useState } from "react"; -import { EnhancedGridColumn, GridUpdate, MatrixAggregates } from "./types"; -import { darkTheme, readOnlyDarkTheme } from "./utils"; -import { useColumnMapping } from "./useColumnMapping"; -import { useMatrixPortal } from "./useMatrixPortal"; +import { + type EnhancedGridColumn, + type GridUpdate, + type MatrixAggregates, +} from "../../core/types"; +import { useColumnMapping } from "../../hooks/useColumnMapping"; +import { useMatrixPortal } from "../../hooks/useMatrixPortal"; +import { darkTheme, readOnlyDarkTheme } from "./styles"; export interface MatrixGridProps { data: number[][]; diff --git a/webapp/src/components/common/Matrix/components/MatrixGrid/styles.ts b/webapp/src/components/common/Matrix/components/MatrixGrid/styles.ts new file mode 100644 index 0000000000..ba084c94cb --- /dev/null +++ b/webapp/src/components/common/Matrix/components/MatrixGrid/styles.ts @@ -0,0 +1,72 @@ +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + +import { Theme } from "@glideapps/glide-data-grid"; + +export const darkTheme: Theme = { + accentColor: "rgba(255, 184, 0, 0.9)", + accentLight: "rgba(255, 184, 0, 0.2)", + accentFg: "#FFFFFF", + textDark: "#FFFFFF", + textMedium: "#C1C3D9", + textLight: "#A1A5B9", + textBubble: "#FFFFFF", + bgIconHeader: "#1E1F2E", + fgIconHeader: "#FFFFFF", + textHeader: "#FFFFFF", + textGroupHeader: "#C1C3D9", + bgCell: "#262737", // main background color + bgCellMedium: "#2E2F42", + bgHeader: "#1E1F2E", + bgHeaderHasFocus: "#2E2F42", + bgHeaderHovered: "#333447", + bgBubble: "#333447", + bgBubbleSelected: "#3C3E57", + bgSearchResult: "#6366F133", + borderColor: "rgba(255, 255, 255, 0.12)", + drilldownBorder: "rgba(255, 255, 255, 0.35)", + linkColor: "#818CF8", + headerFontStyle: "bold 11px", + baseFontStyle: "13px", + fontFamily: "Inter, sans-serif", + editorFontSize: "13px", + lineHeight: 1.5, + textHeaderSelected: "#FFFFFF", + cellHorizontalPadding: 8, + cellVerticalPadding: 5, + headerIconSize: 16, + markerFontStyle: "normal", +}; + +export const readOnlyDarkTheme: Partial = { + bgCell: "#1A1C2A", + bgCellMedium: "#22243A", + textDark: "#FAF9F6", + textMedium: "#808080", + textLight: "#606060", + accentColor: "#4A4C66", + accentLight: "rgba(74, 76, 102, 0.2)", + borderColor: "rgba(255, 255, 255, 0.08)", + drilldownBorder: "rgba(255, 255, 255, 0.2)", +}; + +export const aggregatesTheme: Partial = { + bgCell: "#3D3E5F", + bgCellMedium: "#383A5C", + textDark: "#FFFFFF", + fontFamily: "Inter, sans-serif", + baseFontStyle: "bold 13px", + editorFontSize: "13px", + headerFontStyle: "bold 11px", +}; diff --git a/webapp/src/components/common/Matrix/core/__tests__/fixtures.ts b/webapp/src/components/common/Matrix/core/__tests__/fixtures.ts new file mode 100644 index 0000000000..c6a728b816 --- /dev/null +++ b/webapp/src/components/common/Matrix/core/__tests__/fixtures.ts @@ -0,0 +1,214 @@ +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + +import { Aggregate, TimeFrequency } from "../constants"; +import { FormatTestCase } from "./types"; + +export const BASE_DATA = { + dateConfig: { + start_date: "2023-01-01 00:00:00", + steps: 3, + first_week_size: 7, + }, + matrix: [ + [1, 2, 3], + [4, 5, 6], + [7, 8, 9], + ], +}; + +export const DATE_TIME_TEST_CASES = [ + { + name: "annual format", + config: { ...BASE_DATA.dateConfig, level: TimeFrequency.Annual }, + expected: [ + "global.time.annual", + "global.time.annual", + "global.time.annual", + ], + }, + { + name: "monthly format", + config: { ...BASE_DATA.dateConfig, level: TimeFrequency.Monthly }, + expected: ["Jan", "Feb", "Mar"], + }, + { + name: "weekly format", + config: { + ...BASE_DATA.dateConfig, + level: TimeFrequency.Weekly, + first_week_size: 1, + }, + expected: ["W. 01", "W. 02", "W. 03"], + }, + { + name: "daily format", + config: { ...BASE_DATA.dateConfig, level: TimeFrequency.Daily }, + expected: ["Sun 1 Jan", "Mon 2 Jan", "Tue 3 Jan"], + }, + { + name: "hourly format", + config: { + start_date: "2039-07-01 00:00:00", + steps: 3, + first_week_size: 7, + level: TimeFrequency.Hourly, + }, + expected: ["Fri 1 Jul 00:00", "Fri 1 Jul 01:00", "Fri 1 Jul 02:00"], + }, +]; + +export const COLUMN_TEST_CASES = [ + { + name: "default options", + input: { count: 3 }, + expectedLength: 3, + }, + { + name: "custom options", + input: { count: 2, startIndex: 10, prefix: "Data", editable: false }, + expectedLength: 2, + }, + { + name: "zero count", + input: { count: 0 }, + expectedLength: 0, + }, + { + name: "large count", + input: { count: 1000 }, + expectedLength: 1000, + }, +]; + +export const AGGREGATE_TEST_CASES = [ + { + name: "simple matrix with all aggregates", + matrix: BASE_DATA.matrix, + aggregates: "all" as const, + expected: { + min: [1, 4, 7], + max: [3, 6, 9], + avg: [2, 5, 8], + total: [6, 15, 24], + }, + }, + { + name: "decimal numbers", + matrix: [ + [1.1, 2.2, 3.3], + [4.4, 5.5, 6.6], + ], + aggregates: "all" as const, + expected: { + min: [1.1, 4.4], + max: [3.3, 6.6], + avg: [2, 6], + total: [7, 17], + }, + }, + { + name: "negative numbers", + matrix: [ + [-1, -2, -3], + [-4, 0, 4], + ], + aggregates: "all" as const, + expected: { + min: [-3, -4], + max: [-1, 4], + avg: [-2, 0], + total: [-6, 0], + }, + }, +]; + +export const FORMAT_TEST_CASES: Array<{ + name: string; + cases: FormatTestCase[]; +}> = [ + { + name: "integer numbers", + cases: [ + { + description: "formats large number", + value: 1234567, + expected: "1 234 567", + }, + { + description: "formats million", + value: 1000000, + expected: "1 000 000", + }, + { description: "formats single digit", value: 1, expected: "1" }, + ], + }, + { + name: "decimal numbers", + cases: [ + { + description: "formats with 2 decimals", + value: 1234.56, + maxDecimals: 2, + expected: "1 234.56", + }, + { + description: "formats with 3 decimals", + value: 1000000.123, + maxDecimals: 3, + expected: "1 000 000.123", + }, + ], + }, + { + name: "special cases", + cases: [ + { + description: "handles undefined", + value: undefined, + maxDecimals: 3, + expected: "", + }, + { description: "handles zero", value: 0, expected: "0" }, + { + description: "handles negative", + value: -1234567, + expected: "-1 234 567", + }, + { + description: "handles very large number", + value: 1e20, + expected: "100 000 000 000 000 000 000", + }, + ], + }, +]; + +export const AGGREGATE_CONFIG_CASES = [ + { + name: "stats configuration", + aggregates: "stats" as const, + expected: [Aggregate.Avg, Aggregate.Min, Aggregate.Max], + }, + { + name: "all configuration", + aggregates: "all" as const, + expected: [Aggregate.Min, Aggregate.Max, Aggregate.Avg, Aggregate.Total], + }, + { + name: "custom configuration", + aggregates: [Aggregate.Min, Aggregate.Max], + expected: [Aggregate.Min, Aggregate.Max], + }, +]; diff --git a/webapp/src/components/common/Matrix/core/__tests__/types.ts b/webapp/src/components/common/Matrix/core/__tests__/types.ts new file mode 100644 index 0000000000..72310190b6 --- /dev/null +++ b/webapp/src/components/common/Matrix/core/__tests__/types.ts @@ -0,0 +1,20 @@ +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + +export interface FormatTestCase { + description: string; + value: number | undefined; + maxDecimals?: number; + expected: string; +} diff --git a/webapp/src/components/common/Matrix/core/__tests__/utils.test.ts b/webapp/src/components/common/Matrix/core/__tests__/utils.test.ts new file mode 100644 index 0000000000..847541d3b3 --- /dev/null +++ b/webapp/src/components/common/Matrix/core/__tests__/utils.test.ts @@ -0,0 +1,138 @@ +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + +import { Column } from "../constants"; +import { + calculateMatrixAggregates, + formatNumber, + generateCustomColumns, + generateDateTime, + generateTimeSeriesColumns, + getAggregateTypes, +} from "../utils"; +import { + DATE_TIME_TEST_CASES, + COLUMN_TEST_CASES, + AGGREGATE_TEST_CASES, + FORMAT_TEST_CASES, + AGGREGATE_CONFIG_CASES, +} from "./fixtures"; + +describe("Matrix Utils", () => { + beforeAll(() => { + vi.mock("date-fns", async () => { + const actual = (await vi.importActual( + "date-fns", + )) as typeof import("date-fns"); + return { + ...actual, + format: vi.fn((date: Date, formatString: string) => { + if (formatString.includes("ww")) { + const weekNumber = actual.getWeek(date); + return `W. ${weekNumber.toString().padStart(2, "0")}`; + } + return actual.format(date, formatString); + }), + }; + }); + vi.useFakeTimers(); + vi.setSystemTime(new Date("2023-01-01 00:00:00")); + }); + + describe("DateTime Generation", () => { + test.each(DATE_TIME_TEST_CASES)( + "generates correct $name", + ({ config, expected }) => { + const result = generateDateTime(config); + expect(result).toEqual(expected); + }, + ); + }); + + describe("Time Series Column Generation", () => { + test.each(COLUMN_TEST_CASES)( + "handles $name correctly", + ({ input, expectedLength }) => { + const result = generateTimeSeriesColumns(input); + expect(result).toHaveLength(expectedLength); + + if (expectedLength > 0) { + if (input.startIndex) { + expect(result[0].id).toBe(`data${input.startIndex}`); + expect(result[0].title).toBe( + `${input.prefix || "TS"} ${input.startIndex}`, + ); + } else { + expect(result[0]).toEqual({ + id: "data1", + title: "TS 1", + type: Column.Number, + style: "normal", + editable: input.editable ?? true, + }); + } + } + }, + ); + }); + + describe("Matrix Aggregates Calculation", () => { + test.each(AGGREGATE_TEST_CASES)( + "calculates $name correctly", + ({ matrix, aggregates, expected }) => { + const aggregatesTypes = getAggregateTypes(aggregates); + const result = calculateMatrixAggregates(matrix, aggregatesTypes); + expect(result).toEqual(expected); + }, + ); + }); + + describe("Number Formatting", () => { + describe.each(FORMAT_TEST_CASES)("$name", ({ cases }) => { + test.each(cases)("$description", ({ value, maxDecimals, expected }) => { + expect(formatNumber({ value, maxDecimals })).toBe(expected); + }); + }); + }); + + describe("Custom Column Generation", () => { + test("generates columns with correct properties", () => { + const titles = ["Custom 1", "Custom 2", "Custom 3"]; + const width = 100; + + const result = generateCustomColumns({ titles, width }); + expect(result).toHaveLength(3); + + result.forEach((column, index) => { + expect(column).toEqual({ + id: `custom${index + 1}`, + title: titles[index], + type: Column.Number, + style: "normal", + width, + editable: true, + }); + }); + }); + }); + + describe("Aggregate Type Configuration", () => { + test.each(AGGREGATE_CONFIG_CASES)( + "handles $name correctly", + ({ aggregates, expected }) => { + expect(getAggregateTypes(aggregates)).toEqual(expected); + }, + ); + }); +}); diff --git a/webapp/src/components/common/Matrix/core/constants.ts b/webapp/src/components/common/Matrix/core/constants.ts new file mode 100644 index 0000000000..026d91bcf3 --- /dev/null +++ b/webapp/src/components/common/Matrix/core/constants.ts @@ -0,0 +1,116 @@ +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + +import { + DateIncrementFunction, + FormatFunction, + TimeFrequencyType, +} from "./types"; +import { + addYears, + addMonths, + addWeeks, + startOfWeek, + FirstWeekContainsDate, + addDays, + addHours, + format, +} from "date-fns"; +import { t } from "i18next"; +import { getLocale } from "./utils"; + +//////////////////////////////////////////////////////////////// +// Enums +//////////////////////////////////////////////////////////////// + +export const Column = { + DateTime: "datetime", + Number: "number", + Text: "text", + Aggregate: "aggregate", +} as const; + +export const Operation = { + Add: "+", + Sub: "-", + Mul: "*", + Div: "/", + Abs: "ABS", + Eq: "=", +} as const; + +// !NOTE: Keep lowercase to match Glide Data Grid column ids +export const Aggregate = { + Min: "min", + Max: "max", + Avg: "avg", + Total: "total", +} as const; + +export const TimeFrequency = { + Annual: "annual", + Monthly: "monthly", + Weekly: "weekly", + Daily: "daily", + Hourly: "hourly", +} as const; + +//////////////////////////////////////////////////////////////// +// Constants +//////////////////////////////////////////////////////////////// + +/** + * Configuration object for different time frequencies + * + * This object defines how to increment and format dates for various time frequencies. + * The WEEKLY frequency is of particular interest as it implements custom week starts + * and handles ISO week numbering. + */ +export const TIME_FREQUENCY_CONFIG: Record< + TimeFrequencyType, + { + increment: DateIncrementFunction; + format: FormatFunction; + } +> = { + [TimeFrequency.Annual]: { + increment: addYears, + format: () => t("global.time.annual"), + }, + [TimeFrequency.Monthly]: { + increment: addMonths, + format: (date: Date) => format(date, "MMM", { locale: getLocale() }), + }, + [TimeFrequency.Weekly]: { + increment: addWeeks, + format: (date: Date, firstWeekSize: number) => { + const weekStart = startOfWeek(date, { locale: getLocale() }); + + return format(weekStart, `'${t("global.time.weekShort")}' ww`, { + locale: getLocale(), + weekStartsOn: firstWeekSize === 1 ? 0 : 1, + firstWeekContainsDate: firstWeekSize as FirstWeekContainsDate, + }); + }, + }, + [TimeFrequency.Daily]: { + increment: addDays, + format: (date: Date) => format(date, "EEE d MMM", { locale: getLocale() }), + }, + [TimeFrequency.Hourly]: { + increment: addHours, + format: (date: Date) => + format(date, "EEE d MMM HH:mm", { locale: getLocale() }), + }, +}; diff --git a/webapp/src/components/common/MatrixGrid/types.ts b/webapp/src/components/common/Matrix/core/types.ts similarity index 70% rename from webapp/src/components/common/MatrixGrid/types.ts rename to webapp/src/components/common/Matrix/core/types.ts index 4e6d60d6e8..8e0b1f25c2 100644 --- a/webapp/src/components/common/MatrixGrid/types.ts +++ b/webapp/src/components/common/Matrix/core/types.ts @@ -17,47 +17,7 @@ import { EditableGridCell, Item, } from "@glideapps/glide-data-grid"; -import { MatrixGridProps } from "."; - -//////////////////////////////////////////////////////////////// -// Enums -//////////////////////////////////////////////////////////////// - -export const Column = { - DateTime: "datetime", - Number: "number", - Text: "text", - Aggregate: "aggregate", -} as const; - -export const Operation = { - Add: "+", - Sub: "-", - Mul: "*", - Div: "/", - Abs: "ABS", - Eq: "=", -} as const; - -// !NOTE: Keep lowercase to match Glide Data Grid column ids -export const Aggregate = { - Min: "min", - Max: "max", - Avg: "avg", - Total: "total", -} as const; - -export const TimeFrequency = { - Annual: "annual", - Monthly: "monthly", - Weekly: "weekly", - Daily: "daily", - Hourly: "hourly", -} as const; - -//////////////////////////////////////////////////////////////// -// Types -//////////////////////////////////////////////////////////////// +import { Aggregate, Column, Operation, TimeFrequency } from "./constants"; // Derived types export type ColumnType = (typeof Column)[keyof typeof Column]; @@ -138,11 +98,3 @@ export interface MatrixUpdateDTO { coordinates: number[][]; // Array of [col, row] pairs operation: MatrixUpdate; } - -export interface RenderMatrixOptions { - width?: string; - height?: string; - data?: MatrixGridProps["data"]; - columns?: EnhancedGridColumn[]; - rows?: number; -} diff --git a/webapp/src/components/common/MatrixGrid/utils.ts b/webapp/src/components/common/Matrix/core/utils.ts similarity index 68% rename from webapp/src/components/common/MatrixGrid/utils.ts rename to webapp/src/components/common/Matrix/core/utils.ts index 9b45a91745..a2738a7a1d 100644 --- a/webapp/src/components/common/MatrixGrid/utils.ts +++ b/webapp/src/components/common/Matrix/core/utils.ts @@ -13,98 +13,19 @@ */ import { - EnhancedGridColumn, - TimeSeriesColumnOptions, - CustomColumnOptions, - MatrixAggregates, - AggregateType, - AggregateConfig, - DateIncrementFunction, - FormatFunction, - TimeFrequency, - TimeFrequencyType, - DateTimeMetadataDTO, - Aggregate, - Column, - FormatNumberOptions, -} from "./types"; -import { - type FirstWeekContainsDate, - parseISO, - addHours, - addDays, - addWeeks, - addMonths, - addYears, - format, - startOfWeek, - Locale, -} from "date-fns"; + type EnhancedGridColumn, + type TimeSeriesColumnOptions, + type CustomColumnOptions, + type MatrixAggregates, + type AggregateType, + type AggregateConfig, + type DateTimeMetadataDTO, + type FormatNumberOptions, +} from "../core/types"; +import { parseISO, Locale } from "date-fns"; import { fr, enUS } from "date-fns/locale"; -import { getCurrentLanguage } from "../../../utils/i18nUtils"; -import { Theme } from "@glideapps/glide-data-grid"; -import { t } from "i18next"; - -export const darkTheme: Theme = { - accentColor: "rgba(255, 184, 0, 0.9)", - accentLight: "rgba(255, 184, 0, 0.2)", - accentFg: "#FFFFFF", - textDark: "#FFFFFF", - textMedium: "#C1C3D9", - textLight: "#A1A5B9", - textBubble: "#FFFFFF", - bgIconHeader: "#1E1F2E", - fgIconHeader: "#FFFFFF", - textHeader: "#FFFFFF", - textGroupHeader: "#C1C3D9", - bgCell: "#262737", // main background color - bgCellMedium: "#2E2F42", - bgHeader: "#1E1F2E", - bgHeaderHasFocus: "#2E2F42", - bgHeaderHovered: "#333447", - bgBubble: "#333447", - bgBubbleSelected: "#3C3E57", - bgSearchResult: "#6366F133", - borderColor: "rgba(255, 255, 255, 0.12)", - drilldownBorder: "rgba(255, 255, 255, 0.35)", - linkColor: "#818CF8", - headerFontStyle: "bold 11px", - baseFontStyle: "13px", - fontFamily: "Inter, sans-serif", - editorFontSize: "13px", - lineHeight: 1.5, - textHeaderSelected: "#FFFFFF", - cellHorizontalPadding: 8, - cellVerticalPadding: 5, - headerIconSize: 16, - markerFontStyle: "normal", -}; - -export const readOnlyDarkTheme: Partial = { - bgCell: "#1A1C2A", - bgCellMedium: "#22243A", - textDark: "#FAF9F6", - textMedium: "#808080", - textLight: "#606060", - accentColor: "#4A4C66", - accentLight: "rgba(74, 76, 102, 0.2)", - borderColor: "rgba(255, 255, 255, 0.08)", - drilldownBorder: "rgba(255, 255, 255, 0.2)", -}; - -export const aggregatesTheme: Partial = { - bgCell: "#3D3E5F", - bgCellMedium: "#383A5C", - textDark: "#FFFFFF", - fontFamily: "Inter, sans-serif", - baseFontStyle: "bold 13px", - editorFontSize: "13px", - headerFontStyle: "bold 11px", -}; - -//////////////////////////////////////////////////////////////// -// Functions -//////////////////////////////////////////////////////////////// +import { getCurrentLanguage } from "@/utils/i18nUtils"; +import { Aggregate, Column, TIME_FREQUENCY_CONFIG } from "./constants"; /** * Formats a number by adding thousand separators. @@ -153,55 +74,16 @@ export function formatNumber({ return decimalPart ? `${formattedInteger}.${decimalPart}` : formattedInteger; } -function getLocale(): Locale { - const lang = getCurrentLanguage(); - return lang && lang.startsWith("fr") ? fr : enUS; -} - /** - * Configuration object for different time frequencies + * Retrieves the current locale based on the user's language setting. * - * This object defines how to increment and format dates for various time frequencies. - * The WEEKLY frequency is of particular interest as it implements custom week starts - * and handles ISO week numbering. + * @returns Returns either the French (fr) or English US (enUS) locale object + * depending on whether the current language starts with "fr" */ -const TIME_FREQUENCY_CONFIG: Record< - TimeFrequencyType, - { - increment: DateIncrementFunction; - format: FormatFunction; - } -> = { - [TimeFrequency.Annual]: { - increment: addYears, - format: () => t("global.time.annual"), - }, - [TimeFrequency.Monthly]: { - increment: addMonths, - format: (date: Date) => format(date, "MMM", { locale: getLocale() }), - }, - [TimeFrequency.Weekly]: { - increment: addWeeks, - format: (date: Date, firstWeekSize: number) => { - const weekStart = startOfWeek(date, { locale: getLocale() }); - - return format(weekStart, `'${t("global.time.weekShort")}' ww`, { - locale: getLocale(), - weekStartsOn: firstWeekSize === 1 ? 0 : 1, - firstWeekContainsDate: firstWeekSize as FirstWeekContainsDate, - }); - }, - }, - [TimeFrequency.Daily]: { - increment: addDays, - format: (date: Date) => format(date, "EEE d MMM", { locale: getLocale() }), - }, - [TimeFrequency.Hourly]: { - increment: addHours, - format: (date: Date) => - format(date, "EEE d MMM HH:mm", { locale: getLocale() }), - }, -}; +export function getLocale(): Locale { + const lang = getCurrentLanguage(); + return lang && lang.startsWith("fr") ? fr : enUS; +} /** * Generates an array of formatted date/time strings based on the provided configuration diff --git a/webapp/src/components/common/Matrix/hooks/useColumnMapping/__tests__/fixtures.ts b/webapp/src/components/common/Matrix/hooks/useColumnMapping/__tests__/fixtures.ts new file mode 100644 index 0000000000..af74b0f068 --- /dev/null +++ b/webapp/src/components/common/Matrix/hooks/useColumnMapping/__tests__/fixtures.ts @@ -0,0 +1,31 @@ +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + +import { Column } from "../../../core/constants"; +import { createColumn, createNumericColumn } from "./utils"; + +export const COLUMNS = { + mixed: [ + createColumn("text", Column.Text), + createColumn("date", Column.DateTime), + createNumericColumn("num1"), + createNumericColumn("num2"), + createColumn("agg", Column.Aggregate), + ], + nonData: [ + createColumn("text", Column.Text), + createColumn("date", Column.DateTime), + ], + dataOnly: [createNumericColumn("num1"), createNumericColumn("num2")], +}; diff --git a/webapp/src/components/common/MatrixGrid/useColumnMapping.test.ts b/webapp/src/components/common/Matrix/hooks/useColumnMapping/__tests__/useColumnMapping.test.ts similarity index 75% rename from webapp/src/components/common/MatrixGrid/useColumnMapping.test.ts rename to webapp/src/components/common/Matrix/hooks/useColumnMapping/__tests__/useColumnMapping.test.ts index 45a8913826..8d16c51b0d 100644 --- a/webapp/src/components/common/MatrixGrid/useColumnMapping.test.ts +++ b/webapp/src/components/common/Matrix/hooks/useColumnMapping/__tests__/useColumnMapping.test.ts @@ -13,51 +13,12 @@ */ import { renderHook } from "@testing-library/react"; -import { useColumnMapping } from "./useColumnMapping"; -import { EnhancedGridColumn, Column } from "./types"; -import type { ColumnType } from "./types"; +import { useColumnMapping } from ".."; import { Item } from "@glideapps/glide-data-grid"; +import { createCoordinate, renderColumnMapping } from "./utils"; +import { COLUMNS } from "./fixtures"; describe("useColumnMapping", () => { - // Test data factories - const createColumn = ( - id: string, - type: ColumnType, - editable = false, - ): EnhancedGridColumn => ({ - id, - title: id.charAt(0).toUpperCase() + id.slice(1), - type, - width: 100, - editable, - }); - - const createNumericColumn = (id: string) => - createColumn(id, Column.Number, true); - - const COLUMNS = { - mixed: [ - createColumn("text", Column.Text), - createColumn("date", Column.DateTime), - createNumericColumn("num1"), - createNumericColumn("num2"), - createColumn("agg", Column.Aggregate), - ], - nonData: [ - createColumn("text", Column.Text), - createColumn("date", Column.DateTime), - ], - dataOnly: [createNumericColumn("num1"), createNumericColumn("num2")], - }; - - // Helper function to create properly typed coordinates - const createCoordinate = (col: number, row: number): Item => - [col, row] as Item; - - // Helper function to render the hook - const renderColumnMapping = (columns: EnhancedGridColumn[]) => - renderHook(() => useColumnMapping(columns)); - describe("hook initialization", () => { test("should create mapping functions", () => { const { result } = renderColumnMapping(COLUMNS.mixed); diff --git a/webapp/src/components/common/Matrix/hooks/useColumnMapping/__tests__/utils.ts b/webapp/src/components/common/Matrix/hooks/useColumnMapping/__tests__/utils.ts new file mode 100644 index 0000000000..8425d789ff --- /dev/null +++ b/webapp/src/components/common/Matrix/hooks/useColumnMapping/__tests__/utils.ts @@ -0,0 +1,40 @@ +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + +import { Item } from "@glideapps/glide-data-grid"; +import { renderHook } from "@testing-library/react"; +import type { ColumnType, EnhancedGridColumn } from "../../../core/types"; +import { useColumnMapping } from ".."; +import { Column } from "../../../core/constants"; + +export const createCoordinate = (col: number, row: number): Item => + [col, row] as Item; + +export const createColumn = ( + id: string, + type: ColumnType, + editable = false, +): EnhancedGridColumn => ({ + id, + title: id.charAt(0).toUpperCase() + id.slice(1), + type, + width: 100, + editable, +}); + +export const createNumericColumn = (id: string) => + createColumn(id, Column.Number, true); + +export const renderColumnMapping = (columns: EnhancedGridColumn[]) => + renderHook(() => useColumnMapping(columns)); diff --git a/webapp/src/components/common/MatrixGrid/useColumnMapping.ts b/webapp/src/components/common/Matrix/hooks/useColumnMapping/index.ts similarity index 96% rename from webapp/src/components/common/MatrixGrid/useColumnMapping.ts rename to webapp/src/components/common/Matrix/hooks/useColumnMapping/index.ts index ffbf683965..1c10019ca7 100644 --- a/webapp/src/components/common/MatrixGrid/useColumnMapping.ts +++ b/webapp/src/components/common/Matrix/hooks/useColumnMapping/index.ts @@ -14,7 +14,8 @@ import { useMemo } from "react"; import { Item } from "@glideapps/glide-data-grid"; -import { EnhancedGridColumn, Column } from "./types"; +import { EnhancedGridColumn } from "../../core/types"; +import { Column } from "../../core/constants"; /** * A custom hook that provides coordinate mapping functions for a grid with mixed column types. diff --git a/webapp/src/components/common/Matrix/hooks/useGridCellContent/__tests__/assertions.ts b/webapp/src/components/common/Matrix/hooks/useGridCellContent/__tests__/assertions.ts new file mode 100644 index 0000000000..4311c9085d --- /dev/null +++ b/webapp/src/components/common/Matrix/hooks/useGridCellContent/__tests__/assertions.ts @@ -0,0 +1,51 @@ +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + +import { GridCell } from "@glideapps/glide-data-grid"; + +export const assertNumberCell = ( + cell: GridCell, + expectedValue: number | undefined, + message: string, +) => { + if (cell.kind === "number" && "data" in cell) { + expect(cell.data).toBe(expectedValue); + } else { + throw new Error(message); + } +}; + +export const assertTextCell = ( + cell: GridCell, + expectedValue: string, + message: string, +) => { + if (cell.kind === "text" && "displayData" in cell) { + expect(cell.displayData).toBe(expectedValue); + } else { + throw new Error(message); + } +}; + +export const assertDateCell = ( + cell: GridCell, + expectedValue: string, + message: string, +) => { + if (cell.kind === "text" && "displayData" in cell) { + expect(cell.displayData).toBe(expectedValue); + } else { + throw new Error(message); + } +}; diff --git a/webapp/src/components/common/Matrix/hooks/useGridCellContent/__tests__/fixtures.ts b/webapp/src/components/common/Matrix/hooks/useGridCellContent/__tests__/fixtures.ts new file mode 100644 index 0000000000..e9331696cb --- /dev/null +++ b/webapp/src/components/common/Matrix/hooks/useGridCellContent/__tests__/fixtures.ts @@ -0,0 +1,105 @@ +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + +import type { ColumnType, EnhancedGridColumn } from "../../../core/types"; +import { Column } from "../../../core/constants"; +import type { TestCase } from "../types"; + +export const createColumn = ( + id: string, + type: ColumnType, + editable = false, +): EnhancedGridColumn => ({ + id, + title: id.charAt(0).toUpperCase() + id.slice(1), + type, + width: type === Column.DateTime ? 150 : 50, + editable, +}); + +export const AGGREGATE_DATA = { + columns: [createColumn("total", Column.Aggregate)], + data: [ + [10, 20, 30], + [15, 25, 35], + [5, 15, 25], + ], + aggregates: { + min: [5, 15, 25], + max: [15, 25, 35], + avg: [10, 20, 30], + total: [30, 60, 90], + }, +}; + +export const MIXED_DATA = { + columns: [ + createColumn("rowHeader", Column.Text), + createColumn("date", Column.DateTime), + createColumn("data1", Column.Number, true), + createColumn("data2", Column.Number, true), + createColumn("total", Column.Aggregate), + ], + data: [ + [100, 200], + [150, 250], + ], + dateTime: ["2024-01-01T00:00:00Z", "2024-01-02T00:00:00Z"], + rowHeaders: ["Row 1", "Row 2"], + aggregates: { + min: [100, 200], + max: [150, 250], + avg: [125, 225], + total: [250, 450], + }, +}; + +export const EDGE_CASES = { + emptyData: { + columns: [createColumn("data1", Column.Number, true)], + data: [], + }, + singleCell: { + columns: [createColumn("data1", Column.Number, true)], + data: [[100]], + }, +}; + +export const FORMAT_TEST_CASES: TestCase[] = [ + { + desc: "formats regular numbers", + value: 1234567.89, + expected: "1 234 567.89", + }, + { + desc: "handles very large numbers", + value: 1e20, + expected: "100 000 000 000 000 000 000", + }, + { + desc: "handles very small numbers", + value: 0.00001, + expected: "0.00001", + }, + { + desc: "handles negative numbers", + value: -1234567.89, + expected: "-1 234 567.89", + }, + { + desc: "handles zero", + value: 0, + expected: "0", + }, +]; diff --git a/webapp/src/components/common/Matrix/hooks/useGridCellContent/__tests__/useGridCellContent.test.ts b/webapp/src/components/common/Matrix/hooks/useGridCellContent/__tests__/useGridCellContent.test.ts new file mode 100644 index 0000000000..346d63b347 --- /dev/null +++ b/webapp/src/components/common/Matrix/hooks/useGridCellContent/__tests__/useGridCellContent.test.ts @@ -0,0 +1,124 @@ +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + +import { Column } from "../../../core/constants"; +import { + createColumn, + AGGREGATE_DATA, + MIXED_DATA, + FORMAT_TEST_CASES, +} from "./fixtures"; +import { createCoordinate, renderGridCellContent } from "./utils"; +import { assertNumberCell, assertTextCell } from "./assertions"; + +describe("useGridCellContent", () => { + describe("Aggregate columns", () => { + test.each([ + [0, 30], + [1, 60], + [2, 90], + ])("returns correct aggregate for row %i", (row, expected) => { + const getCellContent = renderGridCellContent(AGGREGATE_DATA); + const cell = getCellContent(createCoordinate(0, row)); + assertNumberCell( + cell, + expected, + `Expected aggregate value ${expected} at row ${row}`, + ); + }); + }); + + describe("Mixed column types", () => { + test("handles all column types correctly", () => { + const getCellContent = renderGridCellContent(MIXED_DATA); + + assertTextCell( + getCellContent(createCoordinate(0, 0)), + "Row 1", + "Expected row header text", + ); + + assertNumberCell( + getCellContent(createCoordinate(2, 0)), + 100, + "Expected first data column value", + ); + + assertNumberCell( + getCellContent(createCoordinate(3, 0)), + 200, + "Expected second data column value", + ); + + assertNumberCell( + getCellContent(createCoordinate(4, 0)), + 250, + "Expected aggregate value", + ); + }); + }); + + describe("Edge cases", () => { + test("handles empty data array", () => { + const options = { + columns: [createColumn("data1", Column.Number, true)], + data: [], + }; + + const getCellContent = renderGridCellContent(options); + const cell = getCellContent(createCoordinate(0, 0)); + assertNumberCell(cell, undefined, "Expected undefined for empty data"); + }); + + test("handles out of bounds access", () => { + const options = { + columns: [createColumn("data1", Column.Number, true)], + data: [[100]], + }; + + const getCellContent = renderGridCellContent(options); + + // Column out of bounds + const colCell = getCellContent(createCoordinate(1, 0)); + assertTextCell(colCell, "N/A", "Expected N/A for column out of bounds"); + + // Row out of bounds + const rowCell = getCellContent(createCoordinate(0, 1)); + assertNumberCell( + rowCell, + undefined, + "Expected undefined for row out of bounds", + ); + }); + }); + + describe("Number formatting", () => { + test.each(FORMAT_TEST_CASES)("$desc", ({ value, expected }) => { + const options = { + columns: [createColumn("number", Column.Number, true)], + data: [[value]], + }; + + const getCellContent = renderGridCellContent(options); + const cell = getCellContent(createCoordinate(0, 0)); + + if (cell.kind === "number" && "data" in cell) { + expect(cell.data).toBe(value); + expect(cell.displayData).toBe(expected); + } else { + throw new Error(`Expected formatted number cell for value ${value}`); + } + }); + }); +}); diff --git a/webapp/src/components/common/Matrix/hooks/useGridCellContent/__tests__/utils.ts b/webapp/src/components/common/Matrix/hooks/useGridCellContent/__tests__/utils.ts new file mode 100644 index 0000000000..a75d80f3ea --- /dev/null +++ b/webapp/src/components/common/Matrix/hooks/useGridCellContent/__tests__/utils.ts @@ -0,0 +1,47 @@ +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + +import { renderHook } from "@testing-library/react"; +import { type Item } from "@glideapps/glide-data-grid"; +import { useColumnMapping } from "../../useColumnMapping"; +import { useGridCellContent } from ".."; +import type { RenderOptions } from "../types"; + +export const createCoordinate = (col: number, row: number): Item => + [col, row] as Item; + +export const renderGridCellContent = ({ + data, + columns, + dateTime, + aggregates, + rowHeaders, +}: RenderOptions) => { + const { result: mappingResult } = renderHook(() => useColumnMapping(columns)); + + const { gridToData } = mappingResult.current; + + const { result } = renderHook(() => + useGridCellContent( + data, + columns, + gridToData, + dateTime, + aggregates, + rowHeaders, + ), + ); + + return result.current; +}; diff --git a/webapp/src/components/common/MatrixGrid/useGridCellContent.ts b/webapp/src/components/common/Matrix/hooks/useGridCellContent/index.ts similarity index 95% rename from webapp/src/components/common/MatrixGrid/useGridCellContent.ts rename to webapp/src/components/common/Matrix/hooks/useGridCellContent/index.ts index a5b1843cf8..5cbd61a440 100644 --- a/webapp/src/components/common/MatrixGrid/useGridCellContent.ts +++ b/webapp/src/components/common/Matrix/hooks/useGridCellContent/index.ts @@ -18,19 +18,10 @@ import { type EnhancedGridColumn, type ColumnType, MatrixAggregates, - Column, -} from "./types"; -import { formatNumber } from "./utils"; - -type CellContentGenerator = ( - row: number, - col: number, - column: EnhancedGridColumn, - data: number[][], - dateTime?: string[], - aggregates?: Partial, - rowHeaders?: string[], -) => GridCell; +} from "../../core/types"; +import { formatNumber } from "../../core/utils"; +import { Column } from "../../core/constants"; +import { type CellContentGenerator } from "./types"; /** * Map of cell content generators for each column type. diff --git a/webapp/src/components/common/Matrix/hooks/useGridCellContent/types.ts b/webapp/src/components/common/Matrix/hooks/useGridCellContent/types.ts new file mode 100644 index 0000000000..445bf7ee3d --- /dev/null +++ b/webapp/src/components/common/Matrix/hooks/useGridCellContent/types.ts @@ -0,0 +1,51 @@ +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + +import { GridCell, Item } from "@glideapps/glide-data-grid"; +import type { EnhancedGridColumn, MatrixAggregates } from "../../core/types"; + +export type GridToDataFunction = (cell: Item) => Item | null; + +export interface UseGridCellContentOptions { + data: number[][]; + columns: EnhancedGridColumn[]; + gridToData: GridToDataFunction; + dateTime?: string[]; + aggregates?: MatrixAggregates; + rowHeaders?: string[]; +} + +export type CellContentGenerator = ( + row: number, + col: number, + column: EnhancedGridColumn, + data: number[][], + dateTime?: string[], + aggregates?: Partial, + rowHeaders?: string[], +) => GridCell; + +export interface RenderOptions { + data: number[][]; + columns: EnhancedGridColumn[]; + dateTime?: string[]; + aggregates?: MatrixAggregates; + rowHeaders?: string[]; +} + +export interface TestCase { + desc: string; + value: number; + expected: string; +} diff --git a/webapp/src/components/common/MatrixGrid/useMatrix.ts b/webapp/src/components/common/Matrix/hooks/useMatrix/index.ts similarity index 92% rename from webapp/src/components/common/MatrixGrid/useMatrix.ts rename to webapp/src/components/common/Matrix/hooks/useMatrix/index.ts index 29908d97a2..7164751225 100644 --- a/webapp/src/components/common/MatrixGrid/useMatrix.ts +++ b/webapp/src/components/common/Matrix/hooks/useMatrix/index.ts @@ -16,13 +16,13 @@ import { useCallback, useEffect, useMemo, useState } from "react"; import { AxiosError } from "axios"; import { enqueueSnackbar } from "notistack"; import { t } from "i18next"; -import { MatrixIndex } from "../../../common/types"; -import useEnqueueErrorSnackbar from "../../../hooks/useEnqueueErrorSnackbar"; +import { MatrixIndex } from "../../../../../common/types"; +import useEnqueueErrorSnackbar from "../../../../../hooks/useEnqueueErrorSnackbar"; import { getStudyMatrixIndex, updateMatrix, -} from "../../../services/api/matrix"; -import { getStudyData } from "../../../services/api/study"; +} from "../../../../../services/api/matrix"; +import { getStudyData } from "../../../../../services/api/study"; import { EnhancedGridColumn, MatrixDataDTO, @@ -30,22 +30,20 @@ import { MatrixUpdateDTO, MatrixAggregates, AggregateConfig, - Column, - Operation, - Aggregate, -} from "./types"; +} from "../../core/types"; import { - aggregatesTheme, calculateMatrixAggregates, generateDataColumns, generateDateTime, getAggregateTypes, -} from "./utils"; +} from "../../core/utils"; import useUndo from "use-undo"; import { GridCellKind } from "@glideapps/glide-data-grid"; -import { importFile } from "../../../services/api/studies/raw"; -import { fetchMatrixFn } from "../../App/Singlestudy/explore/Modelization/Areas/Hydro/utils"; -import usePrompt from "../../../hooks/usePrompt"; +import { importFile } from "../../../../../services/api/studies/raw"; +import { fetchMatrixFn } from "../../../../App/Singlestudy/explore/Modelization/Areas/Hydro/utils"; +import usePrompt from "../../../../../hooks/usePrompt"; +import { Aggregate, Column, Operation } from "../../core/constants"; +import { aggregatesTheme } from "../../components/MatrixGrid/styles"; interface DataState { data: MatrixDataDTO["data"]; diff --git a/webapp/src/components/common/MatrixGrid/useMatrix.test.tsx b/webapp/src/components/common/Matrix/hooks/useMatrix/useMatrix.test.tsx similarity index 69% rename from webapp/src/components/common/MatrixGrid/useMatrix.test.tsx rename to webapp/src/components/common/Matrix/hooks/useMatrix/useMatrix.test.tsx index 09bdce7eff..33c36fcbcf 100644 --- a/webapp/src/components/common/MatrixGrid/useMatrix.test.tsx +++ b/webapp/src/components/common/Matrix/hooks/useMatrix/useMatrix.test.tsx @@ -13,98 +13,95 @@ */ import { renderHook, act, waitFor } from "@testing-library/react"; -import { vi, describe, expect, beforeEach } from "vitest"; -import { useMatrix } from "./useMatrix"; -import * as apiMatrix from "../../../services/api/matrix"; -import * as apiStudy from "../../../services/api/study"; -import * as rawStudy from "../../../services/api/studies/raw"; +import { useMatrix } from "../useMatrix"; +import * as apiMatrix from "@/services/api/matrix"; +import * as apiStudy from "@/services/api/study"; +import * as rawStudy from "@/services/api/studies/raw"; import { MatrixEditDTO, MatrixIndex, Operator, StudyOutputDownloadLevelDTO, -} from "../../../common/types"; -import { GridUpdate, MatrixDataDTO } from "./types"; +} from "@/common/types"; +import { GridUpdate, MatrixDataDTO } from "../../core/types"; import { GridCellKind } from "@glideapps/glide-data-grid"; -// Mock external dependencies -vi.mock("../../../services/api/matrix"); -vi.mock("../../../services/api/study"); -vi.mock("../../../services/api/studies/raw"); -vi.mock("../../../hooks/usePrompt"); - -describe("useMatrix", () => { - // Test constants and fixtures - const DATA = { - studyId: "study123", - url: "https://studies/study123/matrix", - matrixData: { - data: [ - [1, 2], - [3, 4], - ], - columns: [0, 1], - index: [0, 1], - } as MatrixDataDTO, - matrixIndex: { - start_date: "2023-01-01", - steps: 2, - first_week_size: 7, - level: StudyOutputDownloadLevelDTO.DAILY, - } as MatrixIndex, - }; - - // Helper functions - const createGridUpdate = ( - row: number, - col: number, - value: number, - ): GridUpdate => ({ - coordinates: [row, col], - value: { - kind: GridCellKind.Number, - data: value, - displayData: value.toString(), - allowOverlay: true, - }, - }); +vi.mock("@/services/api/matrix"); +vi.mock("@/services/api/study"); +vi.mock("@/services/api/studies/raw"); +vi.mock("@/hooks/usePrompt"); + +// TODO: refactor fixtures, utils functions, and types in dedicated files +const DATA = { + studyId: "study123", + url: "https://studies/study123/matrix", + matrixData: { + data: [ + [1, 2], + [3, 4], + ], + columns: [0, 1], + index: [0, 1], + } as MatrixDataDTO, + matrixIndex: { + start_date: "2023-01-01", + steps: 2, + first_week_size: 7, + level: StudyOutputDownloadLevelDTO.DAILY, + } as MatrixIndex, +}; + +const createGridUpdate = ( + row: number, + col: number, + value: number, +): GridUpdate => ({ + coordinates: [row, col], + value: { + kind: GridCellKind.Number, + data: value, + displayData: value.toString(), + allowOverlay: true, + }, +}); - interface SetupOptions { - mockData?: MatrixDataDTO; - mockIndex?: MatrixIndex; - } +interface SetupOptions { + mockData?: MatrixDataDTO; + mockIndex?: MatrixIndex; +} - const setupHook = async ({ - mockData = DATA.matrixData, - mockIndex = DATA.matrixIndex, - }: SetupOptions = {}) => { - vi.mocked(apiStudy.getStudyData).mockResolvedValue(mockData); - vi.mocked(apiMatrix.getStudyMatrixIndex).mockResolvedValue(mockIndex); +const setupHook = async ({ + mockData = DATA.matrixData, + mockIndex = DATA.matrixIndex, +}: SetupOptions = {}) => { + vi.mocked(apiStudy.getStudyData).mockResolvedValue(mockData); + vi.mocked(apiMatrix.getStudyMatrixIndex).mockResolvedValue(mockIndex); - const hook = renderHook(() => - useMatrix(DATA.studyId, DATA.url, true, true, true), - ); + const hook = renderHook(() => + useMatrix(DATA.studyId, DATA.url, true, true, true), + ); - await waitFor(() => { - expect(hook.result.current.isLoading).toBe(false); - }); + await waitFor(() => { + expect(hook.result.current.isLoading).toBe(false); + }); - return hook; - }; - - const performEdit = async ( - hook: Awaited>, - updates: GridUpdate | GridUpdate[], - ) => { - act(() => { - if (Array.isArray(updates)) { - hook.result.current.handleMultipleCellsEdit(updates); - } else { - hook.result.current.handleCellEdit(updates); - } - }); - }; + return hook; +}; + +const performEdit = async ( + hook: Awaited>, + updates: GridUpdate | GridUpdate[], +) => { + act(() => { + if (Array.isArray(updates)) { + hook.result.current.handleMultipleCellsEdit(updates); + } else { + hook.result.current.handleCellEdit(updates); + } + }); +}; +describe("useMatrix", () => { beforeEach(() => { vi.clearAllMocks(); }); diff --git a/webapp/src/components/common/MatrixGrid/useMatrixPortal.ts b/webapp/src/components/common/Matrix/hooks/useMatrixPortal/index.ts similarity index 100% rename from webapp/src/components/common/MatrixGrid/useMatrixPortal.ts rename to webapp/src/components/common/Matrix/hooks/useMatrixPortal/index.ts diff --git a/webapp/src/components/common/MatrixGrid/useMatrixPortal.test.tsx b/webapp/src/components/common/Matrix/hooks/useMatrixPortal/useMatrixPortal.test.tsx similarity index 85% rename from webapp/src/components/common/MatrixGrid/useMatrixPortal.test.tsx rename to webapp/src/components/common/Matrix/hooks/useMatrixPortal/useMatrixPortal.test.tsx index 638214349a..8b3bdfda32 100644 --- a/webapp/src/components/common/MatrixGrid/useMatrixPortal.test.tsx +++ b/webapp/src/components/common/Matrix/hooks/useMatrixPortal/useMatrixPortal.test.tsx @@ -12,17 +12,14 @@ * This file is part of the Antares project. */ -import { describe, it, expect, beforeEach } from "vitest"; import { cleanup, render, screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; -import { useMatrixPortal } from "./useMatrixPortal"; +import { useMatrixPortal } from "../useMatrixPortal"; -// Test component without ref function NonRefComponent() { return
Test Container
; } -// Test component with ref function TestComponent() { const { containerRef, handleMouseEnter, handleMouseLeave } = useMatrixPortal(); @@ -40,21 +37,21 @@ function TestComponent() { describe("useMatrixPortal", () => { beforeEach(() => { - cleanup(); // Clean up after each test + cleanup(); const existingPortal = document.getElementById("portal"); if (existingPortal) { existingPortal.remove(); } }); - it("should create hidden portal initially", () => { + test("should create hidden portal initially", () => { render(); const portal = document.getElementById("portal"); expect(portal).toBeInTheDocument(); expect(portal?.style.display).toBe("none"); }); - it("should show portal with correct styles when mouse enters", async () => { + test("should show portal with correct styles when mouse enters", async () => { const user = userEvent.setup(); render(); @@ -70,7 +67,7 @@ describe("useMatrixPortal", () => { expect(portal?.style.zIndex).toBe("9999"); }); - it("should hide portal when mouse leaves", async () => { + test("should hide portal when mouse leaves", async () => { const user = userEvent.setup(); render(); @@ -85,7 +82,7 @@ describe("useMatrixPortal", () => { expect(document.getElementById("portal")?.style.display).toBe("none"); }); - it("should keep portal hidden if containerRef is null", async () => { + test("should keep portal hidden if containerRef is null", async () => { const user = userEvent.setup(); // First render test component to create portal @@ -104,7 +101,7 @@ describe("useMatrixPortal", () => { expect(portal?.style.display).toBe("none"); }); - it("should handle multiple mouse enter/leave cycles", async () => { + test("should handle multiple mouse enter/leave cycles", async () => { const user = userEvent.setup(); render(); @@ -126,7 +123,7 @@ describe("useMatrixPortal", () => { expect(portal?.style.display).toBe("none"); }); - it("should handle rapid mouse events", async () => { + test("should handle rapid mouse events", async () => { const user = userEvent.setup(); render(); @@ -141,7 +138,7 @@ describe("useMatrixPortal", () => { expect(portal?.style.display).toBe("block"); }); - it("should maintain portal existence across multiple component instances", () => { + test("should maintain portal existence across multiple component instances", () => { // Render first instance const { unmount } = render(); expect(document.getElementById("portal")).toBeInTheDocument(); diff --git a/webapp/src/components/common/MatrixGrid/Matrix.tsx b/webapp/src/components/common/Matrix/index.tsx similarity index 95% rename from webapp/src/components/common/MatrixGrid/Matrix.tsx rename to webapp/src/components/common/Matrix/index.tsx index 101cb961b8..7c96919466 100644 --- a/webapp/src/components/common/MatrixGrid/Matrix.tsx +++ b/webapp/src/components/common/Matrix/index.tsx @@ -13,18 +13,18 @@ */ import { Divider, Skeleton } from "@mui/material"; -import MatrixGrid from "."; -import { useMatrix } from "./useMatrix"; +import MatrixGrid from "./components/MatrixGrid"; +import { useMatrix } from "./hooks/useMatrix"; import { useState } from "react"; import { useTranslation } from "react-i18next"; import ImportDialog from "../dialogs/ImportDialog"; import { useOutletContext } from "react-router"; import { StudyMetadata } from "../../../common/types"; -import { MatrixContainer, MatrixHeader, MatrixTitle } from "./style"; -import MatrixActions from "./MatrixActions"; +import { MatrixContainer, MatrixHeader, MatrixTitle } from "./styles"; +import MatrixActions from "./components/MatrixActions"; import EmptyView from "../page/SimpleContent"; import { fetchMatrixFn } from "../../App/Singlestudy/explore/Modelization/Areas/Hydro/utils"; -import { AggregateConfig } from "./types"; +import { AggregateConfig } from "./core/types"; interface MatrixProps { url: string; diff --git a/webapp/src/components/common/MatrixGrid/style.ts b/webapp/src/components/common/Matrix/styles.ts similarity index 100% rename from webapp/src/components/common/MatrixGrid/style.ts rename to webapp/src/components/common/Matrix/styles.ts diff --git a/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts b/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts deleted file mode 100644 index 0a1c75d87c..0000000000 --- a/webapp/src/components/common/MatrixGrid/useGridCellContent.test.ts +++ /dev/null @@ -1,267 +0,0 @@ -/** - * Copyright (c) 2024, RTE (https://www.rte-france.com) - * - * See AUTHORS.txt - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * SPDX-License-Identifier: MPL-2.0 - * - * This file is part of the Antares project. - */ - -import { renderHook } from "@testing-library/react"; -import { useGridCellContent } from "./useGridCellContent"; -import { - Column, - type ColumnType, - type MatrixAggregates, - type EnhancedGridColumn, -} from "./types"; -import { useColumnMapping } from "./useColumnMapping"; -import { type Item } from "@glideapps/glide-data-grid"; - -describe("useGridCellContent", () => { - // Test data factories - const createColumn = ( - id: string, - type: ColumnType, - editable = false, - ): EnhancedGridColumn => ({ - id, - title: id.charAt(0).toUpperCase() + id.slice(1), - type, - width: type === Column.DateTime ? 150 : 50, - editable, - }); - - const createCoordinate = (col: number, row: number): Item => - [col, row] as Item; - - interface RenderOptions { - data: number[][]; - columns: EnhancedGridColumn[]; - dateTime?: string[]; - aggregates?: MatrixAggregates; - rowHeaders?: string[]; - } - - const renderGridCellContent = ({ - data, - columns, - dateTime, - aggregates, - rowHeaders, - }: RenderOptions) => { - const { result: mappingResult } = renderHook(() => - useColumnMapping(columns), - ); - - const { gridToData } = mappingResult.current; - - const { result } = renderHook(() => - useGridCellContent( - data, - columns, - gridToData, - dateTime, - aggregates, - rowHeaders, - ), - ); - - return result.current; - }; - - const assertNumberCell = ( - cell: ReturnType>, - expectedValue: number | undefined, - message: string, - ) => { - if (cell.kind === "number" && "data" in cell) { - expect(cell.data).toBe(expectedValue); - } else { - throw new Error(message); - } - }; - - const assertTextCell = ( - cell: ReturnType>, - expectedValue: string, - message: string, - ) => { - if (cell.kind === "text" && "displayData" in cell) { - expect(cell.displayData).toBe(expectedValue); - } else { - throw new Error(message); - } - }; - - describe("Aggregate columns", () => { - const DATA = { - columns: [createColumn("total", Column.Aggregate)], - data: [ - [10, 20, 30], - [15, 25, 35], - [5, 15, 25], - ], - aggregates: { - min: [5, 15, 25], - max: [15, 25, 35], - avg: [10, 20, 30], - total: [30, 60, 90], - }, - }; - - test.each([ - [0, 30], - [1, 60], - [2, 90], - ])("returns correct aggregate for row %i", (row, expected) => { - const getCellContent = renderGridCellContent(DATA); - const cell = getCellContent(createCoordinate(0, row)); - assertNumberCell( - cell, - expected, - `Expected aggregate value ${expected} at row ${row}`, - ); - }); - }); - - describe("Mixed column types", () => { - const DATA = { - columns: [ - createColumn("rowHeader", Column.Text), - createColumn("date", Column.DateTime), - createColumn("data1", Column.Number, true), - createColumn("data2", Column.Number, true), - createColumn("total", Column.Aggregate), - ], - data: [ - [100, 200], - [150, 250], - ], - dateTime: ["2024-01-01T00:00:00Z", "2024-01-02T00:00:00Z"], - rowHeaders: ["Row 1", "Row 2"], - aggregates: { - min: [100, 200], - max: [150, 250], - avg: [125, 225], - total: [250, 450], - }, - }; - - test("handles all column types correctly", () => { - const getCellContent = renderGridCellContent(DATA); - - // Text column (Row header) - assertTextCell( - getCellContent(createCoordinate(0, 0)), - "Row 1", - "Expected row header text", - ); - - // Number columns - assertNumberCell( - getCellContent(createCoordinate(2, 0)), - 100, - "Expected first data column value", - ); - assertNumberCell( - getCellContent(createCoordinate(3, 0)), - 200, - "Expected second data column value", - ); - - // Aggregate column - assertNumberCell( - getCellContent(createCoordinate(4, 0)), - 250, - "Expected aggregate value", - ); - }); - }); - - describe("Edge cases", () => { - test("handles empty data array", () => { - const options = { - columns: [createColumn("data1", Column.Number, true)], - data: [], - }; - - const getCellContent = renderGridCellContent(options); - const cell = getCellContent(createCoordinate(0, 0)); - assertNumberCell(cell, undefined, "Expected undefined for empty data"); - }); - - test("handles out of bounds access", () => { - const options = { - columns: [createColumn("data1", Column.Number, true)], - data: [[100]], - }; - - const getCellContent = renderGridCellContent(options); - - // Column out of bounds - const colCell = getCellContent(createCoordinate(1, 0)); - assertTextCell(colCell, "N/A", "Expected N/A for column out of bounds"); - - // Row out of bounds - const rowCell = getCellContent(createCoordinate(0, 1)); - assertNumberCell( - rowCell, - undefined, - "Expected undefined for row out of bounds", - ); - }); - }); - - describe("Number formatting", () => { - const formatTestCases = [ - { - desc: "formats regular numbers", - value: 1234567.89, - expected: "1 234 567.89", - }, - { - desc: "handles very large numbers", - value: 1e20, - expected: "100 000 000 000 000 000 000", - }, - { - desc: "handles very small numbers", - value: 0.00001, - expected: "0.00001", - }, - { - desc: "handles negative numbers", - value: -1234567.89, - expected: "-1 234 567.89", - }, - { - desc: "handles zero", - value: 0, - expected: "0", - }, - ]; - - test.each(formatTestCases)("$desc", ({ value, expected }) => { - const options = { - columns: [createColumn("number", Column.Number, true)], - data: [[value]], - }; - - const getCellContent = renderGridCellContent(options); - const cell = getCellContent(createCoordinate(0, 0)); - - if (cell.kind === "number" && "data" in cell) { - expect(cell.data).toBe(value); - expect(cell.displayData).toBe(expected); - } else { - throw new Error(`Expected formatted number cell for value ${value}`); - } - }); - }); -}); diff --git a/webapp/src/components/common/MatrixGrid/utils.test.ts b/webapp/src/components/common/MatrixGrid/utils.test.ts deleted file mode 100644 index f39fb513e0..0000000000 --- a/webapp/src/components/common/MatrixGrid/utils.test.ts +++ /dev/null @@ -1,350 +0,0 @@ -/** - * Copyright (c) 2024, RTE (https://www.rte-france.com) - * - * See AUTHORS.txt - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * SPDX-License-Identifier: MPL-2.0 - * - * This file is part of the Antares project. - */ - -import { Aggregate, Column, TimeFrequency } from "./types"; -import { - calculateMatrixAggregates, - formatNumber, - generateCustomColumns, - generateDateTime, - generateTimeSeriesColumns, - getAggregateTypes, -} from "./utils"; - -// Mock date-fns for consistent date formatting -vi.mock("date-fns", async () => { - const actual = (await vi.importActual( - "date-fns", - )) as typeof import("date-fns"); - return { - ...actual, - format: vi.fn((date: Date, formatString: string) => { - if (formatString.includes("ww")) { - const weekNumber = actual.getWeek(date); - return `W ${weekNumber.toString().padStart(2, "0")}`; - } - return actual.format(date, formatString); - }), - }; -}); - -describe("Matrix Utils", () => { - // Test data and helpers - const TEST_DATA = { - dateConfig: { - start_date: "2023-01-01 00:00:00", - steps: 3, - first_week_size: 7, - }, - matrix: [ - [1, 2, 3], - [4, 5, 6], - [7, 8, 9], - ], - }; - - beforeAll(() => { - vi.useFakeTimers(); - vi.setSystemTime(new Date("2023-01-01 00:00:00")); - }); - - describe("DateTime Generation", () => { - const dateTimeTestCases = [ - { - name: "annual format", - config: { ...TEST_DATA.dateConfig, level: TimeFrequency.Annual }, - expected: [ - "global.time.annual", - "global.time.annual", - "global.time.annual", - ], - }, - { - name: "monthly format", - config: { ...TEST_DATA.dateConfig, level: TimeFrequency.Monthly }, - expected: ["Jan", "Feb", "Mar"], - }, - { - name: "weekly format", - config: { - ...TEST_DATA.dateConfig, - level: TimeFrequency.Weekly, - first_week_size: 1, - }, - expected: ["W 01", "W 02", "W 03"], - }, - { - name: "daily format", - config: { ...TEST_DATA.dateConfig, level: TimeFrequency.Daily }, - expected: ["Sun 1 Jan", "Mon 2 Jan", "Tue 3 Jan"], - }, - { - name: "hourly format", - config: { - start_date: "2039-07-01 00:00:00", - steps: 3, - first_week_size: 7, - level: TimeFrequency.Hourly, - }, - expected: ["Fri 1 Jul 00:00", "Fri 1 Jul 01:00", "Fri 1 Jul 02:00"], - }, - ]; - - test.each(dateTimeTestCases)( - "generates correct $name", - ({ config, expected }) => { - const result = generateDateTime(config); - expect(result).toEqual(expected); - }, - ); - }); - - describe("Time Series Column Generation", () => { - const columnTestCases = [ - { - name: "default options", - input: { count: 3 }, - expectedLength: 3, - validate: (result: ReturnType) => { - expect(result[0]).toEqual({ - id: "data1", - title: "TS 1", - type: Column.Number, - style: "normal", - editable: true, - }); - }, - }, - { - name: "custom options", - input: { count: 2, startIndex: 10, prefix: "Data", editable: false }, - expectedLength: 2, - validate: (result: ReturnType) => { - expect(result[0]).toEqual({ - id: "data10", - title: "Data 10", - type: Column.Number, - style: "normal", - editable: false, - }); - }, - }, - { - name: "zero count", - input: { count: 0 }, - expectedLength: 0, - validate: (result: ReturnType) => { - expect(result).toEqual([]); - }, - }, - { - name: "large count", - input: { count: 1000 }, - expectedLength: 1000, - validate: (result: ReturnType) => { - expect(result[999].id).toBe("data1000"); - expect(result[999].title).toBe("TS 1000"); - }, - }, - ]; - - test.each(columnTestCases)( - "handles $name correctly", - ({ input, expectedLength, validate }) => { - const result = generateTimeSeriesColumns(input); - expect(result).toHaveLength(expectedLength); - validate(result); - }, - ); - }); - - describe("Matrix Aggregates Calculation", () => { - const aggregateTestCases = [ - { - name: "simple matrix with all aggregates", - matrix: TEST_DATA.matrix, - aggregates: "all" as const, - expected: { - min: [1, 4, 7], - max: [3, 6, 9], - avg: [2, 5, 8], - total: [6, 15, 24], - }, - }, - { - name: "decimal numbers", - matrix: [ - [1.1, 2.2, 3.3], - [4.4, 5.5, 6.6], - ], - aggregates: "all" as const, - expected: { - min: [1.1, 4.4], - max: [3.3, 6.6], - avg: [2, 6], - total: [7, 17], - }, - }, - { - name: "negative numbers", - matrix: [ - [-1, -2, -3], - [-4, 0, 4], - ], - aggregates: "all" as const, - expected: { - min: [-3, -4], - max: [-1, 4], - avg: [-2, 0], - total: [-6, 0], - }, - }, - ]; - - test.each(aggregateTestCases)( - "calculates $name correctly", - ({ matrix, aggregates, expected }) => { - const aggregatesTypes = getAggregateTypes(aggregates); - const result = calculateMatrixAggregates(matrix, aggregatesTypes); - expect(result).toEqual(expected); - }, - ); - }); - - describe("Number Formatting", () => { - interface FormatTestCase { - description: string; - value: number | undefined; - maxDecimals?: number; - expected: string; - } - - const formatTestCases: Array<{ name: string; cases: FormatTestCase[] }> = [ - { - name: "integer numbers", - cases: [ - { - description: "formats large number", - value: 1234567, - expected: "1 234 567", - }, - { - description: "formats million", - value: 1000000, - expected: "1 000 000", - }, - { description: "formats single digit", value: 1, expected: "1" }, - ], - }, - { - name: "decimal numbers", - cases: [ - { - description: "formats with 2 decimals", - value: 1234.56, - maxDecimals: 2, - expected: "1 234.56", - }, - { - description: "formats with 3 decimals", - value: 1000000.123, - maxDecimals: 3, - expected: "1 000 000.123", - }, - ], - }, - { - name: "special cases", - cases: [ - { - description: "handles undefined", - value: undefined, - maxDecimals: 3, - expected: "", - }, - { description: "handles zero", value: 0, expected: "0" }, - { - description: "handles negative", - value: -1234567, - expected: "-1 234 567", - }, - { - description: "handles very large number", - value: 1e20, - expected: "100 000 000 000 000 000 000", - }, - ], - }, - ]; - - describe.each(formatTestCases)("$name", ({ cases }) => { - test.each(cases)("$description", ({ value, maxDecimals, expected }) => { - expect(formatNumber({ value, maxDecimals })).toBe(expected); - }); - }); - }); - - describe("Custom Column Generation", () => { - test("generates columns with correct properties", () => { - const titles = ["Custom 1", "Custom 2", "Custom 3"]; - const width = 100; - - const result = generateCustomColumns({ titles, width }); - expect(result).toHaveLength(3); - - result.forEach((column, index) => { - expect(column).toEqual({ - id: `custom${index + 1}`, - title: titles[index], - type: Column.Number, - style: "normal", - width, - editable: true, - }); - }); - }); - }); - - describe("Aggregate Type Configuration", () => { - const aggregateConfigCases = [ - { - name: "stats configuration", - aggregates: "stats" as const, - expected: [Aggregate.Avg, Aggregate.Min, Aggregate.Max], - }, - { - name: "all configuration", - aggregates: "all" as const, - expected: [ - Aggregate.Min, - Aggregate.Max, - Aggregate.Avg, - Aggregate.Total, - ], - }, - { - name: "custom configuration", - aggregates: [Aggregate.Min, Aggregate.Max], - expected: [Aggregate.Min, Aggregate.Max], - }, - ]; - - test.each(aggregateConfigCases)( - "handles $name correctly", - ({ aggregates, expected }) => { - expect(getAggregateTypes(aggregates)).toEqual(expected); - }, - ); - }); -}); diff --git a/webapp/src/services/api/matrix.ts b/webapp/src/services/api/matrix.ts index e7d6bee7a5..f50df6b926 100644 --- a/webapp/src/services/api/matrix.ts +++ b/webapp/src/services/api/matrix.ts @@ -24,7 +24,7 @@ import { } from "../../common/types"; import { FileDownloadTask } from "./downloads"; import { getConfig } from "../config"; -import { MatrixUpdateDTO } from "../../components/common/MatrixGrid/types"; +import { MatrixUpdateDTO } from "../../components/common/Matrix/core/types"; export const getMatrixList = async ( name = "", diff --git a/webapp/src/utils/validation/array.test.ts b/webapp/src/utils/validation/__tests__/array.test.ts similarity index 98% rename from webapp/src/utils/validation/array.test.ts rename to webapp/src/utils/validation/__tests__/array.test.ts index 406c853548..d05086e7a8 100644 --- a/webapp/src/utils/validation/array.test.ts +++ b/webapp/src/utils/validation/__tests__/array.test.ts @@ -12,7 +12,7 @@ * This file is part of the Antares project. */ -import { validateArray } from "./array"; +import { validateArray } from "../array"; vi.mock("i18next", () => ({ t: vi.fn((key) => key), diff --git a/webapp/src/utils/validation/number.test.ts b/webapp/src/utils/validation/__tests__/number.test.ts similarity index 98% rename from webapp/src/utils/validation/number.test.ts rename to webapp/src/utils/validation/__tests__/number.test.ts index eb19efcafe..a0377a921f 100644 --- a/webapp/src/utils/validation/number.test.ts +++ b/webapp/src/utils/validation/__tests__/number.test.ts @@ -12,7 +12,7 @@ * This file is part of the Antares project. */ -import { validateNumber } from "./number"; +import { validateNumber } from "../number"; // Mock i18next vi.mock("i18next", () => ({ diff --git a/webapp/src/utils/validation/string.test.ts b/webapp/src/utils/validation/__tests__/string.test.ts similarity index 98% rename from webapp/src/utils/validation/string.test.ts rename to webapp/src/utils/validation/__tests__/string.test.ts index dfc164cc36..c6aede434d 100644 --- a/webapp/src/utils/validation/string.test.ts +++ b/webapp/src/utils/validation/__tests__/string.test.ts @@ -12,7 +12,7 @@ * This file is part of the Antares project. */ -import { validatePassword, validateString } from "./string"; +import { validatePassword, validateString } from "../string"; vi.mock("i18next", () => ({ t: vi.fn((key, options) => { From d71e4a0e628860ac208cb45e037b3205d2514748 Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Fri, 25 Oct 2024 17:16:36 +0200 Subject: [PATCH 119/182] build(vite): exclude test files from production builds --- webapp/vite.config.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/webapp/vite.config.ts b/webapp/vite.config.ts index 73b06c2ba0..ba4fe1e0f4 100644 --- a/webapp/vite.config.ts +++ b/webapp/vite.config.ts @@ -30,6 +30,13 @@ export default defineConfig(({ mode }) => { // Not working in dev without `JSON.stringify` __BUILD_TIMESTAMP__: JSON.stringify(Date.now()), }, + build: { + // Exclude test files and directories from production builds + // This improves build performance and reduces bundle size + rollupOptions: { + external: ["**/__tests__/**", "**/*.test.ts", "**/*.test.tsx"], + }, + }, resolve: { alias: { "@": path.resolve(__dirname, "./src"), // Relative imports from the src directory From 212c777e8c7d10106e1a2dbbcc131bea39bc5a3d Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Tue, 29 Oct 2024 09:49:23 +0100 Subject: [PATCH 120/182] refactor(ui): rename core folder --- .../explore/Modelization/Areas/Hydro/Allocation/utils.ts | 2 +- .../explore/Modelization/Areas/Hydro/Correlation/utils.ts | 2 +- .../Singlestudy/explore/Modelization/Areas/Hydro/utils.ts | 2 +- .../App/Singlestudy/explore/Results/ResultDetails/index.tsx | 4 ++-- .../common/Matrix/components/MatrixGrid/MatrixGrid.test.tsx | 4 ++-- .../common/Matrix/components/MatrixGrid/index.tsx | 2 +- .../Matrix/hooks/useColumnMapping/__tests__/fixtures.ts | 2 +- .../common/Matrix/hooks/useColumnMapping/__tests__/utils.ts | 4 ++-- .../common/Matrix/hooks/useColumnMapping/index.ts | 4 ++-- .../Matrix/hooks/useGridCellContent/__tests__/fixtures.ts | 4 ++-- .../useGridCellContent/__tests__/useGridCellContent.test.ts | 2 +- .../common/Matrix/hooks/useGridCellContent/index.ts | 6 +++--- .../common/Matrix/hooks/useGridCellContent/types.ts | 2 +- .../src/components/common/Matrix/hooks/useMatrix/index.ts | 6 +++--- .../common/Matrix/hooks/useMatrix/useMatrix.test.tsx | 2 +- webapp/src/components/common/Matrix/index.tsx | 2 +- .../common/Matrix/{core => shared}/__tests__/fixtures.ts | 0 .../common/Matrix/{core => shared}/__tests__/types.ts | 0 .../common/Matrix/{core => shared}/__tests__/utils.test.ts | 0 .../components/common/Matrix/{core => shared}/constants.ts | 0 .../src/components/common/Matrix/{core => shared}/types.ts | 0 .../src/components/common/Matrix/{core => shared}/utils.ts | 2 +- webapp/src/services/api/matrix.ts | 2 +- 23 files changed, 27 insertions(+), 27 deletions(-) rename webapp/src/components/common/Matrix/{core => shared}/__tests__/fixtures.ts (100%) rename webapp/src/components/common/Matrix/{core => shared}/__tests__/types.ts (100%) rename webapp/src/components/common/Matrix/{core => shared}/__tests__/utils.test.ts (100%) rename webapp/src/components/common/Matrix/{core => shared}/constants.ts (100%) rename webapp/src/components/common/Matrix/{core => shared}/types.ts (100%) rename webapp/src/components/common/Matrix/{core => shared}/utils.ts (99%) diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts index 96d48cb669..5d5d054a11 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts @@ -14,7 +14,7 @@ import { StudyMetadata, Area } from "../../../../../../../../common/types"; import client from "../../../../../../../../services/api/client"; -import { MatrixDataDTO } from "../../../../../../../common/Matrix/core/types"; +import { MatrixDataDTO } from "../../../../../../../common/Matrix/shared/types"; import { AreaCoefficientItem } from "../utils"; //////////////////////////////////////////////////////////////// diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts index 0c538682bc..253963b1c6 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts @@ -14,7 +14,7 @@ import { StudyMetadata, Area } from "../../../../../../../../common/types"; import client from "../../../../../../../../services/api/client"; -import { MatrixDataDTO } from "../../../../../../../common/Matrix/core/types"; +import { MatrixDataDTO } from "../../../../../../../common/Matrix/shared/types"; import { AreaCoefficientItem } from "../utils"; //////////////////////////////////////////////////////////////// diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts index 735fecd13f..950dc891f2 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts @@ -15,7 +15,7 @@ import { MatrixDataDTO, AggregateConfig, -} from "../../../../../../common/Matrix/core/types"; +} from "../../../../../../common/Matrix/shared/types"; import { SplitViewProps } from "../../../../../../common/SplitView"; import { getAllocationMatrix } from "./Allocation/utils"; import { getCorrelationMatrix } from "./Correlation/utils"; diff --git a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx index ea82685854..b252e4196a 100644 --- a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx @@ -57,8 +57,8 @@ import MatrixGrid from "../../../../../common/Matrix/components/MatrixGrid/index import { generateCustomColumns, generateDateTime, -} from "../../../../../common/Matrix/core/utils.ts"; -import { Column } from "@/components/common/Matrix/core/constants.ts"; +} from "../../../../../common/Matrix/shared/utils.ts"; +import { Column } from "@/components/common/Matrix/shared/constants.ts"; import SplitView from "../../../../../common/SplitView/index.tsx"; import ResultFilters from "./ResultFilters.tsx"; import { toError } from "../../../../../../utils/fnUtils.ts"; diff --git a/webapp/src/components/common/Matrix/components/MatrixGrid/MatrixGrid.test.tsx b/webapp/src/components/common/Matrix/components/MatrixGrid/MatrixGrid.test.tsx index 5a9325f7f9..7f3f44aa7b 100644 --- a/webapp/src/components/common/Matrix/components/MatrixGrid/MatrixGrid.test.tsx +++ b/webapp/src/components/common/Matrix/components/MatrixGrid/MatrixGrid.test.tsx @@ -17,10 +17,10 @@ import userEvent from "@testing-library/user-event"; import Box from "@mui/material/Box"; import MatrixGrid, { MatrixGridProps } from "."; import SplitView from "../../../SplitView"; -import type { EnhancedGridColumn } from "../../core/types"; +import type { EnhancedGridColumn } from "../../shared/types"; import { mockGetBoundingClientRect } from "../../../../../tests/mocks/mockGetBoundingClientRect"; import { mockHTMLCanvasElement } from "../../../../../tests/mocks/mockHTMLCanvasElement"; -import { Column } from "../../core/constants"; +import { Column } from "../../shared/constants"; interface RenderMatrixOptions { width?: string; diff --git a/webapp/src/components/common/Matrix/components/MatrixGrid/index.tsx b/webapp/src/components/common/Matrix/components/MatrixGrid/index.tsx index 73395dd7bc..71b06e0976 100644 --- a/webapp/src/components/common/Matrix/components/MatrixGrid/index.tsx +++ b/webapp/src/components/common/Matrix/components/MatrixGrid/index.tsx @@ -28,7 +28,7 @@ import { type EnhancedGridColumn, type GridUpdate, type MatrixAggregates, -} from "../../core/types"; +} from "../../shared/types"; import { useColumnMapping } from "../../hooks/useColumnMapping"; import { useMatrixPortal } from "../../hooks/useMatrixPortal"; import { darkTheme, readOnlyDarkTheme } from "./styles"; diff --git a/webapp/src/components/common/Matrix/hooks/useColumnMapping/__tests__/fixtures.ts b/webapp/src/components/common/Matrix/hooks/useColumnMapping/__tests__/fixtures.ts index af74b0f068..7573b84251 100644 --- a/webapp/src/components/common/Matrix/hooks/useColumnMapping/__tests__/fixtures.ts +++ b/webapp/src/components/common/Matrix/hooks/useColumnMapping/__tests__/fixtures.ts @@ -12,7 +12,7 @@ * This file is part of the Antares project. */ -import { Column } from "../../../core/constants"; +import { Column } from "../../../shared/constants"; import { createColumn, createNumericColumn } from "./utils"; export const COLUMNS = { diff --git a/webapp/src/components/common/Matrix/hooks/useColumnMapping/__tests__/utils.ts b/webapp/src/components/common/Matrix/hooks/useColumnMapping/__tests__/utils.ts index 8425d789ff..eaf97da516 100644 --- a/webapp/src/components/common/Matrix/hooks/useColumnMapping/__tests__/utils.ts +++ b/webapp/src/components/common/Matrix/hooks/useColumnMapping/__tests__/utils.ts @@ -14,9 +14,9 @@ import { Item } from "@glideapps/glide-data-grid"; import { renderHook } from "@testing-library/react"; -import type { ColumnType, EnhancedGridColumn } from "../../../core/types"; +import type { ColumnType, EnhancedGridColumn } from "../../../shared/types"; import { useColumnMapping } from ".."; -import { Column } from "../../../core/constants"; +import { Column } from "../../../shared/constants"; export const createCoordinate = (col: number, row: number): Item => [col, row] as Item; diff --git a/webapp/src/components/common/Matrix/hooks/useColumnMapping/index.ts b/webapp/src/components/common/Matrix/hooks/useColumnMapping/index.ts index 1c10019ca7..b9ceb95ebf 100644 --- a/webapp/src/components/common/Matrix/hooks/useColumnMapping/index.ts +++ b/webapp/src/components/common/Matrix/hooks/useColumnMapping/index.ts @@ -14,8 +14,8 @@ import { useMemo } from "react"; import { Item } from "@glideapps/glide-data-grid"; -import { EnhancedGridColumn } from "../../core/types"; -import { Column } from "../../core/constants"; +import { EnhancedGridColumn } from "../../shared/types"; +import { Column } from "../../shared/constants"; /** * A custom hook that provides coordinate mapping functions for a grid with mixed column types. diff --git a/webapp/src/components/common/Matrix/hooks/useGridCellContent/__tests__/fixtures.ts b/webapp/src/components/common/Matrix/hooks/useGridCellContent/__tests__/fixtures.ts index e9331696cb..c13aa938c5 100644 --- a/webapp/src/components/common/Matrix/hooks/useGridCellContent/__tests__/fixtures.ts +++ b/webapp/src/components/common/Matrix/hooks/useGridCellContent/__tests__/fixtures.ts @@ -12,8 +12,8 @@ * This file is part of the Antares project. */ -import type { ColumnType, EnhancedGridColumn } from "../../../core/types"; -import { Column } from "../../../core/constants"; +import type { ColumnType, EnhancedGridColumn } from "../../../shared/types"; +import { Column } from "../../../shared/constants"; import type { TestCase } from "../types"; export const createColumn = ( diff --git a/webapp/src/components/common/Matrix/hooks/useGridCellContent/__tests__/useGridCellContent.test.ts b/webapp/src/components/common/Matrix/hooks/useGridCellContent/__tests__/useGridCellContent.test.ts index 346d63b347..e2103c53e7 100644 --- a/webapp/src/components/common/Matrix/hooks/useGridCellContent/__tests__/useGridCellContent.test.ts +++ b/webapp/src/components/common/Matrix/hooks/useGridCellContent/__tests__/useGridCellContent.test.ts @@ -12,7 +12,7 @@ * This file is part of the Antares project. */ -import { Column } from "../../../core/constants"; +import { Column } from "../../../shared/constants"; import { createColumn, AGGREGATE_DATA, diff --git a/webapp/src/components/common/Matrix/hooks/useGridCellContent/index.ts b/webapp/src/components/common/Matrix/hooks/useGridCellContent/index.ts index 5cbd61a440..0c36df736b 100644 --- a/webapp/src/components/common/Matrix/hooks/useGridCellContent/index.ts +++ b/webapp/src/components/common/Matrix/hooks/useGridCellContent/index.ts @@ -18,9 +18,9 @@ import { type EnhancedGridColumn, type ColumnType, MatrixAggregates, -} from "../../core/types"; -import { formatNumber } from "../../core/utils"; -import { Column } from "../../core/constants"; +} from "../../shared/types"; +import { formatNumber } from "../../shared/utils"; +import { Column } from "../../shared/constants"; import { type CellContentGenerator } from "./types"; /** diff --git a/webapp/src/components/common/Matrix/hooks/useGridCellContent/types.ts b/webapp/src/components/common/Matrix/hooks/useGridCellContent/types.ts index 445bf7ee3d..9858e11beb 100644 --- a/webapp/src/components/common/Matrix/hooks/useGridCellContent/types.ts +++ b/webapp/src/components/common/Matrix/hooks/useGridCellContent/types.ts @@ -13,7 +13,7 @@ */ import { GridCell, Item } from "@glideapps/glide-data-grid"; -import type { EnhancedGridColumn, MatrixAggregates } from "../../core/types"; +import type { EnhancedGridColumn, MatrixAggregates } from "../../shared/types"; export type GridToDataFunction = (cell: Item) => Item | null; diff --git a/webapp/src/components/common/Matrix/hooks/useMatrix/index.ts b/webapp/src/components/common/Matrix/hooks/useMatrix/index.ts index 7164751225..b781a9400c 100644 --- a/webapp/src/components/common/Matrix/hooks/useMatrix/index.ts +++ b/webapp/src/components/common/Matrix/hooks/useMatrix/index.ts @@ -30,19 +30,19 @@ import { MatrixUpdateDTO, MatrixAggregates, AggregateConfig, -} from "../../core/types"; +} from "../../shared/types"; import { calculateMatrixAggregates, generateDataColumns, generateDateTime, getAggregateTypes, -} from "../../core/utils"; +} from "../../shared/utils"; import useUndo from "use-undo"; import { GridCellKind } from "@glideapps/glide-data-grid"; import { importFile } from "../../../../../services/api/studies/raw"; import { fetchMatrixFn } from "../../../../App/Singlestudy/explore/Modelization/Areas/Hydro/utils"; import usePrompt from "../../../../../hooks/usePrompt"; -import { Aggregate, Column, Operation } from "../../core/constants"; +import { Aggregate, Column, Operation } from "../../shared/constants"; import { aggregatesTheme } from "../../components/MatrixGrid/styles"; interface DataState { diff --git a/webapp/src/components/common/Matrix/hooks/useMatrix/useMatrix.test.tsx b/webapp/src/components/common/Matrix/hooks/useMatrix/useMatrix.test.tsx index 33c36fcbcf..7dabcb97a5 100644 --- a/webapp/src/components/common/Matrix/hooks/useMatrix/useMatrix.test.tsx +++ b/webapp/src/components/common/Matrix/hooks/useMatrix/useMatrix.test.tsx @@ -23,7 +23,7 @@ import { Operator, StudyOutputDownloadLevelDTO, } from "@/common/types"; -import { GridUpdate, MatrixDataDTO } from "../../core/types"; +import { GridUpdate, MatrixDataDTO } from "../../shared/types"; import { GridCellKind } from "@glideapps/glide-data-grid"; vi.mock("@/services/api/matrix"); diff --git a/webapp/src/components/common/Matrix/index.tsx b/webapp/src/components/common/Matrix/index.tsx index 7c96919466..014703be76 100644 --- a/webapp/src/components/common/Matrix/index.tsx +++ b/webapp/src/components/common/Matrix/index.tsx @@ -24,7 +24,7 @@ import { MatrixContainer, MatrixHeader, MatrixTitle } from "./styles"; import MatrixActions from "./components/MatrixActions"; import EmptyView from "../page/SimpleContent"; import { fetchMatrixFn } from "../../App/Singlestudy/explore/Modelization/Areas/Hydro/utils"; -import { AggregateConfig } from "./core/types"; +import { AggregateConfig } from "./shared/types"; interface MatrixProps { url: string; diff --git a/webapp/src/components/common/Matrix/core/__tests__/fixtures.ts b/webapp/src/components/common/Matrix/shared/__tests__/fixtures.ts similarity index 100% rename from webapp/src/components/common/Matrix/core/__tests__/fixtures.ts rename to webapp/src/components/common/Matrix/shared/__tests__/fixtures.ts diff --git a/webapp/src/components/common/Matrix/core/__tests__/types.ts b/webapp/src/components/common/Matrix/shared/__tests__/types.ts similarity index 100% rename from webapp/src/components/common/Matrix/core/__tests__/types.ts rename to webapp/src/components/common/Matrix/shared/__tests__/types.ts diff --git a/webapp/src/components/common/Matrix/core/__tests__/utils.test.ts b/webapp/src/components/common/Matrix/shared/__tests__/utils.test.ts similarity index 100% rename from webapp/src/components/common/Matrix/core/__tests__/utils.test.ts rename to webapp/src/components/common/Matrix/shared/__tests__/utils.test.ts diff --git a/webapp/src/components/common/Matrix/core/constants.ts b/webapp/src/components/common/Matrix/shared/constants.ts similarity index 100% rename from webapp/src/components/common/Matrix/core/constants.ts rename to webapp/src/components/common/Matrix/shared/constants.ts diff --git a/webapp/src/components/common/Matrix/core/types.ts b/webapp/src/components/common/Matrix/shared/types.ts similarity index 100% rename from webapp/src/components/common/Matrix/core/types.ts rename to webapp/src/components/common/Matrix/shared/types.ts diff --git a/webapp/src/components/common/Matrix/core/utils.ts b/webapp/src/components/common/Matrix/shared/utils.ts similarity index 99% rename from webapp/src/components/common/Matrix/core/utils.ts rename to webapp/src/components/common/Matrix/shared/utils.ts index a2738a7a1d..c500093476 100644 --- a/webapp/src/components/common/Matrix/core/utils.ts +++ b/webapp/src/components/common/Matrix/shared/utils.ts @@ -21,7 +21,7 @@ import { type AggregateConfig, type DateTimeMetadataDTO, type FormatNumberOptions, -} from "../core/types"; +} from "./types"; import { parseISO, Locale } from "date-fns"; import { fr, enUS } from "date-fns/locale"; import { getCurrentLanguage } from "@/utils/i18nUtils"; diff --git a/webapp/src/services/api/matrix.ts b/webapp/src/services/api/matrix.ts index f50df6b926..0f026c44a6 100644 --- a/webapp/src/services/api/matrix.ts +++ b/webapp/src/services/api/matrix.ts @@ -24,7 +24,7 @@ import { } from "../../common/types"; import { FileDownloadTask } from "./downloads"; import { getConfig } from "../config"; -import { MatrixUpdateDTO } from "../../components/common/Matrix/core/types"; +import { MatrixUpdateDTO } from "../../components/common/Matrix/shared/types"; export const getMatrixList = async ( name = "", From fb6f00f93d5456ee0740e6bdc18ec9c86f2d7509 Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Tue, 29 Oct 2024 10:26:16 +0100 Subject: [PATCH 121/182] refactor(ui): disable percents on daily power and reservoir levels --- .../App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts | 2 -- .../components/common/Matrix/components/MatrixGrid/index.tsx | 3 +-- webapp/src/components/common/Matrix/shared/utils.ts | 2 +- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts index 950dc891f2..db3d8802a0 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts @@ -132,7 +132,6 @@ export const MATRICES: Matrices = { columns: generateColumns("%"), rowHeaders: ["Generating Power", "Pumping Power"], enableDateTimeColumn: false, - showPercent: true, }, [HydroMatrix.EnergyCredits]: { title: "Standard Credits", @@ -148,7 +147,6 @@ export const MATRICES: Matrices = { title: "Reservoir Levels", url: "input/hydro/common/capacity/reservoir_{areaId}", columns: ["Lev Low (%)", "Lev Avg (%)", "Lev High (%)"], - showPercent: true, }, [HydroMatrix.WaterValues]: { title: "Water Values", diff --git a/webapp/src/components/common/Matrix/components/MatrixGrid/index.tsx b/webapp/src/components/common/Matrix/components/MatrixGrid/index.tsx index 71b06e0976..48cc0ba540 100644 --- a/webapp/src/components/common/Matrix/components/MatrixGrid/index.tsx +++ b/webapp/src/components/common/Matrix/components/MatrixGrid/index.tsx @@ -201,10 +201,9 @@ function MatrixGrid({ smoothScrollX smoothScrollY rowHeight={30} - verticalBorder={false} overscrollX={100} overscrollY={100} - cellActivationBehavior="single-click" + cellActivationBehavior="second-click" />
diff --git a/webapp/src/components/common/Matrix/shared/utils.ts b/webapp/src/components/common/Matrix/shared/utils.ts index c500093476..2e6d0ed541 100644 --- a/webapp/src/components/common/Matrix/shared/utils.ts +++ b/webapp/src/components/common/Matrix/shared/utils.ts @@ -184,7 +184,7 @@ export function generateCustomColumns({ export function generateDataColumns( enableTimeSeriesColumns: boolean, columnCount: number, - customColumns?: string[], + customColumns?: string[] | readonly string[], colWidth?: number, ): EnhancedGridColumn[] { // If custom columns are provided, use them From 8897455aa881a990cb8056c549af4468f6c9f8ac Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Tue, 29 Oct 2024 15:42:03 +0100 Subject: [PATCH 122/182] fix(ui): prevent undefined error in number formatting --- .../Matrix/hooks/useGridCellContent/index.ts | 6 +-- .../Matrix/shared/__tests__/utils.test.ts | 4 +- .../components/common/Matrix/shared/types.ts | 2 +- .../components/common/Matrix/shared/utils.ts | 40 +++++++++++++------ 4 files changed, 33 insertions(+), 19 deletions(-) diff --git a/webapp/src/components/common/Matrix/hooks/useGridCellContent/index.ts b/webapp/src/components/common/Matrix/hooks/useGridCellContent/index.ts index 0c36df736b..0e20b0b2b9 100644 --- a/webapp/src/components/common/Matrix/hooks/useGridCellContent/index.ts +++ b/webapp/src/components/common/Matrix/hooks/useGridCellContent/index.ts @@ -19,7 +19,7 @@ import { type ColumnType, MatrixAggregates, } from "../../shared/types"; -import { formatNumber } from "../../shared/utils"; +import { formatGridNumber } from "../../shared/utils"; import { Column } from "../../shared/constants"; import { type CellContentGenerator } from "./types"; @@ -56,7 +56,7 @@ const cellContentGenerators: Record = { return { kind: GridCellKind.Number, data: value, - displayData: formatNumber({ value, maxDecimals: 6 }), + displayData: formatGridNumber({ value, maxDecimals: 6 }), readonly: !column.editable, allowOverlay: true, decimalSeparator: ".", @@ -69,7 +69,7 @@ const cellContentGenerators: Record = { return { kind: GridCellKind.Number, data: value, - displayData: formatNumber({ value, maxDecimals: 3 }), + displayData: formatGridNumber({ value, maxDecimals: 3 }), readonly: !column.editable, allowOverlay: false, decimalSeparator: ".", diff --git a/webapp/src/components/common/Matrix/shared/__tests__/utils.test.ts b/webapp/src/components/common/Matrix/shared/__tests__/utils.test.ts index 847541d3b3..ace38e0f34 100644 --- a/webapp/src/components/common/Matrix/shared/__tests__/utils.test.ts +++ b/webapp/src/components/common/Matrix/shared/__tests__/utils.test.ts @@ -15,7 +15,7 @@ import { Column } from "../constants"; import { calculateMatrixAggregates, - formatNumber, + formatGridNumber, generateCustomColumns, generateDateTime, generateTimeSeriesColumns, @@ -101,7 +101,7 @@ describe("Matrix Utils", () => { describe("Number Formatting", () => { describe.each(FORMAT_TEST_CASES)("$name", ({ cases }) => { test.each(cases)("$description", ({ value, maxDecimals, expected }) => { - expect(formatNumber({ value, maxDecimals })).toBe(expected); + expect(formatGridNumber({ value, maxDecimals })).toBe(expected); }); }); }); diff --git a/webapp/src/components/common/Matrix/shared/types.ts b/webapp/src/components/common/Matrix/shared/types.ts index 8e0b1f25c2..915602d0e1 100644 --- a/webapp/src/components/common/Matrix/shared/types.ts +++ b/webapp/src/components/common/Matrix/shared/types.ts @@ -51,7 +51,7 @@ export interface CustomColumnOptions { width?: number; } -export interface FormatNumberOptions { +export interface FormatGridNumberOptions { value?: number; maxDecimals?: number; } diff --git a/webapp/src/components/common/Matrix/shared/utils.ts b/webapp/src/components/common/Matrix/shared/utils.ts index 2e6d0ed541..de9b24277c 100644 --- a/webapp/src/components/common/Matrix/shared/utils.ts +++ b/webapp/src/components/common/Matrix/shared/utils.ts @@ -20,7 +20,7 @@ import { type AggregateType, type AggregateConfig, type DateTimeMetadataDTO, - type FormatNumberOptions, + type FormatGridNumberOptions, } from "./types"; import { parseISO, Locale } from "date-fns"; import { fr, enUS } from "date-fns/locale"; @@ -28,36 +28,50 @@ import { getCurrentLanguage } from "@/utils/i18nUtils"; import { Aggregate, Column, TIME_FREQUENCY_CONFIG } from "./constants"; /** - * Formats a number by adding thousand separators. + * Formats a number for display in a grid cell by adding thousand separators and handling decimals. * * This function is particularly useful for displaying load factors, * which are numbers between 0 and 1. For load factors, a maximum of * 6 decimal places should be displayed. For statistics, a maximum of * 3 decimal places is recommended. * - * @param options - The options for formatting the number. + * @example + * ```typescript + * formatGridNumber({ value: 1234567.89, maxDecimals: 2 }) // "1 234 567.89" + * formatGridNumber({ value: 0, maxDecimals: 6 }) // "0" + * formatGridNumber({ value: undefined }) // "" + * formatGridNumber({ value: NaN }) // "" + * ``` + * @param options - The formatting options * @param options.value - The number to format. - * @param options.maxDecimals - The maximum number of decimal places to keep. - * @returns The formatted number as a string. + * @param options.maxDecimals - Maximum number of decimal places to show. + * @returns A formatted string representation of the number with proper separators. */ -export function formatNumber({ +export function formatGridNumber({ value, maxDecimals = 0, -}: FormatNumberOptions): string { +}: FormatGridNumberOptions): string { if (value === undefined) { return ""; } - // Determine if we need to apply maxDecimals + const numValue = Number(value); + + if (isNaN(numValue)) { + return ""; + } + + const stringValue = value.toString(); + const dotIndex = stringValue.indexOf("."); + const hasDecimals = dotIndex !== -1; const shouldFormatDecimals = - value % 1 !== 0 && + hasDecimals && maxDecimals > 0 && - value.toString().split(".")[1].length > maxDecimals; + stringValue.length - dotIndex - 1 > maxDecimals; - // Use toFixed only if we need to control decimals const formattedValue = shouldFormatDecimals - ? value.toFixed(maxDecimals) - : value.toString(); + ? numValue.toFixed(maxDecimals) + : stringValue; const [integerPart, decimalPart] = formattedValue.split("."); From bd53261098d18496270d6fdbf6d2df56e4891662 Mon Sep 17 00:00:00 2001 From: hatim dinia Date: Tue, 29 Oct 2024 17:54:28 +0100 Subject: [PATCH 123/182] feat(ui-hydro): add data adapter for `Allocation` and `Correlation` Temporary solution to convert API numeric arrays to string arrays for Matrix component headers. Will be removed when API model is updated to return proper string labels. --- .../Areas/Hydro/HydroMatrixDialog.tsx | 93 ++++++++++++++++++- 1 file changed, 90 insertions(+), 3 deletions(-) diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrixDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrixDialog.tsx index 85223c55db..73b109f7dc 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrixDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrixDialog.tsx @@ -12,13 +12,27 @@ * This file is part of the Antares project. */ -import { Button, Box } from "@mui/material"; +import { Button, Box, Skeleton } from "@mui/material"; import { useTranslation } from "react-i18next"; +import { useState, useEffect } from "react"; import BasicDialog, { BasicDialogProps, } from "../../../../../../common/dialogs/BasicDialog"; -import HydroMatrix from "./HydroMatrix"; +import Matrix from "../../../../../../common/Matrix"; import { HydroMatrixType } from "./utils"; +import { getAllocationMatrix } from "./Allocation/utils"; +import { getCorrelationMatrix } from "./Correlation/utils"; +import { useOutletContext } from "react-router"; +import { StudyMetadata } from "../../../../../../../common/types"; +import { MatrixDataDTO } from "@/components/common/Matrix/shared/types"; +import useEnqueueErrorSnackbar from "@/hooks/useEnqueueErrorSnackbar"; +import { AxiosError } from "axios"; + +interface AdaptedMatrixData { + data: number[][]; + columns: string[]; + index: string[]; +} interface Props { open: boolean; @@ -26,8 +40,63 @@ interface Props { type: HydroMatrixType; } +const MATRIX_FETCHERS = { + Allocation: getAllocationMatrix, + Correlation: getCorrelationMatrix, +} as const; + function HydroMatrixDialog({ open, onClose, type }: Props) { + /** + * !TEMPORARY SOLUTION - Matrix Data Model Adaptation + * + * This component handles a specific case (Allocation, Correlation). + * They receive their columns and row headers from the backend as numeric arrays. + * This differs from the standard Matrix component usage where these properties expect string arrays + * representing actual header labels. + * + * Current scenario: + * - Backend returns {columns: number[], index: number[]} for these specific matrices + * - Matrix component expects {columns: string[], rowHeaders: string[]} for its headers + * + * Future API model update will: + * - Rename 'index' to 'rowHeaders' to better reflect its purpose + * - Return properly formatted string arrays for header labels + * - Allow using the standard HydroMatrix component without this adapter + * + * TODO - Once the API is updated: + * 1. The model adapter layer will be removed + * 2. These matrices will use the HydroMatrix component directly + * 3. All matrices will follow the same data structure pattern + */ + const { t } = useTranslation(); + const { study } = useOutletContext<{ study: StudyMetadata }>(); + const enqueueErrorSnackbar = useEnqueueErrorSnackbar(); + const fetchFn = MATRIX_FETCHERS[type as keyof typeof MATRIX_FETCHERS]; + const [matrix, setMatrix] = useState( + undefined, + ); + + const matrixModelAdapter = (apiData: MatrixDataDTO): AdaptedMatrixData => ({ + data: apiData.data, + columns: apiData.columns.map(String), + index: apiData.index.map(String), // Will be renamed to rowHeaders in future API version + }); + + useEffect(() => { + const fetchData = async () => { + try { + const data = await fetchFn(study.id); + setMatrix(matrixModelAdapter(data)); + } catch (error) { + enqueueErrorSnackbar(t("data.error.matrix"), error as AxiosError); + } + }; + + fetchData(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [study.id, type, t]); + const dialogProps: BasicDialogProps = { open, onClose, @@ -38,6 +107,10 @@ function HydroMatrixDialog({ open, onClose, type }: Props) { ), }; + //////////////////////////////////////////////////////////////// + // JSX + //////////////////////////////////////////////////////////////// + return ( - + {matrix ? ( + + ) : ( + + )} ); From 392fc149d169321b7dc8e311726deed891b0fd62 Mon Sep 17 00:00:00 2001 From: Anis Date: Thu, 31 Oct 2024 10:47:34 +0100 Subject: [PATCH 124/182] feat(watcher): add new endpoint for optimized scanning (#2193) --- antarest/core/exceptions.py | 20 ++- antarest/service_creator.py | 13 ++ antarest/study/model.py | 19 +++ antarest/study/service.py | 14 +- antarest/study/storage/explorer_service.py | 60 +++++++ antarest/study/storage/rawstudy/watcher.py | 75 ++++---- antarest/study/storage/utils.py | 89 +++++++++- .../generate_thermal_cluster_timeseries.py | 15 +- antarest/study/web/explorer_blueprint.py | 83 +++++++++ antarest/study/web/watcher_blueprint.py | 7 +- .../explorer_blueprint/test_explorer.py | 130 ++++++++++++++ .../storage/business/test_explorer_service.py | 119 +++++++++++++ tests/storage/business/test_watcher.py | 161 +++++++++++++++--- tests/study/storage/test_utils.py | 52 ++++++ 14 files changed, 769 insertions(+), 88 deletions(-) create mode 100644 antarest/study/storage/explorer_service.py create mode 100644 antarest/study/web/explorer_blueprint.py create mode 100644 tests/integration/explorer_blueprint/test_explorer.py create mode 100644 tests/storage/business/test_explorer_service.py create mode 100644 tests/study/storage/test_utils.py diff --git a/antarest/core/exceptions.py b/antarest/core/exceptions.py index f26a16c59b..f0818d559c 100644 --- a/antarest/core/exceptions.py +++ b/antarest/core/exceptions.py @@ -655,7 +655,7 @@ def __init__(self, message: str) -> None: super().__init__(HTTPStatus.UNPROCESSABLE_ENTITY, message) -class CannotScanInternalWorkspace(HTTPException): +class CannotAccessInternalWorkspace(HTTPException): def __init__(self) -> None: super().__init__( HTTPStatus.BAD_REQUEST, @@ -668,6 +668,15 @@ def __init__(self, message: str) -> None: super().__init__(HTTPStatus.NOT_FOUND, message) +class WorkspaceNotFound(HTTPException): + """ + This will be raised when we try to load a workspace that does not exist + """ + + def __init__(self, message: str) -> None: + super().__init__(HTTPStatus.UNPROCESSABLE_ENTITY, message) + + class BadArchiveContent(Exception): """ Exception raised when the archive file is corrupted (or unknown). @@ -675,3 +684,12 @@ class BadArchiveContent(Exception): def __init__(self, message: str = "Unsupported archive format") -> None: super().__init__(message) + + +class FolderNotFoundInWorkspace(HTTPException): + """ + This will be raised when we try to load a folder that does not exist + """ + + def __init__(self, message: str) -> None: + super().__init__(HTTPStatus.UNPROCESSABLE_ENTITY, message) diff --git a/antarest/service_creator.py b/antarest/service_creator.py index 3bee50cc45..b133d29b9c 100644 --- a/antarest/service_creator.py +++ b/antarest/service_creator.py @@ -44,7 +44,9 @@ from antarest.study.main import build_study_service from antarest.study.service import StudyService from antarest.study.storage.auto_archive_service import AutoArchiveService +from antarest.study.storage.explorer_service import Explorer from antarest.study.storage.rawstudy.watcher import Watcher +from antarest.study.web.explorer_blueprint import create_explorer_routes from antarest.study.web.watcher_blueprint import create_watcher_routes from antarest.worker.archive_worker import ArchiveWorker from antarest.worker.worker import AbstractWorker @@ -187,6 +189,14 @@ def create_watcher( return watcher +def create_explorer(config: Config, app_ctxt: t.Optional[AppBuildContext]) -> t.Any: + explorer = Explorer(config=config) + if app_ctxt: + app_ctxt.api_root.include_router(create_explorer_routes(config=config, explorer=explorer)) + + return explorer + + def create_matrix_gc( config: Config, app_ctxt: t.Optional[AppBuildContext], @@ -249,6 +259,9 @@ def create_services( watcher = create_watcher(config=config, app_ctxt=app_ctxt, study_service=study_service) services["watcher"] = watcher + explorer_service = create_explorer(config=config, app_ctxt=app_ctxt) + services["explorer"] = explorer_service + if config.server.services and Module.MATRIX_GC.value in config.server.services or create_all: matrix_garbage_collector = create_matrix_gc( config=config, diff --git a/antarest/study/model.py b/antarest/study/model.py index aec84fcc7d..aa24c26b09 100644 --- a/antarest/study/model.py +++ b/antarest/study/model.py @@ -319,6 +319,25 @@ class StudyFolder: groups: t.List[Group] +class NonStudyFolder(AntaresBaseModel): + """ + DTO used by the explorer to list directories that aren't studies directory, this will be usefull for the front + so the user can navigate in the hierarchy + """ + + path: Path + workspace: str + name: str + + +class WorkspaceMetadata(AntaresBaseModel): + """ + DTO used by the explorer to list all workspaces + """ + + name: str + + class PatchStudy(AntaresBaseModel): scenario: t.Optional[str] = None doc: t.Optional[str] = None diff --git a/antarest/study/service.py b/antarest/study/service.py index 5bd0cd4d88..d3cc605dab 100644 --- a/antarest/study/service.py +++ b/antarest/study/service.py @@ -858,13 +858,17 @@ def remove_duplicates(self) -> None: if ids: # Check if ids is not empty self.repository.delete(*ids) - def sync_studies_on_disk(self, folders: t.List[StudyFolder], directory: t.Optional[Path] = None) -> None: + def sync_studies_on_disk( + self, folders: t.List[StudyFolder], directory: t.Optional[Path] = None, recursive: bool = True + ) -> None: """ Used by watcher to send list of studies present on filesystem. Args: folders: list of studies currently present on folder directory: directory of studies that will be watched + recursive: if False, the delta will apply only to the studies in "directory", otherwise + it will apply to all studies having a path that descend from "directory". Returns: @@ -873,11 +877,15 @@ def sync_studies_on_disk(self, folders: t.List[StudyFolder], directory: t.Option clean_up_missing_studies_threshold = now - timedelta(days=MAX_MISSING_STUDY_TIMEOUT) all_studies = self.repository.get_all_raw() if directory: - all_studies = [raw_study for raw_study in all_studies if directory in Path(raw_study.path).parents] + if recursive: + all_studies = [raw_study for raw_study in all_studies if directory in Path(raw_study.path).parents] + else: + all_studies = [raw_study for raw_study in all_studies if directory == Path(raw_study.path).parent] studies_by_path = {study.path: study for study in all_studies} # delete orphan studies on database paths = [str(f.path) for f in folders] + for study in all_studies: if ( isinstance(study, RawStudy) @@ -900,7 +908,7 @@ def sync_studies_on_disk(self, folders: t.List[StudyFolder], directory: t.Option permissions=PermissionInfo.from_study(study), ) ) - elif study.missing < clean_up_missing_studies_threshold: + if study.missing < clean_up_missing_studies_threshold: logger.info( "Study %s at %s is not present in disk and will be deleted", study.id, diff --git a/antarest/study/storage/explorer_service.py b/antarest/study/storage/explorer_service.py new file mode 100644 index 0000000000..5610f3e5f8 --- /dev/null +++ b/antarest/study/storage/explorer_service.py @@ -0,0 +1,60 @@ +# Copyright (c) 2024, RTE (https://www.rte-france.com) +# +# See AUTHORS.txt +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +# This file is part of the Antares project. + +import logging +from typing import List + +from antarest.core.config import Config +from antarest.study.model import DEFAULT_WORKSPACE_NAME, NonStudyFolder, WorkspaceMetadata +from antarest.study.storage.utils import ( + get_folder_from_workspace, + get_workspace_from_config, + is_study_folder, + should_ignore_folder_for_scan, +) + +logger = logging.getLogger(__name__) + + +class Explorer: + def __init__(self, config: Config): + self.config = config + + def list_dir( + self, + workspace_name: str, + workspace_directory_path: str, + ) -> List[NonStudyFolder]: + """ + return a list of all directories under workspace_directory_path, that aren't studies. + """ + workspace = get_workspace_from_config(self.config, workspace_name, default_allowed=False) + directory_path = get_folder_from_workspace(workspace, workspace_directory_path) + directories = [] + for child in directory_path.iterdir(): + if child.is_dir() and not is_study_folder(child) and not should_ignore_folder_for_scan(child): + # we don't want to expose the full absolute path on the server + child_rel_path = child.relative_to(workspace.path) + directories.append(NonStudyFolder(path=child_rel_path, workspace=workspace_name, name=child.name)) + return directories + + def list_workspaces( + self, + ) -> List[WorkspaceMetadata]: + """ + Return the list of all configured workspace name, except the default one. + """ + return [ + WorkspaceMetadata(name=workspace_name) + for workspace_name in self.config.storage.workspaces.keys() + if workspace_name != DEFAULT_WORKSPACE_NAME + ] diff --git a/antarest/study/storage/rawstudy/watcher.py b/antarest/study/storage/rawstudy/watcher.py index d00a7f7204..3166bbe40f 100644 --- a/antarest/study/storage/rawstudy/watcher.py +++ b/antarest/study/storage/rawstudy/watcher.py @@ -14,17 +14,13 @@ import re import tempfile from html import escape -from http import HTTPStatus -from http.client import HTTPException from pathlib import Path from time import sleep, time from typing import List, Optional -from antares.study.version.upgrade_app import is_temporary_upgrade_dir from filelock import FileLock from antarest.core.config import Config -from antarest.core.exceptions import CannotScanInternalWorkspace from antarest.core.interfaces.service import IService from antarest.core.requests import RequestParameters from antarest.core.tasks.model import TaskResult, TaskType @@ -34,7 +30,11 @@ from antarest.login.model import Group from antarest.study.model import DEFAULT_WORKSPACE_NAME, StudyFolder from antarest.study.service import StudyService -from antarest.study.storage.variantstudy.model.command.generate_thermal_cluster_timeseries import is_ts_gen_tmp_dir +from antarest.study.storage.utils import ( + get_folder_from_workspace, + get_workspace_from_config, + should_ignore_folder_for_scan, +) logger = logging.getLogger(__name__) @@ -49,11 +49,6 @@ def __call__(self, duration: float) -> None: logger.info(f"Workspace {self.workspace_name} scanned in {duration}s") -class WorkspaceNotFound(HTTPException): - def __init__(self, message: str) -> None: - super().__init__(HTTPStatus.BAD_REQUEST, message) - - class Watcher(IService): """ Files Watcher to listen raw studies changes and trigger a database update. @@ -128,28 +123,26 @@ def _rec_scan( groups: List[Group], filter_in: List[str], filter_out: List[str], + max_depth: Optional[int] = None, ) -> List[StudyFolder]: try: - if (path / "AW_NO_SCAN").exists(): - logger.info(f"No scan directive file found. Will skip further scan of folder {path}") - return [] - - if is_temporary_upgrade_dir(path): - logger.info(f"Upgrade temporary folder found. Will skip further scan of folder {path}") - return [] - - if is_ts_gen_tmp_dir(path): - logger.info(f"TS generation temporary folder found. Will skip further scan of folder {path}") + if should_ignore_folder_for_scan(path): return [] if (path / "study.antares").exists(): logger.debug(f"Study {path.name} found in {workspace}") return [StudyFolder(path, workspace, groups)] + if max_depth is not None and max_depth <= 0: + logger.info(f"Scan was configured to not go any deeper, max _depth : {max_depth}") + return [] + else: folders: List[StudyFolder] = list() if path.is_dir(): for child in path.iterdir(): + if max_depth is not None: + max_depth = max_depth - 1 try: if ( (child.is_dir()) @@ -157,11 +150,7 @@ def _rec_scan( and not any([re.search(regex, child.name) for regex in filter_out]) ): folders = folders + self._rec_scan( - child, - workspace, - groups, - filter_in, - filter_out, + child, workspace, groups, filter_in, filter_out, max_depth ) except Exception as e: logger.error(f"Failed to scan dir {child}", exc_info=e) @@ -173,6 +162,7 @@ def _rec_scan( def oneshot_scan( self, params: RequestParameters, + recursive: bool, workspace: Optional[str] = None, path: Optional[str] = None, ) -> str: @@ -183,11 +173,12 @@ def oneshot_scan( params: user parameters workspace: workspace to scan path: relative path to folder to scan + recursive: if true, scan recursively all subfolders otherwise only the first level """ # noinspection PyUnusedLocal def scan_task(notifier: ITaskNotifier) -> TaskResult: - self.scan(workspace, path) + self.scan(recursive, workspace, path) return TaskResult(success=True, message="Scan completed") return self.task_service.add_task( @@ -202,34 +193,32 @@ def scan_task(notifier: ITaskNotifier) -> TaskResult: def scan( self, + recursive: bool = True, workspace_name: Optional[str] = None, workspace_directory_path: Optional[str] = None, ) -> None: """ Scan recursively list of studies present on disk. Send updated list to study service. + + Args: + recursive: if true, scan recursively all subfolders otherwise only the first level Returns: """ stopwatch = StopWatch() studies: List[StudyFolder] = list() directory_path: Optional[Path] = None + + # max depth when we call _rec_scan + max_depth = None if recursive else 1 + if workspace_directory_path is not None and workspace_name: - if workspace_name == DEFAULT_WORKSPACE_NAME: - raise CannotScanInternalWorkspace - try: - workspace = self.config.storage.workspaces[workspace_name] - except KeyError: - logger.error(f"Workspace {workspace_name} not found") - raise WorkspaceNotFound(f"Workspace {workspace_name} not found") + workspace = get_workspace_from_config(self.config, workspace_name) + directory_path = get_folder_from_workspace(workspace, workspace_directory_path) groups = [Group(id=escape(g), name=escape(g)) for g in workspace.groups] - directory_path = workspace.path / workspace_directory_path studies = self._rec_scan( - directory_path, - workspace_name, - groups, - workspace.filter_in, - workspace.filter_out, + directory_path, workspace_name, groups, workspace.filter_in, workspace.filter_out, max_depth=max_depth ) elif workspace_directory_path is None and workspace_name is None: for name, workspace in self.config.storage.workspaces.items(): @@ -237,11 +226,7 @@ def scan( path = Path(workspace.path) groups = [Group(id=escape(g), name=escape(g)) for g in workspace.groups] studies = studies + self._rec_scan( - path, - name, - groups, - workspace.filter_in, - workspace.filter_out, + path, name, groups, workspace.filter_in, workspace.filter_out, max_depth=max_depth ) stopwatch.log_elapsed(_LogScanDuration(name)) else: @@ -250,7 +235,7 @@ def scan( logger.info(f"Waiting for FileLock to synchronize {directory_path or 'all studies'}") with FileLock(Watcher.SCAN_LOCK): logger.info(f"FileLock acquired to synchronize for {directory_path or 'all studies'}") - self.study_service.sync_studies_on_disk(studies, directory_path) + self.study_service.sync_studies_on_disk(studies, directory_path, recursive) stopwatch.log_elapsed( lambda x: logger.info(f"{directory_path or 'All studies'} synchronized in {x}s"), since_start=True, diff --git a/antarest/study/storage/utils.py b/antarest/study/storage/utils.py index 85ba04b630..ac4ba9acfb 100644 --- a/antarest/study/storage/utils.py +++ b/antarest/study/storage/utils.py @@ -24,8 +24,16 @@ from zipfile import ZipFile from antares.study.version import StudyVersion - -from antarest.core.exceptions import StudyValidationError, UnsupportedStudyVersion +from antares.study.version.upgrade_app import is_temporary_upgrade_dir + +from antarest.core.config import Config, WorkspaceConfig +from antarest.core.exceptions import ( + CannotAccessInternalWorkspace, + FolderNotFoundInWorkspace, + StudyValidationError, + UnsupportedStudyVersion, + WorkspaceNotFound, +) from antarest.core.interfaces.cache import CacheConstants, ICache from antarest.core.jwt import JWTUser from antarest.core.model import PermissionInfo, StudyPermissionType @@ -50,6 +58,10 @@ logger = logging.getLogger(__name__) +TS_GEN_PREFIX = "~" +TS_GEN_SUFFIX = ".thermal_timeseries_gen.tmp" + + # noinspection SpellCheckingInspection def update_antares_info(metadata: Study, study_tree: FileStudyTree, *, update_author: bool) -> None: """ @@ -390,3 +402,76 @@ def ignore_outputs(directory: str, _: t.Sequence[str]) -> t.Sequence[str]: study.tree.denormalize() duration = "{:.3f}".format(time.time() - stop_time) logger.info(f"Study '{study_dir}' denormalized in {duration}s") + + +def is_folder_safe(workspace: WorkspaceConfig, folder: str) -> bool: + """ + Check if the provided folder path is safe to prevent path traversal attack. + + Args: + workspace: The workspace name. + folder: The folder path. + + Returns: + `True` if the folder path is safe, `False` otherwise. + """ + requested_path = workspace.path / folder + requested_path = requested_path.resolve() + safe_dir = workspace.path.resolve() + # check weither the requested path is a subdirectory of the workspace + return requested_path.is_relative_to(safe_dir) + + +def is_study_folder(path: Path) -> bool: + return path.is_dir() and (path / "study.antares").exists() + + +def is_aw_no_scan(path: Path) -> bool: + return (path / "AW_NO_SCAN").exists() + + +def get_workspace_from_config(config: Config, workspace_name: str, default_allowed: bool = False) -> WorkspaceConfig: + if not default_allowed and workspace_name == DEFAULT_WORKSPACE_NAME: + raise CannotAccessInternalWorkspace() + try: + return config.storage.workspaces[workspace_name] + except KeyError: + logger.error(f"Workspace {workspace_name} not found") + raise WorkspaceNotFound(f"Workspace {workspace_name} not found") + + +def get_folder_from_workspace(workspace: WorkspaceConfig, folder: str) -> Path: + if not is_folder_safe(workspace, folder): + raise FolderNotFoundInWorkspace(f"Invalid path for folder: {folder} in workspace {workspace}") + folder_path = workspace.path / folder + if not folder_path.is_dir(): + raise FolderNotFoundInWorkspace(f"Provided path is not dir: {folder} in workspace {workspace}") + return folder_path + + +def is_ts_gen_tmp_dir(path: Path) -> bool: + """ + Check if a path is a temporary directory used for thermal timeseries generation + Args: + path: the path to check + + Returns: + True if the path is a temporary directory used for thermal timeseries generation + """ + return path.name.startswith(TS_GEN_PREFIX) and "".join(path.suffixes[-2:]) == TS_GEN_SUFFIX and path.is_dir() + + +def should_ignore_folder_for_scan(path: Path) -> bool: + if is_aw_no_scan(path): + logger.info(f"No scan directive file found. Will skip further scan of folder {path}") + return True + + if is_temporary_upgrade_dir(path): + logger.info(f"Upgrade temporary folder found. Will skip further scan of folder {path}") + return True + + if is_ts_gen_tmp_dir(path): + logger.info(f"TS generation temporary folder found. Will skip further scan of folder {path}") + return True + + return False diff --git a/antarest/study/storage/variantstudy/model/command/generate_thermal_cluster_timeseries.py b/antarest/study/storage/variantstudy/model/command/generate_thermal_cluster_timeseries.py index 1ff3dffc05..cb7c758b1a 100644 --- a/antarest/study/storage/variantstudy/model/command/generate_thermal_cluster_timeseries.py +++ b/antarest/study/storage/variantstudy/model/command/generate_thermal_cluster_timeseries.py @@ -26,6 +26,7 @@ from antarest.study.storage.rawstudy.model.filesystem.config.thermal import LocalTSGenerationBehavior from antarest.study.storage.rawstudy.model.filesystem.factory import FileStudy from antarest.study.storage.rawstudy.model.filesystem.matrix.matrix import dump_dataframe +from antarest.study.storage.utils import TS_GEN_PREFIX, TS_GEN_SUFFIX from antarest.study.storage.variantstudy.model.command.common import CommandName, CommandOutput from antarest.study.storage.variantstudy.model.command.icommand import ICommand, OutputTuple from antarest.study.storage.variantstudy.model.command_listener.command_listener import ICommandListener @@ -37,20 +38,6 @@ MODULATION_CAPACITY_COLUMN = 2 FO_RATE_COLUMN = 2 PO_RATE_COLUMN = 3 -TS_GEN_PREFIX = "~" -TS_GEN_SUFFIX = ".thermal_timeseries_gen.tmp" - - -def is_ts_gen_tmp_dir(path: Path) -> bool: - """ - Check if a path is a temporary directory used for thermal timeseries generation - Args: - path: the path to check - - Returns: - True if the path is a temporary directory used for thermal timeseries generation - """ - return path.name.startswith(TS_GEN_PREFIX) and "".join(path.suffixes[-2:]) == TS_GEN_SUFFIX and path.is_dir() class GenerateThermalClusterTimeSeries(ICommand): diff --git a/antarest/study/web/explorer_blueprint.py b/antarest/study/web/explorer_blueprint.py new file mode 100644 index 0000000000..0981ba5214 --- /dev/null +++ b/antarest/study/web/explorer_blueprint.py @@ -0,0 +1,83 @@ +# Copyright (c) 2024, RTE (https://www.rte-france.com) +# +# See AUTHORS.txt +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +# This file is part of the Antares project. + +import logging +from typing import List + +from fastapi import APIRouter, Depends + +from antarest.core.config import Config +from antarest.core.jwt import JWTUser +from antarest.login.auth import Auth +from antarest.study.model import NonStudyFolder, WorkspaceMetadata +from antarest.study.storage.explorer_service import Explorer + +logger = logging.getLogger(__name__) + + +def create_explorer_routes(config: Config, explorer: Explorer) -> APIRouter: + """ + Endpoint implementation for explorer management + Args: + explorer: explorer service facade to handle request + config: main server configuration + + Returns: + + """ + bp = APIRouter(prefix="/v1/private") + auth = Auth(config) + + @bp.get( + "/explorer/{workspace}/_list_dir", + summary="For a given directory, list sub directories that aren't studies", + response_model=List[NonStudyFolder], + ) + def list_dir( + workspace: str, + path: str, + current_user: JWTUser = Depends(auth.get_current_user), + ) -> List[NonStudyFolder]: + """ + Endpoint to list sub directories of a given directory + Args: + path: path to the directory to scan + current_user: user that perform the request + + Returns: + List of sub directories + + """ + logger.info(f"Listing directory {path} in workspace {workspace}") + return explorer.list_dir(workspace, path) + + @bp.get( + "/explorer/_list_workspaces", + summary="List all workspaces", + response_model=List[WorkspaceMetadata], + ) + def list_workspaces( + current_user: JWTUser = Depends(auth.get_current_user), + ) -> List[WorkspaceMetadata]: + """ + Endpoint to list workspaces + Args: + current_user: user that perform the request + + Returns: + List of workspace + + """ + logger.info("Listing workspaces") + return explorer.list_workspaces() + + return bp diff --git a/antarest/study/web/watcher_blueprint.py b/antarest/study/web/watcher_blueprint.py index a98ccfe0c5..cbfd3a8cb6 100644 --- a/antarest/study/web/watcher_blueprint.py +++ b/antarest/study/web/watcher_blueprint.py @@ -13,7 +13,7 @@ import logging from http import HTTPStatus from http.client import HTTPException -from typing import Any, List +from typing import List from fastapi import APIRouter, Depends @@ -56,8 +56,9 @@ def create_watcher_routes( ) def scan_dir( path: str, + recursive: bool = True, current_user: JWTUser = Depends(auth.get_current_user), - ) -> Any: + ) -> str: params = RequestParameters(user=current_user) if path: # The front actually sends / @@ -82,6 +83,6 @@ def scan_dir( ) relative_path = None workspace = None - return watcher.oneshot_scan(params=params, workspace=workspace, path=relative_path) + return watcher.oneshot_scan(params=params, recursive=recursive, workspace=workspace, path=relative_path) return bp diff --git a/tests/integration/explorer_blueprint/test_explorer.py b/tests/integration/explorer_blueprint/test_explorer.py new file mode 100644 index 0000000000..dbb6f83ebc --- /dev/null +++ b/tests/integration/explorer_blueprint/test_explorer.py @@ -0,0 +1,130 @@ +# Copyright (c) 2024, RTE (https://www.rte-france.com) +# +# See AUTHORS.txt +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +# This file is part of the Antares project. +from pathlib import Path + +import pytest +from starlette.testclient import TestClient + +from antarest.study.model import NonStudyFolder, WorkspaceMetadata + +BAD_REQUEST_STATUS_CODE = 400 +# Status code for directory listing with invalid parameters +INVALID_PARAMS_STATUS_CODE = 422 + + +@pytest.fixture +def study_tree(tmp_path: Path) -> Path: + """ + Create this hierarchy + + tmp_path + └── ext_workspace + └── folder + ├── studyC + │ └── study.antares + ├── trash + │ └── trash + ├── another_folder + │ ├── AW_NO_SCAN + │ └── study.antares + """ + ext_workspace = tmp_path / "ext_workspace" + c = ext_workspace / "folder/studyC" + c.mkdir(parents=True) + (c / "study.antares").touch() + + d = ext_workspace / "folder/trash" + d.mkdir(parents=True) + (d / "trash").touch() + + f = ext_workspace / "folder/another_folder" + f.mkdir(parents=True) + (f / "AW_NO_SCAN").touch() + (f / "study.antares").touch() + + return tmp_path + + +def test_explorer(client: TestClient, admin_access_token: str, study_tree: Path): + # Don't be confused here by the workspace name is "ext" being different from its folder name "ext_workspace" + # that's just how it's configured in the "client" fixture + workspace = "ext" + + res = client.get( + f"/v1/private/explorer/{workspace}/_list_dir?path=folder/", + headers={"Authorization": f"Bearer {admin_access_token}"}, + ) + res.raise_for_status() + directories_res = res.json() + directories_res = [NonStudyFolder(**d) for d in directories_res] + directorires_expected = [ + NonStudyFolder( + path=Path("folder/trash"), + workspace="ext", + name="trash", + ) + ] + assert directories_res == directorires_expected + + # request an path where there're no folders + res = client.get( + f"/v1/private/explorer/{workspace}/_list_dir?path=folder/trash", + headers={"Authorization": f"Bearer {admin_access_token}"}, + ) + res.raise_for_status() + directories_res = res.json() + assert len(directories_res) == 0 + + # request a path that isn't a folder + res = client.get( + f"/v1/private/explorer/{workspace}/_list_dir?path=folder/trash/trash", + headers={"Authorization": f"Bearer {admin_access_token}"}, + ) + assert res.status_code == INVALID_PARAMS_STATUS_CODE, res.json() + + # try a path traversal attack + res = client.get( + f"/v1/private/explorer/{workspace}/_list_dir?path=folder/../../", + headers={"Authorization": f"Bearer {admin_access_token}"}, + ) + assert res.status_code == INVALID_PARAMS_STATUS_CODE, res.json() + + # try to access default workspase + workspace = "default" + res = client.get( + f"/v1/private/explorer/{workspace}/_list_dir?path=folder", + headers={"Authorization": f"Bearer {admin_access_token}"}, + ) + assert res.status_code == BAD_REQUEST_STATUS_CODE + + # request a workspace that doesn't exist + workspace = "ext2" + res = client.get( + f"/v1/private/explorer/{workspace}/_list_dir?path=folder", + headers={"Authorization": f"Bearer {admin_access_token}"}, + ) + assert res.status_code == INVALID_PARAMS_STATUS_CODE + + # get list of workspaces + + res = client.get( + "/v1/private/explorer/_list_workspaces", + headers={"Authorization": f"Bearer {admin_access_token}"}, + ) + expected = [ + WorkspaceMetadata( + name="ext", + ) + ] + res = res.json() + res = [WorkspaceMetadata(**e) for e in res] + assert res == expected diff --git a/tests/storage/business/test_explorer_service.py b/tests/storage/business/test_explorer_service.py new file mode 100644 index 0000000000..883e79cfca --- /dev/null +++ b/tests/storage/business/test_explorer_service.py @@ -0,0 +1,119 @@ +# Copyright (c) 2024, RTE (https://www.rte-france.com) +# +# See AUTHORS.txt +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +# This file is part of the Antares project. + +from pathlib import Path + +import pytest + +from antarest.core.config import Config, StorageConfig, WorkspaceConfig +from antarest.study.model import DEFAULT_WORKSPACE_NAME, NonStudyFolder, WorkspaceMetadata +from antarest.study.storage.explorer_service import Explorer + + +def build_config(root: Path) -> Config: + return Config( + storage=StorageConfig( + workspaces={ + DEFAULT_WORKSPACE_NAME: WorkspaceConfig(path=root / DEFAULT_WORKSPACE_NAME, groups=["toto"]), + "diese": WorkspaceConfig( + path=root / "diese", + groups=["tata"], + filter_out=["to_skip.*"], + ), + "test": WorkspaceConfig( + path=root / "test", + groups=["toto"], + filter_out=["to_skip.*"], + ), + } + ) + ) + + +@pytest.fixture +def config_scenario_a(tmp_path: Path) -> Config: + default = tmp_path / "default" + default.mkdir() + a = default / "studyA" + a.mkdir() + (a / "study.antares").touch() + + diese = tmp_path / "diese" + diese.mkdir() + c = diese / "folder/studyC" + c.mkdir(parents=True) + (c / "study.antares").touch() + + d = diese / "folder/subfolder1" + d.mkdir(parents=True) + (d / "trash").touch() + + d = diese / "folder/subfolder2" + d.mkdir(parents=True) + (d / "trash").touch() + + d = diese / "folder/subfolder3" + d.mkdir(parents=True) + (d / "trash").touch() + + e = diese / "folder/to_skip_folder" + e.mkdir(parents=True) + (e / "study.antares").touch() + + f = diese / "folder/another_folder" + f.mkdir(parents=True) + (f / "AW_NO_SCAN").touch() + (f / "study.antares").touch() + + config = build_config(tmp_path) + + return config + + +@pytest.mark.unit_test +def test_list_dir_empty_string(config_scenario_a: Config): + explorer = Explorer(config_scenario_a) + result = explorer.list_dir("diese", "") + + assert len(result) == 1 + workspace_path = config_scenario_a.get_workspace_path(workspace="diese") + assert result[0] == NonStudyFolder(path=Path("folder"), workspace="diese", name="folder") + + +@pytest.mark.unit_test +def test_list_dir_several_subfolders(config_scenario_a: Config): + explorer = Explorer(config_scenario_a) + result = explorer.list_dir("diese", "folder") + + assert len(result) == 3 + workspace_path = config_scenario_a.get_workspace_path(workspace="diese") + folder_path = Path("folder") + assert NonStudyFolder(path=(folder_path / "subfolder1"), workspace="diese", name="subfolder1") in result + assert NonStudyFolder(path=(folder_path / "subfolder2"), workspace="diese", name="subfolder2") in result + assert NonStudyFolder(path=(folder_path / "subfolder3"), workspace="diese", name="subfolder3") in result + + +@pytest.mark.unit_test +def test_list_dir_in_empty_folder(config_scenario_a: Config): + explorer = Explorer(config_scenario_a) + result = explorer.list_dir("diese", "folder/subfolder1") + + assert len(result) == 0 + + +@pytest.mark.unit_test +def test_list_workspaces(tmp_path: Path): + config = build_config(tmp_path) + explorer = Explorer(config) + + result = explorer.list_workspaces() + assert result == [WorkspaceMetadata(name="diese"), WorkspaceMetadata(name="test")] diff --git a/tests/storage/business/test_watcher.py b/tests/storage/business/test_watcher.py index 34d28db877..daebd1e0cf 100644 --- a/tests/storage/business/test_watcher.py +++ b/tests/storage/business/test_watcher.py @@ -12,19 +12,31 @@ import logging import os import typing as t +from datetime import datetime, timedelta from multiprocessing import Pool from pathlib import Path +from unittest import mock from unittest.mock import Mock import pytest from sqlalchemy import create_engine +from sqlalchemy.orm import Session from antarest.core.config import Config, StorageConfig, WorkspaceConfig -from antarest.core.exceptions import CannotScanInternalWorkspace +from antarest.core.exceptions import CannotAccessInternalWorkspace +from antarest.core.interfaces.cache import ICache +from antarest.core.model import PublicMode from antarest.core.persistence import Base +from antarest.core.tasks.service import ITaskService from antarest.core.utils.fastapi_sqlalchemy import DBSessionMiddleware -from antarest.study.model import DEFAULT_WORKSPACE_NAME +from antarest.login.model import GroupDTO +from antarest.login.service import LoginService +from antarest.study.model import DEFAULT_WORKSPACE_NAME, OwnerInfo, Study, StudyMetadataDTO +from antarest.study.repository import StudyMetadataRepository +from antarest.study.service import StudyService +from antarest.study.storage.rawstudy.raw_study_service import RawStudyService from antarest.study.storage.rawstudy.watcher import Watcher +from antarest.study.storage.variantstudy.variant_study_service import VariantStudyService from tests.storage.conftest import SimpleSyncTaskService @@ -57,18 +69,76 @@ def clean_files() -> None: os.remove(lock) -@pytest.mark.unit_test -def test_scan(tmp_path: Path): - engine = create_engine("sqlite:///:memory:", echo=False) - Base.metadata.create_all(engine) - # noinspection SpellCheckingInspection - DBSessionMiddleware( - None, - custom_engine=engine, - session_args={"autocommit": False, "autoflush": False}, +def build_study_service( + raw_study_service: RawStudyService, + repository: StudyMetadataRepository, + config: Config, + user_service: LoginService = Mock(spec=LoginService), + cache_service: ICache = Mock(spec=ICache), + variant_study_service: VariantStudyService = Mock(spec=VariantStudyService), + task_service: ITaskService = Mock(spec=ITaskService), +) -> StudyService: + return StudyService( + raw_study_service=raw_study_service, + variant_study_service=variant_study_service, + user_service=user_service, + repository=repository, + event_bus=Mock(), + task_service=task_service, + file_transfer_manager=Mock(), + cache_service=cache_service, + config=config, ) - clean_files() + +def study_to_dto(study: Study) -> StudyMetadataDTO: + return StudyMetadataDTO( + id=study.id, + name=study.name, + version=study.version, + created=str(study.created_at), + updated=str(study.updated_at), + workspace=DEFAULT_WORKSPACE_NAME, + managed=True, + type=study.type, + archived=study.archived if study.archived is not None else False, + owner=( + OwnerInfo(id=study.owner.id, name=study.owner.name) + if study.owner is not None + else OwnerInfo(name="Unknown") + ), + groups=[GroupDTO(id=group.id, name=group.name) for group in study.groups], + public_mode=study.public_mode or PublicMode.NONE, + horizon=study.additional_data.horizon, + scenario=None, + status=None, + doc=None, + folder=None, + ) + + +@pytest.fixture +def study_tree(tmp_path: Path) -> Path: + """ + Create this hierarchy + + tmp_path + ├── default + │ └── studyA + │ └── study.antares + └── diese + └── folder + ├── studyC + │ └── study.antares + ├── trash + │ └── trash + ├── another_folder + │ ├── AW_NO_SCAN + │ └── study.antares + └── subfolder + └── studyG + └── study.antares + """ default = tmp_path / "default" default.mkdir() @@ -86,24 +156,27 @@ def test_scan(tmp_path: Path): d.mkdir(parents=True) (d / "trash").touch() - e = diese / "folder/to_skip_folder" - e.mkdir(parents=True) - (e / "study.antares").touch() - f = diese / "folder/another_folder" f.mkdir(parents=True) (f / "AW_NO_SCAN").touch() (f / "study.antares").touch() + return tmp_path + + +@pytest.mark.unit_test +def test_scan(study_tree: Path): + clean_files() + service = Mock() - watcher = Watcher(build_config(tmp_path), service, task_service=SimpleSyncTaskService()) + watcher = Watcher(build_config(study_tree), service, task_service=SimpleSyncTaskService()) watcher.scan() assert service.sync_studies_on_disk.call_count == 1 call = service.sync_studies_on_disk.call_args_list[0] assert len(call.args[0]) == 1 - assert call.args[0][0].path == c + assert call.args[0][0].path == study_tree / "diese/folder/studyC" assert call.args[0][0].workspace == "diese" groups = call.args[0][0].groups assert len(groups) == 1 @@ -112,6 +185,54 @@ def test_scan(tmp_path: Path): assert call.args[1] is None +@pytest.mark.unit_test +def test_scan_recursive_false(study_tree: Path, db_session: Session): + def count_studies(): + return db_session.query(Study).count() + + clean_files() + + g = study_tree / "diese/folder/subfolder/studyG" + g.mkdir(parents=True) + (g / "study.antares").touch() + + raw_study_service = Mock(spec=RawStudyService) + raw_study_service.get_study_information.side_effect = study_to_dto + repository = StudyMetadataRepository(session=db_session, cache_service=Mock(spec=ICache)) + repository.delete = Mock() + config = build_config(study_tree) + service = build_study_service(raw_study_service, repository, config) + watcher = Watcher(config, service, task_service=SimpleSyncTaskService()) + + # at the beginning, no study in the database + assert count_studies() == 0 + + # only the studyA should be scanned, as the recursive flag is set to False + watcher.scan(recursive=False, workspace_name="diese", workspace_directory_path="folder") + assert count_studies() == 1 + + # Now studyC should be scanned, as we scan folder/subfolder which contains studyG + watcher.scan(recursive=False, workspace_name="diese", workspace_directory_path="folder/subfolder") + assert count_studies() == 2 + + # Even if we deleted stydu G, the scan shoudl not delete, as we are not scanning the folder containing it + os.remove(g / "study.antares") + watcher.scan(recursive=False, workspace_name="diese", workspace_directory_path="folder") + assert count_studies() == 2 + assert repository.delete.call_count == 0 + + # Now we scan the folder containing studyG, it should be marked for deletion but not deleted yet + watcher.scan(recursive=False, workspace_name="diese", workspace_directory_path="folder/subfolder") + assert repository.delete.call_count == 0 + + # We simulate three days went by, now a delete should be triggered + in_3_days = datetime.utcnow() + timedelta(days=3) + with mock.patch("antarest.study.service.datetime") as mock_datetime: + mock_datetime.utcnow.return_value = in_3_days + watcher.scan(recursive=False, workspace_name="diese", workspace_directory_path="folder/subfolder") + assert repository.delete.call_count == 1 + + @pytest.mark.unit_test def test_partial_scan(tmp_path: Path, caplog: t.Any): engine = create_engine("sqlite:///:memory:", echo=False) @@ -152,10 +273,10 @@ def test_partial_scan(tmp_path: Path, caplog: t.Any): service = Mock() watcher = Watcher(build_config(tmp_path), service, task_service=SimpleSyncTaskService()) - with pytest.raises(CannotScanInternalWorkspace): + with pytest.raises(CannotAccessInternalWorkspace): watcher.scan(workspace_name="default", workspace_directory_path=default) - with caplog.at_level(level=logging.INFO, logger="antarest.study.storage.rawstudy.watcher"): + with caplog.at_level(level=logging.INFO, logger="antarest.study.storage.utils"): # scan the `default` directory watcher.scan(workspace_name="test", workspace_directory_path=default) diff --git a/tests/study/storage/test_utils.py b/tests/study/storage/test_utils.py new file mode 100644 index 0000000000..6f5b907a4a --- /dev/null +++ b/tests/study/storage/test_utils.py @@ -0,0 +1,52 @@ +# Copyright (c) 2024, RTE (https://www.rte-france.com) +# +# See AUTHORS.txt +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +# This file is part of the Antares project. +from pathlib import Path + +import pytest + +from antarest.core.config import WorkspaceConfig +from antarest.study.storage.utils import is_folder_safe + + +@pytest.fixture +def workspace_config(tmp_path: Path) -> WorkspaceConfig: + return WorkspaceConfig(path=tmp_path) + + +def test_is_folder_safe_within_workspace(workspace_config: WorkspaceConfig): + # Test case: folder within the workspace + folder = "project" + assert is_folder_safe(workspace_config, folder) is True + + +def test_is_folder_safe_outside_workspace(workspace_config: WorkspaceConfig): + # Test case: folder outside the workspace + folder = "../outside" + assert is_folder_safe(workspace_config, folder) is False + + +def test_is_folder_safe_home_directory(workspace_config: WorkspaceConfig): + # Test case: folder outside the workspace + folder = "/~/project" + assert is_folder_safe(workspace_config, folder) is False + + +def test_is_folder_safe_traversal_attack(workspace_config: WorkspaceConfig): + # Test case: folder with traversal attack attempt + folder = "../../etc/passwd" + assert is_folder_safe(workspace_config, folder) is False + + +def test_is_folder_safe_nested_folder(workspace_config: WorkspaceConfig): + # Test case: nested folder within the workspace + folder = "project/subfolder" + assert is_folder_safe(workspace_config, folder) is True From 3c590c5e90af1e3cd6833b8ca817835ad8dd3226 Mon Sep 17 00:00:00 2001 From: Sylvain Leclerc Date: Thu, 31 Oct 2024 14:20:51 +0100 Subject: [PATCH 125/182] fix(installer): update installer to fix install to wrong directory (#2205) Signed-off-by: Sylvain Leclerc --- installer | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installer b/installer index eda9075b77..118c9c5d85 160000 --- a/installer +++ b/installer @@ -1 +1 @@ -Subproject commit eda9075b7798827a5679f4aeca6fc27f8e520159 +Subproject commit 118c9c5d85a0b7b0d47e6b899c7c4ed15caaa7bd From fbe044541a745bf39fca99ee038b0778992bbbce Mon Sep 17 00:00:00 2001 From: Samir Kamal <1954121+skamril@users.noreply.github.com> Date: Thu, 3 Oct 2024 15:25:09 +0200 Subject: [PATCH 126/182] refactor(ui-hooks): change 'resolved' status name by 'fulfilled' in usePromise * following ECMAScript specs * convert `PromiseStatus` to a enum like --- .../HomeView/InformationView/Notes/index.tsx | 7 +-- .../dialogs/ScenarioBuilderDialog/index.tsx | 4 +- .../dialogs/ScenarioPlaylistDialog/index.tsx | 2 +- .../Singlestudy/explore/Debug/Data/Json.tsx | 2 +- .../Singlestudy/explore/Debug/Data/Text.tsx | 2 +- .../App/Singlestudy/explore/Debug/index.tsx | 2 +- .../explore/Modelization/Areas/index.tsx | 2 +- .../AddConstraintTermDialog/index.tsx | 2 +- .../BindingConstView/index.tsx | 2 +- .../Modelization/BindingConstraints/index.tsx | 2 +- .../Modelization/Links/LinkView/index.tsx | 2 +- .../explore/Modelization/Links/index.tsx | 2 +- .../explore/Modelization/Map/index.tsx | 2 +- .../explore/Results/ResultDetails/index.tsx | 4 +- .../Singlestudy/explore/Xpansion/FileList.tsx | 2 +- .../Singlestudy/explore/Xpansion/index.tsx | 2 +- .../components/App/Studies/LauncherDialog.tsx | 8 ++-- .../src/components/App/Tasks/JobTableView.tsx | 2 +- webapp/src/components/common/TableMode.tsx | 2 +- .../common/dialogs/DigestDialog.tsx | 2 +- .../common/utils/UsePromiseCond.tsx | 43 ++++++++----------- .../src/components/wrappers/LoginWrapper.tsx | 2 +- webapp/src/hooks/usePromise.ts | 24 ++++++----- webapp/src/redux/hooks/useStudyMaps.ts | 11 +++-- webapp/src/redux/hooks/useStudySynthesis.ts | 6 +-- 25 files changed, 70 insertions(+), 71 deletions(-) diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/index.tsx b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/index.tsx index 9491982e92..feb313443e 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/index.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/index.tsx @@ -40,6 +40,7 @@ import { getAreas, getLinks } from "../../../../../../redux/selectors"; import UsePromiseCond from "../../../../../common/utils/UsePromiseCond"; import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; import useStudySynthesis from "../../../../../../redux/hooks/useStudySynthesis"; +import { PromiseStatus } from "../../../../../../hooks/usePromise"; const Root = styled(Box)(() => ({ flex: "0 0 40%", @@ -161,7 +162,7 @@ function Notes({ study }: Props) { ( + ifFulfilled={() => ( <> @@ -220,7 +221,7 @@ function Notes({ study }: Props) { }, { content: - synthesisStatus === "resolved" ? ( + synthesisStatus === PromiseStatus.Fulfilled ? ( links.length ) : ( diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/index.tsx index 3f86bc643c..6f27398eae 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/index.tsx @@ -95,7 +95,9 @@ function ScenarioBuilderDialog({ study, open, onClose }: Props) { > } + ifFulfilled={(data) => ( + + )} ifPending={() => ( )} diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioPlaylistDialog/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioPlaylistDialog/index.tsx index 80f78ef82c..abb04d0a88 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioPlaylistDialog/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioPlaylistDialog/index.tsx @@ -108,7 +108,7 @@ function ScenarioPlaylistDialog(props: Props) { > ( + ifFulfilled={(defaultValues) => ( <> + )} + + + ); +} + +export default FreezeStudy; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/index.tsx index a6db1b063f..7e4acb4654 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/index.tsx @@ -26,10 +26,12 @@ import { useTranslation } from "react-i18next"; import usePromiseHandler from "../../../../../../hooks/usePromiseHandler"; import { generateTimeSeries } from "../../../../../../services/api/studies/timeseries"; import BuildIcon from "@mui/icons-material/Build"; +import { useState } from "react"; function TimeSeriesManagement() { const { study } = useOutletContext<{ study: StudyMetadata }>(); const { t } = useTranslation(); + const [generationInProgress, setGenerationInProgress] = useState(false); const handleGenerateTs = usePromiseHandler({ fn: generateTimeSeries, @@ -45,9 +47,13 @@ function TimeSeriesManagement() { return setTimeSeriesFormFields(study.id, data.dirtyValues); }; - const handleSubmitSuccessful = () => { + const handleSubmitSuccessful = async () => { + setGenerationInProgress(true); + // The WebSocket will trigger an event after the fulfillment of the promise - handleGenerateTs({ studyId: study.id }); + await handleGenerateTs({ studyId: study.id }); + + setGenerationInProgress(false); }; //////////////////////////////////////////////////////////////// @@ -57,7 +63,10 @@ function TimeSeriesManagement() { return (
getTimeSeriesFormFields(study.id) }} + config={{ + defaultValues: () => getTimeSeriesFormFields(study.id), + disabled: generationInProgress, + }} onSubmit={handleSubmit} onSubmitSuccessful={handleSubmitSuccessful} submitButtonText={t("study.configuration.tsManagement.generateTs")} diff --git a/webapp/src/components/App/Singlestudy/index.tsx b/webapp/src/components/App/Singlestudy/index.tsx index bdf32699b6..6823d6db54 100644 --- a/webapp/src/components/App/Singlestudy/index.tsx +++ b/webapp/src/components/App/Singlestudy/index.tsx @@ -37,6 +37,7 @@ import CommandDrawer from "./Commands"; import { addWsEventListener } from "../../../services/webSocket/ws"; import useAppDispatch from "../../../redux/hooks/useAppDispatch"; import SimpleLoader from "../../common/loaders/SimpleLoader"; +import FreezeStudy from "./FreezeStudy"; import { WsEvent } from "@/services/webSocket/types"; import { WsEventType } from "@/services/webSocket/constants"; @@ -186,12 +187,14 @@ function SingleStudy(props: Props) { alignItems="center" boxSizing="border-box" overflow="hidden" + position="relative" > {isExplorer === true ? ( ) : ( )} + {openCommands && studyId && ( Date: Wed, 30 Oct 2024 09:57:09 +0100 Subject: [PATCH 141/182] feat(ui-ts): change form default values --- .../TimeSeriesManagement/index.tsx | 30 ++++++++++--------- .../TimeSeriesManagement/utils.ts | 20 +++++-------- 2 files changed, 23 insertions(+), 27 deletions(-) diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/index.tsx index 7e4acb4654..6cc5b4b211 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/index.tsx @@ -15,23 +15,23 @@ import { useOutletContext } from "react-router"; import type { StudyMetadata } from "../../../../../../common/types"; import Form from "../../../../../common/Form"; -import type { SubmitHandlerPlus } from "../../../../../common/Form/types"; +import type { + SubmitHandlerPlus, + UseFormReturnPlus, +} from "../../../../../common/Form/types"; import Fields from "./Fields"; -import { - getTimeSeriesFormFields, - setTimeSeriesFormFields, - TSFormFields, -} from "./utils"; +import { DEFAULT_VALUES, setTimeSeriesFormFields, TSFormFields } from "./utils"; import { useTranslation } from "react-i18next"; import usePromiseHandler from "../../../../../../hooks/usePromiseHandler"; import { generateTimeSeries } from "../../../../../../services/api/studies/timeseries"; import BuildIcon from "@mui/icons-material/Build"; -import { useState } from "react"; +import { useRef, useState } from "react"; function TimeSeriesManagement() { const { study } = useOutletContext<{ study: StudyMetadata }>(); const { t } = useTranslation(); - const [generationInProgress, setGenerationInProgress] = useState(false); + const [launchTaskInProgress, setLaunchTaskInProgress] = useState(false); + const apiRef = useRef>(); const handleGenerateTs = usePromiseHandler({ fn: generateTimeSeries, @@ -48,12 +48,14 @@ function TimeSeriesManagement() { }; const handleSubmitSuccessful = async () => { - setGenerationInProgress(true); + setLaunchTaskInProgress(true); - // The WebSocket will trigger an event after the fulfillment of the promise + // The WebSocket will trigger an event after the fulfillment of the promise (see `FreezeStudy`) await handleGenerateTs({ studyId: study.id }); - setGenerationInProgress(false); + setLaunchTaskInProgress(false); + + apiRef.current?.reset(DEFAULT_VALUES); }; //////////////////////////////////////////////////////////////// @@ -64,14 +66,14 @@ function TimeSeriesManagement() { getTimeSeriesFormFields(study.id), - disabled: generationInProgress, + defaultValues: DEFAULT_VALUES, + disabled: launchTaskInProgress, }} onSubmit={handleSubmit} onSubmitSuccessful={handleSubmitSuccessful} submitButtonText={t("study.configuration.tsManagement.generateTs")} submitButtonIcon={} - allowSubmitOnPristine + apiRef={apiRef} > diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/utils.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/utils.ts index 19e42b5b33..22eef49008 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/utils.ts @@ -68,26 +68,20 @@ export interface TSFormFields // Constants //////////////////////////////////////////////////////////////// -export const SEASONAL_CORRELATION_OPTIONS = Object.values(SeasonCorrelation); +export const DEFAULT_VALUES: DeepPartial = { + thermal: { + stochasticTsStatus: false, + number: 1, + }, +}; //////////////////////////////////////////////////////////////// // Functions //////////////////////////////////////////////////////////////// -function makeRequestURL(studyId: StudyMetadata["id"]): string { - return `v1/studies/${studyId}/config/timeseries/form`; -} - -export async function getTimeSeriesFormFields( - studyId: StudyMetadata["id"], -): Promise { - const res = await client.get(makeRequestURL(studyId)); - return res.data; -} - export function setTimeSeriesFormFields( studyId: StudyMetadata["id"], values: DeepPartial, ): Promise { - return client.put(makeRequestURL(studyId), values); + return client.put(`v1/studies/${studyId}/config/timeseries/form`, values); } From b757c94ca7997b40fd971184793c431f6a4b3776 Mon Sep 17 00:00:00 2001 From: Samir Kamal <1954121+skamril@users.noreply.github.com> Date: Wed, 30 Oct 2024 09:57:44 +0100 Subject: [PATCH 142/182] feat(ui-ts): add rule for number value --- .../explore/Configuration/TimeSeriesManagement/Fields.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/Fields.tsx index 4f7d3cee46..0a361dc214 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/Fields.tsx @@ -26,6 +26,7 @@ import { useFormContextPlus } from "../../../../../common/Form"; import { TSFormFields, TSType } from "./utils"; import BooleanFE from "../../../../../common/fieldEditors/BooleanFE"; import { useTranslation } from "react-i18next"; +import { validateNumber } from "@/utils/validation/number"; const borderStyle = "1px solid rgba(255, 255, 255, 0.12)"; @@ -89,6 +90,7 @@ function Fields() { control={control} size="small" disabled={isReadyMade} + rules={{ validate: validateNumber({ min: 1 }) }} sx={{ width: 110 }} /> From 79a561e83513951c9571c6a6695213c475340230 Mon Sep 17 00:00:00 2001 From: Samir Kamal <1954121+skamril@users.noreply.github.com> Date: Wed, 6 Nov 2024 14:13:54 +0100 Subject: [PATCH 143/182] fix(ui-study): issue with WS event for tasks update --- .../App/Singlestudy/FreezeStudy.tsx | 50 ++++++++++++++++++- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/webapp/src/components/App/Singlestudy/FreezeStudy.tsx b/webapp/src/components/App/Singlestudy/FreezeStudy.tsx index 2b00085e48..62147184d3 100644 --- a/webapp/src/components/App/Singlestudy/FreezeStudy.tsx +++ b/webapp/src/components/App/Singlestudy/FreezeStudy.tsx @@ -13,7 +13,7 @@ */ import { StudyMetadata } from "@/common/types"; -import { getTasks } from "@/services/api/tasks"; +import { getTask, getTasks } from "@/services/api/tasks"; import { TaskStatus, TaskType } from "@/services/api/tasks/constants"; import type { TaskDTO, TTaskType } from "@/services/api/tasks/types"; import { WsChannel, WsEventType } from "@/services/webSocket/constants"; @@ -35,6 +35,7 @@ import { import { useEffect, useState } from "react"; import LinearProgressWithLabel from "@/components/common/LinearProgressWithLabel"; import { useTranslation } from "react-i18next"; +import useAutoUpdateRef from "@/hooks/useAutoUpdateRef"; const BLOCKING_TASK_TYPES = [ TaskType.UpgradeStudy, @@ -65,7 +66,9 @@ function FreezeStudy({ studyId }: Props) { const hasLoadingTask = !!blockingTasks.find( (task) => task.progress !== PROGRESS_COMPLETED && task.error === undefined, ); + const blockingTasksRef = useAutoUpdateRef(blockingTasks); + // Fetch blocking tasks and subscribe to their WebSocket channels useEffect(() => { let ignore = false; // Prevent race condition @@ -87,6 +90,14 @@ function FreezeStudy({ studyId }: Props) { } }); + return () => { + ignore = true; + unsubscribeWsChannels(); + }; + }, [studyId]); + + // WebSockets listener + useEffect(() => { const listener = (event: WsEvent) => { switch (event.type) { case WsEventType.TaskAdded: { @@ -103,6 +114,9 @@ function FreezeStudy({ studyId }: Props) { // For getting other events subscribeWsChannels(getChannel(id)); + + // Workaround to fix an issue with WebSocket: see comment below + forceUpdate(id); } break; } @@ -141,10 +155,42 @@ function FreezeStudy({ studyId }: Props) { addWsEventListener(listener); + // Workaround to fix an issue with WebSocket: the subscribe to the task channel + // may be made after the completion of the task when it end quickly + + function forceUpdate(taskId: BlockingTask["id"]) { + getTask({ id: taskId }).then((task) => { + if (task.status === TaskStatus.Failed) { + listener({ + type: WsEventType.TaskFailed, + payload: { + id: task.id, + message: "", + type: task.type!, + }, + }); + } else if (task.status === TaskStatus.Completed) { + listener({ + type: WsEventType.TaskCompleted, + payload: { + id: task.id, + message: "", + type: task.type!, + }, + }); + } + }); + } + + const intervalId = window.setInterval( + () => blockingTasksRef.current.forEach(({ id }) => forceUpdate(id)), + 15000, + ); + return () => { - ignore = true; removeWsEventListener(listener); unsubscribeWsChannels(); + window.clearInterval(intervalId); }; }, [studyId]); From 423008d4f7159bebdc94cf93a7d75e2bbea7fd4c Mon Sep 17 00:00:00 2001 From: Samir Kamal <1954121+skamril@users.noreply.github.com> Date: Wed, 6 Nov 2024 15:55:47 +0100 Subject: [PATCH 144/182] refactor(ui-ws): code review --- webapp/src/redux/ducks/studies.ts | 6 +- webapp/src/services/webSocket/types.ts | 144 ++++++++++++++----------- 2 files changed, 86 insertions(+), 64 deletions(-) diff --git a/webapp/src/redux/ducks/studies.ts b/webapp/src/redux/ducks/studies.ts index 7585850ef1..3b3e8b04d2 100644 --- a/webapp/src/redux/ducks/studies.ts +++ b/webapp/src/redux/ducks/studies.ts @@ -36,7 +36,7 @@ import { createThunk, } from "../utils"; import { setDefaultAreaLinkSelection } from "./studySyntheses"; -import type { StudyPayload } from "@/services/webSocket/types"; +import type { StudyEventPayload } from "@/services/webSocket/types"; const studiesAdapter = createEntityAdapter(); @@ -194,7 +194,7 @@ export const createStudy = createAsyncThunk< export const setStudy = createAsyncThunk< StudyMetadata, - StudyPayload, + StudyEventPayload, AppAsyncThunkConfig >(n("SET_STUDY"), ({ id }) => api.getStudyMetadata(id)); @@ -205,7 +205,7 @@ interface StudyDeleteInfo { export const deleteStudy = createAsyncThunk< StudyMetadata["id"], - StudyDeleteInfo | StudyPayload, + StudyDeleteInfo | StudyEventPayload, AppAsyncThunkConfig >(n("DELETE_STUDY"), async (arg, { dispatch, getState, rejectWithValue }) => { let studyId: string; diff --git a/webapp/src/services/webSocket/types.ts b/webapp/src/services/webSocket/types.ts index eced4a203e..2c984c42c1 100644 --- a/webapp/src/services/webSocket/types.ts +++ b/webapp/src/services/webSocket/types.ts @@ -44,13 +44,13 @@ export type TWsEventType = O.UnionOf; // Payloads //////////////////////////////////////////////////////////////// -export interface StudyPayload { +export interface StudyEventPayload { id: string; name: string; workspace: string; } -export interface StudyJobLogUpdatePayload { +export interface StudyJobLogUpdateEventPayload { log: string; job_id: string; study_id: StudyMetadata["id"]; @@ -63,72 +63,94 @@ export interface TaskEventPayload { study_id?: StudyMetadata["id"]; } -export interface TsGenerationProgressPayload { +export interface TsGenerationProgressEventPayload { task_id: TaskDTO["id"]; progress: number; } //////////////////////////////////////////////////////////////// -// Event +// Events //////////////////////////////////////////////////////////////// +interface StudyJobEvent { + type: + | typeof WsEventType.StudyJobStarted + | typeof WsEventType.StudyJobCompleted + | typeof WsEventType.StudyJobStatusUpdate; + payload: LaunchJobDTO; +} + +interface StudyEvent { + type: + | typeof WsEventType.StudyCreated + | typeof WsEventType.StudyEdited + | typeof WsEventType.StudyDeleted; + payload: StudyEventPayload; +} + +interface StudyDataEvent { + type: typeof WsEventType.StudyDataEdited; + payload: GenericInfo; +} + +interface MaintenanceModeEvent { + type: typeof WsEventType.MaintenanceMode; + payload: boolean; +} + +interface MessageInfoEvent { + type: typeof WsEventType.MessageInfo; + payload: string; +} + +interface StudyVariantGenerationCommandResultEvent { + type: typeof WsEventType.StudyVariantGenerationCommandResult; + payload: CommandResultDTO; +} + +interface TaskEvent { + type: + | typeof WsEventType.TaskAdded + | typeof WsEventType.TaskCompleted + | typeof WsEventType.TaskFailed; + payload: TaskEventPayload; +} + +interface StudyJobLogUpdateEvent { + type: typeof WsEventType.StudyJobLogUpdate; + payload: StudyJobLogUpdateEventPayload; +} + +interface LaunchProgressEvent { + type: typeof WsEventType.LaunchProgress; + payload: LaunchJobProgressDTO; +} + +interface DownloadEvent { + type: + | typeof WsEventType.DownloadCreated + | typeof WsEventType.DownloadReady + | typeof WsEventType.DownloadFailed + | typeof WsEventType.DownloadExpired; + payload: FileDownloadDTO; +} + +interface TsGenerationProgressEvent { + type: typeof WsEventType.TsGenerationProgress; + payload: TsGenerationProgressEventPayload; +} + export type WsEvent = - | { - type: - | typeof WsEventType.StudyJobStarted - | typeof WsEventType.StudyJobCompleted - | typeof WsEventType.StudyJobStatusUpdate; - payload: LaunchJobDTO; - } - | { - type: - | typeof WsEventType.StudyCreated - | typeof WsEventType.StudyEdited - | typeof WsEventType.StudyDeleted; - payload: StudyPayload; - } - | { - type: typeof WsEventType.StudyDataEdited; - payload: GenericInfo; - } - | { - type: typeof WsEventType.MaintenanceMode; - payload: boolean; - } - | { - type: typeof WsEventType.MessageInfo; - payload: string; - } - | { - type: typeof WsEventType.StudyVariantGenerationCommandResult; - payload: CommandResultDTO; - } - | { - type: - | typeof WsEventType.TaskAdded - | typeof WsEventType.TaskCompleted - | typeof WsEventType.TaskFailed; - payload: TaskEventPayload; - } - | { - type: typeof WsEventType.StudyJobLogUpdate; - payload: StudyJobLogUpdatePayload; - } - | { - type: typeof WsEventType.LaunchProgress; - payload: LaunchJobProgressDTO; - } - | { - type: - | typeof WsEventType.DownloadCreated - | typeof WsEventType.DownloadReady - | typeof WsEventType.DownloadFailed - | typeof WsEventType.DownloadExpired; - payload: FileDownloadDTO; - } - | { - type: typeof WsEventType.TsGenerationProgress; - payload: TsGenerationProgressPayload; - }; + | StudyJobEvent + | StudyEvent + | StudyDataEvent + | MaintenanceModeEvent + | MessageInfoEvent + | StudyVariantGenerationCommandResultEvent + | TaskEvent + | StudyJobLogUpdateEvent + | LaunchProgressEvent + | DownloadEvent + | TsGenerationProgressEvent; export type WsEventListener = (message: WsEvent) => void; From f5f6f818913f5402b3520859d93eeaf48e308c5d Mon Sep 17 00:00:00 2001 From: Samir Kamal <1954121+skamril@users.noreply.github.com> Date: Wed, 6 Nov 2024 17:13:42 +0100 Subject: [PATCH 145/182] feat(ui-i18n): correct french keys --- webapp/public/locales/fr/main.json | 4 ++-- webapp/src/components/App/Singlestudy/FreezeStudy.tsx | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/webapp/public/locales/fr/main.json b/webapp/public/locales/fr/main.json index 596ab1e68b..2061278b16 100644 --- a/webapp/public/locales/fr/main.json +++ b/webapp/public/locales/fr/main.json @@ -368,8 +368,8 @@ "study.configuration.tsManagement.status.toBeGenerated": "À générer", "study.configuration.tsManagement.status.readyMade": "Prête à l'emploi", "study.configuration.tsManagement.generateTs": "Générer les TS", - "study.configuration.tsManagement.generateTs.error": "Échec de l'exécution de la tâche de génération de TS", - "study.configuration.tsManagement.generateTs.pending": "Lancement de la tâche de génération de TS...", + "study.configuration.tsManagement.generateTs.error": "Échec de l'exécution de la tâche de génération des TS", + "study.configuration.tsManagement.generateTs.pending": "Lancement de la tâche de génération des TS...", "study.configuration.optimization.legend.general": "Générale", "study.configuration.optimization.legend.links": "Liens", "study.configuration.optimization.legend.thermalClusters": "Cluster thermiques", diff --git a/webapp/src/components/App/Singlestudy/FreezeStudy.tsx b/webapp/src/components/App/Singlestudy/FreezeStudy.tsx index 62147184d3..d4837b4a02 100644 --- a/webapp/src/components/App/Singlestudy/FreezeStudy.tsx +++ b/webapp/src/components/App/Singlestudy/FreezeStudy.tsx @@ -43,7 +43,7 @@ const BLOCKING_TASK_TYPES = [ ] as const; const PROGRESS_INDETERMINATE = -1; -const PROGRESS_COMPLETED = 100; +const PROGRESS_COMPLETE = 100; function getChannel(id: TaskDTO["id"]) { return WsChannel.Task + id; @@ -64,7 +64,7 @@ function FreezeStudy({ studyId }: Props) { const [blockingTasks, setBlockingTasks] = useState([]); const { t } = useTranslation(); const hasLoadingTask = !!blockingTasks.find( - (task) => task.progress !== PROGRESS_COMPLETED && task.error === undefined, + (task) => task.progress !== PROGRESS_COMPLETE && task.error === undefined, ); const blockingTasksRef = useAutoUpdateRef(blockingTasks); @@ -144,7 +144,7 @@ function FreezeStudy({ studyId }: Props) { const { id } = event.payload; setBlockingTasks((tasks) => tasks.map((task) => - task.id === id ? { ...task, progress: PROGRESS_COMPLETED } : task, + task.id === id ? { ...task, progress: PROGRESS_COMPLETE } : task, ), ); unsubscribeWsChannels(getChannel(id)); From d4a724e3fbf8f77daa6de77ae6d3c7bdf6dafacc Mon Sep 17 00:00:00 2001 From: Samir Kamal <1954121+skamril@users.noreply.github.com> Date: Thu, 7 Nov 2024 10:42:25 +0100 Subject: [PATCH 146/182] feat(ui-commons): add default error message in LinearProgressWithLabel --- webapp/public/locales/en/main.json | 1 + webapp/public/locales/fr/main.json | 1 + webapp/src/components/common/LinearProgressWithLabel.tsx | 4 +++- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/webapp/public/locales/en/main.json b/webapp/public/locales/en/main.json index 113ebe5c09..dc477ce30a 100644 --- a/webapp/public/locales/en/main.json +++ b/webapp/public/locales/en/main.json @@ -83,6 +83,7 @@ "global.time.annual": "Annual", "global.time.weekShort": "W.", "global.update.success": "Update successful", + "global.error": "Error", "global.errorLogs": "Error logs", "global.error.emptyName": "Name cannot be empty", "global.error.failedtoretrievejobs": "Failed to retrieve job information", diff --git a/webapp/public/locales/fr/main.json b/webapp/public/locales/fr/main.json index 2061278b16..7da253b322 100644 --- a/webapp/public/locales/fr/main.json +++ b/webapp/public/locales/fr/main.json @@ -83,6 +83,7 @@ "global.time.annual": "Annuel", "global.time.weekShort": "S.", "global.update.success": "Mise à jour réussie", + "global.error": "Erreur", "global.errorLogs": "Logs d'erreurs", "global.error.emptyName": "Le nom ne peut pas être vide", "global.error.failedtoretrievejobs": "Échec de la récupération des tâches", diff --git a/webapp/src/components/common/LinearProgressWithLabel.tsx b/webapp/src/components/common/LinearProgressWithLabel.tsx index 2bf34531d3..77c5491c91 100644 --- a/webapp/src/components/common/LinearProgressWithLabel.tsx +++ b/webapp/src/components/common/LinearProgressWithLabel.tsx @@ -24,6 +24,7 @@ import { import InfoIcon from "@mui/icons-material/Info"; import * as R from "ramda"; import { mergeSxProp } from "@/utils/muiUtils"; +import { useTranslation } from "react-i18next"; function getColor(value = 0, error = false) { if (error) { @@ -47,6 +48,7 @@ function LinearProgressWithLabel(props: LinearProgressWithLabelProps) { const { value, variant, tooltip, error, sx } = props; const progress = R.clamp(0, 100, value || 0); const hasError = error !== undefined; + const { t } = useTranslation(); const content = ( {typeof error === "string" && ( - + )} From 6534143ac98eca45e8ad47ce5dca17306043834b Mon Sep 17 00:00:00 2001 From: Samir Kamal <1954121+skamril@users.noreply.github.com> Date: Thu, 7 Nov 2024 10:43:57 +0100 Subject: [PATCH 147/182] fix(ui-study): update blocking tasks only if necessary and keep result messages --- .../App/Singlestudy/FreezeStudy.tsx | 63 +++++++++---------- 1 file changed, 30 insertions(+), 33 deletions(-) diff --git a/webapp/src/components/App/Singlestudy/FreezeStudy.tsx b/webapp/src/components/App/Singlestudy/FreezeStudy.tsx index d4837b4a02..ad19fd5adc 100644 --- a/webapp/src/components/App/Singlestudy/FreezeStudy.tsx +++ b/webapp/src/components/App/Singlestudy/FreezeStudy.tsx @@ -37,6 +37,17 @@ import LinearProgressWithLabel from "@/components/common/LinearProgressWithLabel import { useTranslation } from "react-i18next"; import useAutoUpdateRef from "@/hooks/useAutoUpdateRef"; +interface BlockingTask { + id: TaskDTO["id"]; + type: TTaskType; + progress: number; + error?: string; +} + +interface FreezeStudyProps { + studyId: StudyMetadata["id"]; +} + const BLOCKING_TASK_TYPES = [ TaskType.UpgradeStudy, TaskType.ThermalClusterSeriesGeneration, @@ -49,23 +60,14 @@ function getChannel(id: TaskDTO["id"]) { return WsChannel.Task + id; } -interface BlockingTask { - id: TaskDTO["id"]; - type: TTaskType; - progress: number; - error?: string; -} - -interface Props { - studyId: StudyMetadata["id"]; +function isLoadingTask(task: BlockingTask) { + return task.progress !== PROGRESS_COMPLETE && task.error === undefined; } -function FreezeStudy({ studyId }: Props) { +function FreezeStudy({ studyId }: FreezeStudyProps) { const [blockingTasks, setBlockingTasks] = useState([]); const { t } = useTranslation(); - const hasLoadingTask = !!blockingTasks.find( - (task) => task.progress !== PROGRESS_COMPLETE && task.error === undefined, - ); + const hasLoadingTask = !!blockingTasks.find(isLoadingTask); const blockingTasksRef = useAutoUpdateRef(blockingTasks); // Fetch blocking tasks and subscribe to their WebSocket channels @@ -160,32 +162,27 @@ function FreezeStudy({ studyId }: Props) { function forceUpdate(taskId: BlockingTask["id"]) { getTask({ id: taskId }).then((task) => { + const payload = { + id: task.id, + message: task.result?.message || "", + type: task.type!, + }; + if (task.status === TaskStatus.Failed) { - listener({ - type: WsEventType.TaskFailed, - payload: { - id: task.id, - message: "", - type: task.type!, - }, - }); + listener({ type: WsEventType.TaskFailed, payload }); } else if (task.status === TaskStatus.Completed) { - listener({ - type: WsEventType.TaskCompleted, - payload: { - id: task.id, - message: "", - type: task.type!, - }, - }); + listener({ type: WsEventType.TaskCompleted, payload }); } }); } - const intervalId = window.setInterval( - () => blockingTasksRef.current.forEach(({ id }) => forceUpdate(id)), - 15000, - ); + const intervalId = window.setInterval(() => { + blockingTasksRef.current.forEach((task) => { + if (isLoadingTask(task)) { + forceUpdate(task.id); + } + }); + }, 15000); return () => { removeWsEventListener(listener); From beddb1db999c785a9b0dd907a5ca80dacde18632 Mon Sep 17 00:00:00 2001 From: belthlemar Date: Thu, 7 Nov 2024 11:18:03 +0100 Subject: [PATCH 148/182] fix(ts-gen): change pandas casting float to int with python3.11 --- .../generate_thermal_cluster_timeseries.py | 3 +- ...est_generate_thermal_cluster_timeseries.py | 47 ++++++++++++------- 2 files changed, 32 insertions(+), 18 deletions(-) diff --git a/antarest/study/storage/variantstudy/model/command/generate_thermal_cluster_timeseries.py b/antarest/study/storage/variantstudy/model/command/generate_thermal_cluster_timeseries.py index cb7c758b1a..f7e8626806 100644 --- a/antarest/study/storage/variantstudy/model/command/generate_thermal_cluster_timeseries.py +++ b/antarest/study/storage/variantstudy/model/command/generate_thermal_cluster_timeseries.py @@ -121,7 +121,8 @@ def _build_timeseries( results = generator.generate_time_series(cluster, nb_years) generated_matrix = results.available_power # 9- Write the matrix inside the input folder. - df = pd.DataFrame(data=generated_matrix, dtype=int) + df = pd.DataFrame(data=generated_matrix) + df = df[list(df.columns)].astype(int) target_path = self._build_matrix_path(tmp_path / area_id / thermal.id.lower()) dump_dataframe(df, target_path, None) # 10- Notify the progress to the notifier diff --git a/tests/integration/study_data_blueprint/test_generate_thermal_cluster_timeseries.py b/tests/integration/study_data_blueprint/test_generate_thermal_cluster_timeseries.py index b328f1b2e4..7c143fb2e4 100644 --- a/tests/integration/study_data_blueprint/test_generate_thermal_cluster_timeseries.py +++ b/tests/integration/study_data_blueprint/test_generate_thermal_cluster_timeseries.py @@ -13,7 +13,7 @@ import numpy as np from starlette.testclient import TestClient -from antarest.core.tasks.model import TaskStatus +from antarest.core.tasks.model import TaskDTO, TaskStatus from tests.integration.assets import ASSETS_DIR from tests.integration.prepare_proxy import PreparerProxy from tests.integration.utils import wait_task_completion @@ -22,6 +22,15 @@ class TestGenerateThermalClusterTimeseries: + @staticmethod + def _generate_timeseries(client: TestClient, user_access_token: str, study_id: str) -> TaskDTO: + res = client.put(f"/v1/studies/{study_id}/timeseries/generate") + assert res.status_code == 200 + task_id = res.json() + assert task_id + task = wait_task_completion(client, user_access_token, task_id) + return task + def test_lifecycle_nominal(self, client: TestClient, user_access_token: str) -> None: # Study preparation client.headers = {"Authorization": f"Bearer {user_access_token}"} @@ -61,11 +70,7 @@ def test_lifecycle_nominal(self, client: TestClient, user_access_token: str) -> assert res.status_code == 204 # Timeseries generation should succeed - res = client.put(f"/v1/studies/{study_id}/timeseries/generate") - assert res.status_code == 200 - task_id = res.json() - assert task_id - task = wait_task_completion(client, user_access_token, task_id) + task = self._generate_timeseries(client, user_access_token, study_id) assert task.status == TaskStatus.COMPLETED # Check matrices @@ -94,7 +99,7 @@ def test_lifecycle_nominal(self, client: TestClient, user_access_token: str) -> data = res.json()["data"] assert data == [[]] # no generation c.f. gen-ts parameter - def test_errors(self, client: TestClient, user_access_token: str) -> None: + def test_errors_and_limit_cases(self, client: TestClient, user_access_token: str) -> None: # Study Preparation client.headers = {"Authorization": f"Bearer {user_access_token}"} preparer = PreparerProxy(client, user_access_token) @@ -105,14 +110,26 @@ def test_errors(self, client: TestClient, user_access_token: str) -> None: cluster_name = "Cluster 1" preparer.create_thermal(study_id, area1_id, name=cluster_name, group="Lignite") # Timeseries generation fails because there's no nominal power - res = client.put(f"/v1/studies/{study_id}/timeseries/generate") - assert res.status_code == 200 - task_id = res.json() - assert task_id - task = wait_task_completion(client, user_access_token, task_id) + task = self._generate_timeseries(client, user_access_token, study_id) assert task.status == TaskStatus.FAILED assert "Nominal power must be strictly positive, got 0.0" in task.result.message + # Puts the nominal power as a float + body = {"nominalCapacity": 4.4} + res = client.patch(f"/v1/studies/{study_id}/areas/{area1_id}/clusters/thermal/{cluster_name}", json=body) + assert res.status_code in {200, 201} + # Timeseries generation should succeed and produce results as int. + task = self._generate_timeseries(client, user_access_token, study_id) + assert task.status == TaskStatus.COMPLETED + # Check matrix contains 4 instead of 4.4 + res = client.get( + f"/v1/studies/{study_id}/raw", + params={"path": f"input/thermal/series/{area1_id}/{cluster_name.lower()}/series"}, + ) + assert res.status_code == 200 + data = res.json()["data"] + assert data == 8760 * [[4]] + def test_advanced_results(self, client: TestClient, user_access_token: str) -> None: # Study Preparation client.headers = {"Authorization": f"Bearer {user_access_token}"} @@ -197,11 +214,7 @@ def test_advanced_results(self, client: TestClient, user_access_token: str) -> N expected_matrix = np.loadtxt(TIMESERIES_ASSETS_DIR.joinpath(f"{test_case}.txt"), delimiter="\t").tolist() # Generate timeseries - res = client.put(f"/v1/studies/{study_id}/timeseries/generate") - assert res.status_code == 200 - task_id = res.json() - assert task_id - task = wait_task_completion(client, user_access_token, task_id) + task = self._generate_timeseries(client, user_access_token, study_id) assert task.status == TaskStatus.COMPLETED # Compare results From d4abd29d96962b8d58b4eab9076499dcdf669582 Mon Sep 17 00:00:00 2001 From: Samir Kamal <1954121+skamril@users.noreply.github.com> Date: Thu, 7 Nov 2024 17:52:10 +0100 Subject: [PATCH 149/182] fix(ui-ws): rename the task progress event type (#2209) --- antarest/core/interfaces/eventbus.py | 2 +- webapp/src/components/App/Singlestudy/FreezeStudy.tsx | 2 +- webapp/src/services/webSocket/constants.ts | 2 +- webapp/src/services/webSocket/types.ts | 10 +++++----- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/antarest/core/interfaces/eventbus.py b/antarest/core/interfaces/eventbus.py index c590233f43..a60aaf481a 100644 --- a/antarest/core/interfaces/eventbus.py +++ b/antarest/core/interfaces/eventbus.py @@ -33,6 +33,7 @@ class EventType(StrEnum): STUDY_VARIANT_GENERATION_COMMAND_RESULT = "STUDY_VARIANT_GENERATION_COMMAND_RESULT" TASK_ADDED = "TASK_ADDED" TASK_RUNNING = "TASK_RUNNING" + TASK_PROGRESS = "TASK_PROGRESS" TASK_COMPLETED = "TASK_COMPLETED" TASK_FAILED = "TASK_FAILED" TASK_CANCEL_REQUEST = "TASK_CANCEL_REQUEST" @@ -46,7 +47,6 @@ class EventType(StrEnum): WORKER_TASK_STARTED = "WORKER_TASK_STARTED" WORKER_TASK_ENDED = "WORKER_TASK_ENDED" LAUNCH_PROGRESS = "LAUNCH_PROGRESS" - TASK_PROGRESS = "TASK_PROGRESS" class EventChannelDirectory: diff --git a/webapp/src/components/App/Singlestudy/FreezeStudy.tsx b/webapp/src/components/App/Singlestudy/FreezeStudy.tsx index ad19fd5adc..7462d5ccd4 100644 --- a/webapp/src/components/App/Singlestudy/FreezeStudy.tsx +++ b/webapp/src/components/App/Singlestudy/FreezeStudy.tsx @@ -122,7 +122,7 @@ function FreezeStudy({ studyId }: FreezeStudyProps) { } break; } - case WsEventType.TsGenerationProgress: { + case WsEventType.TaskProgress: { setBlockingTasks((tasks) => tasks.map((task) => task.id === event.payload.task_id diff --git a/webapp/src/services/webSocket/constants.ts b/webapp/src/services/webSocket/constants.ts index 5611f21b1a..bcc1edafb9 100644 --- a/webapp/src/services/webSocket/constants.ts +++ b/webapp/src/services/webSocket/constants.ts @@ -28,6 +28,7 @@ export const WsEventType = { "STUDY_VARIANT_GENERATION_COMMAND_RESULT", TaskAdded: "TASK_ADDED", TaskRunning: "TASK_RUNNING", + TaskProgress: "TASK_PROGRESS", TaskCompleted: "TASK_COMPLETED", TaskFailed: "TASK_FAILED", TaskCancelRequest: "TASK_CANCEL_REQUEST", @@ -41,7 +42,6 @@ export const WsEventType = { WorkerTaskStarted: "WORKER_TASK_STARTED", WorkerTaskEnded: "WORKER_TASK_ENDED", LaunchProgress: "LAUNCH_PROGRESS", - TsGenerationProgress: "TS_GENERATION_PROGRESS", } as const; export const WsChannel = { diff --git a/webapp/src/services/webSocket/types.ts b/webapp/src/services/webSocket/types.ts index 2c984c42c1..d8100a7313 100644 --- a/webapp/src/services/webSocket/types.ts +++ b/webapp/src/services/webSocket/types.ts @@ -63,7 +63,7 @@ export interface TaskEventPayload { study_id?: StudyMetadata["id"]; } -export interface TsGenerationProgressEventPayload { +export interface TaskProgressEventPayload { task_id: TaskDTO["id"]; progress: number; } @@ -135,9 +135,9 @@ interface DownloadEvent { payload: FileDownloadDTO; } -interface TsGenerationProgressEvent { - type: typeof WsEventType.TsGenerationProgress; - payload: TsGenerationProgressEventPayload; +interface TaskProgressEvent { + type: typeof WsEventType.TaskProgress; + payload: TaskProgressEventPayload; } export type WsEvent = @@ -151,6 +151,6 @@ export type WsEvent = | StudyJobLogUpdateEvent | LaunchProgressEvent | DownloadEvent - | TsGenerationProgressEvent; + | TaskProgressEvent; export type WsEventListener = (message: WsEvent) => void; From 83f2331b06e546e8aefaafc66fe73509c996cf53 Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Fri, 8 Nov 2024 14:31:51 +0100 Subject: [PATCH 150/182] fix(export): allow digest file download (#2210) --- antarest/study/service.py | 11 +++- .../test_download_matrices.py | 51 +++++-------------- 2 files changed, 23 insertions(+), 39 deletions(-) diff --git a/antarest/study/service.py b/antarest/study/service.py index d3cc605dab..b9bfe4f86c 100644 --- a/antarest/study/service.py +++ b/antarest/study/service.py @@ -2655,12 +2655,19 @@ def get_matrix_with_index_and_header( hydro_matrix = self.correlation_manager.get_correlation_matrix(all_areas, study, []) # type: ignore return pd.DataFrame(data=hydro_matrix.data, columns=hydro_matrix.columns, index=hydro_matrix.index) + # Gets the data and checks given path existence matrix_obj = self.get(study_id, path, depth=3, formatted=True, params=parameters) - if set(matrix_obj) != {"data", "index", "columns"}: + + # Checks that the provided path refers to a matrix + url = path.split("/") + parent_dir = self.get(study_id, "/".join(url[:-1]), depth=3, formatted=True, params=parameters) + target_path = parent_dir[url[-1]] + if not isinstance(target_path, str) or not target_path.startswith(("matrix://", "matrixfile://")): raise IncorrectPathError(f"The provided path does not point to a valid matrix: '{path}'") + + # Builds the dataframe if not matrix_obj["data"]: return pd.DataFrame() - df_matrix = pd.DataFrame(**matrix_obj) if with_index: matrix_index = self.get_input_matrix_startdate(study_id, path, parameters) diff --git a/tests/integration/raw_studies_blueprint/test_download_matrices.py b/tests/integration/raw_studies_blueprint/test_download_matrices.py index 25406cdb23..f4b1519d4a 100644 --- a/tests/integration/raw_studies_blueprint/test_download_matrices.py +++ b/tests/integration/raw_studies_blueprint/test_download_matrices.py @@ -124,6 +124,7 @@ class TestDownloadMatrices: def test_download_matrices(self, client: TestClient, user_access_token: str, internal_study_id: str) -> None: user_headers = {"Authorization": f"Bearer {user_access_token}"} + client.headers = user_headers # ===================== # STUDIES PREPARATION @@ -169,11 +170,7 @@ def test_download_matrices(self, client: TestClient, user_access_token: str, int ]: # Export the matrix in CSV format (which is the default format) # and retrieve it as binary content (a ZIP-like file). - res = client.get( - f"/v1/studies/{uuid}/raw/download", - params={"path": path}, - headers=user_headers, - ) + res = client.get(f"/v1/studies/{uuid}/raw/download", params={"path": path}) assert res.status_code == 200 assert res.headers["content-type"] == "text/csv; charset=utf-8" @@ -192,11 +189,7 @@ def test_download_matrices(self, client: TestClient, user_access_token: str, int assert second_date.hour == 1 # asserts that the result is the same as the one we get with the classic get /raw endpoint - res = client.get( - f"/v1/studies/{uuid}/raw", - params={"path": path, "formatted": True}, - headers=user_headers, - ) + res = client.get(f"/v1/studies/{uuid}/raw", params={"path": path, "formatted": True}) expected_matrix = res.json() expected_matrix["columns"] = [f"TS-{n + 1}" for n in expected_matrix["columns"]] @@ -222,7 +215,6 @@ def test_download_matrices(self, client: TestClient, user_access_token: str, int res = client.get( f"/v1/studies/{study_820_id}/raw/download", params={"path": raw_matrix_path, "format": "TSV", "header": header, "index": index}, - headers=user_headers, ) assert res.status_code == 200 assert res.headers["content-type"] == "text/tab-separated-values; charset=utf-8" @@ -243,7 +235,6 @@ def test_download_matrices(self, client: TestClient, user_access_token: str, int res = client.get( f"/v1/studies/{internal_study_id}/raw/download", params={"path": "input/links/de/fr", "format": "tsv", "index": False}, - headers=user_headers, ) assert res.status_code == 200 content = io.BytesIO(res.content) @@ -261,9 +252,7 @@ def test_download_matrices(self, client: TestClient, user_access_token: str, int # tests links headers after v8.2 res = client.get( - f"/v1/studies/{study_820_id}/raw/download", - params={"path": "input/links/de/fr_parameters", "format": "tsv"}, - headers=user_headers, + f"/v1/studies/{study_820_id}/raw/download", params={"path": "input/links/de/fr_parameters", "format": "tsv"} ) assert res.status_code == 200 content = io.BytesIO(res.content) @@ -279,9 +268,7 @@ def test_download_matrices(self, client: TestClient, user_access_token: str, int # allocation and correlation matrices for path in ["input/hydro/allocation", "input/hydro/correlation"]: - res = client.get( - f"/v1/studies/{study_820_id}/raw/download", params={"path": path, "format": "tsv"}, headers=user_headers - ) + res = client.get(f"/v1/studies/{study_820_id}/raw/download", params={"path": path, "format": "tsv"}) assert res.status_code == 200 content = io.BytesIO(res.content) dataframe = pd.read_csv(content, index_col=0, sep="\t") @@ -292,7 +279,6 @@ def test_download_matrices(self, client: TestClient, user_access_token: str, int res = client.get( f"/v1/studies/{internal_study_id}/raw/download", params={"path": "input/hydro/common/capacity/waterValues_de", "format": "tsv"}, - headers=user_headers, ) assert res.status_code == 200 content = io.BytesIO(res.content) @@ -303,7 +289,6 @@ def test_download_matrices(self, client: TestClient, user_access_token: str, int res = client.get( f"/v1/studies/{study_820_id}/raw/download", params={"path": "input/thermal/prepro/de/01_solar/modulation", "format": "tsv"}, - headers=user_headers, ) assert res.status_code == 200 content = io.BytesIO(res.content) @@ -325,7 +310,6 @@ def test_download_matrices(self, client: TestClient, user_access_token: str, int "path": "output/20201014-1422eco-hello/economy/mc-ind/00001/links/de/fr/values-hourly", "format": "tsv", }, - headers=user_headers, ) assert res.status_code == 200 content = io.BytesIO(res.content) @@ -348,7 +332,6 @@ def test_download_matrices(self, client: TestClient, user_access_token: str, int res = client.get( f"/v1/studies/{internal_study_id}/raw/download", params={"path": "input/hydro/prepro/de/energy", "format": "tsv"}, - headers=user_headers, ) assert res.status_code == 200 content = io.BytesIO(res.content) @@ -360,7 +343,6 @@ def test_download_matrices(self, client: TestClient, user_access_token: str, int res = client.get( f"/v1/studies/{study_860_id}/raw/download", params={"path": "input/hydro/series/de/mingen", "format": export_format}, - headers=user_headers, ) assert res.status_code == 200 content = io.BytesIO(res.content) @@ -373,6 +355,11 @@ def test_download_matrices(self, client: TestClient, user_access_token: str, int assert str(dataframe.index[0]) == "2018-01-01 00:00:00" assert np.array_equal(dataframe.to_numpy(), min_gen_df.to_numpy()) + # test that downloading the digest file doesn't fail + digest_path = "output/20201014-1422eco-hello/economy/mc-all/grid/digest" + res = client.get(f"/v1/studies/{internal_study_id}/raw/download", params={"path": digest_path, "format": "tsv"}) + assert res.status_code == 200 + # ============================= # ERRORS # ============================= @@ -380,28 +367,20 @@ def test_download_matrices(self, client: TestClient, user_access_token: str, int fake_str = "fake_str" # fake study_id - res = client.get( - f"/v1/studies/{fake_str}/raw/download", - params={"path": raw_matrix_path, "format": "tsv"}, - headers=user_headers, - ) + res = client.get(f"/v1/studies/{fake_str}/raw/download", params={"path": raw_matrix_path, "format": "tsv"}) assert res.status_code == 400 assert "is not a valid UUID" in res.json()["description"] # fake path res = client.get( - f"/v1/studies/{study_820_id}/raw/download", - params={"path": f"input/links/de/{fake_str}", "format": "tsv"}, - headers=user_headers, + f"/v1/studies/{study_820_id}/raw/download", params={"path": f"input/links/de/{fake_str}", "format": "tsv"} ) assert res.status_code == 404 assert res.json()["exception"] == "ChildNotFoundError" # path that does not lead to a matrix res = client.get( - f"/v1/studies/{study_820_id}/raw/download", - params={"path": "settings/generaldata", "format": "tsv"}, - headers=user_headers, + f"/v1/studies/{study_820_id}/raw/download", params={"path": "settings/generaldata", "format": "tsv"} ) assert res.status_code == 404 assert res.json()["exception"] == "IncorrectPathError" @@ -409,9 +388,7 @@ def test_download_matrices(self, client: TestClient, user_access_token: str, int # wrong format res = client.get( - f"/v1/studies/{study_820_id}/raw/download", - params={"path": raw_matrix_path, "format": fake_str}, - headers=user_headers, + f"/v1/studies/{study_820_id}/raw/download", params={"path": raw_matrix_path, "format": fake_str} ) assert res.status_code == 422 assert res.json()["exception"] == "RequestValidationError" From b0873c51268e8c4366c037a69de5ed2091ec3ad7 Mon Sep 17 00:00:00 2001 From: Samir Kamal <1954121+skamril@users.noreply.github.com> Date: Fri, 8 Nov 2024 17:22:28 +0100 Subject: [PATCH 151/182] fix(ui-maps): area positions are not saved (#2212) --- .../App/Singlestudy/explore/Modelization/Map/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/index.tsx index 34248741de..c9c53ab10f 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/index.tsx @@ -145,8 +145,8 @@ function Map() { if (updatedNode) { const { layerX, layerY, layerColor } = updatedNode; updateUI(id, { - x, - y, + x: Math.round(x), + y: Math.round(y), color_rgb: layerColor[currentLayerId] ? layerColor[currentLayerId].split(",").map(Number) : NODE_COLOR.slice(4, -1).split(",").map(Number), From 6b6d2c6a0aaf98ad4f85b7530d08c70e1fec940e Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Tue, 12 Nov 2024 09:30:35 +0100 Subject: [PATCH 152/182] feat(matrices): allow csv import (#2211) --- antarest/study/service.py | 8 +- .../test_fetch_raw_data.py | 103 +++++------------- 2 files changed, 36 insertions(+), 75 deletions(-) diff --git a/antarest/study/service.py b/antarest/study/service.py index b9bfe4f86c..250ddfb1ae 100644 --- a/antarest/study/service.py +++ b/antarest/study/service.py @@ -13,6 +13,7 @@ import base64 import collections import contextlib +import csv import http import io import logging @@ -1536,7 +1537,12 @@ def _create_edit_study_command( elif isinstance(tree_node, InputSeriesMatrix): if isinstance(data, bytes): # noinspection PyTypeChecker - matrix = np.loadtxt(io.BytesIO(data), delimiter="\t", dtype=np.float64, ndmin=2) + try: + delimiter = csv.Sniffer().sniff(data.decode("utf-8"), delimiters=r"[,;\t]").delimiter + except csv.Error: + # Can happen with data with only one column. In this case, we don't care about the delimiter. + delimiter = "\t" + matrix = np.loadtxt(io.BytesIO(data), delimiter=delimiter, dtype=np.float64, ndmin=2) matrix = matrix.reshape((1, 0)) if matrix.size == 0 else matrix return ReplaceMatrix( target=url, diff --git a/tests/integration/raw_studies_blueprint/test_fetch_raw_data.py b/tests/integration/raw_studies_blueprint/test_fetch_raw_data.py index d2c0a5540b..7922f2d5d2 100644 --- a/tests/integration/raw_studies_blueprint/test_fetch_raw_data.py +++ b/tests/integration/raw_studies_blueprint/test_fetch_raw_data.py @@ -57,7 +57,8 @@ def test_get_study( with db(): study: RawStudy = db.session.get(Study, internal_study_id) study_dir = pathlib.Path(study.path) - headers = {"Authorization": f"Bearer {user_access_token}"} + client.headers = {"Authorization": f"Bearer {user_access_token}"} + raw_url = f"/v1/studies/{internal_study_id}/raw" shutil.copytree( ASSETS_DIR.joinpath("user"), @@ -69,11 +70,7 @@ def test_get_study( user_folder_dir = study_dir.joinpath("user/folder") for file_path in user_folder_dir.glob("*.*"): rel_path = file_path.relative_to(study_dir).as_posix() - res = client.get( - f"/v1/studies/{internal_study_id}/raw", - params={"path": rel_path, "depth": 1}, - headers=headers, - ) + res = client.get(raw_url, params={"path": rel_path, "depth": 1}) assert res.status_code == 200, res.json() if file_path.suffix == ".json": # special case for JSON files @@ -95,22 +92,14 @@ def test_get_study( user_folder_dir = study_dir.joinpath("user/unknown") for file_path in user_folder_dir.glob("*.*"): rel_path = file_path.relative_to(study_dir) - res = client.get( - f"/v1/studies/{internal_study_id}/raw", - params={"path": f"/{rel_path.as_posix()}", "depth": 1}, - headers=headers, - ) + res = client.get(raw_url, params={"path": f"/{rel_path.as_posix()}", "depth": 1}) assert res.status_code == 200, res.json() actual = res.content expected = file_path.read_bytes() assert actual == expected # If you try to retrieve a file that doesn't exist, we should have a 404 error - res = client.get( - f"/v1/studies/{internal_study_id}/raw", - params={"path": "user/somewhere/something.txt"}, - headers=headers, - ) + res = client.get(raw_url, params={"path": "user/somewhere/something.txt"}) assert res.status_code == 404, res.json() assert res.json() == { "description": "'somewhere' not a child of User", @@ -120,10 +109,7 @@ def test_get_study( # If you want to update an existing resource, you can use PUT method. # But, if the resource doesn't exist, you should have a 404 Not Found error. res = client.put( - f"/v1/studies/{internal_study_id}/raw", - params={"path": "user/somewhere/something.txt"}, - headers=headers, - files={"file": io.BytesIO(b"Goodbye World!")}, + raw_url, params={"path": "user/somewhere/something.txt"}, files={"file": io.BytesIO(b"Goodbye World!")} ) assert res.status_code == 404, res.json() assert res.json() == { @@ -134,9 +120,8 @@ def test_get_study( # To create a resource, you can use PUT method and the `create_missing` flag. # The expected status code should be 204 No Content. res = client.put( - f"/v1/studies/{internal_study_id}/raw", + raw_url, params={"path": "user/somewhere/something.txt", "create_missing": True}, - headers=headers, files={"file": io.BytesIO(b"Goodbye Cruel World!")}, ) assert res.status_code == 204, res.json() @@ -144,29 +129,31 @@ def test_get_study( # To update a resource, you can use PUT method, with or without the `create_missing` flag. # The expected status code should be 204 No Content. res = client.put( - f"/v1/studies/{internal_study_id}/raw", + raw_url, params={"path": "user/somewhere/something.txt", "create_missing": True}, - headers=headers, files={"file": io.BytesIO(b"This is the end!")}, ) assert res.status_code == 204, res.json() # You can check that the resource has been created or updated. - res = client.get( - f"/v1/studies/{internal_study_id}/raw", - params={"path": "user/somewhere/something.txt"}, - headers=headers, - ) + res = client.get(raw_url, params={"path": "user/somewhere/something.txt"}) assert res.status_code == 200, res.json() assert res.content == b"This is the end!" + # You can import a csv or a tsv file inside a matrix + matrix_path = "input/load/series/load_de" + for content, delimiter in zip( + [b"1.20000\n3.400000\n", b"1.4\t0.5\n0.0\t0.4\n", b"1.2,1.3\n1.4,1.5\n"], ["\t", "\t", ","] + ): + res = client.put(raw_url, params={"path": matrix_path}, files={"file": io.BytesIO(content)}) + assert res.status_code == 204, res.json() + res = client.get(raw_url, params={"path": matrix_path}) + written_data = res.json()["data"] + assert written_data == np.loadtxt(io.BytesIO(content), delimiter=delimiter, ndmin=2).tolist() + # If we ask for properties, we should have a JSON content rel_path = "/input/links/de/properties/fr" - res = client.get( - f"/v1/studies/{internal_study_id}/raw", - params={"path": rel_path, "depth": 2}, - headers=headers, - ) + res = client.get(raw_url, params={"path": rel_path, "depth": 2}) assert res.status_code == 200, res.json() actual = res.json() assert actual == { @@ -187,22 +174,14 @@ def test_get_study( # If we ask for a matrix, we should have a JSON content if formatted is True rel_path = "/input/links/de/fr" - res = client.get( - f"/v1/studies/{internal_study_id}/raw", - params={"path": rel_path, "formatted": True}, - headers=headers, - ) + res = client.get(raw_url, params={"path": rel_path, "formatted": True}) assert res.status_code == 200, res.json() actual = res.json() assert actual == {"index": ANY, "columns": ANY, "data": ANY} # If we ask for a matrix, we should have a CSV content if formatted is False rel_path = "/input/links/de/fr" - res = client.get( - f"/v1/studies/{internal_study_id}/raw", - params={"path": rel_path, "formatted": False}, - headers=headers, - ) + res = client.get(raw_url, params={"path": rel_path, "formatted": False}) assert res.status_code == 200, res.json() actual = res.text actual_lines = actual.splitlines() @@ -210,20 +189,12 @@ def test_get_study( assert first_row == [100000, 100000, 0.01, 0.01, 0, 0, 0, 0] # If ask for an empty matrix, we should have an empty binary content - res = client.get( - f"/v1/studies/{internal_study_id}/raw", - params={"path": "input/thermal/prepro/de/01_solar/data", "formatted": False}, - headers=headers, - ) + res = client.get(raw_url, params={"path": "input/thermal/prepro/de/01_solar/data", "formatted": False}) assert res.status_code == 200, res.json() assert res.content == b"" # But, if we use formatted = True, we should have a JSON objet representing and empty matrix - res = client.get( - f"/v1/studies/{internal_study_id}/raw", - params={"path": "input/thermal/prepro/de/01_solar/data", "formatted": True}, - headers=headers, - ) + res = client.get(raw_url, params={"path": "input/thermal/prepro/de/01_solar/data", "formatted": True}) assert res.status_code == 200, res.json() assert res.json() == {"index": [], "columns": [], "data": []} @@ -231,39 +202,23 @@ def test_get_study( user_folder_dir = study_dir.joinpath("user/bad") for file_path in user_folder_dir.glob("*.*"): rel_path = file_path.relative_to(study_dir) - res = client.get( - f"/v1/studies/{internal_study_id}/raw", - params={"path": f"/{rel_path.as_posix()}", "depth": 1}, - headers=headers, - ) + res = client.get(raw_url, params={"path": f"/{rel_path.as_posix()}", "depth": 1}) assert res.status_code == http.HTTPStatus.UNPROCESSABLE_ENTITY # We can access to the configuration the classic way, # for instance, we can get the list of areas: - res = client.get( - f"/v1/studies/{internal_study_id}/raw", - params={"path": "/input/areas/list", "depth": 1}, - headers=headers, - ) + res = client.get(raw_url, params={"path": "/input/areas/list", "depth": 1}) assert res.status_code == 200, res.json() assert res.json() == ["DE", "ES", "FR", "IT"] # asserts that the GET /raw endpoint is able to read matrix containing NaN values - res = client.get( - f"/v1/studies/{internal_study_id}/raw", - params={"path": "output/20201014-1427eco/economy/mc-all/areas/de/id-monthly"}, - headers=headers, - ) + res = client.get(raw_url, params={"path": "output/20201014-1427eco/economy/mc-all/areas/de/id-monthly"}) assert res.status_code == 200 assert np.isnan(res.json()["data"][0]).any() # Iterate over all possible combinations of path and depth for path, depth in itertools.product([None, "", "/"], [0, 1, 2]): - res = client.get( - f"/v1/studies/{internal_study_id}/raw", - params={"path": path, "depth": depth}, - headers=headers, - ) + res = client.get(raw_url, params={"path": path, "depth": depth}) assert res.status_code == 200, f"Error for path={path} and depth={depth}" From d77d10396b8deff7f34d073708f39827001829b8 Mon Sep 17 00:00:00 2001 From: Mohamed Abdel Wedoud Date: Tue, 12 Nov 2024 11:17:12 +0100 Subject: [PATCH 153/182] refactor(aggregation-apis): remove `time` column from the aggregated data --- .../study/business/aggregator_management.py | 21 +++++-------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/antarest/study/business/aggregator_management.py b/antarest/study/business/aggregator_management.py index df5bbaa30b..cf7f59ab81 100644 --- a/antarest/study/business/aggregator_management.py +++ b/antarest/study/business/aggregator_management.py @@ -19,7 +19,6 @@ import pandas as pd from antarest.core.exceptions import FileTooLargeError, MCRootNotHandled, OutputNotFound, OutputSubFolderNotFound -from antarest.study.storage.rawstudy.ini_reader import IniReader from antarest.study.storage.rawstudy.model.filesystem.matrix.date_serializer import ( FactoryDateSerializer, rename_unnamed, @@ -27,7 +26,6 @@ from antarest.study.storage.rawstudy.model.filesystem.matrix.matrix import MatrixFrequency MC_TEMPLATE_PARTS = "output/{sim_id}/economy/{mc_root}" -HORIZON_TEMPLATE = "output/{sim_id}/about-the-study/parameters.ini" # noinspection SpellCheckingInspection MCYEAR_COL = "mcYear" """Column name for the Monte Carlo year.""" @@ -37,8 +35,6 @@ """Column name for the link.""" TIME_ID_COL = "timeId" """Column name for the time index.""" -TIME_COL = "time" -"""Column name for the timestamp.""" CLUSTER_ID_COL = "cluster" """Column name for the cluster id.""" MC_YEAR_INDEX = 0 @@ -97,11 +93,11 @@ def _columns_ordering(df_cols: t.List[str], column_name: str, is_details: bool, org_cols = [col for col in org_cols if col != CLUSTER_ID_COL and col != TIME_ID_COL] if mc_root == MCRoot.MC_IND: new_column_order = ( - [column_name] + ([CLUSTER_ID_COL] if is_details else []) + [MCYEAR_COL, TIME_ID_COL, TIME_COL] + org_cols + [column_name] + ([CLUSTER_ID_COL] if is_details else []) + [MCYEAR_COL, TIME_ID_COL] + org_cols ) elif mc_root == MCRoot.MC_ALL: - org_cols = [col for col in org_cols if col not in {column_name, MCYEAR_COL, TIME_COL}] - new_column_order = [column_name] + ([CLUSTER_ID_COL] if is_details else []) + [TIME_ID_COL, TIME_COL] + org_cols + org_cols = [col for col in org_cols if col not in {column_name, MCYEAR_COL}] + new_column_order = [column_name] + ([CLUSTER_ID_COL] if is_details else []) + [TIME_ID_COL] + org_cols else: raise MCRootNotHandled(f"Unknown Monte Carlo root: {mc_root}") @@ -332,7 +328,7 @@ def _process_df(self, file_path: Path, is_details: bool) -> pd.DataFrame: # just extract the data frame from the file by just merging the columns components return self._parse_output_file(file_path) - def _build_dataframe(self, files: t.Sequence[Path], horizon: int) -> pd.DataFrame: + def _build_dataframe(self, files: t.Sequence[Path]) -> pd.DataFrame: if self.mc_root not in [MCRoot.MC_IND, MCRoot.MC_ALL]: raise MCRootNotHandled(f"Unknown Monte Carlo root: {self.mc_root}") is_details = self.query_file in [ @@ -379,8 +375,6 @@ def _build_dataframe(self, files: t.Sequence[Path], horizon: int) -> pd.DataFram # add a column for the time id df[TIME_ID_COL] = _infer_time_id(df, is_details) - # add horizon column - df[TIME_COL] = horizon # Reorganize the columns df = df.reindex(columns=pd.Index(new_column_order)) @@ -418,16 +412,11 @@ def aggregate_output_data(self) -> pd.DataFrame: # filters files to consider all_output_files = sorted(self._gather_all_files_to_consider()) - # Retrieves the horizon from the study output - horizon_path = self.study_path / HORIZON_TEMPLATE.format(sim_id=self.output_id) - launching_config = IniReader().read(horizon_path) - horizon = launching_config.get("general", {}).get("horizon", 2018) - logger.info( f"Parsing {len(all_output_files)} {self.frequency.value} files" f"to build the aggregated output for study `{self.study_path.name}`" ) # builds final dataframe - final_df = self._build_dataframe(all_output_files, horizon) + final_df = self._build_dataframe(all_output_files) return final_df From 8555ef35690a60041a71eb06182d84e18472a6d4 Mon Sep 17 00:00:00 2001 From: Mohamed Abdel Wedoud Date: Tue, 12 Nov 2024 11:27:34 +0100 Subject: [PATCH 154/182] test(aggregation-apis): update aggregation `tests` assets after removing `time` column --- .../test-01-all.result.tsv | 30 +- .../test-01.result.tsv | 5378 +- .../test-02-all.result.tsv | 20 +- .../test-02.result.tsv | 18146 +++--- .../test-03-all.result.tsv | 30 +- .../test-03.result.tsv | 18 +- .../test-04-all.result.tsv | 30 +- .../test-04.result.tsv | 2018 +- .../test-05-all.result.tsv | 6 +- .../test-05.result.tsv | 10 +- .../test-06-all.result.tsv | 30 +- .../test-06.result.tsv | 5378 +- .../test-07-all.result.tsv | 30 +- .../test-07.result.tsv | 48386 ++++++++-------- .../test-08-all.result.tsv | 38 +- .../test-01-all.result.tsv | 730 +- .../test-01.result.tsv | 4034 +- .../test-02-all.result.tsv | 26 +- .../test-02.result.tsv | 2018 +- .../test-03-all.result.tsv | 730 +- .../test-03.result.tsv | 4034 +- .../test-04-all.result.tsv | 26 +- .../test-04.result.tsv | 674 +- .../test-05-all.result.tsv | 730 +- .../test-05.result.tsv | 4034 +- .../test-06-all.result.tsv | 730 +- 26 files changed, 48657 insertions(+), 48657 deletions(-) diff --git a/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-01-all.result.tsv b/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-01-all.result.tsv index 5232984b37..b761e4c4ae 100644 --- a/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-01-all.result.tsv +++ b/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-01-all.result.tsv @@ -1,15 +1,15 @@ -area timeId time OV. COST EXP OP. COST EXP OP. COST STD OP. COST MIN OP. COST MAX MRG. PRICE EXP MRG. PRICE STD MRG. PRICE MIN MRG. PRICE MAX CO2 EMIS. EXP BALANCE EXP BALANCE STD BALANCE MIN BALANCE MAX ROW BAL. VALUES PSP EXP MISC. NDG EXP LOAD EXP LOAD STD LOAD MIN LOAD MAX H. ROR EXP H. ROR STD H. ROR MIN H. ROR MAX WIND EXP WIND STD WIND MIN WIND MAX SOLAR EXP SOLAR STD SOLAR MIN SOLAR MAX NUCLEAR EXP NUCLEAR STD NUCLEAR MIN NUCLEAR MAX LIGNITE EXP LIGNITE STD LIGNITE MIN LIGNITE MAX COAL EXP COAL STD COAL MIN COAL MAX GAS EXP GAS STD GAS MIN GAS MAX OIL EXP OIL STD OIL MIN OIL MAX MIX. FUEL EXP MIX. FUEL STD MIX. FUEL MIN MIX. FUEL MAX MISC. DTG EXP MISC. DTG STD MISC. DTG MIN MISC. DTG MAX H. STOR EXP H. STOR STD H. STOR MIN H. STOR MAX H. PUMP EXP H. PUMP STD H. PUMP MIN H. PUMP MAX H. LEV EXP H. LEV STD H. LEV MIN H. LEV MAX H. INFL EXP H. INFL STD H. INFL MIN H. INFL MAX H. OVFL EXP H. OVFL STD H. OVFL MIN H. OVFL MAX H. VAL EXP H. VAL STD H. VAL MIN H. VAL MAX H. COST EXP H. COST STD H. COST MIN H. COST MAX UNSP. ENRG EXP UNSP. ENRG STD UNSP. ENRG MIN UNSP. ENRG MAX SPIL. ENRG EXP SPIL. ENRG STD SPIL. ENRG MIN SPIL. ENRG MAX LOLD EXP LOLD STD LOLD MIN LOLD MAX LOLP VALUES AVL DTG EXP AVL DTG STD AVL DTG MIN AVL DTG MAX DTG MRG EXP DTG MRG STD DTG MRG MIN DTG MRG MAX MAX MRG EXP MAX MRG STD MAX MRG MIN MAX MRG MAX NP COST EXP NP COST STD NP COST MIN NP COST MAX NODU EXP NODU STD NODU MIN NODU MAX -de 1 2030 282000.0 282000.0 0.0 282000.0 282000.0 11.66 0.0 11.66 11.66 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 27600.0 0.0 27600.0 27600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 27600.0 0.0 27600.0 27600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 404400.0 0.0 404400.0 404400.0 404400.0 0.0 404400.0 404400.0 0.0 0.0 0.0 0.0 26.0 0.0 26.0 26.0 -de 2 2030 1252000.0 1252000.0 0.0 1252000.0 1252000.0 23.33 0.0 23.33 23.33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 85200.0 0.0 85200.0 85200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 85200.0 0.0 85200.0 85200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 346800.0 0.0 346800.0 346800.0 346800.0 0.0 346800.0 346800.0 0.0 0.0 0.0 0.0 55.0 0.0 55.0 55.0 -de 3 2030 2910000.0 2910000.0 0.0 2910000.0 2910000.0 35.0 0.0 35.0 35.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 142800.0 0.0 142800.0 142800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 142800.0 0.0 142800.0 142800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 289200.0 0.0 289200.0 289200.0 289200.0 0.0 289200.0 289200.0 0.0 0.0 0.0 0.0 83.0 0.0 83.0 83.0 -de 4 2030 5256000.0 5256000.0 0.0 5256000.0 5256000.0 46.67 0.0 46.67 46.67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200400.0 0.0 200400.0 200400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200400.0 0.0 200400.0 200400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 231600.0 0.0 231600.0 231600.0 231600.0 0.0 231600.0 231600.0 0.0 0.0 0.0 0.0 111.0 0.0 111.0 111.0 -de 5 2030 8290000.0 8290000.0 0.0 8290000.0 8290000.0 58.33 0.0 58.33 58.33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 258000.0 0.0 258000.0 258000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 258000.0 0.0 258000.0 258000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 174000.0 0.0 174000.0 174000.0 174000.0 0.0 174000.0 174000.0 0.0 0.0 0.0 0.0 139.0 0.0 139.0 139.0 -de 6 2030 12018000.0 12018000.0 0.0 12018000.0 12018000.0 71.67 0.0 71.67 71.67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 315600.0 0.0 315600.0 315600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 315600.0 0.0 315600.0 315600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 116400.0 0.0 116400.0 116400.0 116400.0 0.0 116400.0 116400.0 0.0 0.0 0.0 0.0 170.0 0.0 170.0 170.0 -de 7 2030 16444000.0 16444000.0 0.0 16444000.0 16444000.0 83.33 0.0 83.33 83.33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 373200.0 0.0 373200.0 373200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 373200.0 0.0 373200.0 373200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 58800.0 0.0 58800.0 58800.0 58800.0 0.0 58800.0 58800.0 0.0 0.0 0.0 0.0 199.0 0.0 199.0 199.0 -es 1 2030 282000.0 282000.0 0.0 282000.0 282000.0 11.66 0.0 11.66 11.66 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 27600.0 0.0 27600.0 27600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 27600.0 0.0 27600.0 27600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 404400.0 0.0 404400.0 404400.0 404400.0 0.0 404400.0 404400.0 0.0 0.0 0.0 0.0 26.0 0.0 26.0 26.0 -es 2 2030 1252000.0 1252000.0 0.0 1252000.0 1252000.0 23.33 0.0 23.33 23.33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 85200.0 0.0 85200.0 85200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 85200.0 0.0 85200.0 85200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 346800.0 0.0 346800.0 346800.0 346800.0 0.0 346800.0 346800.0 0.0 0.0 0.0 0.0 55.0 0.0 55.0 55.0 -es 3 2030 2910000.0 2910000.0 0.0 2910000.0 2910000.0 35.0 0.0 35.0 35.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 142800.0 0.0 142800.0 142800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 142800.0 0.0 142800.0 142800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 289200.0 0.0 289200.0 289200.0 289200.0 0.0 289200.0 289200.0 0.0 0.0 0.0 0.0 83.0 0.0 83.0 83.0 -es 4 2030 5256000.0 5256000.0 0.0 5256000.0 5256000.0 46.67 0.0 46.67 46.67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200400.0 0.0 200400.0 200400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200400.0 0.0 200400.0 200400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 231600.0 0.0 231600.0 231600.0 231600.0 0.0 231600.0 231600.0 0.0 0.0 0.0 0.0 111.0 0.0 111.0 111.0 -es 5 2030 8290000.0 8290000.0 0.0 8290000.0 8290000.0 58.33 0.0 58.33 58.33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 258000.0 0.0 258000.0 258000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 258000.0 0.0 258000.0 258000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 174000.0 0.0 174000.0 174000.0 174000.0 0.0 174000.0 174000.0 0.0 0.0 0.0 0.0 139.0 0.0 139.0 139.0 -es 6 2030 12018000.0 12018000.0 0.0 12018000.0 12018000.0 71.67 0.0 71.67 71.67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 315600.0 0.0 315600.0 315600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 315600.0 0.0 315600.0 315600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 116400.0 0.0 116400.0 116400.0 116400.0 0.0 116400.0 116400.0 0.0 0.0 0.0 0.0 170.0 0.0 170.0 170.0 -es 7 2030 16444000.0 16444000.0 0.0 16444000.0 16444000.0 83.33 0.0 83.33 83.33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 373200.0 0.0 373200.0 373200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 373200.0 0.0 373200.0 373200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 58800.0 0.0 58800.0 58800.0 58800.0 0.0 58800.0 58800.0 0.0 0.0 0.0 0.0 199.0 0.0 199.0 199.0 +area timeId OV. COST EXP OP. COST EXP OP. COST STD OP. COST MIN OP. COST MAX MRG. PRICE EXP MRG. PRICE STD MRG. PRICE MIN MRG. PRICE MAX CO2 EMIS. EXP BALANCE EXP BALANCE STD BALANCE MIN BALANCE MAX ROW BAL. VALUES PSP EXP MISC. NDG EXP LOAD EXP LOAD STD LOAD MIN LOAD MAX H. ROR EXP H. ROR STD H. ROR MIN H. ROR MAX WIND EXP WIND STD WIND MIN WIND MAX SOLAR EXP SOLAR STD SOLAR MIN SOLAR MAX NUCLEAR EXP NUCLEAR STD NUCLEAR MIN NUCLEAR MAX LIGNITE EXP LIGNITE STD LIGNITE MIN LIGNITE MAX COAL EXP COAL STD COAL MIN COAL MAX GAS EXP GAS STD GAS MIN GAS MAX OIL EXP OIL STD OIL MIN OIL MAX MIX. FUEL EXP MIX. FUEL STD MIX. FUEL MIN MIX. FUEL MAX MISC. DTG EXP MISC. DTG STD MISC. DTG MIN MISC. DTG MAX H. STOR EXP H. STOR STD H. STOR MIN H. STOR MAX H. PUMP EXP H. PUMP STD H. PUMP MIN H. PUMP MAX H. LEV EXP H. LEV STD H. LEV MIN H. LEV MAX H. INFL EXP H. INFL STD H. INFL MIN H. INFL MAX H. OVFL EXP H. OVFL STD H. OVFL MIN H. OVFL MAX H. VAL EXP H. VAL STD H. VAL MIN H. VAL MAX H. COST EXP H. COST STD H. COST MIN H. COST MAX UNSP. ENRG EXP UNSP. ENRG STD UNSP. ENRG MIN UNSP. ENRG MAX SPIL. ENRG EXP SPIL. ENRG STD SPIL. ENRG MIN SPIL. ENRG MAX LOLD EXP LOLD STD LOLD MIN LOLD MAX LOLP VALUES AVL DTG EXP AVL DTG STD AVL DTG MIN AVL DTG MAX DTG MRG EXP DTG MRG STD DTG MRG MIN DTG MRG MAX MAX MRG EXP MAX MRG STD MAX MRG MIN MAX MRG MAX NP COST EXP NP COST STD NP COST MIN NP COST MAX NODU EXP NODU STD NODU MIN NODU MAX +de 1 282000.0 282000.0 0.0 282000.0 282000.0 11.66 0.0 11.66 11.66 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 27600.0 0.0 27600.0 27600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 27600.0 0.0 27600.0 27600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 404400.0 0.0 404400.0 404400.0 404400.0 0.0 404400.0 404400.0 0.0 0.0 0.0 0.0 26.0 0.0 26.0 26.0 +de 2 1252000.0 1252000.0 0.0 1252000.0 1252000.0 23.33 0.0 23.33 23.33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 85200.0 0.0 85200.0 85200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 85200.0 0.0 85200.0 85200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 346800.0 0.0 346800.0 346800.0 346800.0 0.0 346800.0 346800.0 0.0 0.0 0.0 0.0 55.0 0.0 55.0 55.0 +de 3 2910000.0 2910000.0 0.0 2910000.0 2910000.0 35.0 0.0 35.0 35.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 142800.0 0.0 142800.0 142800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 142800.0 0.0 142800.0 142800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 289200.0 0.0 289200.0 289200.0 289200.0 0.0 289200.0 289200.0 0.0 0.0 0.0 0.0 83.0 0.0 83.0 83.0 +de 4 5256000.0 5256000.0 0.0 5256000.0 5256000.0 46.67 0.0 46.67 46.67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200400.0 0.0 200400.0 200400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200400.0 0.0 200400.0 200400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 231600.0 0.0 231600.0 231600.0 231600.0 0.0 231600.0 231600.0 0.0 0.0 0.0 0.0 111.0 0.0 111.0 111.0 +de 5 8290000.0 8290000.0 0.0 8290000.0 8290000.0 58.33 0.0 58.33 58.33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 258000.0 0.0 258000.0 258000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 258000.0 0.0 258000.0 258000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 174000.0 0.0 174000.0 174000.0 174000.0 0.0 174000.0 174000.0 0.0 0.0 0.0 0.0 139.0 0.0 139.0 139.0 +de 6 12018000.0 12018000.0 0.0 12018000.0 12018000.0 71.67 0.0 71.67 71.67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 315600.0 0.0 315600.0 315600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 315600.0 0.0 315600.0 315600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 116400.0 0.0 116400.0 116400.0 116400.0 0.0 116400.0 116400.0 0.0 0.0 0.0 0.0 170.0 0.0 170.0 170.0 +de 7 16444000.0 16444000.0 0.0 16444000.0 16444000.0 83.33 0.0 83.33 83.33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 373200.0 0.0 373200.0 373200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 373200.0 0.0 373200.0 373200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 58800.0 0.0 58800.0 58800.0 58800.0 0.0 58800.0 58800.0 0.0 0.0 0.0 0.0 199.0 0.0 199.0 199.0 +es 1 282000.0 282000.0 0.0 282000.0 282000.0 11.66 0.0 11.66 11.66 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 27600.0 0.0 27600.0 27600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 27600.0 0.0 27600.0 27600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 404400.0 0.0 404400.0 404400.0 404400.0 0.0 404400.0 404400.0 0.0 0.0 0.0 0.0 26.0 0.0 26.0 26.0 +es 2 1252000.0 1252000.0 0.0 1252000.0 1252000.0 23.33 0.0 23.33 23.33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 85200.0 0.0 85200.0 85200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 85200.0 0.0 85200.0 85200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 346800.0 0.0 346800.0 346800.0 346800.0 0.0 346800.0 346800.0 0.0 0.0 0.0 0.0 55.0 0.0 55.0 55.0 +es 3 2910000.0 2910000.0 0.0 2910000.0 2910000.0 35.0 0.0 35.0 35.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 142800.0 0.0 142800.0 142800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 142800.0 0.0 142800.0 142800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 289200.0 0.0 289200.0 289200.0 289200.0 0.0 289200.0 289200.0 0.0 0.0 0.0 0.0 83.0 0.0 83.0 83.0 +es 4 5256000.0 5256000.0 0.0 5256000.0 5256000.0 46.67 0.0 46.67 46.67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200400.0 0.0 200400.0 200400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200400.0 0.0 200400.0 200400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 231600.0 0.0 231600.0 231600.0 231600.0 0.0 231600.0 231600.0 0.0 0.0 0.0 0.0 111.0 0.0 111.0 111.0 +es 5 8290000.0 8290000.0 0.0 8290000.0 8290000.0 58.33 0.0 58.33 58.33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 258000.0 0.0 258000.0 258000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 258000.0 0.0 258000.0 258000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 174000.0 0.0 174000.0 174000.0 174000.0 0.0 174000.0 174000.0 0.0 0.0 0.0 0.0 139.0 0.0 139.0 139.0 +es 6 12018000.0 12018000.0 0.0 12018000.0 12018000.0 71.67 0.0 71.67 71.67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 315600.0 0.0 315600.0 315600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 315600.0 0.0 315600.0 315600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 116400.0 0.0 116400.0 116400.0 116400.0 0.0 116400.0 116400.0 0.0 0.0 0.0 0.0 170.0 0.0 170.0 170.0 +es 7 16444000.0 16444000.0 0.0 16444000.0 16444000.0 83.33 0.0 83.33 83.33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 373200.0 0.0 373200.0 373200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 373200.0 0.0 373200.0 373200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 58800.0 0.0 58800.0 58800.0 58800.0 0.0 58800.0 58800.0 0.0 0.0 0.0 0.0 199.0 0.0 199.0 199.0 diff --git a/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-01.result.tsv b/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-01.result.tsv index 2150b58c8d..8140062104 100644 --- a/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-01.result.tsv +++ b/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-01.result.tsv @@ -1,2689 +1,2689 @@ -area mcYear timeId time OV. COST OP. COST MRG. PRICE CO2 EMIS. BALANCE ROW BAL. PSP MISC. NDG LOAD H. ROR WIND SOLAR NUCLEAR LIGNITE COAL GAS OIL MIX. FUEL MISC. DTG H. STOR H. PUMP H. LEV H. INFL H. OVFL H. VAL H. COST UNSP. ENRG SPIL. ENRG LOLD LOLP AVL DTG DTG MRG MAX MRG NP COST NODU -de 1 1 2030 0.0 0.0 9.98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 -de 1 2 2030 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 -de 1 3 2030 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 -de 1 4 2030 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 -de 1 5 2030 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 -de 1 6 2030 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 -de 1 7 2030 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 -de 1 8 2030 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 -de 1 9 2030 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 -de 1 10 2030 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 -de 1 11 2030 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 -de 1 12 2030 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 -de 1 13 2030 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 -de 1 14 2030 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 -de 1 15 2030 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 -de 1 16 2030 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 -de 1 17 2030 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 -de 1 18 2030 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 -de 1 19 2030 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 -de 1 20 2030 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 -de 1 21 2030 20000.0 20000.0 19.98 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 -de 1 22 2030 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 -de 1 23 2030 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 -de 1 24 2030 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 -de 1 25 2030 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 -de 1 26 2030 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 -de 1 27 2030 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 -de 1 28 2030 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 -de 1 29 2030 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 -de 1 30 2030 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 -de 1 31 2030 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 -de 1 32 2030 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 -de 1 33 2030 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 -de 1 34 2030 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 -de 1 35 2030 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 -de 1 36 2030 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 -de 1 37 2030 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 -de 1 38 2030 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 -de 1 39 2030 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 -de 1 40 2030 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 -de 1 41 2030 60000.0 60000.0 29.98 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 -de 1 42 2030 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 -de 1 43 2030 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 -de 1 44 2030 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 -de 1 45 2030 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 -de 1 46 2030 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 -de 1 47 2030 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 -de 1 48 2030 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 -de 1 49 2030 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 -de 1 50 2030 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 -de 1 51 2030 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 -de 1 52 2030 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 -de 1 53 2030 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 -de 1 54 2030 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 -de 1 55 2030 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 -de 1 56 2030 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 -de 1 57 2030 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 -de 1 58 2030 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 -de 1 59 2030 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 -de 1 60 2030 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 -de 1 61 2030 120000.0 120000.0 39.98 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 -de 1 62 2030 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 -de 1 63 2030 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 -de 1 64 2030 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 -de 1 65 2030 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 -de 1 66 2030 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 -de 1 67 2030 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 -de 1 68 2030 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 -de 1 69 2030 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 -de 1 70 2030 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 -de 1 71 2030 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 -de 1 72 2030 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 -de 1 73 2030 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 -de 1 74 2030 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 -de 1 75 2030 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 -de 1 76 2030 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 -de 1 77 2030 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 -de 1 78 2030 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 -de 1 79 2030 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 -de 1 80 2030 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 -de 1 81 2030 200000.0 200000.0 49.98 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 -de 1 82 2030 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 -de 1 83 2030 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 -de 1 84 2030 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 -de 1 85 2030 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 -de 1 86 2030 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 -de 1 87 2030 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 -de 1 88 2030 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 -de 1 89 2030 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 -de 1 90 2030 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 -de 1 91 2030 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 -de 1 92 2030 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 -de 1 93 2030 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 -de 1 94 2030 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 -de 1 95 2030 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 -de 1 96 2030 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 -de 1 97 2030 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 -de 1 98 2030 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 -de 1 99 2030 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 -de 1 100 2030 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 -de 1 101 2030 300000.0 300000.0 59.98 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 -de 1 102 2030 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 -de 1 103 2030 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 -de 1 104 2030 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 -de 1 105 2030 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 -de 1 106 2030 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 -de 1 107 2030 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 -de 1 108 2030 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 -de 1 109 2030 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 -de 1 110 2030 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 -de 1 111 2030 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 -de 1 112 2030 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 -de 1 113 2030 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 -de 1 114 2030 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 -de 1 115 2030 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 -de 1 116 2030 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 -de 1 117 2030 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 -de 1 118 2030 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 -de 1 119 2030 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 -de 1 120 2030 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 -de 1 121 2030 420000.0 420000.0 69.98 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 -de 1 122 2030 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 -de 1 123 2030 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 -de 1 124 2030 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 -de 1 125 2030 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 -de 1 126 2030 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 -de 1 127 2030 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 -de 1 128 2030 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 -de 1 129 2030 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 -de 1 130 2030 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 -de 1 131 2030 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 -de 1 132 2030 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 -de 1 133 2030 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 -de 1 134 2030 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 -de 1 135 2030 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 -de 1 136 2030 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 -de 1 137 2030 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 -de 1 138 2030 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 -de 1 139 2030 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 -de 1 140 2030 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 -de 1 141 2030 560000.0 560000.0 79.98 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 -de 1 142 2030 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 -de 1 143 2030 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 -de 1 144 2030 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 -de 1 145 2030 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 -de 1 146 2030 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 -de 1 147 2030 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 -de 1 148 2030 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 -de 1 149 2030 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 -de 1 150 2030 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 -de 1 151 2030 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 -de 1 152 2030 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 -de 1 153 2030 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 -de 1 154 2030 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 -de 1 155 2030 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 -de 1 156 2030 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 -de 1 157 2030 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 -de 1 158 2030 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 -de 1 159 2030 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 -de 1 160 2030 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 -de 1 161 2030 720000.0 720000.0 89.98 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 -de 1 162 2030 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 -de 1 163 2030 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 -de 1 164 2030 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 -de 1 165 2030 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 -de 1 166 2030 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 -de 1 167 2030 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 -de 1 168 2030 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 -de 1 169 2030 0.0 0.0 9.98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 -de 1 170 2030 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 -de 1 171 2030 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 -de 1 172 2030 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 -de 1 173 2030 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 -de 1 174 2030 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 -de 1 175 2030 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 -de 1 176 2030 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 -de 1 177 2030 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 -de 1 178 2030 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 -de 1 179 2030 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 -de 1 180 2030 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 -de 1 181 2030 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 -de 1 182 2030 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 -de 1 183 2030 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 -de 1 184 2030 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 -de 1 185 2030 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 -de 1 186 2030 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 -de 1 187 2030 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 -de 1 188 2030 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 -de 1 189 2030 20000.0 20000.0 19.98 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 -de 1 190 2030 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 -de 1 191 2030 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 -de 1 192 2030 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 -de 1 193 2030 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 -de 1 194 2030 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 -de 1 195 2030 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 -de 1 196 2030 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 -de 1 197 2030 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 -de 1 198 2030 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 -de 1 199 2030 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 -de 1 200 2030 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 -de 1 201 2030 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 -de 1 202 2030 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 -de 1 203 2030 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 -de 1 204 2030 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 -de 1 205 2030 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 -de 1 206 2030 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 -de 1 207 2030 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 -de 1 208 2030 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 -de 1 209 2030 60000.0 60000.0 29.98 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 -de 1 210 2030 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 -de 1 211 2030 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 -de 1 212 2030 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 -de 1 213 2030 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 -de 1 214 2030 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 -de 1 215 2030 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 -de 1 216 2030 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 -de 1 217 2030 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 -de 1 218 2030 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 -de 1 219 2030 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 -de 1 220 2030 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 -de 1 221 2030 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 -de 1 222 2030 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 -de 1 223 2030 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 -de 1 224 2030 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 -de 1 225 2030 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 -de 1 226 2030 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 -de 1 227 2030 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 -de 1 228 2030 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 -de 1 229 2030 120000.0 120000.0 39.98 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 -de 1 230 2030 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 -de 1 231 2030 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 -de 1 232 2030 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 -de 1 233 2030 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 -de 1 234 2030 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 -de 1 235 2030 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 -de 1 236 2030 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 -de 1 237 2030 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 -de 1 238 2030 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 -de 1 239 2030 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 -de 1 240 2030 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 -de 1 241 2030 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 -de 1 242 2030 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 -de 1 243 2030 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 -de 1 244 2030 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 -de 1 245 2030 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 -de 1 246 2030 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 -de 1 247 2030 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 -de 1 248 2030 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 -de 1 249 2030 200000.0 200000.0 49.98 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 -de 1 250 2030 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 -de 1 251 2030 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 -de 1 252 2030 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 -de 1 253 2030 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 -de 1 254 2030 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 -de 1 255 2030 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 -de 1 256 2030 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 -de 1 257 2030 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 -de 1 258 2030 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 -de 1 259 2030 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 -de 1 260 2030 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 -de 1 261 2030 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 -de 1 262 2030 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 -de 1 263 2030 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 -de 1 264 2030 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 -de 1 265 2030 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 -de 1 266 2030 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 -de 1 267 2030 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 -de 1 268 2030 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 -de 1 269 2030 300000.0 300000.0 59.98 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 -de 1 270 2030 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 -de 1 271 2030 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 -de 1 272 2030 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 -de 1 273 2030 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 -de 1 274 2030 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 -de 1 275 2030 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 -de 1 276 2030 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 -de 1 277 2030 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 -de 1 278 2030 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 -de 1 279 2030 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 -de 1 280 2030 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 -de 1 281 2030 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 -de 1 282 2030 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 -de 1 283 2030 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 -de 1 284 2030 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 -de 1 285 2030 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 -de 1 286 2030 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 -de 1 287 2030 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 -de 1 288 2030 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 -de 1 289 2030 420000.0 420000.0 69.98 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 -de 1 290 2030 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 -de 1 291 2030 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 -de 1 292 2030 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 -de 1 293 2030 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 -de 1 294 2030 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 -de 1 295 2030 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 -de 1 296 2030 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 -de 1 297 2030 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 -de 1 298 2030 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 -de 1 299 2030 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 -de 1 300 2030 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 -de 1 301 2030 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 -de 1 302 2030 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 -de 1 303 2030 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 -de 1 304 2030 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 -de 1 305 2030 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 -de 1 306 2030 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 -de 1 307 2030 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 -de 1 308 2030 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 -de 1 309 2030 560000.0 560000.0 79.98 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 -de 1 310 2030 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 -de 1 311 2030 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 -de 1 312 2030 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 -de 1 313 2030 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 -de 1 314 2030 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 -de 1 315 2030 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 -de 1 316 2030 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 -de 1 317 2030 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 -de 1 318 2030 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 -de 1 319 2030 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 -de 1 320 2030 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 -de 1 321 2030 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 -de 1 322 2030 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 -de 1 323 2030 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 -de 1 324 2030 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 -de 1 325 2030 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 -de 1 326 2030 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 -de 1 327 2030 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 -de 1 328 2030 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 -de 1 329 2030 720000.0 720000.0 89.98 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 -de 1 330 2030 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 -de 1 331 2030 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 -de 1 332 2030 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 -de 1 333 2030 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 -de 1 334 2030 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 -de 1 335 2030 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 -de 1 336 2030 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 -es 1 1 2030 0.0 0.0 9.98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 -es 1 2 2030 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 -es 1 3 2030 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 -es 1 4 2030 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 -es 1 5 2030 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 -es 1 6 2030 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 -es 1 7 2030 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 -es 1 8 2030 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 -es 1 9 2030 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 -es 1 10 2030 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 -es 1 11 2030 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 -es 1 12 2030 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 -es 1 13 2030 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 -es 1 14 2030 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 -es 1 15 2030 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 -es 1 16 2030 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 -es 1 17 2030 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 -es 1 18 2030 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 -es 1 19 2030 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 -es 1 20 2030 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 -es 1 21 2030 20000.0 20000.0 19.98 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 -es 1 22 2030 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 -es 1 23 2030 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 -es 1 24 2030 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 -es 1 25 2030 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 -es 1 26 2030 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 -es 1 27 2030 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 -es 1 28 2030 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 -es 1 29 2030 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 -es 1 30 2030 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 -es 1 31 2030 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 -es 1 32 2030 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 -es 1 33 2030 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 -es 1 34 2030 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 -es 1 35 2030 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 -es 1 36 2030 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 -es 1 37 2030 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 -es 1 38 2030 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 -es 1 39 2030 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 -es 1 40 2030 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 -es 1 41 2030 60000.0 60000.0 29.98 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 -es 1 42 2030 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 -es 1 43 2030 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 -es 1 44 2030 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 -es 1 45 2030 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 -es 1 46 2030 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 -es 1 47 2030 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 -es 1 48 2030 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 -es 1 49 2030 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 -es 1 50 2030 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 -es 1 51 2030 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 -es 1 52 2030 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 -es 1 53 2030 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 -es 1 54 2030 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 -es 1 55 2030 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 -es 1 56 2030 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 -es 1 57 2030 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 -es 1 58 2030 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 -es 1 59 2030 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 -es 1 60 2030 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 -es 1 61 2030 120000.0 120000.0 39.98 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 -es 1 62 2030 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 -es 1 63 2030 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 -es 1 64 2030 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 -es 1 65 2030 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 -es 1 66 2030 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 -es 1 67 2030 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 -es 1 68 2030 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 -es 1 69 2030 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 -es 1 70 2030 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 -es 1 71 2030 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 -es 1 72 2030 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 -es 1 73 2030 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 -es 1 74 2030 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 -es 1 75 2030 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 -es 1 76 2030 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 -es 1 77 2030 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 -es 1 78 2030 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 -es 1 79 2030 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 -es 1 80 2030 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 -es 1 81 2030 200000.0 200000.0 49.98 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 -es 1 82 2030 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 -es 1 83 2030 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 -es 1 84 2030 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 -es 1 85 2030 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 -es 1 86 2030 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 -es 1 87 2030 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 -es 1 88 2030 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 -es 1 89 2030 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 -es 1 90 2030 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 -es 1 91 2030 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 -es 1 92 2030 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 -es 1 93 2030 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 -es 1 94 2030 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 -es 1 95 2030 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 -es 1 96 2030 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 -es 1 97 2030 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 -es 1 98 2030 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 -es 1 99 2030 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 -es 1 100 2030 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 -es 1 101 2030 300000.0 300000.0 59.98 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 -es 1 102 2030 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 -es 1 103 2030 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 -es 1 104 2030 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 -es 1 105 2030 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 -es 1 106 2030 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 -es 1 107 2030 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 -es 1 108 2030 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 -es 1 109 2030 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 -es 1 110 2030 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 -es 1 111 2030 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 -es 1 112 2030 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 -es 1 113 2030 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 -es 1 114 2030 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 -es 1 115 2030 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 -es 1 116 2030 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 -es 1 117 2030 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 -es 1 118 2030 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 -es 1 119 2030 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 -es 1 120 2030 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 -es 1 121 2030 420000.0 420000.0 69.98 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 -es 1 122 2030 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 -es 1 123 2030 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 -es 1 124 2030 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 -es 1 125 2030 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 -es 1 126 2030 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 -es 1 127 2030 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 -es 1 128 2030 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 -es 1 129 2030 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 -es 1 130 2030 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 -es 1 131 2030 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 -es 1 132 2030 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 -es 1 133 2030 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 -es 1 134 2030 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 -es 1 135 2030 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 -es 1 136 2030 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 -es 1 137 2030 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 -es 1 138 2030 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 -es 1 139 2030 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 -es 1 140 2030 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 -es 1 141 2030 560000.0 560000.0 79.98 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 -es 1 142 2030 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 -es 1 143 2030 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 -es 1 144 2030 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 -es 1 145 2030 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 -es 1 146 2030 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 -es 1 147 2030 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 -es 1 148 2030 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 -es 1 149 2030 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 -es 1 150 2030 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 -es 1 151 2030 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 -es 1 152 2030 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 -es 1 153 2030 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 -es 1 154 2030 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 -es 1 155 2030 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 -es 1 156 2030 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 -es 1 157 2030 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 -es 1 158 2030 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 -es 1 159 2030 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 -es 1 160 2030 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 -es 1 161 2030 720000.0 720000.0 89.98 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 -es 1 162 2030 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 -es 1 163 2030 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 -es 1 164 2030 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 -es 1 165 2030 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 -es 1 166 2030 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 -es 1 167 2030 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 -es 1 168 2030 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 -es 1 169 2030 0.0 0.0 9.98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 -es 1 170 2030 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 -es 1 171 2030 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 -es 1 172 2030 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 -es 1 173 2030 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 -es 1 174 2030 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 -es 1 175 2030 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 -es 1 176 2030 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 -es 1 177 2030 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 -es 1 178 2030 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 -es 1 179 2030 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 -es 1 180 2030 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 -es 1 181 2030 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 -es 1 182 2030 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 -es 1 183 2030 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 -es 1 184 2030 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 -es 1 185 2030 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 -es 1 186 2030 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 -es 1 187 2030 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 -es 1 188 2030 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 -es 1 189 2030 20000.0 20000.0 19.98 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 -es 1 190 2030 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 -es 1 191 2030 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 -es 1 192 2030 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 -es 1 193 2030 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 -es 1 194 2030 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 -es 1 195 2030 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 -es 1 196 2030 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 -es 1 197 2030 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 -es 1 198 2030 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 -es 1 199 2030 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 -es 1 200 2030 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 -es 1 201 2030 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 -es 1 202 2030 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 -es 1 203 2030 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 -es 1 204 2030 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 -es 1 205 2030 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 -es 1 206 2030 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 -es 1 207 2030 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 -es 1 208 2030 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 -es 1 209 2030 60000.0 60000.0 29.98 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 -es 1 210 2030 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 -es 1 211 2030 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 -es 1 212 2030 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 -es 1 213 2030 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 -es 1 214 2030 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 -es 1 215 2030 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 -es 1 216 2030 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 -es 1 217 2030 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 -es 1 218 2030 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 -es 1 219 2030 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 -es 1 220 2030 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 -es 1 221 2030 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 -es 1 222 2030 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 -es 1 223 2030 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 -es 1 224 2030 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 -es 1 225 2030 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 -es 1 226 2030 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 -es 1 227 2030 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 -es 1 228 2030 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 -es 1 229 2030 120000.0 120000.0 39.98 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 -es 1 230 2030 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 -es 1 231 2030 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 -es 1 232 2030 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 -es 1 233 2030 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 -es 1 234 2030 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 -es 1 235 2030 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 -es 1 236 2030 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 -es 1 237 2030 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 -es 1 238 2030 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 -es 1 239 2030 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 -es 1 240 2030 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 -es 1 241 2030 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 -es 1 242 2030 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 -es 1 243 2030 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 -es 1 244 2030 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 -es 1 245 2030 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 -es 1 246 2030 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 -es 1 247 2030 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 -es 1 248 2030 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 -es 1 249 2030 200000.0 200000.0 49.98 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 -es 1 250 2030 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 -es 1 251 2030 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 -es 1 252 2030 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 -es 1 253 2030 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 -es 1 254 2030 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 -es 1 255 2030 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 -es 1 256 2030 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 -es 1 257 2030 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 -es 1 258 2030 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 -es 1 259 2030 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 -es 1 260 2030 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 -es 1 261 2030 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 -es 1 262 2030 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 -es 1 263 2030 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 -es 1 264 2030 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 -es 1 265 2030 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 -es 1 266 2030 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 -es 1 267 2030 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 -es 1 268 2030 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 -es 1 269 2030 300000.0 300000.0 59.98 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 -es 1 270 2030 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 -es 1 271 2030 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 -es 1 272 2030 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 -es 1 273 2030 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 -es 1 274 2030 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 -es 1 275 2030 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 -es 1 276 2030 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 -es 1 277 2030 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 -es 1 278 2030 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 -es 1 279 2030 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 -es 1 280 2030 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 -es 1 281 2030 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 -es 1 282 2030 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 -es 1 283 2030 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 -es 1 284 2030 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 -es 1 285 2030 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 -es 1 286 2030 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 -es 1 287 2030 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 -es 1 288 2030 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 -es 1 289 2030 420000.0 420000.0 69.98 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 -es 1 290 2030 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 -es 1 291 2030 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 -es 1 292 2030 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 -es 1 293 2030 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 -es 1 294 2030 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 -es 1 295 2030 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 -es 1 296 2030 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 -es 1 297 2030 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 -es 1 298 2030 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 -es 1 299 2030 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 -es 1 300 2030 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 -es 1 301 2030 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 -es 1 302 2030 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 -es 1 303 2030 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 -es 1 304 2030 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 -es 1 305 2030 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 -es 1 306 2030 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 -es 1 307 2030 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 -es 1 308 2030 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 -es 1 309 2030 560000.0 560000.0 79.98 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 -es 1 310 2030 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 -es 1 311 2030 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 -es 1 312 2030 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 -es 1 313 2030 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 -es 1 314 2030 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 -es 1 315 2030 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 -es 1 316 2030 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 -es 1 317 2030 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 -es 1 318 2030 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 -es 1 319 2030 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 -es 1 320 2030 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 -es 1 321 2030 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 -es 1 322 2030 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 -es 1 323 2030 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 -es 1 324 2030 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 -es 1 325 2030 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 -es 1 326 2030 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 -es 1 327 2030 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 -es 1 328 2030 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 -es 1 329 2030 720000.0 720000.0 89.98 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 -es 1 330 2030 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 -es 1 331 2030 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 -es 1 332 2030 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 -es 1 333 2030 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 -es 1 334 2030 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 -es 1 335 2030 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 -es 1 336 2030 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 -fr 1 1 2030 0.0 0.0 9.99 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 -fr 1 2 2030 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 -fr 1 3 2030 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 -fr 1 4 2030 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 -fr 1 5 2030 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 -fr 1 6 2030 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 -fr 1 7 2030 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 -fr 1 8 2030 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 -fr 1 9 2030 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 -fr 1 10 2030 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 -fr 1 11 2030 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 -fr 1 12 2030 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 -fr 1 13 2030 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 -fr 1 14 2030 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 -fr 1 15 2030 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 -fr 1 16 2030 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 -fr 1 17 2030 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 -fr 1 18 2030 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 -fr 1 19 2030 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 -fr 1 20 2030 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 -fr 1 21 2030 20000.0 20000.0 19.99 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 -fr 1 22 2030 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 -fr 1 23 2030 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 -fr 1 24 2030 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 -fr 1 25 2030 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 -fr 1 26 2030 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 -fr 1 27 2030 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 -fr 1 28 2030 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 -fr 1 29 2030 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 -fr 1 30 2030 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 -fr 1 31 2030 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 -fr 1 32 2030 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 -fr 1 33 2030 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 -fr 1 34 2030 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 -fr 1 35 2030 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 -fr 1 36 2030 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 -fr 1 37 2030 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 -fr 1 38 2030 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 -fr 1 39 2030 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 -fr 1 40 2030 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 -fr 1 41 2030 60000.0 60000.0 29.99 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 -fr 1 42 2030 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 -fr 1 43 2030 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 -fr 1 44 2030 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 -fr 1 45 2030 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 -fr 1 46 2030 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 -fr 1 47 2030 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 -fr 1 48 2030 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 -fr 1 49 2030 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 -fr 1 50 2030 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 -fr 1 51 2030 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 -fr 1 52 2030 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 -fr 1 53 2030 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 -fr 1 54 2030 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 -fr 1 55 2030 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 -fr 1 56 2030 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 -fr 1 57 2030 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 -fr 1 58 2030 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 -fr 1 59 2030 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 -fr 1 60 2030 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 -fr 1 61 2030 120000.0 120000.0 39.99 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 -fr 1 62 2030 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 -fr 1 63 2030 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 -fr 1 64 2030 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 -fr 1 65 2030 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 -fr 1 66 2030 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 -fr 1 67 2030 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 -fr 1 68 2030 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 -fr 1 69 2030 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 -fr 1 70 2030 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 -fr 1 71 2030 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 -fr 1 72 2030 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 -fr 1 73 2030 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 -fr 1 74 2030 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 -fr 1 75 2030 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 -fr 1 76 2030 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 -fr 1 77 2030 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 -fr 1 78 2030 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 -fr 1 79 2030 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 -fr 1 80 2030 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 -fr 1 81 2030 200000.0 200000.0 49.99 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 -fr 1 82 2030 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 -fr 1 83 2030 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 -fr 1 84 2030 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 -fr 1 85 2030 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 -fr 1 86 2030 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 -fr 1 87 2030 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 -fr 1 88 2030 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 -fr 1 89 2030 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 -fr 1 90 2030 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 -fr 1 91 2030 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 -fr 1 92 2030 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 -fr 1 93 2030 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 -fr 1 94 2030 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 -fr 1 95 2030 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 -fr 1 96 2030 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 -fr 1 97 2030 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 -fr 1 98 2030 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 -fr 1 99 2030 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 -fr 1 100 2030 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 -fr 1 101 2030 300000.0 300000.0 59.99 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 -fr 1 102 2030 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 -fr 1 103 2030 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 -fr 1 104 2030 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 -fr 1 105 2030 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 -fr 1 106 2030 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 -fr 1 107 2030 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 -fr 1 108 2030 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 -fr 1 109 2030 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 -fr 1 110 2030 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 -fr 1 111 2030 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 -fr 1 112 2030 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 -fr 1 113 2030 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 -fr 1 114 2030 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 -fr 1 115 2030 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 -fr 1 116 2030 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 -fr 1 117 2030 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 -fr 1 118 2030 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 -fr 1 119 2030 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 -fr 1 120 2030 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 -fr 1 121 2030 420000.0 420000.0 69.99 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 -fr 1 122 2030 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 -fr 1 123 2030 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 -fr 1 124 2030 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 -fr 1 125 2030 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 -fr 1 126 2030 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 -fr 1 127 2030 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 -fr 1 128 2030 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 -fr 1 129 2030 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 -fr 1 130 2030 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 -fr 1 131 2030 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 -fr 1 132 2030 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 -fr 1 133 2030 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 -fr 1 134 2030 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 -fr 1 135 2030 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 -fr 1 136 2030 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 -fr 1 137 2030 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 -fr 1 138 2030 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 -fr 1 139 2030 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 -fr 1 140 2030 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 -fr 1 141 2030 560000.0 560000.0 79.99 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 -fr 1 142 2030 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 -fr 1 143 2030 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 -fr 1 144 2030 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 -fr 1 145 2030 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 -fr 1 146 2030 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 -fr 1 147 2030 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 -fr 1 148 2030 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 -fr 1 149 2030 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 -fr 1 150 2030 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 -fr 1 151 2030 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 -fr 1 152 2030 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 -fr 1 153 2030 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 -fr 1 154 2030 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 -fr 1 155 2030 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 -fr 1 156 2030 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 -fr 1 157 2030 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 -fr 1 158 2030 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 -fr 1 159 2030 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 -fr 1 160 2030 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 -fr 1 161 2030 720000.0 720000.0 89.99 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 -fr 1 162 2030 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 -fr 1 163 2030 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 -fr 1 164 2030 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 -fr 1 165 2030 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 -fr 1 166 2030 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 -fr 1 167 2030 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 -fr 1 168 2030 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 -fr 1 169 2030 0.0 0.0 9.99 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 -fr 1 170 2030 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 -fr 1 171 2030 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 -fr 1 172 2030 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 -fr 1 173 2030 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 -fr 1 174 2030 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 -fr 1 175 2030 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 -fr 1 176 2030 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 -fr 1 177 2030 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 -fr 1 178 2030 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 -fr 1 179 2030 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 -fr 1 180 2030 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 -fr 1 181 2030 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 -fr 1 182 2030 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 -fr 1 183 2030 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 -fr 1 184 2030 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 -fr 1 185 2030 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 -fr 1 186 2030 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 -fr 1 187 2030 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 -fr 1 188 2030 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 -fr 1 189 2030 20000.0 20000.0 19.99 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 -fr 1 190 2030 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 -fr 1 191 2030 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 -fr 1 192 2030 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 -fr 1 193 2030 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 -fr 1 194 2030 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 -fr 1 195 2030 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 -fr 1 196 2030 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 -fr 1 197 2030 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 -fr 1 198 2030 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 -fr 1 199 2030 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 -fr 1 200 2030 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 -fr 1 201 2030 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 -fr 1 202 2030 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 -fr 1 203 2030 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 -fr 1 204 2030 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 -fr 1 205 2030 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 -fr 1 206 2030 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 -fr 1 207 2030 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 -fr 1 208 2030 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 -fr 1 209 2030 60000.0 60000.0 29.99 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 -fr 1 210 2030 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 -fr 1 211 2030 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 -fr 1 212 2030 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 -fr 1 213 2030 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 -fr 1 214 2030 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 -fr 1 215 2030 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 -fr 1 216 2030 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 -fr 1 217 2030 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 -fr 1 218 2030 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 -fr 1 219 2030 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 -fr 1 220 2030 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 -fr 1 221 2030 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 -fr 1 222 2030 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 -fr 1 223 2030 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 -fr 1 224 2030 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 -fr 1 225 2030 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 -fr 1 226 2030 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 -fr 1 227 2030 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 -fr 1 228 2030 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 -fr 1 229 2030 120000.0 120000.0 39.99 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 -fr 1 230 2030 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 -fr 1 231 2030 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 -fr 1 232 2030 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 -fr 1 233 2030 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 -fr 1 234 2030 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 -fr 1 235 2030 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 -fr 1 236 2030 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 -fr 1 237 2030 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 -fr 1 238 2030 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 -fr 1 239 2030 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 -fr 1 240 2030 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 -fr 1 241 2030 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 -fr 1 242 2030 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 -fr 1 243 2030 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 -fr 1 244 2030 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 -fr 1 245 2030 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 -fr 1 246 2030 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 -fr 1 247 2030 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 -fr 1 248 2030 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 -fr 1 249 2030 200000.0 200000.0 49.99 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 -fr 1 250 2030 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 -fr 1 251 2030 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 -fr 1 252 2030 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 -fr 1 253 2030 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 -fr 1 254 2030 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 -fr 1 255 2030 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 -fr 1 256 2030 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 -fr 1 257 2030 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 -fr 1 258 2030 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 -fr 1 259 2030 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 -fr 1 260 2030 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 -fr 1 261 2030 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 -fr 1 262 2030 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 -fr 1 263 2030 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 -fr 1 264 2030 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 -fr 1 265 2030 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 -fr 1 266 2030 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 -fr 1 267 2030 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 -fr 1 268 2030 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 -fr 1 269 2030 300000.0 300000.0 59.99 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 -fr 1 270 2030 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 -fr 1 271 2030 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 -fr 1 272 2030 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 -fr 1 273 2030 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 -fr 1 274 2030 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 -fr 1 275 2030 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 -fr 1 276 2030 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 -fr 1 277 2030 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 -fr 1 278 2030 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 -fr 1 279 2030 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 -fr 1 280 2030 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 -fr 1 281 2030 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 -fr 1 282 2030 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 -fr 1 283 2030 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 -fr 1 284 2030 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 -fr 1 285 2030 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 -fr 1 286 2030 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 -fr 1 287 2030 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 -fr 1 288 2030 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 -fr 1 289 2030 420000.0 420000.0 69.99 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 -fr 1 290 2030 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 -fr 1 291 2030 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 -fr 1 292 2030 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 -fr 1 293 2030 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 -fr 1 294 2030 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 -fr 1 295 2030 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 -fr 1 296 2030 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 -fr 1 297 2030 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 -fr 1 298 2030 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 -fr 1 299 2030 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 -fr 1 300 2030 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 -fr 1 301 2030 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 -fr 1 302 2030 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 -fr 1 303 2030 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 -fr 1 304 2030 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 -fr 1 305 2030 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 -fr 1 306 2030 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 -fr 1 307 2030 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 -fr 1 308 2030 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 -fr 1 309 2030 560000.0 560000.0 79.99 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 -fr 1 310 2030 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 -fr 1 311 2030 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 -fr 1 312 2030 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 -fr 1 313 2030 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 -fr 1 314 2030 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 -fr 1 315 2030 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 -fr 1 316 2030 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 -fr 1 317 2030 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 -fr 1 318 2030 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 -fr 1 319 2030 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 -fr 1 320 2030 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 -fr 1 321 2030 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 -fr 1 322 2030 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 -fr 1 323 2030 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 -fr 1 324 2030 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 -fr 1 325 2030 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 -fr 1 326 2030 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 -fr 1 327 2030 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 -fr 1 328 2030 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 -fr 1 329 2030 720000.0 720000.0 89.99 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 -fr 1 330 2030 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 -fr 1 331 2030 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 -fr 1 332 2030 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 -fr 1 333 2030 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 -fr 1 334 2030 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 -fr 1 335 2030 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 -fr 1 336 2030 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 -it 1 1 2030 0.0 0.0 10.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 -it 1 2 2030 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 -it 1 3 2030 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 -it 1 4 2030 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 -it 1 5 2030 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 -it 1 6 2030 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 -it 1 7 2030 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 -it 1 8 2030 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 -it 1 9 2030 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 -it 1 10 2030 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 -it 1 11 2030 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 -it 1 12 2030 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 -it 1 13 2030 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 -it 1 14 2030 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 -it 1 15 2030 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 -it 1 16 2030 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 -it 1 17 2030 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 -it 1 18 2030 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 -it 1 19 2030 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 -it 1 20 2030 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 -it 1 21 2030 20000.0 20000.0 20.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 -it 1 22 2030 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 -it 1 23 2030 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 -it 1 24 2030 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 -it 1 25 2030 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 -it 1 26 2030 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 -it 1 27 2030 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 -it 1 28 2030 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 -it 1 29 2030 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 -it 1 30 2030 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 -it 1 31 2030 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 -it 1 32 2030 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 -it 1 33 2030 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 -it 1 34 2030 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 -it 1 35 2030 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 -it 1 36 2030 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 -it 1 37 2030 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 -it 1 38 2030 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 -it 1 39 2030 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 -it 1 40 2030 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 -it 1 41 2030 60000.0 60000.0 30.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 -it 1 42 2030 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 -it 1 43 2030 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 -it 1 44 2030 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 -it 1 45 2030 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 -it 1 46 2030 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 -it 1 47 2030 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 -it 1 48 2030 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 -it 1 49 2030 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 -it 1 50 2030 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 -it 1 51 2030 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 -it 1 52 2030 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 -it 1 53 2030 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 -it 1 54 2030 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 -it 1 55 2030 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 -it 1 56 2030 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 -it 1 57 2030 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 -it 1 58 2030 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 -it 1 59 2030 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 -it 1 60 2030 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 -it 1 61 2030 120000.0 120000.0 40.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 -it 1 62 2030 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 -it 1 63 2030 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 -it 1 64 2030 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 -it 1 65 2030 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 -it 1 66 2030 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 -it 1 67 2030 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 -it 1 68 2030 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 -it 1 69 2030 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 -it 1 70 2030 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 -it 1 71 2030 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 -it 1 72 2030 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 -it 1 73 2030 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 -it 1 74 2030 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 -it 1 75 2030 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 -it 1 76 2030 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 -it 1 77 2030 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 -it 1 78 2030 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 -it 1 79 2030 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 -it 1 80 2030 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 -it 1 81 2030 200000.0 200000.0 50.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 -it 1 82 2030 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 -it 1 83 2030 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 -it 1 84 2030 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 -it 1 85 2030 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 -it 1 86 2030 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 -it 1 87 2030 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 -it 1 88 2030 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 -it 1 89 2030 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 -it 1 90 2030 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 -it 1 91 2030 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 -it 1 92 2030 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 -it 1 93 2030 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 -it 1 94 2030 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 -it 1 95 2030 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 -it 1 96 2030 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 -it 1 97 2030 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 -it 1 98 2030 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 -it 1 99 2030 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 -it 1 100 2030 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 -it 1 101 2030 300000.0 300000.0 60.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 -it 1 102 2030 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 -it 1 103 2030 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 -it 1 104 2030 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 -it 1 105 2030 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 -it 1 106 2030 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 -it 1 107 2030 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 -it 1 108 2030 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 -it 1 109 2030 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 -it 1 110 2030 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 -it 1 111 2030 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 -it 1 112 2030 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 -it 1 113 2030 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 -it 1 114 2030 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 -it 1 115 2030 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 -it 1 116 2030 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 -it 1 117 2030 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 -it 1 118 2030 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 -it 1 119 2030 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 -it 1 120 2030 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 -it 1 121 2030 420000.0 420000.0 70.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 -it 1 122 2030 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 -it 1 123 2030 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 -it 1 124 2030 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 -it 1 125 2030 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 -it 1 126 2030 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 -it 1 127 2030 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 -it 1 128 2030 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 -it 1 129 2030 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 -it 1 130 2030 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 -it 1 131 2030 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 -it 1 132 2030 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 -it 1 133 2030 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 -it 1 134 2030 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 -it 1 135 2030 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 -it 1 136 2030 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 -it 1 137 2030 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 -it 1 138 2030 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 -it 1 139 2030 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 -it 1 140 2030 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 -it 1 141 2030 560000.0 560000.0 80.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 -it 1 142 2030 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 -it 1 143 2030 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 -it 1 144 2030 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 -it 1 145 2030 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 -it 1 146 2030 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 -it 1 147 2030 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 -it 1 148 2030 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 -it 1 149 2030 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 -it 1 150 2030 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 -it 1 151 2030 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 -it 1 152 2030 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 -it 1 153 2030 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 -it 1 154 2030 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 -it 1 155 2030 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 -it 1 156 2030 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 -it 1 157 2030 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 -it 1 158 2030 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 -it 1 159 2030 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 -it 1 160 2030 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 -it 1 161 2030 720000.0 720000.0 90.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 -it 1 162 2030 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 -it 1 163 2030 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 -it 1 164 2030 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 -it 1 165 2030 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 -it 1 166 2030 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 -it 1 167 2030 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 -it 1 168 2030 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 -it 1 169 2030 0.0 0.0 10.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 -it 1 170 2030 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 -it 1 171 2030 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 -it 1 172 2030 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 -it 1 173 2030 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 -it 1 174 2030 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 -it 1 175 2030 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 -it 1 176 2030 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 -it 1 177 2030 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 -it 1 178 2030 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 -it 1 179 2030 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 -it 1 180 2030 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 -it 1 181 2030 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 -it 1 182 2030 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 -it 1 183 2030 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 -it 1 184 2030 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 -it 1 185 2030 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 -it 1 186 2030 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 -it 1 187 2030 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 -it 1 188 2030 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 -it 1 189 2030 20000.0 20000.0 20.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 -it 1 190 2030 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 -it 1 191 2030 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 -it 1 192 2030 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 -it 1 193 2030 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 -it 1 194 2030 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 -it 1 195 2030 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 -it 1 196 2030 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 -it 1 197 2030 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 -it 1 198 2030 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 -it 1 199 2030 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 -it 1 200 2030 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 -it 1 201 2030 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 -it 1 202 2030 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 -it 1 203 2030 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 -it 1 204 2030 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 -it 1 205 2030 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 -it 1 206 2030 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 -it 1 207 2030 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 -it 1 208 2030 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 -it 1 209 2030 60000.0 60000.0 30.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 -it 1 210 2030 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 -it 1 211 2030 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 -it 1 212 2030 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 -it 1 213 2030 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 -it 1 214 2030 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 -it 1 215 2030 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 -it 1 216 2030 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 -it 1 217 2030 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 -it 1 218 2030 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 -it 1 219 2030 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 -it 1 220 2030 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 -it 1 221 2030 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 -it 1 222 2030 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 -it 1 223 2030 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 -it 1 224 2030 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 -it 1 225 2030 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 -it 1 226 2030 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 -it 1 227 2030 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 -it 1 228 2030 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 -it 1 229 2030 120000.0 120000.0 40.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 -it 1 230 2030 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 -it 1 231 2030 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 -it 1 232 2030 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 -it 1 233 2030 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 -it 1 234 2030 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 -it 1 235 2030 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 -it 1 236 2030 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 -it 1 237 2030 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 -it 1 238 2030 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 -it 1 239 2030 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 -it 1 240 2030 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 -it 1 241 2030 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 -it 1 242 2030 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 -it 1 243 2030 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 -it 1 244 2030 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 -it 1 245 2030 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 -it 1 246 2030 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 -it 1 247 2030 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 -it 1 248 2030 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 -it 1 249 2030 200000.0 200000.0 50.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 -it 1 250 2030 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 -it 1 251 2030 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 -it 1 252 2030 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 -it 1 253 2030 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 -it 1 254 2030 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 -it 1 255 2030 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 -it 1 256 2030 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 -it 1 257 2030 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 -it 1 258 2030 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 -it 1 259 2030 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 -it 1 260 2030 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 -it 1 261 2030 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 -it 1 262 2030 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 -it 1 263 2030 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 -it 1 264 2030 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 -it 1 265 2030 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 -it 1 266 2030 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 -it 1 267 2030 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 -it 1 268 2030 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 -it 1 269 2030 300000.0 300000.0 60.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 -it 1 270 2030 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 -it 1 271 2030 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 -it 1 272 2030 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 -it 1 273 2030 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 -it 1 274 2030 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 -it 1 275 2030 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 -it 1 276 2030 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 -it 1 277 2030 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 -it 1 278 2030 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 -it 1 279 2030 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 -it 1 280 2030 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 -it 1 281 2030 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 -it 1 282 2030 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 -it 1 283 2030 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 -it 1 284 2030 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 -it 1 285 2030 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 -it 1 286 2030 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 -it 1 287 2030 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 -it 1 288 2030 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 -it 1 289 2030 420000.0 420000.0 70.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 -it 1 290 2030 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 -it 1 291 2030 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 -it 1 292 2030 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 -it 1 293 2030 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 -it 1 294 2030 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 -it 1 295 2030 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 -it 1 296 2030 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 -it 1 297 2030 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 -it 1 298 2030 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 -it 1 299 2030 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 -it 1 300 2030 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 -it 1 301 2030 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 -it 1 302 2030 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 -it 1 303 2030 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 -it 1 304 2030 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 -it 1 305 2030 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 -it 1 306 2030 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 -it 1 307 2030 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 -it 1 308 2030 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 -it 1 309 2030 560000.0 560000.0 80.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 -it 1 310 2030 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 -it 1 311 2030 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 -it 1 312 2030 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 -it 1 313 2030 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 -it 1 314 2030 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 -it 1 315 2030 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 -it 1 316 2030 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 -it 1 317 2030 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 -it 1 318 2030 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 -it 1 319 2030 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 -it 1 320 2030 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 -it 1 321 2030 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 -it 1 322 2030 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 -it 1 323 2030 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 -it 1 324 2030 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 -it 1 325 2030 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 -it 1 326 2030 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 -it 1 327 2030 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 -it 1 328 2030 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 -it 1 329 2030 720000.0 720000.0 90.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 -it 1 330 2030 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 -it 1 331 2030 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 -it 1 332 2030 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 -it 1 333 2030 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 -it 1 334 2030 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 -it 1 335 2030 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 -it 1 336 2030 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 -de 2 1 2030 0.0 0.0 9.98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 -de 2 2 2030 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 -de 2 3 2030 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 -de 2 4 2030 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 -de 2 5 2030 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 -de 2 6 2030 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 -de 2 7 2030 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 -de 2 8 2030 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 -de 2 9 2030 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 -de 2 10 2030 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 -de 2 11 2030 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 -de 2 12 2030 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 -de 2 13 2030 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 -de 2 14 2030 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 -de 2 15 2030 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 -de 2 16 2030 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 -de 2 17 2030 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 -de 2 18 2030 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 -de 2 19 2030 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 -de 2 20 2030 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 -de 2 21 2030 20000.0 20000.0 19.98 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 -de 2 22 2030 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 -de 2 23 2030 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 -de 2 24 2030 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 -de 2 25 2030 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 -de 2 26 2030 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 -de 2 27 2030 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 -de 2 28 2030 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 -de 2 29 2030 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 -de 2 30 2030 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 -de 2 31 2030 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 -de 2 32 2030 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 -de 2 33 2030 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 -de 2 34 2030 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 -de 2 35 2030 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 -de 2 36 2030 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 -de 2 37 2030 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 -de 2 38 2030 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 -de 2 39 2030 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 -de 2 40 2030 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 -de 2 41 2030 60000.0 60000.0 29.98 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 -de 2 42 2030 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 -de 2 43 2030 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 -de 2 44 2030 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 -de 2 45 2030 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 -de 2 46 2030 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 -de 2 47 2030 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 -de 2 48 2030 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 -de 2 49 2030 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 -de 2 50 2030 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 -de 2 51 2030 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 -de 2 52 2030 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 -de 2 53 2030 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 -de 2 54 2030 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 -de 2 55 2030 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 -de 2 56 2030 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 -de 2 57 2030 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 -de 2 58 2030 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 -de 2 59 2030 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 -de 2 60 2030 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 -de 2 61 2030 120000.0 120000.0 39.98 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 -de 2 62 2030 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 -de 2 63 2030 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 -de 2 64 2030 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 -de 2 65 2030 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 -de 2 66 2030 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 -de 2 67 2030 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 -de 2 68 2030 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 -de 2 69 2030 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 -de 2 70 2030 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 -de 2 71 2030 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 -de 2 72 2030 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 -de 2 73 2030 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 -de 2 74 2030 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 -de 2 75 2030 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 -de 2 76 2030 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 -de 2 77 2030 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 -de 2 78 2030 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 -de 2 79 2030 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 -de 2 80 2030 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 -de 2 81 2030 200000.0 200000.0 49.98 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 -de 2 82 2030 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 -de 2 83 2030 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 -de 2 84 2030 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 -de 2 85 2030 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 -de 2 86 2030 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 -de 2 87 2030 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 -de 2 88 2030 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 -de 2 89 2030 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 -de 2 90 2030 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 -de 2 91 2030 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 -de 2 92 2030 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 -de 2 93 2030 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 -de 2 94 2030 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 -de 2 95 2030 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 -de 2 96 2030 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 -de 2 97 2030 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 -de 2 98 2030 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 -de 2 99 2030 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 -de 2 100 2030 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 -de 2 101 2030 300000.0 300000.0 59.98 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 -de 2 102 2030 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 -de 2 103 2030 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 -de 2 104 2030 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 -de 2 105 2030 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 -de 2 106 2030 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 -de 2 107 2030 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 -de 2 108 2030 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 -de 2 109 2030 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 -de 2 110 2030 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 -de 2 111 2030 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 -de 2 112 2030 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 -de 2 113 2030 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 -de 2 114 2030 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 -de 2 115 2030 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 -de 2 116 2030 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 -de 2 117 2030 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 -de 2 118 2030 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 -de 2 119 2030 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 -de 2 120 2030 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 -de 2 121 2030 420000.0 420000.0 69.98 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 -de 2 122 2030 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 -de 2 123 2030 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 -de 2 124 2030 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 -de 2 125 2030 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 -de 2 126 2030 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 -de 2 127 2030 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 -de 2 128 2030 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 -de 2 129 2030 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 -de 2 130 2030 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 -de 2 131 2030 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 -de 2 132 2030 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 -de 2 133 2030 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 -de 2 134 2030 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 -de 2 135 2030 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 -de 2 136 2030 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 -de 2 137 2030 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 -de 2 138 2030 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 -de 2 139 2030 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 -de 2 140 2030 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 -de 2 141 2030 560000.0 560000.0 79.98 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 -de 2 142 2030 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 -de 2 143 2030 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 -de 2 144 2030 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 -de 2 145 2030 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 -de 2 146 2030 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 -de 2 147 2030 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 -de 2 148 2030 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 -de 2 149 2030 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 -de 2 150 2030 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 -de 2 151 2030 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 -de 2 152 2030 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 -de 2 153 2030 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 -de 2 154 2030 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 -de 2 155 2030 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 -de 2 156 2030 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 -de 2 157 2030 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 -de 2 158 2030 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 -de 2 159 2030 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 -de 2 160 2030 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 -de 2 161 2030 720000.0 720000.0 89.98 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 -de 2 162 2030 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 -de 2 163 2030 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 -de 2 164 2030 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 -de 2 165 2030 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 -de 2 166 2030 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 -de 2 167 2030 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 -de 2 168 2030 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 -de 2 169 2030 0.0 0.0 9.98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 -de 2 170 2030 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 -de 2 171 2030 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 -de 2 172 2030 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 -de 2 173 2030 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 -de 2 174 2030 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 -de 2 175 2030 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 -de 2 176 2030 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 -de 2 177 2030 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 -de 2 178 2030 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 -de 2 179 2030 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 -de 2 180 2030 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 -de 2 181 2030 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 -de 2 182 2030 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 -de 2 183 2030 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 -de 2 184 2030 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 -de 2 185 2030 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 -de 2 186 2030 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 -de 2 187 2030 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 -de 2 188 2030 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 -de 2 189 2030 20000.0 20000.0 19.98 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 -de 2 190 2030 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 -de 2 191 2030 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 -de 2 192 2030 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 -de 2 193 2030 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 -de 2 194 2030 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 -de 2 195 2030 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 -de 2 196 2030 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 -de 2 197 2030 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 -de 2 198 2030 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 -de 2 199 2030 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 -de 2 200 2030 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 -de 2 201 2030 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 -de 2 202 2030 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 -de 2 203 2030 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 -de 2 204 2030 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 -de 2 205 2030 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 -de 2 206 2030 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 -de 2 207 2030 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 -de 2 208 2030 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 -de 2 209 2030 60000.0 60000.0 29.98 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 -de 2 210 2030 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 -de 2 211 2030 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 -de 2 212 2030 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 -de 2 213 2030 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 -de 2 214 2030 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 -de 2 215 2030 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 -de 2 216 2030 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 -de 2 217 2030 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 -de 2 218 2030 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 -de 2 219 2030 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 -de 2 220 2030 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 -de 2 221 2030 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 -de 2 222 2030 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 -de 2 223 2030 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 -de 2 224 2030 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 -de 2 225 2030 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 -de 2 226 2030 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 -de 2 227 2030 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 -de 2 228 2030 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 -de 2 229 2030 120000.0 120000.0 39.98 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 -de 2 230 2030 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 -de 2 231 2030 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 -de 2 232 2030 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 -de 2 233 2030 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 -de 2 234 2030 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 -de 2 235 2030 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 -de 2 236 2030 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 -de 2 237 2030 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 -de 2 238 2030 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 -de 2 239 2030 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 -de 2 240 2030 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 -de 2 241 2030 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 -de 2 242 2030 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 -de 2 243 2030 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 -de 2 244 2030 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 -de 2 245 2030 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 -de 2 246 2030 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 -de 2 247 2030 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 -de 2 248 2030 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 -de 2 249 2030 200000.0 200000.0 49.98 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 -de 2 250 2030 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 -de 2 251 2030 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 -de 2 252 2030 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 -de 2 253 2030 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 -de 2 254 2030 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 -de 2 255 2030 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 -de 2 256 2030 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 -de 2 257 2030 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 -de 2 258 2030 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 -de 2 259 2030 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 -de 2 260 2030 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 -de 2 261 2030 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 -de 2 262 2030 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 -de 2 263 2030 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 -de 2 264 2030 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 -de 2 265 2030 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 -de 2 266 2030 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 -de 2 267 2030 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 -de 2 268 2030 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 -de 2 269 2030 300000.0 300000.0 59.98 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 -de 2 270 2030 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 -de 2 271 2030 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 -de 2 272 2030 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 -de 2 273 2030 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 -de 2 274 2030 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 -de 2 275 2030 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 -de 2 276 2030 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 -de 2 277 2030 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 -de 2 278 2030 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 -de 2 279 2030 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 -de 2 280 2030 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 -de 2 281 2030 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 -de 2 282 2030 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 -de 2 283 2030 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 -de 2 284 2030 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 -de 2 285 2030 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 -de 2 286 2030 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 -de 2 287 2030 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 -de 2 288 2030 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 -de 2 289 2030 420000.0 420000.0 69.98 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 -de 2 290 2030 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 -de 2 291 2030 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 -de 2 292 2030 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 -de 2 293 2030 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 -de 2 294 2030 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 -de 2 295 2030 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 -de 2 296 2030 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 -de 2 297 2030 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 -de 2 298 2030 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 -de 2 299 2030 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 -de 2 300 2030 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 -de 2 301 2030 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 -de 2 302 2030 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 -de 2 303 2030 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 -de 2 304 2030 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 -de 2 305 2030 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 -de 2 306 2030 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 -de 2 307 2030 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 -de 2 308 2030 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 -de 2 309 2030 560000.0 560000.0 79.98 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 -de 2 310 2030 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 -de 2 311 2030 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 -de 2 312 2030 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 -de 2 313 2030 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 -de 2 314 2030 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 -de 2 315 2030 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 -de 2 316 2030 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 -de 2 317 2030 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 -de 2 318 2030 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 -de 2 319 2030 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 -de 2 320 2030 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 -de 2 321 2030 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 -de 2 322 2030 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 -de 2 323 2030 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 -de 2 324 2030 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 -de 2 325 2030 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 -de 2 326 2030 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 -de 2 327 2030 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 -de 2 328 2030 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 -de 2 329 2030 720000.0 720000.0 89.98 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 -de 2 330 2030 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 -de 2 331 2030 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 -de 2 332 2030 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 -de 2 333 2030 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 -de 2 334 2030 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 -de 2 335 2030 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 -de 2 336 2030 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 -es 2 1 2030 0.0 0.0 9.98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 -es 2 2 2030 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 -es 2 3 2030 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 -es 2 4 2030 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 -es 2 5 2030 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 -es 2 6 2030 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 -es 2 7 2030 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 -es 2 8 2030 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 -es 2 9 2030 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 -es 2 10 2030 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 -es 2 11 2030 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 -es 2 12 2030 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 -es 2 13 2030 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 -es 2 14 2030 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 -es 2 15 2030 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 -es 2 16 2030 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 -es 2 17 2030 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 -es 2 18 2030 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 -es 2 19 2030 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 -es 2 20 2030 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 -es 2 21 2030 20000.0 20000.0 19.98 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 -es 2 22 2030 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 -es 2 23 2030 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 -es 2 24 2030 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 -es 2 25 2030 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 -es 2 26 2030 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 -es 2 27 2030 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 -es 2 28 2030 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 -es 2 29 2030 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 -es 2 30 2030 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 -es 2 31 2030 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 -es 2 32 2030 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 -es 2 33 2030 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 -es 2 34 2030 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 -es 2 35 2030 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 -es 2 36 2030 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 -es 2 37 2030 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 -es 2 38 2030 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 -es 2 39 2030 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 -es 2 40 2030 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 -es 2 41 2030 60000.0 60000.0 29.98 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 -es 2 42 2030 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 -es 2 43 2030 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 -es 2 44 2030 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 -es 2 45 2030 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 -es 2 46 2030 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 -es 2 47 2030 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 -es 2 48 2030 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 -es 2 49 2030 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 -es 2 50 2030 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 -es 2 51 2030 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 -es 2 52 2030 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 -es 2 53 2030 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 -es 2 54 2030 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 -es 2 55 2030 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 -es 2 56 2030 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 -es 2 57 2030 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 -es 2 58 2030 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 -es 2 59 2030 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 -es 2 60 2030 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 -es 2 61 2030 120000.0 120000.0 39.98 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 -es 2 62 2030 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 -es 2 63 2030 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 -es 2 64 2030 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 -es 2 65 2030 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 -es 2 66 2030 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 -es 2 67 2030 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 -es 2 68 2030 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 -es 2 69 2030 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 -es 2 70 2030 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 -es 2 71 2030 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 -es 2 72 2030 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 -es 2 73 2030 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 -es 2 74 2030 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 -es 2 75 2030 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 -es 2 76 2030 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 -es 2 77 2030 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 -es 2 78 2030 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 -es 2 79 2030 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 -es 2 80 2030 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 -es 2 81 2030 200000.0 200000.0 49.98 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 -es 2 82 2030 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 -es 2 83 2030 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 -es 2 84 2030 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 -es 2 85 2030 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 -es 2 86 2030 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 -es 2 87 2030 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 -es 2 88 2030 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 -es 2 89 2030 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 -es 2 90 2030 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 -es 2 91 2030 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 -es 2 92 2030 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 -es 2 93 2030 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 -es 2 94 2030 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 -es 2 95 2030 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 -es 2 96 2030 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 -es 2 97 2030 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 -es 2 98 2030 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 -es 2 99 2030 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 -es 2 100 2030 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 -es 2 101 2030 300000.0 300000.0 59.98 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 -es 2 102 2030 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 -es 2 103 2030 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 -es 2 104 2030 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 -es 2 105 2030 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 -es 2 106 2030 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 -es 2 107 2030 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 -es 2 108 2030 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 -es 2 109 2030 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 -es 2 110 2030 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 -es 2 111 2030 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 -es 2 112 2030 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 -es 2 113 2030 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 -es 2 114 2030 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 -es 2 115 2030 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 -es 2 116 2030 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 -es 2 117 2030 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 -es 2 118 2030 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 -es 2 119 2030 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 -es 2 120 2030 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 -es 2 121 2030 420000.0 420000.0 69.98 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 -es 2 122 2030 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 -es 2 123 2030 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 -es 2 124 2030 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 -es 2 125 2030 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 -es 2 126 2030 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 -es 2 127 2030 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 -es 2 128 2030 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 -es 2 129 2030 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 -es 2 130 2030 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 -es 2 131 2030 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 -es 2 132 2030 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 -es 2 133 2030 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 -es 2 134 2030 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 -es 2 135 2030 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 -es 2 136 2030 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 -es 2 137 2030 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 -es 2 138 2030 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 -es 2 139 2030 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 -es 2 140 2030 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 -es 2 141 2030 560000.0 560000.0 79.98 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 -es 2 142 2030 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 -es 2 143 2030 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 -es 2 144 2030 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 -es 2 145 2030 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 -es 2 146 2030 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 -es 2 147 2030 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 -es 2 148 2030 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 -es 2 149 2030 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 -es 2 150 2030 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 -es 2 151 2030 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 -es 2 152 2030 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 -es 2 153 2030 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 -es 2 154 2030 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 -es 2 155 2030 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 -es 2 156 2030 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 -es 2 157 2030 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 -es 2 158 2030 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 -es 2 159 2030 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 -es 2 160 2030 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 -es 2 161 2030 720000.0 720000.0 89.98 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 -es 2 162 2030 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 -es 2 163 2030 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 -es 2 164 2030 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 -es 2 165 2030 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 -es 2 166 2030 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 -es 2 167 2030 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 -es 2 168 2030 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 -es 2 169 2030 0.0 0.0 9.98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 -es 2 170 2030 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 -es 2 171 2030 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 -es 2 172 2030 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 -es 2 173 2030 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 -es 2 174 2030 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 -es 2 175 2030 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 -es 2 176 2030 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 -es 2 177 2030 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 -es 2 178 2030 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 -es 2 179 2030 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 -es 2 180 2030 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 -es 2 181 2030 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 -es 2 182 2030 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 -es 2 183 2030 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 -es 2 184 2030 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 -es 2 185 2030 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 -es 2 186 2030 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 -es 2 187 2030 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 -es 2 188 2030 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 -es 2 189 2030 20000.0 20000.0 19.98 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 -es 2 190 2030 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 -es 2 191 2030 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 -es 2 192 2030 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 -es 2 193 2030 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 -es 2 194 2030 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 -es 2 195 2030 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 -es 2 196 2030 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 -es 2 197 2030 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 -es 2 198 2030 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 -es 2 199 2030 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 -es 2 200 2030 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 -es 2 201 2030 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 -es 2 202 2030 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 -es 2 203 2030 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 -es 2 204 2030 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 -es 2 205 2030 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 -es 2 206 2030 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 -es 2 207 2030 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 -es 2 208 2030 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 -es 2 209 2030 60000.0 60000.0 29.98 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 -es 2 210 2030 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 -es 2 211 2030 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 -es 2 212 2030 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 -es 2 213 2030 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 -es 2 214 2030 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 -es 2 215 2030 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 -es 2 216 2030 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 -es 2 217 2030 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 -es 2 218 2030 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 -es 2 219 2030 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 -es 2 220 2030 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 -es 2 221 2030 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 -es 2 222 2030 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 -es 2 223 2030 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 -es 2 224 2030 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 -es 2 225 2030 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 -es 2 226 2030 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 -es 2 227 2030 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 -es 2 228 2030 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 -es 2 229 2030 120000.0 120000.0 39.98 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 -es 2 230 2030 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 -es 2 231 2030 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 -es 2 232 2030 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 -es 2 233 2030 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 -es 2 234 2030 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 -es 2 235 2030 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 -es 2 236 2030 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 -es 2 237 2030 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 -es 2 238 2030 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 -es 2 239 2030 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 -es 2 240 2030 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 -es 2 241 2030 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 -es 2 242 2030 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 -es 2 243 2030 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 -es 2 244 2030 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 -es 2 245 2030 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 -es 2 246 2030 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 -es 2 247 2030 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 -es 2 248 2030 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 -es 2 249 2030 200000.0 200000.0 49.98 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 -es 2 250 2030 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 -es 2 251 2030 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 -es 2 252 2030 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 -es 2 253 2030 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 -es 2 254 2030 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 -es 2 255 2030 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 -es 2 256 2030 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 -es 2 257 2030 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 -es 2 258 2030 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 -es 2 259 2030 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 -es 2 260 2030 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 -es 2 261 2030 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 -es 2 262 2030 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 -es 2 263 2030 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 -es 2 264 2030 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 -es 2 265 2030 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 -es 2 266 2030 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 -es 2 267 2030 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 -es 2 268 2030 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 -es 2 269 2030 300000.0 300000.0 59.98 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 -es 2 270 2030 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 -es 2 271 2030 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 -es 2 272 2030 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 -es 2 273 2030 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 -es 2 274 2030 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 -es 2 275 2030 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 -es 2 276 2030 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 -es 2 277 2030 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 -es 2 278 2030 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 -es 2 279 2030 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 -es 2 280 2030 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 -es 2 281 2030 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 -es 2 282 2030 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 -es 2 283 2030 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 -es 2 284 2030 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 -es 2 285 2030 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 -es 2 286 2030 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 -es 2 287 2030 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 -es 2 288 2030 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 -es 2 289 2030 420000.0 420000.0 69.98 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 -es 2 290 2030 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 -es 2 291 2030 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 -es 2 292 2030 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 -es 2 293 2030 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 -es 2 294 2030 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 -es 2 295 2030 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 -es 2 296 2030 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 -es 2 297 2030 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 -es 2 298 2030 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 -es 2 299 2030 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 -es 2 300 2030 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 -es 2 301 2030 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 -es 2 302 2030 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 -es 2 303 2030 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 -es 2 304 2030 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 -es 2 305 2030 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 -es 2 306 2030 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 -es 2 307 2030 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 -es 2 308 2030 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 -es 2 309 2030 560000.0 560000.0 79.98 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 -es 2 310 2030 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 -es 2 311 2030 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 -es 2 312 2030 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 -es 2 313 2030 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 -es 2 314 2030 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 -es 2 315 2030 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 -es 2 316 2030 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 -es 2 317 2030 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 -es 2 318 2030 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 -es 2 319 2030 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 -es 2 320 2030 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 -es 2 321 2030 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 -es 2 322 2030 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 -es 2 323 2030 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 -es 2 324 2030 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 -es 2 325 2030 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 -es 2 326 2030 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 -es 2 327 2030 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 -es 2 328 2030 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 -es 2 329 2030 720000.0 720000.0 89.98 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 -es 2 330 2030 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 -es 2 331 2030 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 -es 2 332 2030 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 -es 2 333 2030 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 -es 2 334 2030 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 -es 2 335 2030 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 -es 2 336 2030 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 -fr 2 1 2030 0.0 0.0 9.99 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 -fr 2 2 2030 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 -fr 2 3 2030 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 -fr 2 4 2030 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 -fr 2 5 2030 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 -fr 2 6 2030 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 -fr 2 7 2030 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 -fr 2 8 2030 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 -fr 2 9 2030 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 -fr 2 10 2030 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 -fr 2 11 2030 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 -fr 2 12 2030 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 -fr 2 13 2030 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 -fr 2 14 2030 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 -fr 2 15 2030 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 -fr 2 16 2030 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 -fr 2 17 2030 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 -fr 2 18 2030 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 -fr 2 19 2030 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 -fr 2 20 2030 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 -fr 2 21 2030 20000.0 20000.0 19.99 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 -fr 2 22 2030 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 -fr 2 23 2030 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 -fr 2 24 2030 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 -fr 2 25 2030 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 -fr 2 26 2030 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 -fr 2 27 2030 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 -fr 2 28 2030 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 -fr 2 29 2030 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 -fr 2 30 2030 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 -fr 2 31 2030 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 -fr 2 32 2030 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 -fr 2 33 2030 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 -fr 2 34 2030 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 -fr 2 35 2030 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 -fr 2 36 2030 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 -fr 2 37 2030 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 -fr 2 38 2030 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 -fr 2 39 2030 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 -fr 2 40 2030 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 -fr 2 41 2030 60000.0 60000.0 29.99 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 -fr 2 42 2030 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 -fr 2 43 2030 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 -fr 2 44 2030 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 -fr 2 45 2030 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 -fr 2 46 2030 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 -fr 2 47 2030 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 -fr 2 48 2030 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 -fr 2 49 2030 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 -fr 2 50 2030 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 -fr 2 51 2030 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 -fr 2 52 2030 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 -fr 2 53 2030 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 -fr 2 54 2030 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 -fr 2 55 2030 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 -fr 2 56 2030 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 -fr 2 57 2030 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 -fr 2 58 2030 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 -fr 2 59 2030 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 -fr 2 60 2030 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 -fr 2 61 2030 120000.0 120000.0 39.99 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 -fr 2 62 2030 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 -fr 2 63 2030 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 -fr 2 64 2030 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 -fr 2 65 2030 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 -fr 2 66 2030 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 -fr 2 67 2030 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 -fr 2 68 2030 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 -fr 2 69 2030 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 -fr 2 70 2030 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 -fr 2 71 2030 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 -fr 2 72 2030 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 -fr 2 73 2030 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 -fr 2 74 2030 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 -fr 2 75 2030 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 -fr 2 76 2030 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 -fr 2 77 2030 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 -fr 2 78 2030 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 -fr 2 79 2030 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 -fr 2 80 2030 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 -fr 2 81 2030 200000.0 200000.0 49.99 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 -fr 2 82 2030 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 -fr 2 83 2030 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 -fr 2 84 2030 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 -fr 2 85 2030 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 -fr 2 86 2030 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 -fr 2 87 2030 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 -fr 2 88 2030 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 -fr 2 89 2030 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 -fr 2 90 2030 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 -fr 2 91 2030 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 -fr 2 92 2030 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 -fr 2 93 2030 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 -fr 2 94 2030 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 -fr 2 95 2030 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 -fr 2 96 2030 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 -fr 2 97 2030 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 -fr 2 98 2030 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 -fr 2 99 2030 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 -fr 2 100 2030 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 -fr 2 101 2030 300000.0 300000.0 59.99 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 -fr 2 102 2030 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 -fr 2 103 2030 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 -fr 2 104 2030 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 -fr 2 105 2030 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 -fr 2 106 2030 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 -fr 2 107 2030 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 -fr 2 108 2030 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 -fr 2 109 2030 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 -fr 2 110 2030 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 -fr 2 111 2030 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 -fr 2 112 2030 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 -fr 2 113 2030 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 -fr 2 114 2030 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 -fr 2 115 2030 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 -fr 2 116 2030 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 -fr 2 117 2030 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 -fr 2 118 2030 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 -fr 2 119 2030 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 -fr 2 120 2030 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 -fr 2 121 2030 420000.0 420000.0 69.99 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 -fr 2 122 2030 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 -fr 2 123 2030 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 -fr 2 124 2030 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 -fr 2 125 2030 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 -fr 2 126 2030 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 -fr 2 127 2030 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 -fr 2 128 2030 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 -fr 2 129 2030 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 -fr 2 130 2030 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 -fr 2 131 2030 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 -fr 2 132 2030 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 -fr 2 133 2030 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 -fr 2 134 2030 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 -fr 2 135 2030 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 -fr 2 136 2030 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 -fr 2 137 2030 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 -fr 2 138 2030 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 -fr 2 139 2030 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 -fr 2 140 2030 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 -fr 2 141 2030 560000.0 560000.0 79.99 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 -fr 2 142 2030 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 -fr 2 143 2030 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 -fr 2 144 2030 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 -fr 2 145 2030 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 -fr 2 146 2030 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 -fr 2 147 2030 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 -fr 2 148 2030 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 -fr 2 149 2030 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 -fr 2 150 2030 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 -fr 2 151 2030 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 -fr 2 152 2030 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 -fr 2 153 2030 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 -fr 2 154 2030 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 -fr 2 155 2030 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 -fr 2 156 2030 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 -fr 2 157 2030 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 -fr 2 158 2030 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 -fr 2 159 2030 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 -fr 2 160 2030 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 -fr 2 161 2030 720000.0 720000.0 89.99 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 -fr 2 162 2030 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 -fr 2 163 2030 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 -fr 2 164 2030 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 -fr 2 165 2030 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 -fr 2 166 2030 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 -fr 2 167 2030 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 -fr 2 168 2030 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 -fr 2 169 2030 0.0 0.0 9.99 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 -fr 2 170 2030 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 -fr 2 171 2030 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 -fr 2 172 2030 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 -fr 2 173 2030 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 -fr 2 174 2030 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 -fr 2 175 2030 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 -fr 2 176 2030 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 -fr 2 177 2030 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 -fr 2 178 2030 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 -fr 2 179 2030 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 -fr 2 180 2030 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 -fr 2 181 2030 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 -fr 2 182 2030 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 -fr 2 183 2030 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 -fr 2 184 2030 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 -fr 2 185 2030 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 -fr 2 186 2030 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 -fr 2 187 2030 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 -fr 2 188 2030 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 -fr 2 189 2030 20000.0 20000.0 19.99 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 -fr 2 190 2030 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 -fr 2 191 2030 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 -fr 2 192 2030 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 -fr 2 193 2030 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 -fr 2 194 2030 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 -fr 2 195 2030 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 -fr 2 196 2030 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 -fr 2 197 2030 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 -fr 2 198 2030 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 -fr 2 199 2030 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 -fr 2 200 2030 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 -fr 2 201 2030 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 -fr 2 202 2030 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 -fr 2 203 2030 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 -fr 2 204 2030 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 -fr 2 205 2030 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 -fr 2 206 2030 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 -fr 2 207 2030 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 -fr 2 208 2030 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 -fr 2 209 2030 60000.0 60000.0 29.99 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 -fr 2 210 2030 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 -fr 2 211 2030 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 -fr 2 212 2030 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 -fr 2 213 2030 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 -fr 2 214 2030 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 -fr 2 215 2030 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 -fr 2 216 2030 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 -fr 2 217 2030 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 -fr 2 218 2030 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 -fr 2 219 2030 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 -fr 2 220 2030 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 -fr 2 221 2030 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 -fr 2 222 2030 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 -fr 2 223 2030 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 -fr 2 224 2030 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 -fr 2 225 2030 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 -fr 2 226 2030 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 -fr 2 227 2030 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 -fr 2 228 2030 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 -fr 2 229 2030 120000.0 120000.0 39.99 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 -fr 2 230 2030 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 -fr 2 231 2030 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 -fr 2 232 2030 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 -fr 2 233 2030 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 -fr 2 234 2030 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 -fr 2 235 2030 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 -fr 2 236 2030 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 -fr 2 237 2030 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 -fr 2 238 2030 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 -fr 2 239 2030 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 -fr 2 240 2030 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 -fr 2 241 2030 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 -fr 2 242 2030 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 -fr 2 243 2030 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 -fr 2 244 2030 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 -fr 2 245 2030 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 -fr 2 246 2030 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 -fr 2 247 2030 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 -fr 2 248 2030 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 -fr 2 249 2030 200000.0 200000.0 49.99 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 -fr 2 250 2030 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 -fr 2 251 2030 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 -fr 2 252 2030 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 -fr 2 253 2030 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 -fr 2 254 2030 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 -fr 2 255 2030 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 -fr 2 256 2030 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 -fr 2 257 2030 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 -fr 2 258 2030 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 -fr 2 259 2030 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 -fr 2 260 2030 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 -fr 2 261 2030 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 -fr 2 262 2030 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 -fr 2 263 2030 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 -fr 2 264 2030 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 -fr 2 265 2030 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 -fr 2 266 2030 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 -fr 2 267 2030 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 -fr 2 268 2030 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 -fr 2 269 2030 300000.0 300000.0 59.99 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 -fr 2 270 2030 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 -fr 2 271 2030 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 -fr 2 272 2030 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 -fr 2 273 2030 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 -fr 2 274 2030 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 -fr 2 275 2030 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 -fr 2 276 2030 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 -fr 2 277 2030 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 -fr 2 278 2030 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 -fr 2 279 2030 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 -fr 2 280 2030 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 -fr 2 281 2030 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 -fr 2 282 2030 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 -fr 2 283 2030 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 -fr 2 284 2030 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 -fr 2 285 2030 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 -fr 2 286 2030 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 -fr 2 287 2030 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 -fr 2 288 2030 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 -fr 2 289 2030 420000.0 420000.0 69.99 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 -fr 2 290 2030 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 -fr 2 291 2030 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 -fr 2 292 2030 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 -fr 2 293 2030 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 -fr 2 294 2030 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 -fr 2 295 2030 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 -fr 2 296 2030 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 -fr 2 297 2030 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 -fr 2 298 2030 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 -fr 2 299 2030 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 -fr 2 300 2030 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 -fr 2 301 2030 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 -fr 2 302 2030 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 -fr 2 303 2030 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 -fr 2 304 2030 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 -fr 2 305 2030 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 -fr 2 306 2030 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 -fr 2 307 2030 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 -fr 2 308 2030 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 -fr 2 309 2030 560000.0 560000.0 79.99 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 -fr 2 310 2030 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 -fr 2 311 2030 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 -fr 2 312 2030 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 -fr 2 313 2030 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 -fr 2 314 2030 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 -fr 2 315 2030 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 -fr 2 316 2030 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 -fr 2 317 2030 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 -fr 2 318 2030 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 -fr 2 319 2030 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 -fr 2 320 2030 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 -fr 2 321 2030 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 -fr 2 322 2030 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 -fr 2 323 2030 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 -fr 2 324 2030 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 -fr 2 325 2030 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 -fr 2 326 2030 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 -fr 2 327 2030 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 -fr 2 328 2030 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 -fr 2 329 2030 720000.0 720000.0 89.99 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 -fr 2 330 2030 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 -fr 2 331 2030 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 -fr 2 332 2030 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 -fr 2 333 2030 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 -fr 2 334 2030 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 -fr 2 335 2030 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 -fr 2 336 2030 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 -it 2 1 2030 0.0 0.0 10.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 -it 2 2 2030 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 -it 2 3 2030 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 -it 2 4 2030 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 -it 2 5 2030 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 -it 2 6 2030 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 -it 2 7 2030 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 -it 2 8 2030 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 -it 2 9 2030 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 -it 2 10 2030 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 -it 2 11 2030 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 -it 2 12 2030 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 -it 2 13 2030 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 -it 2 14 2030 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 -it 2 15 2030 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 -it 2 16 2030 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 -it 2 17 2030 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 -it 2 18 2030 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 -it 2 19 2030 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 -it 2 20 2030 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 -it 2 21 2030 20000.0 20000.0 20.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 -it 2 22 2030 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 -it 2 23 2030 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 -it 2 24 2030 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 -it 2 25 2030 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 -it 2 26 2030 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 -it 2 27 2030 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 -it 2 28 2030 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 -it 2 29 2030 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 -it 2 30 2030 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 -it 2 31 2030 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 -it 2 32 2030 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 -it 2 33 2030 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 -it 2 34 2030 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 -it 2 35 2030 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 -it 2 36 2030 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 -it 2 37 2030 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 -it 2 38 2030 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 -it 2 39 2030 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 -it 2 40 2030 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 -it 2 41 2030 60000.0 60000.0 30.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 -it 2 42 2030 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 -it 2 43 2030 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 -it 2 44 2030 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 -it 2 45 2030 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 -it 2 46 2030 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 -it 2 47 2030 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 -it 2 48 2030 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 -it 2 49 2030 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 -it 2 50 2030 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 -it 2 51 2030 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 -it 2 52 2030 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 -it 2 53 2030 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 -it 2 54 2030 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 -it 2 55 2030 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 -it 2 56 2030 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 -it 2 57 2030 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 -it 2 58 2030 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 -it 2 59 2030 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 -it 2 60 2030 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 -it 2 61 2030 120000.0 120000.0 40.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 -it 2 62 2030 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 -it 2 63 2030 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 -it 2 64 2030 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 -it 2 65 2030 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 -it 2 66 2030 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 -it 2 67 2030 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 -it 2 68 2030 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 -it 2 69 2030 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 -it 2 70 2030 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 -it 2 71 2030 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 -it 2 72 2030 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 -it 2 73 2030 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 -it 2 74 2030 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 -it 2 75 2030 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 -it 2 76 2030 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 -it 2 77 2030 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 -it 2 78 2030 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 -it 2 79 2030 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 -it 2 80 2030 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 -it 2 81 2030 200000.0 200000.0 50.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 -it 2 82 2030 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 -it 2 83 2030 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 -it 2 84 2030 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 -it 2 85 2030 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 -it 2 86 2030 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 -it 2 87 2030 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 -it 2 88 2030 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 -it 2 89 2030 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 -it 2 90 2030 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 -it 2 91 2030 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 -it 2 92 2030 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 -it 2 93 2030 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 -it 2 94 2030 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 -it 2 95 2030 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 -it 2 96 2030 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 -it 2 97 2030 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 -it 2 98 2030 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 -it 2 99 2030 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 -it 2 100 2030 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 -it 2 101 2030 300000.0 300000.0 60.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 -it 2 102 2030 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 -it 2 103 2030 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 -it 2 104 2030 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 -it 2 105 2030 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 -it 2 106 2030 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 -it 2 107 2030 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 -it 2 108 2030 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 -it 2 109 2030 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 -it 2 110 2030 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 -it 2 111 2030 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 -it 2 112 2030 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 -it 2 113 2030 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 -it 2 114 2030 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 -it 2 115 2030 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 -it 2 116 2030 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 -it 2 117 2030 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 -it 2 118 2030 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 -it 2 119 2030 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 -it 2 120 2030 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 -it 2 121 2030 420000.0 420000.0 70.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 -it 2 122 2030 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 -it 2 123 2030 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 -it 2 124 2030 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 -it 2 125 2030 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 -it 2 126 2030 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 -it 2 127 2030 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 -it 2 128 2030 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 -it 2 129 2030 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 -it 2 130 2030 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 -it 2 131 2030 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 -it 2 132 2030 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 -it 2 133 2030 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 -it 2 134 2030 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 -it 2 135 2030 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 -it 2 136 2030 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 -it 2 137 2030 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 -it 2 138 2030 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 -it 2 139 2030 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 -it 2 140 2030 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 -it 2 141 2030 560000.0 560000.0 80.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 -it 2 142 2030 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 -it 2 143 2030 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 -it 2 144 2030 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 -it 2 145 2030 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 -it 2 146 2030 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 -it 2 147 2030 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 -it 2 148 2030 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 -it 2 149 2030 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 -it 2 150 2030 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 -it 2 151 2030 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 -it 2 152 2030 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 -it 2 153 2030 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 -it 2 154 2030 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 -it 2 155 2030 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 -it 2 156 2030 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 -it 2 157 2030 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 -it 2 158 2030 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 -it 2 159 2030 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 -it 2 160 2030 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 -it 2 161 2030 720000.0 720000.0 90.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 -it 2 162 2030 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 -it 2 163 2030 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 -it 2 164 2030 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 -it 2 165 2030 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 -it 2 166 2030 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 -it 2 167 2030 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 -it 2 168 2030 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 -it 2 169 2030 0.0 0.0 10.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 -it 2 170 2030 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 -it 2 171 2030 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 -it 2 172 2030 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 -it 2 173 2030 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 -it 2 174 2030 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 -it 2 175 2030 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 -it 2 176 2030 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 -it 2 177 2030 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 -it 2 178 2030 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 -it 2 179 2030 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 -it 2 180 2030 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 -it 2 181 2030 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 -it 2 182 2030 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 -it 2 183 2030 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 -it 2 184 2030 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 -it 2 185 2030 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 -it 2 186 2030 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 -it 2 187 2030 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 -it 2 188 2030 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 -it 2 189 2030 20000.0 20000.0 20.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 -it 2 190 2030 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 -it 2 191 2030 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 -it 2 192 2030 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 -it 2 193 2030 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 -it 2 194 2030 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 -it 2 195 2030 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 -it 2 196 2030 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 -it 2 197 2030 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 -it 2 198 2030 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 -it 2 199 2030 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 -it 2 200 2030 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 -it 2 201 2030 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 -it 2 202 2030 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 -it 2 203 2030 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 -it 2 204 2030 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 -it 2 205 2030 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 -it 2 206 2030 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 -it 2 207 2030 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 -it 2 208 2030 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 -it 2 209 2030 60000.0 60000.0 30.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 -it 2 210 2030 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 -it 2 211 2030 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 -it 2 212 2030 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 -it 2 213 2030 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 -it 2 214 2030 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 -it 2 215 2030 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 -it 2 216 2030 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 -it 2 217 2030 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 -it 2 218 2030 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 -it 2 219 2030 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 -it 2 220 2030 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 -it 2 221 2030 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 -it 2 222 2030 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 -it 2 223 2030 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 -it 2 224 2030 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 -it 2 225 2030 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 -it 2 226 2030 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 -it 2 227 2030 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 -it 2 228 2030 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 -it 2 229 2030 120000.0 120000.0 40.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 -it 2 230 2030 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 -it 2 231 2030 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 -it 2 232 2030 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 -it 2 233 2030 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 -it 2 234 2030 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 -it 2 235 2030 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 -it 2 236 2030 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 -it 2 237 2030 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 -it 2 238 2030 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 -it 2 239 2030 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 -it 2 240 2030 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 -it 2 241 2030 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 -it 2 242 2030 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 -it 2 243 2030 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 -it 2 244 2030 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 -it 2 245 2030 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 -it 2 246 2030 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 -it 2 247 2030 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 -it 2 248 2030 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 -it 2 249 2030 200000.0 200000.0 50.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 -it 2 250 2030 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 -it 2 251 2030 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 -it 2 252 2030 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 -it 2 253 2030 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 -it 2 254 2030 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 -it 2 255 2030 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 -it 2 256 2030 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 -it 2 257 2030 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 -it 2 258 2030 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 -it 2 259 2030 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 -it 2 260 2030 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 -it 2 261 2030 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 -it 2 262 2030 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 -it 2 263 2030 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 -it 2 264 2030 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 -it 2 265 2030 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 -it 2 266 2030 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 -it 2 267 2030 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 -it 2 268 2030 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 -it 2 269 2030 300000.0 300000.0 60.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 -it 2 270 2030 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 -it 2 271 2030 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 -it 2 272 2030 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 -it 2 273 2030 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 -it 2 274 2030 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 -it 2 275 2030 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 -it 2 276 2030 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 -it 2 277 2030 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 -it 2 278 2030 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 -it 2 279 2030 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 -it 2 280 2030 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 -it 2 281 2030 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 -it 2 282 2030 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 -it 2 283 2030 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 -it 2 284 2030 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 -it 2 285 2030 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 -it 2 286 2030 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 -it 2 287 2030 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 -it 2 288 2030 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 -it 2 289 2030 420000.0 420000.0 70.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 -it 2 290 2030 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 -it 2 291 2030 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 -it 2 292 2030 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 -it 2 293 2030 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 -it 2 294 2030 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 -it 2 295 2030 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 -it 2 296 2030 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 -it 2 297 2030 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 -it 2 298 2030 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 -it 2 299 2030 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 -it 2 300 2030 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 -it 2 301 2030 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 -it 2 302 2030 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 -it 2 303 2030 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 -it 2 304 2030 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 -it 2 305 2030 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 -it 2 306 2030 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 -it 2 307 2030 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 -it 2 308 2030 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 -it 2 309 2030 560000.0 560000.0 80.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 -it 2 310 2030 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 -it 2 311 2030 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 -it 2 312 2030 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 -it 2 313 2030 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 -it 2 314 2030 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 -it 2 315 2030 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 -it 2 316 2030 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 -it 2 317 2030 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 -it 2 318 2030 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 -it 2 319 2030 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 -it 2 320 2030 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 -it 2 321 2030 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 -it 2 322 2030 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 -it 2 323 2030 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 -it 2 324 2030 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 -it 2 325 2030 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 -it 2 326 2030 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 -it 2 327 2030 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 -it 2 328 2030 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 -it 2 329 2030 720000.0 720000.0 90.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 -it 2 330 2030 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 -it 2 331 2030 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 -it 2 332 2030 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 -it 2 333 2030 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 -it 2 334 2030 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 -it 2 335 2030 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 -it 2 336 2030 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 +area mcYear timeId OV. COST OP. COST MRG. PRICE CO2 EMIS. BALANCE ROW BAL. PSP MISC. NDG LOAD H. ROR WIND SOLAR NUCLEAR LIGNITE COAL GAS OIL MIX. FUEL MISC. DTG H. STOR H. PUMP H. LEV H. INFL H. OVFL H. VAL H. COST UNSP. ENRG SPIL. ENRG LOLD LOLP AVL DTG DTG MRG MAX MRG NP COST NODU +de 1 1 0.0 0.0 9.98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 +de 1 2 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 +de 1 3 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 +de 1 4 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 +de 1 5 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 +de 1 6 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 +de 1 7 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 +de 1 8 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 +de 1 9 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 +de 1 10 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 +de 1 11 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 +de 1 12 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 +de 1 13 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 +de 1 14 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 +de 1 15 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 +de 1 16 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 +de 1 17 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 +de 1 18 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 +de 1 19 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 +de 1 20 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 +de 1 21 20000.0 20000.0 19.98 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 +de 1 22 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 +de 1 23 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 +de 1 24 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 +de 1 25 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 +de 1 26 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 +de 1 27 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 +de 1 28 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 +de 1 29 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 +de 1 30 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 +de 1 31 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 +de 1 32 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 +de 1 33 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 +de 1 34 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 +de 1 35 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 +de 1 36 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 +de 1 37 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 +de 1 38 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 +de 1 39 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 +de 1 40 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 +de 1 41 60000.0 60000.0 29.98 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 +de 1 42 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 +de 1 43 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 +de 1 44 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 +de 1 45 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 +de 1 46 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 +de 1 47 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 +de 1 48 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 +de 1 49 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 +de 1 50 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 +de 1 51 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 +de 1 52 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 +de 1 53 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 +de 1 54 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 +de 1 55 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 +de 1 56 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 +de 1 57 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 +de 1 58 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 +de 1 59 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 +de 1 60 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 +de 1 61 120000.0 120000.0 39.98 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 +de 1 62 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 +de 1 63 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 +de 1 64 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 +de 1 65 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 +de 1 66 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 +de 1 67 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 +de 1 68 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 +de 1 69 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 +de 1 70 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 +de 1 71 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 +de 1 72 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 +de 1 73 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 +de 1 74 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 +de 1 75 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 +de 1 76 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 +de 1 77 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 +de 1 78 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 +de 1 79 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 +de 1 80 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 +de 1 81 200000.0 200000.0 49.98 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 +de 1 82 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 +de 1 83 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 +de 1 84 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 +de 1 85 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 +de 1 86 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 +de 1 87 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 +de 1 88 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 +de 1 89 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 +de 1 90 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 +de 1 91 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 +de 1 92 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 +de 1 93 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 +de 1 94 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 +de 1 95 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 +de 1 96 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 +de 1 97 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 +de 1 98 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 +de 1 99 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 +de 1 100 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 +de 1 101 300000.0 300000.0 59.98 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 +de 1 102 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 +de 1 103 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 +de 1 104 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 +de 1 105 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 +de 1 106 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 +de 1 107 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 +de 1 108 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 +de 1 109 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 +de 1 110 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 +de 1 111 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 +de 1 112 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 +de 1 113 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 +de 1 114 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 +de 1 115 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 +de 1 116 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 +de 1 117 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 +de 1 118 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 +de 1 119 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 +de 1 120 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 +de 1 121 420000.0 420000.0 69.98 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 +de 1 122 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 +de 1 123 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 +de 1 124 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 +de 1 125 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 +de 1 126 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 +de 1 127 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 +de 1 128 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 +de 1 129 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 +de 1 130 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 +de 1 131 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 +de 1 132 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 +de 1 133 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 +de 1 134 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 +de 1 135 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 +de 1 136 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 +de 1 137 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 +de 1 138 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 +de 1 139 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 +de 1 140 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 +de 1 141 560000.0 560000.0 79.98 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 +de 1 142 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 +de 1 143 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 +de 1 144 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 +de 1 145 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 +de 1 146 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 +de 1 147 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 +de 1 148 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 +de 1 149 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 +de 1 150 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 +de 1 151 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 +de 1 152 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 +de 1 153 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 +de 1 154 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 +de 1 155 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 +de 1 156 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 +de 1 157 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 +de 1 158 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 +de 1 159 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 +de 1 160 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 +de 1 161 720000.0 720000.0 89.98 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 +de 1 162 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 +de 1 163 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 +de 1 164 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 +de 1 165 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 +de 1 166 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 +de 1 167 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 +de 1 168 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 +de 1 169 0.0 0.0 9.98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 +de 1 170 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 +de 1 171 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 +de 1 172 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 +de 1 173 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 +de 1 174 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 +de 1 175 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 +de 1 176 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 +de 1 177 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 +de 1 178 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 +de 1 179 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 +de 1 180 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 +de 1 181 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 +de 1 182 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 +de 1 183 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 +de 1 184 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 +de 1 185 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 +de 1 186 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 +de 1 187 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 +de 1 188 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 +de 1 189 20000.0 20000.0 19.98 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 +de 1 190 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 +de 1 191 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 +de 1 192 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 +de 1 193 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 +de 1 194 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 +de 1 195 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 +de 1 196 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 +de 1 197 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 +de 1 198 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 +de 1 199 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 +de 1 200 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 +de 1 201 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 +de 1 202 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 +de 1 203 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 +de 1 204 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 +de 1 205 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 +de 1 206 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 +de 1 207 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 +de 1 208 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 +de 1 209 60000.0 60000.0 29.98 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 +de 1 210 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 +de 1 211 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 +de 1 212 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 +de 1 213 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 +de 1 214 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 +de 1 215 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 +de 1 216 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 +de 1 217 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 +de 1 218 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 +de 1 219 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 +de 1 220 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 +de 1 221 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 +de 1 222 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 +de 1 223 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 +de 1 224 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 +de 1 225 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 +de 1 226 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 +de 1 227 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 +de 1 228 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 +de 1 229 120000.0 120000.0 39.98 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 +de 1 230 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 +de 1 231 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 +de 1 232 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 +de 1 233 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 +de 1 234 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 +de 1 235 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 +de 1 236 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 +de 1 237 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 +de 1 238 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 +de 1 239 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 +de 1 240 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 +de 1 241 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 +de 1 242 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 +de 1 243 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 +de 1 244 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 +de 1 245 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 +de 1 246 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 +de 1 247 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 +de 1 248 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 +de 1 249 200000.0 200000.0 49.98 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 +de 1 250 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 +de 1 251 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 +de 1 252 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 +de 1 253 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 +de 1 254 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 +de 1 255 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 +de 1 256 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 +de 1 257 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 +de 1 258 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 +de 1 259 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 +de 1 260 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 +de 1 261 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 +de 1 262 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 +de 1 263 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 +de 1 264 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 +de 1 265 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 +de 1 266 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 +de 1 267 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 +de 1 268 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 +de 1 269 300000.0 300000.0 59.98 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 +de 1 270 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 +de 1 271 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 +de 1 272 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 +de 1 273 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 +de 1 274 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 +de 1 275 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 +de 1 276 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 +de 1 277 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 +de 1 278 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 +de 1 279 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 +de 1 280 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 +de 1 281 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 +de 1 282 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 +de 1 283 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 +de 1 284 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 +de 1 285 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 +de 1 286 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 +de 1 287 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 +de 1 288 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 +de 1 289 420000.0 420000.0 69.98 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 +de 1 290 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 +de 1 291 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 +de 1 292 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 +de 1 293 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 +de 1 294 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 +de 1 295 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 +de 1 296 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 +de 1 297 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 +de 1 298 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 +de 1 299 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 +de 1 300 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 +de 1 301 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 +de 1 302 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 +de 1 303 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 +de 1 304 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 +de 1 305 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 +de 1 306 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 +de 1 307 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 +de 1 308 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 +de 1 309 560000.0 560000.0 79.98 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 +de 1 310 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 +de 1 311 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 +de 1 312 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 +de 1 313 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 +de 1 314 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 +de 1 315 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 +de 1 316 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 +de 1 317 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 +de 1 318 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 +de 1 319 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 +de 1 320 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 +de 1 321 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 +de 1 322 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 +de 1 323 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 +de 1 324 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 +de 1 325 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 +de 1 326 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 +de 1 327 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 +de 1 328 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 +de 1 329 720000.0 720000.0 89.98 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 +de 1 330 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 +de 1 331 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 +de 1 332 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 +de 1 333 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 +de 1 334 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 +de 1 335 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 +de 1 336 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 +es 1 1 0.0 0.0 9.98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 +es 1 2 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 +es 1 3 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 +es 1 4 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 +es 1 5 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 +es 1 6 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 +es 1 7 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 +es 1 8 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 +es 1 9 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 +es 1 10 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 +es 1 11 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 +es 1 12 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 +es 1 13 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 +es 1 14 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 +es 1 15 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 +es 1 16 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 +es 1 17 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 +es 1 18 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 +es 1 19 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 +es 1 20 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 +es 1 21 20000.0 20000.0 19.98 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 +es 1 22 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 +es 1 23 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 +es 1 24 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 +es 1 25 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 +es 1 26 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 +es 1 27 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 +es 1 28 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 +es 1 29 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 +es 1 30 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 +es 1 31 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 +es 1 32 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 +es 1 33 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 +es 1 34 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 +es 1 35 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 +es 1 36 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 +es 1 37 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 +es 1 38 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 +es 1 39 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 +es 1 40 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 +es 1 41 60000.0 60000.0 29.98 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 +es 1 42 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 +es 1 43 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 +es 1 44 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 +es 1 45 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 +es 1 46 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 +es 1 47 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 +es 1 48 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 +es 1 49 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 +es 1 50 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 +es 1 51 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 +es 1 52 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 +es 1 53 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 +es 1 54 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 +es 1 55 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 +es 1 56 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 +es 1 57 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 +es 1 58 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 +es 1 59 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 +es 1 60 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 +es 1 61 120000.0 120000.0 39.98 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 +es 1 62 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 +es 1 63 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 +es 1 64 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 +es 1 65 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 +es 1 66 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 +es 1 67 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 +es 1 68 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 +es 1 69 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 +es 1 70 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 +es 1 71 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 +es 1 72 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 +es 1 73 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 +es 1 74 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 +es 1 75 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 +es 1 76 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 +es 1 77 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 +es 1 78 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 +es 1 79 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 +es 1 80 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 +es 1 81 200000.0 200000.0 49.98 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 +es 1 82 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 +es 1 83 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 +es 1 84 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 +es 1 85 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 +es 1 86 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 +es 1 87 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 +es 1 88 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 +es 1 89 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 +es 1 90 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 +es 1 91 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 +es 1 92 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 +es 1 93 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 +es 1 94 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 +es 1 95 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 +es 1 96 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 +es 1 97 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 +es 1 98 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 +es 1 99 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 +es 1 100 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 +es 1 101 300000.0 300000.0 59.98 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 +es 1 102 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 +es 1 103 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 +es 1 104 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 +es 1 105 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 +es 1 106 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 +es 1 107 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 +es 1 108 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 +es 1 109 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 +es 1 110 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 +es 1 111 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 +es 1 112 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 +es 1 113 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 +es 1 114 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 +es 1 115 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 +es 1 116 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 +es 1 117 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 +es 1 118 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 +es 1 119 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 +es 1 120 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 +es 1 121 420000.0 420000.0 69.98 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 +es 1 122 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 +es 1 123 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 +es 1 124 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 +es 1 125 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 +es 1 126 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 +es 1 127 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 +es 1 128 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 +es 1 129 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 +es 1 130 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 +es 1 131 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 +es 1 132 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 +es 1 133 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 +es 1 134 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 +es 1 135 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 +es 1 136 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 +es 1 137 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 +es 1 138 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 +es 1 139 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 +es 1 140 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 +es 1 141 560000.0 560000.0 79.98 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 +es 1 142 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 +es 1 143 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 +es 1 144 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 +es 1 145 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 +es 1 146 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 +es 1 147 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 +es 1 148 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 +es 1 149 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 +es 1 150 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 +es 1 151 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 +es 1 152 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 +es 1 153 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 +es 1 154 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 +es 1 155 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 +es 1 156 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 +es 1 157 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 +es 1 158 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 +es 1 159 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 +es 1 160 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 +es 1 161 720000.0 720000.0 89.98 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 +es 1 162 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 +es 1 163 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 +es 1 164 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 +es 1 165 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 +es 1 166 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 +es 1 167 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 +es 1 168 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 +es 1 169 0.0 0.0 9.98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 +es 1 170 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 +es 1 171 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 +es 1 172 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 +es 1 173 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 +es 1 174 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 +es 1 175 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 +es 1 176 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 +es 1 177 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 +es 1 178 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 +es 1 179 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 +es 1 180 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 +es 1 181 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 +es 1 182 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 +es 1 183 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 +es 1 184 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 +es 1 185 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 +es 1 186 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 +es 1 187 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 +es 1 188 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 +es 1 189 20000.0 20000.0 19.98 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 +es 1 190 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 +es 1 191 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 +es 1 192 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 +es 1 193 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 +es 1 194 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 +es 1 195 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 +es 1 196 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 +es 1 197 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 +es 1 198 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 +es 1 199 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 +es 1 200 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 +es 1 201 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 +es 1 202 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 +es 1 203 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 +es 1 204 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 +es 1 205 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 +es 1 206 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 +es 1 207 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 +es 1 208 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 +es 1 209 60000.0 60000.0 29.98 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 +es 1 210 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 +es 1 211 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 +es 1 212 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 +es 1 213 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 +es 1 214 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 +es 1 215 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 +es 1 216 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 +es 1 217 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 +es 1 218 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 +es 1 219 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 +es 1 220 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 +es 1 221 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 +es 1 222 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 +es 1 223 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 +es 1 224 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 +es 1 225 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 +es 1 226 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 +es 1 227 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 +es 1 228 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 +es 1 229 120000.0 120000.0 39.98 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 +es 1 230 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 +es 1 231 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 +es 1 232 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 +es 1 233 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 +es 1 234 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 +es 1 235 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 +es 1 236 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 +es 1 237 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 +es 1 238 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 +es 1 239 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 +es 1 240 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 +es 1 241 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 +es 1 242 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 +es 1 243 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 +es 1 244 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 +es 1 245 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 +es 1 246 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 +es 1 247 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 +es 1 248 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 +es 1 249 200000.0 200000.0 49.98 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 +es 1 250 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 +es 1 251 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 +es 1 252 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 +es 1 253 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 +es 1 254 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 +es 1 255 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 +es 1 256 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 +es 1 257 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 +es 1 258 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 +es 1 259 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 +es 1 260 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 +es 1 261 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 +es 1 262 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 +es 1 263 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 +es 1 264 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 +es 1 265 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 +es 1 266 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 +es 1 267 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 +es 1 268 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 +es 1 269 300000.0 300000.0 59.98 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 +es 1 270 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 +es 1 271 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 +es 1 272 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 +es 1 273 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 +es 1 274 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 +es 1 275 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 +es 1 276 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 +es 1 277 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 +es 1 278 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 +es 1 279 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 +es 1 280 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 +es 1 281 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 +es 1 282 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 +es 1 283 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 +es 1 284 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 +es 1 285 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 +es 1 286 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 +es 1 287 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 +es 1 288 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 +es 1 289 420000.0 420000.0 69.98 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 +es 1 290 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 +es 1 291 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 +es 1 292 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 +es 1 293 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 +es 1 294 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 +es 1 295 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 +es 1 296 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 +es 1 297 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 +es 1 298 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 +es 1 299 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 +es 1 300 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 +es 1 301 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 +es 1 302 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 +es 1 303 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 +es 1 304 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 +es 1 305 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 +es 1 306 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 +es 1 307 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 +es 1 308 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 +es 1 309 560000.0 560000.0 79.98 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 +es 1 310 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 +es 1 311 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 +es 1 312 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 +es 1 313 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 +es 1 314 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 +es 1 315 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 +es 1 316 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 +es 1 317 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 +es 1 318 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 +es 1 319 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 +es 1 320 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 +es 1 321 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 +es 1 322 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 +es 1 323 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 +es 1 324 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 +es 1 325 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 +es 1 326 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 +es 1 327 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 +es 1 328 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 +es 1 329 720000.0 720000.0 89.98 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 +es 1 330 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 +es 1 331 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 +es 1 332 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 +es 1 333 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 +es 1 334 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 +es 1 335 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 +es 1 336 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 +fr 1 1 0.0 0.0 9.99 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 +fr 1 2 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 +fr 1 3 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 +fr 1 4 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 +fr 1 5 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 +fr 1 6 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 +fr 1 7 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 +fr 1 8 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 +fr 1 9 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 +fr 1 10 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 +fr 1 11 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 +fr 1 12 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 +fr 1 13 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 +fr 1 14 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 +fr 1 15 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 +fr 1 16 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 +fr 1 17 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 +fr 1 18 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 +fr 1 19 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 +fr 1 20 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 +fr 1 21 20000.0 20000.0 19.99 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 +fr 1 22 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 +fr 1 23 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 +fr 1 24 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 +fr 1 25 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 +fr 1 26 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 +fr 1 27 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 +fr 1 28 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 +fr 1 29 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 +fr 1 30 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 +fr 1 31 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 +fr 1 32 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 +fr 1 33 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 +fr 1 34 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 +fr 1 35 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 +fr 1 36 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 +fr 1 37 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 +fr 1 38 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 +fr 1 39 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 +fr 1 40 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 +fr 1 41 60000.0 60000.0 29.99 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 +fr 1 42 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 +fr 1 43 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 +fr 1 44 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 +fr 1 45 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 +fr 1 46 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 +fr 1 47 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 +fr 1 48 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 +fr 1 49 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 +fr 1 50 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 +fr 1 51 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 +fr 1 52 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 +fr 1 53 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 +fr 1 54 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 +fr 1 55 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 +fr 1 56 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 +fr 1 57 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 +fr 1 58 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 +fr 1 59 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 +fr 1 60 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 +fr 1 61 120000.0 120000.0 39.99 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 +fr 1 62 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 +fr 1 63 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 +fr 1 64 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 +fr 1 65 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 +fr 1 66 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 +fr 1 67 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 +fr 1 68 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 +fr 1 69 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 +fr 1 70 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 +fr 1 71 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 +fr 1 72 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 +fr 1 73 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 +fr 1 74 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 +fr 1 75 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 +fr 1 76 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 +fr 1 77 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 +fr 1 78 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 +fr 1 79 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 +fr 1 80 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 +fr 1 81 200000.0 200000.0 49.99 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 +fr 1 82 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 +fr 1 83 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 +fr 1 84 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 +fr 1 85 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 +fr 1 86 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 +fr 1 87 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 +fr 1 88 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 +fr 1 89 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 +fr 1 90 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 +fr 1 91 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 +fr 1 92 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 +fr 1 93 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 +fr 1 94 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 +fr 1 95 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 +fr 1 96 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 +fr 1 97 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 +fr 1 98 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 +fr 1 99 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 +fr 1 100 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 +fr 1 101 300000.0 300000.0 59.99 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 +fr 1 102 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 +fr 1 103 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 +fr 1 104 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 +fr 1 105 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 +fr 1 106 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 +fr 1 107 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 +fr 1 108 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 +fr 1 109 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 +fr 1 110 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 +fr 1 111 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 +fr 1 112 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 +fr 1 113 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 +fr 1 114 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 +fr 1 115 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 +fr 1 116 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 +fr 1 117 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 +fr 1 118 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 +fr 1 119 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 +fr 1 120 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 +fr 1 121 420000.0 420000.0 69.99 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 +fr 1 122 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 +fr 1 123 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 +fr 1 124 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 +fr 1 125 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 +fr 1 126 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 +fr 1 127 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 +fr 1 128 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 +fr 1 129 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 +fr 1 130 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 +fr 1 131 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 +fr 1 132 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 +fr 1 133 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 +fr 1 134 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 +fr 1 135 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 +fr 1 136 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 +fr 1 137 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 +fr 1 138 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 +fr 1 139 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 +fr 1 140 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 +fr 1 141 560000.0 560000.0 79.99 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 +fr 1 142 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 +fr 1 143 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 +fr 1 144 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 +fr 1 145 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 +fr 1 146 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 +fr 1 147 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 +fr 1 148 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 +fr 1 149 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 +fr 1 150 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 +fr 1 151 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 +fr 1 152 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 +fr 1 153 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 +fr 1 154 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 +fr 1 155 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 +fr 1 156 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 +fr 1 157 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 +fr 1 158 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 +fr 1 159 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 +fr 1 160 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 +fr 1 161 720000.0 720000.0 89.99 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 +fr 1 162 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 +fr 1 163 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 +fr 1 164 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 +fr 1 165 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 +fr 1 166 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 +fr 1 167 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 +fr 1 168 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 +fr 1 169 0.0 0.0 9.99 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 +fr 1 170 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 +fr 1 171 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 +fr 1 172 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 +fr 1 173 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 +fr 1 174 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 +fr 1 175 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 +fr 1 176 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 +fr 1 177 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 +fr 1 178 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 +fr 1 179 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 +fr 1 180 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 +fr 1 181 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 +fr 1 182 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 +fr 1 183 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 +fr 1 184 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 +fr 1 185 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 +fr 1 186 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 +fr 1 187 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 +fr 1 188 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 +fr 1 189 20000.0 20000.0 19.99 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 +fr 1 190 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 +fr 1 191 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 +fr 1 192 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 +fr 1 193 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 +fr 1 194 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 +fr 1 195 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 +fr 1 196 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 +fr 1 197 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 +fr 1 198 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 +fr 1 199 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 +fr 1 200 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 +fr 1 201 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 +fr 1 202 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 +fr 1 203 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 +fr 1 204 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 +fr 1 205 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 +fr 1 206 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 +fr 1 207 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 +fr 1 208 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 +fr 1 209 60000.0 60000.0 29.99 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 +fr 1 210 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 +fr 1 211 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 +fr 1 212 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 +fr 1 213 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 +fr 1 214 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 +fr 1 215 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 +fr 1 216 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 +fr 1 217 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 +fr 1 218 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 +fr 1 219 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 +fr 1 220 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 +fr 1 221 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 +fr 1 222 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 +fr 1 223 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 +fr 1 224 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 +fr 1 225 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 +fr 1 226 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 +fr 1 227 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 +fr 1 228 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 +fr 1 229 120000.0 120000.0 39.99 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 +fr 1 230 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 +fr 1 231 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 +fr 1 232 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 +fr 1 233 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 +fr 1 234 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 +fr 1 235 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 +fr 1 236 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 +fr 1 237 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 +fr 1 238 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 +fr 1 239 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 +fr 1 240 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 +fr 1 241 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 +fr 1 242 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 +fr 1 243 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 +fr 1 244 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 +fr 1 245 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 +fr 1 246 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 +fr 1 247 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 +fr 1 248 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 +fr 1 249 200000.0 200000.0 49.99 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 +fr 1 250 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 +fr 1 251 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 +fr 1 252 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 +fr 1 253 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 +fr 1 254 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 +fr 1 255 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 +fr 1 256 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 +fr 1 257 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 +fr 1 258 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 +fr 1 259 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 +fr 1 260 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 +fr 1 261 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 +fr 1 262 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 +fr 1 263 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 +fr 1 264 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 +fr 1 265 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 +fr 1 266 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 +fr 1 267 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 +fr 1 268 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 +fr 1 269 300000.0 300000.0 59.99 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 +fr 1 270 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 +fr 1 271 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 +fr 1 272 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 +fr 1 273 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 +fr 1 274 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 +fr 1 275 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 +fr 1 276 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 +fr 1 277 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 +fr 1 278 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 +fr 1 279 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 +fr 1 280 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 +fr 1 281 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 +fr 1 282 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 +fr 1 283 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 +fr 1 284 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 +fr 1 285 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 +fr 1 286 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 +fr 1 287 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 +fr 1 288 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 +fr 1 289 420000.0 420000.0 69.99 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 +fr 1 290 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 +fr 1 291 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 +fr 1 292 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 +fr 1 293 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 +fr 1 294 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 +fr 1 295 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 +fr 1 296 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 +fr 1 297 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 +fr 1 298 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 +fr 1 299 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 +fr 1 300 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 +fr 1 301 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 +fr 1 302 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 +fr 1 303 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 +fr 1 304 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 +fr 1 305 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 +fr 1 306 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 +fr 1 307 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 +fr 1 308 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 +fr 1 309 560000.0 560000.0 79.99 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 +fr 1 310 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 +fr 1 311 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 +fr 1 312 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 +fr 1 313 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 +fr 1 314 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 +fr 1 315 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 +fr 1 316 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 +fr 1 317 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 +fr 1 318 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 +fr 1 319 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 +fr 1 320 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 +fr 1 321 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 +fr 1 322 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 +fr 1 323 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 +fr 1 324 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 +fr 1 325 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 +fr 1 326 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 +fr 1 327 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 +fr 1 328 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 +fr 1 329 720000.0 720000.0 89.99 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 +fr 1 330 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 +fr 1 331 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 +fr 1 332 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 +fr 1 333 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 +fr 1 334 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 +fr 1 335 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 +fr 1 336 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 +it 1 1 0.0 0.0 10.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 +it 1 2 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 +it 1 3 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 +it 1 4 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 +it 1 5 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 +it 1 6 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 +it 1 7 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 +it 1 8 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 +it 1 9 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 +it 1 10 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 +it 1 11 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 +it 1 12 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 +it 1 13 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 +it 1 14 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 +it 1 15 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 +it 1 16 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 +it 1 17 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 +it 1 18 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 +it 1 19 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 +it 1 20 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 +it 1 21 20000.0 20000.0 20.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 +it 1 22 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 +it 1 23 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 +it 1 24 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 +it 1 25 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 +it 1 26 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 +it 1 27 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 +it 1 28 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 +it 1 29 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 +it 1 30 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 +it 1 31 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 +it 1 32 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 +it 1 33 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 +it 1 34 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 +it 1 35 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 +it 1 36 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 +it 1 37 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 +it 1 38 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 +it 1 39 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 +it 1 40 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 +it 1 41 60000.0 60000.0 30.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 +it 1 42 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 +it 1 43 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 +it 1 44 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 +it 1 45 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 +it 1 46 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 +it 1 47 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 +it 1 48 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 +it 1 49 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 +it 1 50 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 +it 1 51 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 +it 1 52 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 +it 1 53 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 +it 1 54 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 +it 1 55 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 +it 1 56 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 +it 1 57 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 +it 1 58 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 +it 1 59 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 +it 1 60 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 +it 1 61 120000.0 120000.0 40.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 +it 1 62 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 +it 1 63 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 +it 1 64 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 +it 1 65 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 +it 1 66 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 +it 1 67 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 +it 1 68 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 +it 1 69 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 +it 1 70 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 +it 1 71 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 +it 1 72 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 +it 1 73 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 +it 1 74 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 +it 1 75 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 +it 1 76 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 +it 1 77 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 +it 1 78 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 +it 1 79 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 +it 1 80 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 +it 1 81 200000.0 200000.0 50.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 +it 1 82 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 +it 1 83 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 +it 1 84 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 +it 1 85 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 +it 1 86 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 +it 1 87 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 +it 1 88 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 +it 1 89 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 +it 1 90 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 +it 1 91 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 +it 1 92 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 +it 1 93 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 +it 1 94 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 +it 1 95 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 +it 1 96 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 +it 1 97 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 +it 1 98 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 +it 1 99 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 +it 1 100 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 +it 1 101 300000.0 300000.0 60.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 +it 1 102 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 +it 1 103 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 +it 1 104 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 +it 1 105 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 +it 1 106 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 +it 1 107 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 +it 1 108 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 +it 1 109 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 +it 1 110 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 +it 1 111 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 +it 1 112 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 +it 1 113 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 +it 1 114 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 +it 1 115 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 +it 1 116 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 +it 1 117 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 +it 1 118 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 +it 1 119 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 +it 1 120 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 +it 1 121 420000.0 420000.0 70.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 +it 1 122 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 +it 1 123 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 +it 1 124 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 +it 1 125 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 +it 1 126 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 +it 1 127 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 +it 1 128 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 +it 1 129 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 +it 1 130 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 +it 1 131 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 +it 1 132 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 +it 1 133 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 +it 1 134 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 +it 1 135 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 +it 1 136 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 +it 1 137 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 +it 1 138 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 +it 1 139 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 +it 1 140 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 +it 1 141 560000.0 560000.0 80.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 +it 1 142 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 +it 1 143 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 +it 1 144 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 +it 1 145 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 +it 1 146 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 +it 1 147 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 +it 1 148 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 +it 1 149 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 +it 1 150 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 +it 1 151 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 +it 1 152 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 +it 1 153 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 +it 1 154 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 +it 1 155 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 +it 1 156 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 +it 1 157 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 +it 1 158 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 +it 1 159 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 +it 1 160 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 +it 1 161 720000.0 720000.0 90.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 +it 1 162 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 +it 1 163 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 +it 1 164 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 +it 1 165 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 +it 1 166 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 +it 1 167 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 +it 1 168 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 +it 1 169 0.0 0.0 10.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 +it 1 170 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 +it 1 171 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 +it 1 172 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 +it 1 173 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 +it 1 174 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 +it 1 175 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 +it 1 176 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 +it 1 177 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 +it 1 178 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 +it 1 179 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 +it 1 180 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 +it 1 181 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 +it 1 182 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 +it 1 183 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 +it 1 184 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 +it 1 185 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 +it 1 186 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 +it 1 187 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 +it 1 188 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 +it 1 189 20000.0 20000.0 20.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 +it 1 190 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 +it 1 191 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 +it 1 192 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 +it 1 193 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 +it 1 194 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 +it 1 195 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 +it 1 196 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 +it 1 197 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 +it 1 198 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 +it 1 199 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 +it 1 200 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 +it 1 201 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 +it 1 202 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 +it 1 203 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 +it 1 204 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 +it 1 205 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 +it 1 206 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 +it 1 207 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 +it 1 208 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 +it 1 209 60000.0 60000.0 30.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 +it 1 210 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 +it 1 211 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 +it 1 212 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 +it 1 213 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 +it 1 214 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 +it 1 215 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 +it 1 216 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 +it 1 217 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 +it 1 218 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 +it 1 219 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 +it 1 220 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 +it 1 221 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 +it 1 222 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 +it 1 223 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 +it 1 224 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 +it 1 225 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 +it 1 226 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 +it 1 227 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 +it 1 228 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 +it 1 229 120000.0 120000.0 40.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 +it 1 230 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 +it 1 231 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 +it 1 232 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 +it 1 233 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 +it 1 234 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 +it 1 235 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 +it 1 236 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 +it 1 237 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 +it 1 238 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 +it 1 239 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 +it 1 240 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 +it 1 241 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 +it 1 242 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 +it 1 243 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 +it 1 244 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 +it 1 245 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 +it 1 246 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 +it 1 247 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 +it 1 248 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 +it 1 249 200000.0 200000.0 50.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 +it 1 250 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 +it 1 251 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 +it 1 252 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 +it 1 253 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 +it 1 254 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 +it 1 255 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 +it 1 256 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 +it 1 257 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 +it 1 258 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 +it 1 259 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 +it 1 260 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 +it 1 261 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 +it 1 262 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 +it 1 263 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 +it 1 264 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 +it 1 265 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 +it 1 266 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 +it 1 267 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 +it 1 268 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 +it 1 269 300000.0 300000.0 60.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 +it 1 270 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 +it 1 271 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 +it 1 272 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 +it 1 273 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 +it 1 274 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 +it 1 275 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 +it 1 276 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 +it 1 277 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 +it 1 278 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 +it 1 279 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 +it 1 280 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 +it 1 281 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 +it 1 282 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 +it 1 283 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 +it 1 284 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 +it 1 285 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 +it 1 286 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 +it 1 287 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 +it 1 288 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 +it 1 289 420000.0 420000.0 70.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 +it 1 290 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 +it 1 291 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 +it 1 292 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 +it 1 293 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 +it 1 294 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 +it 1 295 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 +it 1 296 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 +it 1 297 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 +it 1 298 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 +it 1 299 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 +it 1 300 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 +it 1 301 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 +it 1 302 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 +it 1 303 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 +it 1 304 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 +it 1 305 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 +it 1 306 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 +it 1 307 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 +it 1 308 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 +it 1 309 560000.0 560000.0 80.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 +it 1 310 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 +it 1 311 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 +it 1 312 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 +it 1 313 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 +it 1 314 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 +it 1 315 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 +it 1 316 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 +it 1 317 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 +it 1 318 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 +it 1 319 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 +it 1 320 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 +it 1 321 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 +it 1 322 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 +it 1 323 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 +it 1 324 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 +it 1 325 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 +it 1 326 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 +it 1 327 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 +it 1 328 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 +it 1 329 720000.0 720000.0 90.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 +it 1 330 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 +it 1 331 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 +it 1 332 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 +it 1 333 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 +it 1 334 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 +it 1 335 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 +it 1 336 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 +de 2 1 0.0 0.0 9.98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 +de 2 2 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 +de 2 3 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 +de 2 4 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 +de 2 5 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 +de 2 6 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 +de 2 7 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 +de 2 8 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 +de 2 9 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 +de 2 10 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 +de 2 11 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 +de 2 12 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 +de 2 13 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 +de 2 14 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 +de 2 15 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 +de 2 16 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 +de 2 17 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 +de 2 18 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 +de 2 19 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 +de 2 20 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 +de 2 21 20000.0 20000.0 19.98 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 +de 2 22 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 +de 2 23 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 +de 2 24 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 +de 2 25 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 +de 2 26 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 +de 2 27 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 +de 2 28 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 +de 2 29 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 +de 2 30 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 +de 2 31 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 +de 2 32 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 +de 2 33 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 +de 2 34 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 +de 2 35 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 +de 2 36 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 +de 2 37 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 +de 2 38 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 +de 2 39 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 +de 2 40 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 +de 2 41 60000.0 60000.0 29.98 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 +de 2 42 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 +de 2 43 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 +de 2 44 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 +de 2 45 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 +de 2 46 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 +de 2 47 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 +de 2 48 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 +de 2 49 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 +de 2 50 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 +de 2 51 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 +de 2 52 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 +de 2 53 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 +de 2 54 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 +de 2 55 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 +de 2 56 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 +de 2 57 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 +de 2 58 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 +de 2 59 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 +de 2 60 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 +de 2 61 120000.0 120000.0 39.98 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 +de 2 62 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 +de 2 63 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 +de 2 64 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 +de 2 65 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 +de 2 66 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 +de 2 67 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 +de 2 68 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 +de 2 69 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 +de 2 70 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 +de 2 71 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 +de 2 72 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 +de 2 73 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 +de 2 74 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 +de 2 75 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 +de 2 76 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 +de 2 77 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 +de 2 78 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 +de 2 79 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 +de 2 80 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 +de 2 81 200000.0 200000.0 49.98 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 +de 2 82 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 +de 2 83 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 +de 2 84 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 +de 2 85 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 +de 2 86 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 +de 2 87 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 +de 2 88 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 +de 2 89 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 +de 2 90 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 +de 2 91 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 +de 2 92 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 +de 2 93 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 +de 2 94 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 +de 2 95 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 +de 2 96 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 +de 2 97 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 +de 2 98 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 +de 2 99 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 +de 2 100 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 +de 2 101 300000.0 300000.0 59.98 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 +de 2 102 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 +de 2 103 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 +de 2 104 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 +de 2 105 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 +de 2 106 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 +de 2 107 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 +de 2 108 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 +de 2 109 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 +de 2 110 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 +de 2 111 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 +de 2 112 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 +de 2 113 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 +de 2 114 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 +de 2 115 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 +de 2 116 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 +de 2 117 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 +de 2 118 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 +de 2 119 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 +de 2 120 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 +de 2 121 420000.0 420000.0 69.98 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 +de 2 122 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 +de 2 123 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 +de 2 124 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 +de 2 125 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 +de 2 126 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 +de 2 127 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 +de 2 128 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 +de 2 129 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 +de 2 130 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 +de 2 131 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 +de 2 132 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 +de 2 133 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 +de 2 134 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 +de 2 135 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 +de 2 136 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 +de 2 137 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 +de 2 138 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 +de 2 139 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 +de 2 140 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 +de 2 141 560000.0 560000.0 79.98 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 +de 2 142 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 +de 2 143 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 +de 2 144 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 +de 2 145 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 +de 2 146 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 +de 2 147 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 +de 2 148 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 +de 2 149 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 +de 2 150 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 +de 2 151 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 +de 2 152 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 +de 2 153 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 +de 2 154 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 +de 2 155 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 +de 2 156 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 +de 2 157 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 +de 2 158 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 +de 2 159 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 +de 2 160 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 +de 2 161 720000.0 720000.0 89.98 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 +de 2 162 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 +de 2 163 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 +de 2 164 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 +de 2 165 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 +de 2 166 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 +de 2 167 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 +de 2 168 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 +de 2 169 0.0 0.0 9.98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 +de 2 170 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 +de 2 171 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 +de 2 172 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 +de 2 173 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 +de 2 174 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 +de 2 175 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 +de 2 176 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 +de 2 177 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 +de 2 178 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 +de 2 179 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 +de 2 180 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 +de 2 181 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 +de 2 182 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 +de 2 183 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 +de 2 184 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 +de 2 185 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 +de 2 186 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 +de 2 187 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 +de 2 188 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 +de 2 189 20000.0 20000.0 19.98 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 +de 2 190 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 +de 2 191 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 +de 2 192 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 +de 2 193 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 +de 2 194 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 +de 2 195 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 +de 2 196 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 +de 2 197 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 +de 2 198 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 +de 2 199 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 +de 2 200 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 +de 2 201 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 +de 2 202 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 +de 2 203 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 +de 2 204 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 +de 2 205 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 +de 2 206 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 +de 2 207 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 +de 2 208 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 +de 2 209 60000.0 60000.0 29.98 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 +de 2 210 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 +de 2 211 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 +de 2 212 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 +de 2 213 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 +de 2 214 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 +de 2 215 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 +de 2 216 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 +de 2 217 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 +de 2 218 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 +de 2 219 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 +de 2 220 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 +de 2 221 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 +de 2 222 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 +de 2 223 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 +de 2 224 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 +de 2 225 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 +de 2 226 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 +de 2 227 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 +de 2 228 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 +de 2 229 120000.0 120000.0 39.98 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 +de 2 230 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 +de 2 231 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 +de 2 232 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 +de 2 233 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 +de 2 234 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 +de 2 235 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 +de 2 236 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 +de 2 237 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 +de 2 238 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 +de 2 239 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 +de 2 240 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 +de 2 241 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 +de 2 242 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 +de 2 243 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 +de 2 244 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 +de 2 245 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 +de 2 246 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 +de 2 247 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 +de 2 248 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 +de 2 249 200000.0 200000.0 49.98 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 +de 2 250 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 +de 2 251 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 +de 2 252 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 +de 2 253 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 +de 2 254 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 +de 2 255 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 +de 2 256 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 +de 2 257 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 +de 2 258 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 +de 2 259 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 +de 2 260 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 +de 2 261 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 +de 2 262 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 +de 2 263 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 +de 2 264 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 +de 2 265 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 +de 2 266 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 +de 2 267 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 +de 2 268 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 +de 2 269 300000.0 300000.0 59.98 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 +de 2 270 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 +de 2 271 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 +de 2 272 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 +de 2 273 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 +de 2 274 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 +de 2 275 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 +de 2 276 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 +de 2 277 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 +de 2 278 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 +de 2 279 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 +de 2 280 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 +de 2 281 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 +de 2 282 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 +de 2 283 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 +de 2 284 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 +de 2 285 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 +de 2 286 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 +de 2 287 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 +de 2 288 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 +de 2 289 420000.0 420000.0 69.98 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 +de 2 290 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 +de 2 291 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 +de 2 292 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 +de 2 293 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 +de 2 294 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 +de 2 295 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 +de 2 296 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 +de 2 297 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 +de 2 298 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 +de 2 299 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 +de 2 300 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 +de 2 301 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 +de 2 302 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 +de 2 303 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 +de 2 304 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 +de 2 305 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 +de 2 306 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 +de 2 307 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 +de 2 308 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 +de 2 309 560000.0 560000.0 79.98 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 +de 2 310 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 +de 2 311 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 +de 2 312 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 +de 2 313 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 +de 2 314 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 +de 2 315 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 +de 2 316 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 +de 2 317 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 +de 2 318 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 +de 2 319 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 +de 2 320 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 +de 2 321 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 +de 2 322 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 +de 2 323 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 +de 2 324 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 +de 2 325 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 +de 2 326 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 +de 2 327 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 +de 2 328 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 +de 2 329 720000.0 720000.0 89.98 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 +de 2 330 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 +de 2 331 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 +de 2 332 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 +de 2 333 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 +de 2 334 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 +de 2 335 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 +de 2 336 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 +es 2 1 0.0 0.0 9.98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 +es 2 2 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 +es 2 3 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 +es 2 4 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 +es 2 5 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 +es 2 6 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 +es 2 7 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 +es 2 8 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 +es 2 9 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 +es 2 10 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 +es 2 11 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 +es 2 12 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 +es 2 13 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 +es 2 14 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 +es 2 15 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 +es 2 16 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 +es 2 17 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 +es 2 18 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 +es 2 19 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 +es 2 20 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 +es 2 21 20000.0 20000.0 19.98 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 +es 2 22 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 +es 2 23 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 +es 2 24 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 +es 2 25 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 +es 2 26 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 +es 2 27 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 +es 2 28 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 +es 2 29 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 +es 2 30 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 +es 2 31 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 +es 2 32 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 +es 2 33 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 +es 2 34 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 +es 2 35 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 +es 2 36 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 +es 2 37 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 +es 2 38 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 +es 2 39 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 +es 2 40 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 +es 2 41 60000.0 60000.0 29.98 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 +es 2 42 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 +es 2 43 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 +es 2 44 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 +es 2 45 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 +es 2 46 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 +es 2 47 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 +es 2 48 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 +es 2 49 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 +es 2 50 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 +es 2 51 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 +es 2 52 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 +es 2 53 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 +es 2 54 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 +es 2 55 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 +es 2 56 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 +es 2 57 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 +es 2 58 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 +es 2 59 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 +es 2 60 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 +es 2 61 120000.0 120000.0 39.98 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 +es 2 62 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 +es 2 63 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 +es 2 64 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 +es 2 65 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 +es 2 66 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 +es 2 67 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 +es 2 68 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 +es 2 69 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 +es 2 70 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 +es 2 71 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 +es 2 72 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 +es 2 73 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 +es 2 74 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 +es 2 75 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 +es 2 76 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 +es 2 77 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 +es 2 78 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 +es 2 79 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 +es 2 80 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 +es 2 81 200000.0 200000.0 49.98 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 +es 2 82 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 +es 2 83 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 +es 2 84 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 +es 2 85 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 +es 2 86 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 +es 2 87 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 +es 2 88 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 +es 2 89 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 +es 2 90 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 +es 2 91 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 +es 2 92 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 +es 2 93 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 +es 2 94 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 +es 2 95 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 +es 2 96 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 +es 2 97 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 +es 2 98 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 +es 2 99 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 +es 2 100 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 +es 2 101 300000.0 300000.0 59.98 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 +es 2 102 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 +es 2 103 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 +es 2 104 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 +es 2 105 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 +es 2 106 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 +es 2 107 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 +es 2 108 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 +es 2 109 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 +es 2 110 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 +es 2 111 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 +es 2 112 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 +es 2 113 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 +es 2 114 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 +es 2 115 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 +es 2 116 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 +es 2 117 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 +es 2 118 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 +es 2 119 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 +es 2 120 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 +es 2 121 420000.0 420000.0 69.98 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 +es 2 122 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 +es 2 123 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 +es 2 124 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 +es 2 125 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 +es 2 126 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 +es 2 127 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 +es 2 128 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 +es 2 129 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 +es 2 130 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 +es 2 131 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 +es 2 132 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 +es 2 133 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 +es 2 134 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 +es 2 135 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 +es 2 136 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 +es 2 137 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 +es 2 138 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 +es 2 139 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 +es 2 140 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 +es 2 141 560000.0 560000.0 79.98 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 +es 2 142 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 +es 2 143 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 +es 2 144 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 +es 2 145 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 +es 2 146 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 +es 2 147 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 +es 2 148 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 +es 2 149 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 +es 2 150 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 +es 2 151 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 +es 2 152 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 +es 2 153 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 +es 2 154 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 +es 2 155 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 +es 2 156 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 +es 2 157 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 +es 2 158 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 +es 2 159 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 +es 2 160 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 +es 2 161 720000.0 720000.0 89.98 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 +es 2 162 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 +es 2 163 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 +es 2 164 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 +es 2 165 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 +es 2 166 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 +es 2 167 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 +es 2 168 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 +es 2 169 0.0 0.0 9.98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 +es 2 170 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 +es 2 171 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 +es 2 172 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 +es 2 173 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 +es 2 174 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 +es 2 175 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 +es 2 176 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 +es 2 177 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 +es 2 178 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 +es 2 179 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 +es 2 180 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 +es 2 181 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 +es 2 182 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 +es 2 183 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 +es 2 184 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 +es 2 185 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 +es 2 186 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 +es 2 187 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 +es 2 188 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 +es 2 189 20000.0 20000.0 19.98 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 +es 2 190 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 +es 2 191 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 +es 2 192 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 +es 2 193 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 +es 2 194 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 +es 2 195 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 +es 2 196 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 +es 2 197 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 +es 2 198 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 +es 2 199 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 +es 2 200 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 +es 2 201 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 +es 2 202 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 +es 2 203 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 +es 2 204 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 +es 2 205 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 +es 2 206 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 +es 2 207 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 +es 2 208 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 +es 2 209 60000.0 60000.0 29.98 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 +es 2 210 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 +es 2 211 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 +es 2 212 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 +es 2 213 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 +es 2 214 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 +es 2 215 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 +es 2 216 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 +es 2 217 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 +es 2 218 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 +es 2 219 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 +es 2 220 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 +es 2 221 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 +es 2 222 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 +es 2 223 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 +es 2 224 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 +es 2 225 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 +es 2 226 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 +es 2 227 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 +es 2 228 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 +es 2 229 120000.0 120000.0 39.98 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 +es 2 230 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 +es 2 231 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 +es 2 232 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 +es 2 233 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 +es 2 234 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 +es 2 235 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 +es 2 236 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 +es 2 237 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 +es 2 238 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 +es 2 239 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 +es 2 240 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 +es 2 241 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 +es 2 242 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 +es 2 243 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 +es 2 244 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 +es 2 245 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 +es 2 246 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 +es 2 247 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 +es 2 248 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 +es 2 249 200000.0 200000.0 49.98 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 +es 2 250 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 +es 2 251 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 +es 2 252 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 +es 2 253 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 +es 2 254 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 +es 2 255 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 +es 2 256 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 +es 2 257 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 +es 2 258 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 +es 2 259 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 +es 2 260 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 +es 2 261 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 +es 2 262 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 +es 2 263 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 +es 2 264 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 +es 2 265 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 +es 2 266 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 +es 2 267 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 +es 2 268 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 +es 2 269 300000.0 300000.0 59.98 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 +es 2 270 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 +es 2 271 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 +es 2 272 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 +es 2 273 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 +es 2 274 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 +es 2 275 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 +es 2 276 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 +es 2 277 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 +es 2 278 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 +es 2 279 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 +es 2 280 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 +es 2 281 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 +es 2 282 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 +es 2 283 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 +es 2 284 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 +es 2 285 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 +es 2 286 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 +es 2 287 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 +es 2 288 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 +es 2 289 420000.0 420000.0 69.98 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 +es 2 290 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 +es 2 291 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 +es 2 292 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 +es 2 293 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 +es 2 294 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 +es 2 295 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 +es 2 296 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 +es 2 297 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 +es 2 298 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 +es 2 299 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 +es 2 300 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 +es 2 301 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 +es 2 302 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 +es 2 303 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 +es 2 304 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 +es 2 305 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 +es 2 306 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 +es 2 307 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 +es 2 308 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 +es 2 309 560000.0 560000.0 79.98 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 +es 2 310 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 +es 2 311 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 +es 2 312 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 +es 2 313 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 +es 2 314 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 +es 2 315 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 +es 2 316 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 +es 2 317 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 +es 2 318 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 +es 2 319 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 +es 2 320 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 +es 2 321 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 +es 2 322 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 +es 2 323 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 +es 2 324 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 +es 2 325 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 +es 2 326 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 +es 2 327 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 +es 2 328 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 +es 2 329 720000.0 720000.0 89.98 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 +es 2 330 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 +es 2 331 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 +es 2 332 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 +es 2 333 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 +es 2 334 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 +es 2 335 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 +es 2 336 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 +fr 2 1 0.0 0.0 9.99 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 +fr 2 2 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 +fr 2 3 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 +fr 2 4 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 +fr 2 5 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 +fr 2 6 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 +fr 2 7 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 +fr 2 8 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 +fr 2 9 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 +fr 2 10 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 +fr 2 11 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 +fr 2 12 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 +fr 2 13 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 +fr 2 14 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 +fr 2 15 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 +fr 2 16 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 +fr 2 17 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 +fr 2 18 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 +fr 2 19 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 +fr 2 20 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 +fr 2 21 20000.0 20000.0 19.99 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 +fr 2 22 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 +fr 2 23 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 +fr 2 24 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 +fr 2 25 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 +fr 2 26 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 +fr 2 27 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 +fr 2 28 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 +fr 2 29 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 +fr 2 30 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 +fr 2 31 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 +fr 2 32 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 +fr 2 33 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 +fr 2 34 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 +fr 2 35 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 +fr 2 36 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 +fr 2 37 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 +fr 2 38 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 +fr 2 39 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 +fr 2 40 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 +fr 2 41 60000.0 60000.0 29.99 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 +fr 2 42 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 +fr 2 43 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 +fr 2 44 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 +fr 2 45 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 +fr 2 46 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 +fr 2 47 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 +fr 2 48 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 +fr 2 49 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 +fr 2 50 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 +fr 2 51 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 +fr 2 52 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 +fr 2 53 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 +fr 2 54 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 +fr 2 55 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 +fr 2 56 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 +fr 2 57 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 +fr 2 58 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 +fr 2 59 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 +fr 2 60 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 +fr 2 61 120000.0 120000.0 39.99 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 +fr 2 62 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 +fr 2 63 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 +fr 2 64 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 +fr 2 65 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 +fr 2 66 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 +fr 2 67 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 +fr 2 68 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 +fr 2 69 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 +fr 2 70 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 +fr 2 71 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 +fr 2 72 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 +fr 2 73 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 +fr 2 74 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 +fr 2 75 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 +fr 2 76 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 +fr 2 77 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 +fr 2 78 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 +fr 2 79 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 +fr 2 80 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 +fr 2 81 200000.0 200000.0 49.99 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 +fr 2 82 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 +fr 2 83 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 +fr 2 84 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 +fr 2 85 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 +fr 2 86 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 +fr 2 87 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 +fr 2 88 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 +fr 2 89 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 +fr 2 90 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 +fr 2 91 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 +fr 2 92 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 +fr 2 93 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 +fr 2 94 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 +fr 2 95 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 +fr 2 96 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 +fr 2 97 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 +fr 2 98 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 +fr 2 99 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 +fr 2 100 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 +fr 2 101 300000.0 300000.0 59.99 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 +fr 2 102 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 +fr 2 103 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 +fr 2 104 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 +fr 2 105 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 +fr 2 106 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 +fr 2 107 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 +fr 2 108 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 +fr 2 109 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 +fr 2 110 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 +fr 2 111 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 +fr 2 112 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 +fr 2 113 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 +fr 2 114 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 +fr 2 115 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 +fr 2 116 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 +fr 2 117 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 +fr 2 118 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 +fr 2 119 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 +fr 2 120 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 +fr 2 121 420000.0 420000.0 69.99 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 +fr 2 122 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 +fr 2 123 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 +fr 2 124 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 +fr 2 125 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 +fr 2 126 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 +fr 2 127 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 +fr 2 128 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 +fr 2 129 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 +fr 2 130 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 +fr 2 131 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 +fr 2 132 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 +fr 2 133 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 +fr 2 134 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 +fr 2 135 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 +fr 2 136 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 +fr 2 137 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 +fr 2 138 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 +fr 2 139 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 +fr 2 140 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 +fr 2 141 560000.0 560000.0 79.99 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 +fr 2 142 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 +fr 2 143 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 +fr 2 144 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 +fr 2 145 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 +fr 2 146 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 +fr 2 147 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 +fr 2 148 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 +fr 2 149 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 +fr 2 150 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 +fr 2 151 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 +fr 2 152 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 +fr 2 153 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 +fr 2 154 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 +fr 2 155 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 +fr 2 156 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 +fr 2 157 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 +fr 2 158 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 +fr 2 159 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 +fr 2 160 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 +fr 2 161 720000.0 720000.0 89.99 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 +fr 2 162 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 +fr 2 163 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 +fr 2 164 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 +fr 2 165 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 +fr 2 166 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 +fr 2 167 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 +fr 2 168 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 +fr 2 169 0.0 0.0 9.99 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 +fr 2 170 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 +fr 2 171 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 +fr 2 172 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 +fr 2 173 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 +fr 2 174 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 +fr 2 175 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 +fr 2 176 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 +fr 2 177 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 +fr 2 178 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 +fr 2 179 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 +fr 2 180 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 +fr 2 181 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 +fr 2 182 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 +fr 2 183 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 +fr 2 184 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 +fr 2 185 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 +fr 2 186 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 +fr 2 187 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 +fr 2 188 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 +fr 2 189 20000.0 20000.0 19.99 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 +fr 2 190 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 +fr 2 191 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 +fr 2 192 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 +fr 2 193 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 +fr 2 194 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 +fr 2 195 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 +fr 2 196 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 +fr 2 197 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 +fr 2 198 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 +fr 2 199 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 +fr 2 200 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 +fr 2 201 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 +fr 2 202 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 +fr 2 203 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 +fr 2 204 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 +fr 2 205 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 +fr 2 206 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 +fr 2 207 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 +fr 2 208 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 +fr 2 209 60000.0 60000.0 29.99 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 +fr 2 210 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 +fr 2 211 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 +fr 2 212 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 +fr 2 213 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 +fr 2 214 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 +fr 2 215 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 +fr 2 216 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 +fr 2 217 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 +fr 2 218 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 +fr 2 219 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 +fr 2 220 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 +fr 2 221 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 +fr 2 222 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 +fr 2 223 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 +fr 2 224 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 +fr 2 225 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 +fr 2 226 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 +fr 2 227 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 +fr 2 228 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 +fr 2 229 120000.0 120000.0 39.99 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 +fr 2 230 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 +fr 2 231 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 +fr 2 232 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 +fr 2 233 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 +fr 2 234 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 +fr 2 235 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 +fr 2 236 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 +fr 2 237 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 +fr 2 238 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 +fr 2 239 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 +fr 2 240 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 +fr 2 241 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 +fr 2 242 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 +fr 2 243 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 +fr 2 244 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 +fr 2 245 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 +fr 2 246 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 +fr 2 247 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 +fr 2 248 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 +fr 2 249 200000.0 200000.0 49.99 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 +fr 2 250 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 +fr 2 251 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 +fr 2 252 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 +fr 2 253 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 +fr 2 254 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 +fr 2 255 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 +fr 2 256 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 +fr 2 257 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 +fr 2 258 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 +fr 2 259 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 +fr 2 260 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 +fr 2 261 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 +fr 2 262 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 +fr 2 263 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 +fr 2 264 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 +fr 2 265 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 +fr 2 266 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 +fr 2 267 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 +fr 2 268 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 +fr 2 269 300000.0 300000.0 59.99 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 +fr 2 270 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 +fr 2 271 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 +fr 2 272 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 +fr 2 273 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 +fr 2 274 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 +fr 2 275 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 +fr 2 276 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 +fr 2 277 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 +fr 2 278 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 +fr 2 279 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 +fr 2 280 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 +fr 2 281 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 +fr 2 282 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 +fr 2 283 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 +fr 2 284 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 +fr 2 285 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 +fr 2 286 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 +fr 2 287 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 +fr 2 288 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 +fr 2 289 420000.0 420000.0 69.99 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 +fr 2 290 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 +fr 2 291 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 +fr 2 292 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 +fr 2 293 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 +fr 2 294 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 +fr 2 295 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 +fr 2 296 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 +fr 2 297 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 +fr 2 298 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 +fr 2 299 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 +fr 2 300 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 +fr 2 301 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 +fr 2 302 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 +fr 2 303 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 +fr 2 304 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 +fr 2 305 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 +fr 2 306 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 +fr 2 307 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 +fr 2 308 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 +fr 2 309 560000.0 560000.0 79.99 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 +fr 2 310 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 +fr 2 311 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 +fr 2 312 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 +fr 2 313 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 +fr 2 314 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 +fr 2 315 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 +fr 2 316 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 +fr 2 317 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 +fr 2 318 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 +fr 2 319 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 +fr 2 320 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 +fr 2 321 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 +fr 2 322 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 +fr 2 323 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 +fr 2 324 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 +fr 2 325 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 +fr 2 326 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 +fr 2 327 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 +fr 2 328 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 +fr 2 329 720000.0 720000.0 89.99 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 +fr 2 330 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 +fr 2 331 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 +fr 2 332 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 +fr 2 333 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 +fr 2 334 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 +fr 2 335 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 +fr 2 336 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 +it 2 1 0.0 0.0 10.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 +it 2 2 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 +it 2 3 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 +it 2 4 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 +it 2 5 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 +it 2 6 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 +it 2 7 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 +it 2 8 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 +it 2 9 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 +it 2 10 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 +it 2 11 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 +it 2 12 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 +it 2 13 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 +it 2 14 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 +it 2 15 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 +it 2 16 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 +it 2 17 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 +it 2 18 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 +it 2 19 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 +it 2 20 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 +it 2 21 20000.0 20000.0 20.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 +it 2 22 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 +it 2 23 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 +it 2 24 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 +it 2 25 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 +it 2 26 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 +it 2 27 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 +it 2 28 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 +it 2 29 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 +it 2 30 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 +it 2 31 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 +it 2 32 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 +it 2 33 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 +it 2 34 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 +it 2 35 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 +it 2 36 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 +it 2 37 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 +it 2 38 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 +it 2 39 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 +it 2 40 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 +it 2 41 60000.0 60000.0 30.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 +it 2 42 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 +it 2 43 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 +it 2 44 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 +it 2 45 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 +it 2 46 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 +it 2 47 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 +it 2 48 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 +it 2 49 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 +it 2 50 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 +it 2 51 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 +it 2 52 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 +it 2 53 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 +it 2 54 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 +it 2 55 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 +it 2 56 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 +it 2 57 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 +it 2 58 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 +it 2 59 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 +it 2 60 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 +it 2 61 120000.0 120000.0 40.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 +it 2 62 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 +it 2 63 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 +it 2 64 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 +it 2 65 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 +it 2 66 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 +it 2 67 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 +it 2 68 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 +it 2 69 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 +it 2 70 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 +it 2 71 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 +it 2 72 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 +it 2 73 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 +it 2 74 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 +it 2 75 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 +it 2 76 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 +it 2 77 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 +it 2 78 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 +it 2 79 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 +it 2 80 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 +it 2 81 200000.0 200000.0 50.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 +it 2 82 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 +it 2 83 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 +it 2 84 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 +it 2 85 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 +it 2 86 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 +it 2 87 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 +it 2 88 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 +it 2 89 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 +it 2 90 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 +it 2 91 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 +it 2 92 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 +it 2 93 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 +it 2 94 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 +it 2 95 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 +it 2 96 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 +it 2 97 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 +it 2 98 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 +it 2 99 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 +it 2 100 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 +it 2 101 300000.0 300000.0 60.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 +it 2 102 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 +it 2 103 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 +it 2 104 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 +it 2 105 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 +it 2 106 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 +it 2 107 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 +it 2 108 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 +it 2 109 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 +it 2 110 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 +it 2 111 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 +it 2 112 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 +it 2 113 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 +it 2 114 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 +it 2 115 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 +it 2 116 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 +it 2 117 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 +it 2 118 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 +it 2 119 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 +it 2 120 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 +it 2 121 420000.0 420000.0 70.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 +it 2 122 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 +it 2 123 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 +it 2 124 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 +it 2 125 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 +it 2 126 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 +it 2 127 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 +it 2 128 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 +it 2 129 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 +it 2 130 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 +it 2 131 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 +it 2 132 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 +it 2 133 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 +it 2 134 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 +it 2 135 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 +it 2 136 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 +it 2 137 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 +it 2 138 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 +it 2 139 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 +it 2 140 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 +it 2 141 560000.0 560000.0 80.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 +it 2 142 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 +it 2 143 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 +it 2 144 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 +it 2 145 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 +it 2 146 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 +it 2 147 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 +it 2 148 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 +it 2 149 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 +it 2 150 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 +it 2 151 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 +it 2 152 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 +it 2 153 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 +it 2 154 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 +it 2 155 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 +it 2 156 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 +it 2 157 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 +it 2 158 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 +it 2 159 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 +it 2 160 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 +it 2 161 720000.0 720000.0 90.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 +it 2 162 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 +it 2 163 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 +it 2 164 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 +it 2 165 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 +it 2 166 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 +it 2 167 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 +it 2 168 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 +it 2 169 0.0 0.0 10.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 +it 2 170 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 +it 2 171 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 +it 2 172 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 +it 2 173 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 +it 2 174 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 +it 2 175 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 +it 2 176 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 +it 2 177 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 +it 2 178 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 +it 2 179 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 +it 2 180 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 +it 2 181 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 +it 2 182 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 +it 2 183 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 +it 2 184 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 +it 2 185 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 +it 2 186 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 +it 2 187 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 +it 2 188 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 +it 2 189 20000.0 20000.0 20.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 +it 2 190 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 +it 2 191 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 +it 2 192 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 +it 2 193 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 +it 2 194 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 +it 2 195 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 +it 2 196 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 +it 2 197 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 +it 2 198 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 +it 2 199 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 +it 2 200 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 +it 2 201 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 +it 2 202 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 +it 2 203 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 +it 2 204 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 +it 2 205 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 +it 2 206 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 +it 2 207 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 +it 2 208 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 +it 2 209 60000.0 60000.0 30.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 +it 2 210 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 +it 2 211 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 +it 2 212 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 +it 2 213 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 +it 2 214 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 +it 2 215 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 +it 2 216 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 +it 2 217 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 +it 2 218 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 +it 2 219 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 +it 2 220 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 +it 2 221 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 +it 2 222 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 +it 2 223 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 +it 2 224 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 +it 2 225 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 +it 2 226 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 +it 2 227 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 +it 2 228 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 +it 2 229 120000.0 120000.0 40.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 +it 2 230 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 +it 2 231 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 +it 2 232 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 +it 2 233 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 +it 2 234 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 +it 2 235 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 +it 2 236 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 +it 2 237 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 +it 2 238 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 +it 2 239 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 +it 2 240 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 +it 2 241 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 +it 2 242 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 +it 2 243 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 +it 2 244 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 +it 2 245 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 +it 2 246 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 +it 2 247 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 +it 2 248 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 +it 2 249 200000.0 200000.0 50.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 +it 2 250 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 +it 2 251 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 +it 2 252 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 +it 2 253 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 +it 2 254 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 +it 2 255 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 +it 2 256 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 +it 2 257 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 +it 2 258 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 +it 2 259 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 +it 2 260 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 +it 2 261 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 +it 2 262 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 +it 2 263 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 +it 2 264 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 +it 2 265 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 +it 2 266 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 +it 2 267 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 +it 2 268 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 +it 2 269 300000.0 300000.0 60.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 +it 2 270 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 +it 2 271 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 +it 2 272 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 +it 2 273 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 +it 2 274 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 +it 2 275 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 +it 2 276 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 +it 2 277 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 +it 2 278 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 +it 2 279 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 +it 2 280 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 +it 2 281 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 +it 2 282 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 +it 2 283 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 +it 2 284 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 +it 2 285 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 +it 2 286 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 +it 2 287 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 +it 2 288 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 +it 2 289 420000.0 420000.0 70.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 +it 2 290 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 +it 2 291 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 +it 2 292 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 +it 2 293 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 +it 2 294 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 +it 2 295 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 +it 2 296 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 +it 2 297 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 +it 2 298 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 +it 2 299 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 +it 2 300 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 +it 2 301 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 +it 2 302 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 +it 2 303 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 +it 2 304 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 +it 2 305 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 +it 2 306 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 +it 2 307 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 +it 2 308 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 +it 2 309 560000.0 560000.0 80.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 +it 2 310 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 +it 2 311 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 +it 2 312 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 +it 2 313 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 +it 2 314 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 +it 2 315 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 +it 2 316 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 +it 2 317 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 +it 2 318 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 +it 2 319 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 +it 2 320 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 +it 2 321 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 +it 2 322 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 +it 2 323 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 +it 2 324 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 +it 2 325 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 +it 2 326 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 +it 2 327 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 +it 2 328 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 +it 2 329 720000.0 720000.0 90.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 +it 2 330 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 +it 2 331 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 +it 2 332 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 +it 2 333 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 +it 2 334 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 +it 2 335 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 +it 2 336 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 diff --git a/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-02-all.result.tsv b/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-02-all.result.tsv index 1cd8562aac..c0fdcaf9ce 100644 --- a/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-02-all.result.tsv +++ b/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-02-all.result.tsv @@ -1,10 +1,10 @@ -area cluster timeId time production NODU NP Cost - Euro -de 01_solar 1 2030 315000.0 167.0 0.0 -de 02_wind_on 1 2030 275000.0 147.0 0.0 -de 03_wind_off 1 2030 235000.0 127.0 0.0 -de 04_res 1 2030 195000.0 107.0 0.0 -de 05_nuclear 1 2030 155000.0 87.0 0.0 -de 06_coal 1 2030 115000.0 67.0 0.0 -de 07_gas 1 2030 75000.0 47.0 0.0 -de 08_non-res 1 2030 35000.0 27.0 0.0 -de 09_hydro_pump 1 2030 2800.0 7.0 0.0 +area cluster timeId production NODU NP Cost - Euro +de 01_solar 1 315000.0 167.0 0.0 +de 02_wind_on 1 275000.0 147.0 0.0 +de 03_wind_off 1 235000.0 127.0 0.0 +de 04_res 1 195000.0 107.0 0.0 +de 05_nuclear 1 155000.0 87.0 0.0 +de 06_coal 1 115000.0 67.0 0.0 +de 07_gas 1 75000.0 47.0 0.0 +de 08_non-res 1 35000.0 27.0 0.0 +de 09_hydro_pump 1 2800.0 7.0 0.0 diff --git a/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-02.result.tsv b/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-02.result.tsv index e8f08094b2..3ae4e16777 100644 --- a/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-02.result.tsv +++ b/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-02.result.tsv @@ -1,9073 +1,9073 @@ -area cluster mcYear timeId time production NODU NP Cost - Euro -de 01_solar 1 1 2030 0.0 0.0 0.0 -de 02_wind_on 1 1 2030 0.0 0.0 0.0 -de 03_wind_off 1 1 2030 0.0 0.0 0.0 -de 04_res 1 1 2030 0.0 0.0 0.0 -de 05_nuclear 1 1 2030 0.0 0.0 0.0 -de 06_coal 1 1 2030 0.0 0.0 0.0 -de 07_gas 1 1 2030 0.0 0.0 0.0 -de 08_non-res 1 1 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 1 2030 0.0 0.0 0.0 -de 01_solar 1 2 2030 100.0 1.0 0.0 -de 02_wind_on 1 2 2030 0.0 0.0 0.0 -de 03_wind_off 1 2 2030 0.0 0.0 0.0 -de 04_res 1 2 2030 0.0 0.0 0.0 -de 05_nuclear 1 2 2030 0.0 0.0 0.0 -de 06_coal 1 2 2030 0.0 0.0 0.0 -de 07_gas 1 2 2030 0.0 0.0 0.0 -de 08_non-res 1 2 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 2 2030 0.0 0.0 0.0 -de 01_solar 1 3 2030 200.0 1.0 0.0 -de 02_wind_on 1 3 2030 0.0 0.0 0.0 -de 03_wind_off 1 3 2030 0.0 0.0 0.0 -de 04_res 1 3 2030 0.0 0.0 0.0 -de 05_nuclear 1 3 2030 0.0 0.0 0.0 -de 06_coal 1 3 2030 0.0 0.0 0.0 -de 07_gas 1 3 2030 0.0 0.0 0.0 -de 08_non-res 1 3 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 3 2030 0.0 0.0 0.0 -de 01_solar 1 4 2030 300.0 1.0 0.0 -de 02_wind_on 1 4 2030 0.0 0.0 0.0 -de 03_wind_off 1 4 2030 0.0 0.0 0.0 -de 04_res 1 4 2030 0.0 0.0 0.0 -de 05_nuclear 1 4 2030 0.0 0.0 0.0 -de 06_coal 1 4 2030 0.0 0.0 0.0 -de 07_gas 1 4 2030 0.0 0.0 0.0 -de 08_non-res 1 4 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 4 2030 0.0 0.0 0.0 -de 01_solar 1 5 2030 400.0 1.0 0.0 -de 02_wind_on 1 5 2030 0.0 0.0 0.0 -de 03_wind_off 1 5 2030 0.0 0.0 0.0 -de 04_res 1 5 2030 0.0 0.0 0.0 -de 05_nuclear 1 5 2030 0.0 0.0 0.0 -de 06_coal 1 5 2030 0.0 0.0 0.0 -de 07_gas 1 5 2030 0.0 0.0 0.0 -de 08_non-res 1 5 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 5 2030 0.0 0.0 0.0 -de 01_solar 1 6 2030 500.0 1.0 0.0 -de 02_wind_on 1 6 2030 0.0 0.0 0.0 -de 03_wind_off 1 6 2030 0.0 0.0 0.0 -de 04_res 1 6 2030 0.0 0.0 0.0 -de 05_nuclear 1 6 2030 0.0 0.0 0.0 -de 06_coal 1 6 2030 0.0 0.0 0.0 -de 07_gas 1 6 2030 0.0 0.0 0.0 -de 08_non-res 1 6 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 6 2030 0.0 0.0 0.0 -de 01_solar 1 7 2030 600.0 1.0 0.0 -de 02_wind_on 1 7 2030 0.0 0.0 0.0 -de 03_wind_off 1 7 2030 0.0 0.0 0.0 -de 04_res 1 7 2030 0.0 0.0 0.0 -de 05_nuclear 1 7 2030 0.0 0.0 0.0 -de 06_coal 1 7 2030 0.0 0.0 0.0 -de 07_gas 1 7 2030 0.0 0.0 0.0 -de 08_non-res 1 7 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 7 2030 0.0 0.0 0.0 -de 01_solar 1 8 2030 700.0 1.0 0.0 -de 02_wind_on 1 8 2030 0.0 0.0 0.0 -de 03_wind_off 1 8 2030 0.0 0.0 0.0 -de 04_res 1 8 2030 0.0 0.0 0.0 -de 05_nuclear 1 8 2030 0.0 0.0 0.0 -de 06_coal 1 8 2030 0.0 0.0 0.0 -de 07_gas 1 8 2030 0.0 0.0 0.0 -de 08_non-res 1 8 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 8 2030 0.0 0.0 0.0 -de 01_solar 1 9 2030 800.0 1.0 0.0 -de 02_wind_on 1 9 2030 0.0 0.0 0.0 -de 03_wind_off 1 9 2030 0.0 0.0 0.0 -de 04_res 1 9 2030 0.0 0.0 0.0 -de 05_nuclear 1 9 2030 0.0 0.0 0.0 -de 06_coal 1 9 2030 0.0 0.0 0.0 -de 07_gas 1 9 2030 0.0 0.0 0.0 -de 08_non-res 1 9 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 9 2030 0.0 0.0 0.0 -de 01_solar 1 10 2030 900.0 1.0 0.0 -de 02_wind_on 1 10 2030 0.0 0.0 0.0 -de 03_wind_off 1 10 2030 0.0 0.0 0.0 -de 04_res 1 10 2030 0.0 0.0 0.0 -de 05_nuclear 1 10 2030 0.0 0.0 0.0 -de 06_coal 1 10 2030 0.0 0.0 0.0 -de 07_gas 1 10 2030 0.0 0.0 0.0 -de 08_non-res 1 10 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 10 2030 0.0 0.0 0.0 -de 01_solar 1 11 2030 1000.0 1.0 0.0 -de 02_wind_on 1 11 2030 0.0 0.0 0.0 -de 03_wind_off 1 11 2030 0.0 0.0 0.0 -de 04_res 1 11 2030 0.0 0.0 0.0 -de 05_nuclear 1 11 2030 0.0 0.0 0.0 -de 06_coal 1 11 2030 0.0 0.0 0.0 -de 07_gas 1 11 2030 0.0 0.0 0.0 -de 08_non-res 1 11 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 11 2030 0.0 0.0 0.0 -de 01_solar 1 12 2030 1100.0 1.0 0.0 -de 02_wind_on 1 12 2030 0.0 0.0 0.0 -de 03_wind_off 1 12 2030 0.0 0.0 0.0 -de 04_res 1 12 2030 0.0 0.0 0.0 -de 05_nuclear 1 12 2030 0.0 0.0 0.0 -de 06_coal 1 12 2030 0.0 0.0 0.0 -de 07_gas 1 12 2030 0.0 0.0 0.0 -de 08_non-res 1 12 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 12 2030 0.0 0.0 0.0 -de 01_solar 1 13 2030 1200.0 1.0 0.0 -de 02_wind_on 1 13 2030 0.0 0.0 0.0 -de 03_wind_off 1 13 2030 0.0 0.0 0.0 -de 04_res 1 13 2030 0.0 0.0 0.0 -de 05_nuclear 1 13 2030 0.0 0.0 0.0 -de 06_coal 1 13 2030 0.0 0.0 0.0 -de 07_gas 1 13 2030 0.0 0.0 0.0 -de 08_non-res 1 13 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 13 2030 0.0 0.0 0.0 -de 01_solar 1 14 2030 1300.0 1.0 0.0 -de 02_wind_on 1 14 2030 0.0 0.0 0.0 -de 03_wind_off 1 14 2030 0.0 0.0 0.0 -de 04_res 1 14 2030 0.0 0.0 0.0 -de 05_nuclear 1 14 2030 0.0 0.0 0.0 -de 06_coal 1 14 2030 0.0 0.0 0.0 -de 07_gas 1 14 2030 0.0 0.0 0.0 -de 08_non-res 1 14 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 14 2030 0.0 0.0 0.0 -de 01_solar 1 15 2030 1400.0 1.0 0.0 -de 02_wind_on 1 15 2030 0.0 0.0 0.0 -de 03_wind_off 1 15 2030 0.0 0.0 0.0 -de 04_res 1 15 2030 0.0 0.0 0.0 -de 05_nuclear 1 15 2030 0.0 0.0 0.0 -de 06_coal 1 15 2030 0.0 0.0 0.0 -de 07_gas 1 15 2030 0.0 0.0 0.0 -de 08_non-res 1 15 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 15 2030 0.0 0.0 0.0 -de 01_solar 1 16 2030 1500.0 1.0 0.0 -de 02_wind_on 1 16 2030 0.0 0.0 0.0 -de 03_wind_off 1 16 2030 0.0 0.0 0.0 -de 04_res 1 16 2030 0.0 0.0 0.0 -de 05_nuclear 1 16 2030 0.0 0.0 0.0 -de 06_coal 1 16 2030 0.0 0.0 0.0 -de 07_gas 1 16 2030 0.0 0.0 0.0 -de 08_non-res 1 16 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 16 2030 0.0 0.0 0.0 -de 01_solar 1 17 2030 1600.0 1.0 0.0 -de 02_wind_on 1 17 2030 0.0 0.0 0.0 -de 03_wind_off 1 17 2030 0.0 0.0 0.0 -de 04_res 1 17 2030 0.0 0.0 0.0 -de 05_nuclear 1 17 2030 0.0 0.0 0.0 -de 06_coal 1 17 2030 0.0 0.0 0.0 -de 07_gas 1 17 2030 0.0 0.0 0.0 -de 08_non-res 1 17 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 17 2030 0.0 0.0 0.0 -de 01_solar 1 18 2030 1700.0 1.0 0.0 -de 02_wind_on 1 18 2030 0.0 0.0 0.0 -de 03_wind_off 1 18 2030 0.0 0.0 0.0 -de 04_res 1 18 2030 0.0 0.0 0.0 -de 05_nuclear 1 18 2030 0.0 0.0 0.0 -de 06_coal 1 18 2030 0.0 0.0 0.0 -de 07_gas 1 18 2030 0.0 0.0 0.0 -de 08_non-res 1 18 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 18 2030 0.0 0.0 0.0 -de 01_solar 1 19 2030 1800.0 1.0 0.0 -de 02_wind_on 1 19 2030 0.0 0.0 0.0 -de 03_wind_off 1 19 2030 0.0 0.0 0.0 -de 04_res 1 19 2030 0.0 0.0 0.0 -de 05_nuclear 1 19 2030 0.0 0.0 0.0 -de 06_coal 1 19 2030 0.0 0.0 0.0 -de 07_gas 1 19 2030 0.0 0.0 0.0 -de 08_non-res 1 19 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 19 2030 0.0 0.0 0.0 -de 01_solar 1 20 2030 1900.0 1.0 0.0 -de 02_wind_on 1 20 2030 0.0 0.0 0.0 -de 03_wind_off 1 20 2030 0.0 0.0 0.0 -de 04_res 1 20 2030 0.0 0.0 0.0 -de 05_nuclear 1 20 2030 0.0 0.0 0.0 -de 06_coal 1 20 2030 0.0 0.0 0.0 -de 07_gas 1 20 2030 0.0 0.0 0.0 -de 08_non-res 1 20 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 20 2030 0.0 0.0 0.0 -de 01_solar 1 21 2030 2000.0 1.0 0.0 -de 02_wind_on 1 21 2030 0.0 0.0 0.0 -de 03_wind_off 1 21 2030 0.0 0.0 0.0 -de 04_res 1 21 2030 0.0 0.0 0.0 -de 05_nuclear 1 21 2030 0.0 0.0 0.0 -de 06_coal 1 21 2030 0.0 0.0 0.0 -de 07_gas 1 21 2030 0.0 0.0 0.0 -de 08_non-res 1 21 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 21 2030 0.0 0.0 0.0 -de 01_solar 1 22 2030 2000.0 1.0 0.0 -de 02_wind_on 1 22 2030 100.0 1.0 0.0 -de 03_wind_off 1 22 2030 0.0 0.0 0.0 -de 04_res 1 22 2030 0.0 0.0 0.0 -de 05_nuclear 1 22 2030 0.0 0.0 0.0 -de 06_coal 1 22 2030 0.0 0.0 0.0 -de 07_gas 1 22 2030 0.0 0.0 0.0 -de 08_non-res 1 22 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 22 2030 0.0 0.0 0.0 -de 01_solar 1 23 2030 2000.0 1.0 0.0 -de 02_wind_on 1 23 2030 200.0 1.0 0.0 -de 03_wind_off 1 23 2030 0.0 0.0 0.0 -de 04_res 1 23 2030 0.0 0.0 0.0 -de 05_nuclear 1 23 2030 0.0 0.0 0.0 -de 06_coal 1 23 2030 0.0 0.0 0.0 -de 07_gas 1 23 2030 0.0 0.0 0.0 -de 08_non-res 1 23 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 23 2030 0.0 0.0 0.0 -de 01_solar 1 24 2030 2000.0 1.0 0.0 -de 02_wind_on 1 24 2030 300.0 1.0 0.0 -de 03_wind_off 1 24 2030 0.0 0.0 0.0 -de 04_res 1 24 2030 0.0 0.0 0.0 -de 05_nuclear 1 24 2030 0.0 0.0 0.0 -de 06_coal 1 24 2030 0.0 0.0 0.0 -de 07_gas 1 24 2030 0.0 0.0 0.0 -de 08_non-res 1 24 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 24 2030 0.0 0.0 0.0 -de 01_solar 1 25 2030 2000.0 1.0 0.0 -de 02_wind_on 1 25 2030 400.0 1.0 0.0 -de 03_wind_off 1 25 2030 0.0 0.0 0.0 -de 04_res 1 25 2030 0.0 0.0 0.0 -de 05_nuclear 1 25 2030 0.0 0.0 0.0 -de 06_coal 1 25 2030 0.0 0.0 0.0 -de 07_gas 1 25 2030 0.0 0.0 0.0 -de 08_non-res 1 25 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 25 2030 0.0 0.0 0.0 -de 01_solar 1 26 2030 2000.0 1.0 0.0 -de 02_wind_on 1 26 2030 500.0 1.0 0.0 -de 03_wind_off 1 26 2030 0.0 0.0 0.0 -de 04_res 1 26 2030 0.0 0.0 0.0 -de 05_nuclear 1 26 2030 0.0 0.0 0.0 -de 06_coal 1 26 2030 0.0 0.0 0.0 -de 07_gas 1 26 2030 0.0 0.0 0.0 -de 08_non-res 1 26 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 26 2030 0.0 0.0 0.0 -de 01_solar 1 27 2030 2000.0 1.0 0.0 -de 02_wind_on 1 27 2030 600.0 1.0 0.0 -de 03_wind_off 1 27 2030 0.0 0.0 0.0 -de 04_res 1 27 2030 0.0 0.0 0.0 -de 05_nuclear 1 27 2030 0.0 0.0 0.0 -de 06_coal 1 27 2030 0.0 0.0 0.0 -de 07_gas 1 27 2030 0.0 0.0 0.0 -de 08_non-res 1 27 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 27 2030 0.0 0.0 0.0 -de 01_solar 1 28 2030 2000.0 1.0 0.0 -de 02_wind_on 1 28 2030 700.0 1.0 0.0 -de 03_wind_off 1 28 2030 0.0 0.0 0.0 -de 04_res 1 28 2030 0.0 0.0 0.0 -de 05_nuclear 1 28 2030 0.0 0.0 0.0 -de 06_coal 1 28 2030 0.0 0.0 0.0 -de 07_gas 1 28 2030 0.0 0.0 0.0 -de 08_non-res 1 28 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 28 2030 0.0 0.0 0.0 -de 01_solar 1 29 2030 2000.0 1.0 0.0 -de 02_wind_on 1 29 2030 800.0 1.0 0.0 -de 03_wind_off 1 29 2030 0.0 0.0 0.0 -de 04_res 1 29 2030 0.0 0.0 0.0 -de 05_nuclear 1 29 2030 0.0 0.0 0.0 -de 06_coal 1 29 2030 0.0 0.0 0.0 -de 07_gas 1 29 2030 0.0 0.0 0.0 -de 08_non-res 1 29 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 29 2030 0.0 0.0 0.0 -de 01_solar 1 30 2030 2000.0 1.0 0.0 -de 02_wind_on 1 30 2030 900.0 1.0 0.0 -de 03_wind_off 1 30 2030 0.0 0.0 0.0 -de 04_res 1 30 2030 0.0 0.0 0.0 -de 05_nuclear 1 30 2030 0.0 0.0 0.0 -de 06_coal 1 30 2030 0.0 0.0 0.0 -de 07_gas 1 30 2030 0.0 0.0 0.0 -de 08_non-res 1 30 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 30 2030 0.0 0.0 0.0 -de 01_solar 1 31 2030 2000.0 1.0 0.0 -de 02_wind_on 1 31 2030 1000.0 1.0 0.0 -de 03_wind_off 1 31 2030 0.0 0.0 0.0 -de 04_res 1 31 2030 0.0 0.0 0.0 -de 05_nuclear 1 31 2030 0.0 0.0 0.0 -de 06_coal 1 31 2030 0.0 0.0 0.0 -de 07_gas 1 31 2030 0.0 0.0 0.0 -de 08_non-res 1 31 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 31 2030 0.0 0.0 0.0 -de 01_solar 1 32 2030 2000.0 1.0 0.0 -de 02_wind_on 1 32 2030 1100.0 1.0 0.0 -de 03_wind_off 1 32 2030 0.0 0.0 0.0 -de 04_res 1 32 2030 0.0 0.0 0.0 -de 05_nuclear 1 32 2030 0.0 0.0 0.0 -de 06_coal 1 32 2030 0.0 0.0 0.0 -de 07_gas 1 32 2030 0.0 0.0 0.0 -de 08_non-res 1 32 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 32 2030 0.0 0.0 0.0 -de 01_solar 1 33 2030 2000.0 1.0 0.0 -de 02_wind_on 1 33 2030 1200.0 1.0 0.0 -de 03_wind_off 1 33 2030 0.0 0.0 0.0 -de 04_res 1 33 2030 0.0 0.0 0.0 -de 05_nuclear 1 33 2030 0.0 0.0 0.0 -de 06_coal 1 33 2030 0.0 0.0 0.0 -de 07_gas 1 33 2030 0.0 0.0 0.0 -de 08_non-res 1 33 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 33 2030 0.0 0.0 0.0 -de 01_solar 1 34 2030 2000.0 1.0 0.0 -de 02_wind_on 1 34 2030 1300.0 1.0 0.0 -de 03_wind_off 1 34 2030 0.0 0.0 0.0 -de 04_res 1 34 2030 0.0 0.0 0.0 -de 05_nuclear 1 34 2030 0.0 0.0 0.0 -de 06_coal 1 34 2030 0.0 0.0 0.0 -de 07_gas 1 34 2030 0.0 0.0 0.0 -de 08_non-res 1 34 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 34 2030 0.0 0.0 0.0 -de 01_solar 1 35 2030 2000.0 1.0 0.0 -de 02_wind_on 1 35 2030 1400.0 1.0 0.0 -de 03_wind_off 1 35 2030 0.0 0.0 0.0 -de 04_res 1 35 2030 0.0 0.0 0.0 -de 05_nuclear 1 35 2030 0.0 0.0 0.0 -de 06_coal 1 35 2030 0.0 0.0 0.0 -de 07_gas 1 35 2030 0.0 0.0 0.0 -de 08_non-res 1 35 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 35 2030 0.0 0.0 0.0 -de 01_solar 1 36 2030 2000.0 1.0 0.0 -de 02_wind_on 1 36 2030 1500.0 1.0 0.0 -de 03_wind_off 1 36 2030 0.0 0.0 0.0 -de 04_res 1 36 2030 0.0 0.0 0.0 -de 05_nuclear 1 36 2030 0.0 0.0 0.0 -de 06_coal 1 36 2030 0.0 0.0 0.0 -de 07_gas 1 36 2030 0.0 0.0 0.0 -de 08_non-res 1 36 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 36 2030 0.0 0.0 0.0 -de 01_solar 1 37 2030 2000.0 1.0 0.0 -de 02_wind_on 1 37 2030 1600.0 1.0 0.0 -de 03_wind_off 1 37 2030 0.0 0.0 0.0 -de 04_res 1 37 2030 0.0 0.0 0.0 -de 05_nuclear 1 37 2030 0.0 0.0 0.0 -de 06_coal 1 37 2030 0.0 0.0 0.0 -de 07_gas 1 37 2030 0.0 0.0 0.0 -de 08_non-res 1 37 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 37 2030 0.0 0.0 0.0 -de 01_solar 1 38 2030 2000.0 1.0 0.0 -de 02_wind_on 1 38 2030 1700.0 1.0 0.0 -de 03_wind_off 1 38 2030 0.0 0.0 0.0 -de 04_res 1 38 2030 0.0 0.0 0.0 -de 05_nuclear 1 38 2030 0.0 0.0 0.0 -de 06_coal 1 38 2030 0.0 0.0 0.0 -de 07_gas 1 38 2030 0.0 0.0 0.0 -de 08_non-res 1 38 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 38 2030 0.0 0.0 0.0 -de 01_solar 1 39 2030 2000.0 1.0 0.0 -de 02_wind_on 1 39 2030 1800.0 1.0 0.0 -de 03_wind_off 1 39 2030 0.0 0.0 0.0 -de 04_res 1 39 2030 0.0 0.0 0.0 -de 05_nuclear 1 39 2030 0.0 0.0 0.0 -de 06_coal 1 39 2030 0.0 0.0 0.0 -de 07_gas 1 39 2030 0.0 0.0 0.0 -de 08_non-res 1 39 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 39 2030 0.0 0.0 0.0 -de 01_solar 1 40 2030 2000.0 1.0 0.0 -de 02_wind_on 1 40 2030 1900.0 1.0 0.0 -de 03_wind_off 1 40 2030 0.0 0.0 0.0 -de 04_res 1 40 2030 0.0 0.0 0.0 -de 05_nuclear 1 40 2030 0.0 0.0 0.0 -de 06_coal 1 40 2030 0.0 0.0 0.0 -de 07_gas 1 40 2030 0.0 0.0 0.0 -de 08_non-res 1 40 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 40 2030 0.0 0.0 0.0 -de 01_solar 1 41 2030 2000.0 1.0 0.0 -de 02_wind_on 1 41 2030 2000.0 1.0 0.0 -de 03_wind_off 1 41 2030 0.0 0.0 0.0 -de 04_res 1 41 2030 0.0 0.0 0.0 -de 05_nuclear 1 41 2030 0.0 0.0 0.0 -de 06_coal 1 41 2030 0.0 0.0 0.0 -de 07_gas 1 41 2030 0.0 0.0 0.0 -de 08_non-res 1 41 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 41 2030 0.0 0.0 0.0 -de 01_solar 1 42 2030 2000.0 1.0 0.0 -de 02_wind_on 1 42 2030 2000.0 1.0 0.0 -de 03_wind_off 1 42 2030 100.0 1.0 0.0 -de 04_res 1 42 2030 0.0 0.0 0.0 -de 05_nuclear 1 42 2030 0.0 0.0 0.0 -de 06_coal 1 42 2030 0.0 0.0 0.0 -de 07_gas 1 42 2030 0.0 0.0 0.0 -de 08_non-res 1 42 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 42 2030 0.0 0.0 0.0 -de 01_solar 1 43 2030 2000.0 1.0 0.0 -de 02_wind_on 1 43 2030 2000.0 1.0 0.0 -de 03_wind_off 1 43 2030 200.0 1.0 0.0 -de 04_res 1 43 2030 0.0 0.0 0.0 -de 05_nuclear 1 43 2030 0.0 0.0 0.0 -de 06_coal 1 43 2030 0.0 0.0 0.0 -de 07_gas 1 43 2030 0.0 0.0 0.0 -de 08_non-res 1 43 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 43 2030 0.0 0.0 0.0 -de 01_solar 1 44 2030 2000.0 1.0 0.0 -de 02_wind_on 1 44 2030 2000.0 1.0 0.0 -de 03_wind_off 1 44 2030 300.0 1.0 0.0 -de 04_res 1 44 2030 0.0 0.0 0.0 -de 05_nuclear 1 44 2030 0.0 0.0 0.0 -de 06_coal 1 44 2030 0.0 0.0 0.0 -de 07_gas 1 44 2030 0.0 0.0 0.0 -de 08_non-res 1 44 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 44 2030 0.0 0.0 0.0 -de 01_solar 1 45 2030 2000.0 1.0 0.0 -de 02_wind_on 1 45 2030 2000.0 1.0 0.0 -de 03_wind_off 1 45 2030 400.0 1.0 0.0 -de 04_res 1 45 2030 0.0 0.0 0.0 -de 05_nuclear 1 45 2030 0.0 0.0 0.0 -de 06_coal 1 45 2030 0.0 0.0 0.0 -de 07_gas 1 45 2030 0.0 0.0 0.0 -de 08_non-res 1 45 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 45 2030 0.0 0.0 0.0 -de 01_solar 1 46 2030 2000.0 1.0 0.0 -de 02_wind_on 1 46 2030 2000.0 1.0 0.0 -de 03_wind_off 1 46 2030 500.0 1.0 0.0 -de 04_res 1 46 2030 0.0 0.0 0.0 -de 05_nuclear 1 46 2030 0.0 0.0 0.0 -de 06_coal 1 46 2030 0.0 0.0 0.0 -de 07_gas 1 46 2030 0.0 0.0 0.0 -de 08_non-res 1 46 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 46 2030 0.0 0.0 0.0 -de 01_solar 1 47 2030 2000.0 1.0 0.0 -de 02_wind_on 1 47 2030 2000.0 1.0 0.0 -de 03_wind_off 1 47 2030 600.0 1.0 0.0 -de 04_res 1 47 2030 0.0 0.0 0.0 -de 05_nuclear 1 47 2030 0.0 0.0 0.0 -de 06_coal 1 47 2030 0.0 0.0 0.0 -de 07_gas 1 47 2030 0.0 0.0 0.0 -de 08_non-res 1 47 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 47 2030 0.0 0.0 0.0 -de 01_solar 1 48 2030 2000.0 1.0 0.0 -de 02_wind_on 1 48 2030 2000.0 1.0 0.0 -de 03_wind_off 1 48 2030 700.0 1.0 0.0 -de 04_res 1 48 2030 0.0 0.0 0.0 -de 05_nuclear 1 48 2030 0.0 0.0 0.0 -de 06_coal 1 48 2030 0.0 0.0 0.0 -de 07_gas 1 48 2030 0.0 0.0 0.0 -de 08_non-res 1 48 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 48 2030 0.0 0.0 0.0 -de 01_solar 1 49 2030 2000.0 1.0 0.0 -de 02_wind_on 1 49 2030 2000.0 1.0 0.0 -de 03_wind_off 1 49 2030 800.0 1.0 0.0 -de 04_res 1 49 2030 0.0 0.0 0.0 -de 05_nuclear 1 49 2030 0.0 0.0 0.0 -de 06_coal 1 49 2030 0.0 0.0 0.0 -de 07_gas 1 49 2030 0.0 0.0 0.0 -de 08_non-res 1 49 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 49 2030 0.0 0.0 0.0 -de 01_solar 1 50 2030 2000.0 1.0 0.0 -de 02_wind_on 1 50 2030 2000.0 1.0 0.0 -de 03_wind_off 1 50 2030 900.0 1.0 0.0 -de 04_res 1 50 2030 0.0 0.0 0.0 -de 05_nuclear 1 50 2030 0.0 0.0 0.0 -de 06_coal 1 50 2030 0.0 0.0 0.0 -de 07_gas 1 50 2030 0.0 0.0 0.0 -de 08_non-res 1 50 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 50 2030 0.0 0.0 0.0 -de 01_solar 1 51 2030 2000.0 1.0 0.0 -de 02_wind_on 1 51 2030 2000.0 1.0 0.0 -de 03_wind_off 1 51 2030 1000.0 1.0 0.0 -de 04_res 1 51 2030 0.0 0.0 0.0 -de 05_nuclear 1 51 2030 0.0 0.0 0.0 -de 06_coal 1 51 2030 0.0 0.0 0.0 -de 07_gas 1 51 2030 0.0 0.0 0.0 -de 08_non-res 1 51 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 51 2030 0.0 0.0 0.0 -de 01_solar 1 52 2030 2000.0 1.0 0.0 -de 02_wind_on 1 52 2030 2000.0 1.0 0.0 -de 03_wind_off 1 52 2030 1100.0 1.0 0.0 -de 04_res 1 52 2030 0.0 0.0 0.0 -de 05_nuclear 1 52 2030 0.0 0.0 0.0 -de 06_coal 1 52 2030 0.0 0.0 0.0 -de 07_gas 1 52 2030 0.0 0.0 0.0 -de 08_non-res 1 52 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 52 2030 0.0 0.0 0.0 -de 01_solar 1 53 2030 2000.0 1.0 0.0 -de 02_wind_on 1 53 2030 2000.0 1.0 0.0 -de 03_wind_off 1 53 2030 1200.0 1.0 0.0 -de 04_res 1 53 2030 0.0 0.0 0.0 -de 05_nuclear 1 53 2030 0.0 0.0 0.0 -de 06_coal 1 53 2030 0.0 0.0 0.0 -de 07_gas 1 53 2030 0.0 0.0 0.0 -de 08_non-res 1 53 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 53 2030 0.0 0.0 0.0 -de 01_solar 1 54 2030 2000.0 1.0 0.0 -de 02_wind_on 1 54 2030 2000.0 1.0 0.0 -de 03_wind_off 1 54 2030 1300.0 1.0 0.0 -de 04_res 1 54 2030 0.0 0.0 0.0 -de 05_nuclear 1 54 2030 0.0 0.0 0.0 -de 06_coal 1 54 2030 0.0 0.0 0.0 -de 07_gas 1 54 2030 0.0 0.0 0.0 -de 08_non-res 1 54 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 54 2030 0.0 0.0 0.0 -de 01_solar 1 55 2030 2000.0 1.0 0.0 -de 02_wind_on 1 55 2030 2000.0 1.0 0.0 -de 03_wind_off 1 55 2030 1400.0 1.0 0.0 -de 04_res 1 55 2030 0.0 0.0 0.0 -de 05_nuclear 1 55 2030 0.0 0.0 0.0 -de 06_coal 1 55 2030 0.0 0.0 0.0 -de 07_gas 1 55 2030 0.0 0.0 0.0 -de 08_non-res 1 55 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 55 2030 0.0 0.0 0.0 -de 01_solar 1 56 2030 2000.0 1.0 0.0 -de 02_wind_on 1 56 2030 2000.0 1.0 0.0 -de 03_wind_off 1 56 2030 1500.0 1.0 0.0 -de 04_res 1 56 2030 0.0 0.0 0.0 -de 05_nuclear 1 56 2030 0.0 0.0 0.0 -de 06_coal 1 56 2030 0.0 0.0 0.0 -de 07_gas 1 56 2030 0.0 0.0 0.0 -de 08_non-res 1 56 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 56 2030 0.0 0.0 0.0 -de 01_solar 1 57 2030 2000.0 1.0 0.0 -de 02_wind_on 1 57 2030 2000.0 1.0 0.0 -de 03_wind_off 1 57 2030 1600.0 1.0 0.0 -de 04_res 1 57 2030 0.0 0.0 0.0 -de 05_nuclear 1 57 2030 0.0 0.0 0.0 -de 06_coal 1 57 2030 0.0 0.0 0.0 -de 07_gas 1 57 2030 0.0 0.0 0.0 -de 08_non-res 1 57 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 57 2030 0.0 0.0 0.0 -de 01_solar 1 58 2030 2000.0 1.0 0.0 -de 02_wind_on 1 58 2030 2000.0 1.0 0.0 -de 03_wind_off 1 58 2030 1700.0 1.0 0.0 -de 04_res 1 58 2030 0.0 0.0 0.0 -de 05_nuclear 1 58 2030 0.0 0.0 0.0 -de 06_coal 1 58 2030 0.0 0.0 0.0 -de 07_gas 1 58 2030 0.0 0.0 0.0 -de 08_non-res 1 58 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 58 2030 0.0 0.0 0.0 -de 01_solar 1 59 2030 2000.0 1.0 0.0 -de 02_wind_on 1 59 2030 2000.0 1.0 0.0 -de 03_wind_off 1 59 2030 1800.0 1.0 0.0 -de 04_res 1 59 2030 0.0 0.0 0.0 -de 05_nuclear 1 59 2030 0.0 0.0 0.0 -de 06_coal 1 59 2030 0.0 0.0 0.0 -de 07_gas 1 59 2030 0.0 0.0 0.0 -de 08_non-res 1 59 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 59 2030 0.0 0.0 0.0 -de 01_solar 1 60 2030 2000.0 1.0 0.0 -de 02_wind_on 1 60 2030 2000.0 1.0 0.0 -de 03_wind_off 1 60 2030 1900.0 1.0 0.0 -de 04_res 1 60 2030 0.0 0.0 0.0 -de 05_nuclear 1 60 2030 0.0 0.0 0.0 -de 06_coal 1 60 2030 0.0 0.0 0.0 -de 07_gas 1 60 2030 0.0 0.0 0.0 -de 08_non-res 1 60 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 60 2030 0.0 0.0 0.0 -de 01_solar 1 61 2030 2000.0 1.0 0.0 -de 02_wind_on 1 61 2030 2000.0 1.0 0.0 -de 03_wind_off 1 61 2030 2000.0 1.0 0.0 -de 04_res 1 61 2030 0.0 0.0 0.0 -de 05_nuclear 1 61 2030 0.0 0.0 0.0 -de 06_coal 1 61 2030 0.0 0.0 0.0 -de 07_gas 1 61 2030 0.0 0.0 0.0 -de 08_non-res 1 61 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 61 2030 0.0 0.0 0.0 -de 01_solar 1 62 2030 2000.0 1.0 0.0 -de 02_wind_on 1 62 2030 2000.0 1.0 0.0 -de 03_wind_off 1 62 2030 2000.0 1.0 0.0 -de 04_res 1 62 2030 100.0 1.0 0.0 -de 05_nuclear 1 62 2030 0.0 0.0 0.0 -de 06_coal 1 62 2030 0.0 0.0 0.0 -de 07_gas 1 62 2030 0.0 0.0 0.0 -de 08_non-res 1 62 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 62 2030 0.0 0.0 0.0 -de 01_solar 1 63 2030 2000.0 1.0 0.0 -de 02_wind_on 1 63 2030 2000.0 1.0 0.0 -de 03_wind_off 1 63 2030 2000.0 1.0 0.0 -de 04_res 1 63 2030 200.0 1.0 0.0 -de 05_nuclear 1 63 2030 0.0 0.0 0.0 -de 06_coal 1 63 2030 0.0 0.0 0.0 -de 07_gas 1 63 2030 0.0 0.0 0.0 -de 08_non-res 1 63 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 63 2030 0.0 0.0 0.0 -de 01_solar 1 64 2030 2000.0 1.0 0.0 -de 02_wind_on 1 64 2030 2000.0 1.0 0.0 -de 03_wind_off 1 64 2030 2000.0 1.0 0.0 -de 04_res 1 64 2030 300.0 1.0 0.0 -de 05_nuclear 1 64 2030 0.0 0.0 0.0 -de 06_coal 1 64 2030 0.0 0.0 0.0 -de 07_gas 1 64 2030 0.0 0.0 0.0 -de 08_non-res 1 64 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 64 2030 0.0 0.0 0.0 -de 01_solar 1 65 2030 2000.0 1.0 0.0 -de 02_wind_on 1 65 2030 2000.0 1.0 0.0 -de 03_wind_off 1 65 2030 2000.0 1.0 0.0 -de 04_res 1 65 2030 400.0 1.0 0.0 -de 05_nuclear 1 65 2030 0.0 0.0 0.0 -de 06_coal 1 65 2030 0.0 0.0 0.0 -de 07_gas 1 65 2030 0.0 0.0 0.0 -de 08_non-res 1 65 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 65 2030 0.0 0.0 0.0 -de 01_solar 1 66 2030 2000.0 1.0 0.0 -de 02_wind_on 1 66 2030 2000.0 1.0 0.0 -de 03_wind_off 1 66 2030 2000.0 1.0 0.0 -de 04_res 1 66 2030 500.0 1.0 0.0 -de 05_nuclear 1 66 2030 0.0 0.0 0.0 -de 06_coal 1 66 2030 0.0 0.0 0.0 -de 07_gas 1 66 2030 0.0 0.0 0.0 -de 08_non-res 1 66 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 66 2030 0.0 0.0 0.0 -de 01_solar 1 67 2030 2000.0 1.0 0.0 -de 02_wind_on 1 67 2030 2000.0 1.0 0.0 -de 03_wind_off 1 67 2030 2000.0 1.0 0.0 -de 04_res 1 67 2030 600.0 1.0 0.0 -de 05_nuclear 1 67 2030 0.0 0.0 0.0 -de 06_coal 1 67 2030 0.0 0.0 0.0 -de 07_gas 1 67 2030 0.0 0.0 0.0 -de 08_non-res 1 67 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 67 2030 0.0 0.0 0.0 -de 01_solar 1 68 2030 2000.0 1.0 0.0 -de 02_wind_on 1 68 2030 2000.0 1.0 0.0 -de 03_wind_off 1 68 2030 2000.0 1.0 0.0 -de 04_res 1 68 2030 700.0 1.0 0.0 -de 05_nuclear 1 68 2030 0.0 0.0 0.0 -de 06_coal 1 68 2030 0.0 0.0 0.0 -de 07_gas 1 68 2030 0.0 0.0 0.0 -de 08_non-res 1 68 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 68 2030 0.0 0.0 0.0 -de 01_solar 1 69 2030 2000.0 1.0 0.0 -de 02_wind_on 1 69 2030 2000.0 1.0 0.0 -de 03_wind_off 1 69 2030 2000.0 1.0 0.0 -de 04_res 1 69 2030 800.0 1.0 0.0 -de 05_nuclear 1 69 2030 0.0 0.0 0.0 -de 06_coal 1 69 2030 0.0 0.0 0.0 -de 07_gas 1 69 2030 0.0 0.0 0.0 -de 08_non-res 1 69 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 69 2030 0.0 0.0 0.0 -de 01_solar 1 70 2030 2000.0 1.0 0.0 -de 02_wind_on 1 70 2030 2000.0 1.0 0.0 -de 03_wind_off 1 70 2030 2000.0 1.0 0.0 -de 04_res 1 70 2030 900.0 1.0 0.0 -de 05_nuclear 1 70 2030 0.0 0.0 0.0 -de 06_coal 1 70 2030 0.0 0.0 0.0 -de 07_gas 1 70 2030 0.0 0.0 0.0 -de 08_non-res 1 70 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 70 2030 0.0 0.0 0.0 -de 01_solar 1 71 2030 2000.0 1.0 0.0 -de 02_wind_on 1 71 2030 2000.0 1.0 0.0 -de 03_wind_off 1 71 2030 2000.0 1.0 0.0 -de 04_res 1 71 2030 1000.0 1.0 0.0 -de 05_nuclear 1 71 2030 0.0 0.0 0.0 -de 06_coal 1 71 2030 0.0 0.0 0.0 -de 07_gas 1 71 2030 0.0 0.0 0.0 -de 08_non-res 1 71 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 71 2030 0.0 0.0 0.0 -de 01_solar 1 72 2030 2000.0 1.0 0.0 -de 02_wind_on 1 72 2030 2000.0 1.0 0.0 -de 03_wind_off 1 72 2030 2000.0 1.0 0.0 -de 04_res 1 72 2030 1100.0 1.0 0.0 -de 05_nuclear 1 72 2030 0.0 0.0 0.0 -de 06_coal 1 72 2030 0.0 0.0 0.0 -de 07_gas 1 72 2030 0.0 0.0 0.0 -de 08_non-res 1 72 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 72 2030 0.0 0.0 0.0 -de 01_solar 1 73 2030 2000.0 1.0 0.0 -de 02_wind_on 1 73 2030 2000.0 1.0 0.0 -de 03_wind_off 1 73 2030 2000.0 1.0 0.0 -de 04_res 1 73 2030 1200.0 1.0 0.0 -de 05_nuclear 1 73 2030 0.0 0.0 0.0 -de 06_coal 1 73 2030 0.0 0.0 0.0 -de 07_gas 1 73 2030 0.0 0.0 0.0 -de 08_non-res 1 73 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 73 2030 0.0 0.0 0.0 -de 01_solar 1 74 2030 2000.0 1.0 0.0 -de 02_wind_on 1 74 2030 2000.0 1.0 0.0 -de 03_wind_off 1 74 2030 2000.0 1.0 0.0 -de 04_res 1 74 2030 1300.0 1.0 0.0 -de 05_nuclear 1 74 2030 0.0 0.0 0.0 -de 06_coal 1 74 2030 0.0 0.0 0.0 -de 07_gas 1 74 2030 0.0 0.0 0.0 -de 08_non-res 1 74 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 74 2030 0.0 0.0 0.0 -de 01_solar 1 75 2030 2000.0 1.0 0.0 -de 02_wind_on 1 75 2030 2000.0 1.0 0.0 -de 03_wind_off 1 75 2030 2000.0 1.0 0.0 -de 04_res 1 75 2030 1400.0 1.0 0.0 -de 05_nuclear 1 75 2030 0.0 0.0 0.0 -de 06_coal 1 75 2030 0.0 0.0 0.0 -de 07_gas 1 75 2030 0.0 0.0 0.0 -de 08_non-res 1 75 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 75 2030 0.0 0.0 0.0 -de 01_solar 1 76 2030 2000.0 1.0 0.0 -de 02_wind_on 1 76 2030 2000.0 1.0 0.0 -de 03_wind_off 1 76 2030 2000.0 1.0 0.0 -de 04_res 1 76 2030 1500.0 1.0 0.0 -de 05_nuclear 1 76 2030 0.0 0.0 0.0 -de 06_coal 1 76 2030 0.0 0.0 0.0 -de 07_gas 1 76 2030 0.0 0.0 0.0 -de 08_non-res 1 76 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 76 2030 0.0 0.0 0.0 -de 01_solar 1 77 2030 2000.0 1.0 0.0 -de 02_wind_on 1 77 2030 2000.0 1.0 0.0 -de 03_wind_off 1 77 2030 2000.0 1.0 0.0 -de 04_res 1 77 2030 1600.0 1.0 0.0 -de 05_nuclear 1 77 2030 0.0 0.0 0.0 -de 06_coal 1 77 2030 0.0 0.0 0.0 -de 07_gas 1 77 2030 0.0 0.0 0.0 -de 08_non-res 1 77 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 77 2030 0.0 0.0 0.0 -de 01_solar 1 78 2030 2000.0 1.0 0.0 -de 02_wind_on 1 78 2030 2000.0 1.0 0.0 -de 03_wind_off 1 78 2030 2000.0 1.0 0.0 -de 04_res 1 78 2030 1700.0 1.0 0.0 -de 05_nuclear 1 78 2030 0.0 0.0 0.0 -de 06_coal 1 78 2030 0.0 0.0 0.0 -de 07_gas 1 78 2030 0.0 0.0 0.0 -de 08_non-res 1 78 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 78 2030 0.0 0.0 0.0 -de 01_solar 1 79 2030 2000.0 1.0 0.0 -de 02_wind_on 1 79 2030 2000.0 1.0 0.0 -de 03_wind_off 1 79 2030 2000.0 1.0 0.0 -de 04_res 1 79 2030 1800.0 1.0 0.0 -de 05_nuclear 1 79 2030 0.0 0.0 0.0 -de 06_coal 1 79 2030 0.0 0.0 0.0 -de 07_gas 1 79 2030 0.0 0.0 0.0 -de 08_non-res 1 79 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 79 2030 0.0 0.0 0.0 -de 01_solar 1 80 2030 2000.0 1.0 0.0 -de 02_wind_on 1 80 2030 2000.0 1.0 0.0 -de 03_wind_off 1 80 2030 2000.0 1.0 0.0 -de 04_res 1 80 2030 1900.0 1.0 0.0 -de 05_nuclear 1 80 2030 0.0 0.0 0.0 -de 06_coal 1 80 2030 0.0 0.0 0.0 -de 07_gas 1 80 2030 0.0 0.0 0.0 -de 08_non-res 1 80 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 80 2030 0.0 0.0 0.0 -de 01_solar 1 81 2030 2000.0 1.0 0.0 -de 02_wind_on 1 81 2030 2000.0 1.0 0.0 -de 03_wind_off 1 81 2030 2000.0 1.0 0.0 -de 04_res 1 81 2030 2000.0 1.0 0.0 -de 05_nuclear 1 81 2030 0.0 0.0 0.0 -de 06_coal 1 81 2030 0.0 0.0 0.0 -de 07_gas 1 81 2030 0.0 0.0 0.0 -de 08_non-res 1 81 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 81 2030 0.0 0.0 0.0 -de 01_solar 1 82 2030 2000.0 1.0 0.0 -de 02_wind_on 1 82 2030 2000.0 1.0 0.0 -de 03_wind_off 1 82 2030 2000.0 1.0 0.0 -de 04_res 1 82 2030 2000.0 1.0 0.0 -de 05_nuclear 1 82 2030 100.0 1.0 0.0 -de 06_coal 1 82 2030 0.0 0.0 0.0 -de 07_gas 1 82 2030 0.0 0.0 0.0 -de 08_non-res 1 82 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 82 2030 0.0 0.0 0.0 -de 01_solar 1 83 2030 2000.0 1.0 0.0 -de 02_wind_on 1 83 2030 2000.0 1.0 0.0 -de 03_wind_off 1 83 2030 2000.0 1.0 0.0 -de 04_res 1 83 2030 2000.0 1.0 0.0 -de 05_nuclear 1 83 2030 200.0 1.0 0.0 -de 06_coal 1 83 2030 0.0 0.0 0.0 -de 07_gas 1 83 2030 0.0 0.0 0.0 -de 08_non-res 1 83 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 83 2030 0.0 0.0 0.0 -de 01_solar 1 84 2030 2000.0 1.0 0.0 -de 02_wind_on 1 84 2030 2000.0 1.0 0.0 -de 03_wind_off 1 84 2030 2000.0 1.0 0.0 -de 04_res 1 84 2030 2000.0 1.0 0.0 -de 05_nuclear 1 84 2030 300.0 1.0 0.0 -de 06_coal 1 84 2030 0.0 0.0 0.0 -de 07_gas 1 84 2030 0.0 0.0 0.0 -de 08_non-res 1 84 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 84 2030 0.0 0.0 0.0 -de 01_solar 1 85 2030 2000.0 1.0 0.0 -de 02_wind_on 1 85 2030 2000.0 1.0 0.0 -de 03_wind_off 1 85 2030 2000.0 1.0 0.0 -de 04_res 1 85 2030 2000.0 1.0 0.0 -de 05_nuclear 1 85 2030 400.0 1.0 0.0 -de 06_coal 1 85 2030 0.0 0.0 0.0 -de 07_gas 1 85 2030 0.0 0.0 0.0 -de 08_non-res 1 85 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 85 2030 0.0 0.0 0.0 -de 01_solar 1 86 2030 2000.0 1.0 0.0 -de 02_wind_on 1 86 2030 2000.0 1.0 0.0 -de 03_wind_off 1 86 2030 2000.0 1.0 0.0 -de 04_res 1 86 2030 2000.0 1.0 0.0 -de 05_nuclear 1 86 2030 500.0 1.0 0.0 -de 06_coal 1 86 2030 0.0 0.0 0.0 -de 07_gas 1 86 2030 0.0 0.0 0.0 -de 08_non-res 1 86 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 86 2030 0.0 0.0 0.0 -de 01_solar 1 87 2030 2000.0 1.0 0.0 -de 02_wind_on 1 87 2030 2000.0 1.0 0.0 -de 03_wind_off 1 87 2030 2000.0 1.0 0.0 -de 04_res 1 87 2030 2000.0 1.0 0.0 -de 05_nuclear 1 87 2030 600.0 1.0 0.0 -de 06_coal 1 87 2030 0.0 0.0 0.0 -de 07_gas 1 87 2030 0.0 0.0 0.0 -de 08_non-res 1 87 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 87 2030 0.0 0.0 0.0 -de 01_solar 1 88 2030 2000.0 1.0 0.0 -de 02_wind_on 1 88 2030 2000.0 1.0 0.0 -de 03_wind_off 1 88 2030 2000.0 1.0 0.0 -de 04_res 1 88 2030 2000.0 1.0 0.0 -de 05_nuclear 1 88 2030 700.0 1.0 0.0 -de 06_coal 1 88 2030 0.0 0.0 0.0 -de 07_gas 1 88 2030 0.0 0.0 0.0 -de 08_non-res 1 88 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 88 2030 0.0 0.0 0.0 -de 01_solar 1 89 2030 2000.0 1.0 0.0 -de 02_wind_on 1 89 2030 2000.0 1.0 0.0 -de 03_wind_off 1 89 2030 2000.0 1.0 0.0 -de 04_res 1 89 2030 2000.0 1.0 0.0 -de 05_nuclear 1 89 2030 800.0 1.0 0.0 -de 06_coal 1 89 2030 0.0 0.0 0.0 -de 07_gas 1 89 2030 0.0 0.0 0.0 -de 08_non-res 1 89 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 89 2030 0.0 0.0 0.0 -de 01_solar 1 90 2030 2000.0 1.0 0.0 -de 02_wind_on 1 90 2030 2000.0 1.0 0.0 -de 03_wind_off 1 90 2030 2000.0 1.0 0.0 -de 04_res 1 90 2030 2000.0 1.0 0.0 -de 05_nuclear 1 90 2030 900.0 1.0 0.0 -de 06_coal 1 90 2030 0.0 0.0 0.0 -de 07_gas 1 90 2030 0.0 0.0 0.0 -de 08_non-res 1 90 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 90 2030 0.0 0.0 0.0 -de 01_solar 1 91 2030 2000.0 1.0 0.0 -de 02_wind_on 1 91 2030 2000.0 1.0 0.0 -de 03_wind_off 1 91 2030 2000.0 1.0 0.0 -de 04_res 1 91 2030 2000.0 1.0 0.0 -de 05_nuclear 1 91 2030 1000.0 1.0 0.0 -de 06_coal 1 91 2030 0.0 0.0 0.0 -de 07_gas 1 91 2030 0.0 0.0 0.0 -de 08_non-res 1 91 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 91 2030 0.0 0.0 0.0 -de 01_solar 1 92 2030 2000.0 1.0 0.0 -de 02_wind_on 1 92 2030 2000.0 1.0 0.0 -de 03_wind_off 1 92 2030 2000.0 1.0 0.0 -de 04_res 1 92 2030 2000.0 1.0 0.0 -de 05_nuclear 1 92 2030 1100.0 1.0 0.0 -de 06_coal 1 92 2030 0.0 0.0 0.0 -de 07_gas 1 92 2030 0.0 0.0 0.0 -de 08_non-res 1 92 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 92 2030 0.0 0.0 0.0 -de 01_solar 1 93 2030 2000.0 1.0 0.0 -de 02_wind_on 1 93 2030 2000.0 1.0 0.0 -de 03_wind_off 1 93 2030 2000.0 1.0 0.0 -de 04_res 1 93 2030 2000.0 1.0 0.0 -de 05_nuclear 1 93 2030 1200.0 1.0 0.0 -de 06_coal 1 93 2030 0.0 0.0 0.0 -de 07_gas 1 93 2030 0.0 0.0 0.0 -de 08_non-res 1 93 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 93 2030 0.0 0.0 0.0 -de 01_solar 1 94 2030 2000.0 1.0 0.0 -de 02_wind_on 1 94 2030 2000.0 1.0 0.0 -de 03_wind_off 1 94 2030 2000.0 1.0 0.0 -de 04_res 1 94 2030 2000.0 1.0 0.0 -de 05_nuclear 1 94 2030 1300.0 1.0 0.0 -de 06_coal 1 94 2030 0.0 0.0 0.0 -de 07_gas 1 94 2030 0.0 0.0 0.0 -de 08_non-res 1 94 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 94 2030 0.0 0.0 0.0 -de 01_solar 1 95 2030 2000.0 1.0 0.0 -de 02_wind_on 1 95 2030 2000.0 1.0 0.0 -de 03_wind_off 1 95 2030 2000.0 1.0 0.0 -de 04_res 1 95 2030 2000.0 1.0 0.0 -de 05_nuclear 1 95 2030 1400.0 1.0 0.0 -de 06_coal 1 95 2030 0.0 0.0 0.0 -de 07_gas 1 95 2030 0.0 0.0 0.0 -de 08_non-res 1 95 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 95 2030 0.0 0.0 0.0 -de 01_solar 1 96 2030 2000.0 1.0 0.0 -de 02_wind_on 1 96 2030 2000.0 1.0 0.0 -de 03_wind_off 1 96 2030 2000.0 1.0 0.0 -de 04_res 1 96 2030 2000.0 1.0 0.0 -de 05_nuclear 1 96 2030 1500.0 1.0 0.0 -de 06_coal 1 96 2030 0.0 0.0 0.0 -de 07_gas 1 96 2030 0.0 0.0 0.0 -de 08_non-res 1 96 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 96 2030 0.0 0.0 0.0 -de 01_solar 1 97 2030 2000.0 1.0 0.0 -de 02_wind_on 1 97 2030 2000.0 1.0 0.0 -de 03_wind_off 1 97 2030 2000.0 1.0 0.0 -de 04_res 1 97 2030 2000.0 1.0 0.0 -de 05_nuclear 1 97 2030 1600.0 1.0 0.0 -de 06_coal 1 97 2030 0.0 0.0 0.0 -de 07_gas 1 97 2030 0.0 0.0 0.0 -de 08_non-res 1 97 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 97 2030 0.0 0.0 0.0 -de 01_solar 1 98 2030 2000.0 1.0 0.0 -de 02_wind_on 1 98 2030 2000.0 1.0 0.0 -de 03_wind_off 1 98 2030 2000.0 1.0 0.0 -de 04_res 1 98 2030 2000.0 1.0 0.0 -de 05_nuclear 1 98 2030 1700.0 1.0 0.0 -de 06_coal 1 98 2030 0.0 0.0 0.0 -de 07_gas 1 98 2030 0.0 0.0 0.0 -de 08_non-res 1 98 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 98 2030 0.0 0.0 0.0 -de 01_solar 1 99 2030 2000.0 1.0 0.0 -de 02_wind_on 1 99 2030 2000.0 1.0 0.0 -de 03_wind_off 1 99 2030 2000.0 1.0 0.0 -de 04_res 1 99 2030 2000.0 1.0 0.0 -de 05_nuclear 1 99 2030 1800.0 1.0 0.0 -de 06_coal 1 99 2030 0.0 0.0 0.0 -de 07_gas 1 99 2030 0.0 0.0 0.0 -de 08_non-res 1 99 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 99 2030 0.0 0.0 0.0 -de 01_solar 1 100 2030 2000.0 1.0 0.0 -de 02_wind_on 1 100 2030 2000.0 1.0 0.0 -de 03_wind_off 1 100 2030 2000.0 1.0 0.0 -de 04_res 1 100 2030 2000.0 1.0 0.0 -de 05_nuclear 1 100 2030 1900.0 1.0 0.0 -de 06_coal 1 100 2030 0.0 0.0 0.0 -de 07_gas 1 100 2030 0.0 0.0 0.0 -de 08_non-res 1 100 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 100 2030 0.0 0.0 0.0 -de 01_solar 1 101 2030 2000.0 1.0 0.0 -de 02_wind_on 1 101 2030 2000.0 1.0 0.0 -de 03_wind_off 1 101 2030 2000.0 1.0 0.0 -de 04_res 1 101 2030 2000.0 1.0 0.0 -de 05_nuclear 1 101 2030 2000.0 1.0 0.0 -de 06_coal 1 101 2030 0.0 0.0 0.0 -de 07_gas 1 101 2030 0.0 0.0 0.0 -de 08_non-res 1 101 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 101 2030 0.0 0.0 0.0 -de 01_solar 1 102 2030 2000.0 1.0 0.0 -de 02_wind_on 1 102 2030 2000.0 1.0 0.0 -de 03_wind_off 1 102 2030 2000.0 1.0 0.0 -de 04_res 1 102 2030 2000.0 1.0 0.0 -de 05_nuclear 1 102 2030 2000.0 1.0 0.0 -de 06_coal 1 102 2030 100.0 1.0 0.0 -de 07_gas 1 102 2030 0.0 0.0 0.0 -de 08_non-res 1 102 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 102 2030 0.0 0.0 0.0 -de 01_solar 1 103 2030 2000.0 1.0 0.0 -de 02_wind_on 1 103 2030 2000.0 1.0 0.0 -de 03_wind_off 1 103 2030 2000.0 1.0 0.0 -de 04_res 1 103 2030 2000.0 1.0 0.0 -de 05_nuclear 1 103 2030 2000.0 1.0 0.0 -de 06_coal 1 103 2030 200.0 1.0 0.0 -de 07_gas 1 103 2030 0.0 0.0 0.0 -de 08_non-res 1 103 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 103 2030 0.0 0.0 0.0 -de 01_solar 1 104 2030 2000.0 1.0 0.0 -de 02_wind_on 1 104 2030 2000.0 1.0 0.0 -de 03_wind_off 1 104 2030 2000.0 1.0 0.0 -de 04_res 1 104 2030 2000.0 1.0 0.0 -de 05_nuclear 1 104 2030 2000.0 1.0 0.0 -de 06_coal 1 104 2030 300.0 1.0 0.0 -de 07_gas 1 104 2030 0.0 0.0 0.0 -de 08_non-res 1 104 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 104 2030 0.0 0.0 0.0 -de 01_solar 1 105 2030 2000.0 1.0 0.0 -de 02_wind_on 1 105 2030 2000.0 1.0 0.0 -de 03_wind_off 1 105 2030 2000.0 1.0 0.0 -de 04_res 1 105 2030 2000.0 1.0 0.0 -de 05_nuclear 1 105 2030 2000.0 1.0 0.0 -de 06_coal 1 105 2030 400.0 1.0 0.0 -de 07_gas 1 105 2030 0.0 0.0 0.0 -de 08_non-res 1 105 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 105 2030 0.0 0.0 0.0 -de 01_solar 1 106 2030 2000.0 1.0 0.0 -de 02_wind_on 1 106 2030 2000.0 1.0 0.0 -de 03_wind_off 1 106 2030 2000.0 1.0 0.0 -de 04_res 1 106 2030 2000.0 1.0 0.0 -de 05_nuclear 1 106 2030 2000.0 1.0 0.0 -de 06_coal 1 106 2030 500.0 1.0 0.0 -de 07_gas 1 106 2030 0.0 0.0 0.0 -de 08_non-res 1 106 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 106 2030 0.0 0.0 0.0 -de 01_solar 1 107 2030 2000.0 1.0 0.0 -de 02_wind_on 1 107 2030 2000.0 1.0 0.0 -de 03_wind_off 1 107 2030 2000.0 1.0 0.0 -de 04_res 1 107 2030 2000.0 1.0 0.0 -de 05_nuclear 1 107 2030 2000.0 1.0 0.0 -de 06_coal 1 107 2030 600.0 1.0 0.0 -de 07_gas 1 107 2030 0.0 0.0 0.0 -de 08_non-res 1 107 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 107 2030 0.0 0.0 0.0 -de 01_solar 1 108 2030 2000.0 1.0 0.0 -de 02_wind_on 1 108 2030 2000.0 1.0 0.0 -de 03_wind_off 1 108 2030 2000.0 1.0 0.0 -de 04_res 1 108 2030 2000.0 1.0 0.0 -de 05_nuclear 1 108 2030 2000.0 1.0 0.0 -de 06_coal 1 108 2030 700.0 1.0 0.0 -de 07_gas 1 108 2030 0.0 0.0 0.0 -de 08_non-res 1 108 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 108 2030 0.0 0.0 0.0 -de 01_solar 1 109 2030 2000.0 1.0 0.0 -de 02_wind_on 1 109 2030 2000.0 1.0 0.0 -de 03_wind_off 1 109 2030 2000.0 1.0 0.0 -de 04_res 1 109 2030 2000.0 1.0 0.0 -de 05_nuclear 1 109 2030 2000.0 1.0 0.0 -de 06_coal 1 109 2030 800.0 1.0 0.0 -de 07_gas 1 109 2030 0.0 0.0 0.0 -de 08_non-res 1 109 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 109 2030 0.0 0.0 0.0 -de 01_solar 1 110 2030 2000.0 1.0 0.0 -de 02_wind_on 1 110 2030 2000.0 1.0 0.0 -de 03_wind_off 1 110 2030 2000.0 1.0 0.0 -de 04_res 1 110 2030 2000.0 1.0 0.0 -de 05_nuclear 1 110 2030 2000.0 1.0 0.0 -de 06_coal 1 110 2030 900.0 1.0 0.0 -de 07_gas 1 110 2030 0.0 0.0 0.0 -de 08_non-res 1 110 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 110 2030 0.0 0.0 0.0 -de 01_solar 1 111 2030 2000.0 1.0 0.0 -de 02_wind_on 1 111 2030 2000.0 1.0 0.0 -de 03_wind_off 1 111 2030 2000.0 1.0 0.0 -de 04_res 1 111 2030 2000.0 1.0 0.0 -de 05_nuclear 1 111 2030 2000.0 1.0 0.0 -de 06_coal 1 111 2030 1000.0 1.0 0.0 -de 07_gas 1 111 2030 0.0 0.0 0.0 -de 08_non-res 1 111 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 111 2030 0.0 0.0 0.0 -de 01_solar 1 112 2030 2000.0 1.0 0.0 -de 02_wind_on 1 112 2030 2000.0 1.0 0.0 -de 03_wind_off 1 112 2030 2000.0 1.0 0.0 -de 04_res 1 112 2030 2000.0 1.0 0.0 -de 05_nuclear 1 112 2030 2000.0 1.0 0.0 -de 06_coal 1 112 2030 1100.0 1.0 0.0 -de 07_gas 1 112 2030 0.0 0.0 0.0 -de 08_non-res 1 112 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 112 2030 0.0 0.0 0.0 -de 01_solar 1 113 2030 2000.0 1.0 0.0 -de 02_wind_on 1 113 2030 2000.0 1.0 0.0 -de 03_wind_off 1 113 2030 2000.0 1.0 0.0 -de 04_res 1 113 2030 2000.0 1.0 0.0 -de 05_nuclear 1 113 2030 2000.0 1.0 0.0 -de 06_coal 1 113 2030 1200.0 1.0 0.0 -de 07_gas 1 113 2030 0.0 0.0 0.0 -de 08_non-res 1 113 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 113 2030 0.0 0.0 0.0 -de 01_solar 1 114 2030 2000.0 1.0 0.0 -de 02_wind_on 1 114 2030 2000.0 1.0 0.0 -de 03_wind_off 1 114 2030 2000.0 1.0 0.0 -de 04_res 1 114 2030 2000.0 1.0 0.0 -de 05_nuclear 1 114 2030 2000.0 1.0 0.0 -de 06_coal 1 114 2030 1300.0 1.0 0.0 -de 07_gas 1 114 2030 0.0 0.0 0.0 -de 08_non-res 1 114 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 114 2030 0.0 0.0 0.0 -de 01_solar 1 115 2030 2000.0 1.0 0.0 -de 02_wind_on 1 115 2030 2000.0 1.0 0.0 -de 03_wind_off 1 115 2030 2000.0 1.0 0.0 -de 04_res 1 115 2030 2000.0 1.0 0.0 -de 05_nuclear 1 115 2030 2000.0 1.0 0.0 -de 06_coal 1 115 2030 1400.0 1.0 0.0 -de 07_gas 1 115 2030 0.0 0.0 0.0 -de 08_non-res 1 115 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 115 2030 0.0 0.0 0.0 -de 01_solar 1 116 2030 2000.0 1.0 0.0 -de 02_wind_on 1 116 2030 2000.0 1.0 0.0 -de 03_wind_off 1 116 2030 2000.0 1.0 0.0 -de 04_res 1 116 2030 2000.0 1.0 0.0 -de 05_nuclear 1 116 2030 2000.0 1.0 0.0 -de 06_coal 1 116 2030 1500.0 1.0 0.0 -de 07_gas 1 116 2030 0.0 0.0 0.0 -de 08_non-res 1 116 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 116 2030 0.0 0.0 0.0 -de 01_solar 1 117 2030 2000.0 1.0 0.0 -de 02_wind_on 1 117 2030 2000.0 1.0 0.0 -de 03_wind_off 1 117 2030 2000.0 1.0 0.0 -de 04_res 1 117 2030 2000.0 1.0 0.0 -de 05_nuclear 1 117 2030 2000.0 1.0 0.0 -de 06_coal 1 117 2030 1600.0 1.0 0.0 -de 07_gas 1 117 2030 0.0 0.0 0.0 -de 08_non-res 1 117 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 117 2030 0.0 0.0 0.0 -de 01_solar 1 118 2030 2000.0 1.0 0.0 -de 02_wind_on 1 118 2030 2000.0 1.0 0.0 -de 03_wind_off 1 118 2030 2000.0 1.0 0.0 -de 04_res 1 118 2030 2000.0 1.0 0.0 -de 05_nuclear 1 118 2030 2000.0 1.0 0.0 -de 06_coal 1 118 2030 1700.0 1.0 0.0 -de 07_gas 1 118 2030 0.0 0.0 0.0 -de 08_non-res 1 118 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 118 2030 0.0 0.0 0.0 -de 01_solar 1 119 2030 2000.0 1.0 0.0 -de 02_wind_on 1 119 2030 2000.0 1.0 0.0 -de 03_wind_off 1 119 2030 2000.0 1.0 0.0 -de 04_res 1 119 2030 2000.0 1.0 0.0 -de 05_nuclear 1 119 2030 2000.0 1.0 0.0 -de 06_coal 1 119 2030 1800.0 1.0 0.0 -de 07_gas 1 119 2030 0.0 0.0 0.0 -de 08_non-res 1 119 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 119 2030 0.0 0.0 0.0 -de 01_solar 1 120 2030 2000.0 1.0 0.0 -de 02_wind_on 1 120 2030 2000.0 1.0 0.0 -de 03_wind_off 1 120 2030 2000.0 1.0 0.0 -de 04_res 1 120 2030 2000.0 1.0 0.0 -de 05_nuclear 1 120 2030 2000.0 1.0 0.0 -de 06_coal 1 120 2030 1900.0 1.0 0.0 -de 07_gas 1 120 2030 0.0 0.0 0.0 -de 08_non-res 1 120 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 120 2030 0.0 0.0 0.0 -de 01_solar 1 121 2030 2000.0 1.0 0.0 -de 02_wind_on 1 121 2030 2000.0 1.0 0.0 -de 03_wind_off 1 121 2030 2000.0 1.0 0.0 -de 04_res 1 121 2030 2000.0 1.0 0.0 -de 05_nuclear 1 121 2030 2000.0 1.0 0.0 -de 06_coal 1 121 2030 2000.0 1.0 0.0 -de 07_gas 1 121 2030 0.0 0.0 0.0 -de 08_non-res 1 121 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 121 2030 0.0 0.0 0.0 -de 01_solar 1 122 2030 2000.0 1.0 0.0 -de 02_wind_on 1 122 2030 2000.0 1.0 0.0 -de 03_wind_off 1 122 2030 2000.0 1.0 0.0 -de 04_res 1 122 2030 2000.0 1.0 0.0 -de 05_nuclear 1 122 2030 2000.0 1.0 0.0 -de 06_coal 1 122 2030 2000.0 1.0 0.0 -de 07_gas 1 122 2030 100.0 1.0 0.0 -de 08_non-res 1 122 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 122 2030 0.0 0.0 0.0 -de 01_solar 1 123 2030 2000.0 1.0 0.0 -de 02_wind_on 1 123 2030 2000.0 1.0 0.0 -de 03_wind_off 1 123 2030 2000.0 1.0 0.0 -de 04_res 1 123 2030 2000.0 1.0 0.0 -de 05_nuclear 1 123 2030 2000.0 1.0 0.0 -de 06_coal 1 123 2030 2000.0 1.0 0.0 -de 07_gas 1 123 2030 200.0 1.0 0.0 -de 08_non-res 1 123 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 123 2030 0.0 0.0 0.0 -de 01_solar 1 124 2030 2000.0 1.0 0.0 -de 02_wind_on 1 124 2030 2000.0 1.0 0.0 -de 03_wind_off 1 124 2030 2000.0 1.0 0.0 -de 04_res 1 124 2030 2000.0 1.0 0.0 -de 05_nuclear 1 124 2030 2000.0 1.0 0.0 -de 06_coal 1 124 2030 2000.0 1.0 0.0 -de 07_gas 1 124 2030 300.0 1.0 0.0 -de 08_non-res 1 124 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 124 2030 0.0 0.0 0.0 -de 01_solar 1 125 2030 2000.0 1.0 0.0 -de 02_wind_on 1 125 2030 2000.0 1.0 0.0 -de 03_wind_off 1 125 2030 2000.0 1.0 0.0 -de 04_res 1 125 2030 2000.0 1.0 0.0 -de 05_nuclear 1 125 2030 2000.0 1.0 0.0 -de 06_coal 1 125 2030 2000.0 1.0 0.0 -de 07_gas 1 125 2030 400.0 1.0 0.0 -de 08_non-res 1 125 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 125 2030 0.0 0.0 0.0 -de 01_solar 1 126 2030 2000.0 1.0 0.0 -de 02_wind_on 1 126 2030 2000.0 1.0 0.0 -de 03_wind_off 1 126 2030 2000.0 1.0 0.0 -de 04_res 1 126 2030 2000.0 1.0 0.0 -de 05_nuclear 1 126 2030 2000.0 1.0 0.0 -de 06_coal 1 126 2030 2000.0 1.0 0.0 -de 07_gas 1 126 2030 500.0 1.0 0.0 -de 08_non-res 1 126 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 126 2030 0.0 0.0 0.0 -de 01_solar 1 127 2030 2000.0 1.0 0.0 -de 02_wind_on 1 127 2030 2000.0 1.0 0.0 -de 03_wind_off 1 127 2030 2000.0 1.0 0.0 -de 04_res 1 127 2030 2000.0 1.0 0.0 -de 05_nuclear 1 127 2030 2000.0 1.0 0.0 -de 06_coal 1 127 2030 2000.0 1.0 0.0 -de 07_gas 1 127 2030 600.0 1.0 0.0 -de 08_non-res 1 127 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 127 2030 0.0 0.0 0.0 -de 01_solar 1 128 2030 2000.0 1.0 0.0 -de 02_wind_on 1 128 2030 2000.0 1.0 0.0 -de 03_wind_off 1 128 2030 2000.0 1.0 0.0 -de 04_res 1 128 2030 2000.0 1.0 0.0 -de 05_nuclear 1 128 2030 2000.0 1.0 0.0 -de 06_coal 1 128 2030 2000.0 1.0 0.0 -de 07_gas 1 128 2030 700.0 1.0 0.0 -de 08_non-res 1 128 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 128 2030 0.0 0.0 0.0 -de 01_solar 1 129 2030 2000.0 1.0 0.0 -de 02_wind_on 1 129 2030 2000.0 1.0 0.0 -de 03_wind_off 1 129 2030 2000.0 1.0 0.0 -de 04_res 1 129 2030 2000.0 1.0 0.0 -de 05_nuclear 1 129 2030 2000.0 1.0 0.0 -de 06_coal 1 129 2030 2000.0 1.0 0.0 -de 07_gas 1 129 2030 800.0 1.0 0.0 -de 08_non-res 1 129 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 129 2030 0.0 0.0 0.0 -de 01_solar 1 130 2030 2000.0 1.0 0.0 -de 02_wind_on 1 130 2030 2000.0 1.0 0.0 -de 03_wind_off 1 130 2030 2000.0 1.0 0.0 -de 04_res 1 130 2030 2000.0 1.0 0.0 -de 05_nuclear 1 130 2030 2000.0 1.0 0.0 -de 06_coal 1 130 2030 2000.0 1.0 0.0 -de 07_gas 1 130 2030 900.0 1.0 0.0 -de 08_non-res 1 130 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 130 2030 0.0 0.0 0.0 -de 01_solar 1 131 2030 2000.0 1.0 0.0 -de 02_wind_on 1 131 2030 2000.0 1.0 0.0 -de 03_wind_off 1 131 2030 2000.0 1.0 0.0 -de 04_res 1 131 2030 2000.0 1.0 0.0 -de 05_nuclear 1 131 2030 2000.0 1.0 0.0 -de 06_coal 1 131 2030 2000.0 1.0 0.0 -de 07_gas 1 131 2030 1000.0 1.0 0.0 -de 08_non-res 1 131 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 131 2030 0.0 0.0 0.0 -de 01_solar 1 132 2030 2000.0 1.0 0.0 -de 02_wind_on 1 132 2030 2000.0 1.0 0.0 -de 03_wind_off 1 132 2030 2000.0 1.0 0.0 -de 04_res 1 132 2030 2000.0 1.0 0.0 -de 05_nuclear 1 132 2030 2000.0 1.0 0.0 -de 06_coal 1 132 2030 2000.0 1.0 0.0 -de 07_gas 1 132 2030 1100.0 1.0 0.0 -de 08_non-res 1 132 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 132 2030 0.0 0.0 0.0 -de 01_solar 1 133 2030 2000.0 1.0 0.0 -de 02_wind_on 1 133 2030 2000.0 1.0 0.0 -de 03_wind_off 1 133 2030 2000.0 1.0 0.0 -de 04_res 1 133 2030 2000.0 1.0 0.0 -de 05_nuclear 1 133 2030 2000.0 1.0 0.0 -de 06_coal 1 133 2030 2000.0 1.0 0.0 -de 07_gas 1 133 2030 1200.0 1.0 0.0 -de 08_non-res 1 133 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 133 2030 0.0 0.0 0.0 -de 01_solar 1 134 2030 2000.0 1.0 0.0 -de 02_wind_on 1 134 2030 2000.0 1.0 0.0 -de 03_wind_off 1 134 2030 2000.0 1.0 0.0 -de 04_res 1 134 2030 2000.0 1.0 0.0 -de 05_nuclear 1 134 2030 2000.0 1.0 0.0 -de 06_coal 1 134 2030 2000.0 1.0 0.0 -de 07_gas 1 134 2030 1300.0 1.0 0.0 -de 08_non-res 1 134 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 134 2030 0.0 0.0 0.0 -de 01_solar 1 135 2030 2000.0 1.0 0.0 -de 02_wind_on 1 135 2030 2000.0 1.0 0.0 -de 03_wind_off 1 135 2030 2000.0 1.0 0.0 -de 04_res 1 135 2030 2000.0 1.0 0.0 -de 05_nuclear 1 135 2030 2000.0 1.0 0.0 -de 06_coal 1 135 2030 2000.0 1.0 0.0 -de 07_gas 1 135 2030 1400.0 1.0 0.0 -de 08_non-res 1 135 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 135 2030 0.0 0.0 0.0 -de 01_solar 1 136 2030 2000.0 1.0 0.0 -de 02_wind_on 1 136 2030 2000.0 1.0 0.0 -de 03_wind_off 1 136 2030 2000.0 1.0 0.0 -de 04_res 1 136 2030 2000.0 1.0 0.0 -de 05_nuclear 1 136 2030 2000.0 1.0 0.0 -de 06_coal 1 136 2030 2000.0 1.0 0.0 -de 07_gas 1 136 2030 1500.0 1.0 0.0 -de 08_non-res 1 136 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 136 2030 0.0 0.0 0.0 -de 01_solar 1 137 2030 2000.0 1.0 0.0 -de 02_wind_on 1 137 2030 2000.0 1.0 0.0 -de 03_wind_off 1 137 2030 2000.0 1.0 0.0 -de 04_res 1 137 2030 2000.0 1.0 0.0 -de 05_nuclear 1 137 2030 2000.0 1.0 0.0 -de 06_coal 1 137 2030 2000.0 1.0 0.0 -de 07_gas 1 137 2030 1600.0 1.0 0.0 -de 08_non-res 1 137 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 137 2030 0.0 0.0 0.0 -de 01_solar 1 138 2030 2000.0 1.0 0.0 -de 02_wind_on 1 138 2030 2000.0 1.0 0.0 -de 03_wind_off 1 138 2030 2000.0 1.0 0.0 -de 04_res 1 138 2030 2000.0 1.0 0.0 -de 05_nuclear 1 138 2030 2000.0 1.0 0.0 -de 06_coal 1 138 2030 2000.0 1.0 0.0 -de 07_gas 1 138 2030 1700.0 1.0 0.0 -de 08_non-res 1 138 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 138 2030 0.0 0.0 0.0 -de 01_solar 1 139 2030 2000.0 1.0 0.0 -de 02_wind_on 1 139 2030 2000.0 1.0 0.0 -de 03_wind_off 1 139 2030 2000.0 1.0 0.0 -de 04_res 1 139 2030 2000.0 1.0 0.0 -de 05_nuclear 1 139 2030 2000.0 1.0 0.0 -de 06_coal 1 139 2030 2000.0 1.0 0.0 -de 07_gas 1 139 2030 1800.0 1.0 0.0 -de 08_non-res 1 139 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 139 2030 0.0 0.0 0.0 -de 01_solar 1 140 2030 2000.0 1.0 0.0 -de 02_wind_on 1 140 2030 2000.0 1.0 0.0 -de 03_wind_off 1 140 2030 2000.0 1.0 0.0 -de 04_res 1 140 2030 2000.0 1.0 0.0 -de 05_nuclear 1 140 2030 2000.0 1.0 0.0 -de 06_coal 1 140 2030 2000.0 1.0 0.0 -de 07_gas 1 140 2030 1900.0 1.0 0.0 -de 08_non-res 1 140 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 140 2030 0.0 0.0 0.0 -de 01_solar 1 141 2030 2000.0 1.0 0.0 -de 02_wind_on 1 141 2030 2000.0 1.0 0.0 -de 03_wind_off 1 141 2030 2000.0 1.0 0.0 -de 04_res 1 141 2030 2000.0 1.0 0.0 -de 05_nuclear 1 141 2030 2000.0 1.0 0.0 -de 06_coal 1 141 2030 2000.0 1.0 0.0 -de 07_gas 1 141 2030 2000.0 1.0 0.0 -de 08_non-res 1 141 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 141 2030 0.0 0.0 0.0 -de 01_solar 1 142 2030 2000.0 1.0 0.0 -de 02_wind_on 1 142 2030 2000.0 1.0 0.0 -de 03_wind_off 1 142 2030 2000.0 1.0 0.0 -de 04_res 1 142 2030 2000.0 1.0 0.0 -de 05_nuclear 1 142 2030 2000.0 1.0 0.0 -de 06_coal 1 142 2030 2000.0 1.0 0.0 -de 07_gas 1 142 2030 2000.0 1.0 0.0 -de 08_non-res 1 142 2030 100.0 1.0 0.0 -de 09_hydro_pump 1 142 2030 0.0 0.0 0.0 -de 01_solar 1 143 2030 2000.0 1.0 0.0 -de 02_wind_on 1 143 2030 2000.0 1.0 0.0 -de 03_wind_off 1 143 2030 2000.0 1.0 0.0 -de 04_res 1 143 2030 2000.0 1.0 0.0 -de 05_nuclear 1 143 2030 2000.0 1.0 0.0 -de 06_coal 1 143 2030 2000.0 1.0 0.0 -de 07_gas 1 143 2030 2000.0 1.0 0.0 -de 08_non-res 1 143 2030 200.0 1.0 0.0 -de 09_hydro_pump 1 143 2030 0.0 0.0 0.0 -de 01_solar 1 144 2030 2000.0 1.0 0.0 -de 02_wind_on 1 144 2030 2000.0 1.0 0.0 -de 03_wind_off 1 144 2030 2000.0 1.0 0.0 -de 04_res 1 144 2030 2000.0 1.0 0.0 -de 05_nuclear 1 144 2030 2000.0 1.0 0.0 -de 06_coal 1 144 2030 2000.0 1.0 0.0 -de 07_gas 1 144 2030 2000.0 1.0 0.0 -de 08_non-res 1 144 2030 300.0 1.0 0.0 -de 09_hydro_pump 1 144 2030 0.0 0.0 0.0 -de 01_solar 1 145 2030 2000.0 1.0 0.0 -de 02_wind_on 1 145 2030 2000.0 1.0 0.0 -de 03_wind_off 1 145 2030 2000.0 1.0 0.0 -de 04_res 1 145 2030 2000.0 1.0 0.0 -de 05_nuclear 1 145 2030 2000.0 1.0 0.0 -de 06_coal 1 145 2030 2000.0 1.0 0.0 -de 07_gas 1 145 2030 2000.0 1.0 0.0 -de 08_non-res 1 145 2030 400.0 1.0 0.0 -de 09_hydro_pump 1 145 2030 0.0 0.0 0.0 -de 01_solar 1 146 2030 2000.0 1.0 0.0 -de 02_wind_on 1 146 2030 2000.0 1.0 0.0 -de 03_wind_off 1 146 2030 2000.0 1.0 0.0 -de 04_res 1 146 2030 2000.0 1.0 0.0 -de 05_nuclear 1 146 2030 2000.0 1.0 0.0 -de 06_coal 1 146 2030 2000.0 1.0 0.0 -de 07_gas 1 146 2030 2000.0 1.0 0.0 -de 08_non-res 1 146 2030 500.0 1.0 0.0 -de 09_hydro_pump 1 146 2030 0.0 0.0 0.0 -de 01_solar 1 147 2030 2000.0 1.0 0.0 -de 02_wind_on 1 147 2030 2000.0 1.0 0.0 -de 03_wind_off 1 147 2030 2000.0 1.0 0.0 -de 04_res 1 147 2030 2000.0 1.0 0.0 -de 05_nuclear 1 147 2030 2000.0 1.0 0.0 -de 06_coal 1 147 2030 2000.0 1.0 0.0 -de 07_gas 1 147 2030 2000.0 1.0 0.0 -de 08_non-res 1 147 2030 600.0 1.0 0.0 -de 09_hydro_pump 1 147 2030 0.0 0.0 0.0 -de 01_solar 1 148 2030 2000.0 1.0 0.0 -de 02_wind_on 1 148 2030 2000.0 1.0 0.0 -de 03_wind_off 1 148 2030 2000.0 1.0 0.0 -de 04_res 1 148 2030 2000.0 1.0 0.0 -de 05_nuclear 1 148 2030 2000.0 1.0 0.0 -de 06_coal 1 148 2030 2000.0 1.0 0.0 -de 07_gas 1 148 2030 2000.0 1.0 0.0 -de 08_non-res 1 148 2030 700.0 1.0 0.0 -de 09_hydro_pump 1 148 2030 0.0 0.0 0.0 -de 01_solar 1 149 2030 2000.0 1.0 0.0 -de 02_wind_on 1 149 2030 2000.0 1.0 0.0 -de 03_wind_off 1 149 2030 2000.0 1.0 0.0 -de 04_res 1 149 2030 2000.0 1.0 0.0 -de 05_nuclear 1 149 2030 2000.0 1.0 0.0 -de 06_coal 1 149 2030 2000.0 1.0 0.0 -de 07_gas 1 149 2030 2000.0 1.0 0.0 -de 08_non-res 1 149 2030 800.0 1.0 0.0 -de 09_hydro_pump 1 149 2030 0.0 0.0 0.0 -de 01_solar 1 150 2030 2000.0 1.0 0.0 -de 02_wind_on 1 150 2030 2000.0 1.0 0.0 -de 03_wind_off 1 150 2030 2000.0 1.0 0.0 -de 04_res 1 150 2030 2000.0 1.0 0.0 -de 05_nuclear 1 150 2030 2000.0 1.0 0.0 -de 06_coal 1 150 2030 2000.0 1.0 0.0 -de 07_gas 1 150 2030 2000.0 1.0 0.0 -de 08_non-res 1 150 2030 900.0 1.0 0.0 -de 09_hydro_pump 1 150 2030 0.0 0.0 0.0 -de 01_solar 1 151 2030 2000.0 1.0 0.0 -de 02_wind_on 1 151 2030 2000.0 1.0 0.0 -de 03_wind_off 1 151 2030 2000.0 1.0 0.0 -de 04_res 1 151 2030 2000.0 1.0 0.0 -de 05_nuclear 1 151 2030 2000.0 1.0 0.0 -de 06_coal 1 151 2030 2000.0 1.0 0.0 -de 07_gas 1 151 2030 2000.0 1.0 0.0 -de 08_non-res 1 151 2030 1000.0 1.0 0.0 -de 09_hydro_pump 1 151 2030 0.0 0.0 0.0 -de 01_solar 1 152 2030 2000.0 1.0 0.0 -de 02_wind_on 1 152 2030 2000.0 1.0 0.0 -de 03_wind_off 1 152 2030 2000.0 1.0 0.0 -de 04_res 1 152 2030 2000.0 1.0 0.0 -de 05_nuclear 1 152 2030 2000.0 1.0 0.0 -de 06_coal 1 152 2030 2000.0 1.0 0.0 -de 07_gas 1 152 2030 2000.0 1.0 0.0 -de 08_non-res 1 152 2030 1100.0 1.0 0.0 -de 09_hydro_pump 1 152 2030 0.0 0.0 0.0 -de 01_solar 1 153 2030 2000.0 1.0 0.0 -de 02_wind_on 1 153 2030 2000.0 1.0 0.0 -de 03_wind_off 1 153 2030 2000.0 1.0 0.0 -de 04_res 1 153 2030 2000.0 1.0 0.0 -de 05_nuclear 1 153 2030 2000.0 1.0 0.0 -de 06_coal 1 153 2030 2000.0 1.0 0.0 -de 07_gas 1 153 2030 2000.0 1.0 0.0 -de 08_non-res 1 153 2030 1200.0 1.0 0.0 -de 09_hydro_pump 1 153 2030 0.0 0.0 0.0 -de 01_solar 1 154 2030 2000.0 1.0 0.0 -de 02_wind_on 1 154 2030 2000.0 1.0 0.0 -de 03_wind_off 1 154 2030 2000.0 1.0 0.0 -de 04_res 1 154 2030 2000.0 1.0 0.0 -de 05_nuclear 1 154 2030 2000.0 1.0 0.0 -de 06_coal 1 154 2030 2000.0 1.0 0.0 -de 07_gas 1 154 2030 2000.0 1.0 0.0 -de 08_non-res 1 154 2030 1300.0 1.0 0.0 -de 09_hydro_pump 1 154 2030 0.0 0.0 0.0 -de 01_solar 1 155 2030 2000.0 1.0 0.0 -de 02_wind_on 1 155 2030 2000.0 1.0 0.0 -de 03_wind_off 1 155 2030 2000.0 1.0 0.0 -de 04_res 1 155 2030 2000.0 1.0 0.0 -de 05_nuclear 1 155 2030 2000.0 1.0 0.0 -de 06_coal 1 155 2030 2000.0 1.0 0.0 -de 07_gas 1 155 2030 2000.0 1.0 0.0 -de 08_non-res 1 155 2030 1400.0 1.0 0.0 -de 09_hydro_pump 1 155 2030 0.0 0.0 0.0 -de 01_solar 1 156 2030 2000.0 1.0 0.0 -de 02_wind_on 1 156 2030 2000.0 1.0 0.0 -de 03_wind_off 1 156 2030 2000.0 1.0 0.0 -de 04_res 1 156 2030 2000.0 1.0 0.0 -de 05_nuclear 1 156 2030 2000.0 1.0 0.0 -de 06_coal 1 156 2030 2000.0 1.0 0.0 -de 07_gas 1 156 2030 2000.0 1.0 0.0 -de 08_non-res 1 156 2030 1500.0 1.0 0.0 -de 09_hydro_pump 1 156 2030 0.0 0.0 0.0 -de 01_solar 1 157 2030 2000.0 1.0 0.0 -de 02_wind_on 1 157 2030 2000.0 1.0 0.0 -de 03_wind_off 1 157 2030 2000.0 1.0 0.0 -de 04_res 1 157 2030 2000.0 1.0 0.0 -de 05_nuclear 1 157 2030 2000.0 1.0 0.0 -de 06_coal 1 157 2030 2000.0 1.0 0.0 -de 07_gas 1 157 2030 2000.0 1.0 0.0 -de 08_non-res 1 157 2030 1600.0 1.0 0.0 -de 09_hydro_pump 1 157 2030 0.0 0.0 0.0 -de 01_solar 1 158 2030 2000.0 1.0 0.0 -de 02_wind_on 1 158 2030 2000.0 1.0 0.0 -de 03_wind_off 1 158 2030 2000.0 1.0 0.0 -de 04_res 1 158 2030 2000.0 1.0 0.0 -de 05_nuclear 1 158 2030 2000.0 1.0 0.0 -de 06_coal 1 158 2030 2000.0 1.0 0.0 -de 07_gas 1 158 2030 2000.0 1.0 0.0 -de 08_non-res 1 158 2030 1700.0 1.0 0.0 -de 09_hydro_pump 1 158 2030 0.0 0.0 0.0 -de 01_solar 1 159 2030 2000.0 1.0 0.0 -de 02_wind_on 1 159 2030 2000.0 1.0 0.0 -de 03_wind_off 1 159 2030 2000.0 1.0 0.0 -de 04_res 1 159 2030 2000.0 1.0 0.0 -de 05_nuclear 1 159 2030 2000.0 1.0 0.0 -de 06_coal 1 159 2030 2000.0 1.0 0.0 -de 07_gas 1 159 2030 2000.0 1.0 0.0 -de 08_non-res 1 159 2030 1800.0 1.0 0.0 -de 09_hydro_pump 1 159 2030 0.0 0.0 0.0 -de 01_solar 1 160 2030 2000.0 1.0 0.0 -de 02_wind_on 1 160 2030 2000.0 1.0 0.0 -de 03_wind_off 1 160 2030 2000.0 1.0 0.0 -de 04_res 1 160 2030 2000.0 1.0 0.0 -de 05_nuclear 1 160 2030 2000.0 1.0 0.0 -de 06_coal 1 160 2030 2000.0 1.0 0.0 -de 07_gas 1 160 2030 2000.0 1.0 0.0 -de 08_non-res 1 160 2030 1900.0 1.0 0.0 -de 09_hydro_pump 1 160 2030 0.0 0.0 0.0 -de 01_solar 1 161 2030 2000.0 1.0 0.0 -de 02_wind_on 1 161 2030 2000.0 1.0 0.0 -de 03_wind_off 1 161 2030 2000.0 1.0 0.0 -de 04_res 1 161 2030 2000.0 1.0 0.0 -de 05_nuclear 1 161 2030 2000.0 1.0 0.0 -de 06_coal 1 161 2030 2000.0 1.0 0.0 -de 07_gas 1 161 2030 2000.0 1.0 0.0 -de 08_non-res 1 161 2030 2000.0 1.0 0.0 -de 09_hydro_pump 1 161 2030 0.0 0.0 0.0 -de 01_solar 1 162 2030 2000.0 1.0 0.0 -de 02_wind_on 1 162 2030 2000.0 1.0 0.0 -de 03_wind_off 1 162 2030 2000.0 1.0 0.0 -de 04_res 1 162 2030 2000.0 1.0 0.0 -de 05_nuclear 1 162 2030 2000.0 1.0 0.0 -de 06_coal 1 162 2030 2000.0 1.0 0.0 -de 07_gas 1 162 2030 2000.0 1.0 0.0 -de 08_non-res 1 162 2030 2000.0 1.0 0.0 -de 09_hydro_pump 1 162 2030 100.0 1.0 0.0 -de 01_solar 1 163 2030 2000.0 1.0 0.0 -de 02_wind_on 1 163 2030 2000.0 1.0 0.0 -de 03_wind_off 1 163 2030 2000.0 1.0 0.0 -de 04_res 1 163 2030 2000.0 1.0 0.0 -de 05_nuclear 1 163 2030 2000.0 1.0 0.0 -de 06_coal 1 163 2030 2000.0 1.0 0.0 -de 07_gas 1 163 2030 2000.0 1.0 0.0 -de 08_non-res 1 163 2030 2000.0 1.0 0.0 -de 09_hydro_pump 1 163 2030 200.0 1.0 0.0 -de 01_solar 1 164 2030 2000.0 1.0 0.0 -de 02_wind_on 1 164 2030 2000.0 1.0 0.0 -de 03_wind_off 1 164 2030 2000.0 1.0 0.0 -de 04_res 1 164 2030 2000.0 1.0 0.0 -de 05_nuclear 1 164 2030 2000.0 1.0 0.0 -de 06_coal 1 164 2030 2000.0 1.0 0.0 -de 07_gas 1 164 2030 2000.0 1.0 0.0 -de 08_non-res 1 164 2030 2000.0 1.0 0.0 -de 09_hydro_pump 1 164 2030 300.0 1.0 0.0 -de 01_solar 1 165 2030 2000.0 1.0 0.0 -de 02_wind_on 1 165 2030 2000.0 1.0 0.0 -de 03_wind_off 1 165 2030 2000.0 1.0 0.0 -de 04_res 1 165 2030 2000.0 1.0 0.0 -de 05_nuclear 1 165 2030 2000.0 1.0 0.0 -de 06_coal 1 165 2030 2000.0 1.0 0.0 -de 07_gas 1 165 2030 2000.0 1.0 0.0 -de 08_non-res 1 165 2030 2000.0 1.0 0.0 -de 09_hydro_pump 1 165 2030 400.0 1.0 0.0 -de 01_solar 1 166 2030 2000.0 1.0 0.0 -de 02_wind_on 1 166 2030 2000.0 1.0 0.0 -de 03_wind_off 1 166 2030 2000.0 1.0 0.0 -de 04_res 1 166 2030 2000.0 1.0 0.0 -de 05_nuclear 1 166 2030 2000.0 1.0 0.0 -de 06_coal 1 166 2030 2000.0 1.0 0.0 -de 07_gas 1 166 2030 2000.0 1.0 0.0 -de 08_non-res 1 166 2030 2000.0 1.0 0.0 -de 09_hydro_pump 1 166 2030 500.0 1.0 0.0 -de 01_solar 1 167 2030 2000.0 1.0 0.0 -de 02_wind_on 1 167 2030 2000.0 1.0 0.0 -de 03_wind_off 1 167 2030 2000.0 1.0 0.0 -de 04_res 1 167 2030 2000.0 1.0 0.0 -de 05_nuclear 1 167 2030 2000.0 1.0 0.0 -de 06_coal 1 167 2030 2000.0 1.0 0.0 -de 07_gas 1 167 2030 2000.0 1.0 0.0 -de 08_non-res 1 167 2030 2000.0 1.0 0.0 -de 09_hydro_pump 1 167 2030 600.0 1.0 0.0 -de 01_solar 1 168 2030 2000.0 1.0 0.0 -de 02_wind_on 1 168 2030 2000.0 1.0 0.0 -de 03_wind_off 1 168 2030 2000.0 1.0 0.0 -de 04_res 1 168 2030 2000.0 1.0 0.0 -de 05_nuclear 1 168 2030 2000.0 1.0 0.0 -de 06_coal 1 168 2030 2000.0 1.0 0.0 -de 07_gas 1 168 2030 2000.0 1.0 0.0 -de 08_non-res 1 168 2030 2000.0 1.0 0.0 -de 09_hydro_pump 1 168 2030 700.0 1.0 0.0 -de 01_solar 1 169 2030 0.0 0.0 0.0 -de 02_wind_on 1 169 2030 0.0 0.0 0.0 -de 03_wind_off 1 169 2030 0.0 0.0 0.0 -de 04_res 1 169 2030 0.0 0.0 0.0 -de 05_nuclear 1 169 2030 0.0 0.0 0.0 -de 06_coal 1 169 2030 0.0 0.0 0.0 -de 07_gas 1 169 2030 0.0 0.0 0.0 -de 08_non-res 1 169 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 169 2030 0.0 0.0 0.0 -de 01_solar 1 170 2030 100.0 1.0 0.0 -de 02_wind_on 1 170 2030 0.0 0.0 0.0 -de 03_wind_off 1 170 2030 0.0 0.0 0.0 -de 04_res 1 170 2030 0.0 0.0 0.0 -de 05_nuclear 1 170 2030 0.0 0.0 0.0 -de 06_coal 1 170 2030 0.0 0.0 0.0 -de 07_gas 1 170 2030 0.0 0.0 0.0 -de 08_non-res 1 170 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 170 2030 0.0 0.0 0.0 -de 01_solar 1 171 2030 200.0 1.0 0.0 -de 02_wind_on 1 171 2030 0.0 0.0 0.0 -de 03_wind_off 1 171 2030 0.0 0.0 0.0 -de 04_res 1 171 2030 0.0 0.0 0.0 -de 05_nuclear 1 171 2030 0.0 0.0 0.0 -de 06_coal 1 171 2030 0.0 0.0 0.0 -de 07_gas 1 171 2030 0.0 0.0 0.0 -de 08_non-res 1 171 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 171 2030 0.0 0.0 0.0 -de 01_solar 1 172 2030 300.0 1.0 0.0 -de 02_wind_on 1 172 2030 0.0 0.0 0.0 -de 03_wind_off 1 172 2030 0.0 0.0 0.0 -de 04_res 1 172 2030 0.0 0.0 0.0 -de 05_nuclear 1 172 2030 0.0 0.0 0.0 -de 06_coal 1 172 2030 0.0 0.0 0.0 -de 07_gas 1 172 2030 0.0 0.0 0.0 -de 08_non-res 1 172 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 172 2030 0.0 0.0 0.0 -de 01_solar 1 173 2030 400.0 1.0 0.0 -de 02_wind_on 1 173 2030 0.0 0.0 0.0 -de 03_wind_off 1 173 2030 0.0 0.0 0.0 -de 04_res 1 173 2030 0.0 0.0 0.0 -de 05_nuclear 1 173 2030 0.0 0.0 0.0 -de 06_coal 1 173 2030 0.0 0.0 0.0 -de 07_gas 1 173 2030 0.0 0.0 0.0 -de 08_non-res 1 173 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 173 2030 0.0 0.0 0.0 -de 01_solar 1 174 2030 500.0 1.0 0.0 -de 02_wind_on 1 174 2030 0.0 0.0 0.0 -de 03_wind_off 1 174 2030 0.0 0.0 0.0 -de 04_res 1 174 2030 0.0 0.0 0.0 -de 05_nuclear 1 174 2030 0.0 0.0 0.0 -de 06_coal 1 174 2030 0.0 0.0 0.0 -de 07_gas 1 174 2030 0.0 0.0 0.0 -de 08_non-res 1 174 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 174 2030 0.0 0.0 0.0 -de 01_solar 1 175 2030 600.0 1.0 0.0 -de 02_wind_on 1 175 2030 0.0 0.0 0.0 -de 03_wind_off 1 175 2030 0.0 0.0 0.0 -de 04_res 1 175 2030 0.0 0.0 0.0 -de 05_nuclear 1 175 2030 0.0 0.0 0.0 -de 06_coal 1 175 2030 0.0 0.0 0.0 -de 07_gas 1 175 2030 0.0 0.0 0.0 -de 08_non-res 1 175 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 175 2030 0.0 0.0 0.0 -de 01_solar 1 176 2030 700.0 1.0 0.0 -de 02_wind_on 1 176 2030 0.0 0.0 0.0 -de 03_wind_off 1 176 2030 0.0 0.0 0.0 -de 04_res 1 176 2030 0.0 0.0 0.0 -de 05_nuclear 1 176 2030 0.0 0.0 0.0 -de 06_coal 1 176 2030 0.0 0.0 0.0 -de 07_gas 1 176 2030 0.0 0.0 0.0 -de 08_non-res 1 176 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 176 2030 0.0 0.0 0.0 -de 01_solar 1 177 2030 800.0 1.0 0.0 -de 02_wind_on 1 177 2030 0.0 0.0 0.0 -de 03_wind_off 1 177 2030 0.0 0.0 0.0 -de 04_res 1 177 2030 0.0 0.0 0.0 -de 05_nuclear 1 177 2030 0.0 0.0 0.0 -de 06_coal 1 177 2030 0.0 0.0 0.0 -de 07_gas 1 177 2030 0.0 0.0 0.0 -de 08_non-res 1 177 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 177 2030 0.0 0.0 0.0 -de 01_solar 1 178 2030 900.0 1.0 0.0 -de 02_wind_on 1 178 2030 0.0 0.0 0.0 -de 03_wind_off 1 178 2030 0.0 0.0 0.0 -de 04_res 1 178 2030 0.0 0.0 0.0 -de 05_nuclear 1 178 2030 0.0 0.0 0.0 -de 06_coal 1 178 2030 0.0 0.0 0.0 -de 07_gas 1 178 2030 0.0 0.0 0.0 -de 08_non-res 1 178 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 178 2030 0.0 0.0 0.0 -de 01_solar 1 179 2030 1000.0 1.0 0.0 -de 02_wind_on 1 179 2030 0.0 0.0 0.0 -de 03_wind_off 1 179 2030 0.0 0.0 0.0 -de 04_res 1 179 2030 0.0 0.0 0.0 -de 05_nuclear 1 179 2030 0.0 0.0 0.0 -de 06_coal 1 179 2030 0.0 0.0 0.0 -de 07_gas 1 179 2030 0.0 0.0 0.0 -de 08_non-res 1 179 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 179 2030 0.0 0.0 0.0 -de 01_solar 1 180 2030 1100.0 1.0 0.0 -de 02_wind_on 1 180 2030 0.0 0.0 0.0 -de 03_wind_off 1 180 2030 0.0 0.0 0.0 -de 04_res 1 180 2030 0.0 0.0 0.0 -de 05_nuclear 1 180 2030 0.0 0.0 0.0 -de 06_coal 1 180 2030 0.0 0.0 0.0 -de 07_gas 1 180 2030 0.0 0.0 0.0 -de 08_non-res 1 180 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 180 2030 0.0 0.0 0.0 -de 01_solar 1 181 2030 1200.0 1.0 0.0 -de 02_wind_on 1 181 2030 0.0 0.0 0.0 -de 03_wind_off 1 181 2030 0.0 0.0 0.0 -de 04_res 1 181 2030 0.0 0.0 0.0 -de 05_nuclear 1 181 2030 0.0 0.0 0.0 -de 06_coal 1 181 2030 0.0 0.0 0.0 -de 07_gas 1 181 2030 0.0 0.0 0.0 -de 08_non-res 1 181 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 181 2030 0.0 0.0 0.0 -de 01_solar 1 182 2030 1300.0 1.0 0.0 -de 02_wind_on 1 182 2030 0.0 0.0 0.0 -de 03_wind_off 1 182 2030 0.0 0.0 0.0 -de 04_res 1 182 2030 0.0 0.0 0.0 -de 05_nuclear 1 182 2030 0.0 0.0 0.0 -de 06_coal 1 182 2030 0.0 0.0 0.0 -de 07_gas 1 182 2030 0.0 0.0 0.0 -de 08_non-res 1 182 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 182 2030 0.0 0.0 0.0 -de 01_solar 1 183 2030 1400.0 1.0 0.0 -de 02_wind_on 1 183 2030 0.0 0.0 0.0 -de 03_wind_off 1 183 2030 0.0 0.0 0.0 -de 04_res 1 183 2030 0.0 0.0 0.0 -de 05_nuclear 1 183 2030 0.0 0.0 0.0 -de 06_coal 1 183 2030 0.0 0.0 0.0 -de 07_gas 1 183 2030 0.0 0.0 0.0 -de 08_non-res 1 183 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 183 2030 0.0 0.0 0.0 -de 01_solar 1 184 2030 1500.0 1.0 0.0 -de 02_wind_on 1 184 2030 0.0 0.0 0.0 -de 03_wind_off 1 184 2030 0.0 0.0 0.0 -de 04_res 1 184 2030 0.0 0.0 0.0 -de 05_nuclear 1 184 2030 0.0 0.0 0.0 -de 06_coal 1 184 2030 0.0 0.0 0.0 -de 07_gas 1 184 2030 0.0 0.0 0.0 -de 08_non-res 1 184 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 184 2030 0.0 0.0 0.0 -de 01_solar 1 185 2030 1600.0 1.0 0.0 -de 02_wind_on 1 185 2030 0.0 0.0 0.0 -de 03_wind_off 1 185 2030 0.0 0.0 0.0 -de 04_res 1 185 2030 0.0 0.0 0.0 -de 05_nuclear 1 185 2030 0.0 0.0 0.0 -de 06_coal 1 185 2030 0.0 0.0 0.0 -de 07_gas 1 185 2030 0.0 0.0 0.0 -de 08_non-res 1 185 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 185 2030 0.0 0.0 0.0 -de 01_solar 1 186 2030 1700.0 1.0 0.0 -de 02_wind_on 1 186 2030 0.0 0.0 0.0 -de 03_wind_off 1 186 2030 0.0 0.0 0.0 -de 04_res 1 186 2030 0.0 0.0 0.0 -de 05_nuclear 1 186 2030 0.0 0.0 0.0 -de 06_coal 1 186 2030 0.0 0.0 0.0 -de 07_gas 1 186 2030 0.0 0.0 0.0 -de 08_non-res 1 186 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 186 2030 0.0 0.0 0.0 -de 01_solar 1 187 2030 1800.0 1.0 0.0 -de 02_wind_on 1 187 2030 0.0 0.0 0.0 -de 03_wind_off 1 187 2030 0.0 0.0 0.0 -de 04_res 1 187 2030 0.0 0.0 0.0 -de 05_nuclear 1 187 2030 0.0 0.0 0.0 -de 06_coal 1 187 2030 0.0 0.0 0.0 -de 07_gas 1 187 2030 0.0 0.0 0.0 -de 08_non-res 1 187 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 187 2030 0.0 0.0 0.0 -de 01_solar 1 188 2030 1900.0 1.0 0.0 -de 02_wind_on 1 188 2030 0.0 0.0 0.0 -de 03_wind_off 1 188 2030 0.0 0.0 0.0 -de 04_res 1 188 2030 0.0 0.0 0.0 -de 05_nuclear 1 188 2030 0.0 0.0 0.0 -de 06_coal 1 188 2030 0.0 0.0 0.0 -de 07_gas 1 188 2030 0.0 0.0 0.0 -de 08_non-res 1 188 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 188 2030 0.0 0.0 0.0 -de 01_solar 1 189 2030 2000.0 1.0 0.0 -de 02_wind_on 1 189 2030 0.0 0.0 0.0 -de 03_wind_off 1 189 2030 0.0 0.0 0.0 -de 04_res 1 189 2030 0.0 0.0 0.0 -de 05_nuclear 1 189 2030 0.0 0.0 0.0 -de 06_coal 1 189 2030 0.0 0.0 0.0 -de 07_gas 1 189 2030 0.0 0.0 0.0 -de 08_non-res 1 189 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 189 2030 0.0 0.0 0.0 -de 01_solar 1 190 2030 2000.0 1.0 0.0 -de 02_wind_on 1 190 2030 100.0 1.0 0.0 -de 03_wind_off 1 190 2030 0.0 0.0 0.0 -de 04_res 1 190 2030 0.0 0.0 0.0 -de 05_nuclear 1 190 2030 0.0 0.0 0.0 -de 06_coal 1 190 2030 0.0 0.0 0.0 -de 07_gas 1 190 2030 0.0 0.0 0.0 -de 08_non-res 1 190 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 190 2030 0.0 0.0 0.0 -de 01_solar 1 191 2030 2000.0 1.0 0.0 -de 02_wind_on 1 191 2030 200.0 1.0 0.0 -de 03_wind_off 1 191 2030 0.0 0.0 0.0 -de 04_res 1 191 2030 0.0 0.0 0.0 -de 05_nuclear 1 191 2030 0.0 0.0 0.0 -de 06_coal 1 191 2030 0.0 0.0 0.0 -de 07_gas 1 191 2030 0.0 0.0 0.0 -de 08_non-res 1 191 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 191 2030 0.0 0.0 0.0 -de 01_solar 1 192 2030 2000.0 1.0 0.0 -de 02_wind_on 1 192 2030 300.0 1.0 0.0 -de 03_wind_off 1 192 2030 0.0 0.0 0.0 -de 04_res 1 192 2030 0.0 0.0 0.0 -de 05_nuclear 1 192 2030 0.0 0.0 0.0 -de 06_coal 1 192 2030 0.0 0.0 0.0 -de 07_gas 1 192 2030 0.0 0.0 0.0 -de 08_non-res 1 192 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 192 2030 0.0 0.0 0.0 -de 01_solar 1 193 2030 2000.0 1.0 0.0 -de 02_wind_on 1 193 2030 400.0 1.0 0.0 -de 03_wind_off 1 193 2030 0.0 0.0 0.0 -de 04_res 1 193 2030 0.0 0.0 0.0 -de 05_nuclear 1 193 2030 0.0 0.0 0.0 -de 06_coal 1 193 2030 0.0 0.0 0.0 -de 07_gas 1 193 2030 0.0 0.0 0.0 -de 08_non-res 1 193 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 193 2030 0.0 0.0 0.0 -de 01_solar 1 194 2030 2000.0 1.0 0.0 -de 02_wind_on 1 194 2030 500.0 1.0 0.0 -de 03_wind_off 1 194 2030 0.0 0.0 0.0 -de 04_res 1 194 2030 0.0 0.0 0.0 -de 05_nuclear 1 194 2030 0.0 0.0 0.0 -de 06_coal 1 194 2030 0.0 0.0 0.0 -de 07_gas 1 194 2030 0.0 0.0 0.0 -de 08_non-res 1 194 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 194 2030 0.0 0.0 0.0 -de 01_solar 1 195 2030 2000.0 1.0 0.0 -de 02_wind_on 1 195 2030 600.0 1.0 0.0 -de 03_wind_off 1 195 2030 0.0 0.0 0.0 -de 04_res 1 195 2030 0.0 0.0 0.0 -de 05_nuclear 1 195 2030 0.0 0.0 0.0 -de 06_coal 1 195 2030 0.0 0.0 0.0 -de 07_gas 1 195 2030 0.0 0.0 0.0 -de 08_non-res 1 195 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 195 2030 0.0 0.0 0.0 -de 01_solar 1 196 2030 2000.0 1.0 0.0 -de 02_wind_on 1 196 2030 700.0 1.0 0.0 -de 03_wind_off 1 196 2030 0.0 0.0 0.0 -de 04_res 1 196 2030 0.0 0.0 0.0 -de 05_nuclear 1 196 2030 0.0 0.0 0.0 -de 06_coal 1 196 2030 0.0 0.0 0.0 -de 07_gas 1 196 2030 0.0 0.0 0.0 -de 08_non-res 1 196 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 196 2030 0.0 0.0 0.0 -de 01_solar 1 197 2030 2000.0 1.0 0.0 -de 02_wind_on 1 197 2030 800.0 1.0 0.0 -de 03_wind_off 1 197 2030 0.0 0.0 0.0 -de 04_res 1 197 2030 0.0 0.0 0.0 -de 05_nuclear 1 197 2030 0.0 0.0 0.0 -de 06_coal 1 197 2030 0.0 0.0 0.0 -de 07_gas 1 197 2030 0.0 0.0 0.0 -de 08_non-res 1 197 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 197 2030 0.0 0.0 0.0 -de 01_solar 1 198 2030 2000.0 1.0 0.0 -de 02_wind_on 1 198 2030 900.0 1.0 0.0 -de 03_wind_off 1 198 2030 0.0 0.0 0.0 -de 04_res 1 198 2030 0.0 0.0 0.0 -de 05_nuclear 1 198 2030 0.0 0.0 0.0 -de 06_coal 1 198 2030 0.0 0.0 0.0 -de 07_gas 1 198 2030 0.0 0.0 0.0 -de 08_non-res 1 198 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 198 2030 0.0 0.0 0.0 -de 01_solar 1 199 2030 2000.0 1.0 0.0 -de 02_wind_on 1 199 2030 1000.0 1.0 0.0 -de 03_wind_off 1 199 2030 0.0 0.0 0.0 -de 04_res 1 199 2030 0.0 0.0 0.0 -de 05_nuclear 1 199 2030 0.0 0.0 0.0 -de 06_coal 1 199 2030 0.0 0.0 0.0 -de 07_gas 1 199 2030 0.0 0.0 0.0 -de 08_non-res 1 199 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 199 2030 0.0 0.0 0.0 -de 01_solar 1 200 2030 2000.0 1.0 0.0 -de 02_wind_on 1 200 2030 1100.0 1.0 0.0 -de 03_wind_off 1 200 2030 0.0 0.0 0.0 -de 04_res 1 200 2030 0.0 0.0 0.0 -de 05_nuclear 1 200 2030 0.0 0.0 0.0 -de 06_coal 1 200 2030 0.0 0.0 0.0 -de 07_gas 1 200 2030 0.0 0.0 0.0 -de 08_non-res 1 200 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 200 2030 0.0 0.0 0.0 -de 01_solar 1 201 2030 2000.0 1.0 0.0 -de 02_wind_on 1 201 2030 1200.0 1.0 0.0 -de 03_wind_off 1 201 2030 0.0 0.0 0.0 -de 04_res 1 201 2030 0.0 0.0 0.0 -de 05_nuclear 1 201 2030 0.0 0.0 0.0 -de 06_coal 1 201 2030 0.0 0.0 0.0 -de 07_gas 1 201 2030 0.0 0.0 0.0 -de 08_non-res 1 201 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 201 2030 0.0 0.0 0.0 -de 01_solar 1 202 2030 2000.0 1.0 0.0 -de 02_wind_on 1 202 2030 1300.0 1.0 0.0 -de 03_wind_off 1 202 2030 0.0 0.0 0.0 -de 04_res 1 202 2030 0.0 0.0 0.0 -de 05_nuclear 1 202 2030 0.0 0.0 0.0 -de 06_coal 1 202 2030 0.0 0.0 0.0 -de 07_gas 1 202 2030 0.0 0.0 0.0 -de 08_non-res 1 202 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 202 2030 0.0 0.0 0.0 -de 01_solar 1 203 2030 2000.0 1.0 0.0 -de 02_wind_on 1 203 2030 1400.0 1.0 0.0 -de 03_wind_off 1 203 2030 0.0 0.0 0.0 -de 04_res 1 203 2030 0.0 0.0 0.0 -de 05_nuclear 1 203 2030 0.0 0.0 0.0 -de 06_coal 1 203 2030 0.0 0.0 0.0 -de 07_gas 1 203 2030 0.0 0.0 0.0 -de 08_non-res 1 203 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 203 2030 0.0 0.0 0.0 -de 01_solar 1 204 2030 2000.0 1.0 0.0 -de 02_wind_on 1 204 2030 1500.0 1.0 0.0 -de 03_wind_off 1 204 2030 0.0 0.0 0.0 -de 04_res 1 204 2030 0.0 0.0 0.0 -de 05_nuclear 1 204 2030 0.0 0.0 0.0 -de 06_coal 1 204 2030 0.0 0.0 0.0 -de 07_gas 1 204 2030 0.0 0.0 0.0 -de 08_non-res 1 204 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 204 2030 0.0 0.0 0.0 -de 01_solar 1 205 2030 2000.0 1.0 0.0 -de 02_wind_on 1 205 2030 1600.0 1.0 0.0 -de 03_wind_off 1 205 2030 0.0 0.0 0.0 -de 04_res 1 205 2030 0.0 0.0 0.0 -de 05_nuclear 1 205 2030 0.0 0.0 0.0 -de 06_coal 1 205 2030 0.0 0.0 0.0 -de 07_gas 1 205 2030 0.0 0.0 0.0 -de 08_non-res 1 205 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 205 2030 0.0 0.0 0.0 -de 01_solar 1 206 2030 2000.0 1.0 0.0 -de 02_wind_on 1 206 2030 1700.0 1.0 0.0 -de 03_wind_off 1 206 2030 0.0 0.0 0.0 -de 04_res 1 206 2030 0.0 0.0 0.0 -de 05_nuclear 1 206 2030 0.0 0.0 0.0 -de 06_coal 1 206 2030 0.0 0.0 0.0 -de 07_gas 1 206 2030 0.0 0.0 0.0 -de 08_non-res 1 206 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 206 2030 0.0 0.0 0.0 -de 01_solar 1 207 2030 2000.0 1.0 0.0 -de 02_wind_on 1 207 2030 1800.0 1.0 0.0 -de 03_wind_off 1 207 2030 0.0 0.0 0.0 -de 04_res 1 207 2030 0.0 0.0 0.0 -de 05_nuclear 1 207 2030 0.0 0.0 0.0 -de 06_coal 1 207 2030 0.0 0.0 0.0 -de 07_gas 1 207 2030 0.0 0.0 0.0 -de 08_non-res 1 207 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 207 2030 0.0 0.0 0.0 -de 01_solar 1 208 2030 2000.0 1.0 0.0 -de 02_wind_on 1 208 2030 1900.0 1.0 0.0 -de 03_wind_off 1 208 2030 0.0 0.0 0.0 -de 04_res 1 208 2030 0.0 0.0 0.0 -de 05_nuclear 1 208 2030 0.0 0.0 0.0 -de 06_coal 1 208 2030 0.0 0.0 0.0 -de 07_gas 1 208 2030 0.0 0.0 0.0 -de 08_non-res 1 208 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 208 2030 0.0 0.0 0.0 -de 01_solar 1 209 2030 2000.0 1.0 0.0 -de 02_wind_on 1 209 2030 2000.0 1.0 0.0 -de 03_wind_off 1 209 2030 0.0 0.0 0.0 -de 04_res 1 209 2030 0.0 0.0 0.0 -de 05_nuclear 1 209 2030 0.0 0.0 0.0 -de 06_coal 1 209 2030 0.0 0.0 0.0 -de 07_gas 1 209 2030 0.0 0.0 0.0 -de 08_non-res 1 209 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 209 2030 0.0 0.0 0.0 -de 01_solar 1 210 2030 2000.0 1.0 0.0 -de 02_wind_on 1 210 2030 2000.0 1.0 0.0 -de 03_wind_off 1 210 2030 100.0 1.0 0.0 -de 04_res 1 210 2030 0.0 0.0 0.0 -de 05_nuclear 1 210 2030 0.0 0.0 0.0 -de 06_coal 1 210 2030 0.0 0.0 0.0 -de 07_gas 1 210 2030 0.0 0.0 0.0 -de 08_non-res 1 210 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 210 2030 0.0 0.0 0.0 -de 01_solar 1 211 2030 2000.0 1.0 0.0 -de 02_wind_on 1 211 2030 2000.0 1.0 0.0 -de 03_wind_off 1 211 2030 200.0 1.0 0.0 -de 04_res 1 211 2030 0.0 0.0 0.0 -de 05_nuclear 1 211 2030 0.0 0.0 0.0 -de 06_coal 1 211 2030 0.0 0.0 0.0 -de 07_gas 1 211 2030 0.0 0.0 0.0 -de 08_non-res 1 211 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 211 2030 0.0 0.0 0.0 -de 01_solar 1 212 2030 2000.0 1.0 0.0 -de 02_wind_on 1 212 2030 2000.0 1.0 0.0 -de 03_wind_off 1 212 2030 300.0 1.0 0.0 -de 04_res 1 212 2030 0.0 0.0 0.0 -de 05_nuclear 1 212 2030 0.0 0.0 0.0 -de 06_coal 1 212 2030 0.0 0.0 0.0 -de 07_gas 1 212 2030 0.0 0.0 0.0 -de 08_non-res 1 212 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 212 2030 0.0 0.0 0.0 -de 01_solar 1 213 2030 2000.0 1.0 0.0 -de 02_wind_on 1 213 2030 2000.0 1.0 0.0 -de 03_wind_off 1 213 2030 400.0 1.0 0.0 -de 04_res 1 213 2030 0.0 0.0 0.0 -de 05_nuclear 1 213 2030 0.0 0.0 0.0 -de 06_coal 1 213 2030 0.0 0.0 0.0 -de 07_gas 1 213 2030 0.0 0.0 0.0 -de 08_non-res 1 213 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 213 2030 0.0 0.0 0.0 -de 01_solar 1 214 2030 2000.0 1.0 0.0 -de 02_wind_on 1 214 2030 2000.0 1.0 0.0 -de 03_wind_off 1 214 2030 500.0 1.0 0.0 -de 04_res 1 214 2030 0.0 0.0 0.0 -de 05_nuclear 1 214 2030 0.0 0.0 0.0 -de 06_coal 1 214 2030 0.0 0.0 0.0 -de 07_gas 1 214 2030 0.0 0.0 0.0 -de 08_non-res 1 214 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 214 2030 0.0 0.0 0.0 -de 01_solar 1 215 2030 2000.0 1.0 0.0 -de 02_wind_on 1 215 2030 2000.0 1.0 0.0 -de 03_wind_off 1 215 2030 600.0 1.0 0.0 -de 04_res 1 215 2030 0.0 0.0 0.0 -de 05_nuclear 1 215 2030 0.0 0.0 0.0 -de 06_coal 1 215 2030 0.0 0.0 0.0 -de 07_gas 1 215 2030 0.0 0.0 0.0 -de 08_non-res 1 215 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 215 2030 0.0 0.0 0.0 -de 01_solar 1 216 2030 2000.0 1.0 0.0 -de 02_wind_on 1 216 2030 2000.0 1.0 0.0 -de 03_wind_off 1 216 2030 700.0 1.0 0.0 -de 04_res 1 216 2030 0.0 0.0 0.0 -de 05_nuclear 1 216 2030 0.0 0.0 0.0 -de 06_coal 1 216 2030 0.0 0.0 0.0 -de 07_gas 1 216 2030 0.0 0.0 0.0 -de 08_non-res 1 216 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 216 2030 0.0 0.0 0.0 -de 01_solar 1 217 2030 2000.0 1.0 0.0 -de 02_wind_on 1 217 2030 2000.0 1.0 0.0 -de 03_wind_off 1 217 2030 800.0 1.0 0.0 -de 04_res 1 217 2030 0.0 0.0 0.0 -de 05_nuclear 1 217 2030 0.0 0.0 0.0 -de 06_coal 1 217 2030 0.0 0.0 0.0 -de 07_gas 1 217 2030 0.0 0.0 0.0 -de 08_non-res 1 217 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 217 2030 0.0 0.0 0.0 -de 01_solar 1 218 2030 2000.0 1.0 0.0 -de 02_wind_on 1 218 2030 2000.0 1.0 0.0 -de 03_wind_off 1 218 2030 900.0 1.0 0.0 -de 04_res 1 218 2030 0.0 0.0 0.0 -de 05_nuclear 1 218 2030 0.0 0.0 0.0 -de 06_coal 1 218 2030 0.0 0.0 0.0 -de 07_gas 1 218 2030 0.0 0.0 0.0 -de 08_non-res 1 218 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 218 2030 0.0 0.0 0.0 -de 01_solar 1 219 2030 2000.0 1.0 0.0 -de 02_wind_on 1 219 2030 2000.0 1.0 0.0 -de 03_wind_off 1 219 2030 1000.0 1.0 0.0 -de 04_res 1 219 2030 0.0 0.0 0.0 -de 05_nuclear 1 219 2030 0.0 0.0 0.0 -de 06_coal 1 219 2030 0.0 0.0 0.0 -de 07_gas 1 219 2030 0.0 0.0 0.0 -de 08_non-res 1 219 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 219 2030 0.0 0.0 0.0 -de 01_solar 1 220 2030 2000.0 1.0 0.0 -de 02_wind_on 1 220 2030 2000.0 1.0 0.0 -de 03_wind_off 1 220 2030 1100.0 1.0 0.0 -de 04_res 1 220 2030 0.0 0.0 0.0 -de 05_nuclear 1 220 2030 0.0 0.0 0.0 -de 06_coal 1 220 2030 0.0 0.0 0.0 -de 07_gas 1 220 2030 0.0 0.0 0.0 -de 08_non-res 1 220 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 220 2030 0.0 0.0 0.0 -de 01_solar 1 221 2030 2000.0 1.0 0.0 -de 02_wind_on 1 221 2030 2000.0 1.0 0.0 -de 03_wind_off 1 221 2030 1200.0 1.0 0.0 -de 04_res 1 221 2030 0.0 0.0 0.0 -de 05_nuclear 1 221 2030 0.0 0.0 0.0 -de 06_coal 1 221 2030 0.0 0.0 0.0 -de 07_gas 1 221 2030 0.0 0.0 0.0 -de 08_non-res 1 221 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 221 2030 0.0 0.0 0.0 -de 01_solar 1 222 2030 2000.0 1.0 0.0 -de 02_wind_on 1 222 2030 2000.0 1.0 0.0 -de 03_wind_off 1 222 2030 1300.0 1.0 0.0 -de 04_res 1 222 2030 0.0 0.0 0.0 -de 05_nuclear 1 222 2030 0.0 0.0 0.0 -de 06_coal 1 222 2030 0.0 0.0 0.0 -de 07_gas 1 222 2030 0.0 0.0 0.0 -de 08_non-res 1 222 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 222 2030 0.0 0.0 0.0 -de 01_solar 1 223 2030 2000.0 1.0 0.0 -de 02_wind_on 1 223 2030 2000.0 1.0 0.0 -de 03_wind_off 1 223 2030 1400.0 1.0 0.0 -de 04_res 1 223 2030 0.0 0.0 0.0 -de 05_nuclear 1 223 2030 0.0 0.0 0.0 -de 06_coal 1 223 2030 0.0 0.0 0.0 -de 07_gas 1 223 2030 0.0 0.0 0.0 -de 08_non-res 1 223 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 223 2030 0.0 0.0 0.0 -de 01_solar 1 224 2030 2000.0 1.0 0.0 -de 02_wind_on 1 224 2030 2000.0 1.0 0.0 -de 03_wind_off 1 224 2030 1500.0 1.0 0.0 -de 04_res 1 224 2030 0.0 0.0 0.0 -de 05_nuclear 1 224 2030 0.0 0.0 0.0 -de 06_coal 1 224 2030 0.0 0.0 0.0 -de 07_gas 1 224 2030 0.0 0.0 0.0 -de 08_non-res 1 224 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 224 2030 0.0 0.0 0.0 -de 01_solar 1 225 2030 2000.0 1.0 0.0 -de 02_wind_on 1 225 2030 2000.0 1.0 0.0 -de 03_wind_off 1 225 2030 1600.0 1.0 0.0 -de 04_res 1 225 2030 0.0 0.0 0.0 -de 05_nuclear 1 225 2030 0.0 0.0 0.0 -de 06_coal 1 225 2030 0.0 0.0 0.0 -de 07_gas 1 225 2030 0.0 0.0 0.0 -de 08_non-res 1 225 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 225 2030 0.0 0.0 0.0 -de 01_solar 1 226 2030 2000.0 1.0 0.0 -de 02_wind_on 1 226 2030 2000.0 1.0 0.0 -de 03_wind_off 1 226 2030 1700.0 1.0 0.0 -de 04_res 1 226 2030 0.0 0.0 0.0 -de 05_nuclear 1 226 2030 0.0 0.0 0.0 -de 06_coal 1 226 2030 0.0 0.0 0.0 -de 07_gas 1 226 2030 0.0 0.0 0.0 -de 08_non-res 1 226 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 226 2030 0.0 0.0 0.0 -de 01_solar 1 227 2030 2000.0 1.0 0.0 -de 02_wind_on 1 227 2030 2000.0 1.0 0.0 -de 03_wind_off 1 227 2030 1800.0 1.0 0.0 -de 04_res 1 227 2030 0.0 0.0 0.0 -de 05_nuclear 1 227 2030 0.0 0.0 0.0 -de 06_coal 1 227 2030 0.0 0.0 0.0 -de 07_gas 1 227 2030 0.0 0.0 0.0 -de 08_non-res 1 227 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 227 2030 0.0 0.0 0.0 -de 01_solar 1 228 2030 2000.0 1.0 0.0 -de 02_wind_on 1 228 2030 2000.0 1.0 0.0 -de 03_wind_off 1 228 2030 1900.0 1.0 0.0 -de 04_res 1 228 2030 0.0 0.0 0.0 -de 05_nuclear 1 228 2030 0.0 0.0 0.0 -de 06_coal 1 228 2030 0.0 0.0 0.0 -de 07_gas 1 228 2030 0.0 0.0 0.0 -de 08_non-res 1 228 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 228 2030 0.0 0.0 0.0 -de 01_solar 1 229 2030 2000.0 1.0 0.0 -de 02_wind_on 1 229 2030 2000.0 1.0 0.0 -de 03_wind_off 1 229 2030 2000.0 1.0 0.0 -de 04_res 1 229 2030 0.0 0.0 0.0 -de 05_nuclear 1 229 2030 0.0 0.0 0.0 -de 06_coal 1 229 2030 0.0 0.0 0.0 -de 07_gas 1 229 2030 0.0 0.0 0.0 -de 08_non-res 1 229 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 229 2030 0.0 0.0 0.0 -de 01_solar 1 230 2030 2000.0 1.0 0.0 -de 02_wind_on 1 230 2030 2000.0 1.0 0.0 -de 03_wind_off 1 230 2030 2000.0 1.0 0.0 -de 04_res 1 230 2030 100.0 1.0 0.0 -de 05_nuclear 1 230 2030 0.0 0.0 0.0 -de 06_coal 1 230 2030 0.0 0.0 0.0 -de 07_gas 1 230 2030 0.0 0.0 0.0 -de 08_non-res 1 230 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 230 2030 0.0 0.0 0.0 -de 01_solar 1 231 2030 2000.0 1.0 0.0 -de 02_wind_on 1 231 2030 2000.0 1.0 0.0 -de 03_wind_off 1 231 2030 2000.0 1.0 0.0 -de 04_res 1 231 2030 200.0 1.0 0.0 -de 05_nuclear 1 231 2030 0.0 0.0 0.0 -de 06_coal 1 231 2030 0.0 0.0 0.0 -de 07_gas 1 231 2030 0.0 0.0 0.0 -de 08_non-res 1 231 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 231 2030 0.0 0.0 0.0 -de 01_solar 1 232 2030 2000.0 1.0 0.0 -de 02_wind_on 1 232 2030 2000.0 1.0 0.0 -de 03_wind_off 1 232 2030 2000.0 1.0 0.0 -de 04_res 1 232 2030 300.0 1.0 0.0 -de 05_nuclear 1 232 2030 0.0 0.0 0.0 -de 06_coal 1 232 2030 0.0 0.0 0.0 -de 07_gas 1 232 2030 0.0 0.0 0.0 -de 08_non-res 1 232 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 232 2030 0.0 0.0 0.0 -de 01_solar 1 233 2030 2000.0 1.0 0.0 -de 02_wind_on 1 233 2030 2000.0 1.0 0.0 -de 03_wind_off 1 233 2030 2000.0 1.0 0.0 -de 04_res 1 233 2030 400.0 1.0 0.0 -de 05_nuclear 1 233 2030 0.0 0.0 0.0 -de 06_coal 1 233 2030 0.0 0.0 0.0 -de 07_gas 1 233 2030 0.0 0.0 0.0 -de 08_non-res 1 233 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 233 2030 0.0 0.0 0.0 -de 01_solar 1 234 2030 2000.0 1.0 0.0 -de 02_wind_on 1 234 2030 2000.0 1.0 0.0 -de 03_wind_off 1 234 2030 2000.0 1.0 0.0 -de 04_res 1 234 2030 500.0 1.0 0.0 -de 05_nuclear 1 234 2030 0.0 0.0 0.0 -de 06_coal 1 234 2030 0.0 0.0 0.0 -de 07_gas 1 234 2030 0.0 0.0 0.0 -de 08_non-res 1 234 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 234 2030 0.0 0.0 0.0 -de 01_solar 1 235 2030 2000.0 1.0 0.0 -de 02_wind_on 1 235 2030 2000.0 1.0 0.0 -de 03_wind_off 1 235 2030 2000.0 1.0 0.0 -de 04_res 1 235 2030 600.0 1.0 0.0 -de 05_nuclear 1 235 2030 0.0 0.0 0.0 -de 06_coal 1 235 2030 0.0 0.0 0.0 -de 07_gas 1 235 2030 0.0 0.0 0.0 -de 08_non-res 1 235 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 235 2030 0.0 0.0 0.0 -de 01_solar 1 236 2030 2000.0 1.0 0.0 -de 02_wind_on 1 236 2030 2000.0 1.0 0.0 -de 03_wind_off 1 236 2030 2000.0 1.0 0.0 -de 04_res 1 236 2030 700.0 1.0 0.0 -de 05_nuclear 1 236 2030 0.0 0.0 0.0 -de 06_coal 1 236 2030 0.0 0.0 0.0 -de 07_gas 1 236 2030 0.0 0.0 0.0 -de 08_non-res 1 236 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 236 2030 0.0 0.0 0.0 -de 01_solar 1 237 2030 2000.0 1.0 0.0 -de 02_wind_on 1 237 2030 2000.0 1.0 0.0 -de 03_wind_off 1 237 2030 2000.0 1.0 0.0 -de 04_res 1 237 2030 800.0 1.0 0.0 -de 05_nuclear 1 237 2030 0.0 0.0 0.0 -de 06_coal 1 237 2030 0.0 0.0 0.0 -de 07_gas 1 237 2030 0.0 0.0 0.0 -de 08_non-res 1 237 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 237 2030 0.0 0.0 0.0 -de 01_solar 1 238 2030 2000.0 1.0 0.0 -de 02_wind_on 1 238 2030 2000.0 1.0 0.0 -de 03_wind_off 1 238 2030 2000.0 1.0 0.0 -de 04_res 1 238 2030 900.0 1.0 0.0 -de 05_nuclear 1 238 2030 0.0 0.0 0.0 -de 06_coal 1 238 2030 0.0 0.0 0.0 -de 07_gas 1 238 2030 0.0 0.0 0.0 -de 08_non-res 1 238 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 238 2030 0.0 0.0 0.0 -de 01_solar 1 239 2030 2000.0 1.0 0.0 -de 02_wind_on 1 239 2030 2000.0 1.0 0.0 -de 03_wind_off 1 239 2030 2000.0 1.0 0.0 -de 04_res 1 239 2030 1000.0 1.0 0.0 -de 05_nuclear 1 239 2030 0.0 0.0 0.0 -de 06_coal 1 239 2030 0.0 0.0 0.0 -de 07_gas 1 239 2030 0.0 0.0 0.0 -de 08_non-res 1 239 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 239 2030 0.0 0.0 0.0 -de 01_solar 1 240 2030 2000.0 1.0 0.0 -de 02_wind_on 1 240 2030 2000.0 1.0 0.0 -de 03_wind_off 1 240 2030 2000.0 1.0 0.0 -de 04_res 1 240 2030 1100.0 1.0 0.0 -de 05_nuclear 1 240 2030 0.0 0.0 0.0 -de 06_coal 1 240 2030 0.0 0.0 0.0 -de 07_gas 1 240 2030 0.0 0.0 0.0 -de 08_non-res 1 240 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 240 2030 0.0 0.0 0.0 -de 01_solar 1 241 2030 2000.0 1.0 0.0 -de 02_wind_on 1 241 2030 2000.0 1.0 0.0 -de 03_wind_off 1 241 2030 2000.0 1.0 0.0 -de 04_res 1 241 2030 1200.0 1.0 0.0 -de 05_nuclear 1 241 2030 0.0 0.0 0.0 -de 06_coal 1 241 2030 0.0 0.0 0.0 -de 07_gas 1 241 2030 0.0 0.0 0.0 -de 08_non-res 1 241 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 241 2030 0.0 0.0 0.0 -de 01_solar 1 242 2030 2000.0 1.0 0.0 -de 02_wind_on 1 242 2030 2000.0 1.0 0.0 -de 03_wind_off 1 242 2030 2000.0 1.0 0.0 -de 04_res 1 242 2030 1300.0 1.0 0.0 -de 05_nuclear 1 242 2030 0.0 0.0 0.0 -de 06_coal 1 242 2030 0.0 0.0 0.0 -de 07_gas 1 242 2030 0.0 0.0 0.0 -de 08_non-res 1 242 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 242 2030 0.0 0.0 0.0 -de 01_solar 1 243 2030 2000.0 1.0 0.0 -de 02_wind_on 1 243 2030 2000.0 1.0 0.0 -de 03_wind_off 1 243 2030 2000.0 1.0 0.0 -de 04_res 1 243 2030 1400.0 1.0 0.0 -de 05_nuclear 1 243 2030 0.0 0.0 0.0 -de 06_coal 1 243 2030 0.0 0.0 0.0 -de 07_gas 1 243 2030 0.0 0.0 0.0 -de 08_non-res 1 243 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 243 2030 0.0 0.0 0.0 -de 01_solar 1 244 2030 2000.0 1.0 0.0 -de 02_wind_on 1 244 2030 2000.0 1.0 0.0 -de 03_wind_off 1 244 2030 2000.0 1.0 0.0 -de 04_res 1 244 2030 1500.0 1.0 0.0 -de 05_nuclear 1 244 2030 0.0 0.0 0.0 -de 06_coal 1 244 2030 0.0 0.0 0.0 -de 07_gas 1 244 2030 0.0 0.0 0.0 -de 08_non-res 1 244 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 244 2030 0.0 0.0 0.0 -de 01_solar 1 245 2030 2000.0 1.0 0.0 -de 02_wind_on 1 245 2030 2000.0 1.0 0.0 -de 03_wind_off 1 245 2030 2000.0 1.0 0.0 -de 04_res 1 245 2030 1600.0 1.0 0.0 -de 05_nuclear 1 245 2030 0.0 0.0 0.0 -de 06_coal 1 245 2030 0.0 0.0 0.0 -de 07_gas 1 245 2030 0.0 0.0 0.0 -de 08_non-res 1 245 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 245 2030 0.0 0.0 0.0 -de 01_solar 1 246 2030 2000.0 1.0 0.0 -de 02_wind_on 1 246 2030 2000.0 1.0 0.0 -de 03_wind_off 1 246 2030 2000.0 1.0 0.0 -de 04_res 1 246 2030 1700.0 1.0 0.0 -de 05_nuclear 1 246 2030 0.0 0.0 0.0 -de 06_coal 1 246 2030 0.0 0.0 0.0 -de 07_gas 1 246 2030 0.0 0.0 0.0 -de 08_non-res 1 246 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 246 2030 0.0 0.0 0.0 -de 01_solar 1 247 2030 2000.0 1.0 0.0 -de 02_wind_on 1 247 2030 2000.0 1.0 0.0 -de 03_wind_off 1 247 2030 2000.0 1.0 0.0 -de 04_res 1 247 2030 1800.0 1.0 0.0 -de 05_nuclear 1 247 2030 0.0 0.0 0.0 -de 06_coal 1 247 2030 0.0 0.0 0.0 -de 07_gas 1 247 2030 0.0 0.0 0.0 -de 08_non-res 1 247 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 247 2030 0.0 0.0 0.0 -de 01_solar 1 248 2030 2000.0 1.0 0.0 -de 02_wind_on 1 248 2030 2000.0 1.0 0.0 -de 03_wind_off 1 248 2030 2000.0 1.0 0.0 -de 04_res 1 248 2030 1900.0 1.0 0.0 -de 05_nuclear 1 248 2030 0.0 0.0 0.0 -de 06_coal 1 248 2030 0.0 0.0 0.0 -de 07_gas 1 248 2030 0.0 0.0 0.0 -de 08_non-res 1 248 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 248 2030 0.0 0.0 0.0 -de 01_solar 1 249 2030 2000.0 1.0 0.0 -de 02_wind_on 1 249 2030 2000.0 1.0 0.0 -de 03_wind_off 1 249 2030 2000.0 1.0 0.0 -de 04_res 1 249 2030 2000.0 1.0 0.0 -de 05_nuclear 1 249 2030 0.0 0.0 0.0 -de 06_coal 1 249 2030 0.0 0.0 0.0 -de 07_gas 1 249 2030 0.0 0.0 0.0 -de 08_non-res 1 249 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 249 2030 0.0 0.0 0.0 -de 01_solar 1 250 2030 2000.0 1.0 0.0 -de 02_wind_on 1 250 2030 2000.0 1.0 0.0 -de 03_wind_off 1 250 2030 2000.0 1.0 0.0 -de 04_res 1 250 2030 2000.0 1.0 0.0 -de 05_nuclear 1 250 2030 100.0 1.0 0.0 -de 06_coal 1 250 2030 0.0 0.0 0.0 -de 07_gas 1 250 2030 0.0 0.0 0.0 -de 08_non-res 1 250 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 250 2030 0.0 0.0 0.0 -de 01_solar 1 251 2030 2000.0 1.0 0.0 -de 02_wind_on 1 251 2030 2000.0 1.0 0.0 -de 03_wind_off 1 251 2030 2000.0 1.0 0.0 -de 04_res 1 251 2030 2000.0 1.0 0.0 -de 05_nuclear 1 251 2030 200.0 1.0 0.0 -de 06_coal 1 251 2030 0.0 0.0 0.0 -de 07_gas 1 251 2030 0.0 0.0 0.0 -de 08_non-res 1 251 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 251 2030 0.0 0.0 0.0 -de 01_solar 1 252 2030 2000.0 1.0 0.0 -de 02_wind_on 1 252 2030 2000.0 1.0 0.0 -de 03_wind_off 1 252 2030 2000.0 1.0 0.0 -de 04_res 1 252 2030 2000.0 1.0 0.0 -de 05_nuclear 1 252 2030 300.0 1.0 0.0 -de 06_coal 1 252 2030 0.0 0.0 0.0 -de 07_gas 1 252 2030 0.0 0.0 0.0 -de 08_non-res 1 252 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 252 2030 0.0 0.0 0.0 -de 01_solar 1 253 2030 2000.0 1.0 0.0 -de 02_wind_on 1 253 2030 2000.0 1.0 0.0 -de 03_wind_off 1 253 2030 2000.0 1.0 0.0 -de 04_res 1 253 2030 2000.0 1.0 0.0 -de 05_nuclear 1 253 2030 400.0 1.0 0.0 -de 06_coal 1 253 2030 0.0 0.0 0.0 -de 07_gas 1 253 2030 0.0 0.0 0.0 -de 08_non-res 1 253 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 253 2030 0.0 0.0 0.0 -de 01_solar 1 254 2030 2000.0 1.0 0.0 -de 02_wind_on 1 254 2030 2000.0 1.0 0.0 -de 03_wind_off 1 254 2030 2000.0 1.0 0.0 -de 04_res 1 254 2030 2000.0 1.0 0.0 -de 05_nuclear 1 254 2030 500.0 1.0 0.0 -de 06_coal 1 254 2030 0.0 0.0 0.0 -de 07_gas 1 254 2030 0.0 0.0 0.0 -de 08_non-res 1 254 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 254 2030 0.0 0.0 0.0 -de 01_solar 1 255 2030 2000.0 1.0 0.0 -de 02_wind_on 1 255 2030 2000.0 1.0 0.0 -de 03_wind_off 1 255 2030 2000.0 1.0 0.0 -de 04_res 1 255 2030 2000.0 1.0 0.0 -de 05_nuclear 1 255 2030 600.0 1.0 0.0 -de 06_coal 1 255 2030 0.0 0.0 0.0 -de 07_gas 1 255 2030 0.0 0.0 0.0 -de 08_non-res 1 255 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 255 2030 0.0 0.0 0.0 -de 01_solar 1 256 2030 2000.0 1.0 0.0 -de 02_wind_on 1 256 2030 2000.0 1.0 0.0 -de 03_wind_off 1 256 2030 2000.0 1.0 0.0 -de 04_res 1 256 2030 2000.0 1.0 0.0 -de 05_nuclear 1 256 2030 700.0 1.0 0.0 -de 06_coal 1 256 2030 0.0 0.0 0.0 -de 07_gas 1 256 2030 0.0 0.0 0.0 -de 08_non-res 1 256 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 256 2030 0.0 0.0 0.0 -de 01_solar 1 257 2030 2000.0 1.0 0.0 -de 02_wind_on 1 257 2030 2000.0 1.0 0.0 -de 03_wind_off 1 257 2030 2000.0 1.0 0.0 -de 04_res 1 257 2030 2000.0 1.0 0.0 -de 05_nuclear 1 257 2030 800.0 1.0 0.0 -de 06_coal 1 257 2030 0.0 0.0 0.0 -de 07_gas 1 257 2030 0.0 0.0 0.0 -de 08_non-res 1 257 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 257 2030 0.0 0.0 0.0 -de 01_solar 1 258 2030 2000.0 1.0 0.0 -de 02_wind_on 1 258 2030 2000.0 1.0 0.0 -de 03_wind_off 1 258 2030 2000.0 1.0 0.0 -de 04_res 1 258 2030 2000.0 1.0 0.0 -de 05_nuclear 1 258 2030 900.0 1.0 0.0 -de 06_coal 1 258 2030 0.0 0.0 0.0 -de 07_gas 1 258 2030 0.0 0.0 0.0 -de 08_non-res 1 258 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 258 2030 0.0 0.0 0.0 -de 01_solar 1 259 2030 2000.0 1.0 0.0 -de 02_wind_on 1 259 2030 2000.0 1.0 0.0 -de 03_wind_off 1 259 2030 2000.0 1.0 0.0 -de 04_res 1 259 2030 2000.0 1.0 0.0 -de 05_nuclear 1 259 2030 1000.0 1.0 0.0 -de 06_coal 1 259 2030 0.0 0.0 0.0 -de 07_gas 1 259 2030 0.0 0.0 0.0 -de 08_non-res 1 259 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 259 2030 0.0 0.0 0.0 -de 01_solar 1 260 2030 2000.0 1.0 0.0 -de 02_wind_on 1 260 2030 2000.0 1.0 0.0 -de 03_wind_off 1 260 2030 2000.0 1.0 0.0 -de 04_res 1 260 2030 2000.0 1.0 0.0 -de 05_nuclear 1 260 2030 1100.0 1.0 0.0 -de 06_coal 1 260 2030 0.0 0.0 0.0 -de 07_gas 1 260 2030 0.0 0.0 0.0 -de 08_non-res 1 260 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 260 2030 0.0 0.0 0.0 -de 01_solar 1 261 2030 2000.0 1.0 0.0 -de 02_wind_on 1 261 2030 2000.0 1.0 0.0 -de 03_wind_off 1 261 2030 2000.0 1.0 0.0 -de 04_res 1 261 2030 2000.0 1.0 0.0 -de 05_nuclear 1 261 2030 1200.0 1.0 0.0 -de 06_coal 1 261 2030 0.0 0.0 0.0 -de 07_gas 1 261 2030 0.0 0.0 0.0 -de 08_non-res 1 261 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 261 2030 0.0 0.0 0.0 -de 01_solar 1 262 2030 2000.0 1.0 0.0 -de 02_wind_on 1 262 2030 2000.0 1.0 0.0 -de 03_wind_off 1 262 2030 2000.0 1.0 0.0 -de 04_res 1 262 2030 2000.0 1.0 0.0 -de 05_nuclear 1 262 2030 1300.0 1.0 0.0 -de 06_coal 1 262 2030 0.0 0.0 0.0 -de 07_gas 1 262 2030 0.0 0.0 0.0 -de 08_non-res 1 262 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 262 2030 0.0 0.0 0.0 -de 01_solar 1 263 2030 2000.0 1.0 0.0 -de 02_wind_on 1 263 2030 2000.0 1.0 0.0 -de 03_wind_off 1 263 2030 2000.0 1.0 0.0 -de 04_res 1 263 2030 2000.0 1.0 0.0 -de 05_nuclear 1 263 2030 1400.0 1.0 0.0 -de 06_coal 1 263 2030 0.0 0.0 0.0 -de 07_gas 1 263 2030 0.0 0.0 0.0 -de 08_non-res 1 263 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 263 2030 0.0 0.0 0.0 -de 01_solar 1 264 2030 2000.0 1.0 0.0 -de 02_wind_on 1 264 2030 2000.0 1.0 0.0 -de 03_wind_off 1 264 2030 2000.0 1.0 0.0 -de 04_res 1 264 2030 2000.0 1.0 0.0 -de 05_nuclear 1 264 2030 1500.0 1.0 0.0 -de 06_coal 1 264 2030 0.0 0.0 0.0 -de 07_gas 1 264 2030 0.0 0.0 0.0 -de 08_non-res 1 264 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 264 2030 0.0 0.0 0.0 -de 01_solar 1 265 2030 2000.0 1.0 0.0 -de 02_wind_on 1 265 2030 2000.0 1.0 0.0 -de 03_wind_off 1 265 2030 2000.0 1.0 0.0 -de 04_res 1 265 2030 2000.0 1.0 0.0 -de 05_nuclear 1 265 2030 1600.0 1.0 0.0 -de 06_coal 1 265 2030 0.0 0.0 0.0 -de 07_gas 1 265 2030 0.0 0.0 0.0 -de 08_non-res 1 265 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 265 2030 0.0 0.0 0.0 -de 01_solar 1 266 2030 2000.0 1.0 0.0 -de 02_wind_on 1 266 2030 2000.0 1.0 0.0 -de 03_wind_off 1 266 2030 2000.0 1.0 0.0 -de 04_res 1 266 2030 2000.0 1.0 0.0 -de 05_nuclear 1 266 2030 1700.0 1.0 0.0 -de 06_coal 1 266 2030 0.0 0.0 0.0 -de 07_gas 1 266 2030 0.0 0.0 0.0 -de 08_non-res 1 266 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 266 2030 0.0 0.0 0.0 -de 01_solar 1 267 2030 2000.0 1.0 0.0 -de 02_wind_on 1 267 2030 2000.0 1.0 0.0 -de 03_wind_off 1 267 2030 2000.0 1.0 0.0 -de 04_res 1 267 2030 2000.0 1.0 0.0 -de 05_nuclear 1 267 2030 1800.0 1.0 0.0 -de 06_coal 1 267 2030 0.0 0.0 0.0 -de 07_gas 1 267 2030 0.0 0.0 0.0 -de 08_non-res 1 267 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 267 2030 0.0 0.0 0.0 -de 01_solar 1 268 2030 2000.0 1.0 0.0 -de 02_wind_on 1 268 2030 2000.0 1.0 0.0 -de 03_wind_off 1 268 2030 2000.0 1.0 0.0 -de 04_res 1 268 2030 2000.0 1.0 0.0 -de 05_nuclear 1 268 2030 1900.0 1.0 0.0 -de 06_coal 1 268 2030 0.0 0.0 0.0 -de 07_gas 1 268 2030 0.0 0.0 0.0 -de 08_non-res 1 268 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 268 2030 0.0 0.0 0.0 -de 01_solar 1 269 2030 2000.0 1.0 0.0 -de 02_wind_on 1 269 2030 2000.0 1.0 0.0 -de 03_wind_off 1 269 2030 2000.0 1.0 0.0 -de 04_res 1 269 2030 2000.0 1.0 0.0 -de 05_nuclear 1 269 2030 2000.0 1.0 0.0 -de 06_coal 1 269 2030 0.0 0.0 0.0 -de 07_gas 1 269 2030 0.0 0.0 0.0 -de 08_non-res 1 269 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 269 2030 0.0 0.0 0.0 -de 01_solar 1 270 2030 2000.0 1.0 0.0 -de 02_wind_on 1 270 2030 2000.0 1.0 0.0 -de 03_wind_off 1 270 2030 2000.0 1.0 0.0 -de 04_res 1 270 2030 2000.0 1.0 0.0 -de 05_nuclear 1 270 2030 2000.0 1.0 0.0 -de 06_coal 1 270 2030 100.0 1.0 0.0 -de 07_gas 1 270 2030 0.0 0.0 0.0 -de 08_non-res 1 270 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 270 2030 0.0 0.0 0.0 -de 01_solar 1 271 2030 2000.0 1.0 0.0 -de 02_wind_on 1 271 2030 2000.0 1.0 0.0 -de 03_wind_off 1 271 2030 2000.0 1.0 0.0 -de 04_res 1 271 2030 2000.0 1.0 0.0 -de 05_nuclear 1 271 2030 2000.0 1.0 0.0 -de 06_coal 1 271 2030 200.0 1.0 0.0 -de 07_gas 1 271 2030 0.0 0.0 0.0 -de 08_non-res 1 271 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 271 2030 0.0 0.0 0.0 -de 01_solar 1 272 2030 2000.0 1.0 0.0 -de 02_wind_on 1 272 2030 2000.0 1.0 0.0 -de 03_wind_off 1 272 2030 2000.0 1.0 0.0 -de 04_res 1 272 2030 2000.0 1.0 0.0 -de 05_nuclear 1 272 2030 2000.0 1.0 0.0 -de 06_coal 1 272 2030 300.0 1.0 0.0 -de 07_gas 1 272 2030 0.0 0.0 0.0 -de 08_non-res 1 272 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 272 2030 0.0 0.0 0.0 -de 01_solar 1 273 2030 2000.0 1.0 0.0 -de 02_wind_on 1 273 2030 2000.0 1.0 0.0 -de 03_wind_off 1 273 2030 2000.0 1.0 0.0 -de 04_res 1 273 2030 2000.0 1.0 0.0 -de 05_nuclear 1 273 2030 2000.0 1.0 0.0 -de 06_coal 1 273 2030 400.0 1.0 0.0 -de 07_gas 1 273 2030 0.0 0.0 0.0 -de 08_non-res 1 273 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 273 2030 0.0 0.0 0.0 -de 01_solar 1 274 2030 2000.0 1.0 0.0 -de 02_wind_on 1 274 2030 2000.0 1.0 0.0 -de 03_wind_off 1 274 2030 2000.0 1.0 0.0 -de 04_res 1 274 2030 2000.0 1.0 0.0 -de 05_nuclear 1 274 2030 2000.0 1.0 0.0 -de 06_coal 1 274 2030 500.0 1.0 0.0 -de 07_gas 1 274 2030 0.0 0.0 0.0 -de 08_non-res 1 274 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 274 2030 0.0 0.0 0.0 -de 01_solar 1 275 2030 2000.0 1.0 0.0 -de 02_wind_on 1 275 2030 2000.0 1.0 0.0 -de 03_wind_off 1 275 2030 2000.0 1.0 0.0 -de 04_res 1 275 2030 2000.0 1.0 0.0 -de 05_nuclear 1 275 2030 2000.0 1.0 0.0 -de 06_coal 1 275 2030 600.0 1.0 0.0 -de 07_gas 1 275 2030 0.0 0.0 0.0 -de 08_non-res 1 275 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 275 2030 0.0 0.0 0.0 -de 01_solar 1 276 2030 2000.0 1.0 0.0 -de 02_wind_on 1 276 2030 2000.0 1.0 0.0 -de 03_wind_off 1 276 2030 2000.0 1.0 0.0 -de 04_res 1 276 2030 2000.0 1.0 0.0 -de 05_nuclear 1 276 2030 2000.0 1.0 0.0 -de 06_coal 1 276 2030 700.0 1.0 0.0 -de 07_gas 1 276 2030 0.0 0.0 0.0 -de 08_non-res 1 276 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 276 2030 0.0 0.0 0.0 -de 01_solar 1 277 2030 2000.0 1.0 0.0 -de 02_wind_on 1 277 2030 2000.0 1.0 0.0 -de 03_wind_off 1 277 2030 2000.0 1.0 0.0 -de 04_res 1 277 2030 2000.0 1.0 0.0 -de 05_nuclear 1 277 2030 2000.0 1.0 0.0 -de 06_coal 1 277 2030 800.0 1.0 0.0 -de 07_gas 1 277 2030 0.0 0.0 0.0 -de 08_non-res 1 277 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 277 2030 0.0 0.0 0.0 -de 01_solar 1 278 2030 2000.0 1.0 0.0 -de 02_wind_on 1 278 2030 2000.0 1.0 0.0 -de 03_wind_off 1 278 2030 2000.0 1.0 0.0 -de 04_res 1 278 2030 2000.0 1.0 0.0 -de 05_nuclear 1 278 2030 2000.0 1.0 0.0 -de 06_coal 1 278 2030 900.0 1.0 0.0 -de 07_gas 1 278 2030 0.0 0.0 0.0 -de 08_non-res 1 278 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 278 2030 0.0 0.0 0.0 -de 01_solar 1 279 2030 2000.0 1.0 0.0 -de 02_wind_on 1 279 2030 2000.0 1.0 0.0 -de 03_wind_off 1 279 2030 2000.0 1.0 0.0 -de 04_res 1 279 2030 2000.0 1.0 0.0 -de 05_nuclear 1 279 2030 2000.0 1.0 0.0 -de 06_coal 1 279 2030 1000.0 1.0 0.0 -de 07_gas 1 279 2030 0.0 0.0 0.0 -de 08_non-res 1 279 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 279 2030 0.0 0.0 0.0 -de 01_solar 1 280 2030 2000.0 1.0 0.0 -de 02_wind_on 1 280 2030 2000.0 1.0 0.0 -de 03_wind_off 1 280 2030 2000.0 1.0 0.0 -de 04_res 1 280 2030 2000.0 1.0 0.0 -de 05_nuclear 1 280 2030 2000.0 1.0 0.0 -de 06_coal 1 280 2030 1100.0 1.0 0.0 -de 07_gas 1 280 2030 0.0 0.0 0.0 -de 08_non-res 1 280 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 280 2030 0.0 0.0 0.0 -de 01_solar 1 281 2030 2000.0 1.0 0.0 -de 02_wind_on 1 281 2030 2000.0 1.0 0.0 -de 03_wind_off 1 281 2030 2000.0 1.0 0.0 -de 04_res 1 281 2030 2000.0 1.0 0.0 -de 05_nuclear 1 281 2030 2000.0 1.0 0.0 -de 06_coal 1 281 2030 1200.0 1.0 0.0 -de 07_gas 1 281 2030 0.0 0.0 0.0 -de 08_non-res 1 281 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 281 2030 0.0 0.0 0.0 -de 01_solar 1 282 2030 2000.0 1.0 0.0 -de 02_wind_on 1 282 2030 2000.0 1.0 0.0 -de 03_wind_off 1 282 2030 2000.0 1.0 0.0 -de 04_res 1 282 2030 2000.0 1.0 0.0 -de 05_nuclear 1 282 2030 2000.0 1.0 0.0 -de 06_coal 1 282 2030 1300.0 1.0 0.0 -de 07_gas 1 282 2030 0.0 0.0 0.0 -de 08_non-res 1 282 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 282 2030 0.0 0.0 0.0 -de 01_solar 1 283 2030 2000.0 1.0 0.0 -de 02_wind_on 1 283 2030 2000.0 1.0 0.0 -de 03_wind_off 1 283 2030 2000.0 1.0 0.0 -de 04_res 1 283 2030 2000.0 1.0 0.0 -de 05_nuclear 1 283 2030 2000.0 1.0 0.0 -de 06_coal 1 283 2030 1400.0 1.0 0.0 -de 07_gas 1 283 2030 0.0 0.0 0.0 -de 08_non-res 1 283 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 283 2030 0.0 0.0 0.0 -de 01_solar 1 284 2030 2000.0 1.0 0.0 -de 02_wind_on 1 284 2030 2000.0 1.0 0.0 -de 03_wind_off 1 284 2030 2000.0 1.0 0.0 -de 04_res 1 284 2030 2000.0 1.0 0.0 -de 05_nuclear 1 284 2030 2000.0 1.0 0.0 -de 06_coal 1 284 2030 1500.0 1.0 0.0 -de 07_gas 1 284 2030 0.0 0.0 0.0 -de 08_non-res 1 284 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 284 2030 0.0 0.0 0.0 -de 01_solar 1 285 2030 2000.0 1.0 0.0 -de 02_wind_on 1 285 2030 2000.0 1.0 0.0 -de 03_wind_off 1 285 2030 2000.0 1.0 0.0 -de 04_res 1 285 2030 2000.0 1.0 0.0 -de 05_nuclear 1 285 2030 2000.0 1.0 0.0 -de 06_coal 1 285 2030 1600.0 1.0 0.0 -de 07_gas 1 285 2030 0.0 0.0 0.0 -de 08_non-res 1 285 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 285 2030 0.0 0.0 0.0 -de 01_solar 1 286 2030 2000.0 1.0 0.0 -de 02_wind_on 1 286 2030 2000.0 1.0 0.0 -de 03_wind_off 1 286 2030 2000.0 1.0 0.0 -de 04_res 1 286 2030 2000.0 1.0 0.0 -de 05_nuclear 1 286 2030 2000.0 1.0 0.0 -de 06_coal 1 286 2030 1700.0 1.0 0.0 -de 07_gas 1 286 2030 0.0 0.0 0.0 -de 08_non-res 1 286 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 286 2030 0.0 0.0 0.0 -de 01_solar 1 287 2030 2000.0 1.0 0.0 -de 02_wind_on 1 287 2030 2000.0 1.0 0.0 -de 03_wind_off 1 287 2030 2000.0 1.0 0.0 -de 04_res 1 287 2030 2000.0 1.0 0.0 -de 05_nuclear 1 287 2030 2000.0 1.0 0.0 -de 06_coal 1 287 2030 1800.0 1.0 0.0 -de 07_gas 1 287 2030 0.0 0.0 0.0 -de 08_non-res 1 287 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 287 2030 0.0 0.0 0.0 -de 01_solar 1 288 2030 2000.0 1.0 0.0 -de 02_wind_on 1 288 2030 2000.0 1.0 0.0 -de 03_wind_off 1 288 2030 2000.0 1.0 0.0 -de 04_res 1 288 2030 2000.0 1.0 0.0 -de 05_nuclear 1 288 2030 2000.0 1.0 0.0 -de 06_coal 1 288 2030 1900.0 1.0 0.0 -de 07_gas 1 288 2030 0.0 0.0 0.0 -de 08_non-res 1 288 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 288 2030 0.0 0.0 0.0 -de 01_solar 1 289 2030 2000.0 1.0 0.0 -de 02_wind_on 1 289 2030 2000.0 1.0 0.0 -de 03_wind_off 1 289 2030 2000.0 1.0 0.0 -de 04_res 1 289 2030 2000.0 1.0 0.0 -de 05_nuclear 1 289 2030 2000.0 1.0 0.0 -de 06_coal 1 289 2030 2000.0 1.0 0.0 -de 07_gas 1 289 2030 0.0 0.0 0.0 -de 08_non-res 1 289 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 289 2030 0.0 0.0 0.0 -de 01_solar 1 290 2030 2000.0 1.0 0.0 -de 02_wind_on 1 290 2030 2000.0 1.0 0.0 -de 03_wind_off 1 290 2030 2000.0 1.0 0.0 -de 04_res 1 290 2030 2000.0 1.0 0.0 -de 05_nuclear 1 290 2030 2000.0 1.0 0.0 -de 06_coal 1 290 2030 2000.0 1.0 0.0 -de 07_gas 1 290 2030 100.0 1.0 0.0 -de 08_non-res 1 290 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 290 2030 0.0 0.0 0.0 -de 01_solar 1 291 2030 2000.0 1.0 0.0 -de 02_wind_on 1 291 2030 2000.0 1.0 0.0 -de 03_wind_off 1 291 2030 2000.0 1.0 0.0 -de 04_res 1 291 2030 2000.0 1.0 0.0 -de 05_nuclear 1 291 2030 2000.0 1.0 0.0 -de 06_coal 1 291 2030 2000.0 1.0 0.0 -de 07_gas 1 291 2030 200.0 1.0 0.0 -de 08_non-res 1 291 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 291 2030 0.0 0.0 0.0 -de 01_solar 1 292 2030 2000.0 1.0 0.0 -de 02_wind_on 1 292 2030 2000.0 1.0 0.0 -de 03_wind_off 1 292 2030 2000.0 1.0 0.0 -de 04_res 1 292 2030 2000.0 1.0 0.0 -de 05_nuclear 1 292 2030 2000.0 1.0 0.0 -de 06_coal 1 292 2030 2000.0 1.0 0.0 -de 07_gas 1 292 2030 300.0 1.0 0.0 -de 08_non-res 1 292 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 292 2030 0.0 0.0 0.0 -de 01_solar 1 293 2030 2000.0 1.0 0.0 -de 02_wind_on 1 293 2030 2000.0 1.0 0.0 -de 03_wind_off 1 293 2030 2000.0 1.0 0.0 -de 04_res 1 293 2030 2000.0 1.0 0.0 -de 05_nuclear 1 293 2030 2000.0 1.0 0.0 -de 06_coal 1 293 2030 2000.0 1.0 0.0 -de 07_gas 1 293 2030 400.0 1.0 0.0 -de 08_non-res 1 293 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 293 2030 0.0 0.0 0.0 -de 01_solar 1 294 2030 2000.0 1.0 0.0 -de 02_wind_on 1 294 2030 2000.0 1.0 0.0 -de 03_wind_off 1 294 2030 2000.0 1.0 0.0 -de 04_res 1 294 2030 2000.0 1.0 0.0 -de 05_nuclear 1 294 2030 2000.0 1.0 0.0 -de 06_coal 1 294 2030 2000.0 1.0 0.0 -de 07_gas 1 294 2030 500.0 1.0 0.0 -de 08_non-res 1 294 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 294 2030 0.0 0.0 0.0 -de 01_solar 1 295 2030 2000.0 1.0 0.0 -de 02_wind_on 1 295 2030 2000.0 1.0 0.0 -de 03_wind_off 1 295 2030 2000.0 1.0 0.0 -de 04_res 1 295 2030 2000.0 1.0 0.0 -de 05_nuclear 1 295 2030 2000.0 1.0 0.0 -de 06_coal 1 295 2030 2000.0 1.0 0.0 -de 07_gas 1 295 2030 600.0 1.0 0.0 -de 08_non-res 1 295 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 295 2030 0.0 0.0 0.0 -de 01_solar 1 296 2030 2000.0 1.0 0.0 -de 02_wind_on 1 296 2030 2000.0 1.0 0.0 -de 03_wind_off 1 296 2030 2000.0 1.0 0.0 -de 04_res 1 296 2030 2000.0 1.0 0.0 -de 05_nuclear 1 296 2030 2000.0 1.0 0.0 -de 06_coal 1 296 2030 2000.0 1.0 0.0 -de 07_gas 1 296 2030 700.0 1.0 0.0 -de 08_non-res 1 296 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 296 2030 0.0 0.0 0.0 -de 01_solar 1 297 2030 2000.0 1.0 0.0 -de 02_wind_on 1 297 2030 2000.0 1.0 0.0 -de 03_wind_off 1 297 2030 2000.0 1.0 0.0 -de 04_res 1 297 2030 2000.0 1.0 0.0 -de 05_nuclear 1 297 2030 2000.0 1.0 0.0 -de 06_coal 1 297 2030 2000.0 1.0 0.0 -de 07_gas 1 297 2030 800.0 1.0 0.0 -de 08_non-res 1 297 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 297 2030 0.0 0.0 0.0 -de 01_solar 1 298 2030 2000.0 1.0 0.0 -de 02_wind_on 1 298 2030 2000.0 1.0 0.0 -de 03_wind_off 1 298 2030 2000.0 1.0 0.0 -de 04_res 1 298 2030 2000.0 1.0 0.0 -de 05_nuclear 1 298 2030 2000.0 1.0 0.0 -de 06_coal 1 298 2030 2000.0 1.0 0.0 -de 07_gas 1 298 2030 900.0 1.0 0.0 -de 08_non-res 1 298 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 298 2030 0.0 0.0 0.0 -de 01_solar 1 299 2030 2000.0 1.0 0.0 -de 02_wind_on 1 299 2030 2000.0 1.0 0.0 -de 03_wind_off 1 299 2030 2000.0 1.0 0.0 -de 04_res 1 299 2030 2000.0 1.0 0.0 -de 05_nuclear 1 299 2030 2000.0 1.0 0.0 -de 06_coal 1 299 2030 2000.0 1.0 0.0 -de 07_gas 1 299 2030 1000.0 1.0 0.0 -de 08_non-res 1 299 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 299 2030 0.0 0.0 0.0 -de 01_solar 1 300 2030 2000.0 1.0 0.0 -de 02_wind_on 1 300 2030 2000.0 1.0 0.0 -de 03_wind_off 1 300 2030 2000.0 1.0 0.0 -de 04_res 1 300 2030 2000.0 1.0 0.0 -de 05_nuclear 1 300 2030 2000.0 1.0 0.0 -de 06_coal 1 300 2030 2000.0 1.0 0.0 -de 07_gas 1 300 2030 1100.0 1.0 0.0 -de 08_non-res 1 300 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 300 2030 0.0 0.0 0.0 -de 01_solar 1 301 2030 2000.0 1.0 0.0 -de 02_wind_on 1 301 2030 2000.0 1.0 0.0 -de 03_wind_off 1 301 2030 2000.0 1.0 0.0 -de 04_res 1 301 2030 2000.0 1.0 0.0 -de 05_nuclear 1 301 2030 2000.0 1.0 0.0 -de 06_coal 1 301 2030 2000.0 1.0 0.0 -de 07_gas 1 301 2030 1200.0 1.0 0.0 -de 08_non-res 1 301 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 301 2030 0.0 0.0 0.0 -de 01_solar 1 302 2030 2000.0 1.0 0.0 -de 02_wind_on 1 302 2030 2000.0 1.0 0.0 -de 03_wind_off 1 302 2030 2000.0 1.0 0.0 -de 04_res 1 302 2030 2000.0 1.0 0.0 -de 05_nuclear 1 302 2030 2000.0 1.0 0.0 -de 06_coal 1 302 2030 2000.0 1.0 0.0 -de 07_gas 1 302 2030 1300.0 1.0 0.0 -de 08_non-res 1 302 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 302 2030 0.0 0.0 0.0 -de 01_solar 1 303 2030 2000.0 1.0 0.0 -de 02_wind_on 1 303 2030 2000.0 1.0 0.0 -de 03_wind_off 1 303 2030 2000.0 1.0 0.0 -de 04_res 1 303 2030 2000.0 1.0 0.0 -de 05_nuclear 1 303 2030 2000.0 1.0 0.0 -de 06_coal 1 303 2030 2000.0 1.0 0.0 -de 07_gas 1 303 2030 1400.0 1.0 0.0 -de 08_non-res 1 303 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 303 2030 0.0 0.0 0.0 -de 01_solar 1 304 2030 2000.0 1.0 0.0 -de 02_wind_on 1 304 2030 2000.0 1.0 0.0 -de 03_wind_off 1 304 2030 2000.0 1.0 0.0 -de 04_res 1 304 2030 2000.0 1.0 0.0 -de 05_nuclear 1 304 2030 2000.0 1.0 0.0 -de 06_coal 1 304 2030 2000.0 1.0 0.0 -de 07_gas 1 304 2030 1500.0 1.0 0.0 -de 08_non-res 1 304 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 304 2030 0.0 0.0 0.0 -de 01_solar 1 305 2030 2000.0 1.0 0.0 -de 02_wind_on 1 305 2030 2000.0 1.0 0.0 -de 03_wind_off 1 305 2030 2000.0 1.0 0.0 -de 04_res 1 305 2030 2000.0 1.0 0.0 -de 05_nuclear 1 305 2030 2000.0 1.0 0.0 -de 06_coal 1 305 2030 2000.0 1.0 0.0 -de 07_gas 1 305 2030 1600.0 1.0 0.0 -de 08_non-res 1 305 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 305 2030 0.0 0.0 0.0 -de 01_solar 1 306 2030 2000.0 1.0 0.0 -de 02_wind_on 1 306 2030 2000.0 1.0 0.0 -de 03_wind_off 1 306 2030 2000.0 1.0 0.0 -de 04_res 1 306 2030 2000.0 1.0 0.0 -de 05_nuclear 1 306 2030 2000.0 1.0 0.0 -de 06_coal 1 306 2030 2000.0 1.0 0.0 -de 07_gas 1 306 2030 1700.0 1.0 0.0 -de 08_non-res 1 306 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 306 2030 0.0 0.0 0.0 -de 01_solar 1 307 2030 2000.0 1.0 0.0 -de 02_wind_on 1 307 2030 2000.0 1.0 0.0 -de 03_wind_off 1 307 2030 2000.0 1.0 0.0 -de 04_res 1 307 2030 2000.0 1.0 0.0 -de 05_nuclear 1 307 2030 2000.0 1.0 0.0 -de 06_coal 1 307 2030 2000.0 1.0 0.0 -de 07_gas 1 307 2030 1800.0 1.0 0.0 -de 08_non-res 1 307 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 307 2030 0.0 0.0 0.0 -de 01_solar 1 308 2030 2000.0 1.0 0.0 -de 02_wind_on 1 308 2030 2000.0 1.0 0.0 -de 03_wind_off 1 308 2030 2000.0 1.0 0.0 -de 04_res 1 308 2030 2000.0 1.0 0.0 -de 05_nuclear 1 308 2030 2000.0 1.0 0.0 -de 06_coal 1 308 2030 2000.0 1.0 0.0 -de 07_gas 1 308 2030 1900.0 1.0 0.0 -de 08_non-res 1 308 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 308 2030 0.0 0.0 0.0 -de 01_solar 1 309 2030 2000.0 1.0 0.0 -de 02_wind_on 1 309 2030 2000.0 1.0 0.0 -de 03_wind_off 1 309 2030 2000.0 1.0 0.0 -de 04_res 1 309 2030 2000.0 1.0 0.0 -de 05_nuclear 1 309 2030 2000.0 1.0 0.0 -de 06_coal 1 309 2030 2000.0 1.0 0.0 -de 07_gas 1 309 2030 2000.0 1.0 0.0 -de 08_non-res 1 309 2030 0.0 0.0 0.0 -de 09_hydro_pump 1 309 2030 0.0 0.0 0.0 -de 01_solar 1 310 2030 2000.0 1.0 0.0 -de 02_wind_on 1 310 2030 2000.0 1.0 0.0 -de 03_wind_off 1 310 2030 2000.0 1.0 0.0 -de 04_res 1 310 2030 2000.0 1.0 0.0 -de 05_nuclear 1 310 2030 2000.0 1.0 0.0 -de 06_coal 1 310 2030 2000.0 1.0 0.0 -de 07_gas 1 310 2030 2000.0 1.0 0.0 -de 08_non-res 1 310 2030 100.0 1.0 0.0 -de 09_hydro_pump 1 310 2030 0.0 0.0 0.0 -de 01_solar 1 311 2030 2000.0 1.0 0.0 -de 02_wind_on 1 311 2030 2000.0 1.0 0.0 -de 03_wind_off 1 311 2030 2000.0 1.0 0.0 -de 04_res 1 311 2030 2000.0 1.0 0.0 -de 05_nuclear 1 311 2030 2000.0 1.0 0.0 -de 06_coal 1 311 2030 2000.0 1.0 0.0 -de 07_gas 1 311 2030 2000.0 1.0 0.0 -de 08_non-res 1 311 2030 200.0 1.0 0.0 -de 09_hydro_pump 1 311 2030 0.0 0.0 0.0 -de 01_solar 1 312 2030 2000.0 1.0 0.0 -de 02_wind_on 1 312 2030 2000.0 1.0 0.0 -de 03_wind_off 1 312 2030 2000.0 1.0 0.0 -de 04_res 1 312 2030 2000.0 1.0 0.0 -de 05_nuclear 1 312 2030 2000.0 1.0 0.0 -de 06_coal 1 312 2030 2000.0 1.0 0.0 -de 07_gas 1 312 2030 2000.0 1.0 0.0 -de 08_non-res 1 312 2030 300.0 1.0 0.0 -de 09_hydro_pump 1 312 2030 0.0 0.0 0.0 -de 01_solar 1 313 2030 2000.0 1.0 0.0 -de 02_wind_on 1 313 2030 2000.0 1.0 0.0 -de 03_wind_off 1 313 2030 2000.0 1.0 0.0 -de 04_res 1 313 2030 2000.0 1.0 0.0 -de 05_nuclear 1 313 2030 2000.0 1.0 0.0 -de 06_coal 1 313 2030 2000.0 1.0 0.0 -de 07_gas 1 313 2030 2000.0 1.0 0.0 -de 08_non-res 1 313 2030 400.0 1.0 0.0 -de 09_hydro_pump 1 313 2030 0.0 0.0 0.0 -de 01_solar 1 314 2030 2000.0 1.0 0.0 -de 02_wind_on 1 314 2030 2000.0 1.0 0.0 -de 03_wind_off 1 314 2030 2000.0 1.0 0.0 -de 04_res 1 314 2030 2000.0 1.0 0.0 -de 05_nuclear 1 314 2030 2000.0 1.0 0.0 -de 06_coal 1 314 2030 2000.0 1.0 0.0 -de 07_gas 1 314 2030 2000.0 1.0 0.0 -de 08_non-res 1 314 2030 500.0 1.0 0.0 -de 09_hydro_pump 1 314 2030 0.0 0.0 0.0 -de 01_solar 1 315 2030 2000.0 1.0 0.0 -de 02_wind_on 1 315 2030 2000.0 1.0 0.0 -de 03_wind_off 1 315 2030 2000.0 1.0 0.0 -de 04_res 1 315 2030 2000.0 1.0 0.0 -de 05_nuclear 1 315 2030 2000.0 1.0 0.0 -de 06_coal 1 315 2030 2000.0 1.0 0.0 -de 07_gas 1 315 2030 2000.0 1.0 0.0 -de 08_non-res 1 315 2030 600.0 1.0 0.0 -de 09_hydro_pump 1 315 2030 0.0 0.0 0.0 -de 01_solar 1 316 2030 2000.0 1.0 0.0 -de 02_wind_on 1 316 2030 2000.0 1.0 0.0 -de 03_wind_off 1 316 2030 2000.0 1.0 0.0 -de 04_res 1 316 2030 2000.0 1.0 0.0 -de 05_nuclear 1 316 2030 2000.0 1.0 0.0 -de 06_coal 1 316 2030 2000.0 1.0 0.0 -de 07_gas 1 316 2030 2000.0 1.0 0.0 -de 08_non-res 1 316 2030 700.0 1.0 0.0 -de 09_hydro_pump 1 316 2030 0.0 0.0 0.0 -de 01_solar 1 317 2030 2000.0 1.0 0.0 -de 02_wind_on 1 317 2030 2000.0 1.0 0.0 -de 03_wind_off 1 317 2030 2000.0 1.0 0.0 -de 04_res 1 317 2030 2000.0 1.0 0.0 -de 05_nuclear 1 317 2030 2000.0 1.0 0.0 -de 06_coal 1 317 2030 2000.0 1.0 0.0 -de 07_gas 1 317 2030 2000.0 1.0 0.0 -de 08_non-res 1 317 2030 800.0 1.0 0.0 -de 09_hydro_pump 1 317 2030 0.0 0.0 0.0 -de 01_solar 1 318 2030 2000.0 1.0 0.0 -de 02_wind_on 1 318 2030 2000.0 1.0 0.0 -de 03_wind_off 1 318 2030 2000.0 1.0 0.0 -de 04_res 1 318 2030 2000.0 1.0 0.0 -de 05_nuclear 1 318 2030 2000.0 1.0 0.0 -de 06_coal 1 318 2030 2000.0 1.0 0.0 -de 07_gas 1 318 2030 2000.0 1.0 0.0 -de 08_non-res 1 318 2030 900.0 1.0 0.0 -de 09_hydro_pump 1 318 2030 0.0 0.0 0.0 -de 01_solar 1 319 2030 2000.0 1.0 0.0 -de 02_wind_on 1 319 2030 2000.0 1.0 0.0 -de 03_wind_off 1 319 2030 2000.0 1.0 0.0 -de 04_res 1 319 2030 2000.0 1.0 0.0 -de 05_nuclear 1 319 2030 2000.0 1.0 0.0 -de 06_coal 1 319 2030 2000.0 1.0 0.0 -de 07_gas 1 319 2030 2000.0 1.0 0.0 -de 08_non-res 1 319 2030 1000.0 1.0 0.0 -de 09_hydro_pump 1 319 2030 0.0 0.0 0.0 -de 01_solar 1 320 2030 2000.0 1.0 0.0 -de 02_wind_on 1 320 2030 2000.0 1.0 0.0 -de 03_wind_off 1 320 2030 2000.0 1.0 0.0 -de 04_res 1 320 2030 2000.0 1.0 0.0 -de 05_nuclear 1 320 2030 2000.0 1.0 0.0 -de 06_coal 1 320 2030 2000.0 1.0 0.0 -de 07_gas 1 320 2030 2000.0 1.0 0.0 -de 08_non-res 1 320 2030 1100.0 1.0 0.0 -de 09_hydro_pump 1 320 2030 0.0 0.0 0.0 -de 01_solar 1 321 2030 2000.0 1.0 0.0 -de 02_wind_on 1 321 2030 2000.0 1.0 0.0 -de 03_wind_off 1 321 2030 2000.0 1.0 0.0 -de 04_res 1 321 2030 2000.0 1.0 0.0 -de 05_nuclear 1 321 2030 2000.0 1.0 0.0 -de 06_coal 1 321 2030 2000.0 1.0 0.0 -de 07_gas 1 321 2030 2000.0 1.0 0.0 -de 08_non-res 1 321 2030 1200.0 1.0 0.0 -de 09_hydro_pump 1 321 2030 0.0 0.0 0.0 -de 01_solar 1 322 2030 2000.0 1.0 0.0 -de 02_wind_on 1 322 2030 2000.0 1.0 0.0 -de 03_wind_off 1 322 2030 2000.0 1.0 0.0 -de 04_res 1 322 2030 2000.0 1.0 0.0 -de 05_nuclear 1 322 2030 2000.0 1.0 0.0 -de 06_coal 1 322 2030 2000.0 1.0 0.0 -de 07_gas 1 322 2030 2000.0 1.0 0.0 -de 08_non-res 1 322 2030 1300.0 1.0 0.0 -de 09_hydro_pump 1 322 2030 0.0 0.0 0.0 -de 01_solar 1 323 2030 2000.0 1.0 0.0 -de 02_wind_on 1 323 2030 2000.0 1.0 0.0 -de 03_wind_off 1 323 2030 2000.0 1.0 0.0 -de 04_res 1 323 2030 2000.0 1.0 0.0 -de 05_nuclear 1 323 2030 2000.0 1.0 0.0 -de 06_coal 1 323 2030 2000.0 1.0 0.0 -de 07_gas 1 323 2030 2000.0 1.0 0.0 -de 08_non-res 1 323 2030 1400.0 1.0 0.0 -de 09_hydro_pump 1 323 2030 0.0 0.0 0.0 -de 01_solar 1 324 2030 2000.0 1.0 0.0 -de 02_wind_on 1 324 2030 2000.0 1.0 0.0 -de 03_wind_off 1 324 2030 2000.0 1.0 0.0 -de 04_res 1 324 2030 2000.0 1.0 0.0 -de 05_nuclear 1 324 2030 2000.0 1.0 0.0 -de 06_coal 1 324 2030 2000.0 1.0 0.0 -de 07_gas 1 324 2030 2000.0 1.0 0.0 -de 08_non-res 1 324 2030 1500.0 1.0 0.0 -de 09_hydro_pump 1 324 2030 0.0 0.0 0.0 -de 01_solar 1 325 2030 2000.0 1.0 0.0 -de 02_wind_on 1 325 2030 2000.0 1.0 0.0 -de 03_wind_off 1 325 2030 2000.0 1.0 0.0 -de 04_res 1 325 2030 2000.0 1.0 0.0 -de 05_nuclear 1 325 2030 2000.0 1.0 0.0 -de 06_coal 1 325 2030 2000.0 1.0 0.0 -de 07_gas 1 325 2030 2000.0 1.0 0.0 -de 08_non-res 1 325 2030 1600.0 1.0 0.0 -de 09_hydro_pump 1 325 2030 0.0 0.0 0.0 -de 01_solar 1 326 2030 2000.0 1.0 0.0 -de 02_wind_on 1 326 2030 2000.0 1.0 0.0 -de 03_wind_off 1 326 2030 2000.0 1.0 0.0 -de 04_res 1 326 2030 2000.0 1.0 0.0 -de 05_nuclear 1 326 2030 2000.0 1.0 0.0 -de 06_coal 1 326 2030 2000.0 1.0 0.0 -de 07_gas 1 326 2030 2000.0 1.0 0.0 -de 08_non-res 1 326 2030 1700.0 1.0 0.0 -de 09_hydro_pump 1 326 2030 0.0 0.0 0.0 -de 01_solar 1 327 2030 2000.0 1.0 0.0 -de 02_wind_on 1 327 2030 2000.0 1.0 0.0 -de 03_wind_off 1 327 2030 2000.0 1.0 0.0 -de 04_res 1 327 2030 2000.0 1.0 0.0 -de 05_nuclear 1 327 2030 2000.0 1.0 0.0 -de 06_coal 1 327 2030 2000.0 1.0 0.0 -de 07_gas 1 327 2030 2000.0 1.0 0.0 -de 08_non-res 1 327 2030 1800.0 1.0 0.0 -de 09_hydro_pump 1 327 2030 0.0 0.0 0.0 -de 01_solar 1 328 2030 2000.0 1.0 0.0 -de 02_wind_on 1 328 2030 2000.0 1.0 0.0 -de 03_wind_off 1 328 2030 2000.0 1.0 0.0 -de 04_res 1 328 2030 2000.0 1.0 0.0 -de 05_nuclear 1 328 2030 2000.0 1.0 0.0 -de 06_coal 1 328 2030 2000.0 1.0 0.0 -de 07_gas 1 328 2030 2000.0 1.0 0.0 -de 08_non-res 1 328 2030 1900.0 1.0 0.0 -de 09_hydro_pump 1 328 2030 0.0 0.0 0.0 -de 01_solar 1 329 2030 2000.0 1.0 0.0 -de 02_wind_on 1 329 2030 2000.0 1.0 0.0 -de 03_wind_off 1 329 2030 2000.0 1.0 0.0 -de 04_res 1 329 2030 2000.0 1.0 0.0 -de 05_nuclear 1 329 2030 2000.0 1.0 0.0 -de 06_coal 1 329 2030 2000.0 1.0 0.0 -de 07_gas 1 329 2030 2000.0 1.0 0.0 -de 08_non-res 1 329 2030 2000.0 1.0 0.0 -de 09_hydro_pump 1 329 2030 0.0 0.0 0.0 -de 01_solar 1 330 2030 2000.0 1.0 0.0 -de 02_wind_on 1 330 2030 2000.0 1.0 0.0 -de 03_wind_off 1 330 2030 2000.0 1.0 0.0 -de 04_res 1 330 2030 2000.0 1.0 0.0 -de 05_nuclear 1 330 2030 2000.0 1.0 0.0 -de 06_coal 1 330 2030 2000.0 1.0 0.0 -de 07_gas 1 330 2030 2000.0 1.0 0.0 -de 08_non-res 1 330 2030 2000.0 1.0 0.0 -de 09_hydro_pump 1 330 2030 100.0 1.0 0.0 -de 01_solar 1 331 2030 2000.0 1.0 0.0 -de 02_wind_on 1 331 2030 2000.0 1.0 0.0 -de 03_wind_off 1 331 2030 2000.0 1.0 0.0 -de 04_res 1 331 2030 2000.0 1.0 0.0 -de 05_nuclear 1 331 2030 2000.0 1.0 0.0 -de 06_coal 1 331 2030 2000.0 1.0 0.0 -de 07_gas 1 331 2030 2000.0 1.0 0.0 -de 08_non-res 1 331 2030 2000.0 1.0 0.0 -de 09_hydro_pump 1 331 2030 200.0 1.0 0.0 -de 01_solar 1 332 2030 2000.0 1.0 0.0 -de 02_wind_on 1 332 2030 2000.0 1.0 0.0 -de 03_wind_off 1 332 2030 2000.0 1.0 0.0 -de 04_res 1 332 2030 2000.0 1.0 0.0 -de 05_nuclear 1 332 2030 2000.0 1.0 0.0 -de 06_coal 1 332 2030 2000.0 1.0 0.0 -de 07_gas 1 332 2030 2000.0 1.0 0.0 -de 08_non-res 1 332 2030 2000.0 1.0 0.0 -de 09_hydro_pump 1 332 2030 300.0 1.0 0.0 -de 01_solar 1 333 2030 2000.0 1.0 0.0 -de 02_wind_on 1 333 2030 2000.0 1.0 0.0 -de 03_wind_off 1 333 2030 2000.0 1.0 0.0 -de 04_res 1 333 2030 2000.0 1.0 0.0 -de 05_nuclear 1 333 2030 2000.0 1.0 0.0 -de 06_coal 1 333 2030 2000.0 1.0 0.0 -de 07_gas 1 333 2030 2000.0 1.0 0.0 -de 08_non-res 1 333 2030 2000.0 1.0 0.0 -de 09_hydro_pump 1 333 2030 400.0 1.0 0.0 -de 01_solar 1 334 2030 2000.0 1.0 0.0 -de 02_wind_on 1 334 2030 2000.0 1.0 0.0 -de 03_wind_off 1 334 2030 2000.0 1.0 0.0 -de 04_res 1 334 2030 2000.0 1.0 0.0 -de 05_nuclear 1 334 2030 2000.0 1.0 0.0 -de 06_coal 1 334 2030 2000.0 1.0 0.0 -de 07_gas 1 334 2030 2000.0 1.0 0.0 -de 08_non-res 1 334 2030 2000.0 1.0 0.0 -de 09_hydro_pump 1 334 2030 500.0 1.0 0.0 -de 01_solar 1 335 2030 2000.0 1.0 0.0 -de 02_wind_on 1 335 2030 2000.0 1.0 0.0 -de 03_wind_off 1 335 2030 2000.0 1.0 0.0 -de 04_res 1 335 2030 2000.0 1.0 0.0 -de 05_nuclear 1 335 2030 2000.0 1.0 0.0 -de 06_coal 1 335 2030 2000.0 1.0 0.0 -de 07_gas 1 335 2030 2000.0 1.0 0.0 -de 08_non-res 1 335 2030 2000.0 1.0 0.0 -de 09_hydro_pump 1 335 2030 600.0 1.0 0.0 -de 01_solar 1 336 2030 2000.0 1.0 0.0 -de 02_wind_on 1 336 2030 2000.0 1.0 0.0 -de 03_wind_off 1 336 2030 2000.0 1.0 0.0 -de 04_res 1 336 2030 2000.0 1.0 0.0 -de 05_nuclear 1 336 2030 2000.0 1.0 0.0 -de 06_coal 1 336 2030 2000.0 1.0 0.0 -de 07_gas 1 336 2030 2000.0 1.0 0.0 -de 08_non-res 1 336 2030 2000.0 1.0 0.0 -de 09_hydro_pump 1 336 2030 700.0 1.0 0.0 -fr 01_solar 1 1 2030 0.0 0.0 0.0 -fr 02_wind_on 1 1 2030 0.0 0.0 0.0 -fr 03_wind_off 1 1 2030 0.0 0.0 0.0 -fr 04_res 1 1 2030 0.0 0.0 0.0 -fr 05_nuclear 1 1 2030 0.0 0.0 0.0 -fr 06_coal 1 1 2030 0.0 0.0 0.0 -fr 07_gas 1 1 2030 0.0 0.0 0.0 -fr 08_non-res 1 1 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 1 2030 0.0 0.0 0.0 -fr 01_solar 1 2 2030 100.0 1.0 0.0 -fr 02_wind_on 1 2 2030 0.0 0.0 0.0 -fr 03_wind_off 1 2 2030 0.0 0.0 0.0 -fr 04_res 1 2 2030 0.0 0.0 0.0 -fr 05_nuclear 1 2 2030 0.0 0.0 0.0 -fr 06_coal 1 2 2030 0.0 0.0 0.0 -fr 07_gas 1 2 2030 0.0 0.0 0.0 -fr 08_non-res 1 2 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 2 2030 0.0 0.0 0.0 -fr 01_solar 1 3 2030 200.0 1.0 0.0 -fr 02_wind_on 1 3 2030 0.0 0.0 0.0 -fr 03_wind_off 1 3 2030 0.0 0.0 0.0 -fr 04_res 1 3 2030 0.0 0.0 0.0 -fr 05_nuclear 1 3 2030 0.0 0.0 0.0 -fr 06_coal 1 3 2030 0.0 0.0 0.0 -fr 07_gas 1 3 2030 0.0 0.0 0.0 -fr 08_non-res 1 3 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 3 2030 0.0 0.0 0.0 -fr 01_solar 1 4 2030 300.0 1.0 0.0 -fr 02_wind_on 1 4 2030 0.0 0.0 0.0 -fr 03_wind_off 1 4 2030 0.0 0.0 0.0 -fr 04_res 1 4 2030 0.0 0.0 0.0 -fr 05_nuclear 1 4 2030 0.0 0.0 0.0 -fr 06_coal 1 4 2030 0.0 0.0 0.0 -fr 07_gas 1 4 2030 0.0 0.0 0.0 -fr 08_non-res 1 4 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 4 2030 0.0 0.0 0.0 -fr 01_solar 1 5 2030 400.0 1.0 0.0 -fr 02_wind_on 1 5 2030 0.0 0.0 0.0 -fr 03_wind_off 1 5 2030 0.0 0.0 0.0 -fr 04_res 1 5 2030 0.0 0.0 0.0 -fr 05_nuclear 1 5 2030 0.0 0.0 0.0 -fr 06_coal 1 5 2030 0.0 0.0 0.0 -fr 07_gas 1 5 2030 0.0 0.0 0.0 -fr 08_non-res 1 5 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 5 2030 0.0 0.0 0.0 -fr 01_solar 1 6 2030 500.0 1.0 0.0 -fr 02_wind_on 1 6 2030 0.0 0.0 0.0 -fr 03_wind_off 1 6 2030 0.0 0.0 0.0 -fr 04_res 1 6 2030 0.0 0.0 0.0 -fr 05_nuclear 1 6 2030 0.0 0.0 0.0 -fr 06_coal 1 6 2030 0.0 0.0 0.0 -fr 07_gas 1 6 2030 0.0 0.0 0.0 -fr 08_non-res 1 6 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 6 2030 0.0 0.0 0.0 -fr 01_solar 1 7 2030 600.0 1.0 0.0 -fr 02_wind_on 1 7 2030 0.0 0.0 0.0 -fr 03_wind_off 1 7 2030 0.0 0.0 0.0 -fr 04_res 1 7 2030 0.0 0.0 0.0 -fr 05_nuclear 1 7 2030 0.0 0.0 0.0 -fr 06_coal 1 7 2030 0.0 0.0 0.0 -fr 07_gas 1 7 2030 0.0 0.0 0.0 -fr 08_non-res 1 7 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 7 2030 0.0 0.0 0.0 -fr 01_solar 1 8 2030 700.0 1.0 0.0 -fr 02_wind_on 1 8 2030 0.0 0.0 0.0 -fr 03_wind_off 1 8 2030 0.0 0.0 0.0 -fr 04_res 1 8 2030 0.0 0.0 0.0 -fr 05_nuclear 1 8 2030 0.0 0.0 0.0 -fr 06_coal 1 8 2030 0.0 0.0 0.0 -fr 07_gas 1 8 2030 0.0 0.0 0.0 -fr 08_non-res 1 8 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 8 2030 0.0 0.0 0.0 -fr 01_solar 1 9 2030 800.0 1.0 0.0 -fr 02_wind_on 1 9 2030 0.0 0.0 0.0 -fr 03_wind_off 1 9 2030 0.0 0.0 0.0 -fr 04_res 1 9 2030 0.0 0.0 0.0 -fr 05_nuclear 1 9 2030 0.0 0.0 0.0 -fr 06_coal 1 9 2030 0.0 0.0 0.0 -fr 07_gas 1 9 2030 0.0 0.0 0.0 -fr 08_non-res 1 9 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 9 2030 0.0 0.0 0.0 -fr 01_solar 1 10 2030 900.0 1.0 0.0 -fr 02_wind_on 1 10 2030 0.0 0.0 0.0 -fr 03_wind_off 1 10 2030 0.0 0.0 0.0 -fr 04_res 1 10 2030 0.0 0.0 0.0 -fr 05_nuclear 1 10 2030 0.0 0.0 0.0 -fr 06_coal 1 10 2030 0.0 0.0 0.0 -fr 07_gas 1 10 2030 0.0 0.0 0.0 -fr 08_non-res 1 10 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 10 2030 0.0 0.0 0.0 -fr 01_solar 1 11 2030 1000.0 1.0 0.0 -fr 02_wind_on 1 11 2030 0.0 0.0 0.0 -fr 03_wind_off 1 11 2030 0.0 0.0 0.0 -fr 04_res 1 11 2030 0.0 0.0 0.0 -fr 05_nuclear 1 11 2030 0.0 0.0 0.0 -fr 06_coal 1 11 2030 0.0 0.0 0.0 -fr 07_gas 1 11 2030 0.0 0.0 0.0 -fr 08_non-res 1 11 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 11 2030 0.0 0.0 0.0 -fr 01_solar 1 12 2030 1100.0 1.0 0.0 -fr 02_wind_on 1 12 2030 0.0 0.0 0.0 -fr 03_wind_off 1 12 2030 0.0 0.0 0.0 -fr 04_res 1 12 2030 0.0 0.0 0.0 -fr 05_nuclear 1 12 2030 0.0 0.0 0.0 -fr 06_coal 1 12 2030 0.0 0.0 0.0 -fr 07_gas 1 12 2030 0.0 0.0 0.0 -fr 08_non-res 1 12 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 12 2030 0.0 0.0 0.0 -fr 01_solar 1 13 2030 1200.0 1.0 0.0 -fr 02_wind_on 1 13 2030 0.0 0.0 0.0 -fr 03_wind_off 1 13 2030 0.0 0.0 0.0 -fr 04_res 1 13 2030 0.0 0.0 0.0 -fr 05_nuclear 1 13 2030 0.0 0.0 0.0 -fr 06_coal 1 13 2030 0.0 0.0 0.0 -fr 07_gas 1 13 2030 0.0 0.0 0.0 -fr 08_non-res 1 13 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 13 2030 0.0 0.0 0.0 -fr 01_solar 1 14 2030 1300.0 1.0 0.0 -fr 02_wind_on 1 14 2030 0.0 0.0 0.0 -fr 03_wind_off 1 14 2030 0.0 0.0 0.0 -fr 04_res 1 14 2030 0.0 0.0 0.0 -fr 05_nuclear 1 14 2030 0.0 0.0 0.0 -fr 06_coal 1 14 2030 0.0 0.0 0.0 -fr 07_gas 1 14 2030 0.0 0.0 0.0 -fr 08_non-res 1 14 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 14 2030 0.0 0.0 0.0 -fr 01_solar 1 15 2030 1400.0 1.0 0.0 -fr 02_wind_on 1 15 2030 0.0 0.0 0.0 -fr 03_wind_off 1 15 2030 0.0 0.0 0.0 -fr 04_res 1 15 2030 0.0 0.0 0.0 -fr 05_nuclear 1 15 2030 0.0 0.0 0.0 -fr 06_coal 1 15 2030 0.0 0.0 0.0 -fr 07_gas 1 15 2030 0.0 0.0 0.0 -fr 08_non-res 1 15 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 15 2030 0.0 0.0 0.0 -fr 01_solar 1 16 2030 1500.0 1.0 0.0 -fr 02_wind_on 1 16 2030 0.0 0.0 0.0 -fr 03_wind_off 1 16 2030 0.0 0.0 0.0 -fr 04_res 1 16 2030 0.0 0.0 0.0 -fr 05_nuclear 1 16 2030 0.0 0.0 0.0 -fr 06_coal 1 16 2030 0.0 0.0 0.0 -fr 07_gas 1 16 2030 0.0 0.0 0.0 -fr 08_non-res 1 16 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 16 2030 0.0 0.0 0.0 -fr 01_solar 1 17 2030 1600.0 1.0 0.0 -fr 02_wind_on 1 17 2030 0.0 0.0 0.0 -fr 03_wind_off 1 17 2030 0.0 0.0 0.0 -fr 04_res 1 17 2030 0.0 0.0 0.0 -fr 05_nuclear 1 17 2030 0.0 0.0 0.0 -fr 06_coal 1 17 2030 0.0 0.0 0.0 -fr 07_gas 1 17 2030 0.0 0.0 0.0 -fr 08_non-res 1 17 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 17 2030 0.0 0.0 0.0 -fr 01_solar 1 18 2030 1700.0 1.0 0.0 -fr 02_wind_on 1 18 2030 0.0 0.0 0.0 -fr 03_wind_off 1 18 2030 0.0 0.0 0.0 -fr 04_res 1 18 2030 0.0 0.0 0.0 -fr 05_nuclear 1 18 2030 0.0 0.0 0.0 -fr 06_coal 1 18 2030 0.0 0.0 0.0 -fr 07_gas 1 18 2030 0.0 0.0 0.0 -fr 08_non-res 1 18 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 18 2030 0.0 0.0 0.0 -fr 01_solar 1 19 2030 1800.0 1.0 0.0 -fr 02_wind_on 1 19 2030 0.0 0.0 0.0 -fr 03_wind_off 1 19 2030 0.0 0.0 0.0 -fr 04_res 1 19 2030 0.0 0.0 0.0 -fr 05_nuclear 1 19 2030 0.0 0.0 0.0 -fr 06_coal 1 19 2030 0.0 0.0 0.0 -fr 07_gas 1 19 2030 0.0 0.0 0.0 -fr 08_non-res 1 19 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 19 2030 0.0 0.0 0.0 -fr 01_solar 1 20 2030 1900.0 1.0 0.0 -fr 02_wind_on 1 20 2030 0.0 0.0 0.0 -fr 03_wind_off 1 20 2030 0.0 0.0 0.0 -fr 04_res 1 20 2030 0.0 0.0 0.0 -fr 05_nuclear 1 20 2030 0.0 0.0 0.0 -fr 06_coal 1 20 2030 0.0 0.0 0.0 -fr 07_gas 1 20 2030 0.0 0.0 0.0 -fr 08_non-res 1 20 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 20 2030 0.0 0.0 0.0 -fr 01_solar 1 21 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 21 2030 0.0 0.0 0.0 -fr 03_wind_off 1 21 2030 0.0 0.0 0.0 -fr 04_res 1 21 2030 0.0 0.0 0.0 -fr 05_nuclear 1 21 2030 0.0 0.0 0.0 -fr 06_coal 1 21 2030 0.0 0.0 0.0 -fr 07_gas 1 21 2030 0.0 0.0 0.0 -fr 08_non-res 1 21 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 21 2030 0.0 0.0 0.0 -fr 01_solar 1 22 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 22 2030 100.0 1.0 0.0 -fr 03_wind_off 1 22 2030 0.0 0.0 0.0 -fr 04_res 1 22 2030 0.0 0.0 0.0 -fr 05_nuclear 1 22 2030 0.0 0.0 0.0 -fr 06_coal 1 22 2030 0.0 0.0 0.0 -fr 07_gas 1 22 2030 0.0 0.0 0.0 -fr 08_non-res 1 22 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 22 2030 0.0 0.0 0.0 -fr 01_solar 1 23 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 23 2030 200.0 1.0 0.0 -fr 03_wind_off 1 23 2030 0.0 0.0 0.0 -fr 04_res 1 23 2030 0.0 0.0 0.0 -fr 05_nuclear 1 23 2030 0.0 0.0 0.0 -fr 06_coal 1 23 2030 0.0 0.0 0.0 -fr 07_gas 1 23 2030 0.0 0.0 0.0 -fr 08_non-res 1 23 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 23 2030 0.0 0.0 0.0 -fr 01_solar 1 24 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 24 2030 300.0 1.0 0.0 -fr 03_wind_off 1 24 2030 0.0 0.0 0.0 -fr 04_res 1 24 2030 0.0 0.0 0.0 -fr 05_nuclear 1 24 2030 0.0 0.0 0.0 -fr 06_coal 1 24 2030 0.0 0.0 0.0 -fr 07_gas 1 24 2030 0.0 0.0 0.0 -fr 08_non-res 1 24 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 24 2030 0.0 0.0 0.0 -fr 01_solar 1 25 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 25 2030 400.0 1.0 0.0 -fr 03_wind_off 1 25 2030 0.0 0.0 0.0 -fr 04_res 1 25 2030 0.0 0.0 0.0 -fr 05_nuclear 1 25 2030 0.0 0.0 0.0 -fr 06_coal 1 25 2030 0.0 0.0 0.0 -fr 07_gas 1 25 2030 0.0 0.0 0.0 -fr 08_non-res 1 25 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 25 2030 0.0 0.0 0.0 -fr 01_solar 1 26 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 26 2030 500.0 1.0 0.0 -fr 03_wind_off 1 26 2030 0.0 0.0 0.0 -fr 04_res 1 26 2030 0.0 0.0 0.0 -fr 05_nuclear 1 26 2030 0.0 0.0 0.0 -fr 06_coal 1 26 2030 0.0 0.0 0.0 -fr 07_gas 1 26 2030 0.0 0.0 0.0 -fr 08_non-res 1 26 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 26 2030 0.0 0.0 0.0 -fr 01_solar 1 27 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 27 2030 600.0 1.0 0.0 -fr 03_wind_off 1 27 2030 0.0 0.0 0.0 -fr 04_res 1 27 2030 0.0 0.0 0.0 -fr 05_nuclear 1 27 2030 0.0 0.0 0.0 -fr 06_coal 1 27 2030 0.0 0.0 0.0 -fr 07_gas 1 27 2030 0.0 0.0 0.0 -fr 08_non-res 1 27 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 27 2030 0.0 0.0 0.0 -fr 01_solar 1 28 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 28 2030 700.0 1.0 0.0 -fr 03_wind_off 1 28 2030 0.0 0.0 0.0 -fr 04_res 1 28 2030 0.0 0.0 0.0 -fr 05_nuclear 1 28 2030 0.0 0.0 0.0 -fr 06_coal 1 28 2030 0.0 0.0 0.0 -fr 07_gas 1 28 2030 0.0 0.0 0.0 -fr 08_non-res 1 28 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 28 2030 0.0 0.0 0.0 -fr 01_solar 1 29 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 29 2030 800.0 1.0 0.0 -fr 03_wind_off 1 29 2030 0.0 0.0 0.0 -fr 04_res 1 29 2030 0.0 0.0 0.0 -fr 05_nuclear 1 29 2030 0.0 0.0 0.0 -fr 06_coal 1 29 2030 0.0 0.0 0.0 -fr 07_gas 1 29 2030 0.0 0.0 0.0 -fr 08_non-res 1 29 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 29 2030 0.0 0.0 0.0 -fr 01_solar 1 30 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 30 2030 900.0 1.0 0.0 -fr 03_wind_off 1 30 2030 0.0 0.0 0.0 -fr 04_res 1 30 2030 0.0 0.0 0.0 -fr 05_nuclear 1 30 2030 0.0 0.0 0.0 -fr 06_coal 1 30 2030 0.0 0.0 0.0 -fr 07_gas 1 30 2030 0.0 0.0 0.0 -fr 08_non-res 1 30 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 30 2030 0.0 0.0 0.0 -fr 01_solar 1 31 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 31 2030 1000.0 1.0 0.0 -fr 03_wind_off 1 31 2030 0.0 0.0 0.0 -fr 04_res 1 31 2030 0.0 0.0 0.0 -fr 05_nuclear 1 31 2030 0.0 0.0 0.0 -fr 06_coal 1 31 2030 0.0 0.0 0.0 -fr 07_gas 1 31 2030 0.0 0.0 0.0 -fr 08_non-res 1 31 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 31 2030 0.0 0.0 0.0 -fr 01_solar 1 32 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 32 2030 1100.0 1.0 0.0 -fr 03_wind_off 1 32 2030 0.0 0.0 0.0 -fr 04_res 1 32 2030 0.0 0.0 0.0 -fr 05_nuclear 1 32 2030 0.0 0.0 0.0 -fr 06_coal 1 32 2030 0.0 0.0 0.0 -fr 07_gas 1 32 2030 0.0 0.0 0.0 -fr 08_non-res 1 32 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 32 2030 0.0 0.0 0.0 -fr 01_solar 1 33 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 33 2030 1200.0 1.0 0.0 -fr 03_wind_off 1 33 2030 0.0 0.0 0.0 -fr 04_res 1 33 2030 0.0 0.0 0.0 -fr 05_nuclear 1 33 2030 0.0 0.0 0.0 -fr 06_coal 1 33 2030 0.0 0.0 0.0 -fr 07_gas 1 33 2030 0.0 0.0 0.0 -fr 08_non-res 1 33 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 33 2030 0.0 0.0 0.0 -fr 01_solar 1 34 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 34 2030 1300.0 1.0 0.0 -fr 03_wind_off 1 34 2030 0.0 0.0 0.0 -fr 04_res 1 34 2030 0.0 0.0 0.0 -fr 05_nuclear 1 34 2030 0.0 0.0 0.0 -fr 06_coal 1 34 2030 0.0 0.0 0.0 -fr 07_gas 1 34 2030 0.0 0.0 0.0 -fr 08_non-res 1 34 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 34 2030 0.0 0.0 0.0 -fr 01_solar 1 35 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 35 2030 1400.0 1.0 0.0 -fr 03_wind_off 1 35 2030 0.0 0.0 0.0 -fr 04_res 1 35 2030 0.0 0.0 0.0 -fr 05_nuclear 1 35 2030 0.0 0.0 0.0 -fr 06_coal 1 35 2030 0.0 0.0 0.0 -fr 07_gas 1 35 2030 0.0 0.0 0.0 -fr 08_non-res 1 35 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 35 2030 0.0 0.0 0.0 -fr 01_solar 1 36 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 36 2030 1500.0 1.0 0.0 -fr 03_wind_off 1 36 2030 0.0 0.0 0.0 -fr 04_res 1 36 2030 0.0 0.0 0.0 -fr 05_nuclear 1 36 2030 0.0 0.0 0.0 -fr 06_coal 1 36 2030 0.0 0.0 0.0 -fr 07_gas 1 36 2030 0.0 0.0 0.0 -fr 08_non-res 1 36 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 36 2030 0.0 0.0 0.0 -fr 01_solar 1 37 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 37 2030 1600.0 1.0 0.0 -fr 03_wind_off 1 37 2030 0.0 0.0 0.0 -fr 04_res 1 37 2030 0.0 0.0 0.0 -fr 05_nuclear 1 37 2030 0.0 0.0 0.0 -fr 06_coal 1 37 2030 0.0 0.0 0.0 -fr 07_gas 1 37 2030 0.0 0.0 0.0 -fr 08_non-res 1 37 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 37 2030 0.0 0.0 0.0 -fr 01_solar 1 38 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 38 2030 1700.0 1.0 0.0 -fr 03_wind_off 1 38 2030 0.0 0.0 0.0 -fr 04_res 1 38 2030 0.0 0.0 0.0 -fr 05_nuclear 1 38 2030 0.0 0.0 0.0 -fr 06_coal 1 38 2030 0.0 0.0 0.0 -fr 07_gas 1 38 2030 0.0 0.0 0.0 -fr 08_non-res 1 38 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 38 2030 0.0 0.0 0.0 -fr 01_solar 1 39 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 39 2030 1800.0 1.0 0.0 -fr 03_wind_off 1 39 2030 0.0 0.0 0.0 -fr 04_res 1 39 2030 0.0 0.0 0.0 -fr 05_nuclear 1 39 2030 0.0 0.0 0.0 -fr 06_coal 1 39 2030 0.0 0.0 0.0 -fr 07_gas 1 39 2030 0.0 0.0 0.0 -fr 08_non-res 1 39 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 39 2030 0.0 0.0 0.0 -fr 01_solar 1 40 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 40 2030 1900.0 1.0 0.0 -fr 03_wind_off 1 40 2030 0.0 0.0 0.0 -fr 04_res 1 40 2030 0.0 0.0 0.0 -fr 05_nuclear 1 40 2030 0.0 0.0 0.0 -fr 06_coal 1 40 2030 0.0 0.0 0.0 -fr 07_gas 1 40 2030 0.0 0.0 0.0 -fr 08_non-res 1 40 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 40 2030 0.0 0.0 0.0 -fr 01_solar 1 41 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 41 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 41 2030 0.0 0.0 0.0 -fr 04_res 1 41 2030 0.0 0.0 0.0 -fr 05_nuclear 1 41 2030 0.0 0.0 0.0 -fr 06_coal 1 41 2030 0.0 0.0 0.0 -fr 07_gas 1 41 2030 0.0 0.0 0.0 -fr 08_non-res 1 41 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 41 2030 0.0 0.0 0.0 -fr 01_solar 1 42 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 42 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 42 2030 100.0 1.0 0.0 -fr 04_res 1 42 2030 0.0 0.0 0.0 -fr 05_nuclear 1 42 2030 0.0 0.0 0.0 -fr 06_coal 1 42 2030 0.0 0.0 0.0 -fr 07_gas 1 42 2030 0.0 0.0 0.0 -fr 08_non-res 1 42 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 42 2030 0.0 0.0 0.0 -fr 01_solar 1 43 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 43 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 43 2030 200.0 1.0 0.0 -fr 04_res 1 43 2030 0.0 0.0 0.0 -fr 05_nuclear 1 43 2030 0.0 0.0 0.0 -fr 06_coal 1 43 2030 0.0 0.0 0.0 -fr 07_gas 1 43 2030 0.0 0.0 0.0 -fr 08_non-res 1 43 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 43 2030 0.0 0.0 0.0 -fr 01_solar 1 44 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 44 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 44 2030 300.0 1.0 0.0 -fr 04_res 1 44 2030 0.0 0.0 0.0 -fr 05_nuclear 1 44 2030 0.0 0.0 0.0 -fr 06_coal 1 44 2030 0.0 0.0 0.0 -fr 07_gas 1 44 2030 0.0 0.0 0.0 -fr 08_non-res 1 44 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 44 2030 0.0 0.0 0.0 -fr 01_solar 1 45 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 45 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 45 2030 400.0 1.0 0.0 -fr 04_res 1 45 2030 0.0 0.0 0.0 -fr 05_nuclear 1 45 2030 0.0 0.0 0.0 -fr 06_coal 1 45 2030 0.0 0.0 0.0 -fr 07_gas 1 45 2030 0.0 0.0 0.0 -fr 08_non-res 1 45 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 45 2030 0.0 0.0 0.0 -fr 01_solar 1 46 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 46 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 46 2030 500.0 1.0 0.0 -fr 04_res 1 46 2030 0.0 0.0 0.0 -fr 05_nuclear 1 46 2030 0.0 0.0 0.0 -fr 06_coal 1 46 2030 0.0 0.0 0.0 -fr 07_gas 1 46 2030 0.0 0.0 0.0 -fr 08_non-res 1 46 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 46 2030 0.0 0.0 0.0 -fr 01_solar 1 47 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 47 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 47 2030 600.0 1.0 0.0 -fr 04_res 1 47 2030 0.0 0.0 0.0 -fr 05_nuclear 1 47 2030 0.0 0.0 0.0 -fr 06_coal 1 47 2030 0.0 0.0 0.0 -fr 07_gas 1 47 2030 0.0 0.0 0.0 -fr 08_non-res 1 47 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 47 2030 0.0 0.0 0.0 -fr 01_solar 1 48 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 48 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 48 2030 700.0 1.0 0.0 -fr 04_res 1 48 2030 0.0 0.0 0.0 -fr 05_nuclear 1 48 2030 0.0 0.0 0.0 -fr 06_coal 1 48 2030 0.0 0.0 0.0 -fr 07_gas 1 48 2030 0.0 0.0 0.0 -fr 08_non-res 1 48 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 48 2030 0.0 0.0 0.0 -fr 01_solar 1 49 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 49 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 49 2030 800.0 1.0 0.0 -fr 04_res 1 49 2030 0.0 0.0 0.0 -fr 05_nuclear 1 49 2030 0.0 0.0 0.0 -fr 06_coal 1 49 2030 0.0 0.0 0.0 -fr 07_gas 1 49 2030 0.0 0.0 0.0 -fr 08_non-res 1 49 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 49 2030 0.0 0.0 0.0 -fr 01_solar 1 50 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 50 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 50 2030 900.0 1.0 0.0 -fr 04_res 1 50 2030 0.0 0.0 0.0 -fr 05_nuclear 1 50 2030 0.0 0.0 0.0 -fr 06_coal 1 50 2030 0.0 0.0 0.0 -fr 07_gas 1 50 2030 0.0 0.0 0.0 -fr 08_non-res 1 50 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 50 2030 0.0 0.0 0.0 -fr 01_solar 1 51 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 51 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 51 2030 1000.0 1.0 0.0 -fr 04_res 1 51 2030 0.0 0.0 0.0 -fr 05_nuclear 1 51 2030 0.0 0.0 0.0 -fr 06_coal 1 51 2030 0.0 0.0 0.0 -fr 07_gas 1 51 2030 0.0 0.0 0.0 -fr 08_non-res 1 51 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 51 2030 0.0 0.0 0.0 -fr 01_solar 1 52 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 52 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 52 2030 1100.0 1.0 0.0 -fr 04_res 1 52 2030 0.0 0.0 0.0 -fr 05_nuclear 1 52 2030 0.0 0.0 0.0 -fr 06_coal 1 52 2030 0.0 0.0 0.0 -fr 07_gas 1 52 2030 0.0 0.0 0.0 -fr 08_non-res 1 52 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 52 2030 0.0 0.0 0.0 -fr 01_solar 1 53 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 53 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 53 2030 1200.0 1.0 0.0 -fr 04_res 1 53 2030 0.0 0.0 0.0 -fr 05_nuclear 1 53 2030 0.0 0.0 0.0 -fr 06_coal 1 53 2030 0.0 0.0 0.0 -fr 07_gas 1 53 2030 0.0 0.0 0.0 -fr 08_non-res 1 53 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 53 2030 0.0 0.0 0.0 -fr 01_solar 1 54 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 54 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 54 2030 1300.0 1.0 0.0 -fr 04_res 1 54 2030 0.0 0.0 0.0 -fr 05_nuclear 1 54 2030 0.0 0.0 0.0 -fr 06_coal 1 54 2030 0.0 0.0 0.0 -fr 07_gas 1 54 2030 0.0 0.0 0.0 -fr 08_non-res 1 54 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 54 2030 0.0 0.0 0.0 -fr 01_solar 1 55 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 55 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 55 2030 1400.0 1.0 0.0 -fr 04_res 1 55 2030 0.0 0.0 0.0 -fr 05_nuclear 1 55 2030 0.0 0.0 0.0 -fr 06_coal 1 55 2030 0.0 0.0 0.0 -fr 07_gas 1 55 2030 0.0 0.0 0.0 -fr 08_non-res 1 55 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 55 2030 0.0 0.0 0.0 -fr 01_solar 1 56 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 56 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 56 2030 1500.0 1.0 0.0 -fr 04_res 1 56 2030 0.0 0.0 0.0 -fr 05_nuclear 1 56 2030 0.0 0.0 0.0 -fr 06_coal 1 56 2030 0.0 0.0 0.0 -fr 07_gas 1 56 2030 0.0 0.0 0.0 -fr 08_non-res 1 56 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 56 2030 0.0 0.0 0.0 -fr 01_solar 1 57 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 57 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 57 2030 1600.0 1.0 0.0 -fr 04_res 1 57 2030 0.0 0.0 0.0 -fr 05_nuclear 1 57 2030 0.0 0.0 0.0 -fr 06_coal 1 57 2030 0.0 0.0 0.0 -fr 07_gas 1 57 2030 0.0 0.0 0.0 -fr 08_non-res 1 57 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 57 2030 0.0 0.0 0.0 -fr 01_solar 1 58 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 58 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 58 2030 1700.0 1.0 0.0 -fr 04_res 1 58 2030 0.0 0.0 0.0 -fr 05_nuclear 1 58 2030 0.0 0.0 0.0 -fr 06_coal 1 58 2030 0.0 0.0 0.0 -fr 07_gas 1 58 2030 0.0 0.0 0.0 -fr 08_non-res 1 58 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 58 2030 0.0 0.0 0.0 -fr 01_solar 1 59 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 59 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 59 2030 1800.0 1.0 0.0 -fr 04_res 1 59 2030 0.0 0.0 0.0 -fr 05_nuclear 1 59 2030 0.0 0.0 0.0 -fr 06_coal 1 59 2030 0.0 0.0 0.0 -fr 07_gas 1 59 2030 0.0 0.0 0.0 -fr 08_non-res 1 59 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 59 2030 0.0 0.0 0.0 -fr 01_solar 1 60 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 60 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 60 2030 1900.0 1.0 0.0 -fr 04_res 1 60 2030 0.0 0.0 0.0 -fr 05_nuclear 1 60 2030 0.0 0.0 0.0 -fr 06_coal 1 60 2030 0.0 0.0 0.0 -fr 07_gas 1 60 2030 0.0 0.0 0.0 -fr 08_non-res 1 60 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 60 2030 0.0 0.0 0.0 -fr 01_solar 1 61 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 61 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 61 2030 2000.0 1.0 0.0 -fr 04_res 1 61 2030 0.0 0.0 0.0 -fr 05_nuclear 1 61 2030 0.0 0.0 0.0 -fr 06_coal 1 61 2030 0.0 0.0 0.0 -fr 07_gas 1 61 2030 0.0 0.0 0.0 -fr 08_non-res 1 61 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 61 2030 0.0 0.0 0.0 -fr 01_solar 1 62 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 62 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 62 2030 2000.0 1.0 0.0 -fr 04_res 1 62 2030 100.0 1.0 0.0 -fr 05_nuclear 1 62 2030 0.0 0.0 0.0 -fr 06_coal 1 62 2030 0.0 0.0 0.0 -fr 07_gas 1 62 2030 0.0 0.0 0.0 -fr 08_non-res 1 62 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 62 2030 0.0 0.0 0.0 -fr 01_solar 1 63 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 63 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 63 2030 2000.0 1.0 0.0 -fr 04_res 1 63 2030 200.0 1.0 0.0 -fr 05_nuclear 1 63 2030 0.0 0.0 0.0 -fr 06_coal 1 63 2030 0.0 0.0 0.0 -fr 07_gas 1 63 2030 0.0 0.0 0.0 -fr 08_non-res 1 63 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 63 2030 0.0 0.0 0.0 -fr 01_solar 1 64 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 64 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 64 2030 2000.0 1.0 0.0 -fr 04_res 1 64 2030 300.0 1.0 0.0 -fr 05_nuclear 1 64 2030 0.0 0.0 0.0 -fr 06_coal 1 64 2030 0.0 0.0 0.0 -fr 07_gas 1 64 2030 0.0 0.0 0.0 -fr 08_non-res 1 64 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 64 2030 0.0 0.0 0.0 -fr 01_solar 1 65 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 65 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 65 2030 2000.0 1.0 0.0 -fr 04_res 1 65 2030 400.0 1.0 0.0 -fr 05_nuclear 1 65 2030 0.0 0.0 0.0 -fr 06_coal 1 65 2030 0.0 0.0 0.0 -fr 07_gas 1 65 2030 0.0 0.0 0.0 -fr 08_non-res 1 65 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 65 2030 0.0 0.0 0.0 -fr 01_solar 1 66 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 66 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 66 2030 2000.0 1.0 0.0 -fr 04_res 1 66 2030 500.0 1.0 0.0 -fr 05_nuclear 1 66 2030 0.0 0.0 0.0 -fr 06_coal 1 66 2030 0.0 0.0 0.0 -fr 07_gas 1 66 2030 0.0 0.0 0.0 -fr 08_non-res 1 66 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 66 2030 0.0 0.0 0.0 -fr 01_solar 1 67 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 67 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 67 2030 2000.0 1.0 0.0 -fr 04_res 1 67 2030 600.0 1.0 0.0 -fr 05_nuclear 1 67 2030 0.0 0.0 0.0 -fr 06_coal 1 67 2030 0.0 0.0 0.0 -fr 07_gas 1 67 2030 0.0 0.0 0.0 -fr 08_non-res 1 67 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 67 2030 0.0 0.0 0.0 -fr 01_solar 1 68 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 68 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 68 2030 2000.0 1.0 0.0 -fr 04_res 1 68 2030 700.0 1.0 0.0 -fr 05_nuclear 1 68 2030 0.0 0.0 0.0 -fr 06_coal 1 68 2030 0.0 0.0 0.0 -fr 07_gas 1 68 2030 0.0 0.0 0.0 -fr 08_non-res 1 68 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 68 2030 0.0 0.0 0.0 -fr 01_solar 1 69 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 69 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 69 2030 2000.0 1.0 0.0 -fr 04_res 1 69 2030 800.0 1.0 0.0 -fr 05_nuclear 1 69 2030 0.0 0.0 0.0 -fr 06_coal 1 69 2030 0.0 0.0 0.0 -fr 07_gas 1 69 2030 0.0 0.0 0.0 -fr 08_non-res 1 69 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 69 2030 0.0 0.0 0.0 -fr 01_solar 1 70 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 70 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 70 2030 2000.0 1.0 0.0 -fr 04_res 1 70 2030 900.0 1.0 0.0 -fr 05_nuclear 1 70 2030 0.0 0.0 0.0 -fr 06_coal 1 70 2030 0.0 0.0 0.0 -fr 07_gas 1 70 2030 0.0 0.0 0.0 -fr 08_non-res 1 70 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 70 2030 0.0 0.0 0.0 -fr 01_solar 1 71 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 71 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 71 2030 2000.0 1.0 0.0 -fr 04_res 1 71 2030 1000.0 1.0 0.0 -fr 05_nuclear 1 71 2030 0.0 0.0 0.0 -fr 06_coal 1 71 2030 0.0 0.0 0.0 -fr 07_gas 1 71 2030 0.0 0.0 0.0 -fr 08_non-res 1 71 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 71 2030 0.0 0.0 0.0 -fr 01_solar 1 72 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 72 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 72 2030 2000.0 1.0 0.0 -fr 04_res 1 72 2030 1100.0 1.0 0.0 -fr 05_nuclear 1 72 2030 0.0 0.0 0.0 -fr 06_coal 1 72 2030 0.0 0.0 0.0 -fr 07_gas 1 72 2030 0.0 0.0 0.0 -fr 08_non-res 1 72 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 72 2030 0.0 0.0 0.0 -fr 01_solar 1 73 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 73 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 73 2030 2000.0 1.0 0.0 -fr 04_res 1 73 2030 1200.0 1.0 0.0 -fr 05_nuclear 1 73 2030 0.0 0.0 0.0 -fr 06_coal 1 73 2030 0.0 0.0 0.0 -fr 07_gas 1 73 2030 0.0 0.0 0.0 -fr 08_non-res 1 73 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 73 2030 0.0 0.0 0.0 -fr 01_solar 1 74 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 74 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 74 2030 2000.0 1.0 0.0 -fr 04_res 1 74 2030 1300.0 1.0 0.0 -fr 05_nuclear 1 74 2030 0.0 0.0 0.0 -fr 06_coal 1 74 2030 0.0 0.0 0.0 -fr 07_gas 1 74 2030 0.0 0.0 0.0 -fr 08_non-res 1 74 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 74 2030 0.0 0.0 0.0 -fr 01_solar 1 75 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 75 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 75 2030 2000.0 1.0 0.0 -fr 04_res 1 75 2030 1400.0 1.0 0.0 -fr 05_nuclear 1 75 2030 0.0 0.0 0.0 -fr 06_coal 1 75 2030 0.0 0.0 0.0 -fr 07_gas 1 75 2030 0.0 0.0 0.0 -fr 08_non-res 1 75 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 75 2030 0.0 0.0 0.0 -fr 01_solar 1 76 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 76 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 76 2030 2000.0 1.0 0.0 -fr 04_res 1 76 2030 1500.0 1.0 0.0 -fr 05_nuclear 1 76 2030 0.0 0.0 0.0 -fr 06_coal 1 76 2030 0.0 0.0 0.0 -fr 07_gas 1 76 2030 0.0 0.0 0.0 -fr 08_non-res 1 76 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 76 2030 0.0 0.0 0.0 -fr 01_solar 1 77 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 77 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 77 2030 2000.0 1.0 0.0 -fr 04_res 1 77 2030 1600.0 1.0 0.0 -fr 05_nuclear 1 77 2030 0.0 0.0 0.0 -fr 06_coal 1 77 2030 0.0 0.0 0.0 -fr 07_gas 1 77 2030 0.0 0.0 0.0 -fr 08_non-res 1 77 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 77 2030 0.0 0.0 0.0 -fr 01_solar 1 78 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 78 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 78 2030 2000.0 1.0 0.0 -fr 04_res 1 78 2030 1700.0 1.0 0.0 -fr 05_nuclear 1 78 2030 0.0 0.0 0.0 -fr 06_coal 1 78 2030 0.0 0.0 0.0 -fr 07_gas 1 78 2030 0.0 0.0 0.0 -fr 08_non-res 1 78 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 78 2030 0.0 0.0 0.0 -fr 01_solar 1 79 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 79 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 79 2030 2000.0 1.0 0.0 -fr 04_res 1 79 2030 1800.0 1.0 0.0 -fr 05_nuclear 1 79 2030 0.0 0.0 0.0 -fr 06_coal 1 79 2030 0.0 0.0 0.0 -fr 07_gas 1 79 2030 0.0 0.0 0.0 -fr 08_non-res 1 79 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 79 2030 0.0 0.0 0.0 -fr 01_solar 1 80 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 80 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 80 2030 2000.0 1.0 0.0 -fr 04_res 1 80 2030 1900.0 1.0 0.0 -fr 05_nuclear 1 80 2030 0.0 0.0 0.0 -fr 06_coal 1 80 2030 0.0 0.0 0.0 -fr 07_gas 1 80 2030 0.0 0.0 0.0 -fr 08_non-res 1 80 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 80 2030 0.0 0.0 0.0 -fr 01_solar 1 81 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 81 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 81 2030 2000.0 1.0 0.0 -fr 04_res 1 81 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 81 2030 0.0 0.0 0.0 -fr 06_coal 1 81 2030 0.0 0.0 0.0 -fr 07_gas 1 81 2030 0.0 0.0 0.0 -fr 08_non-res 1 81 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 81 2030 0.0 0.0 0.0 -fr 01_solar 1 82 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 82 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 82 2030 2000.0 1.0 0.0 -fr 04_res 1 82 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 82 2030 100.0 1.0 0.0 -fr 06_coal 1 82 2030 0.0 0.0 0.0 -fr 07_gas 1 82 2030 0.0 0.0 0.0 -fr 08_non-res 1 82 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 82 2030 0.0 0.0 0.0 -fr 01_solar 1 83 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 83 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 83 2030 2000.0 1.0 0.0 -fr 04_res 1 83 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 83 2030 200.0 1.0 0.0 -fr 06_coal 1 83 2030 0.0 0.0 0.0 -fr 07_gas 1 83 2030 0.0 0.0 0.0 -fr 08_non-res 1 83 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 83 2030 0.0 0.0 0.0 -fr 01_solar 1 84 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 84 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 84 2030 2000.0 1.0 0.0 -fr 04_res 1 84 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 84 2030 300.0 1.0 0.0 -fr 06_coal 1 84 2030 0.0 0.0 0.0 -fr 07_gas 1 84 2030 0.0 0.0 0.0 -fr 08_non-res 1 84 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 84 2030 0.0 0.0 0.0 -fr 01_solar 1 85 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 85 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 85 2030 2000.0 1.0 0.0 -fr 04_res 1 85 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 85 2030 400.0 1.0 0.0 -fr 06_coal 1 85 2030 0.0 0.0 0.0 -fr 07_gas 1 85 2030 0.0 0.0 0.0 -fr 08_non-res 1 85 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 85 2030 0.0 0.0 0.0 -fr 01_solar 1 86 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 86 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 86 2030 2000.0 1.0 0.0 -fr 04_res 1 86 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 86 2030 500.0 1.0 0.0 -fr 06_coal 1 86 2030 0.0 0.0 0.0 -fr 07_gas 1 86 2030 0.0 0.0 0.0 -fr 08_non-res 1 86 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 86 2030 0.0 0.0 0.0 -fr 01_solar 1 87 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 87 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 87 2030 2000.0 1.0 0.0 -fr 04_res 1 87 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 87 2030 600.0 1.0 0.0 -fr 06_coal 1 87 2030 0.0 0.0 0.0 -fr 07_gas 1 87 2030 0.0 0.0 0.0 -fr 08_non-res 1 87 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 87 2030 0.0 0.0 0.0 -fr 01_solar 1 88 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 88 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 88 2030 2000.0 1.0 0.0 -fr 04_res 1 88 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 88 2030 700.0 1.0 0.0 -fr 06_coal 1 88 2030 0.0 0.0 0.0 -fr 07_gas 1 88 2030 0.0 0.0 0.0 -fr 08_non-res 1 88 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 88 2030 0.0 0.0 0.0 -fr 01_solar 1 89 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 89 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 89 2030 2000.0 1.0 0.0 -fr 04_res 1 89 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 89 2030 800.0 1.0 0.0 -fr 06_coal 1 89 2030 0.0 0.0 0.0 -fr 07_gas 1 89 2030 0.0 0.0 0.0 -fr 08_non-res 1 89 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 89 2030 0.0 0.0 0.0 -fr 01_solar 1 90 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 90 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 90 2030 2000.0 1.0 0.0 -fr 04_res 1 90 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 90 2030 900.0 1.0 0.0 -fr 06_coal 1 90 2030 0.0 0.0 0.0 -fr 07_gas 1 90 2030 0.0 0.0 0.0 -fr 08_non-res 1 90 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 90 2030 0.0 0.0 0.0 -fr 01_solar 1 91 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 91 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 91 2030 2000.0 1.0 0.0 -fr 04_res 1 91 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 91 2030 1000.0 1.0 0.0 -fr 06_coal 1 91 2030 0.0 0.0 0.0 -fr 07_gas 1 91 2030 0.0 0.0 0.0 -fr 08_non-res 1 91 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 91 2030 0.0 0.0 0.0 -fr 01_solar 1 92 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 92 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 92 2030 2000.0 1.0 0.0 -fr 04_res 1 92 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 92 2030 1100.0 1.0 0.0 -fr 06_coal 1 92 2030 0.0 0.0 0.0 -fr 07_gas 1 92 2030 0.0 0.0 0.0 -fr 08_non-res 1 92 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 92 2030 0.0 0.0 0.0 -fr 01_solar 1 93 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 93 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 93 2030 2000.0 1.0 0.0 -fr 04_res 1 93 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 93 2030 1200.0 1.0 0.0 -fr 06_coal 1 93 2030 0.0 0.0 0.0 -fr 07_gas 1 93 2030 0.0 0.0 0.0 -fr 08_non-res 1 93 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 93 2030 0.0 0.0 0.0 -fr 01_solar 1 94 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 94 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 94 2030 2000.0 1.0 0.0 -fr 04_res 1 94 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 94 2030 1300.0 1.0 0.0 -fr 06_coal 1 94 2030 0.0 0.0 0.0 -fr 07_gas 1 94 2030 0.0 0.0 0.0 -fr 08_non-res 1 94 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 94 2030 0.0 0.0 0.0 -fr 01_solar 1 95 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 95 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 95 2030 2000.0 1.0 0.0 -fr 04_res 1 95 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 95 2030 1400.0 1.0 0.0 -fr 06_coal 1 95 2030 0.0 0.0 0.0 -fr 07_gas 1 95 2030 0.0 0.0 0.0 -fr 08_non-res 1 95 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 95 2030 0.0 0.0 0.0 -fr 01_solar 1 96 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 96 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 96 2030 2000.0 1.0 0.0 -fr 04_res 1 96 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 96 2030 1500.0 1.0 0.0 -fr 06_coal 1 96 2030 0.0 0.0 0.0 -fr 07_gas 1 96 2030 0.0 0.0 0.0 -fr 08_non-res 1 96 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 96 2030 0.0 0.0 0.0 -fr 01_solar 1 97 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 97 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 97 2030 2000.0 1.0 0.0 -fr 04_res 1 97 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 97 2030 1600.0 1.0 0.0 -fr 06_coal 1 97 2030 0.0 0.0 0.0 -fr 07_gas 1 97 2030 0.0 0.0 0.0 -fr 08_non-res 1 97 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 97 2030 0.0 0.0 0.0 -fr 01_solar 1 98 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 98 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 98 2030 2000.0 1.0 0.0 -fr 04_res 1 98 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 98 2030 1700.0 1.0 0.0 -fr 06_coal 1 98 2030 0.0 0.0 0.0 -fr 07_gas 1 98 2030 0.0 0.0 0.0 -fr 08_non-res 1 98 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 98 2030 0.0 0.0 0.0 -fr 01_solar 1 99 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 99 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 99 2030 2000.0 1.0 0.0 -fr 04_res 1 99 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 99 2030 1800.0 1.0 0.0 -fr 06_coal 1 99 2030 0.0 0.0 0.0 -fr 07_gas 1 99 2030 0.0 0.0 0.0 -fr 08_non-res 1 99 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 99 2030 0.0 0.0 0.0 -fr 01_solar 1 100 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 100 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 100 2030 2000.0 1.0 0.0 -fr 04_res 1 100 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 100 2030 1900.0 1.0 0.0 -fr 06_coal 1 100 2030 0.0 0.0 0.0 -fr 07_gas 1 100 2030 0.0 0.0 0.0 -fr 08_non-res 1 100 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 100 2030 0.0 0.0 0.0 -fr 01_solar 1 101 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 101 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 101 2030 2000.0 1.0 0.0 -fr 04_res 1 101 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 101 2030 2000.0 1.0 0.0 -fr 06_coal 1 101 2030 0.0 0.0 0.0 -fr 07_gas 1 101 2030 0.0 0.0 0.0 -fr 08_non-res 1 101 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 101 2030 0.0 0.0 0.0 -fr 01_solar 1 102 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 102 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 102 2030 2000.0 1.0 0.0 -fr 04_res 1 102 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 102 2030 2000.0 1.0 0.0 -fr 06_coal 1 102 2030 100.0 1.0 0.0 -fr 07_gas 1 102 2030 0.0 0.0 0.0 -fr 08_non-res 1 102 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 102 2030 0.0 0.0 0.0 -fr 01_solar 1 103 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 103 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 103 2030 2000.0 1.0 0.0 -fr 04_res 1 103 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 103 2030 2000.0 1.0 0.0 -fr 06_coal 1 103 2030 200.0 1.0 0.0 -fr 07_gas 1 103 2030 0.0 0.0 0.0 -fr 08_non-res 1 103 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 103 2030 0.0 0.0 0.0 -fr 01_solar 1 104 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 104 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 104 2030 2000.0 1.0 0.0 -fr 04_res 1 104 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 104 2030 2000.0 1.0 0.0 -fr 06_coal 1 104 2030 300.0 1.0 0.0 -fr 07_gas 1 104 2030 0.0 0.0 0.0 -fr 08_non-res 1 104 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 104 2030 0.0 0.0 0.0 -fr 01_solar 1 105 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 105 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 105 2030 2000.0 1.0 0.0 -fr 04_res 1 105 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 105 2030 2000.0 1.0 0.0 -fr 06_coal 1 105 2030 400.0 1.0 0.0 -fr 07_gas 1 105 2030 0.0 0.0 0.0 -fr 08_non-res 1 105 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 105 2030 0.0 0.0 0.0 -fr 01_solar 1 106 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 106 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 106 2030 2000.0 1.0 0.0 -fr 04_res 1 106 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 106 2030 2000.0 1.0 0.0 -fr 06_coal 1 106 2030 500.0 1.0 0.0 -fr 07_gas 1 106 2030 0.0 0.0 0.0 -fr 08_non-res 1 106 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 106 2030 0.0 0.0 0.0 -fr 01_solar 1 107 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 107 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 107 2030 2000.0 1.0 0.0 -fr 04_res 1 107 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 107 2030 2000.0 1.0 0.0 -fr 06_coal 1 107 2030 600.0 1.0 0.0 -fr 07_gas 1 107 2030 0.0 0.0 0.0 -fr 08_non-res 1 107 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 107 2030 0.0 0.0 0.0 -fr 01_solar 1 108 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 108 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 108 2030 2000.0 1.0 0.0 -fr 04_res 1 108 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 108 2030 2000.0 1.0 0.0 -fr 06_coal 1 108 2030 700.0 1.0 0.0 -fr 07_gas 1 108 2030 0.0 0.0 0.0 -fr 08_non-res 1 108 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 108 2030 0.0 0.0 0.0 -fr 01_solar 1 109 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 109 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 109 2030 2000.0 1.0 0.0 -fr 04_res 1 109 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 109 2030 2000.0 1.0 0.0 -fr 06_coal 1 109 2030 800.0 1.0 0.0 -fr 07_gas 1 109 2030 0.0 0.0 0.0 -fr 08_non-res 1 109 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 109 2030 0.0 0.0 0.0 -fr 01_solar 1 110 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 110 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 110 2030 2000.0 1.0 0.0 -fr 04_res 1 110 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 110 2030 2000.0 1.0 0.0 -fr 06_coal 1 110 2030 900.0 1.0 0.0 -fr 07_gas 1 110 2030 0.0 0.0 0.0 -fr 08_non-res 1 110 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 110 2030 0.0 0.0 0.0 -fr 01_solar 1 111 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 111 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 111 2030 2000.0 1.0 0.0 -fr 04_res 1 111 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 111 2030 2000.0 1.0 0.0 -fr 06_coal 1 111 2030 1000.0 1.0 0.0 -fr 07_gas 1 111 2030 0.0 0.0 0.0 -fr 08_non-res 1 111 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 111 2030 0.0 0.0 0.0 -fr 01_solar 1 112 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 112 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 112 2030 2000.0 1.0 0.0 -fr 04_res 1 112 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 112 2030 2000.0 1.0 0.0 -fr 06_coal 1 112 2030 1100.0 1.0 0.0 -fr 07_gas 1 112 2030 0.0 0.0 0.0 -fr 08_non-res 1 112 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 112 2030 0.0 0.0 0.0 -fr 01_solar 1 113 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 113 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 113 2030 2000.0 1.0 0.0 -fr 04_res 1 113 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 113 2030 2000.0 1.0 0.0 -fr 06_coal 1 113 2030 1200.0 1.0 0.0 -fr 07_gas 1 113 2030 0.0 0.0 0.0 -fr 08_non-res 1 113 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 113 2030 0.0 0.0 0.0 -fr 01_solar 1 114 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 114 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 114 2030 2000.0 1.0 0.0 -fr 04_res 1 114 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 114 2030 2000.0 1.0 0.0 -fr 06_coal 1 114 2030 1300.0 1.0 0.0 -fr 07_gas 1 114 2030 0.0 0.0 0.0 -fr 08_non-res 1 114 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 114 2030 0.0 0.0 0.0 -fr 01_solar 1 115 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 115 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 115 2030 2000.0 1.0 0.0 -fr 04_res 1 115 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 115 2030 2000.0 1.0 0.0 -fr 06_coal 1 115 2030 1400.0 1.0 0.0 -fr 07_gas 1 115 2030 0.0 0.0 0.0 -fr 08_non-res 1 115 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 115 2030 0.0 0.0 0.0 -fr 01_solar 1 116 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 116 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 116 2030 2000.0 1.0 0.0 -fr 04_res 1 116 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 116 2030 2000.0 1.0 0.0 -fr 06_coal 1 116 2030 1500.0 1.0 0.0 -fr 07_gas 1 116 2030 0.0 0.0 0.0 -fr 08_non-res 1 116 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 116 2030 0.0 0.0 0.0 -fr 01_solar 1 117 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 117 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 117 2030 2000.0 1.0 0.0 -fr 04_res 1 117 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 117 2030 2000.0 1.0 0.0 -fr 06_coal 1 117 2030 1600.0 1.0 0.0 -fr 07_gas 1 117 2030 0.0 0.0 0.0 -fr 08_non-res 1 117 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 117 2030 0.0 0.0 0.0 -fr 01_solar 1 118 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 118 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 118 2030 2000.0 1.0 0.0 -fr 04_res 1 118 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 118 2030 2000.0 1.0 0.0 -fr 06_coal 1 118 2030 1700.0 1.0 0.0 -fr 07_gas 1 118 2030 0.0 0.0 0.0 -fr 08_non-res 1 118 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 118 2030 0.0 0.0 0.0 -fr 01_solar 1 119 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 119 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 119 2030 2000.0 1.0 0.0 -fr 04_res 1 119 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 119 2030 2000.0 1.0 0.0 -fr 06_coal 1 119 2030 1800.0 1.0 0.0 -fr 07_gas 1 119 2030 0.0 0.0 0.0 -fr 08_non-res 1 119 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 119 2030 0.0 0.0 0.0 -fr 01_solar 1 120 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 120 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 120 2030 2000.0 1.0 0.0 -fr 04_res 1 120 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 120 2030 2000.0 1.0 0.0 -fr 06_coal 1 120 2030 1900.0 1.0 0.0 -fr 07_gas 1 120 2030 0.0 0.0 0.0 -fr 08_non-res 1 120 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 120 2030 0.0 0.0 0.0 -fr 01_solar 1 121 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 121 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 121 2030 2000.0 1.0 0.0 -fr 04_res 1 121 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 121 2030 2000.0 1.0 0.0 -fr 06_coal 1 121 2030 2000.0 1.0 0.0 -fr 07_gas 1 121 2030 0.0 0.0 0.0 -fr 08_non-res 1 121 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 121 2030 0.0 0.0 0.0 -fr 01_solar 1 122 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 122 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 122 2030 2000.0 1.0 0.0 -fr 04_res 1 122 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 122 2030 2000.0 1.0 0.0 -fr 06_coal 1 122 2030 2000.0 1.0 0.0 -fr 07_gas 1 122 2030 100.0 1.0 0.0 -fr 08_non-res 1 122 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 122 2030 0.0 0.0 0.0 -fr 01_solar 1 123 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 123 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 123 2030 2000.0 1.0 0.0 -fr 04_res 1 123 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 123 2030 2000.0 1.0 0.0 -fr 06_coal 1 123 2030 2000.0 1.0 0.0 -fr 07_gas 1 123 2030 200.0 1.0 0.0 -fr 08_non-res 1 123 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 123 2030 0.0 0.0 0.0 -fr 01_solar 1 124 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 124 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 124 2030 2000.0 1.0 0.0 -fr 04_res 1 124 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 124 2030 2000.0 1.0 0.0 -fr 06_coal 1 124 2030 2000.0 1.0 0.0 -fr 07_gas 1 124 2030 300.0 1.0 0.0 -fr 08_non-res 1 124 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 124 2030 0.0 0.0 0.0 -fr 01_solar 1 125 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 125 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 125 2030 2000.0 1.0 0.0 -fr 04_res 1 125 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 125 2030 2000.0 1.0 0.0 -fr 06_coal 1 125 2030 2000.0 1.0 0.0 -fr 07_gas 1 125 2030 400.0 1.0 0.0 -fr 08_non-res 1 125 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 125 2030 0.0 0.0 0.0 -fr 01_solar 1 126 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 126 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 126 2030 2000.0 1.0 0.0 -fr 04_res 1 126 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 126 2030 2000.0 1.0 0.0 -fr 06_coal 1 126 2030 2000.0 1.0 0.0 -fr 07_gas 1 126 2030 500.0 1.0 0.0 -fr 08_non-res 1 126 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 126 2030 0.0 0.0 0.0 -fr 01_solar 1 127 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 127 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 127 2030 2000.0 1.0 0.0 -fr 04_res 1 127 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 127 2030 2000.0 1.0 0.0 -fr 06_coal 1 127 2030 2000.0 1.0 0.0 -fr 07_gas 1 127 2030 600.0 1.0 0.0 -fr 08_non-res 1 127 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 127 2030 0.0 0.0 0.0 -fr 01_solar 1 128 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 128 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 128 2030 2000.0 1.0 0.0 -fr 04_res 1 128 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 128 2030 2000.0 1.0 0.0 -fr 06_coal 1 128 2030 2000.0 1.0 0.0 -fr 07_gas 1 128 2030 700.0 1.0 0.0 -fr 08_non-res 1 128 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 128 2030 0.0 0.0 0.0 -fr 01_solar 1 129 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 129 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 129 2030 2000.0 1.0 0.0 -fr 04_res 1 129 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 129 2030 2000.0 1.0 0.0 -fr 06_coal 1 129 2030 2000.0 1.0 0.0 -fr 07_gas 1 129 2030 800.0 1.0 0.0 -fr 08_non-res 1 129 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 129 2030 0.0 0.0 0.0 -fr 01_solar 1 130 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 130 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 130 2030 2000.0 1.0 0.0 -fr 04_res 1 130 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 130 2030 2000.0 1.0 0.0 -fr 06_coal 1 130 2030 2000.0 1.0 0.0 -fr 07_gas 1 130 2030 900.0 1.0 0.0 -fr 08_non-res 1 130 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 130 2030 0.0 0.0 0.0 -fr 01_solar 1 131 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 131 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 131 2030 2000.0 1.0 0.0 -fr 04_res 1 131 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 131 2030 2000.0 1.0 0.0 -fr 06_coal 1 131 2030 2000.0 1.0 0.0 -fr 07_gas 1 131 2030 1000.0 1.0 0.0 -fr 08_non-res 1 131 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 131 2030 0.0 0.0 0.0 -fr 01_solar 1 132 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 132 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 132 2030 2000.0 1.0 0.0 -fr 04_res 1 132 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 132 2030 2000.0 1.0 0.0 -fr 06_coal 1 132 2030 2000.0 1.0 0.0 -fr 07_gas 1 132 2030 1100.0 1.0 0.0 -fr 08_non-res 1 132 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 132 2030 0.0 0.0 0.0 -fr 01_solar 1 133 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 133 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 133 2030 2000.0 1.0 0.0 -fr 04_res 1 133 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 133 2030 2000.0 1.0 0.0 -fr 06_coal 1 133 2030 2000.0 1.0 0.0 -fr 07_gas 1 133 2030 1200.0 1.0 0.0 -fr 08_non-res 1 133 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 133 2030 0.0 0.0 0.0 -fr 01_solar 1 134 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 134 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 134 2030 2000.0 1.0 0.0 -fr 04_res 1 134 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 134 2030 2000.0 1.0 0.0 -fr 06_coal 1 134 2030 2000.0 1.0 0.0 -fr 07_gas 1 134 2030 1300.0 1.0 0.0 -fr 08_non-res 1 134 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 134 2030 0.0 0.0 0.0 -fr 01_solar 1 135 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 135 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 135 2030 2000.0 1.0 0.0 -fr 04_res 1 135 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 135 2030 2000.0 1.0 0.0 -fr 06_coal 1 135 2030 2000.0 1.0 0.0 -fr 07_gas 1 135 2030 1400.0 1.0 0.0 -fr 08_non-res 1 135 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 135 2030 0.0 0.0 0.0 -fr 01_solar 1 136 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 136 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 136 2030 2000.0 1.0 0.0 -fr 04_res 1 136 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 136 2030 2000.0 1.0 0.0 -fr 06_coal 1 136 2030 2000.0 1.0 0.0 -fr 07_gas 1 136 2030 1500.0 1.0 0.0 -fr 08_non-res 1 136 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 136 2030 0.0 0.0 0.0 -fr 01_solar 1 137 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 137 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 137 2030 2000.0 1.0 0.0 -fr 04_res 1 137 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 137 2030 2000.0 1.0 0.0 -fr 06_coal 1 137 2030 2000.0 1.0 0.0 -fr 07_gas 1 137 2030 1600.0 1.0 0.0 -fr 08_non-res 1 137 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 137 2030 0.0 0.0 0.0 -fr 01_solar 1 138 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 138 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 138 2030 2000.0 1.0 0.0 -fr 04_res 1 138 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 138 2030 2000.0 1.0 0.0 -fr 06_coal 1 138 2030 2000.0 1.0 0.0 -fr 07_gas 1 138 2030 1700.0 1.0 0.0 -fr 08_non-res 1 138 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 138 2030 0.0 0.0 0.0 -fr 01_solar 1 139 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 139 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 139 2030 2000.0 1.0 0.0 -fr 04_res 1 139 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 139 2030 2000.0 1.0 0.0 -fr 06_coal 1 139 2030 2000.0 1.0 0.0 -fr 07_gas 1 139 2030 1800.0 1.0 0.0 -fr 08_non-res 1 139 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 139 2030 0.0 0.0 0.0 -fr 01_solar 1 140 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 140 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 140 2030 2000.0 1.0 0.0 -fr 04_res 1 140 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 140 2030 2000.0 1.0 0.0 -fr 06_coal 1 140 2030 2000.0 1.0 0.0 -fr 07_gas 1 140 2030 1900.0 1.0 0.0 -fr 08_non-res 1 140 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 140 2030 0.0 0.0 0.0 -fr 01_solar 1 141 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 141 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 141 2030 2000.0 1.0 0.0 -fr 04_res 1 141 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 141 2030 2000.0 1.0 0.0 -fr 06_coal 1 141 2030 2000.0 1.0 0.0 -fr 07_gas 1 141 2030 2000.0 1.0 0.0 -fr 08_non-res 1 141 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 141 2030 0.0 0.0 0.0 -fr 01_solar 1 142 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 142 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 142 2030 2000.0 1.0 0.0 -fr 04_res 1 142 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 142 2030 2000.0 1.0 0.0 -fr 06_coal 1 142 2030 2000.0 1.0 0.0 -fr 07_gas 1 142 2030 2000.0 1.0 0.0 -fr 08_non-res 1 142 2030 100.0 1.0 0.0 -fr 09_hydro_pump 1 142 2030 0.0 0.0 0.0 -fr 01_solar 1 143 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 143 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 143 2030 2000.0 1.0 0.0 -fr 04_res 1 143 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 143 2030 2000.0 1.0 0.0 -fr 06_coal 1 143 2030 2000.0 1.0 0.0 -fr 07_gas 1 143 2030 2000.0 1.0 0.0 -fr 08_non-res 1 143 2030 200.0 1.0 0.0 -fr 09_hydro_pump 1 143 2030 0.0 0.0 0.0 -fr 01_solar 1 144 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 144 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 144 2030 2000.0 1.0 0.0 -fr 04_res 1 144 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 144 2030 2000.0 1.0 0.0 -fr 06_coal 1 144 2030 2000.0 1.0 0.0 -fr 07_gas 1 144 2030 2000.0 1.0 0.0 -fr 08_non-res 1 144 2030 300.0 1.0 0.0 -fr 09_hydro_pump 1 144 2030 0.0 0.0 0.0 -fr 01_solar 1 145 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 145 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 145 2030 2000.0 1.0 0.0 -fr 04_res 1 145 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 145 2030 2000.0 1.0 0.0 -fr 06_coal 1 145 2030 2000.0 1.0 0.0 -fr 07_gas 1 145 2030 2000.0 1.0 0.0 -fr 08_non-res 1 145 2030 400.0 1.0 0.0 -fr 09_hydro_pump 1 145 2030 0.0 0.0 0.0 -fr 01_solar 1 146 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 146 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 146 2030 2000.0 1.0 0.0 -fr 04_res 1 146 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 146 2030 2000.0 1.0 0.0 -fr 06_coal 1 146 2030 2000.0 1.0 0.0 -fr 07_gas 1 146 2030 2000.0 1.0 0.0 -fr 08_non-res 1 146 2030 500.0 1.0 0.0 -fr 09_hydro_pump 1 146 2030 0.0 0.0 0.0 -fr 01_solar 1 147 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 147 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 147 2030 2000.0 1.0 0.0 -fr 04_res 1 147 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 147 2030 2000.0 1.0 0.0 -fr 06_coal 1 147 2030 2000.0 1.0 0.0 -fr 07_gas 1 147 2030 2000.0 1.0 0.0 -fr 08_non-res 1 147 2030 600.0 1.0 0.0 -fr 09_hydro_pump 1 147 2030 0.0 0.0 0.0 -fr 01_solar 1 148 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 148 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 148 2030 2000.0 1.0 0.0 -fr 04_res 1 148 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 148 2030 2000.0 1.0 0.0 -fr 06_coal 1 148 2030 2000.0 1.0 0.0 -fr 07_gas 1 148 2030 2000.0 1.0 0.0 -fr 08_non-res 1 148 2030 700.0 1.0 0.0 -fr 09_hydro_pump 1 148 2030 0.0 0.0 0.0 -fr 01_solar 1 149 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 149 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 149 2030 2000.0 1.0 0.0 -fr 04_res 1 149 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 149 2030 2000.0 1.0 0.0 -fr 06_coal 1 149 2030 2000.0 1.0 0.0 -fr 07_gas 1 149 2030 2000.0 1.0 0.0 -fr 08_non-res 1 149 2030 800.0 1.0 0.0 -fr 09_hydro_pump 1 149 2030 0.0 0.0 0.0 -fr 01_solar 1 150 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 150 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 150 2030 2000.0 1.0 0.0 -fr 04_res 1 150 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 150 2030 2000.0 1.0 0.0 -fr 06_coal 1 150 2030 2000.0 1.0 0.0 -fr 07_gas 1 150 2030 2000.0 1.0 0.0 -fr 08_non-res 1 150 2030 900.0 1.0 0.0 -fr 09_hydro_pump 1 150 2030 0.0 0.0 0.0 -fr 01_solar 1 151 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 151 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 151 2030 2000.0 1.0 0.0 -fr 04_res 1 151 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 151 2030 2000.0 1.0 0.0 -fr 06_coal 1 151 2030 2000.0 1.0 0.0 -fr 07_gas 1 151 2030 2000.0 1.0 0.0 -fr 08_non-res 1 151 2030 1000.0 1.0 0.0 -fr 09_hydro_pump 1 151 2030 0.0 0.0 0.0 -fr 01_solar 1 152 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 152 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 152 2030 2000.0 1.0 0.0 -fr 04_res 1 152 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 152 2030 2000.0 1.0 0.0 -fr 06_coal 1 152 2030 2000.0 1.0 0.0 -fr 07_gas 1 152 2030 2000.0 1.0 0.0 -fr 08_non-res 1 152 2030 1100.0 1.0 0.0 -fr 09_hydro_pump 1 152 2030 0.0 0.0 0.0 -fr 01_solar 1 153 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 153 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 153 2030 2000.0 1.0 0.0 -fr 04_res 1 153 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 153 2030 2000.0 1.0 0.0 -fr 06_coal 1 153 2030 2000.0 1.0 0.0 -fr 07_gas 1 153 2030 2000.0 1.0 0.0 -fr 08_non-res 1 153 2030 1200.0 1.0 0.0 -fr 09_hydro_pump 1 153 2030 0.0 0.0 0.0 -fr 01_solar 1 154 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 154 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 154 2030 2000.0 1.0 0.0 -fr 04_res 1 154 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 154 2030 2000.0 1.0 0.0 -fr 06_coal 1 154 2030 2000.0 1.0 0.0 -fr 07_gas 1 154 2030 2000.0 1.0 0.0 -fr 08_non-res 1 154 2030 1300.0 1.0 0.0 -fr 09_hydro_pump 1 154 2030 0.0 0.0 0.0 -fr 01_solar 1 155 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 155 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 155 2030 2000.0 1.0 0.0 -fr 04_res 1 155 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 155 2030 2000.0 1.0 0.0 -fr 06_coal 1 155 2030 2000.0 1.0 0.0 -fr 07_gas 1 155 2030 2000.0 1.0 0.0 -fr 08_non-res 1 155 2030 1400.0 1.0 0.0 -fr 09_hydro_pump 1 155 2030 0.0 0.0 0.0 -fr 01_solar 1 156 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 156 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 156 2030 2000.0 1.0 0.0 -fr 04_res 1 156 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 156 2030 2000.0 1.0 0.0 -fr 06_coal 1 156 2030 2000.0 1.0 0.0 -fr 07_gas 1 156 2030 2000.0 1.0 0.0 -fr 08_non-res 1 156 2030 1500.0 1.0 0.0 -fr 09_hydro_pump 1 156 2030 0.0 0.0 0.0 -fr 01_solar 1 157 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 157 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 157 2030 2000.0 1.0 0.0 -fr 04_res 1 157 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 157 2030 2000.0 1.0 0.0 -fr 06_coal 1 157 2030 2000.0 1.0 0.0 -fr 07_gas 1 157 2030 2000.0 1.0 0.0 -fr 08_non-res 1 157 2030 1600.0 1.0 0.0 -fr 09_hydro_pump 1 157 2030 0.0 0.0 0.0 -fr 01_solar 1 158 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 158 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 158 2030 2000.0 1.0 0.0 -fr 04_res 1 158 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 158 2030 2000.0 1.0 0.0 -fr 06_coal 1 158 2030 2000.0 1.0 0.0 -fr 07_gas 1 158 2030 2000.0 1.0 0.0 -fr 08_non-res 1 158 2030 1700.0 1.0 0.0 -fr 09_hydro_pump 1 158 2030 0.0 0.0 0.0 -fr 01_solar 1 159 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 159 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 159 2030 2000.0 1.0 0.0 -fr 04_res 1 159 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 159 2030 2000.0 1.0 0.0 -fr 06_coal 1 159 2030 2000.0 1.0 0.0 -fr 07_gas 1 159 2030 2000.0 1.0 0.0 -fr 08_non-res 1 159 2030 1800.0 1.0 0.0 -fr 09_hydro_pump 1 159 2030 0.0 0.0 0.0 -fr 01_solar 1 160 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 160 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 160 2030 2000.0 1.0 0.0 -fr 04_res 1 160 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 160 2030 2000.0 1.0 0.0 -fr 06_coal 1 160 2030 2000.0 1.0 0.0 -fr 07_gas 1 160 2030 2000.0 1.0 0.0 -fr 08_non-res 1 160 2030 1900.0 1.0 0.0 -fr 09_hydro_pump 1 160 2030 0.0 0.0 0.0 -fr 01_solar 1 161 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 161 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 161 2030 2000.0 1.0 0.0 -fr 04_res 1 161 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 161 2030 2000.0 1.0 0.0 -fr 06_coal 1 161 2030 2000.0 1.0 0.0 -fr 07_gas 1 161 2030 2000.0 1.0 0.0 -fr 08_non-res 1 161 2030 2000.0 1.0 0.0 -fr 09_hydro_pump 1 161 2030 0.0 0.0 0.0 -fr 01_solar 1 162 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 162 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 162 2030 2000.0 1.0 0.0 -fr 04_res 1 162 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 162 2030 2000.0 1.0 0.0 -fr 06_coal 1 162 2030 2000.0 1.0 0.0 -fr 07_gas 1 162 2030 2000.0 1.0 0.0 -fr 08_non-res 1 162 2030 2000.0 1.0 0.0 -fr 09_hydro_pump 1 162 2030 100.0 1.0 0.0 -fr 01_solar 1 163 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 163 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 163 2030 2000.0 1.0 0.0 -fr 04_res 1 163 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 163 2030 2000.0 1.0 0.0 -fr 06_coal 1 163 2030 2000.0 1.0 0.0 -fr 07_gas 1 163 2030 2000.0 1.0 0.0 -fr 08_non-res 1 163 2030 2000.0 1.0 0.0 -fr 09_hydro_pump 1 163 2030 200.0 1.0 0.0 -fr 01_solar 1 164 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 164 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 164 2030 2000.0 1.0 0.0 -fr 04_res 1 164 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 164 2030 2000.0 1.0 0.0 -fr 06_coal 1 164 2030 2000.0 1.0 0.0 -fr 07_gas 1 164 2030 2000.0 1.0 0.0 -fr 08_non-res 1 164 2030 2000.0 1.0 0.0 -fr 09_hydro_pump 1 164 2030 300.0 1.0 0.0 -fr 01_solar 1 165 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 165 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 165 2030 2000.0 1.0 0.0 -fr 04_res 1 165 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 165 2030 2000.0 1.0 0.0 -fr 06_coal 1 165 2030 2000.0 1.0 0.0 -fr 07_gas 1 165 2030 2000.0 1.0 0.0 -fr 08_non-res 1 165 2030 2000.0 1.0 0.0 -fr 09_hydro_pump 1 165 2030 400.0 1.0 0.0 -fr 01_solar 1 166 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 166 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 166 2030 2000.0 1.0 0.0 -fr 04_res 1 166 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 166 2030 2000.0 1.0 0.0 -fr 06_coal 1 166 2030 2000.0 1.0 0.0 -fr 07_gas 1 166 2030 2000.0 1.0 0.0 -fr 08_non-res 1 166 2030 2000.0 1.0 0.0 -fr 09_hydro_pump 1 166 2030 500.0 1.0 0.0 -fr 01_solar 1 167 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 167 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 167 2030 2000.0 1.0 0.0 -fr 04_res 1 167 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 167 2030 2000.0 1.0 0.0 -fr 06_coal 1 167 2030 2000.0 1.0 0.0 -fr 07_gas 1 167 2030 2000.0 1.0 0.0 -fr 08_non-res 1 167 2030 2000.0 1.0 0.0 -fr 09_hydro_pump 1 167 2030 600.0 1.0 0.0 -fr 01_solar 1 168 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 168 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 168 2030 2000.0 1.0 0.0 -fr 04_res 1 168 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 168 2030 2000.0 1.0 0.0 -fr 06_coal 1 168 2030 2000.0 1.0 0.0 -fr 07_gas 1 168 2030 2000.0 1.0 0.0 -fr 08_non-res 1 168 2030 2000.0 1.0 0.0 -fr 09_hydro_pump 1 168 2030 700.0 1.0 0.0 -fr 01_solar 1 169 2030 0.0 0.0 0.0 -fr 02_wind_on 1 169 2030 0.0 0.0 0.0 -fr 03_wind_off 1 169 2030 0.0 0.0 0.0 -fr 04_res 1 169 2030 0.0 0.0 0.0 -fr 05_nuclear 1 169 2030 0.0 0.0 0.0 -fr 06_coal 1 169 2030 0.0 0.0 0.0 -fr 07_gas 1 169 2030 0.0 0.0 0.0 -fr 08_non-res 1 169 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 169 2030 0.0 0.0 0.0 -fr 01_solar 1 170 2030 100.0 1.0 0.0 -fr 02_wind_on 1 170 2030 0.0 0.0 0.0 -fr 03_wind_off 1 170 2030 0.0 0.0 0.0 -fr 04_res 1 170 2030 0.0 0.0 0.0 -fr 05_nuclear 1 170 2030 0.0 0.0 0.0 -fr 06_coal 1 170 2030 0.0 0.0 0.0 -fr 07_gas 1 170 2030 0.0 0.0 0.0 -fr 08_non-res 1 170 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 170 2030 0.0 0.0 0.0 -fr 01_solar 1 171 2030 200.0 1.0 0.0 -fr 02_wind_on 1 171 2030 0.0 0.0 0.0 -fr 03_wind_off 1 171 2030 0.0 0.0 0.0 -fr 04_res 1 171 2030 0.0 0.0 0.0 -fr 05_nuclear 1 171 2030 0.0 0.0 0.0 -fr 06_coal 1 171 2030 0.0 0.0 0.0 -fr 07_gas 1 171 2030 0.0 0.0 0.0 -fr 08_non-res 1 171 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 171 2030 0.0 0.0 0.0 -fr 01_solar 1 172 2030 300.0 1.0 0.0 -fr 02_wind_on 1 172 2030 0.0 0.0 0.0 -fr 03_wind_off 1 172 2030 0.0 0.0 0.0 -fr 04_res 1 172 2030 0.0 0.0 0.0 -fr 05_nuclear 1 172 2030 0.0 0.0 0.0 -fr 06_coal 1 172 2030 0.0 0.0 0.0 -fr 07_gas 1 172 2030 0.0 0.0 0.0 -fr 08_non-res 1 172 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 172 2030 0.0 0.0 0.0 -fr 01_solar 1 173 2030 400.0 1.0 0.0 -fr 02_wind_on 1 173 2030 0.0 0.0 0.0 -fr 03_wind_off 1 173 2030 0.0 0.0 0.0 -fr 04_res 1 173 2030 0.0 0.0 0.0 -fr 05_nuclear 1 173 2030 0.0 0.0 0.0 -fr 06_coal 1 173 2030 0.0 0.0 0.0 -fr 07_gas 1 173 2030 0.0 0.0 0.0 -fr 08_non-res 1 173 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 173 2030 0.0 0.0 0.0 -fr 01_solar 1 174 2030 500.0 1.0 0.0 -fr 02_wind_on 1 174 2030 0.0 0.0 0.0 -fr 03_wind_off 1 174 2030 0.0 0.0 0.0 -fr 04_res 1 174 2030 0.0 0.0 0.0 -fr 05_nuclear 1 174 2030 0.0 0.0 0.0 -fr 06_coal 1 174 2030 0.0 0.0 0.0 -fr 07_gas 1 174 2030 0.0 0.0 0.0 -fr 08_non-res 1 174 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 174 2030 0.0 0.0 0.0 -fr 01_solar 1 175 2030 600.0 1.0 0.0 -fr 02_wind_on 1 175 2030 0.0 0.0 0.0 -fr 03_wind_off 1 175 2030 0.0 0.0 0.0 -fr 04_res 1 175 2030 0.0 0.0 0.0 -fr 05_nuclear 1 175 2030 0.0 0.0 0.0 -fr 06_coal 1 175 2030 0.0 0.0 0.0 -fr 07_gas 1 175 2030 0.0 0.0 0.0 -fr 08_non-res 1 175 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 175 2030 0.0 0.0 0.0 -fr 01_solar 1 176 2030 700.0 1.0 0.0 -fr 02_wind_on 1 176 2030 0.0 0.0 0.0 -fr 03_wind_off 1 176 2030 0.0 0.0 0.0 -fr 04_res 1 176 2030 0.0 0.0 0.0 -fr 05_nuclear 1 176 2030 0.0 0.0 0.0 -fr 06_coal 1 176 2030 0.0 0.0 0.0 -fr 07_gas 1 176 2030 0.0 0.0 0.0 -fr 08_non-res 1 176 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 176 2030 0.0 0.0 0.0 -fr 01_solar 1 177 2030 800.0 1.0 0.0 -fr 02_wind_on 1 177 2030 0.0 0.0 0.0 -fr 03_wind_off 1 177 2030 0.0 0.0 0.0 -fr 04_res 1 177 2030 0.0 0.0 0.0 -fr 05_nuclear 1 177 2030 0.0 0.0 0.0 -fr 06_coal 1 177 2030 0.0 0.0 0.0 -fr 07_gas 1 177 2030 0.0 0.0 0.0 -fr 08_non-res 1 177 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 177 2030 0.0 0.0 0.0 -fr 01_solar 1 178 2030 900.0 1.0 0.0 -fr 02_wind_on 1 178 2030 0.0 0.0 0.0 -fr 03_wind_off 1 178 2030 0.0 0.0 0.0 -fr 04_res 1 178 2030 0.0 0.0 0.0 -fr 05_nuclear 1 178 2030 0.0 0.0 0.0 -fr 06_coal 1 178 2030 0.0 0.0 0.0 -fr 07_gas 1 178 2030 0.0 0.0 0.0 -fr 08_non-res 1 178 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 178 2030 0.0 0.0 0.0 -fr 01_solar 1 179 2030 1000.0 1.0 0.0 -fr 02_wind_on 1 179 2030 0.0 0.0 0.0 -fr 03_wind_off 1 179 2030 0.0 0.0 0.0 -fr 04_res 1 179 2030 0.0 0.0 0.0 -fr 05_nuclear 1 179 2030 0.0 0.0 0.0 -fr 06_coal 1 179 2030 0.0 0.0 0.0 -fr 07_gas 1 179 2030 0.0 0.0 0.0 -fr 08_non-res 1 179 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 179 2030 0.0 0.0 0.0 -fr 01_solar 1 180 2030 1100.0 1.0 0.0 -fr 02_wind_on 1 180 2030 0.0 0.0 0.0 -fr 03_wind_off 1 180 2030 0.0 0.0 0.0 -fr 04_res 1 180 2030 0.0 0.0 0.0 -fr 05_nuclear 1 180 2030 0.0 0.0 0.0 -fr 06_coal 1 180 2030 0.0 0.0 0.0 -fr 07_gas 1 180 2030 0.0 0.0 0.0 -fr 08_non-res 1 180 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 180 2030 0.0 0.0 0.0 -fr 01_solar 1 181 2030 1200.0 1.0 0.0 -fr 02_wind_on 1 181 2030 0.0 0.0 0.0 -fr 03_wind_off 1 181 2030 0.0 0.0 0.0 -fr 04_res 1 181 2030 0.0 0.0 0.0 -fr 05_nuclear 1 181 2030 0.0 0.0 0.0 -fr 06_coal 1 181 2030 0.0 0.0 0.0 -fr 07_gas 1 181 2030 0.0 0.0 0.0 -fr 08_non-res 1 181 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 181 2030 0.0 0.0 0.0 -fr 01_solar 1 182 2030 1300.0 1.0 0.0 -fr 02_wind_on 1 182 2030 0.0 0.0 0.0 -fr 03_wind_off 1 182 2030 0.0 0.0 0.0 -fr 04_res 1 182 2030 0.0 0.0 0.0 -fr 05_nuclear 1 182 2030 0.0 0.0 0.0 -fr 06_coal 1 182 2030 0.0 0.0 0.0 -fr 07_gas 1 182 2030 0.0 0.0 0.0 -fr 08_non-res 1 182 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 182 2030 0.0 0.0 0.0 -fr 01_solar 1 183 2030 1400.0 1.0 0.0 -fr 02_wind_on 1 183 2030 0.0 0.0 0.0 -fr 03_wind_off 1 183 2030 0.0 0.0 0.0 -fr 04_res 1 183 2030 0.0 0.0 0.0 -fr 05_nuclear 1 183 2030 0.0 0.0 0.0 -fr 06_coal 1 183 2030 0.0 0.0 0.0 -fr 07_gas 1 183 2030 0.0 0.0 0.0 -fr 08_non-res 1 183 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 183 2030 0.0 0.0 0.0 -fr 01_solar 1 184 2030 1500.0 1.0 0.0 -fr 02_wind_on 1 184 2030 0.0 0.0 0.0 -fr 03_wind_off 1 184 2030 0.0 0.0 0.0 -fr 04_res 1 184 2030 0.0 0.0 0.0 -fr 05_nuclear 1 184 2030 0.0 0.0 0.0 -fr 06_coal 1 184 2030 0.0 0.0 0.0 -fr 07_gas 1 184 2030 0.0 0.0 0.0 -fr 08_non-res 1 184 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 184 2030 0.0 0.0 0.0 -fr 01_solar 1 185 2030 1600.0 1.0 0.0 -fr 02_wind_on 1 185 2030 0.0 0.0 0.0 -fr 03_wind_off 1 185 2030 0.0 0.0 0.0 -fr 04_res 1 185 2030 0.0 0.0 0.0 -fr 05_nuclear 1 185 2030 0.0 0.0 0.0 -fr 06_coal 1 185 2030 0.0 0.0 0.0 -fr 07_gas 1 185 2030 0.0 0.0 0.0 -fr 08_non-res 1 185 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 185 2030 0.0 0.0 0.0 -fr 01_solar 1 186 2030 1700.0 1.0 0.0 -fr 02_wind_on 1 186 2030 0.0 0.0 0.0 -fr 03_wind_off 1 186 2030 0.0 0.0 0.0 -fr 04_res 1 186 2030 0.0 0.0 0.0 -fr 05_nuclear 1 186 2030 0.0 0.0 0.0 -fr 06_coal 1 186 2030 0.0 0.0 0.0 -fr 07_gas 1 186 2030 0.0 0.0 0.0 -fr 08_non-res 1 186 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 186 2030 0.0 0.0 0.0 -fr 01_solar 1 187 2030 1800.0 1.0 0.0 -fr 02_wind_on 1 187 2030 0.0 0.0 0.0 -fr 03_wind_off 1 187 2030 0.0 0.0 0.0 -fr 04_res 1 187 2030 0.0 0.0 0.0 -fr 05_nuclear 1 187 2030 0.0 0.0 0.0 -fr 06_coal 1 187 2030 0.0 0.0 0.0 -fr 07_gas 1 187 2030 0.0 0.0 0.0 -fr 08_non-res 1 187 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 187 2030 0.0 0.0 0.0 -fr 01_solar 1 188 2030 1900.0 1.0 0.0 -fr 02_wind_on 1 188 2030 0.0 0.0 0.0 -fr 03_wind_off 1 188 2030 0.0 0.0 0.0 -fr 04_res 1 188 2030 0.0 0.0 0.0 -fr 05_nuclear 1 188 2030 0.0 0.0 0.0 -fr 06_coal 1 188 2030 0.0 0.0 0.0 -fr 07_gas 1 188 2030 0.0 0.0 0.0 -fr 08_non-res 1 188 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 188 2030 0.0 0.0 0.0 -fr 01_solar 1 189 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 189 2030 0.0 0.0 0.0 -fr 03_wind_off 1 189 2030 0.0 0.0 0.0 -fr 04_res 1 189 2030 0.0 0.0 0.0 -fr 05_nuclear 1 189 2030 0.0 0.0 0.0 -fr 06_coal 1 189 2030 0.0 0.0 0.0 -fr 07_gas 1 189 2030 0.0 0.0 0.0 -fr 08_non-res 1 189 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 189 2030 0.0 0.0 0.0 -fr 01_solar 1 190 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 190 2030 100.0 1.0 0.0 -fr 03_wind_off 1 190 2030 0.0 0.0 0.0 -fr 04_res 1 190 2030 0.0 0.0 0.0 -fr 05_nuclear 1 190 2030 0.0 0.0 0.0 -fr 06_coal 1 190 2030 0.0 0.0 0.0 -fr 07_gas 1 190 2030 0.0 0.0 0.0 -fr 08_non-res 1 190 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 190 2030 0.0 0.0 0.0 -fr 01_solar 1 191 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 191 2030 200.0 1.0 0.0 -fr 03_wind_off 1 191 2030 0.0 0.0 0.0 -fr 04_res 1 191 2030 0.0 0.0 0.0 -fr 05_nuclear 1 191 2030 0.0 0.0 0.0 -fr 06_coal 1 191 2030 0.0 0.0 0.0 -fr 07_gas 1 191 2030 0.0 0.0 0.0 -fr 08_non-res 1 191 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 191 2030 0.0 0.0 0.0 -fr 01_solar 1 192 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 192 2030 300.0 1.0 0.0 -fr 03_wind_off 1 192 2030 0.0 0.0 0.0 -fr 04_res 1 192 2030 0.0 0.0 0.0 -fr 05_nuclear 1 192 2030 0.0 0.0 0.0 -fr 06_coal 1 192 2030 0.0 0.0 0.0 -fr 07_gas 1 192 2030 0.0 0.0 0.0 -fr 08_non-res 1 192 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 192 2030 0.0 0.0 0.0 -fr 01_solar 1 193 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 193 2030 400.0 1.0 0.0 -fr 03_wind_off 1 193 2030 0.0 0.0 0.0 -fr 04_res 1 193 2030 0.0 0.0 0.0 -fr 05_nuclear 1 193 2030 0.0 0.0 0.0 -fr 06_coal 1 193 2030 0.0 0.0 0.0 -fr 07_gas 1 193 2030 0.0 0.0 0.0 -fr 08_non-res 1 193 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 193 2030 0.0 0.0 0.0 -fr 01_solar 1 194 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 194 2030 500.0 1.0 0.0 -fr 03_wind_off 1 194 2030 0.0 0.0 0.0 -fr 04_res 1 194 2030 0.0 0.0 0.0 -fr 05_nuclear 1 194 2030 0.0 0.0 0.0 -fr 06_coal 1 194 2030 0.0 0.0 0.0 -fr 07_gas 1 194 2030 0.0 0.0 0.0 -fr 08_non-res 1 194 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 194 2030 0.0 0.0 0.0 -fr 01_solar 1 195 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 195 2030 600.0 1.0 0.0 -fr 03_wind_off 1 195 2030 0.0 0.0 0.0 -fr 04_res 1 195 2030 0.0 0.0 0.0 -fr 05_nuclear 1 195 2030 0.0 0.0 0.0 -fr 06_coal 1 195 2030 0.0 0.0 0.0 -fr 07_gas 1 195 2030 0.0 0.0 0.0 -fr 08_non-res 1 195 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 195 2030 0.0 0.0 0.0 -fr 01_solar 1 196 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 196 2030 700.0 1.0 0.0 -fr 03_wind_off 1 196 2030 0.0 0.0 0.0 -fr 04_res 1 196 2030 0.0 0.0 0.0 -fr 05_nuclear 1 196 2030 0.0 0.0 0.0 -fr 06_coal 1 196 2030 0.0 0.0 0.0 -fr 07_gas 1 196 2030 0.0 0.0 0.0 -fr 08_non-res 1 196 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 196 2030 0.0 0.0 0.0 -fr 01_solar 1 197 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 197 2030 800.0 1.0 0.0 -fr 03_wind_off 1 197 2030 0.0 0.0 0.0 -fr 04_res 1 197 2030 0.0 0.0 0.0 -fr 05_nuclear 1 197 2030 0.0 0.0 0.0 -fr 06_coal 1 197 2030 0.0 0.0 0.0 -fr 07_gas 1 197 2030 0.0 0.0 0.0 -fr 08_non-res 1 197 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 197 2030 0.0 0.0 0.0 -fr 01_solar 1 198 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 198 2030 900.0 1.0 0.0 -fr 03_wind_off 1 198 2030 0.0 0.0 0.0 -fr 04_res 1 198 2030 0.0 0.0 0.0 -fr 05_nuclear 1 198 2030 0.0 0.0 0.0 -fr 06_coal 1 198 2030 0.0 0.0 0.0 -fr 07_gas 1 198 2030 0.0 0.0 0.0 -fr 08_non-res 1 198 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 198 2030 0.0 0.0 0.0 -fr 01_solar 1 199 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 199 2030 1000.0 1.0 0.0 -fr 03_wind_off 1 199 2030 0.0 0.0 0.0 -fr 04_res 1 199 2030 0.0 0.0 0.0 -fr 05_nuclear 1 199 2030 0.0 0.0 0.0 -fr 06_coal 1 199 2030 0.0 0.0 0.0 -fr 07_gas 1 199 2030 0.0 0.0 0.0 -fr 08_non-res 1 199 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 199 2030 0.0 0.0 0.0 -fr 01_solar 1 200 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 200 2030 1100.0 1.0 0.0 -fr 03_wind_off 1 200 2030 0.0 0.0 0.0 -fr 04_res 1 200 2030 0.0 0.0 0.0 -fr 05_nuclear 1 200 2030 0.0 0.0 0.0 -fr 06_coal 1 200 2030 0.0 0.0 0.0 -fr 07_gas 1 200 2030 0.0 0.0 0.0 -fr 08_non-res 1 200 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 200 2030 0.0 0.0 0.0 -fr 01_solar 1 201 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 201 2030 1200.0 1.0 0.0 -fr 03_wind_off 1 201 2030 0.0 0.0 0.0 -fr 04_res 1 201 2030 0.0 0.0 0.0 -fr 05_nuclear 1 201 2030 0.0 0.0 0.0 -fr 06_coal 1 201 2030 0.0 0.0 0.0 -fr 07_gas 1 201 2030 0.0 0.0 0.0 -fr 08_non-res 1 201 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 201 2030 0.0 0.0 0.0 -fr 01_solar 1 202 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 202 2030 1300.0 1.0 0.0 -fr 03_wind_off 1 202 2030 0.0 0.0 0.0 -fr 04_res 1 202 2030 0.0 0.0 0.0 -fr 05_nuclear 1 202 2030 0.0 0.0 0.0 -fr 06_coal 1 202 2030 0.0 0.0 0.0 -fr 07_gas 1 202 2030 0.0 0.0 0.0 -fr 08_non-res 1 202 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 202 2030 0.0 0.0 0.0 -fr 01_solar 1 203 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 203 2030 1400.0 1.0 0.0 -fr 03_wind_off 1 203 2030 0.0 0.0 0.0 -fr 04_res 1 203 2030 0.0 0.0 0.0 -fr 05_nuclear 1 203 2030 0.0 0.0 0.0 -fr 06_coal 1 203 2030 0.0 0.0 0.0 -fr 07_gas 1 203 2030 0.0 0.0 0.0 -fr 08_non-res 1 203 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 203 2030 0.0 0.0 0.0 -fr 01_solar 1 204 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 204 2030 1500.0 1.0 0.0 -fr 03_wind_off 1 204 2030 0.0 0.0 0.0 -fr 04_res 1 204 2030 0.0 0.0 0.0 -fr 05_nuclear 1 204 2030 0.0 0.0 0.0 -fr 06_coal 1 204 2030 0.0 0.0 0.0 -fr 07_gas 1 204 2030 0.0 0.0 0.0 -fr 08_non-res 1 204 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 204 2030 0.0 0.0 0.0 -fr 01_solar 1 205 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 205 2030 1600.0 1.0 0.0 -fr 03_wind_off 1 205 2030 0.0 0.0 0.0 -fr 04_res 1 205 2030 0.0 0.0 0.0 -fr 05_nuclear 1 205 2030 0.0 0.0 0.0 -fr 06_coal 1 205 2030 0.0 0.0 0.0 -fr 07_gas 1 205 2030 0.0 0.0 0.0 -fr 08_non-res 1 205 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 205 2030 0.0 0.0 0.0 -fr 01_solar 1 206 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 206 2030 1700.0 1.0 0.0 -fr 03_wind_off 1 206 2030 0.0 0.0 0.0 -fr 04_res 1 206 2030 0.0 0.0 0.0 -fr 05_nuclear 1 206 2030 0.0 0.0 0.0 -fr 06_coal 1 206 2030 0.0 0.0 0.0 -fr 07_gas 1 206 2030 0.0 0.0 0.0 -fr 08_non-res 1 206 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 206 2030 0.0 0.0 0.0 -fr 01_solar 1 207 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 207 2030 1800.0 1.0 0.0 -fr 03_wind_off 1 207 2030 0.0 0.0 0.0 -fr 04_res 1 207 2030 0.0 0.0 0.0 -fr 05_nuclear 1 207 2030 0.0 0.0 0.0 -fr 06_coal 1 207 2030 0.0 0.0 0.0 -fr 07_gas 1 207 2030 0.0 0.0 0.0 -fr 08_non-res 1 207 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 207 2030 0.0 0.0 0.0 -fr 01_solar 1 208 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 208 2030 1900.0 1.0 0.0 -fr 03_wind_off 1 208 2030 0.0 0.0 0.0 -fr 04_res 1 208 2030 0.0 0.0 0.0 -fr 05_nuclear 1 208 2030 0.0 0.0 0.0 -fr 06_coal 1 208 2030 0.0 0.0 0.0 -fr 07_gas 1 208 2030 0.0 0.0 0.0 -fr 08_non-res 1 208 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 208 2030 0.0 0.0 0.0 -fr 01_solar 1 209 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 209 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 209 2030 0.0 0.0 0.0 -fr 04_res 1 209 2030 0.0 0.0 0.0 -fr 05_nuclear 1 209 2030 0.0 0.0 0.0 -fr 06_coal 1 209 2030 0.0 0.0 0.0 -fr 07_gas 1 209 2030 0.0 0.0 0.0 -fr 08_non-res 1 209 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 209 2030 0.0 0.0 0.0 -fr 01_solar 1 210 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 210 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 210 2030 100.0 1.0 0.0 -fr 04_res 1 210 2030 0.0 0.0 0.0 -fr 05_nuclear 1 210 2030 0.0 0.0 0.0 -fr 06_coal 1 210 2030 0.0 0.0 0.0 -fr 07_gas 1 210 2030 0.0 0.0 0.0 -fr 08_non-res 1 210 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 210 2030 0.0 0.0 0.0 -fr 01_solar 1 211 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 211 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 211 2030 200.0 1.0 0.0 -fr 04_res 1 211 2030 0.0 0.0 0.0 -fr 05_nuclear 1 211 2030 0.0 0.0 0.0 -fr 06_coal 1 211 2030 0.0 0.0 0.0 -fr 07_gas 1 211 2030 0.0 0.0 0.0 -fr 08_non-res 1 211 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 211 2030 0.0 0.0 0.0 -fr 01_solar 1 212 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 212 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 212 2030 300.0 1.0 0.0 -fr 04_res 1 212 2030 0.0 0.0 0.0 -fr 05_nuclear 1 212 2030 0.0 0.0 0.0 -fr 06_coal 1 212 2030 0.0 0.0 0.0 -fr 07_gas 1 212 2030 0.0 0.0 0.0 -fr 08_non-res 1 212 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 212 2030 0.0 0.0 0.0 -fr 01_solar 1 213 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 213 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 213 2030 400.0 1.0 0.0 -fr 04_res 1 213 2030 0.0 0.0 0.0 -fr 05_nuclear 1 213 2030 0.0 0.0 0.0 -fr 06_coal 1 213 2030 0.0 0.0 0.0 -fr 07_gas 1 213 2030 0.0 0.0 0.0 -fr 08_non-res 1 213 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 213 2030 0.0 0.0 0.0 -fr 01_solar 1 214 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 214 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 214 2030 500.0 1.0 0.0 -fr 04_res 1 214 2030 0.0 0.0 0.0 -fr 05_nuclear 1 214 2030 0.0 0.0 0.0 -fr 06_coal 1 214 2030 0.0 0.0 0.0 -fr 07_gas 1 214 2030 0.0 0.0 0.0 -fr 08_non-res 1 214 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 214 2030 0.0 0.0 0.0 -fr 01_solar 1 215 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 215 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 215 2030 600.0 1.0 0.0 -fr 04_res 1 215 2030 0.0 0.0 0.0 -fr 05_nuclear 1 215 2030 0.0 0.0 0.0 -fr 06_coal 1 215 2030 0.0 0.0 0.0 -fr 07_gas 1 215 2030 0.0 0.0 0.0 -fr 08_non-res 1 215 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 215 2030 0.0 0.0 0.0 -fr 01_solar 1 216 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 216 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 216 2030 700.0 1.0 0.0 -fr 04_res 1 216 2030 0.0 0.0 0.0 -fr 05_nuclear 1 216 2030 0.0 0.0 0.0 -fr 06_coal 1 216 2030 0.0 0.0 0.0 -fr 07_gas 1 216 2030 0.0 0.0 0.0 -fr 08_non-res 1 216 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 216 2030 0.0 0.0 0.0 -fr 01_solar 1 217 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 217 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 217 2030 800.0 1.0 0.0 -fr 04_res 1 217 2030 0.0 0.0 0.0 -fr 05_nuclear 1 217 2030 0.0 0.0 0.0 -fr 06_coal 1 217 2030 0.0 0.0 0.0 -fr 07_gas 1 217 2030 0.0 0.0 0.0 -fr 08_non-res 1 217 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 217 2030 0.0 0.0 0.0 -fr 01_solar 1 218 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 218 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 218 2030 900.0 1.0 0.0 -fr 04_res 1 218 2030 0.0 0.0 0.0 -fr 05_nuclear 1 218 2030 0.0 0.0 0.0 -fr 06_coal 1 218 2030 0.0 0.0 0.0 -fr 07_gas 1 218 2030 0.0 0.0 0.0 -fr 08_non-res 1 218 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 218 2030 0.0 0.0 0.0 -fr 01_solar 1 219 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 219 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 219 2030 1000.0 1.0 0.0 -fr 04_res 1 219 2030 0.0 0.0 0.0 -fr 05_nuclear 1 219 2030 0.0 0.0 0.0 -fr 06_coal 1 219 2030 0.0 0.0 0.0 -fr 07_gas 1 219 2030 0.0 0.0 0.0 -fr 08_non-res 1 219 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 219 2030 0.0 0.0 0.0 -fr 01_solar 1 220 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 220 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 220 2030 1100.0 1.0 0.0 -fr 04_res 1 220 2030 0.0 0.0 0.0 -fr 05_nuclear 1 220 2030 0.0 0.0 0.0 -fr 06_coal 1 220 2030 0.0 0.0 0.0 -fr 07_gas 1 220 2030 0.0 0.0 0.0 -fr 08_non-res 1 220 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 220 2030 0.0 0.0 0.0 -fr 01_solar 1 221 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 221 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 221 2030 1200.0 1.0 0.0 -fr 04_res 1 221 2030 0.0 0.0 0.0 -fr 05_nuclear 1 221 2030 0.0 0.0 0.0 -fr 06_coal 1 221 2030 0.0 0.0 0.0 -fr 07_gas 1 221 2030 0.0 0.0 0.0 -fr 08_non-res 1 221 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 221 2030 0.0 0.0 0.0 -fr 01_solar 1 222 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 222 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 222 2030 1300.0 1.0 0.0 -fr 04_res 1 222 2030 0.0 0.0 0.0 -fr 05_nuclear 1 222 2030 0.0 0.0 0.0 -fr 06_coal 1 222 2030 0.0 0.0 0.0 -fr 07_gas 1 222 2030 0.0 0.0 0.0 -fr 08_non-res 1 222 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 222 2030 0.0 0.0 0.0 -fr 01_solar 1 223 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 223 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 223 2030 1400.0 1.0 0.0 -fr 04_res 1 223 2030 0.0 0.0 0.0 -fr 05_nuclear 1 223 2030 0.0 0.0 0.0 -fr 06_coal 1 223 2030 0.0 0.0 0.0 -fr 07_gas 1 223 2030 0.0 0.0 0.0 -fr 08_non-res 1 223 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 223 2030 0.0 0.0 0.0 -fr 01_solar 1 224 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 224 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 224 2030 1500.0 1.0 0.0 -fr 04_res 1 224 2030 0.0 0.0 0.0 -fr 05_nuclear 1 224 2030 0.0 0.0 0.0 -fr 06_coal 1 224 2030 0.0 0.0 0.0 -fr 07_gas 1 224 2030 0.0 0.0 0.0 -fr 08_non-res 1 224 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 224 2030 0.0 0.0 0.0 -fr 01_solar 1 225 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 225 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 225 2030 1600.0 1.0 0.0 -fr 04_res 1 225 2030 0.0 0.0 0.0 -fr 05_nuclear 1 225 2030 0.0 0.0 0.0 -fr 06_coal 1 225 2030 0.0 0.0 0.0 -fr 07_gas 1 225 2030 0.0 0.0 0.0 -fr 08_non-res 1 225 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 225 2030 0.0 0.0 0.0 -fr 01_solar 1 226 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 226 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 226 2030 1700.0 1.0 0.0 -fr 04_res 1 226 2030 0.0 0.0 0.0 -fr 05_nuclear 1 226 2030 0.0 0.0 0.0 -fr 06_coal 1 226 2030 0.0 0.0 0.0 -fr 07_gas 1 226 2030 0.0 0.0 0.0 -fr 08_non-res 1 226 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 226 2030 0.0 0.0 0.0 -fr 01_solar 1 227 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 227 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 227 2030 1800.0 1.0 0.0 -fr 04_res 1 227 2030 0.0 0.0 0.0 -fr 05_nuclear 1 227 2030 0.0 0.0 0.0 -fr 06_coal 1 227 2030 0.0 0.0 0.0 -fr 07_gas 1 227 2030 0.0 0.0 0.0 -fr 08_non-res 1 227 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 227 2030 0.0 0.0 0.0 -fr 01_solar 1 228 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 228 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 228 2030 1900.0 1.0 0.0 -fr 04_res 1 228 2030 0.0 0.0 0.0 -fr 05_nuclear 1 228 2030 0.0 0.0 0.0 -fr 06_coal 1 228 2030 0.0 0.0 0.0 -fr 07_gas 1 228 2030 0.0 0.0 0.0 -fr 08_non-res 1 228 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 228 2030 0.0 0.0 0.0 -fr 01_solar 1 229 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 229 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 229 2030 2000.0 1.0 0.0 -fr 04_res 1 229 2030 0.0 0.0 0.0 -fr 05_nuclear 1 229 2030 0.0 0.0 0.0 -fr 06_coal 1 229 2030 0.0 0.0 0.0 -fr 07_gas 1 229 2030 0.0 0.0 0.0 -fr 08_non-res 1 229 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 229 2030 0.0 0.0 0.0 -fr 01_solar 1 230 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 230 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 230 2030 2000.0 1.0 0.0 -fr 04_res 1 230 2030 100.0 1.0 0.0 -fr 05_nuclear 1 230 2030 0.0 0.0 0.0 -fr 06_coal 1 230 2030 0.0 0.0 0.0 -fr 07_gas 1 230 2030 0.0 0.0 0.0 -fr 08_non-res 1 230 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 230 2030 0.0 0.0 0.0 -fr 01_solar 1 231 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 231 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 231 2030 2000.0 1.0 0.0 -fr 04_res 1 231 2030 200.0 1.0 0.0 -fr 05_nuclear 1 231 2030 0.0 0.0 0.0 -fr 06_coal 1 231 2030 0.0 0.0 0.0 -fr 07_gas 1 231 2030 0.0 0.0 0.0 -fr 08_non-res 1 231 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 231 2030 0.0 0.0 0.0 -fr 01_solar 1 232 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 232 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 232 2030 2000.0 1.0 0.0 -fr 04_res 1 232 2030 300.0 1.0 0.0 -fr 05_nuclear 1 232 2030 0.0 0.0 0.0 -fr 06_coal 1 232 2030 0.0 0.0 0.0 -fr 07_gas 1 232 2030 0.0 0.0 0.0 -fr 08_non-res 1 232 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 232 2030 0.0 0.0 0.0 -fr 01_solar 1 233 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 233 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 233 2030 2000.0 1.0 0.0 -fr 04_res 1 233 2030 400.0 1.0 0.0 -fr 05_nuclear 1 233 2030 0.0 0.0 0.0 -fr 06_coal 1 233 2030 0.0 0.0 0.0 -fr 07_gas 1 233 2030 0.0 0.0 0.0 -fr 08_non-res 1 233 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 233 2030 0.0 0.0 0.0 -fr 01_solar 1 234 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 234 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 234 2030 2000.0 1.0 0.0 -fr 04_res 1 234 2030 500.0 1.0 0.0 -fr 05_nuclear 1 234 2030 0.0 0.0 0.0 -fr 06_coal 1 234 2030 0.0 0.0 0.0 -fr 07_gas 1 234 2030 0.0 0.0 0.0 -fr 08_non-res 1 234 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 234 2030 0.0 0.0 0.0 -fr 01_solar 1 235 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 235 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 235 2030 2000.0 1.0 0.0 -fr 04_res 1 235 2030 600.0 1.0 0.0 -fr 05_nuclear 1 235 2030 0.0 0.0 0.0 -fr 06_coal 1 235 2030 0.0 0.0 0.0 -fr 07_gas 1 235 2030 0.0 0.0 0.0 -fr 08_non-res 1 235 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 235 2030 0.0 0.0 0.0 -fr 01_solar 1 236 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 236 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 236 2030 2000.0 1.0 0.0 -fr 04_res 1 236 2030 700.0 1.0 0.0 -fr 05_nuclear 1 236 2030 0.0 0.0 0.0 -fr 06_coal 1 236 2030 0.0 0.0 0.0 -fr 07_gas 1 236 2030 0.0 0.0 0.0 -fr 08_non-res 1 236 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 236 2030 0.0 0.0 0.0 -fr 01_solar 1 237 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 237 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 237 2030 2000.0 1.0 0.0 -fr 04_res 1 237 2030 800.0 1.0 0.0 -fr 05_nuclear 1 237 2030 0.0 0.0 0.0 -fr 06_coal 1 237 2030 0.0 0.0 0.0 -fr 07_gas 1 237 2030 0.0 0.0 0.0 -fr 08_non-res 1 237 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 237 2030 0.0 0.0 0.0 -fr 01_solar 1 238 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 238 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 238 2030 2000.0 1.0 0.0 -fr 04_res 1 238 2030 900.0 1.0 0.0 -fr 05_nuclear 1 238 2030 0.0 0.0 0.0 -fr 06_coal 1 238 2030 0.0 0.0 0.0 -fr 07_gas 1 238 2030 0.0 0.0 0.0 -fr 08_non-res 1 238 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 238 2030 0.0 0.0 0.0 -fr 01_solar 1 239 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 239 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 239 2030 2000.0 1.0 0.0 -fr 04_res 1 239 2030 1000.0 1.0 0.0 -fr 05_nuclear 1 239 2030 0.0 0.0 0.0 -fr 06_coal 1 239 2030 0.0 0.0 0.0 -fr 07_gas 1 239 2030 0.0 0.0 0.0 -fr 08_non-res 1 239 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 239 2030 0.0 0.0 0.0 -fr 01_solar 1 240 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 240 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 240 2030 2000.0 1.0 0.0 -fr 04_res 1 240 2030 1100.0 1.0 0.0 -fr 05_nuclear 1 240 2030 0.0 0.0 0.0 -fr 06_coal 1 240 2030 0.0 0.0 0.0 -fr 07_gas 1 240 2030 0.0 0.0 0.0 -fr 08_non-res 1 240 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 240 2030 0.0 0.0 0.0 -fr 01_solar 1 241 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 241 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 241 2030 2000.0 1.0 0.0 -fr 04_res 1 241 2030 1200.0 1.0 0.0 -fr 05_nuclear 1 241 2030 0.0 0.0 0.0 -fr 06_coal 1 241 2030 0.0 0.0 0.0 -fr 07_gas 1 241 2030 0.0 0.0 0.0 -fr 08_non-res 1 241 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 241 2030 0.0 0.0 0.0 -fr 01_solar 1 242 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 242 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 242 2030 2000.0 1.0 0.0 -fr 04_res 1 242 2030 1300.0 1.0 0.0 -fr 05_nuclear 1 242 2030 0.0 0.0 0.0 -fr 06_coal 1 242 2030 0.0 0.0 0.0 -fr 07_gas 1 242 2030 0.0 0.0 0.0 -fr 08_non-res 1 242 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 242 2030 0.0 0.0 0.0 -fr 01_solar 1 243 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 243 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 243 2030 2000.0 1.0 0.0 -fr 04_res 1 243 2030 1400.0 1.0 0.0 -fr 05_nuclear 1 243 2030 0.0 0.0 0.0 -fr 06_coal 1 243 2030 0.0 0.0 0.0 -fr 07_gas 1 243 2030 0.0 0.0 0.0 -fr 08_non-res 1 243 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 243 2030 0.0 0.0 0.0 -fr 01_solar 1 244 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 244 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 244 2030 2000.0 1.0 0.0 -fr 04_res 1 244 2030 1500.0 1.0 0.0 -fr 05_nuclear 1 244 2030 0.0 0.0 0.0 -fr 06_coal 1 244 2030 0.0 0.0 0.0 -fr 07_gas 1 244 2030 0.0 0.0 0.0 -fr 08_non-res 1 244 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 244 2030 0.0 0.0 0.0 -fr 01_solar 1 245 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 245 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 245 2030 2000.0 1.0 0.0 -fr 04_res 1 245 2030 1600.0 1.0 0.0 -fr 05_nuclear 1 245 2030 0.0 0.0 0.0 -fr 06_coal 1 245 2030 0.0 0.0 0.0 -fr 07_gas 1 245 2030 0.0 0.0 0.0 -fr 08_non-res 1 245 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 245 2030 0.0 0.0 0.0 -fr 01_solar 1 246 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 246 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 246 2030 2000.0 1.0 0.0 -fr 04_res 1 246 2030 1700.0 1.0 0.0 -fr 05_nuclear 1 246 2030 0.0 0.0 0.0 -fr 06_coal 1 246 2030 0.0 0.0 0.0 -fr 07_gas 1 246 2030 0.0 0.0 0.0 -fr 08_non-res 1 246 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 246 2030 0.0 0.0 0.0 -fr 01_solar 1 247 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 247 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 247 2030 2000.0 1.0 0.0 -fr 04_res 1 247 2030 1800.0 1.0 0.0 -fr 05_nuclear 1 247 2030 0.0 0.0 0.0 -fr 06_coal 1 247 2030 0.0 0.0 0.0 -fr 07_gas 1 247 2030 0.0 0.0 0.0 -fr 08_non-res 1 247 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 247 2030 0.0 0.0 0.0 -fr 01_solar 1 248 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 248 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 248 2030 2000.0 1.0 0.0 -fr 04_res 1 248 2030 1900.0 1.0 0.0 -fr 05_nuclear 1 248 2030 0.0 0.0 0.0 -fr 06_coal 1 248 2030 0.0 0.0 0.0 -fr 07_gas 1 248 2030 0.0 0.0 0.0 -fr 08_non-res 1 248 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 248 2030 0.0 0.0 0.0 -fr 01_solar 1 249 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 249 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 249 2030 2000.0 1.0 0.0 -fr 04_res 1 249 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 249 2030 0.0 0.0 0.0 -fr 06_coal 1 249 2030 0.0 0.0 0.0 -fr 07_gas 1 249 2030 0.0 0.0 0.0 -fr 08_non-res 1 249 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 249 2030 0.0 0.0 0.0 -fr 01_solar 1 250 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 250 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 250 2030 2000.0 1.0 0.0 -fr 04_res 1 250 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 250 2030 100.0 1.0 0.0 -fr 06_coal 1 250 2030 0.0 0.0 0.0 -fr 07_gas 1 250 2030 0.0 0.0 0.0 -fr 08_non-res 1 250 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 250 2030 0.0 0.0 0.0 -fr 01_solar 1 251 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 251 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 251 2030 2000.0 1.0 0.0 -fr 04_res 1 251 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 251 2030 200.0 1.0 0.0 -fr 06_coal 1 251 2030 0.0 0.0 0.0 -fr 07_gas 1 251 2030 0.0 0.0 0.0 -fr 08_non-res 1 251 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 251 2030 0.0 0.0 0.0 -fr 01_solar 1 252 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 252 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 252 2030 2000.0 1.0 0.0 -fr 04_res 1 252 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 252 2030 300.0 1.0 0.0 -fr 06_coal 1 252 2030 0.0 0.0 0.0 -fr 07_gas 1 252 2030 0.0 0.0 0.0 -fr 08_non-res 1 252 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 252 2030 0.0 0.0 0.0 -fr 01_solar 1 253 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 253 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 253 2030 2000.0 1.0 0.0 -fr 04_res 1 253 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 253 2030 400.0 1.0 0.0 -fr 06_coal 1 253 2030 0.0 0.0 0.0 -fr 07_gas 1 253 2030 0.0 0.0 0.0 -fr 08_non-res 1 253 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 253 2030 0.0 0.0 0.0 -fr 01_solar 1 254 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 254 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 254 2030 2000.0 1.0 0.0 -fr 04_res 1 254 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 254 2030 500.0 1.0 0.0 -fr 06_coal 1 254 2030 0.0 0.0 0.0 -fr 07_gas 1 254 2030 0.0 0.0 0.0 -fr 08_non-res 1 254 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 254 2030 0.0 0.0 0.0 -fr 01_solar 1 255 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 255 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 255 2030 2000.0 1.0 0.0 -fr 04_res 1 255 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 255 2030 600.0 1.0 0.0 -fr 06_coal 1 255 2030 0.0 0.0 0.0 -fr 07_gas 1 255 2030 0.0 0.0 0.0 -fr 08_non-res 1 255 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 255 2030 0.0 0.0 0.0 -fr 01_solar 1 256 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 256 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 256 2030 2000.0 1.0 0.0 -fr 04_res 1 256 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 256 2030 700.0 1.0 0.0 -fr 06_coal 1 256 2030 0.0 0.0 0.0 -fr 07_gas 1 256 2030 0.0 0.0 0.0 -fr 08_non-res 1 256 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 256 2030 0.0 0.0 0.0 -fr 01_solar 1 257 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 257 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 257 2030 2000.0 1.0 0.0 -fr 04_res 1 257 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 257 2030 800.0 1.0 0.0 -fr 06_coal 1 257 2030 0.0 0.0 0.0 -fr 07_gas 1 257 2030 0.0 0.0 0.0 -fr 08_non-res 1 257 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 257 2030 0.0 0.0 0.0 -fr 01_solar 1 258 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 258 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 258 2030 2000.0 1.0 0.0 -fr 04_res 1 258 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 258 2030 900.0 1.0 0.0 -fr 06_coal 1 258 2030 0.0 0.0 0.0 -fr 07_gas 1 258 2030 0.0 0.0 0.0 -fr 08_non-res 1 258 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 258 2030 0.0 0.0 0.0 -fr 01_solar 1 259 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 259 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 259 2030 2000.0 1.0 0.0 -fr 04_res 1 259 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 259 2030 1000.0 1.0 0.0 -fr 06_coal 1 259 2030 0.0 0.0 0.0 -fr 07_gas 1 259 2030 0.0 0.0 0.0 -fr 08_non-res 1 259 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 259 2030 0.0 0.0 0.0 -fr 01_solar 1 260 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 260 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 260 2030 2000.0 1.0 0.0 -fr 04_res 1 260 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 260 2030 1100.0 1.0 0.0 -fr 06_coal 1 260 2030 0.0 0.0 0.0 -fr 07_gas 1 260 2030 0.0 0.0 0.0 -fr 08_non-res 1 260 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 260 2030 0.0 0.0 0.0 -fr 01_solar 1 261 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 261 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 261 2030 2000.0 1.0 0.0 -fr 04_res 1 261 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 261 2030 1200.0 1.0 0.0 -fr 06_coal 1 261 2030 0.0 0.0 0.0 -fr 07_gas 1 261 2030 0.0 0.0 0.0 -fr 08_non-res 1 261 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 261 2030 0.0 0.0 0.0 -fr 01_solar 1 262 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 262 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 262 2030 2000.0 1.0 0.0 -fr 04_res 1 262 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 262 2030 1300.0 1.0 0.0 -fr 06_coal 1 262 2030 0.0 0.0 0.0 -fr 07_gas 1 262 2030 0.0 0.0 0.0 -fr 08_non-res 1 262 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 262 2030 0.0 0.0 0.0 -fr 01_solar 1 263 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 263 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 263 2030 2000.0 1.0 0.0 -fr 04_res 1 263 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 263 2030 1400.0 1.0 0.0 -fr 06_coal 1 263 2030 0.0 0.0 0.0 -fr 07_gas 1 263 2030 0.0 0.0 0.0 -fr 08_non-res 1 263 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 263 2030 0.0 0.0 0.0 -fr 01_solar 1 264 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 264 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 264 2030 2000.0 1.0 0.0 -fr 04_res 1 264 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 264 2030 1500.0 1.0 0.0 -fr 06_coal 1 264 2030 0.0 0.0 0.0 -fr 07_gas 1 264 2030 0.0 0.0 0.0 -fr 08_non-res 1 264 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 264 2030 0.0 0.0 0.0 -fr 01_solar 1 265 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 265 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 265 2030 2000.0 1.0 0.0 -fr 04_res 1 265 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 265 2030 1600.0 1.0 0.0 -fr 06_coal 1 265 2030 0.0 0.0 0.0 -fr 07_gas 1 265 2030 0.0 0.0 0.0 -fr 08_non-res 1 265 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 265 2030 0.0 0.0 0.0 -fr 01_solar 1 266 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 266 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 266 2030 2000.0 1.0 0.0 -fr 04_res 1 266 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 266 2030 1700.0 1.0 0.0 -fr 06_coal 1 266 2030 0.0 0.0 0.0 -fr 07_gas 1 266 2030 0.0 0.0 0.0 -fr 08_non-res 1 266 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 266 2030 0.0 0.0 0.0 -fr 01_solar 1 267 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 267 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 267 2030 2000.0 1.0 0.0 -fr 04_res 1 267 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 267 2030 1800.0 1.0 0.0 -fr 06_coal 1 267 2030 0.0 0.0 0.0 -fr 07_gas 1 267 2030 0.0 0.0 0.0 -fr 08_non-res 1 267 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 267 2030 0.0 0.0 0.0 -fr 01_solar 1 268 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 268 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 268 2030 2000.0 1.0 0.0 -fr 04_res 1 268 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 268 2030 1900.0 1.0 0.0 -fr 06_coal 1 268 2030 0.0 0.0 0.0 -fr 07_gas 1 268 2030 0.0 0.0 0.0 -fr 08_non-res 1 268 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 268 2030 0.0 0.0 0.0 -fr 01_solar 1 269 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 269 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 269 2030 2000.0 1.0 0.0 -fr 04_res 1 269 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 269 2030 2000.0 1.0 0.0 -fr 06_coal 1 269 2030 0.0 0.0 0.0 -fr 07_gas 1 269 2030 0.0 0.0 0.0 -fr 08_non-res 1 269 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 269 2030 0.0 0.0 0.0 -fr 01_solar 1 270 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 270 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 270 2030 2000.0 1.0 0.0 -fr 04_res 1 270 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 270 2030 2000.0 1.0 0.0 -fr 06_coal 1 270 2030 100.0 1.0 0.0 -fr 07_gas 1 270 2030 0.0 0.0 0.0 -fr 08_non-res 1 270 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 270 2030 0.0 0.0 0.0 -fr 01_solar 1 271 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 271 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 271 2030 2000.0 1.0 0.0 -fr 04_res 1 271 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 271 2030 2000.0 1.0 0.0 -fr 06_coal 1 271 2030 200.0 1.0 0.0 -fr 07_gas 1 271 2030 0.0 0.0 0.0 -fr 08_non-res 1 271 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 271 2030 0.0 0.0 0.0 -fr 01_solar 1 272 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 272 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 272 2030 2000.0 1.0 0.0 -fr 04_res 1 272 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 272 2030 2000.0 1.0 0.0 -fr 06_coal 1 272 2030 300.0 1.0 0.0 -fr 07_gas 1 272 2030 0.0 0.0 0.0 -fr 08_non-res 1 272 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 272 2030 0.0 0.0 0.0 -fr 01_solar 1 273 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 273 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 273 2030 2000.0 1.0 0.0 -fr 04_res 1 273 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 273 2030 2000.0 1.0 0.0 -fr 06_coal 1 273 2030 400.0 1.0 0.0 -fr 07_gas 1 273 2030 0.0 0.0 0.0 -fr 08_non-res 1 273 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 273 2030 0.0 0.0 0.0 -fr 01_solar 1 274 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 274 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 274 2030 2000.0 1.0 0.0 -fr 04_res 1 274 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 274 2030 2000.0 1.0 0.0 -fr 06_coal 1 274 2030 500.0 1.0 0.0 -fr 07_gas 1 274 2030 0.0 0.0 0.0 -fr 08_non-res 1 274 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 274 2030 0.0 0.0 0.0 -fr 01_solar 1 275 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 275 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 275 2030 2000.0 1.0 0.0 -fr 04_res 1 275 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 275 2030 2000.0 1.0 0.0 -fr 06_coal 1 275 2030 600.0 1.0 0.0 -fr 07_gas 1 275 2030 0.0 0.0 0.0 -fr 08_non-res 1 275 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 275 2030 0.0 0.0 0.0 -fr 01_solar 1 276 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 276 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 276 2030 2000.0 1.0 0.0 -fr 04_res 1 276 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 276 2030 2000.0 1.0 0.0 -fr 06_coal 1 276 2030 700.0 1.0 0.0 -fr 07_gas 1 276 2030 0.0 0.0 0.0 -fr 08_non-res 1 276 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 276 2030 0.0 0.0 0.0 -fr 01_solar 1 277 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 277 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 277 2030 2000.0 1.0 0.0 -fr 04_res 1 277 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 277 2030 2000.0 1.0 0.0 -fr 06_coal 1 277 2030 800.0 1.0 0.0 -fr 07_gas 1 277 2030 0.0 0.0 0.0 -fr 08_non-res 1 277 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 277 2030 0.0 0.0 0.0 -fr 01_solar 1 278 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 278 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 278 2030 2000.0 1.0 0.0 -fr 04_res 1 278 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 278 2030 2000.0 1.0 0.0 -fr 06_coal 1 278 2030 900.0 1.0 0.0 -fr 07_gas 1 278 2030 0.0 0.0 0.0 -fr 08_non-res 1 278 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 278 2030 0.0 0.0 0.0 -fr 01_solar 1 279 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 279 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 279 2030 2000.0 1.0 0.0 -fr 04_res 1 279 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 279 2030 2000.0 1.0 0.0 -fr 06_coal 1 279 2030 1000.0 1.0 0.0 -fr 07_gas 1 279 2030 0.0 0.0 0.0 -fr 08_non-res 1 279 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 279 2030 0.0 0.0 0.0 -fr 01_solar 1 280 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 280 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 280 2030 2000.0 1.0 0.0 -fr 04_res 1 280 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 280 2030 2000.0 1.0 0.0 -fr 06_coal 1 280 2030 1100.0 1.0 0.0 -fr 07_gas 1 280 2030 0.0 0.0 0.0 -fr 08_non-res 1 280 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 280 2030 0.0 0.0 0.0 -fr 01_solar 1 281 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 281 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 281 2030 2000.0 1.0 0.0 -fr 04_res 1 281 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 281 2030 2000.0 1.0 0.0 -fr 06_coal 1 281 2030 1200.0 1.0 0.0 -fr 07_gas 1 281 2030 0.0 0.0 0.0 -fr 08_non-res 1 281 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 281 2030 0.0 0.0 0.0 -fr 01_solar 1 282 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 282 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 282 2030 2000.0 1.0 0.0 -fr 04_res 1 282 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 282 2030 2000.0 1.0 0.0 -fr 06_coal 1 282 2030 1300.0 1.0 0.0 -fr 07_gas 1 282 2030 0.0 0.0 0.0 -fr 08_non-res 1 282 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 282 2030 0.0 0.0 0.0 -fr 01_solar 1 283 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 283 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 283 2030 2000.0 1.0 0.0 -fr 04_res 1 283 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 283 2030 2000.0 1.0 0.0 -fr 06_coal 1 283 2030 1400.0 1.0 0.0 -fr 07_gas 1 283 2030 0.0 0.0 0.0 -fr 08_non-res 1 283 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 283 2030 0.0 0.0 0.0 -fr 01_solar 1 284 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 284 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 284 2030 2000.0 1.0 0.0 -fr 04_res 1 284 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 284 2030 2000.0 1.0 0.0 -fr 06_coal 1 284 2030 1500.0 1.0 0.0 -fr 07_gas 1 284 2030 0.0 0.0 0.0 -fr 08_non-res 1 284 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 284 2030 0.0 0.0 0.0 -fr 01_solar 1 285 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 285 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 285 2030 2000.0 1.0 0.0 -fr 04_res 1 285 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 285 2030 2000.0 1.0 0.0 -fr 06_coal 1 285 2030 1600.0 1.0 0.0 -fr 07_gas 1 285 2030 0.0 0.0 0.0 -fr 08_non-res 1 285 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 285 2030 0.0 0.0 0.0 -fr 01_solar 1 286 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 286 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 286 2030 2000.0 1.0 0.0 -fr 04_res 1 286 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 286 2030 2000.0 1.0 0.0 -fr 06_coal 1 286 2030 1700.0 1.0 0.0 -fr 07_gas 1 286 2030 0.0 0.0 0.0 -fr 08_non-res 1 286 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 286 2030 0.0 0.0 0.0 -fr 01_solar 1 287 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 287 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 287 2030 2000.0 1.0 0.0 -fr 04_res 1 287 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 287 2030 2000.0 1.0 0.0 -fr 06_coal 1 287 2030 1800.0 1.0 0.0 -fr 07_gas 1 287 2030 0.0 0.0 0.0 -fr 08_non-res 1 287 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 287 2030 0.0 0.0 0.0 -fr 01_solar 1 288 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 288 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 288 2030 2000.0 1.0 0.0 -fr 04_res 1 288 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 288 2030 2000.0 1.0 0.0 -fr 06_coal 1 288 2030 1900.0 1.0 0.0 -fr 07_gas 1 288 2030 0.0 0.0 0.0 -fr 08_non-res 1 288 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 288 2030 0.0 0.0 0.0 -fr 01_solar 1 289 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 289 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 289 2030 2000.0 1.0 0.0 -fr 04_res 1 289 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 289 2030 2000.0 1.0 0.0 -fr 06_coal 1 289 2030 2000.0 1.0 0.0 -fr 07_gas 1 289 2030 0.0 0.0 0.0 -fr 08_non-res 1 289 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 289 2030 0.0 0.0 0.0 -fr 01_solar 1 290 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 290 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 290 2030 2000.0 1.0 0.0 -fr 04_res 1 290 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 290 2030 2000.0 1.0 0.0 -fr 06_coal 1 290 2030 2000.0 1.0 0.0 -fr 07_gas 1 290 2030 100.0 1.0 0.0 -fr 08_non-res 1 290 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 290 2030 0.0 0.0 0.0 -fr 01_solar 1 291 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 291 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 291 2030 2000.0 1.0 0.0 -fr 04_res 1 291 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 291 2030 2000.0 1.0 0.0 -fr 06_coal 1 291 2030 2000.0 1.0 0.0 -fr 07_gas 1 291 2030 200.0 1.0 0.0 -fr 08_non-res 1 291 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 291 2030 0.0 0.0 0.0 -fr 01_solar 1 292 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 292 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 292 2030 2000.0 1.0 0.0 -fr 04_res 1 292 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 292 2030 2000.0 1.0 0.0 -fr 06_coal 1 292 2030 2000.0 1.0 0.0 -fr 07_gas 1 292 2030 300.0 1.0 0.0 -fr 08_non-res 1 292 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 292 2030 0.0 0.0 0.0 -fr 01_solar 1 293 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 293 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 293 2030 2000.0 1.0 0.0 -fr 04_res 1 293 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 293 2030 2000.0 1.0 0.0 -fr 06_coal 1 293 2030 2000.0 1.0 0.0 -fr 07_gas 1 293 2030 400.0 1.0 0.0 -fr 08_non-res 1 293 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 293 2030 0.0 0.0 0.0 -fr 01_solar 1 294 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 294 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 294 2030 2000.0 1.0 0.0 -fr 04_res 1 294 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 294 2030 2000.0 1.0 0.0 -fr 06_coal 1 294 2030 2000.0 1.0 0.0 -fr 07_gas 1 294 2030 500.0 1.0 0.0 -fr 08_non-res 1 294 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 294 2030 0.0 0.0 0.0 -fr 01_solar 1 295 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 295 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 295 2030 2000.0 1.0 0.0 -fr 04_res 1 295 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 295 2030 2000.0 1.0 0.0 -fr 06_coal 1 295 2030 2000.0 1.0 0.0 -fr 07_gas 1 295 2030 600.0 1.0 0.0 -fr 08_non-res 1 295 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 295 2030 0.0 0.0 0.0 -fr 01_solar 1 296 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 296 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 296 2030 2000.0 1.0 0.0 -fr 04_res 1 296 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 296 2030 2000.0 1.0 0.0 -fr 06_coal 1 296 2030 2000.0 1.0 0.0 -fr 07_gas 1 296 2030 700.0 1.0 0.0 -fr 08_non-res 1 296 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 296 2030 0.0 0.0 0.0 -fr 01_solar 1 297 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 297 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 297 2030 2000.0 1.0 0.0 -fr 04_res 1 297 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 297 2030 2000.0 1.0 0.0 -fr 06_coal 1 297 2030 2000.0 1.0 0.0 -fr 07_gas 1 297 2030 800.0 1.0 0.0 -fr 08_non-res 1 297 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 297 2030 0.0 0.0 0.0 -fr 01_solar 1 298 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 298 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 298 2030 2000.0 1.0 0.0 -fr 04_res 1 298 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 298 2030 2000.0 1.0 0.0 -fr 06_coal 1 298 2030 2000.0 1.0 0.0 -fr 07_gas 1 298 2030 900.0 1.0 0.0 -fr 08_non-res 1 298 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 298 2030 0.0 0.0 0.0 -fr 01_solar 1 299 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 299 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 299 2030 2000.0 1.0 0.0 -fr 04_res 1 299 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 299 2030 2000.0 1.0 0.0 -fr 06_coal 1 299 2030 2000.0 1.0 0.0 -fr 07_gas 1 299 2030 1000.0 1.0 0.0 -fr 08_non-res 1 299 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 299 2030 0.0 0.0 0.0 -fr 01_solar 1 300 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 300 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 300 2030 2000.0 1.0 0.0 -fr 04_res 1 300 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 300 2030 2000.0 1.0 0.0 -fr 06_coal 1 300 2030 2000.0 1.0 0.0 -fr 07_gas 1 300 2030 1100.0 1.0 0.0 -fr 08_non-res 1 300 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 300 2030 0.0 0.0 0.0 -fr 01_solar 1 301 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 301 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 301 2030 2000.0 1.0 0.0 -fr 04_res 1 301 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 301 2030 2000.0 1.0 0.0 -fr 06_coal 1 301 2030 2000.0 1.0 0.0 -fr 07_gas 1 301 2030 1200.0 1.0 0.0 -fr 08_non-res 1 301 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 301 2030 0.0 0.0 0.0 -fr 01_solar 1 302 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 302 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 302 2030 2000.0 1.0 0.0 -fr 04_res 1 302 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 302 2030 2000.0 1.0 0.0 -fr 06_coal 1 302 2030 2000.0 1.0 0.0 -fr 07_gas 1 302 2030 1300.0 1.0 0.0 -fr 08_non-res 1 302 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 302 2030 0.0 0.0 0.0 -fr 01_solar 1 303 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 303 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 303 2030 2000.0 1.0 0.0 -fr 04_res 1 303 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 303 2030 2000.0 1.0 0.0 -fr 06_coal 1 303 2030 2000.0 1.0 0.0 -fr 07_gas 1 303 2030 1400.0 1.0 0.0 -fr 08_non-res 1 303 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 303 2030 0.0 0.0 0.0 -fr 01_solar 1 304 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 304 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 304 2030 2000.0 1.0 0.0 -fr 04_res 1 304 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 304 2030 2000.0 1.0 0.0 -fr 06_coal 1 304 2030 2000.0 1.0 0.0 -fr 07_gas 1 304 2030 1500.0 1.0 0.0 -fr 08_non-res 1 304 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 304 2030 0.0 0.0 0.0 -fr 01_solar 1 305 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 305 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 305 2030 2000.0 1.0 0.0 -fr 04_res 1 305 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 305 2030 2000.0 1.0 0.0 -fr 06_coal 1 305 2030 2000.0 1.0 0.0 -fr 07_gas 1 305 2030 1600.0 1.0 0.0 -fr 08_non-res 1 305 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 305 2030 0.0 0.0 0.0 -fr 01_solar 1 306 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 306 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 306 2030 2000.0 1.0 0.0 -fr 04_res 1 306 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 306 2030 2000.0 1.0 0.0 -fr 06_coal 1 306 2030 2000.0 1.0 0.0 -fr 07_gas 1 306 2030 1700.0 1.0 0.0 -fr 08_non-res 1 306 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 306 2030 0.0 0.0 0.0 -fr 01_solar 1 307 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 307 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 307 2030 2000.0 1.0 0.0 -fr 04_res 1 307 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 307 2030 2000.0 1.0 0.0 -fr 06_coal 1 307 2030 2000.0 1.0 0.0 -fr 07_gas 1 307 2030 1800.0 1.0 0.0 -fr 08_non-res 1 307 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 307 2030 0.0 0.0 0.0 -fr 01_solar 1 308 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 308 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 308 2030 2000.0 1.0 0.0 -fr 04_res 1 308 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 308 2030 2000.0 1.0 0.0 -fr 06_coal 1 308 2030 2000.0 1.0 0.0 -fr 07_gas 1 308 2030 1900.0 1.0 0.0 -fr 08_non-res 1 308 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 308 2030 0.0 0.0 0.0 -fr 01_solar 1 309 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 309 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 309 2030 2000.0 1.0 0.0 -fr 04_res 1 309 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 309 2030 2000.0 1.0 0.0 -fr 06_coal 1 309 2030 2000.0 1.0 0.0 -fr 07_gas 1 309 2030 2000.0 1.0 0.0 -fr 08_non-res 1 309 2030 0.0 0.0 0.0 -fr 09_hydro_pump 1 309 2030 0.0 0.0 0.0 -fr 01_solar 1 310 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 310 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 310 2030 2000.0 1.0 0.0 -fr 04_res 1 310 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 310 2030 2000.0 1.0 0.0 -fr 06_coal 1 310 2030 2000.0 1.0 0.0 -fr 07_gas 1 310 2030 2000.0 1.0 0.0 -fr 08_non-res 1 310 2030 100.0 1.0 0.0 -fr 09_hydro_pump 1 310 2030 0.0 0.0 0.0 -fr 01_solar 1 311 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 311 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 311 2030 2000.0 1.0 0.0 -fr 04_res 1 311 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 311 2030 2000.0 1.0 0.0 -fr 06_coal 1 311 2030 2000.0 1.0 0.0 -fr 07_gas 1 311 2030 2000.0 1.0 0.0 -fr 08_non-res 1 311 2030 200.0 1.0 0.0 -fr 09_hydro_pump 1 311 2030 0.0 0.0 0.0 -fr 01_solar 1 312 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 312 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 312 2030 2000.0 1.0 0.0 -fr 04_res 1 312 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 312 2030 2000.0 1.0 0.0 -fr 06_coal 1 312 2030 2000.0 1.0 0.0 -fr 07_gas 1 312 2030 2000.0 1.0 0.0 -fr 08_non-res 1 312 2030 300.0 1.0 0.0 -fr 09_hydro_pump 1 312 2030 0.0 0.0 0.0 -fr 01_solar 1 313 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 313 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 313 2030 2000.0 1.0 0.0 -fr 04_res 1 313 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 313 2030 2000.0 1.0 0.0 -fr 06_coal 1 313 2030 2000.0 1.0 0.0 -fr 07_gas 1 313 2030 2000.0 1.0 0.0 -fr 08_non-res 1 313 2030 400.0 1.0 0.0 -fr 09_hydro_pump 1 313 2030 0.0 0.0 0.0 -fr 01_solar 1 314 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 314 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 314 2030 2000.0 1.0 0.0 -fr 04_res 1 314 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 314 2030 2000.0 1.0 0.0 -fr 06_coal 1 314 2030 2000.0 1.0 0.0 -fr 07_gas 1 314 2030 2000.0 1.0 0.0 -fr 08_non-res 1 314 2030 500.0 1.0 0.0 -fr 09_hydro_pump 1 314 2030 0.0 0.0 0.0 -fr 01_solar 1 315 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 315 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 315 2030 2000.0 1.0 0.0 -fr 04_res 1 315 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 315 2030 2000.0 1.0 0.0 -fr 06_coal 1 315 2030 2000.0 1.0 0.0 -fr 07_gas 1 315 2030 2000.0 1.0 0.0 -fr 08_non-res 1 315 2030 600.0 1.0 0.0 -fr 09_hydro_pump 1 315 2030 0.0 0.0 0.0 -fr 01_solar 1 316 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 316 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 316 2030 2000.0 1.0 0.0 -fr 04_res 1 316 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 316 2030 2000.0 1.0 0.0 -fr 06_coal 1 316 2030 2000.0 1.0 0.0 -fr 07_gas 1 316 2030 2000.0 1.0 0.0 -fr 08_non-res 1 316 2030 700.0 1.0 0.0 -fr 09_hydro_pump 1 316 2030 0.0 0.0 0.0 -fr 01_solar 1 317 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 317 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 317 2030 2000.0 1.0 0.0 -fr 04_res 1 317 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 317 2030 2000.0 1.0 0.0 -fr 06_coal 1 317 2030 2000.0 1.0 0.0 -fr 07_gas 1 317 2030 2000.0 1.0 0.0 -fr 08_non-res 1 317 2030 800.0 1.0 0.0 -fr 09_hydro_pump 1 317 2030 0.0 0.0 0.0 -fr 01_solar 1 318 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 318 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 318 2030 2000.0 1.0 0.0 -fr 04_res 1 318 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 318 2030 2000.0 1.0 0.0 -fr 06_coal 1 318 2030 2000.0 1.0 0.0 -fr 07_gas 1 318 2030 2000.0 1.0 0.0 -fr 08_non-res 1 318 2030 900.0 1.0 0.0 -fr 09_hydro_pump 1 318 2030 0.0 0.0 0.0 -fr 01_solar 1 319 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 319 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 319 2030 2000.0 1.0 0.0 -fr 04_res 1 319 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 319 2030 2000.0 1.0 0.0 -fr 06_coal 1 319 2030 2000.0 1.0 0.0 -fr 07_gas 1 319 2030 2000.0 1.0 0.0 -fr 08_non-res 1 319 2030 1000.0 1.0 0.0 -fr 09_hydro_pump 1 319 2030 0.0 0.0 0.0 -fr 01_solar 1 320 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 320 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 320 2030 2000.0 1.0 0.0 -fr 04_res 1 320 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 320 2030 2000.0 1.0 0.0 -fr 06_coal 1 320 2030 2000.0 1.0 0.0 -fr 07_gas 1 320 2030 2000.0 1.0 0.0 -fr 08_non-res 1 320 2030 1100.0 1.0 0.0 -fr 09_hydro_pump 1 320 2030 0.0 0.0 0.0 -fr 01_solar 1 321 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 321 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 321 2030 2000.0 1.0 0.0 -fr 04_res 1 321 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 321 2030 2000.0 1.0 0.0 -fr 06_coal 1 321 2030 2000.0 1.0 0.0 -fr 07_gas 1 321 2030 2000.0 1.0 0.0 -fr 08_non-res 1 321 2030 1200.0 1.0 0.0 -fr 09_hydro_pump 1 321 2030 0.0 0.0 0.0 -fr 01_solar 1 322 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 322 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 322 2030 2000.0 1.0 0.0 -fr 04_res 1 322 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 322 2030 2000.0 1.0 0.0 -fr 06_coal 1 322 2030 2000.0 1.0 0.0 -fr 07_gas 1 322 2030 2000.0 1.0 0.0 -fr 08_non-res 1 322 2030 1300.0 1.0 0.0 -fr 09_hydro_pump 1 322 2030 0.0 0.0 0.0 -fr 01_solar 1 323 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 323 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 323 2030 2000.0 1.0 0.0 -fr 04_res 1 323 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 323 2030 2000.0 1.0 0.0 -fr 06_coal 1 323 2030 2000.0 1.0 0.0 -fr 07_gas 1 323 2030 2000.0 1.0 0.0 -fr 08_non-res 1 323 2030 1400.0 1.0 0.0 -fr 09_hydro_pump 1 323 2030 0.0 0.0 0.0 -fr 01_solar 1 324 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 324 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 324 2030 2000.0 1.0 0.0 -fr 04_res 1 324 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 324 2030 2000.0 1.0 0.0 -fr 06_coal 1 324 2030 2000.0 1.0 0.0 -fr 07_gas 1 324 2030 2000.0 1.0 0.0 -fr 08_non-res 1 324 2030 1500.0 1.0 0.0 -fr 09_hydro_pump 1 324 2030 0.0 0.0 0.0 -fr 01_solar 1 325 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 325 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 325 2030 2000.0 1.0 0.0 -fr 04_res 1 325 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 325 2030 2000.0 1.0 0.0 -fr 06_coal 1 325 2030 2000.0 1.0 0.0 -fr 07_gas 1 325 2030 2000.0 1.0 0.0 -fr 08_non-res 1 325 2030 1600.0 1.0 0.0 -fr 09_hydro_pump 1 325 2030 0.0 0.0 0.0 -fr 01_solar 1 326 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 326 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 326 2030 2000.0 1.0 0.0 -fr 04_res 1 326 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 326 2030 2000.0 1.0 0.0 -fr 06_coal 1 326 2030 2000.0 1.0 0.0 -fr 07_gas 1 326 2030 2000.0 1.0 0.0 -fr 08_non-res 1 326 2030 1700.0 1.0 0.0 -fr 09_hydro_pump 1 326 2030 0.0 0.0 0.0 -fr 01_solar 1 327 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 327 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 327 2030 2000.0 1.0 0.0 -fr 04_res 1 327 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 327 2030 2000.0 1.0 0.0 -fr 06_coal 1 327 2030 2000.0 1.0 0.0 -fr 07_gas 1 327 2030 2000.0 1.0 0.0 -fr 08_non-res 1 327 2030 1800.0 1.0 0.0 -fr 09_hydro_pump 1 327 2030 0.0 0.0 0.0 -fr 01_solar 1 328 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 328 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 328 2030 2000.0 1.0 0.0 -fr 04_res 1 328 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 328 2030 2000.0 1.0 0.0 -fr 06_coal 1 328 2030 2000.0 1.0 0.0 -fr 07_gas 1 328 2030 2000.0 1.0 0.0 -fr 08_non-res 1 328 2030 1900.0 1.0 0.0 -fr 09_hydro_pump 1 328 2030 0.0 0.0 0.0 -fr 01_solar 1 329 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 329 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 329 2030 2000.0 1.0 0.0 -fr 04_res 1 329 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 329 2030 2000.0 1.0 0.0 -fr 06_coal 1 329 2030 2000.0 1.0 0.0 -fr 07_gas 1 329 2030 2000.0 1.0 0.0 -fr 08_non-res 1 329 2030 2000.0 1.0 0.0 -fr 09_hydro_pump 1 329 2030 0.0 0.0 0.0 -fr 01_solar 1 330 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 330 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 330 2030 2000.0 1.0 0.0 -fr 04_res 1 330 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 330 2030 2000.0 1.0 0.0 -fr 06_coal 1 330 2030 2000.0 1.0 0.0 -fr 07_gas 1 330 2030 2000.0 1.0 0.0 -fr 08_non-res 1 330 2030 2000.0 1.0 0.0 -fr 09_hydro_pump 1 330 2030 100.0 1.0 0.0 -fr 01_solar 1 331 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 331 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 331 2030 2000.0 1.0 0.0 -fr 04_res 1 331 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 331 2030 2000.0 1.0 0.0 -fr 06_coal 1 331 2030 2000.0 1.0 0.0 -fr 07_gas 1 331 2030 2000.0 1.0 0.0 -fr 08_non-res 1 331 2030 2000.0 1.0 0.0 -fr 09_hydro_pump 1 331 2030 200.0 1.0 0.0 -fr 01_solar 1 332 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 332 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 332 2030 2000.0 1.0 0.0 -fr 04_res 1 332 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 332 2030 2000.0 1.0 0.0 -fr 06_coal 1 332 2030 2000.0 1.0 0.0 -fr 07_gas 1 332 2030 2000.0 1.0 0.0 -fr 08_non-res 1 332 2030 2000.0 1.0 0.0 -fr 09_hydro_pump 1 332 2030 300.0 1.0 0.0 -fr 01_solar 1 333 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 333 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 333 2030 2000.0 1.0 0.0 -fr 04_res 1 333 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 333 2030 2000.0 1.0 0.0 -fr 06_coal 1 333 2030 2000.0 1.0 0.0 -fr 07_gas 1 333 2030 2000.0 1.0 0.0 -fr 08_non-res 1 333 2030 2000.0 1.0 0.0 -fr 09_hydro_pump 1 333 2030 400.0 1.0 0.0 -fr 01_solar 1 334 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 334 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 334 2030 2000.0 1.0 0.0 -fr 04_res 1 334 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 334 2030 2000.0 1.0 0.0 -fr 06_coal 1 334 2030 2000.0 1.0 0.0 -fr 07_gas 1 334 2030 2000.0 1.0 0.0 -fr 08_non-res 1 334 2030 2000.0 1.0 0.0 -fr 09_hydro_pump 1 334 2030 500.0 1.0 0.0 -fr 01_solar 1 335 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 335 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 335 2030 2000.0 1.0 0.0 -fr 04_res 1 335 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 335 2030 2000.0 1.0 0.0 -fr 06_coal 1 335 2030 2000.0 1.0 0.0 -fr 07_gas 1 335 2030 2000.0 1.0 0.0 -fr 08_non-res 1 335 2030 2000.0 1.0 0.0 -fr 09_hydro_pump 1 335 2030 600.0 1.0 0.0 -fr 01_solar 1 336 2030 2000.0 1.0 0.0 -fr 02_wind_on 1 336 2030 2000.0 1.0 0.0 -fr 03_wind_off 1 336 2030 2000.0 1.0 0.0 -fr 04_res 1 336 2030 2000.0 1.0 0.0 -fr 05_nuclear 1 336 2030 2000.0 1.0 0.0 -fr 06_coal 1 336 2030 2000.0 1.0 0.0 -fr 07_gas 1 336 2030 2000.0 1.0 0.0 -fr 08_non-res 1 336 2030 2000.0 1.0 0.0 -fr 09_hydro_pump 1 336 2030 700.0 1.0 0.0 -it 01_solar 1 1 2030 0.0 0.0 0.0 -it 02_wind_on 1 1 2030 0.0 0.0 0.0 -it 03_wind_off 1 1 2030 0.0 0.0 0.0 -it 04_res 1 1 2030 0.0 0.0 0.0 -it 05_nuclear 1 1 2030 0.0 0.0 0.0 -it 06_coal 1 1 2030 0.0 0.0 0.0 -it 07_gas 1 1 2030 0.0 0.0 0.0 -it 08_non-res 1 1 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 1 2030 0.0 0.0 0.0 -it 01_solar 1 2 2030 100.0 1.0 0.0 -it 02_wind_on 1 2 2030 0.0 0.0 0.0 -it 03_wind_off 1 2 2030 0.0 0.0 0.0 -it 04_res 1 2 2030 0.0 0.0 0.0 -it 05_nuclear 1 2 2030 0.0 0.0 0.0 -it 06_coal 1 2 2030 0.0 0.0 0.0 -it 07_gas 1 2 2030 0.0 0.0 0.0 -it 08_non-res 1 2 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 2 2030 0.0 0.0 0.0 -it 01_solar 1 3 2030 200.0 1.0 0.0 -it 02_wind_on 1 3 2030 0.0 0.0 0.0 -it 03_wind_off 1 3 2030 0.0 0.0 0.0 -it 04_res 1 3 2030 0.0 0.0 0.0 -it 05_nuclear 1 3 2030 0.0 0.0 0.0 -it 06_coal 1 3 2030 0.0 0.0 0.0 -it 07_gas 1 3 2030 0.0 0.0 0.0 -it 08_non-res 1 3 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 3 2030 0.0 0.0 0.0 -it 01_solar 1 4 2030 300.0 1.0 0.0 -it 02_wind_on 1 4 2030 0.0 0.0 0.0 -it 03_wind_off 1 4 2030 0.0 0.0 0.0 -it 04_res 1 4 2030 0.0 0.0 0.0 -it 05_nuclear 1 4 2030 0.0 0.0 0.0 -it 06_coal 1 4 2030 0.0 0.0 0.0 -it 07_gas 1 4 2030 0.0 0.0 0.0 -it 08_non-res 1 4 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 4 2030 0.0 0.0 0.0 -it 01_solar 1 5 2030 400.0 1.0 0.0 -it 02_wind_on 1 5 2030 0.0 0.0 0.0 -it 03_wind_off 1 5 2030 0.0 0.0 0.0 -it 04_res 1 5 2030 0.0 0.0 0.0 -it 05_nuclear 1 5 2030 0.0 0.0 0.0 -it 06_coal 1 5 2030 0.0 0.0 0.0 -it 07_gas 1 5 2030 0.0 0.0 0.0 -it 08_non-res 1 5 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 5 2030 0.0 0.0 0.0 -it 01_solar 1 6 2030 500.0 1.0 0.0 -it 02_wind_on 1 6 2030 0.0 0.0 0.0 -it 03_wind_off 1 6 2030 0.0 0.0 0.0 -it 04_res 1 6 2030 0.0 0.0 0.0 -it 05_nuclear 1 6 2030 0.0 0.0 0.0 -it 06_coal 1 6 2030 0.0 0.0 0.0 -it 07_gas 1 6 2030 0.0 0.0 0.0 -it 08_non-res 1 6 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 6 2030 0.0 0.0 0.0 -it 01_solar 1 7 2030 600.0 1.0 0.0 -it 02_wind_on 1 7 2030 0.0 0.0 0.0 -it 03_wind_off 1 7 2030 0.0 0.0 0.0 -it 04_res 1 7 2030 0.0 0.0 0.0 -it 05_nuclear 1 7 2030 0.0 0.0 0.0 -it 06_coal 1 7 2030 0.0 0.0 0.0 -it 07_gas 1 7 2030 0.0 0.0 0.0 -it 08_non-res 1 7 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 7 2030 0.0 0.0 0.0 -it 01_solar 1 8 2030 700.0 1.0 0.0 -it 02_wind_on 1 8 2030 0.0 0.0 0.0 -it 03_wind_off 1 8 2030 0.0 0.0 0.0 -it 04_res 1 8 2030 0.0 0.0 0.0 -it 05_nuclear 1 8 2030 0.0 0.0 0.0 -it 06_coal 1 8 2030 0.0 0.0 0.0 -it 07_gas 1 8 2030 0.0 0.0 0.0 -it 08_non-res 1 8 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 8 2030 0.0 0.0 0.0 -it 01_solar 1 9 2030 800.0 1.0 0.0 -it 02_wind_on 1 9 2030 0.0 0.0 0.0 -it 03_wind_off 1 9 2030 0.0 0.0 0.0 -it 04_res 1 9 2030 0.0 0.0 0.0 -it 05_nuclear 1 9 2030 0.0 0.0 0.0 -it 06_coal 1 9 2030 0.0 0.0 0.0 -it 07_gas 1 9 2030 0.0 0.0 0.0 -it 08_non-res 1 9 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 9 2030 0.0 0.0 0.0 -it 01_solar 1 10 2030 900.0 1.0 0.0 -it 02_wind_on 1 10 2030 0.0 0.0 0.0 -it 03_wind_off 1 10 2030 0.0 0.0 0.0 -it 04_res 1 10 2030 0.0 0.0 0.0 -it 05_nuclear 1 10 2030 0.0 0.0 0.0 -it 06_coal 1 10 2030 0.0 0.0 0.0 -it 07_gas 1 10 2030 0.0 0.0 0.0 -it 08_non-res 1 10 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 10 2030 0.0 0.0 0.0 -it 01_solar 1 11 2030 1000.0 1.0 0.0 -it 02_wind_on 1 11 2030 0.0 0.0 0.0 -it 03_wind_off 1 11 2030 0.0 0.0 0.0 -it 04_res 1 11 2030 0.0 0.0 0.0 -it 05_nuclear 1 11 2030 0.0 0.0 0.0 -it 06_coal 1 11 2030 0.0 0.0 0.0 -it 07_gas 1 11 2030 0.0 0.0 0.0 -it 08_non-res 1 11 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 11 2030 0.0 0.0 0.0 -it 01_solar 1 12 2030 1100.0 1.0 0.0 -it 02_wind_on 1 12 2030 0.0 0.0 0.0 -it 03_wind_off 1 12 2030 0.0 0.0 0.0 -it 04_res 1 12 2030 0.0 0.0 0.0 -it 05_nuclear 1 12 2030 0.0 0.0 0.0 -it 06_coal 1 12 2030 0.0 0.0 0.0 -it 07_gas 1 12 2030 0.0 0.0 0.0 -it 08_non-res 1 12 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 12 2030 0.0 0.0 0.0 -it 01_solar 1 13 2030 1200.0 1.0 0.0 -it 02_wind_on 1 13 2030 0.0 0.0 0.0 -it 03_wind_off 1 13 2030 0.0 0.0 0.0 -it 04_res 1 13 2030 0.0 0.0 0.0 -it 05_nuclear 1 13 2030 0.0 0.0 0.0 -it 06_coal 1 13 2030 0.0 0.0 0.0 -it 07_gas 1 13 2030 0.0 0.0 0.0 -it 08_non-res 1 13 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 13 2030 0.0 0.0 0.0 -it 01_solar 1 14 2030 1300.0 1.0 0.0 -it 02_wind_on 1 14 2030 0.0 0.0 0.0 -it 03_wind_off 1 14 2030 0.0 0.0 0.0 -it 04_res 1 14 2030 0.0 0.0 0.0 -it 05_nuclear 1 14 2030 0.0 0.0 0.0 -it 06_coal 1 14 2030 0.0 0.0 0.0 -it 07_gas 1 14 2030 0.0 0.0 0.0 -it 08_non-res 1 14 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 14 2030 0.0 0.0 0.0 -it 01_solar 1 15 2030 1400.0 1.0 0.0 -it 02_wind_on 1 15 2030 0.0 0.0 0.0 -it 03_wind_off 1 15 2030 0.0 0.0 0.0 -it 04_res 1 15 2030 0.0 0.0 0.0 -it 05_nuclear 1 15 2030 0.0 0.0 0.0 -it 06_coal 1 15 2030 0.0 0.0 0.0 -it 07_gas 1 15 2030 0.0 0.0 0.0 -it 08_non-res 1 15 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 15 2030 0.0 0.0 0.0 -it 01_solar 1 16 2030 1500.0 1.0 0.0 -it 02_wind_on 1 16 2030 0.0 0.0 0.0 -it 03_wind_off 1 16 2030 0.0 0.0 0.0 -it 04_res 1 16 2030 0.0 0.0 0.0 -it 05_nuclear 1 16 2030 0.0 0.0 0.0 -it 06_coal 1 16 2030 0.0 0.0 0.0 -it 07_gas 1 16 2030 0.0 0.0 0.0 -it 08_non-res 1 16 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 16 2030 0.0 0.0 0.0 -it 01_solar 1 17 2030 1600.0 1.0 0.0 -it 02_wind_on 1 17 2030 0.0 0.0 0.0 -it 03_wind_off 1 17 2030 0.0 0.0 0.0 -it 04_res 1 17 2030 0.0 0.0 0.0 -it 05_nuclear 1 17 2030 0.0 0.0 0.0 -it 06_coal 1 17 2030 0.0 0.0 0.0 -it 07_gas 1 17 2030 0.0 0.0 0.0 -it 08_non-res 1 17 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 17 2030 0.0 0.0 0.0 -it 01_solar 1 18 2030 1700.0 1.0 0.0 -it 02_wind_on 1 18 2030 0.0 0.0 0.0 -it 03_wind_off 1 18 2030 0.0 0.0 0.0 -it 04_res 1 18 2030 0.0 0.0 0.0 -it 05_nuclear 1 18 2030 0.0 0.0 0.0 -it 06_coal 1 18 2030 0.0 0.0 0.0 -it 07_gas 1 18 2030 0.0 0.0 0.0 -it 08_non-res 1 18 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 18 2030 0.0 0.0 0.0 -it 01_solar 1 19 2030 1800.0 1.0 0.0 -it 02_wind_on 1 19 2030 0.0 0.0 0.0 -it 03_wind_off 1 19 2030 0.0 0.0 0.0 -it 04_res 1 19 2030 0.0 0.0 0.0 -it 05_nuclear 1 19 2030 0.0 0.0 0.0 -it 06_coal 1 19 2030 0.0 0.0 0.0 -it 07_gas 1 19 2030 0.0 0.0 0.0 -it 08_non-res 1 19 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 19 2030 0.0 0.0 0.0 -it 01_solar 1 20 2030 1900.0 1.0 0.0 -it 02_wind_on 1 20 2030 0.0 0.0 0.0 -it 03_wind_off 1 20 2030 0.0 0.0 0.0 -it 04_res 1 20 2030 0.0 0.0 0.0 -it 05_nuclear 1 20 2030 0.0 0.0 0.0 -it 06_coal 1 20 2030 0.0 0.0 0.0 -it 07_gas 1 20 2030 0.0 0.0 0.0 -it 08_non-res 1 20 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 20 2030 0.0 0.0 0.0 -it 01_solar 1 21 2030 2000.0 1.0 0.0 -it 02_wind_on 1 21 2030 0.0 0.0 0.0 -it 03_wind_off 1 21 2030 0.0 0.0 0.0 -it 04_res 1 21 2030 0.0 0.0 0.0 -it 05_nuclear 1 21 2030 0.0 0.0 0.0 -it 06_coal 1 21 2030 0.0 0.0 0.0 -it 07_gas 1 21 2030 0.0 0.0 0.0 -it 08_non-res 1 21 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 21 2030 0.0 0.0 0.0 -it 01_solar 1 22 2030 2000.0 1.0 0.0 -it 02_wind_on 1 22 2030 100.0 1.0 0.0 -it 03_wind_off 1 22 2030 0.0 0.0 0.0 -it 04_res 1 22 2030 0.0 0.0 0.0 -it 05_nuclear 1 22 2030 0.0 0.0 0.0 -it 06_coal 1 22 2030 0.0 0.0 0.0 -it 07_gas 1 22 2030 0.0 0.0 0.0 -it 08_non-res 1 22 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 22 2030 0.0 0.0 0.0 -it 01_solar 1 23 2030 2000.0 1.0 0.0 -it 02_wind_on 1 23 2030 200.0 1.0 0.0 -it 03_wind_off 1 23 2030 0.0 0.0 0.0 -it 04_res 1 23 2030 0.0 0.0 0.0 -it 05_nuclear 1 23 2030 0.0 0.0 0.0 -it 06_coal 1 23 2030 0.0 0.0 0.0 -it 07_gas 1 23 2030 0.0 0.0 0.0 -it 08_non-res 1 23 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 23 2030 0.0 0.0 0.0 -it 01_solar 1 24 2030 2000.0 1.0 0.0 -it 02_wind_on 1 24 2030 300.0 1.0 0.0 -it 03_wind_off 1 24 2030 0.0 0.0 0.0 -it 04_res 1 24 2030 0.0 0.0 0.0 -it 05_nuclear 1 24 2030 0.0 0.0 0.0 -it 06_coal 1 24 2030 0.0 0.0 0.0 -it 07_gas 1 24 2030 0.0 0.0 0.0 -it 08_non-res 1 24 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 24 2030 0.0 0.0 0.0 -it 01_solar 1 25 2030 2000.0 1.0 0.0 -it 02_wind_on 1 25 2030 400.0 1.0 0.0 -it 03_wind_off 1 25 2030 0.0 0.0 0.0 -it 04_res 1 25 2030 0.0 0.0 0.0 -it 05_nuclear 1 25 2030 0.0 0.0 0.0 -it 06_coal 1 25 2030 0.0 0.0 0.0 -it 07_gas 1 25 2030 0.0 0.0 0.0 -it 08_non-res 1 25 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 25 2030 0.0 0.0 0.0 -it 01_solar 1 26 2030 2000.0 1.0 0.0 -it 02_wind_on 1 26 2030 500.0 1.0 0.0 -it 03_wind_off 1 26 2030 0.0 0.0 0.0 -it 04_res 1 26 2030 0.0 0.0 0.0 -it 05_nuclear 1 26 2030 0.0 0.0 0.0 -it 06_coal 1 26 2030 0.0 0.0 0.0 -it 07_gas 1 26 2030 0.0 0.0 0.0 -it 08_non-res 1 26 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 26 2030 0.0 0.0 0.0 -it 01_solar 1 27 2030 2000.0 1.0 0.0 -it 02_wind_on 1 27 2030 600.0 1.0 0.0 -it 03_wind_off 1 27 2030 0.0 0.0 0.0 -it 04_res 1 27 2030 0.0 0.0 0.0 -it 05_nuclear 1 27 2030 0.0 0.0 0.0 -it 06_coal 1 27 2030 0.0 0.0 0.0 -it 07_gas 1 27 2030 0.0 0.0 0.0 -it 08_non-res 1 27 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 27 2030 0.0 0.0 0.0 -it 01_solar 1 28 2030 2000.0 1.0 0.0 -it 02_wind_on 1 28 2030 700.0 1.0 0.0 -it 03_wind_off 1 28 2030 0.0 0.0 0.0 -it 04_res 1 28 2030 0.0 0.0 0.0 -it 05_nuclear 1 28 2030 0.0 0.0 0.0 -it 06_coal 1 28 2030 0.0 0.0 0.0 -it 07_gas 1 28 2030 0.0 0.0 0.0 -it 08_non-res 1 28 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 28 2030 0.0 0.0 0.0 -it 01_solar 1 29 2030 2000.0 1.0 0.0 -it 02_wind_on 1 29 2030 800.0 1.0 0.0 -it 03_wind_off 1 29 2030 0.0 0.0 0.0 -it 04_res 1 29 2030 0.0 0.0 0.0 -it 05_nuclear 1 29 2030 0.0 0.0 0.0 -it 06_coal 1 29 2030 0.0 0.0 0.0 -it 07_gas 1 29 2030 0.0 0.0 0.0 -it 08_non-res 1 29 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 29 2030 0.0 0.0 0.0 -it 01_solar 1 30 2030 2000.0 1.0 0.0 -it 02_wind_on 1 30 2030 900.0 1.0 0.0 -it 03_wind_off 1 30 2030 0.0 0.0 0.0 -it 04_res 1 30 2030 0.0 0.0 0.0 -it 05_nuclear 1 30 2030 0.0 0.0 0.0 -it 06_coal 1 30 2030 0.0 0.0 0.0 -it 07_gas 1 30 2030 0.0 0.0 0.0 -it 08_non-res 1 30 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 30 2030 0.0 0.0 0.0 -it 01_solar 1 31 2030 2000.0 1.0 0.0 -it 02_wind_on 1 31 2030 1000.0 1.0 0.0 -it 03_wind_off 1 31 2030 0.0 0.0 0.0 -it 04_res 1 31 2030 0.0 0.0 0.0 -it 05_nuclear 1 31 2030 0.0 0.0 0.0 -it 06_coal 1 31 2030 0.0 0.0 0.0 -it 07_gas 1 31 2030 0.0 0.0 0.0 -it 08_non-res 1 31 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 31 2030 0.0 0.0 0.0 -it 01_solar 1 32 2030 2000.0 1.0 0.0 -it 02_wind_on 1 32 2030 1100.0 1.0 0.0 -it 03_wind_off 1 32 2030 0.0 0.0 0.0 -it 04_res 1 32 2030 0.0 0.0 0.0 -it 05_nuclear 1 32 2030 0.0 0.0 0.0 -it 06_coal 1 32 2030 0.0 0.0 0.0 -it 07_gas 1 32 2030 0.0 0.0 0.0 -it 08_non-res 1 32 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 32 2030 0.0 0.0 0.0 -it 01_solar 1 33 2030 2000.0 1.0 0.0 -it 02_wind_on 1 33 2030 1200.0 1.0 0.0 -it 03_wind_off 1 33 2030 0.0 0.0 0.0 -it 04_res 1 33 2030 0.0 0.0 0.0 -it 05_nuclear 1 33 2030 0.0 0.0 0.0 -it 06_coal 1 33 2030 0.0 0.0 0.0 -it 07_gas 1 33 2030 0.0 0.0 0.0 -it 08_non-res 1 33 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 33 2030 0.0 0.0 0.0 -it 01_solar 1 34 2030 2000.0 1.0 0.0 -it 02_wind_on 1 34 2030 1300.0 1.0 0.0 -it 03_wind_off 1 34 2030 0.0 0.0 0.0 -it 04_res 1 34 2030 0.0 0.0 0.0 -it 05_nuclear 1 34 2030 0.0 0.0 0.0 -it 06_coal 1 34 2030 0.0 0.0 0.0 -it 07_gas 1 34 2030 0.0 0.0 0.0 -it 08_non-res 1 34 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 34 2030 0.0 0.0 0.0 -it 01_solar 1 35 2030 2000.0 1.0 0.0 -it 02_wind_on 1 35 2030 1400.0 1.0 0.0 -it 03_wind_off 1 35 2030 0.0 0.0 0.0 -it 04_res 1 35 2030 0.0 0.0 0.0 -it 05_nuclear 1 35 2030 0.0 0.0 0.0 -it 06_coal 1 35 2030 0.0 0.0 0.0 -it 07_gas 1 35 2030 0.0 0.0 0.0 -it 08_non-res 1 35 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 35 2030 0.0 0.0 0.0 -it 01_solar 1 36 2030 2000.0 1.0 0.0 -it 02_wind_on 1 36 2030 1500.0 1.0 0.0 -it 03_wind_off 1 36 2030 0.0 0.0 0.0 -it 04_res 1 36 2030 0.0 0.0 0.0 -it 05_nuclear 1 36 2030 0.0 0.0 0.0 -it 06_coal 1 36 2030 0.0 0.0 0.0 -it 07_gas 1 36 2030 0.0 0.0 0.0 -it 08_non-res 1 36 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 36 2030 0.0 0.0 0.0 -it 01_solar 1 37 2030 2000.0 1.0 0.0 -it 02_wind_on 1 37 2030 1600.0 1.0 0.0 -it 03_wind_off 1 37 2030 0.0 0.0 0.0 -it 04_res 1 37 2030 0.0 0.0 0.0 -it 05_nuclear 1 37 2030 0.0 0.0 0.0 -it 06_coal 1 37 2030 0.0 0.0 0.0 -it 07_gas 1 37 2030 0.0 0.0 0.0 -it 08_non-res 1 37 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 37 2030 0.0 0.0 0.0 -it 01_solar 1 38 2030 2000.0 1.0 0.0 -it 02_wind_on 1 38 2030 1700.0 1.0 0.0 -it 03_wind_off 1 38 2030 0.0 0.0 0.0 -it 04_res 1 38 2030 0.0 0.0 0.0 -it 05_nuclear 1 38 2030 0.0 0.0 0.0 -it 06_coal 1 38 2030 0.0 0.0 0.0 -it 07_gas 1 38 2030 0.0 0.0 0.0 -it 08_non-res 1 38 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 38 2030 0.0 0.0 0.0 -it 01_solar 1 39 2030 2000.0 1.0 0.0 -it 02_wind_on 1 39 2030 1800.0 1.0 0.0 -it 03_wind_off 1 39 2030 0.0 0.0 0.0 -it 04_res 1 39 2030 0.0 0.0 0.0 -it 05_nuclear 1 39 2030 0.0 0.0 0.0 -it 06_coal 1 39 2030 0.0 0.0 0.0 -it 07_gas 1 39 2030 0.0 0.0 0.0 -it 08_non-res 1 39 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 39 2030 0.0 0.0 0.0 -it 01_solar 1 40 2030 2000.0 1.0 0.0 -it 02_wind_on 1 40 2030 1900.0 1.0 0.0 -it 03_wind_off 1 40 2030 0.0 0.0 0.0 -it 04_res 1 40 2030 0.0 0.0 0.0 -it 05_nuclear 1 40 2030 0.0 0.0 0.0 -it 06_coal 1 40 2030 0.0 0.0 0.0 -it 07_gas 1 40 2030 0.0 0.0 0.0 -it 08_non-res 1 40 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 40 2030 0.0 0.0 0.0 -it 01_solar 1 41 2030 2000.0 1.0 0.0 -it 02_wind_on 1 41 2030 2000.0 1.0 0.0 -it 03_wind_off 1 41 2030 0.0 0.0 0.0 -it 04_res 1 41 2030 0.0 0.0 0.0 -it 05_nuclear 1 41 2030 0.0 0.0 0.0 -it 06_coal 1 41 2030 0.0 0.0 0.0 -it 07_gas 1 41 2030 0.0 0.0 0.0 -it 08_non-res 1 41 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 41 2030 0.0 0.0 0.0 -it 01_solar 1 42 2030 2000.0 1.0 0.0 -it 02_wind_on 1 42 2030 2000.0 1.0 0.0 -it 03_wind_off 1 42 2030 100.0 1.0 0.0 -it 04_res 1 42 2030 0.0 0.0 0.0 -it 05_nuclear 1 42 2030 0.0 0.0 0.0 -it 06_coal 1 42 2030 0.0 0.0 0.0 -it 07_gas 1 42 2030 0.0 0.0 0.0 -it 08_non-res 1 42 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 42 2030 0.0 0.0 0.0 -it 01_solar 1 43 2030 2000.0 1.0 0.0 -it 02_wind_on 1 43 2030 2000.0 1.0 0.0 -it 03_wind_off 1 43 2030 200.0 1.0 0.0 -it 04_res 1 43 2030 0.0 0.0 0.0 -it 05_nuclear 1 43 2030 0.0 0.0 0.0 -it 06_coal 1 43 2030 0.0 0.0 0.0 -it 07_gas 1 43 2030 0.0 0.0 0.0 -it 08_non-res 1 43 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 43 2030 0.0 0.0 0.0 -it 01_solar 1 44 2030 2000.0 1.0 0.0 -it 02_wind_on 1 44 2030 2000.0 1.0 0.0 -it 03_wind_off 1 44 2030 300.0 1.0 0.0 -it 04_res 1 44 2030 0.0 0.0 0.0 -it 05_nuclear 1 44 2030 0.0 0.0 0.0 -it 06_coal 1 44 2030 0.0 0.0 0.0 -it 07_gas 1 44 2030 0.0 0.0 0.0 -it 08_non-res 1 44 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 44 2030 0.0 0.0 0.0 -it 01_solar 1 45 2030 2000.0 1.0 0.0 -it 02_wind_on 1 45 2030 2000.0 1.0 0.0 -it 03_wind_off 1 45 2030 400.0 1.0 0.0 -it 04_res 1 45 2030 0.0 0.0 0.0 -it 05_nuclear 1 45 2030 0.0 0.0 0.0 -it 06_coal 1 45 2030 0.0 0.0 0.0 -it 07_gas 1 45 2030 0.0 0.0 0.0 -it 08_non-res 1 45 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 45 2030 0.0 0.0 0.0 -it 01_solar 1 46 2030 2000.0 1.0 0.0 -it 02_wind_on 1 46 2030 2000.0 1.0 0.0 -it 03_wind_off 1 46 2030 500.0 1.0 0.0 -it 04_res 1 46 2030 0.0 0.0 0.0 -it 05_nuclear 1 46 2030 0.0 0.0 0.0 -it 06_coal 1 46 2030 0.0 0.0 0.0 -it 07_gas 1 46 2030 0.0 0.0 0.0 -it 08_non-res 1 46 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 46 2030 0.0 0.0 0.0 -it 01_solar 1 47 2030 2000.0 1.0 0.0 -it 02_wind_on 1 47 2030 2000.0 1.0 0.0 -it 03_wind_off 1 47 2030 600.0 1.0 0.0 -it 04_res 1 47 2030 0.0 0.0 0.0 -it 05_nuclear 1 47 2030 0.0 0.0 0.0 -it 06_coal 1 47 2030 0.0 0.0 0.0 -it 07_gas 1 47 2030 0.0 0.0 0.0 -it 08_non-res 1 47 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 47 2030 0.0 0.0 0.0 -it 01_solar 1 48 2030 2000.0 1.0 0.0 -it 02_wind_on 1 48 2030 2000.0 1.0 0.0 -it 03_wind_off 1 48 2030 700.0 1.0 0.0 -it 04_res 1 48 2030 0.0 0.0 0.0 -it 05_nuclear 1 48 2030 0.0 0.0 0.0 -it 06_coal 1 48 2030 0.0 0.0 0.0 -it 07_gas 1 48 2030 0.0 0.0 0.0 -it 08_non-res 1 48 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 48 2030 0.0 0.0 0.0 -it 01_solar 1 49 2030 2000.0 1.0 0.0 -it 02_wind_on 1 49 2030 2000.0 1.0 0.0 -it 03_wind_off 1 49 2030 800.0 1.0 0.0 -it 04_res 1 49 2030 0.0 0.0 0.0 -it 05_nuclear 1 49 2030 0.0 0.0 0.0 -it 06_coal 1 49 2030 0.0 0.0 0.0 -it 07_gas 1 49 2030 0.0 0.0 0.0 -it 08_non-res 1 49 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 49 2030 0.0 0.0 0.0 -it 01_solar 1 50 2030 2000.0 1.0 0.0 -it 02_wind_on 1 50 2030 2000.0 1.0 0.0 -it 03_wind_off 1 50 2030 900.0 1.0 0.0 -it 04_res 1 50 2030 0.0 0.0 0.0 -it 05_nuclear 1 50 2030 0.0 0.0 0.0 -it 06_coal 1 50 2030 0.0 0.0 0.0 -it 07_gas 1 50 2030 0.0 0.0 0.0 -it 08_non-res 1 50 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 50 2030 0.0 0.0 0.0 -it 01_solar 1 51 2030 2000.0 1.0 0.0 -it 02_wind_on 1 51 2030 2000.0 1.0 0.0 -it 03_wind_off 1 51 2030 1000.0 1.0 0.0 -it 04_res 1 51 2030 0.0 0.0 0.0 -it 05_nuclear 1 51 2030 0.0 0.0 0.0 -it 06_coal 1 51 2030 0.0 0.0 0.0 -it 07_gas 1 51 2030 0.0 0.0 0.0 -it 08_non-res 1 51 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 51 2030 0.0 0.0 0.0 -it 01_solar 1 52 2030 2000.0 1.0 0.0 -it 02_wind_on 1 52 2030 2000.0 1.0 0.0 -it 03_wind_off 1 52 2030 1100.0 1.0 0.0 -it 04_res 1 52 2030 0.0 0.0 0.0 -it 05_nuclear 1 52 2030 0.0 0.0 0.0 -it 06_coal 1 52 2030 0.0 0.0 0.0 -it 07_gas 1 52 2030 0.0 0.0 0.0 -it 08_non-res 1 52 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 52 2030 0.0 0.0 0.0 -it 01_solar 1 53 2030 2000.0 1.0 0.0 -it 02_wind_on 1 53 2030 2000.0 1.0 0.0 -it 03_wind_off 1 53 2030 1200.0 1.0 0.0 -it 04_res 1 53 2030 0.0 0.0 0.0 -it 05_nuclear 1 53 2030 0.0 0.0 0.0 -it 06_coal 1 53 2030 0.0 0.0 0.0 -it 07_gas 1 53 2030 0.0 0.0 0.0 -it 08_non-res 1 53 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 53 2030 0.0 0.0 0.0 -it 01_solar 1 54 2030 2000.0 1.0 0.0 -it 02_wind_on 1 54 2030 2000.0 1.0 0.0 -it 03_wind_off 1 54 2030 1300.0 1.0 0.0 -it 04_res 1 54 2030 0.0 0.0 0.0 -it 05_nuclear 1 54 2030 0.0 0.0 0.0 -it 06_coal 1 54 2030 0.0 0.0 0.0 -it 07_gas 1 54 2030 0.0 0.0 0.0 -it 08_non-res 1 54 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 54 2030 0.0 0.0 0.0 -it 01_solar 1 55 2030 2000.0 1.0 0.0 -it 02_wind_on 1 55 2030 2000.0 1.0 0.0 -it 03_wind_off 1 55 2030 1400.0 1.0 0.0 -it 04_res 1 55 2030 0.0 0.0 0.0 -it 05_nuclear 1 55 2030 0.0 0.0 0.0 -it 06_coal 1 55 2030 0.0 0.0 0.0 -it 07_gas 1 55 2030 0.0 0.0 0.0 -it 08_non-res 1 55 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 55 2030 0.0 0.0 0.0 -it 01_solar 1 56 2030 2000.0 1.0 0.0 -it 02_wind_on 1 56 2030 2000.0 1.0 0.0 -it 03_wind_off 1 56 2030 1500.0 1.0 0.0 -it 04_res 1 56 2030 0.0 0.0 0.0 -it 05_nuclear 1 56 2030 0.0 0.0 0.0 -it 06_coal 1 56 2030 0.0 0.0 0.0 -it 07_gas 1 56 2030 0.0 0.0 0.0 -it 08_non-res 1 56 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 56 2030 0.0 0.0 0.0 -it 01_solar 1 57 2030 2000.0 1.0 0.0 -it 02_wind_on 1 57 2030 2000.0 1.0 0.0 -it 03_wind_off 1 57 2030 1600.0 1.0 0.0 -it 04_res 1 57 2030 0.0 0.0 0.0 -it 05_nuclear 1 57 2030 0.0 0.0 0.0 -it 06_coal 1 57 2030 0.0 0.0 0.0 -it 07_gas 1 57 2030 0.0 0.0 0.0 -it 08_non-res 1 57 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 57 2030 0.0 0.0 0.0 -it 01_solar 1 58 2030 2000.0 1.0 0.0 -it 02_wind_on 1 58 2030 2000.0 1.0 0.0 -it 03_wind_off 1 58 2030 1700.0 1.0 0.0 -it 04_res 1 58 2030 0.0 0.0 0.0 -it 05_nuclear 1 58 2030 0.0 0.0 0.0 -it 06_coal 1 58 2030 0.0 0.0 0.0 -it 07_gas 1 58 2030 0.0 0.0 0.0 -it 08_non-res 1 58 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 58 2030 0.0 0.0 0.0 -it 01_solar 1 59 2030 2000.0 1.0 0.0 -it 02_wind_on 1 59 2030 2000.0 1.0 0.0 -it 03_wind_off 1 59 2030 1800.0 1.0 0.0 -it 04_res 1 59 2030 0.0 0.0 0.0 -it 05_nuclear 1 59 2030 0.0 0.0 0.0 -it 06_coal 1 59 2030 0.0 0.0 0.0 -it 07_gas 1 59 2030 0.0 0.0 0.0 -it 08_non-res 1 59 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 59 2030 0.0 0.0 0.0 -it 01_solar 1 60 2030 2000.0 1.0 0.0 -it 02_wind_on 1 60 2030 2000.0 1.0 0.0 -it 03_wind_off 1 60 2030 1900.0 1.0 0.0 -it 04_res 1 60 2030 0.0 0.0 0.0 -it 05_nuclear 1 60 2030 0.0 0.0 0.0 -it 06_coal 1 60 2030 0.0 0.0 0.0 -it 07_gas 1 60 2030 0.0 0.0 0.0 -it 08_non-res 1 60 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 60 2030 0.0 0.0 0.0 -it 01_solar 1 61 2030 2000.0 1.0 0.0 -it 02_wind_on 1 61 2030 2000.0 1.0 0.0 -it 03_wind_off 1 61 2030 2000.0 1.0 0.0 -it 04_res 1 61 2030 0.0 0.0 0.0 -it 05_nuclear 1 61 2030 0.0 0.0 0.0 -it 06_coal 1 61 2030 0.0 0.0 0.0 -it 07_gas 1 61 2030 0.0 0.0 0.0 -it 08_non-res 1 61 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 61 2030 0.0 0.0 0.0 -it 01_solar 1 62 2030 2000.0 1.0 0.0 -it 02_wind_on 1 62 2030 2000.0 1.0 0.0 -it 03_wind_off 1 62 2030 2000.0 1.0 0.0 -it 04_res 1 62 2030 100.0 1.0 0.0 -it 05_nuclear 1 62 2030 0.0 0.0 0.0 -it 06_coal 1 62 2030 0.0 0.0 0.0 -it 07_gas 1 62 2030 0.0 0.0 0.0 -it 08_non-res 1 62 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 62 2030 0.0 0.0 0.0 -it 01_solar 1 63 2030 2000.0 1.0 0.0 -it 02_wind_on 1 63 2030 2000.0 1.0 0.0 -it 03_wind_off 1 63 2030 2000.0 1.0 0.0 -it 04_res 1 63 2030 200.0 1.0 0.0 -it 05_nuclear 1 63 2030 0.0 0.0 0.0 -it 06_coal 1 63 2030 0.0 0.0 0.0 -it 07_gas 1 63 2030 0.0 0.0 0.0 -it 08_non-res 1 63 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 63 2030 0.0 0.0 0.0 -it 01_solar 1 64 2030 2000.0 1.0 0.0 -it 02_wind_on 1 64 2030 2000.0 1.0 0.0 -it 03_wind_off 1 64 2030 2000.0 1.0 0.0 -it 04_res 1 64 2030 300.0 1.0 0.0 -it 05_nuclear 1 64 2030 0.0 0.0 0.0 -it 06_coal 1 64 2030 0.0 0.0 0.0 -it 07_gas 1 64 2030 0.0 0.0 0.0 -it 08_non-res 1 64 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 64 2030 0.0 0.0 0.0 -it 01_solar 1 65 2030 2000.0 1.0 0.0 -it 02_wind_on 1 65 2030 2000.0 1.0 0.0 -it 03_wind_off 1 65 2030 2000.0 1.0 0.0 -it 04_res 1 65 2030 400.0 1.0 0.0 -it 05_nuclear 1 65 2030 0.0 0.0 0.0 -it 06_coal 1 65 2030 0.0 0.0 0.0 -it 07_gas 1 65 2030 0.0 0.0 0.0 -it 08_non-res 1 65 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 65 2030 0.0 0.0 0.0 -it 01_solar 1 66 2030 2000.0 1.0 0.0 -it 02_wind_on 1 66 2030 2000.0 1.0 0.0 -it 03_wind_off 1 66 2030 2000.0 1.0 0.0 -it 04_res 1 66 2030 500.0 1.0 0.0 -it 05_nuclear 1 66 2030 0.0 0.0 0.0 -it 06_coal 1 66 2030 0.0 0.0 0.0 -it 07_gas 1 66 2030 0.0 0.0 0.0 -it 08_non-res 1 66 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 66 2030 0.0 0.0 0.0 -it 01_solar 1 67 2030 2000.0 1.0 0.0 -it 02_wind_on 1 67 2030 2000.0 1.0 0.0 -it 03_wind_off 1 67 2030 2000.0 1.0 0.0 -it 04_res 1 67 2030 600.0 1.0 0.0 -it 05_nuclear 1 67 2030 0.0 0.0 0.0 -it 06_coal 1 67 2030 0.0 0.0 0.0 -it 07_gas 1 67 2030 0.0 0.0 0.0 -it 08_non-res 1 67 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 67 2030 0.0 0.0 0.0 -it 01_solar 1 68 2030 2000.0 1.0 0.0 -it 02_wind_on 1 68 2030 2000.0 1.0 0.0 -it 03_wind_off 1 68 2030 2000.0 1.0 0.0 -it 04_res 1 68 2030 700.0 1.0 0.0 -it 05_nuclear 1 68 2030 0.0 0.0 0.0 -it 06_coal 1 68 2030 0.0 0.0 0.0 -it 07_gas 1 68 2030 0.0 0.0 0.0 -it 08_non-res 1 68 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 68 2030 0.0 0.0 0.0 -it 01_solar 1 69 2030 2000.0 1.0 0.0 -it 02_wind_on 1 69 2030 2000.0 1.0 0.0 -it 03_wind_off 1 69 2030 2000.0 1.0 0.0 -it 04_res 1 69 2030 800.0 1.0 0.0 -it 05_nuclear 1 69 2030 0.0 0.0 0.0 -it 06_coal 1 69 2030 0.0 0.0 0.0 -it 07_gas 1 69 2030 0.0 0.0 0.0 -it 08_non-res 1 69 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 69 2030 0.0 0.0 0.0 -it 01_solar 1 70 2030 2000.0 1.0 0.0 -it 02_wind_on 1 70 2030 2000.0 1.0 0.0 -it 03_wind_off 1 70 2030 2000.0 1.0 0.0 -it 04_res 1 70 2030 900.0 1.0 0.0 -it 05_nuclear 1 70 2030 0.0 0.0 0.0 -it 06_coal 1 70 2030 0.0 0.0 0.0 -it 07_gas 1 70 2030 0.0 0.0 0.0 -it 08_non-res 1 70 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 70 2030 0.0 0.0 0.0 -it 01_solar 1 71 2030 2000.0 1.0 0.0 -it 02_wind_on 1 71 2030 2000.0 1.0 0.0 -it 03_wind_off 1 71 2030 2000.0 1.0 0.0 -it 04_res 1 71 2030 1000.0 1.0 0.0 -it 05_nuclear 1 71 2030 0.0 0.0 0.0 -it 06_coal 1 71 2030 0.0 0.0 0.0 -it 07_gas 1 71 2030 0.0 0.0 0.0 -it 08_non-res 1 71 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 71 2030 0.0 0.0 0.0 -it 01_solar 1 72 2030 2000.0 1.0 0.0 -it 02_wind_on 1 72 2030 2000.0 1.0 0.0 -it 03_wind_off 1 72 2030 2000.0 1.0 0.0 -it 04_res 1 72 2030 1100.0 1.0 0.0 -it 05_nuclear 1 72 2030 0.0 0.0 0.0 -it 06_coal 1 72 2030 0.0 0.0 0.0 -it 07_gas 1 72 2030 0.0 0.0 0.0 -it 08_non-res 1 72 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 72 2030 0.0 0.0 0.0 -it 01_solar 1 73 2030 2000.0 1.0 0.0 -it 02_wind_on 1 73 2030 2000.0 1.0 0.0 -it 03_wind_off 1 73 2030 2000.0 1.0 0.0 -it 04_res 1 73 2030 1200.0 1.0 0.0 -it 05_nuclear 1 73 2030 0.0 0.0 0.0 -it 06_coal 1 73 2030 0.0 0.0 0.0 -it 07_gas 1 73 2030 0.0 0.0 0.0 -it 08_non-res 1 73 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 73 2030 0.0 0.0 0.0 -it 01_solar 1 74 2030 2000.0 1.0 0.0 -it 02_wind_on 1 74 2030 2000.0 1.0 0.0 -it 03_wind_off 1 74 2030 2000.0 1.0 0.0 -it 04_res 1 74 2030 1300.0 1.0 0.0 -it 05_nuclear 1 74 2030 0.0 0.0 0.0 -it 06_coal 1 74 2030 0.0 0.0 0.0 -it 07_gas 1 74 2030 0.0 0.0 0.0 -it 08_non-res 1 74 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 74 2030 0.0 0.0 0.0 -it 01_solar 1 75 2030 2000.0 1.0 0.0 -it 02_wind_on 1 75 2030 2000.0 1.0 0.0 -it 03_wind_off 1 75 2030 2000.0 1.0 0.0 -it 04_res 1 75 2030 1400.0 1.0 0.0 -it 05_nuclear 1 75 2030 0.0 0.0 0.0 -it 06_coal 1 75 2030 0.0 0.0 0.0 -it 07_gas 1 75 2030 0.0 0.0 0.0 -it 08_non-res 1 75 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 75 2030 0.0 0.0 0.0 -it 01_solar 1 76 2030 2000.0 1.0 0.0 -it 02_wind_on 1 76 2030 2000.0 1.0 0.0 -it 03_wind_off 1 76 2030 2000.0 1.0 0.0 -it 04_res 1 76 2030 1500.0 1.0 0.0 -it 05_nuclear 1 76 2030 0.0 0.0 0.0 -it 06_coal 1 76 2030 0.0 0.0 0.0 -it 07_gas 1 76 2030 0.0 0.0 0.0 -it 08_non-res 1 76 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 76 2030 0.0 0.0 0.0 -it 01_solar 1 77 2030 2000.0 1.0 0.0 -it 02_wind_on 1 77 2030 2000.0 1.0 0.0 -it 03_wind_off 1 77 2030 2000.0 1.0 0.0 -it 04_res 1 77 2030 1600.0 1.0 0.0 -it 05_nuclear 1 77 2030 0.0 0.0 0.0 -it 06_coal 1 77 2030 0.0 0.0 0.0 -it 07_gas 1 77 2030 0.0 0.0 0.0 -it 08_non-res 1 77 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 77 2030 0.0 0.0 0.0 -it 01_solar 1 78 2030 2000.0 1.0 0.0 -it 02_wind_on 1 78 2030 2000.0 1.0 0.0 -it 03_wind_off 1 78 2030 2000.0 1.0 0.0 -it 04_res 1 78 2030 1700.0 1.0 0.0 -it 05_nuclear 1 78 2030 0.0 0.0 0.0 -it 06_coal 1 78 2030 0.0 0.0 0.0 -it 07_gas 1 78 2030 0.0 0.0 0.0 -it 08_non-res 1 78 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 78 2030 0.0 0.0 0.0 -it 01_solar 1 79 2030 2000.0 1.0 0.0 -it 02_wind_on 1 79 2030 2000.0 1.0 0.0 -it 03_wind_off 1 79 2030 2000.0 1.0 0.0 -it 04_res 1 79 2030 1800.0 1.0 0.0 -it 05_nuclear 1 79 2030 0.0 0.0 0.0 -it 06_coal 1 79 2030 0.0 0.0 0.0 -it 07_gas 1 79 2030 0.0 0.0 0.0 -it 08_non-res 1 79 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 79 2030 0.0 0.0 0.0 -it 01_solar 1 80 2030 2000.0 1.0 0.0 -it 02_wind_on 1 80 2030 2000.0 1.0 0.0 -it 03_wind_off 1 80 2030 2000.0 1.0 0.0 -it 04_res 1 80 2030 1900.0 1.0 0.0 -it 05_nuclear 1 80 2030 0.0 0.0 0.0 -it 06_coal 1 80 2030 0.0 0.0 0.0 -it 07_gas 1 80 2030 0.0 0.0 0.0 -it 08_non-res 1 80 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 80 2030 0.0 0.0 0.0 -it 01_solar 1 81 2030 2000.0 1.0 0.0 -it 02_wind_on 1 81 2030 2000.0 1.0 0.0 -it 03_wind_off 1 81 2030 2000.0 1.0 0.0 -it 04_res 1 81 2030 2000.0 1.0 0.0 -it 05_nuclear 1 81 2030 0.0 0.0 0.0 -it 06_coal 1 81 2030 0.0 0.0 0.0 -it 07_gas 1 81 2030 0.0 0.0 0.0 -it 08_non-res 1 81 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 81 2030 0.0 0.0 0.0 -it 01_solar 1 82 2030 2000.0 1.0 0.0 -it 02_wind_on 1 82 2030 2000.0 1.0 0.0 -it 03_wind_off 1 82 2030 2000.0 1.0 0.0 -it 04_res 1 82 2030 2000.0 1.0 0.0 -it 05_nuclear 1 82 2030 100.0 1.0 0.0 -it 06_coal 1 82 2030 0.0 0.0 0.0 -it 07_gas 1 82 2030 0.0 0.0 0.0 -it 08_non-res 1 82 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 82 2030 0.0 0.0 0.0 -it 01_solar 1 83 2030 2000.0 1.0 0.0 -it 02_wind_on 1 83 2030 2000.0 1.0 0.0 -it 03_wind_off 1 83 2030 2000.0 1.0 0.0 -it 04_res 1 83 2030 2000.0 1.0 0.0 -it 05_nuclear 1 83 2030 200.0 1.0 0.0 -it 06_coal 1 83 2030 0.0 0.0 0.0 -it 07_gas 1 83 2030 0.0 0.0 0.0 -it 08_non-res 1 83 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 83 2030 0.0 0.0 0.0 -it 01_solar 1 84 2030 2000.0 1.0 0.0 -it 02_wind_on 1 84 2030 2000.0 1.0 0.0 -it 03_wind_off 1 84 2030 2000.0 1.0 0.0 -it 04_res 1 84 2030 2000.0 1.0 0.0 -it 05_nuclear 1 84 2030 300.0 1.0 0.0 -it 06_coal 1 84 2030 0.0 0.0 0.0 -it 07_gas 1 84 2030 0.0 0.0 0.0 -it 08_non-res 1 84 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 84 2030 0.0 0.0 0.0 -it 01_solar 1 85 2030 2000.0 1.0 0.0 -it 02_wind_on 1 85 2030 2000.0 1.0 0.0 -it 03_wind_off 1 85 2030 2000.0 1.0 0.0 -it 04_res 1 85 2030 2000.0 1.0 0.0 -it 05_nuclear 1 85 2030 400.0 1.0 0.0 -it 06_coal 1 85 2030 0.0 0.0 0.0 -it 07_gas 1 85 2030 0.0 0.0 0.0 -it 08_non-res 1 85 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 85 2030 0.0 0.0 0.0 -it 01_solar 1 86 2030 2000.0 1.0 0.0 -it 02_wind_on 1 86 2030 2000.0 1.0 0.0 -it 03_wind_off 1 86 2030 2000.0 1.0 0.0 -it 04_res 1 86 2030 2000.0 1.0 0.0 -it 05_nuclear 1 86 2030 500.0 1.0 0.0 -it 06_coal 1 86 2030 0.0 0.0 0.0 -it 07_gas 1 86 2030 0.0 0.0 0.0 -it 08_non-res 1 86 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 86 2030 0.0 0.0 0.0 -it 01_solar 1 87 2030 2000.0 1.0 0.0 -it 02_wind_on 1 87 2030 2000.0 1.0 0.0 -it 03_wind_off 1 87 2030 2000.0 1.0 0.0 -it 04_res 1 87 2030 2000.0 1.0 0.0 -it 05_nuclear 1 87 2030 600.0 1.0 0.0 -it 06_coal 1 87 2030 0.0 0.0 0.0 -it 07_gas 1 87 2030 0.0 0.0 0.0 -it 08_non-res 1 87 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 87 2030 0.0 0.0 0.0 -it 01_solar 1 88 2030 2000.0 1.0 0.0 -it 02_wind_on 1 88 2030 2000.0 1.0 0.0 -it 03_wind_off 1 88 2030 2000.0 1.0 0.0 -it 04_res 1 88 2030 2000.0 1.0 0.0 -it 05_nuclear 1 88 2030 700.0 1.0 0.0 -it 06_coal 1 88 2030 0.0 0.0 0.0 -it 07_gas 1 88 2030 0.0 0.0 0.0 -it 08_non-res 1 88 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 88 2030 0.0 0.0 0.0 -it 01_solar 1 89 2030 2000.0 1.0 0.0 -it 02_wind_on 1 89 2030 2000.0 1.0 0.0 -it 03_wind_off 1 89 2030 2000.0 1.0 0.0 -it 04_res 1 89 2030 2000.0 1.0 0.0 -it 05_nuclear 1 89 2030 800.0 1.0 0.0 -it 06_coal 1 89 2030 0.0 0.0 0.0 -it 07_gas 1 89 2030 0.0 0.0 0.0 -it 08_non-res 1 89 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 89 2030 0.0 0.0 0.0 -it 01_solar 1 90 2030 2000.0 1.0 0.0 -it 02_wind_on 1 90 2030 2000.0 1.0 0.0 -it 03_wind_off 1 90 2030 2000.0 1.0 0.0 -it 04_res 1 90 2030 2000.0 1.0 0.0 -it 05_nuclear 1 90 2030 900.0 1.0 0.0 -it 06_coal 1 90 2030 0.0 0.0 0.0 -it 07_gas 1 90 2030 0.0 0.0 0.0 -it 08_non-res 1 90 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 90 2030 0.0 0.0 0.0 -it 01_solar 1 91 2030 2000.0 1.0 0.0 -it 02_wind_on 1 91 2030 2000.0 1.0 0.0 -it 03_wind_off 1 91 2030 2000.0 1.0 0.0 -it 04_res 1 91 2030 2000.0 1.0 0.0 -it 05_nuclear 1 91 2030 1000.0 1.0 0.0 -it 06_coal 1 91 2030 0.0 0.0 0.0 -it 07_gas 1 91 2030 0.0 0.0 0.0 -it 08_non-res 1 91 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 91 2030 0.0 0.0 0.0 -it 01_solar 1 92 2030 2000.0 1.0 0.0 -it 02_wind_on 1 92 2030 2000.0 1.0 0.0 -it 03_wind_off 1 92 2030 2000.0 1.0 0.0 -it 04_res 1 92 2030 2000.0 1.0 0.0 -it 05_nuclear 1 92 2030 1100.0 1.0 0.0 -it 06_coal 1 92 2030 0.0 0.0 0.0 -it 07_gas 1 92 2030 0.0 0.0 0.0 -it 08_non-res 1 92 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 92 2030 0.0 0.0 0.0 -it 01_solar 1 93 2030 2000.0 1.0 0.0 -it 02_wind_on 1 93 2030 2000.0 1.0 0.0 -it 03_wind_off 1 93 2030 2000.0 1.0 0.0 -it 04_res 1 93 2030 2000.0 1.0 0.0 -it 05_nuclear 1 93 2030 1200.0 1.0 0.0 -it 06_coal 1 93 2030 0.0 0.0 0.0 -it 07_gas 1 93 2030 0.0 0.0 0.0 -it 08_non-res 1 93 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 93 2030 0.0 0.0 0.0 -it 01_solar 1 94 2030 2000.0 1.0 0.0 -it 02_wind_on 1 94 2030 2000.0 1.0 0.0 -it 03_wind_off 1 94 2030 2000.0 1.0 0.0 -it 04_res 1 94 2030 2000.0 1.0 0.0 -it 05_nuclear 1 94 2030 1300.0 1.0 0.0 -it 06_coal 1 94 2030 0.0 0.0 0.0 -it 07_gas 1 94 2030 0.0 0.0 0.0 -it 08_non-res 1 94 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 94 2030 0.0 0.0 0.0 -it 01_solar 1 95 2030 2000.0 1.0 0.0 -it 02_wind_on 1 95 2030 2000.0 1.0 0.0 -it 03_wind_off 1 95 2030 2000.0 1.0 0.0 -it 04_res 1 95 2030 2000.0 1.0 0.0 -it 05_nuclear 1 95 2030 1400.0 1.0 0.0 -it 06_coal 1 95 2030 0.0 0.0 0.0 -it 07_gas 1 95 2030 0.0 0.0 0.0 -it 08_non-res 1 95 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 95 2030 0.0 0.0 0.0 -it 01_solar 1 96 2030 2000.0 1.0 0.0 -it 02_wind_on 1 96 2030 2000.0 1.0 0.0 -it 03_wind_off 1 96 2030 2000.0 1.0 0.0 -it 04_res 1 96 2030 2000.0 1.0 0.0 -it 05_nuclear 1 96 2030 1500.0 1.0 0.0 -it 06_coal 1 96 2030 0.0 0.0 0.0 -it 07_gas 1 96 2030 0.0 0.0 0.0 -it 08_non-res 1 96 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 96 2030 0.0 0.0 0.0 -it 01_solar 1 97 2030 2000.0 1.0 0.0 -it 02_wind_on 1 97 2030 2000.0 1.0 0.0 -it 03_wind_off 1 97 2030 2000.0 1.0 0.0 -it 04_res 1 97 2030 2000.0 1.0 0.0 -it 05_nuclear 1 97 2030 1600.0 1.0 0.0 -it 06_coal 1 97 2030 0.0 0.0 0.0 -it 07_gas 1 97 2030 0.0 0.0 0.0 -it 08_non-res 1 97 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 97 2030 0.0 0.0 0.0 -it 01_solar 1 98 2030 2000.0 1.0 0.0 -it 02_wind_on 1 98 2030 2000.0 1.0 0.0 -it 03_wind_off 1 98 2030 2000.0 1.0 0.0 -it 04_res 1 98 2030 2000.0 1.0 0.0 -it 05_nuclear 1 98 2030 1700.0 1.0 0.0 -it 06_coal 1 98 2030 0.0 0.0 0.0 -it 07_gas 1 98 2030 0.0 0.0 0.0 -it 08_non-res 1 98 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 98 2030 0.0 0.0 0.0 -it 01_solar 1 99 2030 2000.0 1.0 0.0 -it 02_wind_on 1 99 2030 2000.0 1.0 0.0 -it 03_wind_off 1 99 2030 2000.0 1.0 0.0 -it 04_res 1 99 2030 2000.0 1.0 0.0 -it 05_nuclear 1 99 2030 1800.0 1.0 0.0 -it 06_coal 1 99 2030 0.0 0.0 0.0 -it 07_gas 1 99 2030 0.0 0.0 0.0 -it 08_non-res 1 99 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 99 2030 0.0 0.0 0.0 -it 01_solar 1 100 2030 2000.0 1.0 0.0 -it 02_wind_on 1 100 2030 2000.0 1.0 0.0 -it 03_wind_off 1 100 2030 2000.0 1.0 0.0 -it 04_res 1 100 2030 2000.0 1.0 0.0 -it 05_nuclear 1 100 2030 1900.0 1.0 0.0 -it 06_coal 1 100 2030 0.0 0.0 0.0 -it 07_gas 1 100 2030 0.0 0.0 0.0 -it 08_non-res 1 100 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 100 2030 0.0 0.0 0.0 -it 01_solar 1 101 2030 2000.0 1.0 0.0 -it 02_wind_on 1 101 2030 2000.0 1.0 0.0 -it 03_wind_off 1 101 2030 2000.0 1.0 0.0 -it 04_res 1 101 2030 2000.0 1.0 0.0 -it 05_nuclear 1 101 2030 2000.0 1.0 0.0 -it 06_coal 1 101 2030 0.0 0.0 0.0 -it 07_gas 1 101 2030 0.0 0.0 0.0 -it 08_non-res 1 101 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 101 2030 0.0 0.0 0.0 -it 01_solar 1 102 2030 2000.0 1.0 0.0 -it 02_wind_on 1 102 2030 2000.0 1.0 0.0 -it 03_wind_off 1 102 2030 2000.0 1.0 0.0 -it 04_res 1 102 2030 2000.0 1.0 0.0 -it 05_nuclear 1 102 2030 2000.0 1.0 0.0 -it 06_coal 1 102 2030 100.0 1.0 0.0 -it 07_gas 1 102 2030 0.0 0.0 0.0 -it 08_non-res 1 102 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 102 2030 0.0 0.0 0.0 -it 01_solar 1 103 2030 2000.0 1.0 0.0 -it 02_wind_on 1 103 2030 2000.0 1.0 0.0 -it 03_wind_off 1 103 2030 2000.0 1.0 0.0 -it 04_res 1 103 2030 2000.0 1.0 0.0 -it 05_nuclear 1 103 2030 2000.0 1.0 0.0 -it 06_coal 1 103 2030 200.0 1.0 0.0 -it 07_gas 1 103 2030 0.0 0.0 0.0 -it 08_non-res 1 103 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 103 2030 0.0 0.0 0.0 -it 01_solar 1 104 2030 2000.0 1.0 0.0 -it 02_wind_on 1 104 2030 2000.0 1.0 0.0 -it 03_wind_off 1 104 2030 2000.0 1.0 0.0 -it 04_res 1 104 2030 2000.0 1.0 0.0 -it 05_nuclear 1 104 2030 2000.0 1.0 0.0 -it 06_coal 1 104 2030 300.0 1.0 0.0 -it 07_gas 1 104 2030 0.0 0.0 0.0 -it 08_non-res 1 104 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 104 2030 0.0 0.0 0.0 -it 01_solar 1 105 2030 2000.0 1.0 0.0 -it 02_wind_on 1 105 2030 2000.0 1.0 0.0 -it 03_wind_off 1 105 2030 2000.0 1.0 0.0 -it 04_res 1 105 2030 2000.0 1.0 0.0 -it 05_nuclear 1 105 2030 2000.0 1.0 0.0 -it 06_coal 1 105 2030 400.0 1.0 0.0 -it 07_gas 1 105 2030 0.0 0.0 0.0 -it 08_non-res 1 105 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 105 2030 0.0 0.0 0.0 -it 01_solar 1 106 2030 2000.0 1.0 0.0 -it 02_wind_on 1 106 2030 2000.0 1.0 0.0 -it 03_wind_off 1 106 2030 2000.0 1.0 0.0 -it 04_res 1 106 2030 2000.0 1.0 0.0 -it 05_nuclear 1 106 2030 2000.0 1.0 0.0 -it 06_coal 1 106 2030 500.0 1.0 0.0 -it 07_gas 1 106 2030 0.0 0.0 0.0 -it 08_non-res 1 106 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 106 2030 0.0 0.0 0.0 -it 01_solar 1 107 2030 2000.0 1.0 0.0 -it 02_wind_on 1 107 2030 2000.0 1.0 0.0 -it 03_wind_off 1 107 2030 2000.0 1.0 0.0 -it 04_res 1 107 2030 2000.0 1.0 0.0 -it 05_nuclear 1 107 2030 2000.0 1.0 0.0 -it 06_coal 1 107 2030 600.0 1.0 0.0 -it 07_gas 1 107 2030 0.0 0.0 0.0 -it 08_non-res 1 107 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 107 2030 0.0 0.0 0.0 -it 01_solar 1 108 2030 2000.0 1.0 0.0 -it 02_wind_on 1 108 2030 2000.0 1.0 0.0 -it 03_wind_off 1 108 2030 2000.0 1.0 0.0 -it 04_res 1 108 2030 2000.0 1.0 0.0 -it 05_nuclear 1 108 2030 2000.0 1.0 0.0 -it 06_coal 1 108 2030 700.0 1.0 0.0 -it 07_gas 1 108 2030 0.0 0.0 0.0 -it 08_non-res 1 108 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 108 2030 0.0 0.0 0.0 -it 01_solar 1 109 2030 2000.0 1.0 0.0 -it 02_wind_on 1 109 2030 2000.0 1.0 0.0 -it 03_wind_off 1 109 2030 2000.0 1.0 0.0 -it 04_res 1 109 2030 2000.0 1.0 0.0 -it 05_nuclear 1 109 2030 2000.0 1.0 0.0 -it 06_coal 1 109 2030 800.0 1.0 0.0 -it 07_gas 1 109 2030 0.0 0.0 0.0 -it 08_non-res 1 109 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 109 2030 0.0 0.0 0.0 -it 01_solar 1 110 2030 2000.0 1.0 0.0 -it 02_wind_on 1 110 2030 2000.0 1.0 0.0 -it 03_wind_off 1 110 2030 2000.0 1.0 0.0 -it 04_res 1 110 2030 2000.0 1.0 0.0 -it 05_nuclear 1 110 2030 2000.0 1.0 0.0 -it 06_coal 1 110 2030 900.0 1.0 0.0 -it 07_gas 1 110 2030 0.0 0.0 0.0 -it 08_non-res 1 110 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 110 2030 0.0 0.0 0.0 -it 01_solar 1 111 2030 2000.0 1.0 0.0 -it 02_wind_on 1 111 2030 2000.0 1.0 0.0 -it 03_wind_off 1 111 2030 2000.0 1.0 0.0 -it 04_res 1 111 2030 2000.0 1.0 0.0 -it 05_nuclear 1 111 2030 2000.0 1.0 0.0 -it 06_coal 1 111 2030 1000.0 1.0 0.0 -it 07_gas 1 111 2030 0.0 0.0 0.0 -it 08_non-res 1 111 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 111 2030 0.0 0.0 0.0 -it 01_solar 1 112 2030 2000.0 1.0 0.0 -it 02_wind_on 1 112 2030 2000.0 1.0 0.0 -it 03_wind_off 1 112 2030 2000.0 1.0 0.0 -it 04_res 1 112 2030 2000.0 1.0 0.0 -it 05_nuclear 1 112 2030 2000.0 1.0 0.0 -it 06_coal 1 112 2030 1100.0 1.0 0.0 -it 07_gas 1 112 2030 0.0 0.0 0.0 -it 08_non-res 1 112 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 112 2030 0.0 0.0 0.0 -it 01_solar 1 113 2030 2000.0 1.0 0.0 -it 02_wind_on 1 113 2030 2000.0 1.0 0.0 -it 03_wind_off 1 113 2030 2000.0 1.0 0.0 -it 04_res 1 113 2030 2000.0 1.0 0.0 -it 05_nuclear 1 113 2030 2000.0 1.0 0.0 -it 06_coal 1 113 2030 1200.0 1.0 0.0 -it 07_gas 1 113 2030 0.0 0.0 0.0 -it 08_non-res 1 113 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 113 2030 0.0 0.0 0.0 -it 01_solar 1 114 2030 2000.0 1.0 0.0 -it 02_wind_on 1 114 2030 2000.0 1.0 0.0 -it 03_wind_off 1 114 2030 2000.0 1.0 0.0 -it 04_res 1 114 2030 2000.0 1.0 0.0 -it 05_nuclear 1 114 2030 2000.0 1.0 0.0 -it 06_coal 1 114 2030 1300.0 1.0 0.0 -it 07_gas 1 114 2030 0.0 0.0 0.0 -it 08_non-res 1 114 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 114 2030 0.0 0.0 0.0 -it 01_solar 1 115 2030 2000.0 1.0 0.0 -it 02_wind_on 1 115 2030 2000.0 1.0 0.0 -it 03_wind_off 1 115 2030 2000.0 1.0 0.0 -it 04_res 1 115 2030 2000.0 1.0 0.0 -it 05_nuclear 1 115 2030 2000.0 1.0 0.0 -it 06_coal 1 115 2030 1400.0 1.0 0.0 -it 07_gas 1 115 2030 0.0 0.0 0.0 -it 08_non-res 1 115 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 115 2030 0.0 0.0 0.0 -it 01_solar 1 116 2030 2000.0 1.0 0.0 -it 02_wind_on 1 116 2030 2000.0 1.0 0.0 -it 03_wind_off 1 116 2030 2000.0 1.0 0.0 -it 04_res 1 116 2030 2000.0 1.0 0.0 -it 05_nuclear 1 116 2030 2000.0 1.0 0.0 -it 06_coal 1 116 2030 1500.0 1.0 0.0 -it 07_gas 1 116 2030 0.0 0.0 0.0 -it 08_non-res 1 116 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 116 2030 0.0 0.0 0.0 -it 01_solar 1 117 2030 2000.0 1.0 0.0 -it 02_wind_on 1 117 2030 2000.0 1.0 0.0 -it 03_wind_off 1 117 2030 2000.0 1.0 0.0 -it 04_res 1 117 2030 2000.0 1.0 0.0 -it 05_nuclear 1 117 2030 2000.0 1.0 0.0 -it 06_coal 1 117 2030 1600.0 1.0 0.0 -it 07_gas 1 117 2030 0.0 0.0 0.0 -it 08_non-res 1 117 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 117 2030 0.0 0.0 0.0 -it 01_solar 1 118 2030 2000.0 1.0 0.0 -it 02_wind_on 1 118 2030 2000.0 1.0 0.0 -it 03_wind_off 1 118 2030 2000.0 1.0 0.0 -it 04_res 1 118 2030 2000.0 1.0 0.0 -it 05_nuclear 1 118 2030 2000.0 1.0 0.0 -it 06_coal 1 118 2030 1700.0 1.0 0.0 -it 07_gas 1 118 2030 0.0 0.0 0.0 -it 08_non-res 1 118 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 118 2030 0.0 0.0 0.0 -it 01_solar 1 119 2030 2000.0 1.0 0.0 -it 02_wind_on 1 119 2030 2000.0 1.0 0.0 -it 03_wind_off 1 119 2030 2000.0 1.0 0.0 -it 04_res 1 119 2030 2000.0 1.0 0.0 -it 05_nuclear 1 119 2030 2000.0 1.0 0.0 -it 06_coal 1 119 2030 1800.0 1.0 0.0 -it 07_gas 1 119 2030 0.0 0.0 0.0 -it 08_non-res 1 119 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 119 2030 0.0 0.0 0.0 -it 01_solar 1 120 2030 2000.0 1.0 0.0 -it 02_wind_on 1 120 2030 2000.0 1.0 0.0 -it 03_wind_off 1 120 2030 2000.0 1.0 0.0 -it 04_res 1 120 2030 2000.0 1.0 0.0 -it 05_nuclear 1 120 2030 2000.0 1.0 0.0 -it 06_coal 1 120 2030 1900.0 1.0 0.0 -it 07_gas 1 120 2030 0.0 0.0 0.0 -it 08_non-res 1 120 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 120 2030 0.0 0.0 0.0 -it 01_solar 1 121 2030 2000.0 1.0 0.0 -it 02_wind_on 1 121 2030 2000.0 1.0 0.0 -it 03_wind_off 1 121 2030 2000.0 1.0 0.0 -it 04_res 1 121 2030 2000.0 1.0 0.0 -it 05_nuclear 1 121 2030 2000.0 1.0 0.0 -it 06_coal 1 121 2030 2000.0 1.0 0.0 -it 07_gas 1 121 2030 0.0 0.0 0.0 -it 08_non-res 1 121 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 121 2030 0.0 0.0 0.0 -it 01_solar 1 122 2030 2000.0 1.0 0.0 -it 02_wind_on 1 122 2030 2000.0 1.0 0.0 -it 03_wind_off 1 122 2030 2000.0 1.0 0.0 -it 04_res 1 122 2030 2000.0 1.0 0.0 -it 05_nuclear 1 122 2030 2000.0 1.0 0.0 -it 06_coal 1 122 2030 2000.0 1.0 0.0 -it 07_gas 1 122 2030 100.0 1.0 0.0 -it 08_non-res 1 122 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 122 2030 0.0 0.0 0.0 -it 01_solar 1 123 2030 2000.0 1.0 0.0 -it 02_wind_on 1 123 2030 2000.0 1.0 0.0 -it 03_wind_off 1 123 2030 2000.0 1.0 0.0 -it 04_res 1 123 2030 2000.0 1.0 0.0 -it 05_nuclear 1 123 2030 2000.0 1.0 0.0 -it 06_coal 1 123 2030 2000.0 1.0 0.0 -it 07_gas 1 123 2030 200.0 1.0 0.0 -it 08_non-res 1 123 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 123 2030 0.0 0.0 0.0 -it 01_solar 1 124 2030 2000.0 1.0 0.0 -it 02_wind_on 1 124 2030 2000.0 1.0 0.0 -it 03_wind_off 1 124 2030 2000.0 1.0 0.0 -it 04_res 1 124 2030 2000.0 1.0 0.0 -it 05_nuclear 1 124 2030 2000.0 1.0 0.0 -it 06_coal 1 124 2030 2000.0 1.0 0.0 -it 07_gas 1 124 2030 300.0 1.0 0.0 -it 08_non-res 1 124 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 124 2030 0.0 0.0 0.0 -it 01_solar 1 125 2030 2000.0 1.0 0.0 -it 02_wind_on 1 125 2030 2000.0 1.0 0.0 -it 03_wind_off 1 125 2030 2000.0 1.0 0.0 -it 04_res 1 125 2030 2000.0 1.0 0.0 -it 05_nuclear 1 125 2030 2000.0 1.0 0.0 -it 06_coal 1 125 2030 2000.0 1.0 0.0 -it 07_gas 1 125 2030 400.0 1.0 0.0 -it 08_non-res 1 125 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 125 2030 0.0 0.0 0.0 -it 01_solar 1 126 2030 2000.0 1.0 0.0 -it 02_wind_on 1 126 2030 2000.0 1.0 0.0 -it 03_wind_off 1 126 2030 2000.0 1.0 0.0 -it 04_res 1 126 2030 2000.0 1.0 0.0 -it 05_nuclear 1 126 2030 2000.0 1.0 0.0 -it 06_coal 1 126 2030 2000.0 1.0 0.0 -it 07_gas 1 126 2030 500.0 1.0 0.0 -it 08_non-res 1 126 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 126 2030 0.0 0.0 0.0 -it 01_solar 1 127 2030 2000.0 1.0 0.0 -it 02_wind_on 1 127 2030 2000.0 1.0 0.0 -it 03_wind_off 1 127 2030 2000.0 1.0 0.0 -it 04_res 1 127 2030 2000.0 1.0 0.0 -it 05_nuclear 1 127 2030 2000.0 1.0 0.0 -it 06_coal 1 127 2030 2000.0 1.0 0.0 -it 07_gas 1 127 2030 600.0 1.0 0.0 -it 08_non-res 1 127 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 127 2030 0.0 0.0 0.0 -it 01_solar 1 128 2030 2000.0 1.0 0.0 -it 02_wind_on 1 128 2030 2000.0 1.0 0.0 -it 03_wind_off 1 128 2030 2000.0 1.0 0.0 -it 04_res 1 128 2030 2000.0 1.0 0.0 -it 05_nuclear 1 128 2030 2000.0 1.0 0.0 -it 06_coal 1 128 2030 2000.0 1.0 0.0 -it 07_gas 1 128 2030 700.0 1.0 0.0 -it 08_non-res 1 128 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 128 2030 0.0 0.0 0.0 -it 01_solar 1 129 2030 2000.0 1.0 0.0 -it 02_wind_on 1 129 2030 2000.0 1.0 0.0 -it 03_wind_off 1 129 2030 2000.0 1.0 0.0 -it 04_res 1 129 2030 2000.0 1.0 0.0 -it 05_nuclear 1 129 2030 2000.0 1.0 0.0 -it 06_coal 1 129 2030 2000.0 1.0 0.0 -it 07_gas 1 129 2030 800.0 1.0 0.0 -it 08_non-res 1 129 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 129 2030 0.0 0.0 0.0 -it 01_solar 1 130 2030 2000.0 1.0 0.0 -it 02_wind_on 1 130 2030 2000.0 1.0 0.0 -it 03_wind_off 1 130 2030 2000.0 1.0 0.0 -it 04_res 1 130 2030 2000.0 1.0 0.0 -it 05_nuclear 1 130 2030 2000.0 1.0 0.0 -it 06_coal 1 130 2030 2000.0 1.0 0.0 -it 07_gas 1 130 2030 900.0 1.0 0.0 -it 08_non-res 1 130 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 130 2030 0.0 0.0 0.0 -it 01_solar 1 131 2030 2000.0 1.0 0.0 -it 02_wind_on 1 131 2030 2000.0 1.0 0.0 -it 03_wind_off 1 131 2030 2000.0 1.0 0.0 -it 04_res 1 131 2030 2000.0 1.0 0.0 -it 05_nuclear 1 131 2030 2000.0 1.0 0.0 -it 06_coal 1 131 2030 2000.0 1.0 0.0 -it 07_gas 1 131 2030 1000.0 1.0 0.0 -it 08_non-res 1 131 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 131 2030 0.0 0.0 0.0 -it 01_solar 1 132 2030 2000.0 1.0 0.0 -it 02_wind_on 1 132 2030 2000.0 1.0 0.0 -it 03_wind_off 1 132 2030 2000.0 1.0 0.0 -it 04_res 1 132 2030 2000.0 1.0 0.0 -it 05_nuclear 1 132 2030 2000.0 1.0 0.0 -it 06_coal 1 132 2030 2000.0 1.0 0.0 -it 07_gas 1 132 2030 1100.0 1.0 0.0 -it 08_non-res 1 132 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 132 2030 0.0 0.0 0.0 -it 01_solar 1 133 2030 2000.0 1.0 0.0 -it 02_wind_on 1 133 2030 2000.0 1.0 0.0 -it 03_wind_off 1 133 2030 2000.0 1.0 0.0 -it 04_res 1 133 2030 2000.0 1.0 0.0 -it 05_nuclear 1 133 2030 2000.0 1.0 0.0 -it 06_coal 1 133 2030 2000.0 1.0 0.0 -it 07_gas 1 133 2030 1200.0 1.0 0.0 -it 08_non-res 1 133 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 133 2030 0.0 0.0 0.0 -it 01_solar 1 134 2030 2000.0 1.0 0.0 -it 02_wind_on 1 134 2030 2000.0 1.0 0.0 -it 03_wind_off 1 134 2030 2000.0 1.0 0.0 -it 04_res 1 134 2030 2000.0 1.0 0.0 -it 05_nuclear 1 134 2030 2000.0 1.0 0.0 -it 06_coal 1 134 2030 2000.0 1.0 0.0 -it 07_gas 1 134 2030 1300.0 1.0 0.0 -it 08_non-res 1 134 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 134 2030 0.0 0.0 0.0 -it 01_solar 1 135 2030 2000.0 1.0 0.0 -it 02_wind_on 1 135 2030 2000.0 1.0 0.0 -it 03_wind_off 1 135 2030 2000.0 1.0 0.0 -it 04_res 1 135 2030 2000.0 1.0 0.0 -it 05_nuclear 1 135 2030 2000.0 1.0 0.0 -it 06_coal 1 135 2030 2000.0 1.0 0.0 -it 07_gas 1 135 2030 1400.0 1.0 0.0 -it 08_non-res 1 135 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 135 2030 0.0 0.0 0.0 -it 01_solar 1 136 2030 2000.0 1.0 0.0 -it 02_wind_on 1 136 2030 2000.0 1.0 0.0 -it 03_wind_off 1 136 2030 2000.0 1.0 0.0 -it 04_res 1 136 2030 2000.0 1.0 0.0 -it 05_nuclear 1 136 2030 2000.0 1.0 0.0 -it 06_coal 1 136 2030 2000.0 1.0 0.0 -it 07_gas 1 136 2030 1500.0 1.0 0.0 -it 08_non-res 1 136 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 136 2030 0.0 0.0 0.0 -it 01_solar 1 137 2030 2000.0 1.0 0.0 -it 02_wind_on 1 137 2030 2000.0 1.0 0.0 -it 03_wind_off 1 137 2030 2000.0 1.0 0.0 -it 04_res 1 137 2030 2000.0 1.0 0.0 -it 05_nuclear 1 137 2030 2000.0 1.0 0.0 -it 06_coal 1 137 2030 2000.0 1.0 0.0 -it 07_gas 1 137 2030 1600.0 1.0 0.0 -it 08_non-res 1 137 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 137 2030 0.0 0.0 0.0 -it 01_solar 1 138 2030 2000.0 1.0 0.0 -it 02_wind_on 1 138 2030 2000.0 1.0 0.0 -it 03_wind_off 1 138 2030 2000.0 1.0 0.0 -it 04_res 1 138 2030 2000.0 1.0 0.0 -it 05_nuclear 1 138 2030 2000.0 1.0 0.0 -it 06_coal 1 138 2030 2000.0 1.0 0.0 -it 07_gas 1 138 2030 1700.0 1.0 0.0 -it 08_non-res 1 138 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 138 2030 0.0 0.0 0.0 -it 01_solar 1 139 2030 2000.0 1.0 0.0 -it 02_wind_on 1 139 2030 2000.0 1.0 0.0 -it 03_wind_off 1 139 2030 2000.0 1.0 0.0 -it 04_res 1 139 2030 2000.0 1.0 0.0 -it 05_nuclear 1 139 2030 2000.0 1.0 0.0 -it 06_coal 1 139 2030 2000.0 1.0 0.0 -it 07_gas 1 139 2030 1800.0 1.0 0.0 -it 08_non-res 1 139 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 139 2030 0.0 0.0 0.0 -it 01_solar 1 140 2030 2000.0 1.0 0.0 -it 02_wind_on 1 140 2030 2000.0 1.0 0.0 -it 03_wind_off 1 140 2030 2000.0 1.0 0.0 -it 04_res 1 140 2030 2000.0 1.0 0.0 -it 05_nuclear 1 140 2030 2000.0 1.0 0.0 -it 06_coal 1 140 2030 2000.0 1.0 0.0 -it 07_gas 1 140 2030 1900.0 1.0 0.0 -it 08_non-res 1 140 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 140 2030 0.0 0.0 0.0 -it 01_solar 1 141 2030 2000.0 1.0 0.0 -it 02_wind_on 1 141 2030 2000.0 1.0 0.0 -it 03_wind_off 1 141 2030 2000.0 1.0 0.0 -it 04_res 1 141 2030 2000.0 1.0 0.0 -it 05_nuclear 1 141 2030 2000.0 1.0 0.0 -it 06_coal 1 141 2030 2000.0 1.0 0.0 -it 07_gas 1 141 2030 2000.0 1.0 0.0 -it 08_non-res 1 141 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 141 2030 0.0 0.0 0.0 -it 01_solar 1 142 2030 2000.0 1.0 0.0 -it 02_wind_on 1 142 2030 2000.0 1.0 0.0 -it 03_wind_off 1 142 2030 2000.0 1.0 0.0 -it 04_res 1 142 2030 2000.0 1.0 0.0 -it 05_nuclear 1 142 2030 2000.0 1.0 0.0 -it 06_coal 1 142 2030 2000.0 1.0 0.0 -it 07_gas 1 142 2030 2000.0 1.0 0.0 -it 08_non-res 1 142 2030 100.0 1.0 0.0 -it 09_hydro_pump 1 142 2030 0.0 0.0 0.0 -it 01_solar 1 143 2030 2000.0 1.0 0.0 -it 02_wind_on 1 143 2030 2000.0 1.0 0.0 -it 03_wind_off 1 143 2030 2000.0 1.0 0.0 -it 04_res 1 143 2030 2000.0 1.0 0.0 -it 05_nuclear 1 143 2030 2000.0 1.0 0.0 -it 06_coal 1 143 2030 2000.0 1.0 0.0 -it 07_gas 1 143 2030 2000.0 1.0 0.0 -it 08_non-res 1 143 2030 200.0 1.0 0.0 -it 09_hydro_pump 1 143 2030 0.0 0.0 0.0 -it 01_solar 1 144 2030 2000.0 1.0 0.0 -it 02_wind_on 1 144 2030 2000.0 1.0 0.0 -it 03_wind_off 1 144 2030 2000.0 1.0 0.0 -it 04_res 1 144 2030 2000.0 1.0 0.0 -it 05_nuclear 1 144 2030 2000.0 1.0 0.0 -it 06_coal 1 144 2030 2000.0 1.0 0.0 -it 07_gas 1 144 2030 2000.0 1.0 0.0 -it 08_non-res 1 144 2030 300.0 1.0 0.0 -it 09_hydro_pump 1 144 2030 0.0 0.0 0.0 -it 01_solar 1 145 2030 2000.0 1.0 0.0 -it 02_wind_on 1 145 2030 2000.0 1.0 0.0 -it 03_wind_off 1 145 2030 2000.0 1.0 0.0 -it 04_res 1 145 2030 2000.0 1.0 0.0 -it 05_nuclear 1 145 2030 2000.0 1.0 0.0 -it 06_coal 1 145 2030 2000.0 1.0 0.0 -it 07_gas 1 145 2030 2000.0 1.0 0.0 -it 08_non-res 1 145 2030 400.0 1.0 0.0 -it 09_hydro_pump 1 145 2030 0.0 0.0 0.0 -it 01_solar 1 146 2030 2000.0 1.0 0.0 -it 02_wind_on 1 146 2030 2000.0 1.0 0.0 -it 03_wind_off 1 146 2030 2000.0 1.0 0.0 -it 04_res 1 146 2030 2000.0 1.0 0.0 -it 05_nuclear 1 146 2030 2000.0 1.0 0.0 -it 06_coal 1 146 2030 2000.0 1.0 0.0 -it 07_gas 1 146 2030 2000.0 1.0 0.0 -it 08_non-res 1 146 2030 500.0 1.0 0.0 -it 09_hydro_pump 1 146 2030 0.0 0.0 0.0 -it 01_solar 1 147 2030 2000.0 1.0 0.0 -it 02_wind_on 1 147 2030 2000.0 1.0 0.0 -it 03_wind_off 1 147 2030 2000.0 1.0 0.0 -it 04_res 1 147 2030 2000.0 1.0 0.0 -it 05_nuclear 1 147 2030 2000.0 1.0 0.0 -it 06_coal 1 147 2030 2000.0 1.0 0.0 -it 07_gas 1 147 2030 2000.0 1.0 0.0 -it 08_non-res 1 147 2030 600.0 1.0 0.0 -it 09_hydro_pump 1 147 2030 0.0 0.0 0.0 -it 01_solar 1 148 2030 2000.0 1.0 0.0 -it 02_wind_on 1 148 2030 2000.0 1.0 0.0 -it 03_wind_off 1 148 2030 2000.0 1.0 0.0 -it 04_res 1 148 2030 2000.0 1.0 0.0 -it 05_nuclear 1 148 2030 2000.0 1.0 0.0 -it 06_coal 1 148 2030 2000.0 1.0 0.0 -it 07_gas 1 148 2030 2000.0 1.0 0.0 -it 08_non-res 1 148 2030 700.0 1.0 0.0 -it 09_hydro_pump 1 148 2030 0.0 0.0 0.0 -it 01_solar 1 149 2030 2000.0 1.0 0.0 -it 02_wind_on 1 149 2030 2000.0 1.0 0.0 -it 03_wind_off 1 149 2030 2000.0 1.0 0.0 -it 04_res 1 149 2030 2000.0 1.0 0.0 -it 05_nuclear 1 149 2030 2000.0 1.0 0.0 -it 06_coal 1 149 2030 2000.0 1.0 0.0 -it 07_gas 1 149 2030 2000.0 1.0 0.0 -it 08_non-res 1 149 2030 800.0 1.0 0.0 -it 09_hydro_pump 1 149 2030 0.0 0.0 0.0 -it 01_solar 1 150 2030 2000.0 1.0 0.0 -it 02_wind_on 1 150 2030 2000.0 1.0 0.0 -it 03_wind_off 1 150 2030 2000.0 1.0 0.0 -it 04_res 1 150 2030 2000.0 1.0 0.0 -it 05_nuclear 1 150 2030 2000.0 1.0 0.0 -it 06_coal 1 150 2030 2000.0 1.0 0.0 -it 07_gas 1 150 2030 2000.0 1.0 0.0 -it 08_non-res 1 150 2030 900.0 1.0 0.0 -it 09_hydro_pump 1 150 2030 0.0 0.0 0.0 -it 01_solar 1 151 2030 2000.0 1.0 0.0 -it 02_wind_on 1 151 2030 2000.0 1.0 0.0 -it 03_wind_off 1 151 2030 2000.0 1.0 0.0 -it 04_res 1 151 2030 2000.0 1.0 0.0 -it 05_nuclear 1 151 2030 2000.0 1.0 0.0 -it 06_coal 1 151 2030 2000.0 1.0 0.0 -it 07_gas 1 151 2030 2000.0 1.0 0.0 -it 08_non-res 1 151 2030 1000.0 1.0 0.0 -it 09_hydro_pump 1 151 2030 0.0 0.0 0.0 -it 01_solar 1 152 2030 2000.0 1.0 0.0 -it 02_wind_on 1 152 2030 2000.0 1.0 0.0 -it 03_wind_off 1 152 2030 2000.0 1.0 0.0 -it 04_res 1 152 2030 2000.0 1.0 0.0 -it 05_nuclear 1 152 2030 2000.0 1.0 0.0 -it 06_coal 1 152 2030 2000.0 1.0 0.0 -it 07_gas 1 152 2030 2000.0 1.0 0.0 -it 08_non-res 1 152 2030 1100.0 1.0 0.0 -it 09_hydro_pump 1 152 2030 0.0 0.0 0.0 -it 01_solar 1 153 2030 2000.0 1.0 0.0 -it 02_wind_on 1 153 2030 2000.0 1.0 0.0 -it 03_wind_off 1 153 2030 2000.0 1.0 0.0 -it 04_res 1 153 2030 2000.0 1.0 0.0 -it 05_nuclear 1 153 2030 2000.0 1.0 0.0 -it 06_coal 1 153 2030 2000.0 1.0 0.0 -it 07_gas 1 153 2030 2000.0 1.0 0.0 -it 08_non-res 1 153 2030 1200.0 1.0 0.0 -it 09_hydro_pump 1 153 2030 0.0 0.0 0.0 -it 01_solar 1 154 2030 2000.0 1.0 0.0 -it 02_wind_on 1 154 2030 2000.0 1.0 0.0 -it 03_wind_off 1 154 2030 2000.0 1.0 0.0 -it 04_res 1 154 2030 2000.0 1.0 0.0 -it 05_nuclear 1 154 2030 2000.0 1.0 0.0 -it 06_coal 1 154 2030 2000.0 1.0 0.0 -it 07_gas 1 154 2030 2000.0 1.0 0.0 -it 08_non-res 1 154 2030 1300.0 1.0 0.0 -it 09_hydro_pump 1 154 2030 0.0 0.0 0.0 -it 01_solar 1 155 2030 2000.0 1.0 0.0 -it 02_wind_on 1 155 2030 2000.0 1.0 0.0 -it 03_wind_off 1 155 2030 2000.0 1.0 0.0 -it 04_res 1 155 2030 2000.0 1.0 0.0 -it 05_nuclear 1 155 2030 2000.0 1.0 0.0 -it 06_coal 1 155 2030 2000.0 1.0 0.0 -it 07_gas 1 155 2030 2000.0 1.0 0.0 -it 08_non-res 1 155 2030 1400.0 1.0 0.0 -it 09_hydro_pump 1 155 2030 0.0 0.0 0.0 -it 01_solar 1 156 2030 2000.0 1.0 0.0 -it 02_wind_on 1 156 2030 2000.0 1.0 0.0 -it 03_wind_off 1 156 2030 2000.0 1.0 0.0 -it 04_res 1 156 2030 2000.0 1.0 0.0 -it 05_nuclear 1 156 2030 2000.0 1.0 0.0 -it 06_coal 1 156 2030 2000.0 1.0 0.0 -it 07_gas 1 156 2030 2000.0 1.0 0.0 -it 08_non-res 1 156 2030 1500.0 1.0 0.0 -it 09_hydro_pump 1 156 2030 0.0 0.0 0.0 -it 01_solar 1 157 2030 2000.0 1.0 0.0 -it 02_wind_on 1 157 2030 2000.0 1.0 0.0 -it 03_wind_off 1 157 2030 2000.0 1.0 0.0 -it 04_res 1 157 2030 2000.0 1.0 0.0 -it 05_nuclear 1 157 2030 2000.0 1.0 0.0 -it 06_coal 1 157 2030 2000.0 1.0 0.0 -it 07_gas 1 157 2030 2000.0 1.0 0.0 -it 08_non-res 1 157 2030 1600.0 1.0 0.0 -it 09_hydro_pump 1 157 2030 0.0 0.0 0.0 -it 01_solar 1 158 2030 2000.0 1.0 0.0 -it 02_wind_on 1 158 2030 2000.0 1.0 0.0 -it 03_wind_off 1 158 2030 2000.0 1.0 0.0 -it 04_res 1 158 2030 2000.0 1.0 0.0 -it 05_nuclear 1 158 2030 2000.0 1.0 0.0 -it 06_coal 1 158 2030 2000.0 1.0 0.0 -it 07_gas 1 158 2030 2000.0 1.0 0.0 -it 08_non-res 1 158 2030 1700.0 1.0 0.0 -it 09_hydro_pump 1 158 2030 0.0 0.0 0.0 -it 01_solar 1 159 2030 2000.0 1.0 0.0 -it 02_wind_on 1 159 2030 2000.0 1.0 0.0 -it 03_wind_off 1 159 2030 2000.0 1.0 0.0 -it 04_res 1 159 2030 2000.0 1.0 0.0 -it 05_nuclear 1 159 2030 2000.0 1.0 0.0 -it 06_coal 1 159 2030 2000.0 1.0 0.0 -it 07_gas 1 159 2030 2000.0 1.0 0.0 -it 08_non-res 1 159 2030 1800.0 1.0 0.0 -it 09_hydro_pump 1 159 2030 0.0 0.0 0.0 -it 01_solar 1 160 2030 2000.0 1.0 0.0 -it 02_wind_on 1 160 2030 2000.0 1.0 0.0 -it 03_wind_off 1 160 2030 2000.0 1.0 0.0 -it 04_res 1 160 2030 2000.0 1.0 0.0 -it 05_nuclear 1 160 2030 2000.0 1.0 0.0 -it 06_coal 1 160 2030 2000.0 1.0 0.0 -it 07_gas 1 160 2030 2000.0 1.0 0.0 -it 08_non-res 1 160 2030 1900.0 1.0 0.0 -it 09_hydro_pump 1 160 2030 0.0 0.0 0.0 -it 01_solar 1 161 2030 2000.0 1.0 0.0 -it 02_wind_on 1 161 2030 2000.0 1.0 0.0 -it 03_wind_off 1 161 2030 2000.0 1.0 0.0 -it 04_res 1 161 2030 2000.0 1.0 0.0 -it 05_nuclear 1 161 2030 2000.0 1.0 0.0 -it 06_coal 1 161 2030 2000.0 1.0 0.0 -it 07_gas 1 161 2030 2000.0 1.0 0.0 -it 08_non-res 1 161 2030 2000.0 1.0 0.0 -it 09_hydro_pump 1 161 2030 0.0 0.0 0.0 -it 01_solar 1 162 2030 2000.0 1.0 0.0 -it 02_wind_on 1 162 2030 2000.0 1.0 0.0 -it 03_wind_off 1 162 2030 2000.0 1.0 0.0 -it 04_res 1 162 2030 2000.0 1.0 0.0 -it 05_nuclear 1 162 2030 2000.0 1.0 0.0 -it 06_coal 1 162 2030 2000.0 1.0 0.0 -it 07_gas 1 162 2030 2000.0 1.0 0.0 -it 08_non-res 1 162 2030 2000.0 1.0 0.0 -it 09_hydro_pump 1 162 2030 100.0 1.0 0.0 -it 01_solar 1 163 2030 2000.0 1.0 0.0 -it 02_wind_on 1 163 2030 2000.0 1.0 0.0 -it 03_wind_off 1 163 2030 2000.0 1.0 0.0 -it 04_res 1 163 2030 2000.0 1.0 0.0 -it 05_nuclear 1 163 2030 2000.0 1.0 0.0 -it 06_coal 1 163 2030 2000.0 1.0 0.0 -it 07_gas 1 163 2030 2000.0 1.0 0.0 -it 08_non-res 1 163 2030 2000.0 1.0 0.0 -it 09_hydro_pump 1 163 2030 200.0 1.0 0.0 -it 01_solar 1 164 2030 2000.0 1.0 0.0 -it 02_wind_on 1 164 2030 2000.0 1.0 0.0 -it 03_wind_off 1 164 2030 2000.0 1.0 0.0 -it 04_res 1 164 2030 2000.0 1.0 0.0 -it 05_nuclear 1 164 2030 2000.0 1.0 0.0 -it 06_coal 1 164 2030 2000.0 1.0 0.0 -it 07_gas 1 164 2030 2000.0 1.0 0.0 -it 08_non-res 1 164 2030 2000.0 1.0 0.0 -it 09_hydro_pump 1 164 2030 300.0 1.0 0.0 -it 01_solar 1 165 2030 2000.0 1.0 0.0 -it 02_wind_on 1 165 2030 2000.0 1.0 0.0 -it 03_wind_off 1 165 2030 2000.0 1.0 0.0 -it 04_res 1 165 2030 2000.0 1.0 0.0 -it 05_nuclear 1 165 2030 2000.0 1.0 0.0 -it 06_coal 1 165 2030 2000.0 1.0 0.0 -it 07_gas 1 165 2030 2000.0 1.0 0.0 -it 08_non-res 1 165 2030 2000.0 1.0 0.0 -it 09_hydro_pump 1 165 2030 400.0 1.0 0.0 -it 01_solar 1 166 2030 2000.0 1.0 0.0 -it 02_wind_on 1 166 2030 2000.0 1.0 0.0 -it 03_wind_off 1 166 2030 2000.0 1.0 0.0 -it 04_res 1 166 2030 2000.0 1.0 0.0 -it 05_nuclear 1 166 2030 2000.0 1.0 0.0 -it 06_coal 1 166 2030 2000.0 1.0 0.0 -it 07_gas 1 166 2030 2000.0 1.0 0.0 -it 08_non-res 1 166 2030 2000.0 1.0 0.0 -it 09_hydro_pump 1 166 2030 500.0 1.0 0.0 -it 01_solar 1 167 2030 2000.0 1.0 0.0 -it 02_wind_on 1 167 2030 2000.0 1.0 0.0 -it 03_wind_off 1 167 2030 2000.0 1.0 0.0 -it 04_res 1 167 2030 2000.0 1.0 0.0 -it 05_nuclear 1 167 2030 2000.0 1.0 0.0 -it 06_coal 1 167 2030 2000.0 1.0 0.0 -it 07_gas 1 167 2030 2000.0 1.0 0.0 -it 08_non-res 1 167 2030 2000.0 1.0 0.0 -it 09_hydro_pump 1 167 2030 600.0 1.0 0.0 -it 01_solar 1 168 2030 2000.0 1.0 0.0 -it 02_wind_on 1 168 2030 2000.0 1.0 0.0 -it 03_wind_off 1 168 2030 2000.0 1.0 0.0 -it 04_res 1 168 2030 2000.0 1.0 0.0 -it 05_nuclear 1 168 2030 2000.0 1.0 0.0 -it 06_coal 1 168 2030 2000.0 1.0 0.0 -it 07_gas 1 168 2030 2000.0 1.0 0.0 -it 08_non-res 1 168 2030 2000.0 1.0 0.0 -it 09_hydro_pump 1 168 2030 700.0 1.0 0.0 -it 01_solar 1 169 2030 0.0 0.0 0.0 -it 02_wind_on 1 169 2030 0.0 0.0 0.0 -it 03_wind_off 1 169 2030 0.0 0.0 0.0 -it 04_res 1 169 2030 0.0 0.0 0.0 -it 05_nuclear 1 169 2030 0.0 0.0 0.0 -it 06_coal 1 169 2030 0.0 0.0 0.0 -it 07_gas 1 169 2030 0.0 0.0 0.0 -it 08_non-res 1 169 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 169 2030 0.0 0.0 0.0 -it 01_solar 1 170 2030 100.0 1.0 0.0 -it 02_wind_on 1 170 2030 0.0 0.0 0.0 -it 03_wind_off 1 170 2030 0.0 0.0 0.0 -it 04_res 1 170 2030 0.0 0.0 0.0 -it 05_nuclear 1 170 2030 0.0 0.0 0.0 -it 06_coal 1 170 2030 0.0 0.0 0.0 -it 07_gas 1 170 2030 0.0 0.0 0.0 -it 08_non-res 1 170 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 170 2030 0.0 0.0 0.0 -it 01_solar 1 171 2030 200.0 1.0 0.0 -it 02_wind_on 1 171 2030 0.0 0.0 0.0 -it 03_wind_off 1 171 2030 0.0 0.0 0.0 -it 04_res 1 171 2030 0.0 0.0 0.0 -it 05_nuclear 1 171 2030 0.0 0.0 0.0 -it 06_coal 1 171 2030 0.0 0.0 0.0 -it 07_gas 1 171 2030 0.0 0.0 0.0 -it 08_non-res 1 171 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 171 2030 0.0 0.0 0.0 -it 01_solar 1 172 2030 300.0 1.0 0.0 -it 02_wind_on 1 172 2030 0.0 0.0 0.0 -it 03_wind_off 1 172 2030 0.0 0.0 0.0 -it 04_res 1 172 2030 0.0 0.0 0.0 -it 05_nuclear 1 172 2030 0.0 0.0 0.0 -it 06_coal 1 172 2030 0.0 0.0 0.0 -it 07_gas 1 172 2030 0.0 0.0 0.0 -it 08_non-res 1 172 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 172 2030 0.0 0.0 0.0 -it 01_solar 1 173 2030 400.0 1.0 0.0 -it 02_wind_on 1 173 2030 0.0 0.0 0.0 -it 03_wind_off 1 173 2030 0.0 0.0 0.0 -it 04_res 1 173 2030 0.0 0.0 0.0 -it 05_nuclear 1 173 2030 0.0 0.0 0.0 -it 06_coal 1 173 2030 0.0 0.0 0.0 -it 07_gas 1 173 2030 0.0 0.0 0.0 -it 08_non-res 1 173 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 173 2030 0.0 0.0 0.0 -it 01_solar 1 174 2030 500.0 1.0 0.0 -it 02_wind_on 1 174 2030 0.0 0.0 0.0 -it 03_wind_off 1 174 2030 0.0 0.0 0.0 -it 04_res 1 174 2030 0.0 0.0 0.0 -it 05_nuclear 1 174 2030 0.0 0.0 0.0 -it 06_coal 1 174 2030 0.0 0.0 0.0 -it 07_gas 1 174 2030 0.0 0.0 0.0 -it 08_non-res 1 174 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 174 2030 0.0 0.0 0.0 -it 01_solar 1 175 2030 600.0 1.0 0.0 -it 02_wind_on 1 175 2030 0.0 0.0 0.0 -it 03_wind_off 1 175 2030 0.0 0.0 0.0 -it 04_res 1 175 2030 0.0 0.0 0.0 -it 05_nuclear 1 175 2030 0.0 0.0 0.0 -it 06_coal 1 175 2030 0.0 0.0 0.0 -it 07_gas 1 175 2030 0.0 0.0 0.0 -it 08_non-res 1 175 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 175 2030 0.0 0.0 0.0 -it 01_solar 1 176 2030 700.0 1.0 0.0 -it 02_wind_on 1 176 2030 0.0 0.0 0.0 -it 03_wind_off 1 176 2030 0.0 0.0 0.0 -it 04_res 1 176 2030 0.0 0.0 0.0 -it 05_nuclear 1 176 2030 0.0 0.0 0.0 -it 06_coal 1 176 2030 0.0 0.0 0.0 -it 07_gas 1 176 2030 0.0 0.0 0.0 -it 08_non-res 1 176 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 176 2030 0.0 0.0 0.0 -it 01_solar 1 177 2030 800.0 1.0 0.0 -it 02_wind_on 1 177 2030 0.0 0.0 0.0 -it 03_wind_off 1 177 2030 0.0 0.0 0.0 -it 04_res 1 177 2030 0.0 0.0 0.0 -it 05_nuclear 1 177 2030 0.0 0.0 0.0 -it 06_coal 1 177 2030 0.0 0.0 0.0 -it 07_gas 1 177 2030 0.0 0.0 0.0 -it 08_non-res 1 177 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 177 2030 0.0 0.0 0.0 -it 01_solar 1 178 2030 900.0 1.0 0.0 -it 02_wind_on 1 178 2030 0.0 0.0 0.0 -it 03_wind_off 1 178 2030 0.0 0.0 0.0 -it 04_res 1 178 2030 0.0 0.0 0.0 -it 05_nuclear 1 178 2030 0.0 0.0 0.0 -it 06_coal 1 178 2030 0.0 0.0 0.0 -it 07_gas 1 178 2030 0.0 0.0 0.0 -it 08_non-res 1 178 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 178 2030 0.0 0.0 0.0 -it 01_solar 1 179 2030 1000.0 1.0 0.0 -it 02_wind_on 1 179 2030 0.0 0.0 0.0 -it 03_wind_off 1 179 2030 0.0 0.0 0.0 -it 04_res 1 179 2030 0.0 0.0 0.0 -it 05_nuclear 1 179 2030 0.0 0.0 0.0 -it 06_coal 1 179 2030 0.0 0.0 0.0 -it 07_gas 1 179 2030 0.0 0.0 0.0 -it 08_non-res 1 179 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 179 2030 0.0 0.0 0.0 -it 01_solar 1 180 2030 1100.0 1.0 0.0 -it 02_wind_on 1 180 2030 0.0 0.0 0.0 -it 03_wind_off 1 180 2030 0.0 0.0 0.0 -it 04_res 1 180 2030 0.0 0.0 0.0 -it 05_nuclear 1 180 2030 0.0 0.0 0.0 -it 06_coal 1 180 2030 0.0 0.0 0.0 -it 07_gas 1 180 2030 0.0 0.0 0.0 -it 08_non-res 1 180 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 180 2030 0.0 0.0 0.0 -it 01_solar 1 181 2030 1200.0 1.0 0.0 -it 02_wind_on 1 181 2030 0.0 0.0 0.0 -it 03_wind_off 1 181 2030 0.0 0.0 0.0 -it 04_res 1 181 2030 0.0 0.0 0.0 -it 05_nuclear 1 181 2030 0.0 0.0 0.0 -it 06_coal 1 181 2030 0.0 0.0 0.0 -it 07_gas 1 181 2030 0.0 0.0 0.0 -it 08_non-res 1 181 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 181 2030 0.0 0.0 0.0 -it 01_solar 1 182 2030 1300.0 1.0 0.0 -it 02_wind_on 1 182 2030 0.0 0.0 0.0 -it 03_wind_off 1 182 2030 0.0 0.0 0.0 -it 04_res 1 182 2030 0.0 0.0 0.0 -it 05_nuclear 1 182 2030 0.0 0.0 0.0 -it 06_coal 1 182 2030 0.0 0.0 0.0 -it 07_gas 1 182 2030 0.0 0.0 0.0 -it 08_non-res 1 182 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 182 2030 0.0 0.0 0.0 -it 01_solar 1 183 2030 1400.0 1.0 0.0 -it 02_wind_on 1 183 2030 0.0 0.0 0.0 -it 03_wind_off 1 183 2030 0.0 0.0 0.0 -it 04_res 1 183 2030 0.0 0.0 0.0 -it 05_nuclear 1 183 2030 0.0 0.0 0.0 -it 06_coal 1 183 2030 0.0 0.0 0.0 -it 07_gas 1 183 2030 0.0 0.0 0.0 -it 08_non-res 1 183 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 183 2030 0.0 0.0 0.0 -it 01_solar 1 184 2030 1500.0 1.0 0.0 -it 02_wind_on 1 184 2030 0.0 0.0 0.0 -it 03_wind_off 1 184 2030 0.0 0.0 0.0 -it 04_res 1 184 2030 0.0 0.0 0.0 -it 05_nuclear 1 184 2030 0.0 0.0 0.0 -it 06_coal 1 184 2030 0.0 0.0 0.0 -it 07_gas 1 184 2030 0.0 0.0 0.0 -it 08_non-res 1 184 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 184 2030 0.0 0.0 0.0 -it 01_solar 1 185 2030 1600.0 1.0 0.0 -it 02_wind_on 1 185 2030 0.0 0.0 0.0 -it 03_wind_off 1 185 2030 0.0 0.0 0.0 -it 04_res 1 185 2030 0.0 0.0 0.0 -it 05_nuclear 1 185 2030 0.0 0.0 0.0 -it 06_coal 1 185 2030 0.0 0.0 0.0 -it 07_gas 1 185 2030 0.0 0.0 0.0 -it 08_non-res 1 185 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 185 2030 0.0 0.0 0.0 -it 01_solar 1 186 2030 1700.0 1.0 0.0 -it 02_wind_on 1 186 2030 0.0 0.0 0.0 -it 03_wind_off 1 186 2030 0.0 0.0 0.0 -it 04_res 1 186 2030 0.0 0.0 0.0 -it 05_nuclear 1 186 2030 0.0 0.0 0.0 -it 06_coal 1 186 2030 0.0 0.0 0.0 -it 07_gas 1 186 2030 0.0 0.0 0.0 -it 08_non-res 1 186 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 186 2030 0.0 0.0 0.0 -it 01_solar 1 187 2030 1800.0 1.0 0.0 -it 02_wind_on 1 187 2030 0.0 0.0 0.0 -it 03_wind_off 1 187 2030 0.0 0.0 0.0 -it 04_res 1 187 2030 0.0 0.0 0.0 -it 05_nuclear 1 187 2030 0.0 0.0 0.0 -it 06_coal 1 187 2030 0.0 0.0 0.0 -it 07_gas 1 187 2030 0.0 0.0 0.0 -it 08_non-res 1 187 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 187 2030 0.0 0.0 0.0 -it 01_solar 1 188 2030 1900.0 1.0 0.0 -it 02_wind_on 1 188 2030 0.0 0.0 0.0 -it 03_wind_off 1 188 2030 0.0 0.0 0.0 -it 04_res 1 188 2030 0.0 0.0 0.0 -it 05_nuclear 1 188 2030 0.0 0.0 0.0 -it 06_coal 1 188 2030 0.0 0.0 0.0 -it 07_gas 1 188 2030 0.0 0.0 0.0 -it 08_non-res 1 188 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 188 2030 0.0 0.0 0.0 -it 01_solar 1 189 2030 2000.0 1.0 0.0 -it 02_wind_on 1 189 2030 0.0 0.0 0.0 -it 03_wind_off 1 189 2030 0.0 0.0 0.0 -it 04_res 1 189 2030 0.0 0.0 0.0 -it 05_nuclear 1 189 2030 0.0 0.0 0.0 -it 06_coal 1 189 2030 0.0 0.0 0.0 -it 07_gas 1 189 2030 0.0 0.0 0.0 -it 08_non-res 1 189 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 189 2030 0.0 0.0 0.0 -it 01_solar 1 190 2030 2000.0 1.0 0.0 -it 02_wind_on 1 190 2030 100.0 1.0 0.0 -it 03_wind_off 1 190 2030 0.0 0.0 0.0 -it 04_res 1 190 2030 0.0 0.0 0.0 -it 05_nuclear 1 190 2030 0.0 0.0 0.0 -it 06_coal 1 190 2030 0.0 0.0 0.0 -it 07_gas 1 190 2030 0.0 0.0 0.0 -it 08_non-res 1 190 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 190 2030 0.0 0.0 0.0 -it 01_solar 1 191 2030 2000.0 1.0 0.0 -it 02_wind_on 1 191 2030 200.0 1.0 0.0 -it 03_wind_off 1 191 2030 0.0 0.0 0.0 -it 04_res 1 191 2030 0.0 0.0 0.0 -it 05_nuclear 1 191 2030 0.0 0.0 0.0 -it 06_coal 1 191 2030 0.0 0.0 0.0 -it 07_gas 1 191 2030 0.0 0.0 0.0 -it 08_non-res 1 191 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 191 2030 0.0 0.0 0.0 -it 01_solar 1 192 2030 2000.0 1.0 0.0 -it 02_wind_on 1 192 2030 300.0 1.0 0.0 -it 03_wind_off 1 192 2030 0.0 0.0 0.0 -it 04_res 1 192 2030 0.0 0.0 0.0 -it 05_nuclear 1 192 2030 0.0 0.0 0.0 -it 06_coal 1 192 2030 0.0 0.0 0.0 -it 07_gas 1 192 2030 0.0 0.0 0.0 -it 08_non-res 1 192 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 192 2030 0.0 0.0 0.0 -it 01_solar 1 193 2030 2000.0 1.0 0.0 -it 02_wind_on 1 193 2030 400.0 1.0 0.0 -it 03_wind_off 1 193 2030 0.0 0.0 0.0 -it 04_res 1 193 2030 0.0 0.0 0.0 -it 05_nuclear 1 193 2030 0.0 0.0 0.0 -it 06_coal 1 193 2030 0.0 0.0 0.0 -it 07_gas 1 193 2030 0.0 0.0 0.0 -it 08_non-res 1 193 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 193 2030 0.0 0.0 0.0 -it 01_solar 1 194 2030 2000.0 1.0 0.0 -it 02_wind_on 1 194 2030 500.0 1.0 0.0 -it 03_wind_off 1 194 2030 0.0 0.0 0.0 -it 04_res 1 194 2030 0.0 0.0 0.0 -it 05_nuclear 1 194 2030 0.0 0.0 0.0 -it 06_coal 1 194 2030 0.0 0.0 0.0 -it 07_gas 1 194 2030 0.0 0.0 0.0 -it 08_non-res 1 194 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 194 2030 0.0 0.0 0.0 -it 01_solar 1 195 2030 2000.0 1.0 0.0 -it 02_wind_on 1 195 2030 600.0 1.0 0.0 -it 03_wind_off 1 195 2030 0.0 0.0 0.0 -it 04_res 1 195 2030 0.0 0.0 0.0 -it 05_nuclear 1 195 2030 0.0 0.0 0.0 -it 06_coal 1 195 2030 0.0 0.0 0.0 -it 07_gas 1 195 2030 0.0 0.0 0.0 -it 08_non-res 1 195 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 195 2030 0.0 0.0 0.0 -it 01_solar 1 196 2030 2000.0 1.0 0.0 -it 02_wind_on 1 196 2030 700.0 1.0 0.0 -it 03_wind_off 1 196 2030 0.0 0.0 0.0 -it 04_res 1 196 2030 0.0 0.0 0.0 -it 05_nuclear 1 196 2030 0.0 0.0 0.0 -it 06_coal 1 196 2030 0.0 0.0 0.0 -it 07_gas 1 196 2030 0.0 0.0 0.0 -it 08_non-res 1 196 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 196 2030 0.0 0.0 0.0 -it 01_solar 1 197 2030 2000.0 1.0 0.0 -it 02_wind_on 1 197 2030 800.0 1.0 0.0 -it 03_wind_off 1 197 2030 0.0 0.0 0.0 -it 04_res 1 197 2030 0.0 0.0 0.0 -it 05_nuclear 1 197 2030 0.0 0.0 0.0 -it 06_coal 1 197 2030 0.0 0.0 0.0 -it 07_gas 1 197 2030 0.0 0.0 0.0 -it 08_non-res 1 197 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 197 2030 0.0 0.0 0.0 -it 01_solar 1 198 2030 2000.0 1.0 0.0 -it 02_wind_on 1 198 2030 900.0 1.0 0.0 -it 03_wind_off 1 198 2030 0.0 0.0 0.0 -it 04_res 1 198 2030 0.0 0.0 0.0 -it 05_nuclear 1 198 2030 0.0 0.0 0.0 -it 06_coal 1 198 2030 0.0 0.0 0.0 -it 07_gas 1 198 2030 0.0 0.0 0.0 -it 08_non-res 1 198 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 198 2030 0.0 0.0 0.0 -it 01_solar 1 199 2030 2000.0 1.0 0.0 -it 02_wind_on 1 199 2030 1000.0 1.0 0.0 -it 03_wind_off 1 199 2030 0.0 0.0 0.0 -it 04_res 1 199 2030 0.0 0.0 0.0 -it 05_nuclear 1 199 2030 0.0 0.0 0.0 -it 06_coal 1 199 2030 0.0 0.0 0.0 -it 07_gas 1 199 2030 0.0 0.0 0.0 -it 08_non-res 1 199 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 199 2030 0.0 0.0 0.0 -it 01_solar 1 200 2030 2000.0 1.0 0.0 -it 02_wind_on 1 200 2030 1100.0 1.0 0.0 -it 03_wind_off 1 200 2030 0.0 0.0 0.0 -it 04_res 1 200 2030 0.0 0.0 0.0 -it 05_nuclear 1 200 2030 0.0 0.0 0.0 -it 06_coal 1 200 2030 0.0 0.0 0.0 -it 07_gas 1 200 2030 0.0 0.0 0.0 -it 08_non-res 1 200 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 200 2030 0.0 0.0 0.0 -it 01_solar 1 201 2030 2000.0 1.0 0.0 -it 02_wind_on 1 201 2030 1200.0 1.0 0.0 -it 03_wind_off 1 201 2030 0.0 0.0 0.0 -it 04_res 1 201 2030 0.0 0.0 0.0 -it 05_nuclear 1 201 2030 0.0 0.0 0.0 -it 06_coal 1 201 2030 0.0 0.0 0.0 -it 07_gas 1 201 2030 0.0 0.0 0.0 -it 08_non-res 1 201 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 201 2030 0.0 0.0 0.0 -it 01_solar 1 202 2030 2000.0 1.0 0.0 -it 02_wind_on 1 202 2030 1300.0 1.0 0.0 -it 03_wind_off 1 202 2030 0.0 0.0 0.0 -it 04_res 1 202 2030 0.0 0.0 0.0 -it 05_nuclear 1 202 2030 0.0 0.0 0.0 -it 06_coal 1 202 2030 0.0 0.0 0.0 -it 07_gas 1 202 2030 0.0 0.0 0.0 -it 08_non-res 1 202 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 202 2030 0.0 0.0 0.0 -it 01_solar 1 203 2030 2000.0 1.0 0.0 -it 02_wind_on 1 203 2030 1400.0 1.0 0.0 -it 03_wind_off 1 203 2030 0.0 0.0 0.0 -it 04_res 1 203 2030 0.0 0.0 0.0 -it 05_nuclear 1 203 2030 0.0 0.0 0.0 -it 06_coal 1 203 2030 0.0 0.0 0.0 -it 07_gas 1 203 2030 0.0 0.0 0.0 -it 08_non-res 1 203 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 203 2030 0.0 0.0 0.0 -it 01_solar 1 204 2030 2000.0 1.0 0.0 -it 02_wind_on 1 204 2030 1500.0 1.0 0.0 -it 03_wind_off 1 204 2030 0.0 0.0 0.0 -it 04_res 1 204 2030 0.0 0.0 0.0 -it 05_nuclear 1 204 2030 0.0 0.0 0.0 -it 06_coal 1 204 2030 0.0 0.0 0.0 -it 07_gas 1 204 2030 0.0 0.0 0.0 -it 08_non-res 1 204 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 204 2030 0.0 0.0 0.0 -it 01_solar 1 205 2030 2000.0 1.0 0.0 -it 02_wind_on 1 205 2030 1600.0 1.0 0.0 -it 03_wind_off 1 205 2030 0.0 0.0 0.0 -it 04_res 1 205 2030 0.0 0.0 0.0 -it 05_nuclear 1 205 2030 0.0 0.0 0.0 -it 06_coal 1 205 2030 0.0 0.0 0.0 -it 07_gas 1 205 2030 0.0 0.0 0.0 -it 08_non-res 1 205 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 205 2030 0.0 0.0 0.0 -it 01_solar 1 206 2030 2000.0 1.0 0.0 -it 02_wind_on 1 206 2030 1700.0 1.0 0.0 -it 03_wind_off 1 206 2030 0.0 0.0 0.0 -it 04_res 1 206 2030 0.0 0.0 0.0 -it 05_nuclear 1 206 2030 0.0 0.0 0.0 -it 06_coal 1 206 2030 0.0 0.0 0.0 -it 07_gas 1 206 2030 0.0 0.0 0.0 -it 08_non-res 1 206 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 206 2030 0.0 0.0 0.0 -it 01_solar 1 207 2030 2000.0 1.0 0.0 -it 02_wind_on 1 207 2030 1800.0 1.0 0.0 -it 03_wind_off 1 207 2030 0.0 0.0 0.0 -it 04_res 1 207 2030 0.0 0.0 0.0 -it 05_nuclear 1 207 2030 0.0 0.0 0.0 -it 06_coal 1 207 2030 0.0 0.0 0.0 -it 07_gas 1 207 2030 0.0 0.0 0.0 -it 08_non-res 1 207 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 207 2030 0.0 0.0 0.0 -it 01_solar 1 208 2030 2000.0 1.0 0.0 -it 02_wind_on 1 208 2030 1900.0 1.0 0.0 -it 03_wind_off 1 208 2030 0.0 0.0 0.0 -it 04_res 1 208 2030 0.0 0.0 0.0 -it 05_nuclear 1 208 2030 0.0 0.0 0.0 -it 06_coal 1 208 2030 0.0 0.0 0.0 -it 07_gas 1 208 2030 0.0 0.0 0.0 -it 08_non-res 1 208 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 208 2030 0.0 0.0 0.0 -it 01_solar 1 209 2030 2000.0 1.0 0.0 -it 02_wind_on 1 209 2030 2000.0 1.0 0.0 -it 03_wind_off 1 209 2030 0.0 0.0 0.0 -it 04_res 1 209 2030 0.0 0.0 0.0 -it 05_nuclear 1 209 2030 0.0 0.0 0.0 -it 06_coal 1 209 2030 0.0 0.0 0.0 -it 07_gas 1 209 2030 0.0 0.0 0.0 -it 08_non-res 1 209 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 209 2030 0.0 0.0 0.0 -it 01_solar 1 210 2030 2000.0 1.0 0.0 -it 02_wind_on 1 210 2030 2000.0 1.0 0.0 -it 03_wind_off 1 210 2030 100.0 1.0 0.0 -it 04_res 1 210 2030 0.0 0.0 0.0 -it 05_nuclear 1 210 2030 0.0 0.0 0.0 -it 06_coal 1 210 2030 0.0 0.0 0.0 -it 07_gas 1 210 2030 0.0 0.0 0.0 -it 08_non-res 1 210 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 210 2030 0.0 0.0 0.0 -it 01_solar 1 211 2030 2000.0 1.0 0.0 -it 02_wind_on 1 211 2030 2000.0 1.0 0.0 -it 03_wind_off 1 211 2030 200.0 1.0 0.0 -it 04_res 1 211 2030 0.0 0.0 0.0 -it 05_nuclear 1 211 2030 0.0 0.0 0.0 -it 06_coal 1 211 2030 0.0 0.0 0.0 -it 07_gas 1 211 2030 0.0 0.0 0.0 -it 08_non-res 1 211 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 211 2030 0.0 0.0 0.0 -it 01_solar 1 212 2030 2000.0 1.0 0.0 -it 02_wind_on 1 212 2030 2000.0 1.0 0.0 -it 03_wind_off 1 212 2030 300.0 1.0 0.0 -it 04_res 1 212 2030 0.0 0.0 0.0 -it 05_nuclear 1 212 2030 0.0 0.0 0.0 -it 06_coal 1 212 2030 0.0 0.0 0.0 -it 07_gas 1 212 2030 0.0 0.0 0.0 -it 08_non-res 1 212 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 212 2030 0.0 0.0 0.0 -it 01_solar 1 213 2030 2000.0 1.0 0.0 -it 02_wind_on 1 213 2030 2000.0 1.0 0.0 -it 03_wind_off 1 213 2030 400.0 1.0 0.0 -it 04_res 1 213 2030 0.0 0.0 0.0 -it 05_nuclear 1 213 2030 0.0 0.0 0.0 -it 06_coal 1 213 2030 0.0 0.0 0.0 -it 07_gas 1 213 2030 0.0 0.0 0.0 -it 08_non-res 1 213 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 213 2030 0.0 0.0 0.0 -it 01_solar 1 214 2030 2000.0 1.0 0.0 -it 02_wind_on 1 214 2030 2000.0 1.0 0.0 -it 03_wind_off 1 214 2030 500.0 1.0 0.0 -it 04_res 1 214 2030 0.0 0.0 0.0 -it 05_nuclear 1 214 2030 0.0 0.0 0.0 -it 06_coal 1 214 2030 0.0 0.0 0.0 -it 07_gas 1 214 2030 0.0 0.0 0.0 -it 08_non-res 1 214 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 214 2030 0.0 0.0 0.0 -it 01_solar 1 215 2030 2000.0 1.0 0.0 -it 02_wind_on 1 215 2030 2000.0 1.0 0.0 -it 03_wind_off 1 215 2030 600.0 1.0 0.0 -it 04_res 1 215 2030 0.0 0.0 0.0 -it 05_nuclear 1 215 2030 0.0 0.0 0.0 -it 06_coal 1 215 2030 0.0 0.0 0.0 -it 07_gas 1 215 2030 0.0 0.0 0.0 -it 08_non-res 1 215 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 215 2030 0.0 0.0 0.0 -it 01_solar 1 216 2030 2000.0 1.0 0.0 -it 02_wind_on 1 216 2030 2000.0 1.0 0.0 -it 03_wind_off 1 216 2030 700.0 1.0 0.0 -it 04_res 1 216 2030 0.0 0.0 0.0 -it 05_nuclear 1 216 2030 0.0 0.0 0.0 -it 06_coal 1 216 2030 0.0 0.0 0.0 -it 07_gas 1 216 2030 0.0 0.0 0.0 -it 08_non-res 1 216 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 216 2030 0.0 0.0 0.0 -it 01_solar 1 217 2030 2000.0 1.0 0.0 -it 02_wind_on 1 217 2030 2000.0 1.0 0.0 -it 03_wind_off 1 217 2030 800.0 1.0 0.0 -it 04_res 1 217 2030 0.0 0.0 0.0 -it 05_nuclear 1 217 2030 0.0 0.0 0.0 -it 06_coal 1 217 2030 0.0 0.0 0.0 -it 07_gas 1 217 2030 0.0 0.0 0.0 -it 08_non-res 1 217 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 217 2030 0.0 0.0 0.0 -it 01_solar 1 218 2030 2000.0 1.0 0.0 -it 02_wind_on 1 218 2030 2000.0 1.0 0.0 -it 03_wind_off 1 218 2030 900.0 1.0 0.0 -it 04_res 1 218 2030 0.0 0.0 0.0 -it 05_nuclear 1 218 2030 0.0 0.0 0.0 -it 06_coal 1 218 2030 0.0 0.0 0.0 -it 07_gas 1 218 2030 0.0 0.0 0.0 -it 08_non-res 1 218 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 218 2030 0.0 0.0 0.0 -it 01_solar 1 219 2030 2000.0 1.0 0.0 -it 02_wind_on 1 219 2030 2000.0 1.0 0.0 -it 03_wind_off 1 219 2030 1000.0 1.0 0.0 -it 04_res 1 219 2030 0.0 0.0 0.0 -it 05_nuclear 1 219 2030 0.0 0.0 0.0 -it 06_coal 1 219 2030 0.0 0.0 0.0 -it 07_gas 1 219 2030 0.0 0.0 0.0 -it 08_non-res 1 219 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 219 2030 0.0 0.0 0.0 -it 01_solar 1 220 2030 2000.0 1.0 0.0 -it 02_wind_on 1 220 2030 2000.0 1.0 0.0 -it 03_wind_off 1 220 2030 1100.0 1.0 0.0 -it 04_res 1 220 2030 0.0 0.0 0.0 -it 05_nuclear 1 220 2030 0.0 0.0 0.0 -it 06_coal 1 220 2030 0.0 0.0 0.0 -it 07_gas 1 220 2030 0.0 0.0 0.0 -it 08_non-res 1 220 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 220 2030 0.0 0.0 0.0 -it 01_solar 1 221 2030 2000.0 1.0 0.0 -it 02_wind_on 1 221 2030 2000.0 1.0 0.0 -it 03_wind_off 1 221 2030 1200.0 1.0 0.0 -it 04_res 1 221 2030 0.0 0.0 0.0 -it 05_nuclear 1 221 2030 0.0 0.0 0.0 -it 06_coal 1 221 2030 0.0 0.0 0.0 -it 07_gas 1 221 2030 0.0 0.0 0.0 -it 08_non-res 1 221 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 221 2030 0.0 0.0 0.0 -it 01_solar 1 222 2030 2000.0 1.0 0.0 -it 02_wind_on 1 222 2030 2000.0 1.0 0.0 -it 03_wind_off 1 222 2030 1300.0 1.0 0.0 -it 04_res 1 222 2030 0.0 0.0 0.0 -it 05_nuclear 1 222 2030 0.0 0.0 0.0 -it 06_coal 1 222 2030 0.0 0.0 0.0 -it 07_gas 1 222 2030 0.0 0.0 0.0 -it 08_non-res 1 222 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 222 2030 0.0 0.0 0.0 -it 01_solar 1 223 2030 2000.0 1.0 0.0 -it 02_wind_on 1 223 2030 2000.0 1.0 0.0 -it 03_wind_off 1 223 2030 1400.0 1.0 0.0 -it 04_res 1 223 2030 0.0 0.0 0.0 -it 05_nuclear 1 223 2030 0.0 0.0 0.0 -it 06_coal 1 223 2030 0.0 0.0 0.0 -it 07_gas 1 223 2030 0.0 0.0 0.0 -it 08_non-res 1 223 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 223 2030 0.0 0.0 0.0 -it 01_solar 1 224 2030 2000.0 1.0 0.0 -it 02_wind_on 1 224 2030 2000.0 1.0 0.0 -it 03_wind_off 1 224 2030 1500.0 1.0 0.0 -it 04_res 1 224 2030 0.0 0.0 0.0 -it 05_nuclear 1 224 2030 0.0 0.0 0.0 -it 06_coal 1 224 2030 0.0 0.0 0.0 -it 07_gas 1 224 2030 0.0 0.0 0.0 -it 08_non-res 1 224 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 224 2030 0.0 0.0 0.0 -it 01_solar 1 225 2030 2000.0 1.0 0.0 -it 02_wind_on 1 225 2030 2000.0 1.0 0.0 -it 03_wind_off 1 225 2030 1600.0 1.0 0.0 -it 04_res 1 225 2030 0.0 0.0 0.0 -it 05_nuclear 1 225 2030 0.0 0.0 0.0 -it 06_coal 1 225 2030 0.0 0.0 0.0 -it 07_gas 1 225 2030 0.0 0.0 0.0 -it 08_non-res 1 225 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 225 2030 0.0 0.0 0.0 -it 01_solar 1 226 2030 2000.0 1.0 0.0 -it 02_wind_on 1 226 2030 2000.0 1.0 0.0 -it 03_wind_off 1 226 2030 1700.0 1.0 0.0 -it 04_res 1 226 2030 0.0 0.0 0.0 -it 05_nuclear 1 226 2030 0.0 0.0 0.0 -it 06_coal 1 226 2030 0.0 0.0 0.0 -it 07_gas 1 226 2030 0.0 0.0 0.0 -it 08_non-res 1 226 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 226 2030 0.0 0.0 0.0 -it 01_solar 1 227 2030 2000.0 1.0 0.0 -it 02_wind_on 1 227 2030 2000.0 1.0 0.0 -it 03_wind_off 1 227 2030 1800.0 1.0 0.0 -it 04_res 1 227 2030 0.0 0.0 0.0 -it 05_nuclear 1 227 2030 0.0 0.0 0.0 -it 06_coal 1 227 2030 0.0 0.0 0.0 -it 07_gas 1 227 2030 0.0 0.0 0.0 -it 08_non-res 1 227 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 227 2030 0.0 0.0 0.0 -it 01_solar 1 228 2030 2000.0 1.0 0.0 -it 02_wind_on 1 228 2030 2000.0 1.0 0.0 -it 03_wind_off 1 228 2030 1900.0 1.0 0.0 -it 04_res 1 228 2030 0.0 0.0 0.0 -it 05_nuclear 1 228 2030 0.0 0.0 0.0 -it 06_coal 1 228 2030 0.0 0.0 0.0 -it 07_gas 1 228 2030 0.0 0.0 0.0 -it 08_non-res 1 228 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 228 2030 0.0 0.0 0.0 -it 01_solar 1 229 2030 2000.0 1.0 0.0 -it 02_wind_on 1 229 2030 2000.0 1.0 0.0 -it 03_wind_off 1 229 2030 2000.0 1.0 0.0 -it 04_res 1 229 2030 0.0 0.0 0.0 -it 05_nuclear 1 229 2030 0.0 0.0 0.0 -it 06_coal 1 229 2030 0.0 0.0 0.0 -it 07_gas 1 229 2030 0.0 0.0 0.0 -it 08_non-res 1 229 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 229 2030 0.0 0.0 0.0 -it 01_solar 1 230 2030 2000.0 1.0 0.0 -it 02_wind_on 1 230 2030 2000.0 1.0 0.0 -it 03_wind_off 1 230 2030 2000.0 1.0 0.0 -it 04_res 1 230 2030 100.0 1.0 0.0 -it 05_nuclear 1 230 2030 0.0 0.0 0.0 -it 06_coal 1 230 2030 0.0 0.0 0.0 -it 07_gas 1 230 2030 0.0 0.0 0.0 -it 08_non-res 1 230 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 230 2030 0.0 0.0 0.0 -it 01_solar 1 231 2030 2000.0 1.0 0.0 -it 02_wind_on 1 231 2030 2000.0 1.0 0.0 -it 03_wind_off 1 231 2030 2000.0 1.0 0.0 -it 04_res 1 231 2030 200.0 1.0 0.0 -it 05_nuclear 1 231 2030 0.0 0.0 0.0 -it 06_coal 1 231 2030 0.0 0.0 0.0 -it 07_gas 1 231 2030 0.0 0.0 0.0 -it 08_non-res 1 231 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 231 2030 0.0 0.0 0.0 -it 01_solar 1 232 2030 2000.0 1.0 0.0 -it 02_wind_on 1 232 2030 2000.0 1.0 0.0 -it 03_wind_off 1 232 2030 2000.0 1.0 0.0 -it 04_res 1 232 2030 300.0 1.0 0.0 -it 05_nuclear 1 232 2030 0.0 0.0 0.0 -it 06_coal 1 232 2030 0.0 0.0 0.0 -it 07_gas 1 232 2030 0.0 0.0 0.0 -it 08_non-res 1 232 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 232 2030 0.0 0.0 0.0 -it 01_solar 1 233 2030 2000.0 1.0 0.0 -it 02_wind_on 1 233 2030 2000.0 1.0 0.0 -it 03_wind_off 1 233 2030 2000.0 1.0 0.0 -it 04_res 1 233 2030 400.0 1.0 0.0 -it 05_nuclear 1 233 2030 0.0 0.0 0.0 -it 06_coal 1 233 2030 0.0 0.0 0.0 -it 07_gas 1 233 2030 0.0 0.0 0.0 -it 08_non-res 1 233 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 233 2030 0.0 0.0 0.0 -it 01_solar 1 234 2030 2000.0 1.0 0.0 -it 02_wind_on 1 234 2030 2000.0 1.0 0.0 -it 03_wind_off 1 234 2030 2000.0 1.0 0.0 -it 04_res 1 234 2030 500.0 1.0 0.0 -it 05_nuclear 1 234 2030 0.0 0.0 0.0 -it 06_coal 1 234 2030 0.0 0.0 0.0 -it 07_gas 1 234 2030 0.0 0.0 0.0 -it 08_non-res 1 234 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 234 2030 0.0 0.0 0.0 -it 01_solar 1 235 2030 2000.0 1.0 0.0 -it 02_wind_on 1 235 2030 2000.0 1.0 0.0 -it 03_wind_off 1 235 2030 2000.0 1.0 0.0 -it 04_res 1 235 2030 600.0 1.0 0.0 -it 05_nuclear 1 235 2030 0.0 0.0 0.0 -it 06_coal 1 235 2030 0.0 0.0 0.0 -it 07_gas 1 235 2030 0.0 0.0 0.0 -it 08_non-res 1 235 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 235 2030 0.0 0.0 0.0 -it 01_solar 1 236 2030 2000.0 1.0 0.0 -it 02_wind_on 1 236 2030 2000.0 1.0 0.0 -it 03_wind_off 1 236 2030 2000.0 1.0 0.0 -it 04_res 1 236 2030 700.0 1.0 0.0 -it 05_nuclear 1 236 2030 0.0 0.0 0.0 -it 06_coal 1 236 2030 0.0 0.0 0.0 -it 07_gas 1 236 2030 0.0 0.0 0.0 -it 08_non-res 1 236 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 236 2030 0.0 0.0 0.0 -it 01_solar 1 237 2030 2000.0 1.0 0.0 -it 02_wind_on 1 237 2030 2000.0 1.0 0.0 -it 03_wind_off 1 237 2030 2000.0 1.0 0.0 -it 04_res 1 237 2030 800.0 1.0 0.0 -it 05_nuclear 1 237 2030 0.0 0.0 0.0 -it 06_coal 1 237 2030 0.0 0.0 0.0 -it 07_gas 1 237 2030 0.0 0.0 0.0 -it 08_non-res 1 237 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 237 2030 0.0 0.0 0.0 -it 01_solar 1 238 2030 2000.0 1.0 0.0 -it 02_wind_on 1 238 2030 2000.0 1.0 0.0 -it 03_wind_off 1 238 2030 2000.0 1.0 0.0 -it 04_res 1 238 2030 900.0 1.0 0.0 -it 05_nuclear 1 238 2030 0.0 0.0 0.0 -it 06_coal 1 238 2030 0.0 0.0 0.0 -it 07_gas 1 238 2030 0.0 0.0 0.0 -it 08_non-res 1 238 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 238 2030 0.0 0.0 0.0 -it 01_solar 1 239 2030 2000.0 1.0 0.0 -it 02_wind_on 1 239 2030 2000.0 1.0 0.0 -it 03_wind_off 1 239 2030 2000.0 1.0 0.0 -it 04_res 1 239 2030 1000.0 1.0 0.0 -it 05_nuclear 1 239 2030 0.0 0.0 0.0 -it 06_coal 1 239 2030 0.0 0.0 0.0 -it 07_gas 1 239 2030 0.0 0.0 0.0 -it 08_non-res 1 239 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 239 2030 0.0 0.0 0.0 -it 01_solar 1 240 2030 2000.0 1.0 0.0 -it 02_wind_on 1 240 2030 2000.0 1.0 0.0 -it 03_wind_off 1 240 2030 2000.0 1.0 0.0 -it 04_res 1 240 2030 1100.0 1.0 0.0 -it 05_nuclear 1 240 2030 0.0 0.0 0.0 -it 06_coal 1 240 2030 0.0 0.0 0.0 -it 07_gas 1 240 2030 0.0 0.0 0.0 -it 08_non-res 1 240 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 240 2030 0.0 0.0 0.0 -it 01_solar 1 241 2030 2000.0 1.0 0.0 -it 02_wind_on 1 241 2030 2000.0 1.0 0.0 -it 03_wind_off 1 241 2030 2000.0 1.0 0.0 -it 04_res 1 241 2030 1200.0 1.0 0.0 -it 05_nuclear 1 241 2030 0.0 0.0 0.0 -it 06_coal 1 241 2030 0.0 0.0 0.0 -it 07_gas 1 241 2030 0.0 0.0 0.0 -it 08_non-res 1 241 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 241 2030 0.0 0.0 0.0 -it 01_solar 1 242 2030 2000.0 1.0 0.0 -it 02_wind_on 1 242 2030 2000.0 1.0 0.0 -it 03_wind_off 1 242 2030 2000.0 1.0 0.0 -it 04_res 1 242 2030 1300.0 1.0 0.0 -it 05_nuclear 1 242 2030 0.0 0.0 0.0 -it 06_coal 1 242 2030 0.0 0.0 0.0 -it 07_gas 1 242 2030 0.0 0.0 0.0 -it 08_non-res 1 242 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 242 2030 0.0 0.0 0.0 -it 01_solar 1 243 2030 2000.0 1.0 0.0 -it 02_wind_on 1 243 2030 2000.0 1.0 0.0 -it 03_wind_off 1 243 2030 2000.0 1.0 0.0 -it 04_res 1 243 2030 1400.0 1.0 0.0 -it 05_nuclear 1 243 2030 0.0 0.0 0.0 -it 06_coal 1 243 2030 0.0 0.0 0.0 -it 07_gas 1 243 2030 0.0 0.0 0.0 -it 08_non-res 1 243 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 243 2030 0.0 0.0 0.0 -it 01_solar 1 244 2030 2000.0 1.0 0.0 -it 02_wind_on 1 244 2030 2000.0 1.0 0.0 -it 03_wind_off 1 244 2030 2000.0 1.0 0.0 -it 04_res 1 244 2030 1500.0 1.0 0.0 -it 05_nuclear 1 244 2030 0.0 0.0 0.0 -it 06_coal 1 244 2030 0.0 0.0 0.0 -it 07_gas 1 244 2030 0.0 0.0 0.0 -it 08_non-res 1 244 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 244 2030 0.0 0.0 0.0 -it 01_solar 1 245 2030 2000.0 1.0 0.0 -it 02_wind_on 1 245 2030 2000.0 1.0 0.0 -it 03_wind_off 1 245 2030 2000.0 1.0 0.0 -it 04_res 1 245 2030 1600.0 1.0 0.0 -it 05_nuclear 1 245 2030 0.0 0.0 0.0 -it 06_coal 1 245 2030 0.0 0.0 0.0 -it 07_gas 1 245 2030 0.0 0.0 0.0 -it 08_non-res 1 245 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 245 2030 0.0 0.0 0.0 -it 01_solar 1 246 2030 2000.0 1.0 0.0 -it 02_wind_on 1 246 2030 2000.0 1.0 0.0 -it 03_wind_off 1 246 2030 2000.0 1.0 0.0 -it 04_res 1 246 2030 1700.0 1.0 0.0 -it 05_nuclear 1 246 2030 0.0 0.0 0.0 -it 06_coal 1 246 2030 0.0 0.0 0.0 -it 07_gas 1 246 2030 0.0 0.0 0.0 -it 08_non-res 1 246 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 246 2030 0.0 0.0 0.0 -it 01_solar 1 247 2030 2000.0 1.0 0.0 -it 02_wind_on 1 247 2030 2000.0 1.0 0.0 -it 03_wind_off 1 247 2030 2000.0 1.0 0.0 -it 04_res 1 247 2030 1800.0 1.0 0.0 -it 05_nuclear 1 247 2030 0.0 0.0 0.0 -it 06_coal 1 247 2030 0.0 0.0 0.0 -it 07_gas 1 247 2030 0.0 0.0 0.0 -it 08_non-res 1 247 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 247 2030 0.0 0.0 0.0 -it 01_solar 1 248 2030 2000.0 1.0 0.0 -it 02_wind_on 1 248 2030 2000.0 1.0 0.0 -it 03_wind_off 1 248 2030 2000.0 1.0 0.0 -it 04_res 1 248 2030 1900.0 1.0 0.0 -it 05_nuclear 1 248 2030 0.0 0.0 0.0 -it 06_coal 1 248 2030 0.0 0.0 0.0 -it 07_gas 1 248 2030 0.0 0.0 0.0 -it 08_non-res 1 248 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 248 2030 0.0 0.0 0.0 -it 01_solar 1 249 2030 2000.0 1.0 0.0 -it 02_wind_on 1 249 2030 2000.0 1.0 0.0 -it 03_wind_off 1 249 2030 2000.0 1.0 0.0 -it 04_res 1 249 2030 2000.0 1.0 0.0 -it 05_nuclear 1 249 2030 0.0 0.0 0.0 -it 06_coal 1 249 2030 0.0 0.0 0.0 -it 07_gas 1 249 2030 0.0 0.0 0.0 -it 08_non-res 1 249 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 249 2030 0.0 0.0 0.0 -it 01_solar 1 250 2030 2000.0 1.0 0.0 -it 02_wind_on 1 250 2030 2000.0 1.0 0.0 -it 03_wind_off 1 250 2030 2000.0 1.0 0.0 -it 04_res 1 250 2030 2000.0 1.0 0.0 -it 05_nuclear 1 250 2030 100.0 1.0 0.0 -it 06_coal 1 250 2030 0.0 0.0 0.0 -it 07_gas 1 250 2030 0.0 0.0 0.0 -it 08_non-res 1 250 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 250 2030 0.0 0.0 0.0 -it 01_solar 1 251 2030 2000.0 1.0 0.0 -it 02_wind_on 1 251 2030 2000.0 1.0 0.0 -it 03_wind_off 1 251 2030 2000.0 1.0 0.0 -it 04_res 1 251 2030 2000.0 1.0 0.0 -it 05_nuclear 1 251 2030 200.0 1.0 0.0 -it 06_coal 1 251 2030 0.0 0.0 0.0 -it 07_gas 1 251 2030 0.0 0.0 0.0 -it 08_non-res 1 251 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 251 2030 0.0 0.0 0.0 -it 01_solar 1 252 2030 2000.0 1.0 0.0 -it 02_wind_on 1 252 2030 2000.0 1.0 0.0 -it 03_wind_off 1 252 2030 2000.0 1.0 0.0 -it 04_res 1 252 2030 2000.0 1.0 0.0 -it 05_nuclear 1 252 2030 300.0 1.0 0.0 -it 06_coal 1 252 2030 0.0 0.0 0.0 -it 07_gas 1 252 2030 0.0 0.0 0.0 -it 08_non-res 1 252 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 252 2030 0.0 0.0 0.0 -it 01_solar 1 253 2030 2000.0 1.0 0.0 -it 02_wind_on 1 253 2030 2000.0 1.0 0.0 -it 03_wind_off 1 253 2030 2000.0 1.0 0.0 -it 04_res 1 253 2030 2000.0 1.0 0.0 -it 05_nuclear 1 253 2030 400.0 1.0 0.0 -it 06_coal 1 253 2030 0.0 0.0 0.0 -it 07_gas 1 253 2030 0.0 0.0 0.0 -it 08_non-res 1 253 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 253 2030 0.0 0.0 0.0 -it 01_solar 1 254 2030 2000.0 1.0 0.0 -it 02_wind_on 1 254 2030 2000.0 1.0 0.0 -it 03_wind_off 1 254 2030 2000.0 1.0 0.0 -it 04_res 1 254 2030 2000.0 1.0 0.0 -it 05_nuclear 1 254 2030 500.0 1.0 0.0 -it 06_coal 1 254 2030 0.0 0.0 0.0 -it 07_gas 1 254 2030 0.0 0.0 0.0 -it 08_non-res 1 254 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 254 2030 0.0 0.0 0.0 -it 01_solar 1 255 2030 2000.0 1.0 0.0 -it 02_wind_on 1 255 2030 2000.0 1.0 0.0 -it 03_wind_off 1 255 2030 2000.0 1.0 0.0 -it 04_res 1 255 2030 2000.0 1.0 0.0 -it 05_nuclear 1 255 2030 600.0 1.0 0.0 -it 06_coal 1 255 2030 0.0 0.0 0.0 -it 07_gas 1 255 2030 0.0 0.0 0.0 -it 08_non-res 1 255 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 255 2030 0.0 0.0 0.0 -it 01_solar 1 256 2030 2000.0 1.0 0.0 -it 02_wind_on 1 256 2030 2000.0 1.0 0.0 -it 03_wind_off 1 256 2030 2000.0 1.0 0.0 -it 04_res 1 256 2030 2000.0 1.0 0.0 -it 05_nuclear 1 256 2030 700.0 1.0 0.0 -it 06_coal 1 256 2030 0.0 0.0 0.0 -it 07_gas 1 256 2030 0.0 0.0 0.0 -it 08_non-res 1 256 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 256 2030 0.0 0.0 0.0 -it 01_solar 1 257 2030 2000.0 1.0 0.0 -it 02_wind_on 1 257 2030 2000.0 1.0 0.0 -it 03_wind_off 1 257 2030 2000.0 1.0 0.0 -it 04_res 1 257 2030 2000.0 1.0 0.0 -it 05_nuclear 1 257 2030 800.0 1.0 0.0 -it 06_coal 1 257 2030 0.0 0.0 0.0 -it 07_gas 1 257 2030 0.0 0.0 0.0 -it 08_non-res 1 257 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 257 2030 0.0 0.0 0.0 -it 01_solar 1 258 2030 2000.0 1.0 0.0 -it 02_wind_on 1 258 2030 2000.0 1.0 0.0 -it 03_wind_off 1 258 2030 2000.0 1.0 0.0 -it 04_res 1 258 2030 2000.0 1.0 0.0 -it 05_nuclear 1 258 2030 900.0 1.0 0.0 -it 06_coal 1 258 2030 0.0 0.0 0.0 -it 07_gas 1 258 2030 0.0 0.0 0.0 -it 08_non-res 1 258 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 258 2030 0.0 0.0 0.0 -it 01_solar 1 259 2030 2000.0 1.0 0.0 -it 02_wind_on 1 259 2030 2000.0 1.0 0.0 -it 03_wind_off 1 259 2030 2000.0 1.0 0.0 -it 04_res 1 259 2030 2000.0 1.0 0.0 -it 05_nuclear 1 259 2030 1000.0 1.0 0.0 -it 06_coal 1 259 2030 0.0 0.0 0.0 -it 07_gas 1 259 2030 0.0 0.0 0.0 -it 08_non-res 1 259 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 259 2030 0.0 0.0 0.0 -it 01_solar 1 260 2030 2000.0 1.0 0.0 -it 02_wind_on 1 260 2030 2000.0 1.0 0.0 -it 03_wind_off 1 260 2030 2000.0 1.0 0.0 -it 04_res 1 260 2030 2000.0 1.0 0.0 -it 05_nuclear 1 260 2030 1100.0 1.0 0.0 -it 06_coal 1 260 2030 0.0 0.0 0.0 -it 07_gas 1 260 2030 0.0 0.0 0.0 -it 08_non-res 1 260 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 260 2030 0.0 0.0 0.0 -it 01_solar 1 261 2030 2000.0 1.0 0.0 -it 02_wind_on 1 261 2030 2000.0 1.0 0.0 -it 03_wind_off 1 261 2030 2000.0 1.0 0.0 -it 04_res 1 261 2030 2000.0 1.0 0.0 -it 05_nuclear 1 261 2030 1200.0 1.0 0.0 -it 06_coal 1 261 2030 0.0 0.0 0.0 -it 07_gas 1 261 2030 0.0 0.0 0.0 -it 08_non-res 1 261 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 261 2030 0.0 0.0 0.0 -it 01_solar 1 262 2030 2000.0 1.0 0.0 -it 02_wind_on 1 262 2030 2000.0 1.0 0.0 -it 03_wind_off 1 262 2030 2000.0 1.0 0.0 -it 04_res 1 262 2030 2000.0 1.0 0.0 -it 05_nuclear 1 262 2030 1300.0 1.0 0.0 -it 06_coal 1 262 2030 0.0 0.0 0.0 -it 07_gas 1 262 2030 0.0 0.0 0.0 -it 08_non-res 1 262 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 262 2030 0.0 0.0 0.0 -it 01_solar 1 263 2030 2000.0 1.0 0.0 -it 02_wind_on 1 263 2030 2000.0 1.0 0.0 -it 03_wind_off 1 263 2030 2000.0 1.0 0.0 -it 04_res 1 263 2030 2000.0 1.0 0.0 -it 05_nuclear 1 263 2030 1400.0 1.0 0.0 -it 06_coal 1 263 2030 0.0 0.0 0.0 -it 07_gas 1 263 2030 0.0 0.0 0.0 -it 08_non-res 1 263 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 263 2030 0.0 0.0 0.0 -it 01_solar 1 264 2030 2000.0 1.0 0.0 -it 02_wind_on 1 264 2030 2000.0 1.0 0.0 -it 03_wind_off 1 264 2030 2000.0 1.0 0.0 -it 04_res 1 264 2030 2000.0 1.0 0.0 -it 05_nuclear 1 264 2030 1500.0 1.0 0.0 -it 06_coal 1 264 2030 0.0 0.0 0.0 -it 07_gas 1 264 2030 0.0 0.0 0.0 -it 08_non-res 1 264 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 264 2030 0.0 0.0 0.0 -it 01_solar 1 265 2030 2000.0 1.0 0.0 -it 02_wind_on 1 265 2030 2000.0 1.0 0.0 -it 03_wind_off 1 265 2030 2000.0 1.0 0.0 -it 04_res 1 265 2030 2000.0 1.0 0.0 -it 05_nuclear 1 265 2030 1600.0 1.0 0.0 -it 06_coal 1 265 2030 0.0 0.0 0.0 -it 07_gas 1 265 2030 0.0 0.0 0.0 -it 08_non-res 1 265 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 265 2030 0.0 0.0 0.0 -it 01_solar 1 266 2030 2000.0 1.0 0.0 -it 02_wind_on 1 266 2030 2000.0 1.0 0.0 -it 03_wind_off 1 266 2030 2000.0 1.0 0.0 -it 04_res 1 266 2030 2000.0 1.0 0.0 -it 05_nuclear 1 266 2030 1700.0 1.0 0.0 -it 06_coal 1 266 2030 0.0 0.0 0.0 -it 07_gas 1 266 2030 0.0 0.0 0.0 -it 08_non-res 1 266 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 266 2030 0.0 0.0 0.0 -it 01_solar 1 267 2030 2000.0 1.0 0.0 -it 02_wind_on 1 267 2030 2000.0 1.0 0.0 -it 03_wind_off 1 267 2030 2000.0 1.0 0.0 -it 04_res 1 267 2030 2000.0 1.0 0.0 -it 05_nuclear 1 267 2030 1800.0 1.0 0.0 -it 06_coal 1 267 2030 0.0 0.0 0.0 -it 07_gas 1 267 2030 0.0 0.0 0.0 -it 08_non-res 1 267 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 267 2030 0.0 0.0 0.0 -it 01_solar 1 268 2030 2000.0 1.0 0.0 -it 02_wind_on 1 268 2030 2000.0 1.0 0.0 -it 03_wind_off 1 268 2030 2000.0 1.0 0.0 -it 04_res 1 268 2030 2000.0 1.0 0.0 -it 05_nuclear 1 268 2030 1900.0 1.0 0.0 -it 06_coal 1 268 2030 0.0 0.0 0.0 -it 07_gas 1 268 2030 0.0 0.0 0.0 -it 08_non-res 1 268 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 268 2030 0.0 0.0 0.0 -it 01_solar 1 269 2030 2000.0 1.0 0.0 -it 02_wind_on 1 269 2030 2000.0 1.0 0.0 -it 03_wind_off 1 269 2030 2000.0 1.0 0.0 -it 04_res 1 269 2030 2000.0 1.0 0.0 -it 05_nuclear 1 269 2030 2000.0 1.0 0.0 -it 06_coal 1 269 2030 0.0 0.0 0.0 -it 07_gas 1 269 2030 0.0 0.0 0.0 -it 08_non-res 1 269 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 269 2030 0.0 0.0 0.0 -it 01_solar 1 270 2030 2000.0 1.0 0.0 -it 02_wind_on 1 270 2030 2000.0 1.0 0.0 -it 03_wind_off 1 270 2030 2000.0 1.0 0.0 -it 04_res 1 270 2030 2000.0 1.0 0.0 -it 05_nuclear 1 270 2030 2000.0 1.0 0.0 -it 06_coal 1 270 2030 100.0 1.0 0.0 -it 07_gas 1 270 2030 0.0 0.0 0.0 -it 08_non-res 1 270 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 270 2030 0.0 0.0 0.0 -it 01_solar 1 271 2030 2000.0 1.0 0.0 -it 02_wind_on 1 271 2030 2000.0 1.0 0.0 -it 03_wind_off 1 271 2030 2000.0 1.0 0.0 -it 04_res 1 271 2030 2000.0 1.0 0.0 -it 05_nuclear 1 271 2030 2000.0 1.0 0.0 -it 06_coal 1 271 2030 200.0 1.0 0.0 -it 07_gas 1 271 2030 0.0 0.0 0.0 -it 08_non-res 1 271 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 271 2030 0.0 0.0 0.0 -it 01_solar 1 272 2030 2000.0 1.0 0.0 -it 02_wind_on 1 272 2030 2000.0 1.0 0.0 -it 03_wind_off 1 272 2030 2000.0 1.0 0.0 -it 04_res 1 272 2030 2000.0 1.0 0.0 -it 05_nuclear 1 272 2030 2000.0 1.0 0.0 -it 06_coal 1 272 2030 300.0 1.0 0.0 -it 07_gas 1 272 2030 0.0 0.0 0.0 -it 08_non-res 1 272 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 272 2030 0.0 0.0 0.0 -it 01_solar 1 273 2030 2000.0 1.0 0.0 -it 02_wind_on 1 273 2030 2000.0 1.0 0.0 -it 03_wind_off 1 273 2030 2000.0 1.0 0.0 -it 04_res 1 273 2030 2000.0 1.0 0.0 -it 05_nuclear 1 273 2030 2000.0 1.0 0.0 -it 06_coal 1 273 2030 400.0 1.0 0.0 -it 07_gas 1 273 2030 0.0 0.0 0.0 -it 08_non-res 1 273 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 273 2030 0.0 0.0 0.0 -it 01_solar 1 274 2030 2000.0 1.0 0.0 -it 02_wind_on 1 274 2030 2000.0 1.0 0.0 -it 03_wind_off 1 274 2030 2000.0 1.0 0.0 -it 04_res 1 274 2030 2000.0 1.0 0.0 -it 05_nuclear 1 274 2030 2000.0 1.0 0.0 -it 06_coal 1 274 2030 500.0 1.0 0.0 -it 07_gas 1 274 2030 0.0 0.0 0.0 -it 08_non-res 1 274 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 274 2030 0.0 0.0 0.0 -it 01_solar 1 275 2030 2000.0 1.0 0.0 -it 02_wind_on 1 275 2030 2000.0 1.0 0.0 -it 03_wind_off 1 275 2030 2000.0 1.0 0.0 -it 04_res 1 275 2030 2000.0 1.0 0.0 -it 05_nuclear 1 275 2030 2000.0 1.0 0.0 -it 06_coal 1 275 2030 600.0 1.0 0.0 -it 07_gas 1 275 2030 0.0 0.0 0.0 -it 08_non-res 1 275 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 275 2030 0.0 0.0 0.0 -it 01_solar 1 276 2030 2000.0 1.0 0.0 -it 02_wind_on 1 276 2030 2000.0 1.0 0.0 -it 03_wind_off 1 276 2030 2000.0 1.0 0.0 -it 04_res 1 276 2030 2000.0 1.0 0.0 -it 05_nuclear 1 276 2030 2000.0 1.0 0.0 -it 06_coal 1 276 2030 700.0 1.0 0.0 -it 07_gas 1 276 2030 0.0 0.0 0.0 -it 08_non-res 1 276 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 276 2030 0.0 0.0 0.0 -it 01_solar 1 277 2030 2000.0 1.0 0.0 -it 02_wind_on 1 277 2030 2000.0 1.0 0.0 -it 03_wind_off 1 277 2030 2000.0 1.0 0.0 -it 04_res 1 277 2030 2000.0 1.0 0.0 -it 05_nuclear 1 277 2030 2000.0 1.0 0.0 -it 06_coal 1 277 2030 800.0 1.0 0.0 -it 07_gas 1 277 2030 0.0 0.0 0.0 -it 08_non-res 1 277 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 277 2030 0.0 0.0 0.0 -it 01_solar 1 278 2030 2000.0 1.0 0.0 -it 02_wind_on 1 278 2030 2000.0 1.0 0.0 -it 03_wind_off 1 278 2030 2000.0 1.0 0.0 -it 04_res 1 278 2030 2000.0 1.0 0.0 -it 05_nuclear 1 278 2030 2000.0 1.0 0.0 -it 06_coal 1 278 2030 900.0 1.0 0.0 -it 07_gas 1 278 2030 0.0 0.0 0.0 -it 08_non-res 1 278 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 278 2030 0.0 0.0 0.0 -it 01_solar 1 279 2030 2000.0 1.0 0.0 -it 02_wind_on 1 279 2030 2000.0 1.0 0.0 -it 03_wind_off 1 279 2030 2000.0 1.0 0.0 -it 04_res 1 279 2030 2000.0 1.0 0.0 -it 05_nuclear 1 279 2030 2000.0 1.0 0.0 -it 06_coal 1 279 2030 1000.0 1.0 0.0 -it 07_gas 1 279 2030 0.0 0.0 0.0 -it 08_non-res 1 279 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 279 2030 0.0 0.0 0.0 -it 01_solar 1 280 2030 2000.0 1.0 0.0 -it 02_wind_on 1 280 2030 2000.0 1.0 0.0 -it 03_wind_off 1 280 2030 2000.0 1.0 0.0 -it 04_res 1 280 2030 2000.0 1.0 0.0 -it 05_nuclear 1 280 2030 2000.0 1.0 0.0 -it 06_coal 1 280 2030 1100.0 1.0 0.0 -it 07_gas 1 280 2030 0.0 0.0 0.0 -it 08_non-res 1 280 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 280 2030 0.0 0.0 0.0 -it 01_solar 1 281 2030 2000.0 1.0 0.0 -it 02_wind_on 1 281 2030 2000.0 1.0 0.0 -it 03_wind_off 1 281 2030 2000.0 1.0 0.0 -it 04_res 1 281 2030 2000.0 1.0 0.0 -it 05_nuclear 1 281 2030 2000.0 1.0 0.0 -it 06_coal 1 281 2030 1200.0 1.0 0.0 -it 07_gas 1 281 2030 0.0 0.0 0.0 -it 08_non-res 1 281 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 281 2030 0.0 0.0 0.0 -it 01_solar 1 282 2030 2000.0 1.0 0.0 -it 02_wind_on 1 282 2030 2000.0 1.0 0.0 -it 03_wind_off 1 282 2030 2000.0 1.0 0.0 -it 04_res 1 282 2030 2000.0 1.0 0.0 -it 05_nuclear 1 282 2030 2000.0 1.0 0.0 -it 06_coal 1 282 2030 1300.0 1.0 0.0 -it 07_gas 1 282 2030 0.0 0.0 0.0 -it 08_non-res 1 282 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 282 2030 0.0 0.0 0.0 -it 01_solar 1 283 2030 2000.0 1.0 0.0 -it 02_wind_on 1 283 2030 2000.0 1.0 0.0 -it 03_wind_off 1 283 2030 2000.0 1.0 0.0 -it 04_res 1 283 2030 2000.0 1.0 0.0 -it 05_nuclear 1 283 2030 2000.0 1.0 0.0 -it 06_coal 1 283 2030 1400.0 1.0 0.0 -it 07_gas 1 283 2030 0.0 0.0 0.0 -it 08_non-res 1 283 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 283 2030 0.0 0.0 0.0 -it 01_solar 1 284 2030 2000.0 1.0 0.0 -it 02_wind_on 1 284 2030 2000.0 1.0 0.0 -it 03_wind_off 1 284 2030 2000.0 1.0 0.0 -it 04_res 1 284 2030 2000.0 1.0 0.0 -it 05_nuclear 1 284 2030 2000.0 1.0 0.0 -it 06_coal 1 284 2030 1500.0 1.0 0.0 -it 07_gas 1 284 2030 0.0 0.0 0.0 -it 08_non-res 1 284 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 284 2030 0.0 0.0 0.0 -it 01_solar 1 285 2030 2000.0 1.0 0.0 -it 02_wind_on 1 285 2030 2000.0 1.0 0.0 -it 03_wind_off 1 285 2030 2000.0 1.0 0.0 -it 04_res 1 285 2030 2000.0 1.0 0.0 -it 05_nuclear 1 285 2030 2000.0 1.0 0.0 -it 06_coal 1 285 2030 1600.0 1.0 0.0 -it 07_gas 1 285 2030 0.0 0.0 0.0 -it 08_non-res 1 285 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 285 2030 0.0 0.0 0.0 -it 01_solar 1 286 2030 2000.0 1.0 0.0 -it 02_wind_on 1 286 2030 2000.0 1.0 0.0 -it 03_wind_off 1 286 2030 2000.0 1.0 0.0 -it 04_res 1 286 2030 2000.0 1.0 0.0 -it 05_nuclear 1 286 2030 2000.0 1.0 0.0 -it 06_coal 1 286 2030 1700.0 1.0 0.0 -it 07_gas 1 286 2030 0.0 0.0 0.0 -it 08_non-res 1 286 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 286 2030 0.0 0.0 0.0 -it 01_solar 1 287 2030 2000.0 1.0 0.0 -it 02_wind_on 1 287 2030 2000.0 1.0 0.0 -it 03_wind_off 1 287 2030 2000.0 1.0 0.0 -it 04_res 1 287 2030 2000.0 1.0 0.0 -it 05_nuclear 1 287 2030 2000.0 1.0 0.0 -it 06_coal 1 287 2030 1800.0 1.0 0.0 -it 07_gas 1 287 2030 0.0 0.0 0.0 -it 08_non-res 1 287 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 287 2030 0.0 0.0 0.0 -it 01_solar 1 288 2030 2000.0 1.0 0.0 -it 02_wind_on 1 288 2030 2000.0 1.0 0.0 -it 03_wind_off 1 288 2030 2000.0 1.0 0.0 -it 04_res 1 288 2030 2000.0 1.0 0.0 -it 05_nuclear 1 288 2030 2000.0 1.0 0.0 -it 06_coal 1 288 2030 1900.0 1.0 0.0 -it 07_gas 1 288 2030 0.0 0.0 0.0 -it 08_non-res 1 288 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 288 2030 0.0 0.0 0.0 -it 01_solar 1 289 2030 2000.0 1.0 0.0 -it 02_wind_on 1 289 2030 2000.0 1.0 0.0 -it 03_wind_off 1 289 2030 2000.0 1.0 0.0 -it 04_res 1 289 2030 2000.0 1.0 0.0 -it 05_nuclear 1 289 2030 2000.0 1.0 0.0 -it 06_coal 1 289 2030 2000.0 1.0 0.0 -it 07_gas 1 289 2030 0.0 0.0 0.0 -it 08_non-res 1 289 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 289 2030 0.0 0.0 0.0 -it 01_solar 1 290 2030 2000.0 1.0 0.0 -it 02_wind_on 1 290 2030 2000.0 1.0 0.0 -it 03_wind_off 1 290 2030 2000.0 1.0 0.0 -it 04_res 1 290 2030 2000.0 1.0 0.0 -it 05_nuclear 1 290 2030 2000.0 1.0 0.0 -it 06_coal 1 290 2030 2000.0 1.0 0.0 -it 07_gas 1 290 2030 100.0 1.0 0.0 -it 08_non-res 1 290 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 290 2030 0.0 0.0 0.0 -it 01_solar 1 291 2030 2000.0 1.0 0.0 -it 02_wind_on 1 291 2030 2000.0 1.0 0.0 -it 03_wind_off 1 291 2030 2000.0 1.0 0.0 -it 04_res 1 291 2030 2000.0 1.0 0.0 -it 05_nuclear 1 291 2030 2000.0 1.0 0.0 -it 06_coal 1 291 2030 2000.0 1.0 0.0 -it 07_gas 1 291 2030 200.0 1.0 0.0 -it 08_non-res 1 291 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 291 2030 0.0 0.0 0.0 -it 01_solar 1 292 2030 2000.0 1.0 0.0 -it 02_wind_on 1 292 2030 2000.0 1.0 0.0 -it 03_wind_off 1 292 2030 2000.0 1.0 0.0 -it 04_res 1 292 2030 2000.0 1.0 0.0 -it 05_nuclear 1 292 2030 2000.0 1.0 0.0 -it 06_coal 1 292 2030 2000.0 1.0 0.0 -it 07_gas 1 292 2030 300.0 1.0 0.0 -it 08_non-res 1 292 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 292 2030 0.0 0.0 0.0 -it 01_solar 1 293 2030 2000.0 1.0 0.0 -it 02_wind_on 1 293 2030 2000.0 1.0 0.0 -it 03_wind_off 1 293 2030 2000.0 1.0 0.0 -it 04_res 1 293 2030 2000.0 1.0 0.0 -it 05_nuclear 1 293 2030 2000.0 1.0 0.0 -it 06_coal 1 293 2030 2000.0 1.0 0.0 -it 07_gas 1 293 2030 400.0 1.0 0.0 -it 08_non-res 1 293 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 293 2030 0.0 0.0 0.0 -it 01_solar 1 294 2030 2000.0 1.0 0.0 -it 02_wind_on 1 294 2030 2000.0 1.0 0.0 -it 03_wind_off 1 294 2030 2000.0 1.0 0.0 -it 04_res 1 294 2030 2000.0 1.0 0.0 -it 05_nuclear 1 294 2030 2000.0 1.0 0.0 -it 06_coal 1 294 2030 2000.0 1.0 0.0 -it 07_gas 1 294 2030 500.0 1.0 0.0 -it 08_non-res 1 294 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 294 2030 0.0 0.0 0.0 -it 01_solar 1 295 2030 2000.0 1.0 0.0 -it 02_wind_on 1 295 2030 2000.0 1.0 0.0 -it 03_wind_off 1 295 2030 2000.0 1.0 0.0 -it 04_res 1 295 2030 2000.0 1.0 0.0 -it 05_nuclear 1 295 2030 2000.0 1.0 0.0 -it 06_coal 1 295 2030 2000.0 1.0 0.0 -it 07_gas 1 295 2030 600.0 1.0 0.0 -it 08_non-res 1 295 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 295 2030 0.0 0.0 0.0 -it 01_solar 1 296 2030 2000.0 1.0 0.0 -it 02_wind_on 1 296 2030 2000.0 1.0 0.0 -it 03_wind_off 1 296 2030 2000.0 1.0 0.0 -it 04_res 1 296 2030 2000.0 1.0 0.0 -it 05_nuclear 1 296 2030 2000.0 1.0 0.0 -it 06_coal 1 296 2030 2000.0 1.0 0.0 -it 07_gas 1 296 2030 700.0 1.0 0.0 -it 08_non-res 1 296 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 296 2030 0.0 0.0 0.0 -it 01_solar 1 297 2030 2000.0 1.0 0.0 -it 02_wind_on 1 297 2030 2000.0 1.0 0.0 -it 03_wind_off 1 297 2030 2000.0 1.0 0.0 -it 04_res 1 297 2030 2000.0 1.0 0.0 -it 05_nuclear 1 297 2030 2000.0 1.0 0.0 -it 06_coal 1 297 2030 2000.0 1.0 0.0 -it 07_gas 1 297 2030 800.0 1.0 0.0 -it 08_non-res 1 297 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 297 2030 0.0 0.0 0.0 -it 01_solar 1 298 2030 2000.0 1.0 0.0 -it 02_wind_on 1 298 2030 2000.0 1.0 0.0 -it 03_wind_off 1 298 2030 2000.0 1.0 0.0 -it 04_res 1 298 2030 2000.0 1.0 0.0 -it 05_nuclear 1 298 2030 2000.0 1.0 0.0 -it 06_coal 1 298 2030 2000.0 1.0 0.0 -it 07_gas 1 298 2030 900.0 1.0 0.0 -it 08_non-res 1 298 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 298 2030 0.0 0.0 0.0 -it 01_solar 1 299 2030 2000.0 1.0 0.0 -it 02_wind_on 1 299 2030 2000.0 1.0 0.0 -it 03_wind_off 1 299 2030 2000.0 1.0 0.0 -it 04_res 1 299 2030 2000.0 1.0 0.0 -it 05_nuclear 1 299 2030 2000.0 1.0 0.0 -it 06_coal 1 299 2030 2000.0 1.0 0.0 -it 07_gas 1 299 2030 1000.0 1.0 0.0 -it 08_non-res 1 299 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 299 2030 0.0 0.0 0.0 -it 01_solar 1 300 2030 2000.0 1.0 0.0 -it 02_wind_on 1 300 2030 2000.0 1.0 0.0 -it 03_wind_off 1 300 2030 2000.0 1.0 0.0 -it 04_res 1 300 2030 2000.0 1.0 0.0 -it 05_nuclear 1 300 2030 2000.0 1.0 0.0 -it 06_coal 1 300 2030 2000.0 1.0 0.0 -it 07_gas 1 300 2030 1100.0 1.0 0.0 -it 08_non-res 1 300 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 300 2030 0.0 0.0 0.0 -it 01_solar 1 301 2030 2000.0 1.0 0.0 -it 02_wind_on 1 301 2030 2000.0 1.0 0.0 -it 03_wind_off 1 301 2030 2000.0 1.0 0.0 -it 04_res 1 301 2030 2000.0 1.0 0.0 -it 05_nuclear 1 301 2030 2000.0 1.0 0.0 -it 06_coal 1 301 2030 2000.0 1.0 0.0 -it 07_gas 1 301 2030 1200.0 1.0 0.0 -it 08_non-res 1 301 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 301 2030 0.0 0.0 0.0 -it 01_solar 1 302 2030 2000.0 1.0 0.0 -it 02_wind_on 1 302 2030 2000.0 1.0 0.0 -it 03_wind_off 1 302 2030 2000.0 1.0 0.0 -it 04_res 1 302 2030 2000.0 1.0 0.0 -it 05_nuclear 1 302 2030 2000.0 1.0 0.0 -it 06_coal 1 302 2030 2000.0 1.0 0.0 -it 07_gas 1 302 2030 1300.0 1.0 0.0 -it 08_non-res 1 302 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 302 2030 0.0 0.0 0.0 -it 01_solar 1 303 2030 2000.0 1.0 0.0 -it 02_wind_on 1 303 2030 2000.0 1.0 0.0 -it 03_wind_off 1 303 2030 2000.0 1.0 0.0 -it 04_res 1 303 2030 2000.0 1.0 0.0 -it 05_nuclear 1 303 2030 2000.0 1.0 0.0 -it 06_coal 1 303 2030 2000.0 1.0 0.0 -it 07_gas 1 303 2030 1400.0 1.0 0.0 -it 08_non-res 1 303 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 303 2030 0.0 0.0 0.0 -it 01_solar 1 304 2030 2000.0 1.0 0.0 -it 02_wind_on 1 304 2030 2000.0 1.0 0.0 -it 03_wind_off 1 304 2030 2000.0 1.0 0.0 -it 04_res 1 304 2030 2000.0 1.0 0.0 -it 05_nuclear 1 304 2030 2000.0 1.0 0.0 -it 06_coal 1 304 2030 2000.0 1.0 0.0 -it 07_gas 1 304 2030 1500.0 1.0 0.0 -it 08_non-res 1 304 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 304 2030 0.0 0.0 0.0 -it 01_solar 1 305 2030 2000.0 1.0 0.0 -it 02_wind_on 1 305 2030 2000.0 1.0 0.0 -it 03_wind_off 1 305 2030 2000.0 1.0 0.0 -it 04_res 1 305 2030 2000.0 1.0 0.0 -it 05_nuclear 1 305 2030 2000.0 1.0 0.0 -it 06_coal 1 305 2030 2000.0 1.0 0.0 -it 07_gas 1 305 2030 1600.0 1.0 0.0 -it 08_non-res 1 305 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 305 2030 0.0 0.0 0.0 -it 01_solar 1 306 2030 2000.0 1.0 0.0 -it 02_wind_on 1 306 2030 2000.0 1.0 0.0 -it 03_wind_off 1 306 2030 2000.0 1.0 0.0 -it 04_res 1 306 2030 2000.0 1.0 0.0 -it 05_nuclear 1 306 2030 2000.0 1.0 0.0 -it 06_coal 1 306 2030 2000.0 1.0 0.0 -it 07_gas 1 306 2030 1700.0 1.0 0.0 -it 08_non-res 1 306 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 306 2030 0.0 0.0 0.0 -it 01_solar 1 307 2030 2000.0 1.0 0.0 -it 02_wind_on 1 307 2030 2000.0 1.0 0.0 -it 03_wind_off 1 307 2030 2000.0 1.0 0.0 -it 04_res 1 307 2030 2000.0 1.0 0.0 -it 05_nuclear 1 307 2030 2000.0 1.0 0.0 -it 06_coal 1 307 2030 2000.0 1.0 0.0 -it 07_gas 1 307 2030 1800.0 1.0 0.0 -it 08_non-res 1 307 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 307 2030 0.0 0.0 0.0 -it 01_solar 1 308 2030 2000.0 1.0 0.0 -it 02_wind_on 1 308 2030 2000.0 1.0 0.0 -it 03_wind_off 1 308 2030 2000.0 1.0 0.0 -it 04_res 1 308 2030 2000.0 1.0 0.0 -it 05_nuclear 1 308 2030 2000.0 1.0 0.0 -it 06_coal 1 308 2030 2000.0 1.0 0.0 -it 07_gas 1 308 2030 1900.0 1.0 0.0 -it 08_non-res 1 308 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 308 2030 0.0 0.0 0.0 -it 01_solar 1 309 2030 2000.0 1.0 0.0 -it 02_wind_on 1 309 2030 2000.0 1.0 0.0 -it 03_wind_off 1 309 2030 2000.0 1.0 0.0 -it 04_res 1 309 2030 2000.0 1.0 0.0 -it 05_nuclear 1 309 2030 2000.0 1.0 0.0 -it 06_coal 1 309 2030 2000.0 1.0 0.0 -it 07_gas 1 309 2030 2000.0 1.0 0.0 -it 08_non-res 1 309 2030 0.0 0.0 0.0 -it 09_hydro_pump 1 309 2030 0.0 0.0 0.0 -it 01_solar 1 310 2030 2000.0 1.0 0.0 -it 02_wind_on 1 310 2030 2000.0 1.0 0.0 -it 03_wind_off 1 310 2030 2000.0 1.0 0.0 -it 04_res 1 310 2030 2000.0 1.0 0.0 -it 05_nuclear 1 310 2030 2000.0 1.0 0.0 -it 06_coal 1 310 2030 2000.0 1.0 0.0 -it 07_gas 1 310 2030 2000.0 1.0 0.0 -it 08_non-res 1 310 2030 100.0 1.0 0.0 -it 09_hydro_pump 1 310 2030 0.0 0.0 0.0 -it 01_solar 1 311 2030 2000.0 1.0 0.0 -it 02_wind_on 1 311 2030 2000.0 1.0 0.0 -it 03_wind_off 1 311 2030 2000.0 1.0 0.0 -it 04_res 1 311 2030 2000.0 1.0 0.0 -it 05_nuclear 1 311 2030 2000.0 1.0 0.0 -it 06_coal 1 311 2030 2000.0 1.0 0.0 -it 07_gas 1 311 2030 2000.0 1.0 0.0 -it 08_non-res 1 311 2030 200.0 1.0 0.0 -it 09_hydro_pump 1 311 2030 0.0 0.0 0.0 -it 01_solar 1 312 2030 2000.0 1.0 0.0 -it 02_wind_on 1 312 2030 2000.0 1.0 0.0 -it 03_wind_off 1 312 2030 2000.0 1.0 0.0 -it 04_res 1 312 2030 2000.0 1.0 0.0 -it 05_nuclear 1 312 2030 2000.0 1.0 0.0 -it 06_coal 1 312 2030 2000.0 1.0 0.0 -it 07_gas 1 312 2030 2000.0 1.0 0.0 -it 08_non-res 1 312 2030 300.0 1.0 0.0 -it 09_hydro_pump 1 312 2030 0.0 0.0 0.0 -it 01_solar 1 313 2030 2000.0 1.0 0.0 -it 02_wind_on 1 313 2030 2000.0 1.0 0.0 -it 03_wind_off 1 313 2030 2000.0 1.0 0.0 -it 04_res 1 313 2030 2000.0 1.0 0.0 -it 05_nuclear 1 313 2030 2000.0 1.0 0.0 -it 06_coal 1 313 2030 2000.0 1.0 0.0 -it 07_gas 1 313 2030 2000.0 1.0 0.0 -it 08_non-res 1 313 2030 400.0 1.0 0.0 -it 09_hydro_pump 1 313 2030 0.0 0.0 0.0 -it 01_solar 1 314 2030 2000.0 1.0 0.0 -it 02_wind_on 1 314 2030 2000.0 1.0 0.0 -it 03_wind_off 1 314 2030 2000.0 1.0 0.0 -it 04_res 1 314 2030 2000.0 1.0 0.0 -it 05_nuclear 1 314 2030 2000.0 1.0 0.0 -it 06_coal 1 314 2030 2000.0 1.0 0.0 -it 07_gas 1 314 2030 2000.0 1.0 0.0 -it 08_non-res 1 314 2030 500.0 1.0 0.0 -it 09_hydro_pump 1 314 2030 0.0 0.0 0.0 -it 01_solar 1 315 2030 2000.0 1.0 0.0 -it 02_wind_on 1 315 2030 2000.0 1.0 0.0 -it 03_wind_off 1 315 2030 2000.0 1.0 0.0 -it 04_res 1 315 2030 2000.0 1.0 0.0 -it 05_nuclear 1 315 2030 2000.0 1.0 0.0 -it 06_coal 1 315 2030 2000.0 1.0 0.0 -it 07_gas 1 315 2030 2000.0 1.0 0.0 -it 08_non-res 1 315 2030 600.0 1.0 0.0 -it 09_hydro_pump 1 315 2030 0.0 0.0 0.0 -it 01_solar 1 316 2030 2000.0 1.0 0.0 -it 02_wind_on 1 316 2030 2000.0 1.0 0.0 -it 03_wind_off 1 316 2030 2000.0 1.0 0.0 -it 04_res 1 316 2030 2000.0 1.0 0.0 -it 05_nuclear 1 316 2030 2000.0 1.0 0.0 -it 06_coal 1 316 2030 2000.0 1.0 0.0 -it 07_gas 1 316 2030 2000.0 1.0 0.0 -it 08_non-res 1 316 2030 700.0 1.0 0.0 -it 09_hydro_pump 1 316 2030 0.0 0.0 0.0 -it 01_solar 1 317 2030 2000.0 1.0 0.0 -it 02_wind_on 1 317 2030 2000.0 1.0 0.0 -it 03_wind_off 1 317 2030 2000.0 1.0 0.0 -it 04_res 1 317 2030 2000.0 1.0 0.0 -it 05_nuclear 1 317 2030 2000.0 1.0 0.0 -it 06_coal 1 317 2030 2000.0 1.0 0.0 -it 07_gas 1 317 2030 2000.0 1.0 0.0 -it 08_non-res 1 317 2030 800.0 1.0 0.0 -it 09_hydro_pump 1 317 2030 0.0 0.0 0.0 -it 01_solar 1 318 2030 2000.0 1.0 0.0 -it 02_wind_on 1 318 2030 2000.0 1.0 0.0 -it 03_wind_off 1 318 2030 2000.0 1.0 0.0 -it 04_res 1 318 2030 2000.0 1.0 0.0 -it 05_nuclear 1 318 2030 2000.0 1.0 0.0 -it 06_coal 1 318 2030 2000.0 1.0 0.0 -it 07_gas 1 318 2030 2000.0 1.0 0.0 -it 08_non-res 1 318 2030 900.0 1.0 0.0 -it 09_hydro_pump 1 318 2030 0.0 0.0 0.0 -it 01_solar 1 319 2030 2000.0 1.0 0.0 -it 02_wind_on 1 319 2030 2000.0 1.0 0.0 -it 03_wind_off 1 319 2030 2000.0 1.0 0.0 -it 04_res 1 319 2030 2000.0 1.0 0.0 -it 05_nuclear 1 319 2030 2000.0 1.0 0.0 -it 06_coal 1 319 2030 2000.0 1.0 0.0 -it 07_gas 1 319 2030 2000.0 1.0 0.0 -it 08_non-res 1 319 2030 1000.0 1.0 0.0 -it 09_hydro_pump 1 319 2030 0.0 0.0 0.0 -it 01_solar 1 320 2030 2000.0 1.0 0.0 -it 02_wind_on 1 320 2030 2000.0 1.0 0.0 -it 03_wind_off 1 320 2030 2000.0 1.0 0.0 -it 04_res 1 320 2030 2000.0 1.0 0.0 -it 05_nuclear 1 320 2030 2000.0 1.0 0.0 -it 06_coal 1 320 2030 2000.0 1.0 0.0 -it 07_gas 1 320 2030 2000.0 1.0 0.0 -it 08_non-res 1 320 2030 1100.0 1.0 0.0 -it 09_hydro_pump 1 320 2030 0.0 0.0 0.0 -it 01_solar 1 321 2030 2000.0 1.0 0.0 -it 02_wind_on 1 321 2030 2000.0 1.0 0.0 -it 03_wind_off 1 321 2030 2000.0 1.0 0.0 -it 04_res 1 321 2030 2000.0 1.0 0.0 -it 05_nuclear 1 321 2030 2000.0 1.0 0.0 -it 06_coal 1 321 2030 2000.0 1.0 0.0 -it 07_gas 1 321 2030 2000.0 1.0 0.0 -it 08_non-res 1 321 2030 1200.0 1.0 0.0 -it 09_hydro_pump 1 321 2030 0.0 0.0 0.0 -it 01_solar 1 322 2030 2000.0 1.0 0.0 -it 02_wind_on 1 322 2030 2000.0 1.0 0.0 -it 03_wind_off 1 322 2030 2000.0 1.0 0.0 -it 04_res 1 322 2030 2000.0 1.0 0.0 -it 05_nuclear 1 322 2030 2000.0 1.0 0.0 -it 06_coal 1 322 2030 2000.0 1.0 0.0 -it 07_gas 1 322 2030 2000.0 1.0 0.0 -it 08_non-res 1 322 2030 1300.0 1.0 0.0 -it 09_hydro_pump 1 322 2030 0.0 0.0 0.0 -it 01_solar 1 323 2030 2000.0 1.0 0.0 -it 02_wind_on 1 323 2030 2000.0 1.0 0.0 -it 03_wind_off 1 323 2030 2000.0 1.0 0.0 -it 04_res 1 323 2030 2000.0 1.0 0.0 -it 05_nuclear 1 323 2030 2000.0 1.0 0.0 -it 06_coal 1 323 2030 2000.0 1.0 0.0 -it 07_gas 1 323 2030 2000.0 1.0 0.0 -it 08_non-res 1 323 2030 1400.0 1.0 0.0 -it 09_hydro_pump 1 323 2030 0.0 0.0 0.0 -it 01_solar 1 324 2030 2000.0 1.0 0.0 -it 02_wind_on 1 324 2030 2000.0 1.0 0.0 -it 03_wind_off 1 324 2030 2000.0 1.0 0.0 -it 04_res 1 324 2030 2000.0 1.0 0.0 -it 05_nuclear 1 324 2030 2000.0 1.0 0.0 -it 06_coal 1 324 2030 2000.0 1.0 0.0 -it 07_gas 1 324 2030 2000.0 1.0 0.0 -it 08_non-res 1 324 2030 1500.0 1.0 0.0 -it 09_hydro_pump 1 324 2030 0.0 0.0 0.0 -it 01_solar 1 325 2030 2000.0 1.0 0.0 -it 02_wind_on 1 325 2030 2000.0 1.0 0.0 -it 03_wind_off 1 325 2030 2000.0 1.0 0.0 -it 04_res 1 325 2030 2000.0 1.0 0.0 -it 05_nuclear 1 325 2030 2000.0 1.0 0.0 -it 06_coal 1 325 2030 2000.0 1.0 0.0 -it 07_gas 1 325 2030 2000.0 1.0 0.0 -it 08_non-res 1 325 2030 1600.0 1.0 0.0 -it 09_hydro_pump 1 325 2030 0.0 0.0 0.0 -it 01_solar 1 326 2030 2000.0 1.0 0.0 -it 02_wind_on 1 326 2030 2000.0 1.0 0.0 -it 03_wind_off 1 326 2030 2000.0 1.0 0.0 -it 04_res 1 326 2030 2000.0 1.0 0.0 -it 05_nuclear 1 326 2030 2000.0 1.0 0.0 -it 06_coal 1 326 2030 2000.0 1.0 0.0 -it 07_gas 1 326 2030 2000.0 1.0 0.0 -it 08_non-res 1 326 2030 1700.0 1.0 0.0 -it 09_hydro_pump 1 326 2030 0.0 0.0 0.0 -it 01_solar 1 327 2030 2000.0 1.0 0.0 -it 02_wind_on 1 327 2030 2000.0 1.0 0.0 -it 03_wind_off 1 327 2030 2000.0 1.0 0.0 -it 04_res 1 327 2030 2000.0 1.0 0.0 -it 05_nuclear 1 327 2030 2000.0 1.0 0.0 -it 06_coal 1 327 2030 2000.0 1.0 0.0 -it 07_gas 1 327 2030 2000.0 1.0 0.0 -it 08_non-res 1 327 2030 1800.0 1.0 0.0 -it 09_hydro_pump 1 327 2030 0.0 0.0 0.0 -it 01_solar 1 328 2030 2000.0 1.0 0.0 -it 02_wind_on 1 328 2030 2000.0 1.0 0.0 -it 03_wind_off 1 328 2030 2000.0 1.0 0.0 -it 04_res 1 328 2030 2000.0 1.0 0.0 -it 05_nuclear 1 328 2030 2000.0 1.0 0.0 -it 06_coal 1 328 2030 2000.0 1.0 0.0 -it 07_gas 1 328 2030 2000.0 1.0 0.0 -it 08_non-res 1 328 2030 1900.0 1.0 0.0 -it 09_hydro_pump 1 328 2030 0.0 0.0 0.0 -it 01_solar 1 329 2030 2000.0 1.0 0.0 -it 02_wind_on 1 329 2030 2000.0 1.0 0.0 -it 03_wind_off 1 329 2030 2000.0 1.0 0.0 -it 04_res 1 329 2030 2000.0 1.0 0.0 -it 05_nuclear 1 329 2030 2000.0 1.0 0.0 -it 06_coal 1 329 2030 2000.0 1.0 0.0 -it 07_gas 1 329 2030 2000.0 1.0 0.0 -it 08_non-res 1 329 2030 2000.0 1.0 0.0 -it 09_hydro_pump 1 329 2030 0.0 0.0 0.0 -it 01_solar 1 330 2030 2000.0 1.0 0.0 -it 02_wind_on 1 330 2030 2000.0 1.0 0.0 -it 03_wind_off 1 330 2030 2000.0 1.0 0.0 -it 04_res 1 330 2030 2000.0 1.0 0.0 -it 05_nuclear 1 330 2030 2000.0 1.0 0.0 -it 06_coal 1 330 2030 2000.0 1.0 0.0 -it 07_gas 1 330 2030 2000.0 1.0 0.0 -it 08_non-res 1 330 2030 2000.0 1.0 0.0 -it 09_hydro_pump 1 330 2030 100.0 1.0 0.0 -it 01_solar 1 331 2030 2000.0 1.0 0.0 -it 02_wind_on 1 331 2030 2000.0 1.0 0.0 -it 03_wind_off 1 331 2030 2000.0 1.0 0.0 -it 04_res 1 331 2030 2000.0 1.0 0.0 -it 05_nuclear 1 331 2030 2000.0 1.0 0.0 -it 06_coal 1 331 2030 2000.0 1.0 0.0 -it 07_gas 1 331 2030 2000.0 1.0 0.0 -it 08_non-res 1 331 2030 2000.0 1.0 0.0 -it 09_hydro_pump 1 331 2030 200.0 1.0 0.0 -it 01_solar 1 332 2030 2000.0 1.0 0.0 -it 02_wind_on 1 332 2030 2000.0 1.0 0.0 -it 03_wind_off 1 332 2030 2000.0 1.0 0.0 -it 04_res 1 332 2030 2000.0 1.0 0.0 -it 05_nuclear 1 332 2030 2000.0 1.0 0.0 -it 06_coal 1 332 2030 2000.0 1.0 0.0 -it 07_gas 1 332 2030 2000.0 1.0 0.0 -it 08_non-res 1 332 2030 2000.0 1.0 0.0 -it 09_hydro_pump 1 332 2030 300.0 1.0 0.0 -it 01_solar 1 333 2030 2000.0 1.0 0.0 -it 02_wind_on 1 333 2030 2000.0 1.0 0.0 -it 03_wind_off 1 333 2030 2000.0 1.0 0.0 -it 04_res 1 333 2030 2000.0 1.0 0.0 -it 05_nuclear 1 333 2030 2000.0 1.0 0.0 -it 06_coal 1 333 2030 2000.0 1.0 0.0 -it 07_gas 1 333 2030 2000.0 1.0 0.0 -it 08_non-res 1 333 2030 2000.0 1.0 0.0 -it 09_hydro_pump 1 333 2030 400.0 1.0 0.0 -it 01_solar 1 334 2030 2000.0 1.0 0.0 -it 02_wind_on 1 334 2030 2000.0 1.0 0.0 -it 03_wind_off 1 334 2030 2000.0 1.0 0.0 -it 04_res 1 334 2030 2000.0 1.0 0.0 -it 05_nuclear 1 334 2030 2000.0 1.0 0.0 -it 06_coal 1 334 2030 2000.0 1.0 0.0 -it 07_gas 1 334 2030 2000.0 1.0 0.0 -it 08_non-res 1 334 2030 2000.0 1.0 0.0 -it 09_hydro_pump 1 334 2030 500.0 1.0 0.0 -it 01_solar 1 335 2030 2000.0 1.0 0.0 -it 02_wind_on 1 335 2030 2000.0 1.0 0.0 -it 03_wind_off 1 335 2030 2000.0 1.0 0.0 -it 04_res 1 335 2030 2000.0 1.0 0.0 -it 05_nuclear 1 335 2030 2000.0 1.0 0.0 -it 06_coal 1 335 2030 2000.0 1.0 0.0 -it 07_gas 1 335 2030 2000.0 1.0 0.0 -it 08_non-res 1 335 2030 2000.0 1.0 0.0 -it 09_hydro_pump 1 335 2030 600.0 1.0 0.0 -it 01_solar 1 336 2030 2000.0 1.0 0.0 -it 02_wind_on 1 336 2030 2000.0 1.0 0.0 -it 03_wind_off 1 336 2030 2000.0 1.0 0.0 -it 04_res 1 336 2030 2000.0 1.0 0.0 -it 05_nuclear 1 336 2030 2000.0 1.0 0.0 -it 06_coal 1 336 2030 2000.0 1.0 0.0 -it 07_gas 1 336 2030 2000.0 1.0 0.0 -it 08_non-res 1 336 2030 2000.0 1.0 0.0 -it 09_hydro_pump 1 336 2030 700.0 1.0 0.0 +area cluster mcYear timeId production NODU NP Cost - Euro +de 01_solar 1 1 0.0 0.0 0.0 +de 02_wind_on 1 1 0.0 0.0 0.0 +de 03_wind_off 1 1 0.0 0.0 0.0 +de 04_res 1 1 0.0 0.0 0.0 +de 05_nuclear 1 1 0.0 0.0 0.0 +de 06_coal 1 1 0.0 0.0 0.0 +de 07_gas 1 1 0.0 0.0 0.0 +de 08_non-res 1 1 0.0 0.0 0.0 +de 09_hydro_pump 1 1 0.0 0.0 0.0 +de 01_solar 1 2 100.0 1.0 0.0 +de 02_wind_on 1 2 0.0 0.0 0.0 +de 03_wind_off 1 2 0.0 0.0 0.0 +de 04_res 1 2 0.0 0.0 0.0 +de 05_nuclear 1 2 0.0 0.0 0.0 +de 06_coal 1 2 0.0 0.0 0.0 +de 07_gas 1 2 0.0 0.0 0.0 +de 08_non-res 1 2 0.0 0.0 0.0 +de 09_hydro_pump 1 2 0.0 0.0 0.0 +de 01_solar 1 3 200.0 1.0 0.0 +de 02_wind_on 1 3 0.0 0.0 0.0 +de 03_wind_off 1 3 0.0 0.0 0.0 +de 04_res 1 3 0.0 0.0 0.0 +de 05_nuclear 1 3 0.0 0.0 0.0 +de 06_coal 1 3 0.0 0.0 0.0 +de 07_gas 1 3 0.0 0.0 0.0 +de 08_non-res 1 3 0.0 0.0 0.0 +de 09_hydro_pump 1 3 0.0 0.0 0.0 +de 01_solar 1 4 300.0 1.0 0.0 +de 02_wind_on 1 4 0.0 0.0 0.0 +de 03_wind_off 1 4 0.0 0.0 0.0 +de 04_res 1 4 0.0 0.0 0.0 +de 05_nuclear 1 4 0.0 0.0 0.0 +de 06_coal 1 4 0.0 0.0 0.0 +de 07_gas 1 4 0.0 0.0 0.0 +de 08_non-res 1 4 0.0 0.0 0.0 +de 09_hydro_pump 1 4 0.0 0.0 0.0 +de 01_solar 1 5 400.0 1.0 0.0 +de 02_wind_on 1 5 0.0 0.0 0.0 +de 03_wind_off 1 5 0.0 0.0 0.0 +de 04_res 1 5 0.0 0.0 0.0 +de 05_nuclear 1 5 0.0 0.0 0.0 +de 06_coal 1 5 0.0 0.0 0.0 +de 07_gas 1 5 0.0 0.0 0.0 +de 08_non-res 1 5 0.0 0.0 0.0 +de 09_hydro_pump 1 5 0.0 0.0 0.0 +de 01_solar 1 6 500.0 1.0 0.0 +de 02_wind_on 1 6 0.0 0.0 0.0 +de 03_wind_off 1 6 0.0 0.0 0.0 +de 04_res 1 6 0.0 0.0 0.0 +de 05_nuclear 1 6 0.0 0.0 0.0 +de 06_coal 1 6 0.0 0.0 0.0 +de 07_gas 1 6 0.0 0.0 0.0 +de 08_non-res 1 6 0.0 0.0 0.0 +de 09_hydro_pump 1 6 0.0 0.0 0.0 +de 01_solar 1 7 600.0 1.0 0.0 +de 02_wind_on 1 7 0.0 0.0 0.0 +de 03_wind_off 1 7 0.0 0.0 0.0 +de 04_res 1 7 0.0 0.0 0.0 +de 05_nuclear 1 7 0.0 0.0 0.0 +de 06_coal 1 7 0.0 0.0 0.0 +de 07_gas 1 7 0.0 0.0 0.0 +de 08_non-res 1 7 0.0 0.0 0.0 +de 09_hydro_pump 1 7 0.0 0.0 0.0 +de 01_solar 1 8 700.0 1.0 0.0 +de 02_wind_on 1 8 0.0 0.0 0.0 +de 03_wind_off 1 8 0.0 0.0 0.0 +de 04_res 1 8 0.0 0.0 0.0 +de 05_nuclear 1 8 0.0 0.0 0.0 +de 06_coal 1 8 0.0 0.0 0.0 +de 07_gas 1 8 0.0 0.0 0.0 +de 08_non-res 1 8 0.0 0.0 0.0 +de 09_hydro_pump 1 8 0.0 0.0 0.0 +de 01_solar 1 9 800.0 1.0 0.0 +de 02_wind_on 1 9 0.0 0.0 0.0 +de 03_wind_off 1 9 0.0 0.0 0.0 +de 04_res 1 9 0.0 0.0 0.0 +de 05_nuclear 1 9 0.0 0.0 0.0 +de 06_coal 1 9 0.0 0.0 0.0 +de 07_gas 1 9 0.0 0.0 0.0 +de 08_non-res 1 9 0.0 0.0 0.0 +de 09_hydro_pump 1 9 0.0 0.0 0.0 +de 01_solar 1 10 900.0 1.0 0.0 +de 02_wind_on 1 10 0.0 0.0 0.0 +de 03_wind_off 1 10 0.0 0.0 0.0 +de 04_res 1 10 0.0 0.0 0.0 +de 05_nuclear 1 10 0.0 0.0 0.0 +de 06_coal 1 10 0.0 0.0 0.0 +de 07_gas 1 10 0.0 0.0 0.0 +de 08_non-res 1 10 0.0 0.0 0.0 +de 09_hydro_pump 1 10 0.0 0.0 0.0 +de 01_solar 1 11 1000.0 1.0 0.0 +de 02_wind_on 1 11 0.0 0.0 0.0 +de 03_wind_off 1 11 0.0 0.0 0.0 +de 04_res 1 11 0.0 0.0 0.0 +de 05_nuclear 1 11 0.0 0.0 0.0 +de 06_coal 1 11 0.0 0.0 0.0 +de 07_gas 1 11 0.0 0.0 0.0 +de 08_non-res 1 11 0.0 0.0 0.0 +de 09_hydro_pump 1 11 0.0 0.0 0.0 +de 01_solar 1 12 1100.0 1.0 0.0 +de 02_wind_on 1 12 0.0 0.0 0.0 +de 03_wind_off 1 12 0.0 0.0 0.0 +de 04_res 1 12 0.0 0.0 0.0 +de 05_nuclear 1 12 0.0 0.0 0.0 +de 06_coal 1 12 0.0 0.0 0.0 +de 07_gas 1 12 0.0 0.0 0.0 +de 08_non-res 1 12 0.0 0.0 0.0 +de 09_hydro_pump 1 12 0.0 0.0 0.0 +de 01_solar 1 13 1200.0 1.0 0.0 +de 02_wind_on 1 13 0.0 0.0 0.0 +de 03_wind_off 1 13 0.0 0.0 0.0 +de 04_res 1 13 0.0 0.0 0.0 +de 05_nuclear 1 13 0.0 0.0 0.0 +de 06_coal 1 13 0.0 0.0 0.0 +de 07_gas 1 13 0.0 0.0 0.0 +de 08_non-res 1 13 0.0 0.0 0.0 +de 09_hydro_pump 1 13 0.0 0.0 0.0 +de 01_solar 1 14 1300.0 1.0 0.0 +de 02_wind_on 1 14 0.0 0.0 0.0 +de 03_wind_off 1 14 0.0 0.0 0.0 +de 04_res 1 14 0.0 0.0 0.0 +de 05_nuclear 1 14 0.0 0.0 0.0 +de 06_coal 1 14 0.0 0.0 0.0 +de 07_gas 1 14 0.0 0.0 0.0 +de 08_non-res 1 14 0.0 0.0 0.0 +de 09_hydro_pump 1 14 0.0 0.0 0.0 +de 01_solar 1 15 1400.0 1.0 0.0 +de 02_wind_on 1 15 0.0 0.0 0.0 +de 03_wind_off 1 15 0.0 0.0 0.0 +de 04_res 1 15 0.0 0.0 0.0 +de 05_nuclear 1 15 0.0 0.0 0.0 +de 06_coal 1 15 0.0 0.0 0.0 +de 07_gas 1 15 0.0 0.0 0.0 +de 08_non-res 1 15 0.0 0.0 0.0 +de 09_hydro_pump 1 15 0.0 0.0 0.0 +de 01_solar 1 16 1500.0 1.0 0.0 +de 02_wind_on 1 16 0.0 0.0 0.0 +de 03_wind_off 1 16 0.0 0.0 0.0 +de 04_res 1 16 0.0 0.0 0.0 +de 05_nuclear 1 16 0.0 0.0 0.0 +de 06_coal 1 16 0.0 0.0 0.0 +de 07_gas 1 16 0.0 0.0 0.0 +de 08_non-res 1 16 0.0 0.0 0.0 +de 09_hydro_pump 1 16 0.0 0.0 0.0 +de 01_solar 1 17 1600.0 1.0 0.0 +de 02_wind_on 1 17 0.0 0.0 0.0 +de 03_wind_off 1 17 0.0 0.0 0.0 +de 04_res 1 17 0.0 0.0 0.0 +de 05_nuclear 1 17 0.0 0.0 0.0 +de 06_coal 1 17 0.0 0.0 0.0 +de 07_gas 1 17 0.0 0.0 0.0 +de 08_non-res 1 17 0.0 0.0 0.0 +de 09_hydro_pump 1 17 0.0 0.0 0.0 +de 01_solar 1 18 1700.0 1.0 0.0 +de 02_wind_on 1 18 0.0 0.0 0.0 +de 03_wind_off 1 18 0.0 0.0 0.0 +de 04_res 1 18 0.0 0.0 0.0 +de 05_nuclear 1 18 0.0 0.0 0.0 +de 06_coal 1 18 0.0 0.0 0.0 +de 07_gas 1 18 0.0 0.0 0.0 +de 08_non-res 1 18 0.0 0.0 0.0 +de 09_hydro_pump 1 18 0.0 0.0 0.0 +de 01_solar 1 19 1800.0 1.0 0.0 +de 02_wind_on 1 19 0.0 0.0 0.0 +de 03_wind_off 1 19 0.0 0.0 0.0 +de 04_res 1 19 0.0 0.0 0.0 +de 05_nuclear 1 19 0.0 0.0 0.0 +de 06_coal 1 19 0.0 0.0 0.0 +de 07_gas 1 19 0.0 0.0 0.0 +de 08_non-res 1 19 0.0 0.0 0.0 +de 09_hydro_pump 1 19 0.0 0.0 0.0 +de 01_solar 1 20 1900.0 1.0 0.0 +de 02_wind_on 1 20 0.0 0.0 0.0 +de 03_wind_off 1 20 0.0 0.0 0.0 +de 04_res 1 20 0.0 0.0 0.0 +de 05_nuclear 1 20 0.0 0.0 0.0 +de 06_coal 1 20 0.0 0.0 0.0 +de 07_gas 1 20 0.0 0.0 0.0 +de 08_non-res 1 20 0.0 0.0 0.0 +de 09_hydro_pump 1 20 0.0 0.0 0.0 +de 01_solar 1 21 2000.0 1.0 0.0 +de 02_wind_on 1 21 0.0 0.0 0.0 +de 03_wind_off 1 21 0.0 0.0 0.0 +de 04_res 1 21 0.0 0.0 0.0 +de 05_nuclear 1 21 0.0 0.0 0.0 +de 06_coal 1 21 0.0 0.0 0.0 +de 07_gas 1 21 0.0 0.0 0.0 +de 08_non-res 1 21 0.0 0.0 0.0 +de 09_hydro_pump 1 21 0.0 0.0 0.0 +de 01_solar 1 22 2000.0 1.0 0.0 +de 02_wind_on 1 22 100.0 1.0 0.0 +de 03_wind_off 1 22 0.0 0.0 0.0 +de 04_res 1 22 0.0 0.0 0.0 +de 05_nuclear 1 22 0.0 0.0 0.0 +de 06_coal 1 22 0.0 0.0 0.0 +de 07_gas 1 22 0.0 0.0 0.0 +de 08_non-res 1 22 0.0 0.0 0.0 +de 09_hydro_pump 1 22 0.0 0.0 0.0 +de 01_solar 1 23 2000.0 1.0 0.0 +de 02_wind_on 1 23 200.0 1.0 0.0 +de 03_wind_off 1 23 0.0 0.0 0.0 +de 04_res 1 23 0.0 0.0 0.0 +de 05_nuclear 1 23 0.0 0.0 0.0 +de 06_coal 1 23 0.0 0.0 0.0 +de 07_gas 1 23 0.0 0.0 0.0 +de 08_non-res 1 23 0.0 0.0 0.0 +de 09_hydro_pump 1 23 0.0 0.0 0.0 +de 01_solar 1 24 2000.0 1.0 0.0 +de 02_wind_on 1 24 300.0 1.0 0.0 +de 03_wind_off 1 24 0.0 0.0 0.0 +de 04_res 1 24 0.0 0.0 0.0 +de 05_nuclear 1 24 0.0 0.0 0.0 +de 06_coal 1 24 0.0 0.0 0.0 +de 07_gas 1 24 0.0 0.0 0.0 +de 08_non-res 1 24 0.0 0.0 0.0 +de 09_hydro_pump 1 24 0.0 0.0 0.0 +de 01_solar 1 25 2000.0 1.0 0.0 +de 02_wind_on 1 25 400.0 1.0 0.0 +de 03_wind_off 1 25 0.0 0.0 0.0 +de 04_res 1 25 0.0 0.0 0.0 +de 05_nuclear 1 25 0.0 0.0 0.0 +de 06_coal 1 25 0.0 0.0 0.0 +de 07_gas 1 25 0.0 0.0 0.0 +de 08_non-res 1 25 0.0 0.0 0.0 +de 09_hydro_pump 1 25 0.0 0.0 0.0 +de 01_solar 1 26 2000.0 1.0 0.0 +de 02_wind_on 1 26 500.0 1.0 0.0 +de 03_wind_off 1 26 0.0 0.0 0.0 +de 04_res 1 26 0.0 0.0 0.0 +de 05_nuclear 1 26 0.0 0.0 0.0 +de 06_coal 1 26 0.0 0.0 0.0 +de 07_gas 1 26 0.0 0.0 0.0 +de 08_non-res 1 26 0.0 0.0 0.0 +de 09_hydro_pump 1 26 0.0 0.0 0.0 +de 01_solar 1 27 2000.0 1.0 0.0 +de 02_wind_on 1 27 600.0 1.0 0.0 +de 03_wind_off 1 27 0.0 0.0 0.0 +de 04_res 1 27 0.0 0.0 0.0 +de 05_nuclear 1 27 0.0 0.0 0.0 +de 06_coal 1 27 0.0 0.0 0.0 +de 07_gas 1 27 0.0 0.0 0.0 +de 08_non-res 1 27 0.0 0.0 0.0 +de 09_hydro_pump 1 27 0.0 0.0 0.0 +de 01_solar 1 28 2000.0 1.0 0.0 +de 02_wind_on 1 28 700.0 1.0 0.0 +de 03_wind_off 1 28 0.0 0.0 0.0 +de 04_res 1 28 0.0 0.0 0.0 +de 05_nuclear 1 28 0.0 0.0 0.0 +de 06_coal 1 28 0.0 0.0 0.0 +de 07_gas 1 28 0.0 0.0 0.0 +de 08_non-res 1 28 0.0 0.0 0.0 +de 09_hydro_pump 1 28 0.0 0.0 0.0 +de 01_solar 1 29 2000.0 1.0 0.0 +de 02_wind_on 1 29 800.0 1.0 0.0 +de 03_wind_off 1 29 0.0 0.0 0.0 +de 04_res 1 29 0.0 0.0 0.0 +de 05_nuclear 1 29 0.0 0.0 0.0 +de 06_coal 1 29 0.0 0.0 0.0 +de 07_gas 1 29 0.0 0.0 0.0 +de 08_non-res 1 29 0.0 0.0 0.0 +de 09_hydro_pump 1 29 0.0 0.0 0.0 +de 01_solar 1 30 2000.0 1.0 0.0 +de 02_wind_on 1 30 900.0 1.0 0.0 +de 03_wind_off 1 30 0.0 0.0 0.0 +de 04_res 1 30 0.0 0.0 0.0 +de 05_nuclear 1 30 0.0 0.0 0.0 +de 06_coal 1 30 0.0 0.0 0.0 +de 07_gas 1 30 0.0 0.0 0.0 +de 08_non-res 1 30 0.0 0.0 0.0 +de 09_hydro_pump 1 30 0.0 0.0 0.0 +de 01_solar 1 31 2000.0 1.0 0.0 +de 02_wind_on 1 31 1000.0 1.0 0.0 +de 03_wind_off 1 31 0.0 0.0 0.0 +de 04_res 1 31 0.0 0.0 0.0 +de 05_nuclear 1 31 0.0 0.0 0.0 +de 06_coal 1 31 0.0 0.0 0.0 +de 07_gas 1 31 0.0 0.0 0.0 +de 08_non-res 1 31 0.0 0.0 0.0 +de 09_hydro_pump 1 31 0.0 0.0 0.0 +de 01_solar 1 32 2000.0 1.0 0.0 +de 02_wind_on 1 32 1100.0 1.0 0.0 +de 03_wind_off 1 32 0.0 0.0 0.0 +de 04_res 1 32 0.0 0.0 0.0 +de 05_nuclear 1 32 0.0 0.0 0.0 +de 06_coal 1 32 0.0 0.0 0.0 +de 07_gas 1 32 0.0 0.0 0.0 +de 08_non-res 1 32 0.0 0.0 0.0 +de 09_hydro_pump 1 32 0.0 0.0 0.0 +de 01_solar 1 33 2000.0 1.0 0.0 +de 02_wind_on 1 33 1200.0 1.0 0.0 +de 03_wind_off 1 33 0.0 0.0 0.0 +de 04_res 1 33 0.0 0.0 0.0 +de 05_nuclear 1 33 0.0 0.0 0.0 +de 06_coal 1 33 0.0 0.0 0.0 +de 07_gas 1 33 0.0 0.0 0.0 +de 08_non-res 1 33 0.0 0.0 0.0 +de 09_hydro_pump 1 33 0.0 0.0 0.0 +de 01_solar 1 34 2000.0 1.0 0.0 +de 02_wind_on 1 34 1300.0 1.0 0.0 +de 03_wind_off 1 34 0.0 0.0 0.0 +de 04_res 1 34 0.0 0.0 0.0 +de 05_nuclear 1 34 0.0 0.0 0.0 +de 06_coal 1 34 0.0 0.0 0.0 +de 07_gas 1 34 0.0 0.0 0.0 +de 08_non-res 1 34 0.0 0.0 0.0 +de 09_hydro_pump 1 34 0.0 0.0 0.0 +de 01_solar 1 35 2000.0 1.0 0.0 +de 02_wind_on 1 35 1400.0 1.0 0.0 +de 03_wind_off 1 35 0.0 0.0 0.0 +de 04_res 1 35 0.0 0.0 0.0 +de 05_nuclear 1 35 0.0 0.0 0.0 +de 06_coal 1 35 0.0 0.0 0.0 +de 07_gas 1 35 0.0 0.0 0.0 +de 08_non-res 1 35 0.0 0.0 0.0 +de 09_hydro_pump 1 35 0.0 0.0 0.0 +de 01_solar 1 36 2000.0 1.0 0.0 +de 02_wind_on 1 36 1500.0 1.0 0.0 +de 03_wind_off 1 36 0.0 0.0 0.0 +de 04_res 1 36 0.0 0.0 0.0 +de 05_nuclear 1 36 0.0 0.0 0.0 +de 06_coal 1 36 0.0 0.0 0.0 +de 07_gas 1 36 0.0 0.0 0.0 +de 08_non-res 1 36 0.0 0.0 0.0 +de 09_hydro_pump 1 36 0.0 0.0 0.0 +de 01_solar 1 37 2000.0 1.0 0.0 +de 02_wind_on 1 37 1600.0 1.0 0.0 +de 03_wind_off 1 37 0.0 0.0 0.0 +de 04_res 1 37 0.0 0.0 0.0 +de 05_nuclear 1 37 0.0 0.0 0.0 +de 06_coal 1 37 0.0 0.0 0.0 +de 07_gas 1 37 0.0 0.0 0.0 +de 08_non-res 1 37 0.0 0.0 0.0 +de 09_hydro_pump 1 37 0.0 0.0 0.0 +de 01_solar 1 38 2000.0 1.0 0.0 +de 02_wind_on 1 38 1700.0 1.0 0.0 +de 03_wind_off 1 38 0.0 0.0 0.0 +de 04_res 1 38 0.0 0.0 0.0 +de 05_nuclear 1 38 0.0 0.0 0.0 +de 06_coal 1 38 0.0 0.0 0.0 +de 07_gas 1 38 0.0 0.0 0.0 +de 08_non-res 1 38 0.0 0.0 0.0 +de 09_hydro_pump 1 38 0.0 0.0 0.0 +de 01_solar 1 39 2000.0 1.0 0.0 +de 02_wind_on 1 39 1800.0 1.0 0.0 +de 03_wind_off 1 39 0.0 0.0 0.0 +de 04_res 1 39 0.0 0.0 0.0 +de 05_nuclear 1 39 0.0 0.0 0.0 +de 06_coal 1 39 0.0 0.0 0.0 +de 07_gas 1 39 0.0 0.0 0.0 +de 08_non-res 1 39 0.0 0.0 0.0 +de 09_hydro_pump 1 39 0.0 0.0 0.0 +de 01_solar 1 40 2000.0 1.0 0.0 +de 02_wind_on 1 40 1900.0 1.0 0.0 +de 03_wind_off 1 40 0.0 0.0 0.0 +de 04_res 1 40 0.0 0.0 0.0 +de 05_nuclear 1 40 0.0 0.0 0.0 +de 06_coal 1 40 0.0 0.0 0.0 +de 07_gas 1 40 0.0 0.0 0.0 +de 08_non-res 1 40 0.0 0.0 0.0 +de 09_hydro_pump 1 40 0.0 0.0 0.0 +de 01_solar 1 41 2000.0 1.0 0.0 +de 02_wind_on 1 41 2000.0 1.0 0.0 +de 03_wind_off 1 41 0.0 0.0 0.0 +de 04_res 1 41 0.0 0.0 0.0 +de 05_nuclear 1 41 0.0 0.0 0.0 +de 06_coal 1 41 0.0 0.0 0.0 +de 07_gas 1 41 0.0 0.0 0.0 +de 08_non-res 1 41 0.0 0.0 0.0 +de 09_hydro_pump 1 41 0.0 0.0 0.0 +de 01_solar 1 42 2000.0 1.0 0.0 +de 02_wind_on 1 42 2000.0 1.0 0.0 +de 03_wind_off 1 42 100.0 1.0 0.0 +de 04_res 1 42 0.0 0.0 0.0 +de 05_nuclear 1 42 0.0 0.0 0.0 +de 06_coal 1 42 0.0 0.0 0.0 +de 07_gas 1 42 0.0 0.0 0.0 +de 08_non-res 1 42 0.0 0.0 0.0 +de 09_hydro_pump 1 42 0.0 0.0 0.0 +de 01_solar 1 43 2000.0 1.0 0.0 +de 02_wind_on 1 43 2000.0 1.0 0.0 +de 03_wind_off 1 43 200.0 1.0 0.0 +de 04_res 1 43 0.0 0.0 0.0 +de 05_nuclear 1 43 0.0 0.0 0.0 +de 06_coal 1 43 0.0 0.0 0.0 +de 07_gas 1 43 0.0 0.0 0.0 +de 08_non-res 1 43 0.0 0.0 0.0 +de 09_hydro_pump 1 43 0.0 0.0 0.0 +de 01_solar 1 44 2000.0 1.0 0.0 +de 02_wind_on 1 44 2000.0 1.0 0.0 +de 03_wind_off 1 44 300.0 1.0 0.0 +de 04_res 1 44 0.0 0.0 0.0 +de 05_nuclear 1 44 0.0 0.0 0.0 +de 06_coal 1 44 0.0 0.0 0.0 +de 07_gas 1 44 0.0 0.0 0.0 +de 08_non-res 1 44 0.0 0.0 0.0 +de 09_hydro_pump 1 44 0.0 0.0 0.0 +de 01_solar 1 45 2000.0 1.0 0.0 +de 02_wind_on 1 45 2000.0 1.0 0.0 +de 03_wind_off 1 45 400.0 1.0 0.0 +de 04_res 1 45 0.0 0.0 0.0 +de 05_nuclear 1 45 0.0 0.0 0.0 +de 06_coal 1 45 0.0 0.0 0.0 +de 07_gas 1 45 0.0 0.0 0.0 +de 08_non-res 1 45 0.0 0.0 0.0 +de 09_hydro_pump 1 45 0.0 0.0 0.0 +de 01_solar 1 46 2000.0 1.0 0.0 +de 02_wind_on 1 46 2000.0 1.0 0.0 +de 03_wind_off 1 46 500.0 1.0 0.0 +de 04_res 1 46 0.0 0.0 0.0 +de 05_nuclear 1 46 0.0 0.0 0.0 +de 06_coal 1 46 0.0 0.0 0.0 +de 07_gas 1 46 0.0 0.0 0.0 +de 08_non-res 1 46 0.0 0.0 0.0 +de 09_hydro_pump 1 46 0.0 0.0 0.0 +de 01_solar 1 47 2000.0 1.0 0.0 +de 02_wind_on 1 47 2000.0 1.0 0.0 +de 03_wind_off 1 47 600.0 1.0 0.0 +de 04_res 1 47 0.0 0.0 0.0 +de 05_nuclear 1 47 0.0 0.0 0.0 +de 06_coal 1 47 0.0 0.0 0.0 +de 07_gas 1 47 0.0 0.0 0.0 +de 08_non-res 1 47 0.0 0.0 0.0 +de 09_hydro_pump 1 47 0.0 0.0 0.0 +de 01_solar 1 48 2000.0 1.0 0.0 +de 02_wind_on 1 48 2000.0 1.0 0.0 +de 03_wind_off 1 48 700.0 1.0 0.0 +de 04_res 1 48 0.0 0.0 0.0 +de 05_nuclear 1 48 0.0 0.0 0.0 +de 06_coal 1 48 0.0 0.0 0.0 +de 07_gas 1 48 0.0 0.0 0.0 +de 08_non-res 1 48 0.0 0.0 0.0 +de 09_hydro_pump 1 48 0.0 0.0 0.0 +de 01_solar 1 49 2000.0 1.0 0.0 +de 02_wind_on 1 49 2000.0 1.0 0.0 +de 03_wind_off 1 49 800.0 1.0 0.0 +de 04_res 1 49 0.0 0.0 0.0 +de 05_nuclear 1 49 0.0 0.0 0.0 +de 06_coal 1 49 0.0 0.0 0.0 +de 07_gas 1 49 0.0 0.0 0.0 +de 08_non-res 1 49 0.0 0.0 0.0 +de 09_hydro_pump 1 49 0.0 0.0 0.0 +de 01_solar 1 50 2000.0 1.0 0.0 +de 02_wind_on 1 50 2000.0 1.0 0.0 +de 03_wind_off 1 50 900.0 1.0 0.0 +de 04_res 1 50 0.0 0.0 0.0 +de 05_nuclear 1 50 0.0 0.0 0.0 +de 06_coal 1 50 0.0 0.0 0.0 +de 07_gas 1 50 0.0 0.0 0.0 +de 08_non-res 1 50 0.0 0.0 0.0 +de 09_hydro_pump 1 50 0.0 0.0 0.0 +de 01_solar 1 51 2000.0 1.0 0.0 +de 02_wind_on 1 51 2000.0 1.0 0.0 +de 03_wind_off 1 51 1000.0 1.0 0.0 +de 04_res 1 51 0.0 0.0 0.0 +de 05_nuclear 1 51 0.0 0.0 0.0 +de 06_coal 1 51 0.0 0.0 0.0 +de 07_gas 1 51 0.0 0.0 0.0 +de 08_non-res 1 51 0.0 0.0 0.0 +de 09_hydro_pump 1 51 0.0 0.0 0.0 +de 01_solar 1 52 2000.0 1.0 0.0 +de 02_wind_on 1 52 2000.0 1.0 0.0 +de 03_wind_off 1 52 1100.0 1.0 0.0 +de 04_res 1 52 0.0 0.0 0.0 +de 05_nuclear 1 52 0.0 0.0 0.0 +de 06_coal 1 52 0.0 0.0 0.0 +de 07_gas 1 52 0.0 0.0 0.0 +de 08_non-res 1 52 0.0 0.0 0.0 +de 09_hydro_pump 1 52 0.0 0.0 0.0 +de 01_solar 1 53 2000.0 1.0 0.0 +de 02_wind_on 1 53 2000.0 1.0 0.0 +de 03_wind_off 1 53 1200.0 1.0 0.0 +de 04_res 1 53 0.0 0.0 0.0 +de 05_nuclear 1 53 0.0 0.0 0.0 +de 06_coal 1 53 0.0 0.0 0.0 +de 07_gas 1 53 0.0 0.0 0.0 +de 08_non-res 1 53 0.0 0.0 0.0 +de 09_hydro_pump 1 53 0.0 0.0 0.0 +de 01_solar 1 54 2000.0 1.0 0.0 +de 02_wind_on 1 54 2000.0 1.0 0.0 +de 03_wind_off 1 54 1300.0 1.0 0.0 +de 04_res 1 54 0.0 0.0 0.0 +de 05_nuclear 1 54 0.0 0.0 0.0 +de 06_coal 1 54 0.0 0.0 0.0 +de 07_gas 1 54 0.0 0.0 0.0 +de 08_non-res 1 54 0.0 0.0 0.0 +de 09_hydro_pump 1 54 0.0 0.0 0.0 +de 01_solar 1 55 2000.0 1.0 0.0 +de 02_wind_on 1 55 2000.0 1.0 0.0 +de 03_wind_off 1 55 1400.0 1.0 0.0 +de 04_res 1 55 0.0 0.0 0.0 +de 05_nuclear 1 55 0.0 0.0 0.0 +de 06_coal 1 55 0.0 0.0 0.0 +de 07_gas 1 55 0.0 0.0 0.0 +de 08_non-res 1 55 0.0 0.0 0.0 +de 09_hydro_pump 1 55 0.0 0.0 0.0 +de 01_solar 1 56 2000.0 1.0 0.0 +de 02_wind_on 1 56 2000.0 1.0 0.0 +de 03_wind_off 1 56 1500.0 1.0 0.0 +de 04_res 1 56 0.0 0.0 0.0 +de 05_nuclear 1 56 0.0 0.0 0.0 +de 06_coal 1 56 0.0 0.0 0.0 +de 07_gas 1 56 0.0 0.0 0.0 +de 08_non-res 1 56 0.0 0.0 0.0 +de 09_hydro_pump 1 56 0.0 0.0 0.0 +de 01_solar 1 57 2000.0 1.0 0.0 +de 02_wind_on 1 57 2000.0 1.0 0.0 +de 03_wind_off 1 57 1600.0 1.0 0.0 +de 04_res 1 57 0.0 0.0 0.0 +de 05_nuclear 1 57 0.0 0.0 0.0 +de 06_coal 1 57 0.0 0.0 0.0 +de 07_gas 1 57 0.0 0.0 0.0 +de 08_non-res 1 57 0.0 0.0 0.0 +de 09_hydro_pump 1 57 0.0 0.0 0.0 +de 01_solar 1 58 2000.0 1.0 0.0 +de 02_wind_on 1 58 2000.0 1.0 0.0 +de 03_wind_off 1 58 1700.0 1.0 0.0 +de 04_res 1 58 0.0 0.0 0.0 +de 05_nuclear 1 58 0.0 0.0 0.0 +de 06_coal 1 58 0.0 0.0 0.0 +de 07_gas 1 58 0.0 0.0 0.0 +de 08_non-res 1 58 0.0 0.0 0.0 +de 09_hydro_pump 1 58 0.0 0.0 0.0 +de 01_solar 1 59 2000.0 1.0 0.0 +de 02_wind_on 1 59 2000.0 1.0 0.0 +de 03_wind_off 1 59 1800.0 1.0 0.0 +de 04_res 1 59 0.0 0.0 0.0 +de 05_nuclear 1 59 0.0 0.0 0.0 +de 06_coal 1 59 0.0 0.0 0.0 +de 07_gas 1 59 0.0 0.0 0.0 +de 08_non-res 1 59 0.0 0.0 0.0 +de 09_hydro_pump 1 59 0.0 0.0 0.0 +de 01_solar 1 60 2000.0 1.0 0.0 +de 02_wind_on 1 60 2000.0 1.0 0.0 +de 03_wind_off 1 60 1900.0 1.0 0.0 +de 04_res 1 60 0.0 0.0 0.0 +de 05_nuclear 1 60 0.0 0.0 0.0 +de 06_coal 1 60 0.0 0.0 0.0 +de 07_gas 1 60 0.0 0.0 0.0 +de 08_non-res 1 60 0.0 0.0 0.0 +de 09_hydro_pump 1 60 0.0 0.0 0.0 +de 01_solar 1 61 2000.0 1.0 0.0 +de 02_wind_on 1 61 2000.0 1.0 0.0 +de 03_wind_off 1 61 2000.0 1.0 0.0 +de 04_res 1 61 0.0 0.0 0.0 +de 05_nuclear 1 61 0.0 0.0 0.0 +de 06_coal 1 61 0.0 0.0 0.0 +de 07_gas 1 61 0.0 0.0 0.0 +de 08_non-res 1 61 0.0 0.0 0.0 +de 09_hydro_pump 1 61 0.0 0.0 0.0 +de 01_solar 1 62 2000.0 1.0 0.0 +de 02_wind_on 1 62 2000.0 1.0 0.0 +de 03_wind_off 1 62 2000.0 1.0 0.0 +de 04_res 1 62 100.0 1.0 0.0 +de 05_nuclear 1 62 0.0 0.0 0.0 +de 06_coal 1 62 0.0 0.0 0.0 +de 07_gas 1 62 0.0 0.0 0.0 +de 08_non-res 1 62 0.0 0.0 0.0 +de 09_hydro_pump 1 62 0.0 0.0 0.0 +de 01_solar 1 63 2000.0 1.0 0.0 +de 02_wind_on 1 63 2000.0 1.0 0.0 +de 03_wind_off 1 63 2000.0 1.0 0.0 +de 04_res 1 63 200.0 1.0 0.0 +de 05_nuclear 1 63 0.0 0.0 0.0 +de 06_coal 1 63 0.0 0.0 0.0 +de 07_gas 1 63 0.0 0.0 0.0 +de 08_non-res 1 63 0.0 0.0 0.0 +de 09_hydro_pump 1 63 0.0 0.0 0.0 +de 01_solar 1 64 2000.0 1.0 0.0 +de 02_wind_on 1 64 2000.0 1.0 0.0 +de 03_wind_off 1 64 2000.0 1.0 0.0 +de 04_res 1 64 300.0 1.0 0.0 +de 05_nuclear 1 64 0.0 0.0 0.0 +de 06_coal 1 64 0.0 0.0 0.0 +de 07_gas 1 64 0.0 0.0 0.0 +de 08_non-res 1 64 0.0 0.0 0.0 +de 09_hydro_pump 1 64 0.0 0.0 0.0 +de 01_solar 1 65 2000.0 1.0 0.0 +de 02_wind_on 1 65 2000.0 1.0 0.0 +de 03_wind_off 1 65 2000.0 1.0 0.0 +de 04_res 1 65 400.0 1.0 0.0 +de 05_nuclear 1 65 0.0 0.0 0.0 +de 06_coal 1 65 0.0 0.0 0.0 +de 07_gas 1 65 0.0 0.0 0.0 +de 08_non-res 1 65 0.0 0.0 0.0 +de 09_hydro_pump 1 65 0.0 0.0 0.0 +de 01_solar 1 66 2000.0 1.0 0.0 +de 02_wind_on 1 66 2000.0 1.0 0.0 +de 03_wind_off 1 66 2000.0 1.0 0.0 +de 04_res 1 66 500.0 1.0 0.0 +de 05_nuclear 1 66 0.0 0.0 0.0 +de 06_coal 1 66 0.0 0.0 0.0 +de 07_gas 1 66 0.0 0.0 0.0 +de 08_non-res 1 66 0.0 0.0 0.0 +de 09_hydro_pump 1 66 0.0 0.0 0.0 +de 01_solar 1 67 2000.0 1.0 0.0 +de 02_wind_on 1 67 2000.0 1.0 0.0 +de 03_wind_off 1 67 2000.0 1.0 0.0 +de 04_res 1 67 600.0 1.0 0.0 +de 05_nuclear 1 67 0.0 0.0 0.0 +de 06_coal 1 67 0.0 0.0 0.0 +de 07_gas 1 67 0.0 0.0 0.0 +de 08_non-res 1 67 0.0 0.0 0.0 +de 09_hydro_pump 1 67 0.0 0.0 0.0 +de 01_solar 1 68 2000.0 1.0 0.0 +de 02_wind_on 1 68 2000.0 1.0 0.0 +de 03_wind_off 1 68 2000.0 1.0 0.0 +de 04_res 1 68 700.0 1.0 0.0 +de 05_nuclear 1 68 0.0 0.0 0.0 +de 06_coal 1 68 0.0 0.0 0.0 +de 07_gas 1 68 0.0 0.0 0.0 +de 08_non-res 1 68 0.0 0.0 0.0 +de 09_hydro_pump 1 68 0.0 0.0 0.0 +de 01_solar 1 69 2000.0 1.0 0.0 +de 02_wind_on 1 69 2000.0 1.0 0.0 +de 03_wind_off 1 69 2000.0 1.0 0.0 +de 04_res 1 69 800.0 1.0 0.0 +de 05_nuclear 1 69 0.0 0.0 0.0 +de 06_coal 1 69 0.0 0.0 0.0 +de 07_gas 1 69 0.0 0.0 0.0 +de 08_non-res 1 69 0.0 0.0 0.0 +de 09_hydro_pump 1 69 0.0 0.0 0.0 +de 01_solar 1 70 2000.0 1.0 0.0 +de 02_wind_on 1 70 2000.0 1.0 0.0 +de 03_wind_off 1 70 2000.0 1.0 0.0 +de 04_res 1 70 900.0 1.0 0.0 +de 05_nuclear 1 70 0.0 0.0 0.0 +de 06_coal 1 70 0.0 0.0 0.0 +de 07_gas 1 70 0.0 0.0 0.0 +de 08_non-res 1 70 0.0 0.0 0.0 +de 09_hydro_pump 1 70 0.0 0.0 0.0 +de 01_solar 1 71 2000.0 1.0 0.0 +de 02_wind_on 1 71 2000.0 1.0 0.0 +de 03_wind_off 1 71 2000.0 1.0 0.0 +de 04_res 1 71 1000.0 1.0 0.0 +de 05_nuclear 1 71 0.0 0.0 0.0 +de 06_coal 1 71 0.0 0.0 0.0 +de 07_gas 1 71 0.0 0.0 0.0 +de 08_non-res 1 71 0.0 0.0 0.0 +de 09_hydro_pump 1 71 0.0 0.0 0.0 +de 01_solar 1 72 2000.0 1.0 0.0 +de 02_wind_on 1 72 2000.0 1.0 0.0 +de 03_wind_off 1 72 2000.0 1.0 0.0 +de 04_res 1 72 1100.0 1.0 0.0 +de 05_nuclear 1 72 0.0 0.0 0.0 +de 06_coal 1 72 0.0 0.0 0.0 +de 07_gas 1 72 0.0 0.0 0.0 +de 08_non-res 1 72 0.0 0.0 0.0 +de 09_hydro_pump 1 72 0.0 0.0 0.0 +de 01_solar 1 73 2000.0 1.0 0.0 +de 02_wind_on 1 73 2000.0 1.0 0.0 +de 03_wind_off 1 73 2000.0 1.0 0.0 +de 04_res 1 73 1200.0 1.0 0.0 +de 05_nuclear 1 73 0.0 0.0 0.0 +de 06_coal 1 73 0.0 0.0 0.0 +de 07_gas 1 73 0.0 0.0 0.0 +de 08_non-res 1 73 0.0 0.0 0.0 +de 09_hydro_pump 1 73 0.0 0.0 0.0 +de 01_solar 1 74 2000.0 1.0 0.0 +de 02_wind_on 1 74 2000.0 1.0 0.0 +de 03_wind_off 1 74 2000.0 1.0 0.0 +de 04_res 1 74 1300.0 1.0 0.0 +de 05_nuclear 1 74 0.0 0.0 0.0 +de 06_coal 1 74 0.0 0.0 0.0 +de 07_gas 1 74 0.0 0.0 0.0 +de 08_non-res 1 74 0.0 0.0 0.0 +de 09_hydro_pump 1 74 0.0 0.0 0.0 +de 01_solar 1 75 2000.0 1.0 0.0 +de 02_wind_on 1 75 2000.0 1.0 0.0 +de 03_wind_off 1 75 2000.0 1.0 0.0 +de 04_res 1 75 1400.0 1.0 0.0 +de 05_nuclear 1 75 0.0 0.0 0.0 +de 06_coal 1 75 0.0 0.0 0.0 +de 07_gas 1 75 0.0 0.0 0.0 +de 08_non-res 1 75 0.0 0.0 0.0 +de 09_hydro_pump 1 75 0.0 0.0 0.0 +de 01_solar 1 76 2000.0 1.0 0.0 +de 02_wind_on 1 76 2000.0 1.0 0.0 +de 03_wind_off 1 76 2000.0 1.0 0.0 +de 04_res 1 76 1500.0 1.0 0.0 +de 05_nuclear 1 76 0.0 0.0 0.0 +de 06_coal 1 76 0.0 0.0 0.0 +de 07_gas 1 76 0.0 0.0 0.0 +de 08_non-res 1 76 0.0 0.0 0.0 +de 09_hydro_pump 1 76 0.0 0.0 0.0 +de 01_solar 1 77 2000.0 1.0 0.0 +de 02_wind_on 1 77 2000.0 1.0 0.0 +de 03_wind_off 1 77 2000.0 1.0 0.0 +de 04_res 1 77 1600.0 1.0 0.0 +de 05_nuclear 1 77 0.0 0.0 0.0 +de 06_coal 1 77 0.0 0.0 0.0 +de 07_gas 1 77 0.0 0.0 0.0 +de 08_non-res 1 77 0.0 0.0 0.0 +de 09_hydro_pump 1 77 0.0 0.0 0.0 +de 01_solar 1 78 2000.0 1.0 0.0 +de 02_wind_on 1 78 2000.0 1.0 0.0 +de 03_wind_off 1 78 2000.0 1.0 0.0 +de 04_res 1 78 1700.0 1.0 0.0 +de 05_nuclear 1 78 0.0 0.0 0.0 +de 06_coal 1 78 0.0 0.0 0.0 +de 07_gas 1 78 0.0 0.0 0.0 +de 08_non-res 1 78 0.0 0.0 0.0 +de 09_hydro_pump 1 78 0.0 0.0 0.0 +de 01_solar 1 79 2000.0 1.0 0.0 +de 02_wind_on 1 79 2000.0 1.0 0.0 +de 03_wind_off 1 79 2000.0 1.0 0.0 +de 04_res 1 79 1800.0 1.0 0.0 +de 05_nuclear 1 79 0.0 0.0 0.0 +de 06_coal 1 79 0.0 0.0 0.0 +de 07_gas 1 79 0.0 0.0 0.0 +de 08_non-res 1 79 0.0 0.0 0.0 +de 09_hydro_pump 1 79 0.0 0.0 0.0 +de 01_solar 1 80 2000.0 1.0 0.0 +de 02_wind_on 1 80 2000.0 1.0 0.0 +de 03_wind_off 1 80 2000.0 1.0 0.0 +de 04_res 1 80 1900.0 1.0 0.0 +de 05_nuclear 1 80 0.0 0.0 0.0 +de 06_coal 1 80 0.0 0.0 0.0 +de 07_gas 1 80 0.0 0.0 0.0 +de 08_non-res 1 80 0.0 0.0 0.0 +de 09_hydro_pump 1 80 0.0 0.0 0.0 +de 01_solar 1 81 2000.0 1.0 0.0 +de 02_wind_on 1 81 2000.0 1.0 0.0 +de 03_wind_off 1 81 2000.0 1.0 0.0 +de 04_res 1 81 2000.0 1.0 0.0 +de 05_nuclear 1 81 0.0 0.0 0.0 +de 06_coal 1 81 0.0 0.0 0.0 +de 07_gas 1 81 0.0 0.0 0.0 +de 08_non-res 1 81 0.0 0.0 0.0 +de 09_hydro_pump 1 81 0.0 0.0 0.0 +de 01_solar 1 82 2000.0 1.0 0.0 +de 02_wind_on 1 82 2000.0 1.0 0.0 +de 03_wind_off 1 82 2000.0 1.0 0.0 +de 04_res 1 82 2000.0 1.0 0.0 +de 05_nuclear 1 82 100.0 1.0 0.0 +de 06_coal 1 82 0.0 0.0 0.0 +de 07_gas 1 82 0.0 0.0 0.0 +de 08_non-res 1 82 0.0 0.0 0.0 +de 09_hydro_pump 1 82 0.0 0.0 0.0 +de 01_solar 1 83 2000.0 1.0 0.0 +de 02_wind_on 1 83 2000.0 1.0 0.0 +de 03_wind_off 1 83 2000.0 1.0 0.0 +de 04_res 1 83 2000.0 1.0 0.0 +de 05_nuclear 1 83 200.0 1.0 0.0 +de 06_coal 1 83 0.0 0.0 0.0 +de 07_gas 1 83 0.0 0.0 0.0 +de 08_non-res 1 83 0.0 0.0 0.0 +de 09_hydro_pump 1 83 0.0 0.0 0.0 +de 01_solar 1 84 2000.0 1.0 0.0 +de 02_wind_on 1 84 2000.0 1.0 0.0 +de 03_wind_off 1 84 2000.0 1.0 0.0 +de 04_res 1 84 2000.0 1.0 0.0 +de 05_nuclear 1 84 300.0 1.0 0.0 +de 06_coal 1 84 0.0 0.0 0.0 +de 07_gas 1 84 0.0 0.0 0.0 +de 08_non-res 1 84 0.0 0.0 0.0 +de 09_hydro_pump 1 84 0.0 0.0 0.0 +de 01_solar 1 85 2000.0 1.0 0.0 +de 02_wind_on 1 85 2000.0 1.0 0.0 +de 03_wind_off 1 85 2000.0 1.0 0.0 +de 04_res 1 85 2000.0 1.0 0.0 +de 05_nuclear 1 85 400.0 1.0 0.0 +de 06_coal 1 85 0.0 0.0 0.0 +de 07_gas 1 85 0.0 0.0 0.0 +de 08_non-res 1 85 0.0 0.0 0.0 +de 09_hydro_pump 1 85 0.0 0.0 0.0 +de 01_solar 1 86 2000.0 1.0 0.0 +de 02_wind_on 1 86 2000.0 1.0 0.0 +de 03_wind_off 1 86 2000.0 1.0 0.0 +de 04_res 1 86 2000.0 1.0 0.0 +de 05_nuclear 1 86 500.0 1.0 0.0 +de 06_coal 1 86 0.0 0.0 0.0 +de 07_gas 1 86 0.0 0.0 0.0 +de 08_non-res 1 86 0.0 0.0 0.0 +de 09_hydro_pump 1 86 0.0 0.0 0.0 +de 01_solar 1 87 2000.0 1.0 0.0 +de 02_wind_on 1 87 2000.0 1.0 0.0 +de 03_wind_off 1 87 2000.0 1.0 0.0 +de 04_res 1 87 2000.0 1.0 0.0 +de 05_nuclear 1 87 600.0 1.0 0.0 +de 06_coal 1 87 0.0 0.0 0.0 +de 07_gas 1 87 0.0 0.0 0.0 +de 08_non-res 1 87 0.0 0.0 0.0 +de 09_hydro_pump 1 87 0.0 0.0 0.0 +de 01_solar 1 88 2000.0 1.0 0.0 +de 02_wind_on 1 88 2000.0 1.0 0.0 +de 03_wind_off 1 88 2000.0 1.0 0.0 +de 04_res 1 88 2000.0 1.0 0.0 +de 05_nuclear 1 88 700.0 1.0 0.0 +de 06_coal 1 88 0.0 0.0 0.0 +de 07_gas 1 88 0.0 0.0 0.0 +de 08_non-res 1 88 0.0 0.0 0.0 +de 09_hydro_pump 1 88 0.0 0.0 0.0 +de 01_solar 1 89 2000.0 1.0 0.0 +de 02_wind_on 1 89 2000.0 1.0 0.0 +de 03_wind_off 1 89 2000.0 1.0 0.0 +de 04_res 1 89 2000.0 1.0 0.0 +de 05_nuclear 1 89 800.0 1.0 0.0 +de 06_coal 1 89 0.0 0.0 0.0 +de 07_gas 1 89 0.0 0.0 0.0 +de 08_non-res 1 89 0.0 0.0 0.0 +de 09_hydro_pump 1 89 0.0 0.0 0.0 +de 01_solar 1 90 2000.0 1.0 0.0 +de 02_wind_on 1 90 2000.0 1.0 0.0 +de 03_wind_off 1 90 2000.0 1.0 0.0 +de 04_res 1 90 2000.0 1.0 0.0 +de 05_nuclear 1 90 900.0 1.0 0.0 +de 06_coal 1 90 0.0 0.0 0.0 +de 07_gas 1 90 0.0 0.0 0.0 +de 08_non-res 1 90 0.0 0.0 0.0 +de 09_hydro_pump 1 90 0.0 0.0 0.0 +de 01_solar 1 91 2000.0 1.0 0.0 +de 02_wind_on 1 91 2000.0 1.0 0.0 +de 03_wind_off 1 91 2000.0 1.0 0.0 +de 04_res 1 91 2000.0 1.0 0.0 +de 05_nuclear 1 91 1000.0 1.0 0.0 +de 06_coal 1 91 0.0 0.0 0.0 +de 07_gas 1 91 0.0 0.0 0.0 +de 08_non-res 1 91 0.0 0.0 0.0 +de 09_hydro_pump 1 91 0.0 0.0 0.0 +de 01_solar 1 92 2000.0 1.0 0.0 +de 02_wind_on 1 92 2000.0 1.0 0.0 +de 03_wind_off 1 92 2000.0 1.0 0.0 +de 04_res 1 92 2000.0 1.0 0.0 +de 05_nuclear 1 92 1100.0 1.0 0.0 +de 06_coal 1 92 0.0 0.0 0.0 +de 07_gas 1 92 0.0 0.0 0.0 +de 08_non-res 1 92 0.0 0.0 0.0 +de 09_hydro_pump 1 92 0.0 0.0 0.0 +de 01_solar 1 93 2000.0 1.0 0.0 +de 02_wind_on 1 93 2000.0 1.0 0.0 +de 03_wind_off 1 93 2000.0 1.0 0.0 +de 04_res 1 93 2000.0 1.0 0.0 +de 05_nuclear 1 93 1200.0 1.0 0.0 +de 06_coal 1 93 0.0 0.0 0.0 +de 07_gas 1 93 0.0 0.0 0.0 +de 08_non-res 1 93 0.0 0.0 0.0 +de 09_hydro_pump 1 93 0.0 0.0 0.0 +de 01_solar 1 94 2000.0 1.0 0.0 +de 02_wind_on 1 94 2000.0 1.0 0.0 +de 03_wind_off 1 94 2000.0 1.0 0.0 +de 04_res 1 94 2000.0 1.0 0.0 +de 05_nuclear 1 94 1300.0 1.0 0.0 +de 06_coal 1 94 0.0 0.0 0.0 +de 07_gas 1 94 0.0 0.0 0.0 +de 08_non-res 1 94 0.0 0.0 0.0 +de 09_hydro_pump 1 94 0.0 0.0 0.0 +de 01_solar 1 95 2000.0 1.0 0.0 +de 02_wind_on 1 95 2000.0 1.0 0.0 +de 03_wind_off 1 95 2000.0 1.0 0.0 +de 04_res 1 95 2000.0 1.0 0.0 +de 05_nuclear 1 95 1400.0 1.0 0.0 +de 06_coal 1 95 0.0 0.0 0.0 +de 07_gas 1 95 0.0 0.0 0.0 +de 08_non-res 1 95 0.0 0.0 0.0 +de 09_hydro_pump 1 95 0.0 0.0 0.0 +de 01_solar 1 96 2000.0 1.0 0.0 +de 02_wind_on 1 96 2000.0 1.0 0.0 +de 03_wind_off 1 96 2000.0 1.0 0.0 +de 04_res 1 96 2000.0 1.0 0.0 +de 05_nuclear 1 96 1500.0 1.0 0.0 +de 06_coal 1 96 0.0 0.0 0.0 +de 07_gas 1 96 0.0 0.0 0.0 +de 08_non-res 1 96 0.0 0.0 0.0 +de 09_hydro_pump 1 96 0.0 0.0 0.0 +de 01_solar 1 97 2000.0 1.0 0.0 +de 02_wind_on 1 97 2000.0 1.0 0.0 +de 03_wind_off 1 97 2000.0 1.0 0.0 +de 04_res 1 97 2000.0 1.0 0.0 +de 05_nuclear 1 97 1600.0 1.0 0.0 +de 06_coal 1 97 0.0 0.0 0.0 +de 07_gas 1 97 0.0 0.0 0.0 +de 08_non-res 1 97 0.0 0.0 0.0 +de 09_hydro_pump 1 97 0.0 0.0 0.0 +de 01_solar 1 98 2000.0 1.0 0.0 +de 02_wind_on 1 98 2000.0 1.0 0.0 +de 03_wind_off 1 98 2000.0 1.0 0.0 +de 04_res 1 98 2000.0 1.0 0.0 +de 05_nuclear 1 98 1700.0 1.0 0.0 +de 06_coal 1 98 0.0 0.0 0.0 +de 07_gas 1 98 0.0 0.0 0.0 +de 08_non-res 1 98 0.0 0.0 0.0 +de 09_hydro_pump 1 98 0.0 0.0 0.0 +de 01_solar 1 99 2000.0 1.0 0.0 +de 02_wind_on 1 99 2000.0 1.0 0.0 +de 03_wind_off 1 99 2000.0 1.0 0.0 +de 04_res 1 99 2000.0 1.0 0.0 +de 05_nuclear 1 99 1800.0 1.0 0.0 +de 06_coal 1 99 0.0 0.0 0.0 +de 07_gas 1 99 0.0 0.0 0.0 +de 08_non-res 1 99 0.0 0.0 0.0 +de 09_hydro_pump 1 99 0.0 0.0 0.0 +de 01_solar 1 100 2000.0 1.0 0.0 +de 02_wind_on 1 100 2000.0 1.0 0.0 +de 03_wind_off 1 100 2000.0 1.0 0.0 +de 04_res 1 100 2000.0 1.0 0.0 +de 05_nuclear 1 100 1900.0 1.0 0.0 +de 06_coal 1 100 0.0 0.0 0.0 +de 07_gas 1 100 0.0 0.0 0.0 +de 08_non-res 1 100 0.0 0.0 0.0 +de 09_hydro_pump 1 100 0.0 0.0 0.0 +de 01_solar 1 101 2000.0 1.0 0.0 +de 02_wind_on 1 101 2000.0 1.0 0.0 +de 03_wind_off 1 101 2000.0 1.0 0.0 +de 04_res 1 101 2000.0 1.0 0.0 +de 05_nuclear 1 101 2000.0 1.0 0.0 +de 06_coal 1 101 0.0 0.0 0.0 +de 07_gas 1 101 0.0 0.0 0.0 +de 08_non-res 1 101 0.0 0.0 0.0 +de 09_hydro_pump 1 101 0.0 0.0 0.0 +de 01_solar 1 102 2000.0 1.0 0.0 +de 02_wind_on 1 102 2000.0 1.0 0.0 +de 03_wind_off 1 102 2000.0 1.0 0.0 +de 04_res 1 102 2000.0 1.0 0.0 +de 05_nuclear 1 102 2000.0 1.0 0.0 +de 06_coal 1 102 100.0 1.0 0.0 +de 07_gas 1 102 0.0 0.0 0.0 +de 08_non-res 1 102 0.0 0.0 0.0 +de 09_hydro_pump 1 102 0.0 0.0 0.0 +de 01_solar 1 103 2000.0 1.0 0.0 +de 02_wind_on 1 103 2000.0 1.0 0.0 +de 03_wind_off 1 103 2000.0 1.0 0.0 +de 04_res 1 103 2000.0 1.0 0.0 +de 05_nuclear 1 103 2000.0 1.0 0.0 +de 06_coal 1 103 200.0 1.0 0.0 +de 07_gas 1 103 0.0 0.0 0.0 +de 08_non-res 1 103 0.0 0.0 0.0 +de 09_hydro_pump 1 103 0.0 0.0 0.0 +de 01_solar 1 104 2000.0 1.0 0.0 +de 02_wind_on 1 104 2000.0 1.0 0.0 +de 03_wind_off 1 104 2000.0 1.0 0.0 +de 04_res 1 104 2000.0 1.0 0.0 +de 05_nuclear 1 104 2000.0 1.0 0.0 +de 06_coal 1 104 300.0 1.0 0.0 +de 07_gas 1 104 0.0 0.0 0.0 +de 08_non-res 1 104 0.0 0.0 0.0 +de 09_hydro_pump 1 104 0.0 0.0 0.0 +de 01_solar 1 105 2000.0 1.0 0.0 +de 02_wind_on 1 105 2000.0 1.0 0.0 +de 03_wind_off 1 105 2000.0 1.0 0.0 +de 04_res 1 105 2000.0 1.0 0.0 +de 05_nuclear 1 105 2000.0 1.0 0.0 +de 06_coal 1 105 400.0 1.0 0.0 +de 07_gas 1 105 0.0 0.0 0.0 +de 08_non-res 1 105 0.0 0.0 0.0 +de 09_hydro_pump 1 105 0.0 0.0 0.0 +de 01_solar 1 106 2000.0 1.0 0.0 +de 02_wind_on 1 106 2000.0 1.0 0.0 +de 03_wind_off 1 106 2000.0 1.0 0.0 +de 04_res 1 106 2000.0 1.0 0.0 +de 05_nuclear 1 106 2000.0 1.0 0.0 +de 06_coal 1 106 500.0 1.0 0.0 +de 07_gas 1 106 0.0 0.0 0.0 +de 08_non-res 1 106 0.0 0.0 0.0 +de 09_hydro_pump 1 106 0.0 0.0 0.0 +de 01_solar 1 107 2000.0 1.0 0.0 +de 02_wind_on 1 107 2000.0 1.0 0.0 +de 03_wind_off 1 107 2000.0 1.0 0.0 +de 04_res 1 107 2000.0 1.0 0.0 +de 05_nuclear 1 107 2000.0 1.0 0.0 +de 06_coal 1 107 600.0 1.0 0.0 +de 07_gas 1 107 0.0 0.0 0.0 +de 08_non-res 1 107 0.0 0.0 0.0 +de 09_hydro_pump 1 107 0.0 0.0 0.0 +de 01_solar 1 108 2000.0 1.0 0.0 +de 02_wind_on 1 108 2000.0 1.0 0.0 +de 03_wind_off 1 108 2000.0 1.0 0.0 +de 04_res 1 108 2000.0 1.0 0.0 +de 05_nuclear 1 108 2000.0 1.0 0.0 +de 06_coal 1 108 700.0 1.0 0.0 +de 07_gas 1 108 0.0 0.0 0.0 +de 08_non-res 1 108 0.0 0.0 0.0 +de 09_hydro_pump 1 108 0.0 0.0 0.0 +de 01_solar 1 109 2000.0 1.0 0.0 +de 02_wind_on 1 109 2000.0 1.0 0.0 +de 03_wind_off 1 109 2000.0 1.0 0.0 +de 04_res 1 109 2000.0 1.0 0.0 +de 05_nuclear 1 109 2000.0 1.0 0.0 +de 06_coal 1 109 800.0 1.0 0.0 +de 07_gas 1 109 0.0 0.0 0.0 +de 08_non-res 1 109 0.0 0.0 0.0 +de 09_hydro_pump 1 109 0.0 0.0 0.0 +de 01_solar 1 110 2000.0 1.0 0.0 +de 02_wind_on 1 110 2000.0 1.0 0.0 +de 03_wind_off 1 110 2000.0 1.0 0.0 +de 04_res 1 110 2000.0 1.0 0.0 +de 05_nuclear 1 110 2000.0 1.0 0.0 +de 06_coal 1 110 900.0 1.0 0.0 +de 07_gas 1 110 0.0 0.0 0.0 +de 08_non-res 1 110 0.0 0.0 0.0 +de 09_hydro_pump 1 110 0.0 0.0 0.0 +de 01_solar 1 111 2000.0 1.0 0.0 +de 02_wind_on 1 111 2000.0 1.0 0.0 +de 03_wind_off 1 111 2000.0 1.0 0.0 +de 04_res 1 111 2000.0 1.0 0.0 +de 05_nuclear 1 111 2000.0 1.0 0.0 +de 06_coal 1 111 1000.0 1.0 0.0 +de 07_gas 1 111 0.0 0.0 0.0 +de 08_non-res 1 111 0.0 0.0 0.0 +de 09_hydro_pump 1 111 0.0 0.0 0.0 +de 01_solar 1 112 2000.0 1.0 0.0 +de 02_wind_on 1 112 2000.0 1.0 0.0 +de 03_wind_off 1 112 2000.0 1.0 0.0 +de 04_res 1 112 2000.0 1.0 0.0 +de 05_nuclear 1 112 2000.0 1.0 0.0 +de 06_coal 1 112 1100.0 1.0 0.0 +de 07_gas 1 112 0.0 0.0 0.0 +de 08_non-res 1 112 0.0 0.0 0.0 +de 09_hydro_pump 1 112 0.0 0.0 0.0 +de 01_solar 1 113 2000.0 1.0 0.0 +de 02_wind_on 1 113 2000.0 1.0 0.0 +de 03_wind_off 1 113 2000.0 1.0 0.0 +de 04_res 1 113 2000.0 1.0 0.0 +de 05_nuclear 1 113 2000.0 1.0 0.0 +de 06_coal 1 113 1200.0 1.0 0.0 +de 07_gas 1 113 0.0 0.0 0.0 +de 08_non-res 1 113 0.0 0.0 0.0 +de 09_hydro_pump 1 113 0.0 0.0 0.0 +de 01_solar 1 114 2000.0 1.0 0.0 +de 02_wind_on 1 114 2000.0 1.0 0.0 +de 03_wind_off 1 114 2000.0 1.0 0.0 +de 04_res 1 114 2000.0 1.0 0.0 +de 05_nuclear 1 114 2000.0 1.0 0.0 +de 06_coal 1 114 1300.0 1.0 0.0 +de 07_gas 1 114 0.0 0.0 0.0 +de 08_non-res 1 114 0.0 0.0 0.0 +de 09_hydro_pump 1 114 0.0 0.0 0.0 +de 01_solar 1 115 2000.0 1.0 0.0 +de 02_wind_on 1 115 2000.0 1.0 0.0 +de 03_wind_off 1 115 2000.0 1.0 0.0 +de 04_res 1 115 2000.0 1.0 0.0 +de 05_nuclear 1 115 2000.0 1.0 0.0 +de 06_coal 1 115 1400.0 1.0 0.0 +de 07_gas 1 115 0.0 0.0 0.0 +de 08_non-res 1 115 0.0 0.0 0.0 +de 09_hydro_pump 1 115 0.0 0.0 0.0 +de 01_solar 1 116 2000.0 1.0 0.0 +de 02_wind_on 1 116 2000.0 1.0 0.0 +de 03_wind_off 1 116 2000.0 1.0 0.0 +de 04_res 1 116 2000.0 1.0 0.0 +de 05_nuclear 1 116 2000.0 1.0 0.0 +de 06_coal 1 116 1500.0 1.0 0.0 +de 07_gas 1 116 0.0 0.0 0.0 +de 08_non-res 1 116 0.0 0.0 0.0 +de 09_hydro_pump 1 116 0.0 0.0 0.0 +de 01_solar 1 117 2000.0 1.0 0.0 +de 02_wind_on 1 117 2000.0 1.0 0.0 +de 03_wind_off 1 117 2000.0 1.0 0.0 +de 04_res 1 117 2000.0 1.0 0.0 +de 05_nuclear 1 117 2000.0 1.0 0.0 +de 06_coal 1 117 1600.0 1.0 0.0 +de 07_gas 1 117 0.0 0.0 0.0 +de 08_non-res 1 117 0.0 0.0 0.0 +de 09_hydro_pump 1 117 0.0 0.0 0.0 +de 01_solar 1 118 2000.0 1.0 0.0 +de 02_wind_on 1 118 2000.0 1.0 0.0 +de 03_wind_off 1 118 2000.0 1.0 0.0 +de 04_res 1 118 2000.0 1.0 0.0 +de 05_nuclear 1 118 2000.0 1.0 0.0 +de 06_coal 1 118 1700.0 1.0 0.0 +de 07_gas 1 118 0.0 0.0 0.0 +de 08_non-res 1 118 0.0 0.0 0.0 +de 09_hydro_pump 1 118 0.0 0.0 0.0 +de 01_solar 1 119 2000.0 1.0 0.0 +de 02_wind_on 1 119 2000.0 1.0 0.0 +de 03_wind_off 1 119 2000.0 1.0 0.0 +de 04_res 1 119 2000.0 1.0 0.0 +de 05_nuclear 1 119 2000.0 1.0 0.0 +de 06_coal 1 119 1800.0 1.0 0.0 +de 07_gas 1 119 0.0 0.0 0.0 +de 08_non-res 1 119 0.0 0.0 0.0 +de 09_hydro_pump 1 119 0.0 0.0 0.0 +de 01_solar 1 120 2000.0 1.0 0.0 +de 02_wind_on 1 120 2000.0 1.0 0.0 +de 03_wind_off 1 120 2000.0 1.0 0.0 +de 04_res 1 120 2000.0 1.0 0.0 +de 05_nuclear 1 120 2000.0 1.0 0.0 +de 06_coal 1 120 1900.0 1.0 0.0 +de 07_gas 1 120 0.0 0.0 0.0 +de 08_non-res 1 120 0.0 0.0 0.0 +de 09_hydro_pump 1 120 0.0 0.0 0.0 +de 01_solar 1 121 2000.0 1.0 0.0 +de 02_wind_on 1 121 2000.0 1.0 0.0 +de 03_wind_off 1 121 2000.0 1.0 0.0 +de 04_res 1 121 2000.0 1.0 0.0 +de 05_nuclear 1 121 2000.0 1.0 0.0 +de 06_coal 1 121 2000.0 1.0 0.0 +de 07_gas 1 121 0.0 0.0 0.0 +de 08_non-res 1 121 0.0 0.0 0.0 +de 09_hydro_pump 1 121 0.0 0.0 0.0 +de 01_solar 1 122 2000.0 1.0 0.0 +de 02_wind_on 1 122 2000.0 1.0 0.0 +de 03_wind_off 1 122 2000.0 1.0 0.0 +de 04_res 1 122 2000.0 1.0 0.0 +de 05_nuclear 1 122 2000.0 1.0 0.0 +de 06_coal 1 122 2000.0 1.0 0.0 +de 07_gas 1 122 100.0 1.0 0.0 +de 08_non-res 1 122 0.0 0.0 0.0 +de 09_hydro_pump 1 122 0.0 0.0 0.0 +de 01_solar 1 123 2000.0 1.0 0.0 +de 02_wind_on 1 123 2000.0 1.0 0.0 +de 03_wind_off 1 123 2000.0 1.0 0.0 +de 04_res 1 123 2000.0 1.0 0.0 +de 05_nuclear 1 123 2000.0 1.0 0.0 +de 06_coal 1 123 2000.0 1.0 0.0 +de 07_gas 1 123 200.0 1.0 0.0 +de 08_non-res 1 123 0.0 0.0 0.0 +de 09_hydro_pump 1 123 0.0 0.0 0.0 +de 01_solar 1 124 2000.0 1.0 0.0 +de 02_wind_on 1 124 2000.0 1.0 0.0 +de 03_wind_off 1 124 2000.0 1.0 0.0 +de 04_res 1 124 2000.0 1.0 0.0 +de 05_nuclear 1 124 2000.0 1.0 0.0 +de 06_coal 1 124 2000.0 1.0 0.0 +de 07_gas 1 124 300.0 1.0 0.0 +de 08_non-res 1 124 0.0 0.0 0.0 +de 09_hydro_pump 1 124 0.0 0.0 0.0 +de 01_solar 1 125 2000.0 1.0 0.0 +de 02_wind_on 1 125 2000.0 1.0 0.0 +de 03_wind_off 1 125 2000.0 1.0 0.0 +de 04_res 1 125 2000.0 1.0 0.0 +de 05_nuclear 1 125 2000.0 1.0 0.0 +de 06_coal 1 125 2000.0 1.0 0.0 +de 07_gas 1 125 400.0 1.0 0.0 +de 08_non-res 1 125 0.0 0.0 0.0 +de 09_hydro_pump 1 125 0.0 0.0 0.0 +de 01_solar 1 126 2000.0 1.0 0.0 +de 02_wind_on 1 126 2000.0 1.0 0.0 +de 03_wind_off 1 126 2000.0 1.0 0.0 +de 04_res 1 126 2000.0 1.0 0.0 +de 05_nuclear 1 126 2000.0 1.0 0.0 +de 06_coal 1 126 2000.0 1.0 0.0 +de 07_gas 1 126 500.0 1.0 0.0 +de 08_non-res 1 126 0.0 0.0 0.0 +de 09_hydro_pump 1 126 0.0 0.0 0.0 +de 01_solar 1 127 2000.0 1.0 0.0 +de 02_wind_on 1 127 2000.0 1.0 0.0 +de 03_wind_off 1 127 2000.0 1.0 0.0 +de 04_res 1 127 2000.0 1.0 0.0 +de 05_nuclear 1 127 2000.0 1.0 0.0 +de 06_coal 1 127 2000.0 1.0 0.0 +de 07_gas 1 127 600.0 1.0 0.0 +de 08_non-res 1 127 0.0 0.0 0.0 +de 09_hydro_pump 1 127 0.0 0.0 0.0 +de 01_solar 1 128 2000.0 1.0 0.0 +de 02_wind_on 1 128 2000.0 1.0 0.0 +de 03_wind_off 1 128 2000.0 1.0 0.0 +de 04_res 1 128 2000.0 1.0 0.0 +de 05_nuclear 1 128 2000.0 1.0 0.0 +de 06_coal 1 128 2000.0 1.0 0.0 +de 07_gas 1 128 700.0 1.0 0.0 +de 08_non-res 1 128 0.0 0.0 0.0 +de 09_hydro_pump 1 128 0.0 0.0 0.0 +de 01_solar 1 129 2000.0 1.0 0.0 +de 02_wind_on 1 129 2000.0 1.0 0.0 +de 03_wind_off 1 129 2000.0 1.0 0.0 +de 04_res 1 129 2000.0 1.0 0.0 +de 05_nuclear 1 129 2000.0 1.0 0.0 +de 06_coal 1 129 2000.0 1.0 0.0 +de 07_gas 1 129 800.0 1.0 0.0 +de 08_non-res 1 129 0.0 0.0 0.0 +de 09_hydro_pump 1 129 0.0 0.0 0.0 +de 01_solar 1 130 2000.0 1.0 0.0 +de 02_wind_on 1 130 2000.0 1.0 0.0 +de 03_wind_off 1 130 2000.0 1.0 0.0 +de 04_res 1 130 2000.0 1.0 0.0 +de 05_nuclear 1 130 2000.0 1.0 0.0 +de 06_coal 1 130 2000.0 1.0 0.0 +de 07_gas 1 130 900.0 1.0 0.0 +de 08_non-res 1 130 0.0 0.0 0.0 +de 09_hydro_pump 1 130 0.0 0.0 0.0 +de 01_solar 1 131 2000.0 1.0 0.0 +de 02_wind_on 1 131 2000.0 1.0 0.0 +de 03_wind_off 1 131 2000.0 1.0 0.0 +de 04_res 1 131 2000.0 1.0 0.0 +de 05_nuclear 1 131 2000.0 1.0 0.0 +de 06_coal 1 131 2000.0 1.0 0.0 +de 07_gas 1 131 1000.0 1.0 0.0 +de 08_non-res 1 131 0.0 0.0 0.0 +de 09_hydro_pump 1 131 0.0 0.0 0.0 +de 01_solar 1 132 2000.0 1.0 0.0 +de 02_wind_on 1 132 2000.0 1.0 0.0 +de 03_wind_off 1 132 2000.0 1.0 0.0 +de 04_res 1 132 2000.0 1.0 0.0 +de 05_nuclear 1 132 2000.0 1.0 0.0 +de 06_coal 1 132 2000.0 1.0 0.0 +de 07_gas 1 132 1100.0 1.0 0.0 +de 08_non-res 1 132 0.0 0.0 0.0 +de 09_hydro_pump 1 132 0.0 0.0 0.0 +de 01_solar 1 133 2000.0 1.0 0.0 +de 02_wind_on 1 133 2000.0 1.0 0.0 +de 03_wind_off 1 133 2000.0 1.0 0.0 +de 04_res 1 133 2000.0 1.0 0.0 +de 05_nuclear 1 133 2000.0 1.0 0.0 +de 06_coal 1 133 2000.0 1.0 0.0 +de 07_gas 1 133 1200.0 1.0 0.0 +de 08_non-res 1 133 0.0 0.0 0.0 +de 09_hydro_pump 1 133 0.0 0.0 0.0 +de 01_solar 1 134 2000.0 1.0 0.0 +de 02_wind_on 1 134 2000.0 1.0 0.0 +de 03_wind_off 1 134 2000.0 1.0 0.0 +de 04_res 1 134 2000.0 1.0 0.0 +de 05_nuclear 1 134 2000.0 1.0 0.0 +de 06_coal 1 134 2000.0 1.0 0.0 +de 07_gas 1 134 1300.0 1.0 0.0 +de 08_non-res 1 134 0.0 0.0 0.0 +de 09_hydro_pump 1 134 0.0 0.0 0.0 +de 01_solar 1 135 2000.0 1.0 0.0 +de 02_wind_on 1 135 2000.0 1.0 0.0 +de 03_wind_off 1 135 2000.0 1.0 0.0 +de 04_res 1 135 2000.0 1.0 0.0 +de 05_nuclear 1 135 2000.0 1.0 0.0 +de 06_coal 1 135 2000.0 1.0 0.0 +de 07_gas 1 135 1400.0 1.0 0.0 +de 08_non-res 1 135 0.0 0.0 0.0 +de 09_hydro_pump 1 135 0.0 0.0 0.0 +de 01_solar 1 136 2000.0 1.0 0.0 +de 02_wind_on 1 136 2000.0 1.0 0.0 +de 03_wind_off 1 136 2000.0 1.0 0.0 +de 04_res 1 136 2000.0 1.0 0.0 +de 05_nuclear 1 136 2000.0 1.0 0.0 +de 06_coal 1 136 2000.0 1.0 0.0 +de 07_gas 1 136 1500.0 1.0 0.0 +de 08_non-res 1 136 0.0 0.0 0.0 +de 09_hydro_pump 1 136 0.0 0.0 0.0 +de 01_solar 1 137 2000.0 1.0 0.0 +de 02_wind_on 1 137 2000.0 1.0 0.0 +de 03_wind_off 1 137 2000.0 1.0 0.0 +de 04_res 1 137 2000.0 1.0 0.0 +de 05_nuclear 1 137 2000.0 1.0 0.0 +de 06_coal 1 137 2000.0 1.0 0.0 +de 07_gas 1 137 1600.0 1.0 0.0 +de 08_non-res 1 137 0.0 0.0 0.0 +de 09_hydro_pump 1 137 0.0 0.0 0.0 +de 01_solar 1 138 2000.0 1.0 0.0 +de 02_wind_on 1 138 2000.0 1.0 0.0 +de 03_wind_off 1 138 2000.0 1.0 0.0 +de 04_res 1 138 2000.0 1.0 0.0 +de 05_nuclear 1 138 2000.0 1.0 0.0 +de 06_coal 1 138 2000.0 1.0 0.0 +de 07_gas 1 138 1700.0 1.0 0.0 +de 08_non-res 1 138 0.0 0.0 0.0 +de 09_hydro_pump 1 138 0.0 0.0 0.0 +de 01_solar 1 139 2000.0 1.0 0.0 +de 02_wind_on 1 139 2000.0 1.0 0.0 +de 03_wind_off 1 139 2000.0 1.0 0.0 +de 04_res 1 139 2000.0 1.0 0.0 +de 05_nuclear 1 139 2000.0 1.0 0.0 +de 06_coal 1 139 2000.0 1.0 0.0 +de 07_gas 1 139 1800.0 1.0 0.0 +de 08_non-res 1 139 0.0 0.0 0.0 +de 09_hydro_pump 1 139 0.0 0.0 0.0 +de 01_solar 1 140 2000.0 1.0 0.0 +de 02_wind_on 1 140 2000.0 1.0 0.0 +de 03_wind_off 1 140 2000.0 1.0 0.0 +de 04_res 1 140 2000.0 1.0 0.0 +de 05_nuclear 1 140 2000.0 1.0 0.0 +de 06_coal 1 140 2000.0 1.0 0.0 +de 07_gas 1 140 1900.0 1.0 0.0 +de 08_non-res 1 140 0.0 0.0 0.0 +de 09_hydro_pump 1 140 0.0 0.0 0.0 +de 01_solar 1 141 2000.0 1.0 0.0 +de 02_wind_on 1 141 2000.0 1.0 0.0 +de 03_wind_off 1 141 2000.0 1.0 0.0 +de 04_res 1 141 2000.0 1.0 0.0 +de 05_nuclear 1 141 2000.0 1.0 0.0 +de 06_coal 1 141 2000.0 1.0 0.0 +de 07_gas 1 141 2000.0 1.0 0.0 +de 08_non-res 1 141 0.0 0.0 0.0 +de 09_hydro_pump 1 141 0.0 0.0 0.0 +de 01_solar 1 142 2000.0 1.0 0.0 +de 02_wind_on 1 142 2000.0 1.0 0.0 +de 03_wind_off 1 142 2000.0 1.0 0.0 +de 04_res 1 142 2000.0 1.0 0.0 +de 05_nuclear 1 142 2000.0 1.0 0.0 +de 06_coal 1 142 2000.0 1.0 0.0 +de 07_gas 1 142 2000.0 1.0 0.0 +de 08_non-res 1 142 100.0 1.0 0.0 +de 09_hydro_pump 1 142 0.0 0.0 0.0 +de 01_solar 1 143 2000.0 1.0 0.0 +de 02_wind_on 1 143 2000.0 1.0 0.0 +de 03_wind_off 1 143 2000.0 1.0 0.0 +de 04_res 1 143 2000.0 1.0 0.0 +de 05_nuclear 1 143 2000.0 1.0 0.0 +de 06_coal 1 143 2000.0 1.0 0.0 +de 07_gas 1 143 2000.0 1.0 0.0 +de 08_non-res 1 143 200.0 1.0 0.0 +de 09_hydro_pump 1 143 0.0 0.0 0.0 +de 01_solar 1 144 2000.0 1.0 0.0 +de 02_wind_on 1 144 2000.0 1.0 0.0 +de 03_wind_off 1 144 2000.0 1.0 0.0 +de 04_res 1 144 2000.0 1.0 0.0 +de 05_nuclear 1 144 2000.0 1.0 0.0 +de 06_coal 1 144 2000.0 1.0 0.0 +de 07_gas 1 144 2000.0 1.0 0.0 +de 08_non-res 1 144 300.0 1.0 0.0 +de 09_hydro_pump 1 144 0.0 0.0 0.0 +de 01_solar 1 145 2000.0 1.0 0.0 +de 02_wind_on 1 145 2000.0 1.0 0.0 +de 03_wind_off 1 145 2000.0 1.0 0.0 +de 04_res 1 145 2000.0 1.0 0.0 +de 05_nuclear 1 145 2000.0 1.0 0.0 +de 06_coal 1 145 2000.0 1.0 0.0 +de 07_gas 1 145 2000.0 1.0 0.0 +de 08_non-res 1 145 400.0 1.0 0.0 +de 09_hydro_pump 1 145 0.0 0.0 0.0 +de 01_solar 1 146 2000.0 1.0 0.0 +de 02_wind_on 1 146 2000.0 1.0 0.0 +de 03_wind_off 1 146 2000.0 1.0 0.0 +de 04_res 1 146 2000.0 1.0 0.0 +de 05_nuclear 1 146 2000.0 1.0 0.0 +de 06_coal 1 146 2000.0 1.0 0.0 +de 07_gas 1 146 2000.0 1.0 0.0 +de 08_non-res 1 146 500.0 1.0 0.0 +de 09_hydro_pump 1 146 0.0 0.0 0.0 +de 01_solar 1 147 2000.0 1.0 0.0 +de 02_wind_on 1 147 2000.0 1.0 0.0 +de 03_wind_off 1 147 2000.0 1.0 0.0 +de 04_res 1 147 2000.0 1.0 0.0 +de 05_nuclear 1 147 2000.0 1.0 0.0 +de 06_coal 1 147 2000.0 1.0 0.0 +de 07_gas 1 147 2000.0 1.0 0.0 +de 08_non-res 1 147 600.0 1.0 0.0 +de 09_hydro_pump 1 147 0.0 0.0 0.0 +de 01_solar 1 148 2000.0 1.0 0.0 +de 02_wind_on 1 148 2000.0 1.0 0.0 +de 03_wind_off 1 148 2000.0 1.0 0.0 +de 04_res 1 148 2000.0 1.0 0.0 +de 05_nuclear 1 148 2000.0 1.0 0.0 +de 06_coal 1 148 2000.0 1.0 0.0 +de 07_gas 1 148 2000.0 1.0 0.0 +de 08_non-res 1 148 700.0 1.0 0.0 +de 09_hydro_pump 1 148 0.0 0.0 0.0 +de 01_solar 1 149 2000.0 1.0 0.0 +de 02_wind_on 1 149 2000.0 1.0 0.0 +de 03_wind_off 1 149 2000.0 1.0 0.0 +de 04_res 1 149 2000.0 1.0 0.0 +de 05_nuclear 1 149 2000.0 1.0 0.0 +de 06_coal 1 149 2000.0 1.0 0.0 +de 07_gas 1 149 2000.0 1.0 0.0 +de 08_non-res 1 149 800.0 1.0 0.0 +de 09_hydro_pump 1 149 0.0 0.0 0.0 +de 01_solar 1 150 2000.0 1.0 0.0 +de 02_wind_on 1 150 2000.0 1.0 0.0 +de 03_wind_off 1 150 2000.0 1.0 0.0 +de 04_res 1 150 2000.0 1.0 0.0 +de 05_nuclear 1 150 2000.0 1.0 0.0 +de 06_coal 1 150 2000.0 1.0 0.0 +de 07_gas 1 150 2000.0 1.0 0.0 +de 08_non-res 1 150 900.0 1.0 0.0 +de 09_hydro_pump 1 150 0.0 0.0 0.0 +de 01_solar 1 151 2000.0 1.0 0.0 +de 02_wind_on 1 151 2000.0 1.0 0.0 +de 03_wind_off 1 151 2000.0 1.0 0.0 +de 04_res 1 151 2000.0 1.0 0.0 +de 05_nuclear 1 151 2000.0 1.0 0.0 +de 06_coal 1 151 2000.0 1.0 0.0 +de 07_gas 1 151 2000.0 1.0 0.0 +de 08_non-res 1 151 1000.0 1.0 0.0 +de 09_hydro_pump 1 151 0.0 0.0 0.0 +de 01_solar 1 152 2000.0 1.0 0.0 +de 02_wind_on 1 152 2000.0 1.0 0.0 +de 03_wind_off 1 152 2000.0 1.0 0.0 +de 04_res 1 152 2000.0 1.0 0.0 +de 05_nuclear 1 152 2000.0 1.0 0.0 +de 06_coal 1 152 2000.0 1.0 0.0 +de 07_gas 1 152 2000.0 1.0 0.0 +de 08_non-res 1 152 1100.0 1.0 0.0 +de 09_hydro_pump 1 152 0.0 0.0 0.0 +de 01_solar 1 153 2000.0 1.0 0.0 +de 02_wind_on 1 153 2000.0 1.0 0.0 +de 03_wind_off 1 153 2000.0 1.0 0.0 +de 04_res 1 153 2000.0 1.0 0.0 +de 05_nuclear 1 153 2000.0 1.0 0.0 +de 06_coal 1 153 2000.0 1.0 0.0 +de 07_gas 1 153 2000.0 1.0 0.0 +de 08_non-res 1 153 1200.0 1.0 0.0 +de 09_hydro_pump 1 153 0.0 0.0 0.0 +de 01_solar 1 154 2000.0 1.0 0.0 +de 02_wind_on 1 154 2000.0 1.0 0.0 +de 03_wind_off 1 154 2000.0 1.0 0.0 +de 04_res 1 154 2000.0 1.0 0.0 +de 05_nuclear 1 154 2000.0 1.0 0.0 +de 06_coal 1 154 2000.0 1.0 0.0 +de 07_gas 1 154 2000.0 1.0 0.0 +de 08_non-res 1 154 1300.0 1.0 0.0 +de 09_hydro_pump 1 154 0.0 0.0 0.0 +de 01_solar 1 155 2000.0 1.0 0.0 +de 02_wind_on 1 155 2000.0 1.0 0.0 +de 03_wind_off 1 155 2000.0 1.0 0.0 +de 04_res 1 155 2000.0 1.0 0.0 +de 05_nuclear 1 155 2000.0 1.0 0.0 +de 06_coal 1 155 2000.0 1.0 0.0 +de 07_gas 1 155 2000.0 1.0 0.0 +de 08_non-res 1 155 1400.0 1.0 0.0 +de 09_hydro_pump 1 155 0.0 0.0 0.0 +de 01_solar 1 156 2000.0 1.0 0.0 +de 02_wind_on 1 156 2000.0 1.0 0.0 +de 03_wind_off 1 156 2000.0 1.0 0.0 +de 04_res 1 156 2000.0 1.0 0.0 +de 05_nuclear 1 156 2000.0 1.0 0.0 +de 06_coal 1 156 2000.0 1.0 0.0 +de 07_gas 1 156 2000.0 1.0 0.0 +de 08_non-res 1 156 1500.0 1.0 0.0 +de 09_hydro_pump 1 156 0.0 0.0 0.0 +de 01_solar 1 157 2000.0 1.0 0.0 +de 02_wind_on 1 157 2000.0 1.0 0.0 +de 03_wind_off 1 157 2000.0 1.0 0.0 +de 04_res 1 157 2000.0 1.0 0.0 +de 05_nuclear 1 157 2000.0 1.0 0.0 +de 06_coal 1 157 2000.0 1.0 0.0 +de 07_gas 1 157 2000.0 1.0 0.0 +de 08_non-res 1 157 1600.0 1.0 0.0 +de 09_hydro_pump 1 157 0.0 0.0 0.0 +de 01_solar 1 158 2000.0 1.0 0.0 +de 02_wind_on 1 158 2000.0 1.0 0.0 +de 03_wind_off 1 158 2000.0 1.0 0.0 +de 04_res 1 158 2000.0 1.0 0.0 +de 05_nuclear 1 158 2000.0 1.0 0.0 +de 06_coal 1 158 2000.0 1.0 0.0 +de 07_gas 1 158 2000.0 1.0 0.0 +de 08_non-res 1 158 1700.0 1.0 0.0 +de 09_hydro_pump 1 158 0.0 0.0 0.0 +de 01_solar 1 159 2000.0 1.0 0.0 +de 02_wind_on 1 159 2000.0 1.0 0.0 +de 03_wind_off 1 159 2000.0 1.0 0.0 +de 04_res 1 159 2000.0 1.0 0.0 +de 05_nuclear 1 159 2000.0 1.0 0.0 +de 06_coal 1 159 2000.0 1.0 0.0 +de 07_gas 1 159 2000.0 1.0 0.0 +de 08_non-res 1 159 1800.0 1.0 0.0 +de 09_hydro_pump 1 159 0.0 0.0 0.0 +de 01_solar 1 160 2000.0 1.0 0.0 +de 02_wind_on 1 160 2000.0 1.0 0.0 +de 03_wind_off 1 160 2000.0 1.0 0.0 +de 04_res 1 160 2000.0 1.0 0.0 +de 05_nuclear 1 160 2000.0 1.0 0.0 +de 06_coal 1 160 2000.0 1.0 0.0 +de 07_gas 1 160 2000.0 1.0 0.0 +de 08_non-res 1 160 1900.0 1.0 0.0 +de 09_hydro_pump 1 160 0.0 0.0 0.0 +de 01_solar 1 161 2000.0 1.0 0.0 +de 02_wind_on 1 161 2000.0 1.0 0.0 +de 03_wind_off 1 161 2000.0 1.0 0.0 +de 04_res 1 161 2000.0 1.0 0.0 +de 05_nuclear 1 161 2000.0 1.0 0.0 +de 06_coal 1 161 2000.0 1.0 0.0 +de 07_gas 1 161 2000.0 1.0 0.0 +de 08_non-res 1 161 2000.0 1.0 0.0 +de 09_hydro_pump 1 161 0.0 0.0 0.0 +de 01_solar 1 162 2000.0 1.0 0.0 +de 02_wind_on 1 162 2000.0 1.0 0.0 +de 03_wind_off 1 162 2000.0 1.0 0.0 +de 04_res 1 162 2000.0 1.0 0.0 +de 05_nuclear 1 162 2000.0 1.0 0.0 +de 06_coal 1 162 2000.0 1.0 0.0 +de 07_gas 1 162 2000.0 1.0 0.0 +de 08_non-res 1 162 2000.0 1.0 0.0 +de 09_hydro_pump 1 162 100.0 1.0 0.0 +de 01_solar 1 163 2000.0 1.0 0.0 +de 02_wind_on 1 163 2000.0 1.0 0.0 +de 03_wind_off 1 163 2000.0 1.0 0.0 +de 04_res 1 163 2000.0 1.0 0.0 +de 05_nuclear 1 163 2000.0 1.0 0.0 +de 06_coal 1 163 2000.0 1.0 0.0 +de 07_gas 1 163 2000.0 1.0 0.0 +de 08_non-res 1 163 2000.0 1.0 0.0 +de 09_hydro_pump 1 163 200.0 1.0 0.0 +de 01_solar 1 164 2000.0 1.0 0.0 +de 02_wind_on 1 164 2000.0 1.0 0.0 +de 03_wind_off 1 164 2000.0 1.0 0.0 +de 04_res 1 164 2000.0 1.0 0.0 +de 05_nuclear 1 164 2000.0 1.0 0.0 +de 06_coal 1 164 2000.0 1.0 0.0 +de 07_gas 1 164 2000.0 1.0 0.0 +de 08_non-res 1 164 2000.0 1.0 0.0 +de 09_hydro_pump 1 164 300.0 1.0 0.0 +de 01_solar 1 165 2000.0 1.0 0.0 +de 02_wind_on 1 165 2000.0 1.0 0.0 +de 03_wind_off 1 165 2000.0 1.0 0.0 +de 04_res 1 165 2000.0 1.0 0.0 +de 05_nuclear 1 165 2000.0 1.0 0.0 +de 06_coal 1 165 2000.0 1.0 0.0 +de 07_gas 1 165 2000.0 1.0 0.0 +de 08_non-res 1 165 2000.0 1.0 0.0 +de 09_hydro_pump 1 165 400.0 1.0 0.0 +de 01_solar 1 166 2000.0 1.0 0.0 +de 02_wind_on 1 166 2000.0 1.0 0.0 +de 03_wind_off 1 166 2000.0 1.0 0.0 +de 04_res 1 166 2000.0 1.0 0.0 +de 05_nuclear 1 166 2000.0 1.0 0.0 +de 06_coal 1 166 2000.0 1.0 0.0 +de 07_gas 1 166 2000.0 1.0 0.0 +de 08_non-res 1 166 2000.0 1.0 0.0 +de 09_hydro_pump 1 166 500.0 1.0 0.0 +de 01_solar 1 167 2000.0 1.0 0.0 +de 02_wind_on 1 167 2000.0 1.0 0.0 +de 03_wind_off 1 167 2000.0 1.0 0.0 +de 04_res 1 167 2000.0 1.0 0.0 +de 05_nuclear 1 167 2000.0 1.0 0.0 +de 06_coal 1 167 2000.0 1.0 0.0 +de 07_gas 1 167 2000.0 1.0 0.0 +de 08_non-res 1 167 2000.0 1.0 0.0 +de 09_hydro_pump 1 167 600.0 1.0 0.0 +de 01_solar 1 168 2000.0 1.0 0.0 +de 02_wind_on 1 168 2000.0 1.0 0.0 +de 03_wind_off 1 168 2000.0 1.0 0.0 +de 04_res 1 168 2000.0 1.0 0.0 +de 05_nuclear 1 168 2000.0 1.0 0.0 +de 06_coal 1 168 2000.0 1.0 0.0 +de 07_gas 1 168 2000.0 1.0 0.0 +de 08_non-res 1 168 2000.0 1.0 0.0 +de 09_hydro_pump 1 168 700.0 1.0 0.0 +de 01_solar 1 169 0.0 0.0 0.0 +de 02_wind_on 1 169 0.0 0.0 0.0 +de 03_wind_off 1 169 0.0 0.0 0.0 +de 04_res 1 169 0.0 0.0 0.0 +de 05_nuclear 1 169 0.0 0.0 0.0 +de 06_coal 1 169 0.0 0.0 0.0 +de 07_gas 1 169 0.0 0.0 0.0 +de 08_non-res 1 169 0.0 0.0 0.0 +de 09_hydro_pump 1 169 0.0 0.0 0.0 +de 01_solar 1 170 100.0 1.0 0.0 +de 02_wind_on 1 170 0.0 0.0 0.0 +de 03_wind_off 1 170 0.0 0.0 0.0 +de 04_res 1 170 0.0 0.0 0.0 +de 05_nuclear 1 170 0.0 0.0 0.0 +de 06_coal 1 170 0.0 0.0 0.0 +de 07_gas 1 170 0.0 0.0 0.0 +de 08_non-res 1 170 0.0 0.0 0.0 +de 09_hydro_pump 1 170 0.0 0.0 0.0 +de 01_solar 1 171 200.0 1.0 0.0 +de 02_wind_on 1 171 0.0 0.0 0.0 +de 03_wind_off 1 171 0.0 0.0 0.0 +de 04_res 1 171 0.0 0.0 0.0 +de 05_nuclear 1 171 0.0 0.0 0.0 +de 06_coal 1 171 0.0 0.0 0.0 +de 07_gas 1 171 0.0 0.0 0.0 +de 08_non-res 1 171 0.0 0.0 0.0 +de 09_hydro_pump 1 171 0.0 0.0 0.0 +de 01_solar 1 172 300.0 1.0 0.0 +de 02_wind_on 1 172 0.0 0.0 0.0 +de 03_wind_off 1 172 0.0 0.0 0.0 +de 04_res 1 172 0.0 0.0 0.0 +de 05_nuclear 1 172 0.0 0.0 0.0 +de 06_coal 1 172 0.0 0.0 0.0 +de 07_gas 1 172 0.0 0.0 0.0 +de 08_non-res 1 172 0.0 0.0 0.0 +de 09_hydro_pump 1 172 0.0 0.0 0.0 +de 01_solar 1 173 400.0 1.0 0.0 +de 02_wind_on 1 173 0.0 0.0 0.0 +de 03_wind_off 1 173 0.0 0.0 0.0 +de 04_res 1 173 0.0 0.0 0.0 +de 05_nuclear 1 173 0.0 0.0 0.0 +de 06_coal 1 173 0.0 0.0 0.0 +de 07_gas 1 173 0.0 0.0 0.0 +de 08_non-res 1 173 0.0 0.0 0.0 +de 09_hydro_pump 1 173 0.0 0.0 0.0 +de 01_solar 1 174 500.0 1.0 0.0 +de 02_wind_on 1 174 0.0 0.0 0.0 +de 03_wind_off 1 174 0.0 0.0 0.0 +de 04_res 1 174 0.0 0.0 0.0 +de 05_nuclear 1 174 0.0 0.0 0.0 +de 06_coal 1 174 0.0 0.0 0.0 +de 07_gas 1 174 0.0 0.0 0.0 +de 08_non-res 1 174 0.0 0.0 0.0 +de 09_hydro_pump 1 174 0.0 0.0 0.0 +de 01_solar 1 175 600.0 1.0 0.0 +de 02_wind_on 1 175 0.0 0.0 0.0 +de 03_wind_off 1 175 0.0 0.0 0.0 +de 04_res 1 175 0.0 0.0 0.0 +de 05_nuclear 1 175 0.0 0.0 0.0 +de 06_coal 1 175 0.0 0.0 0.0 +de 07_gas 1 175 0.0 0.0 0.0 +de 08_non-res 1 175 0.0 0.0 0.0 +de 09_hydro_pump 1 175 0.0 0.0 0.0 +de 01_solar 1 176 700.0 1.0 0.0 +de 02_wind_on 1 176 0.0 0.0 0.0 +de 03_wind_off 1 176 0.0 0.0 0.0 +de 04_res 1 176 0.0 0.0 0.0 +de 05_nuclear 1 176 0.0 0.0 0.0 +de 06_coal 1 176 0.0 0.0 0.0 +de 07_gas 1 176 0.0 0.0 0.0 +de 08_non-res 1 176 0.0 0.0 0.0 +de 09_hydro_pump 1 176 0.0 0.0 0.0 +de 01_solar 1 177 800.0 1.0 0.0 +de 02_wind_on 1 177 0.0 0.0 0.0 +de 03_wind_off 1 177 0.0 0.0 0.0 +de 04_res 1 177 0.0 0.0 0.0 +de 05_nuclear 1 177 0.0 0.0 0.0 +de 06_coal 1 177 0.0 0.0 0.0 +de 07_gas 1 177 0.0 0.0 0.0 +de 08_non-res 1 177 0.0 0.0 0.0 +de 09_hydro_pump 1 177 0.0 0.0 0.0 +de 01_solar 1 178 900.0 1.0 0.0 +de 02_wind_on 1 178 0.0 0.0 0.0 +de 03_wind_off 1 178 0.0 0.0 0.0 +de 04_res 1 178 0.0 0.0 0.0 +de 05_nuclear 1 178 0.0 0.0 0.0 +de 06_coal 1 178 0.0 0.0 0.0 +de 07_gas 1 178 0.0 0.0 0.0 +de 08_non-res 1 178 0.0 0.0 0.0 +de 09_hydro_pump 1 178 0.0 0.0 0.0 +de 01_solar 1 179 1000.0 1.0 0.0 +de 02_wind_on 1 179 0.0 0.0 0.0 +de 03_wind_off 1 179 0.0 0.0 0.0 +de 04_res 1 179 0.0 0.0 0.0 +de 05_nuclear 1 179 0.0 0.0 0.0 +de 06_coal 1 179 0.0 0.0 0.0 +de 07_gas 1 179 0.0 0.0 0.0 +de 08_non-res 1 179 0.0 0.0 0.0 +de 09_hydro_pump 1 179 0.0 0.0 0.0 +de 01_solar 1 180 1100.0 1.0 0.0 +de 02_wind_on 1 180 0.0 0.0 0.0 +de 03_wind_off 1 180 0.0 0.0 0.0 +de 04_res 1 180 0.0 0.0 0.0 +de 05_nuclear 1 180 0.0 0.0 0.0 +de 06_coal 1 180 0.0 0.0 0.0 +de 07_gas 1 180 0.0 0.0 0.0 +de 08_non-res 1 180 0.0 0.0 0.0 +de 09_hydro_pump 1 180 0.0 0.0 0.0 +de 01_solar 1 181 1200.0 1.0 0.0 +de 02_wind_on 1 181 0.0 0.0 0.0 +de 03_wind_off 1 181 0.0 0.0 0.0 +de 04_res 1 181 0.0 0.0 0.0 +de 05_nuclear 1 181 0.0 0.0 0.0 +de 06_coal 1 181 0.0 0.0 0.0 +de 07_gas 1 181 0.0 0.0 0.0 +de 08_non-res 1 181 0.0 0.0 0.0 +de 09_hydro_pump 1 181 0.0 0.0 0.0 +de 01_solar 1 182 1300.0 1.0 0.0 +de 02_wind_on 1 182 0.0 0.0 0.0 +de 03_wind_off 1 182 0.0 0.0 0.0 +de 04_res 1 182 0.0 0.0 0.0 +de 05_nuclear 1 182 0.0 0.0 0.0 +de 06_coal 1 182 0.0 0.0 0.0 +de 07_gas 1 182 0.0 0.0 0.0 +de 08_non-res 1 182 0.0 0.0 0.0 +de 09_hydro_pump 1 182 0.0 0.0 0.0 +de 01_solar 1 183 1400.0 1.0 0.0 +de 02_wind_on 1 183 0.0 0.0 0.0 +de 03_wind_off 1 183 0.0 0.0 0.0 +de 04_res 1 183 0.0 0.0 0.0 +de 05_nuclear 1 183 0.0 0.0 0.0 +de 06_coal 1 183 0.0 0.0 0.0 +de 07_gas 1 183 0.0 0.0 0.0 +de 08_non-res 1 183 0.0 0.0 0.0 +de 09_hydro_pump 1 183 0.0 0.0 0.0 +de 01_solar 1 184 1500.0 1.0 0.0 +de 02_wind_on 1 184 0.0 0.0 0.0 +de 03_wind_off 1 184 0.0 0.0 0.0 +de 04_res 1 184 0.0 0.0 0.0 +de 05_nuclear 1 184 0.0 0.0 0.0 +de 06_coal 1 184 0.0 0.0 0.0 +de 07_gas 1 184 0.0 0.0 0.0 +de 08_non-res 1 184 0.0 0.0 0.0 +de 09_hydro_pump 1 184 0.0 0.0 0.0 +de 01_solar 1 185 1600.0 1.0 0.0 +de 02_wind_on 1 185 0.0 0.0 0.0 +de 03_wind_off 1 185 0.0 0.0 0.0 +de 04_res 1 185 0.0 0.0 0.0 +de 05_nuclear 1 185 0.0 0.0 0.0 +de 06_coal 1 185 0.0 0.0 0.0 +de 07_gas 1 185 0.0 0.0 0.0 +de 08_non-res 1 185 0.0 0.0 0.0 +de 09_hydro_pump 1 185 0.0 0.0 0.0 +de 01_solar 1 186 1700.0 1.0 0.0 +de 02_wind_on 1 186 0.0 0.0 0.0 +de 03_wind_off 1 186 0.0 0.0 0.0 +de 04_res 1 186 0.0 0.0 0.0 +de 05_nuclear 1 186 0.0 0.0 0.0 +de 06_coal 1 186 0.0 0.0 0.0 +de 07_gas 1 186 0.0 0.0 0.0 +de 08_non-res 1 186 0.0 0.0 0.0 +de 09_hydro_pump 1 186 0.0 0.0 0.0 +de 01_solar 1 187 1800.0 1.0 0.0 +de 02_wind_on 1 187 0.0 0.0 0.0 +de 03_wind_off 1 187 0.0 0.0 0.0 +de 04_res 1 187 0.0 0.0 0.0 +de 05_nuclear 1 187 0.0 0.0 0.0 +de 06_coal 1 187 0.0 0.0 0.0 +de 07_gas 1 187 0.0 0.0 0.0 +de 08_non-res 1 187 0.0 0.0 0.0 +de 09_hydro_pump 1 187 0.0 0.0 0.0 +de 01_solar 1 188 1900.0 1.0 0.0 +de 02_wind_on 1 188 0.0 0.0 0.0 +de 03_wind_off 1 188 0.0 0.0 0.0 +de 04_res 1 188 0.0 0.0 0.0 +de 05_nuclear 1 188 0.0 0.0 0.0 +de 06_coal 1 188 0.0 0.0 0.0 +de 07_gas 1 188 0.0 0.0 0.0 +de 08_non-res 1 188 0.0 0.0 0.0 +de 09_hydro_pump 1 188 0.0 0.0 0.0 +de 01_solar 1 189 2000.0 1.0 0.0 +de 02_wind_on 1 189 0.0 0.0 0.0 +de 03_wind_off 1 189 0.0 0.0 0.0 +de 04_res 1 189 0.0 0.0 0.0 +de 05_nuclear 1 189 0.0 0.0 0.0 +de 06_coal 1 189 0.0 0.0 0.0 +de 07_gas 1 189 0.0 0.0 0.0 +de 08_non-res 1 189 0.0 0.0 0.0 +de 09_hydro_pump 1 189 0.0 0.0 0.0 +de 01_solar 1 190 2000.0 1.0 0.0 +de 02_wind_on 1 190 100.0 1.0 0.0 +de 03_wind_off 1 190 0.0 0.0 0.0 +de 04_res 1 190 0.0 0.0 0.0 +de 05_nuclear 1 190 0.0 0.0 0.0 +de 06_coal 1 190 0.0 0.0 0.0 +de 07_gas 1 190 0.0 0.0 0.0 +de 08_non-res 1 190 0.0 0.0 0.0 +de 09_hydro_pump 1 190 0.0 0.0 0.0 +de 01_solar 1 191 2000.0 1.0 0.0 +de 02_wind_on 1 191 200.0 1.0 0.0 +de 03_wind_off 1 191 0.0 0.0 0.0 +de 04_res 1 191 0.0 0.0 0.0 +de 05_nuclear 1 191 0.0 0.0 0.0 +de 06_coal 1 191 0.0 0.0 0.0 +de 07_gas 1 191 0.0 0.0 0.0 +de 08_non-res 1 191 0.0 0.0 0.0 +de 09_hydro_pump 1 191 0.0 0.0 0.0 +de 01_solar 1 192 2000.0 1.0 0.0 +de 02_wind_on 1 192 300.0 1.0 0.0 +de 03_wind_off 1 192 0.0 0.0 0.0 +de 04_res 1 192 0.0 0.0 0.0 +de 05_nuclear 1 192 0.0 0.0 0.0 +de 06_coal 1 192 0.0 0.0 0.0 +de 07_gas 1 192 0.0 0.0 0.0 +de 08_non-res 1 192 0.0 0.0 0.0 +de 09_hydro_pump 1 192 0.0 0.0 0.0 +de 01_solar 1 193 2000.0 1.0 0.0 +de 02_wind_on 1 193 400.0 1.0 0.0 +de 03_wind_off 1 193 0.0 0.0 0.0 +de 04_res 1 193 0.0 0.0 0.0 +de 05_nuclear 1 193 0.0 0.0 0.0 +de 06_coal 1 193 0.0 0.0 0.0 +de 07_gas 1 193 0.0 0.0 0.0 +de 08_non-res 1 193 0.0 0.0 0.0 +de 09_hydro_pump 1 193 0.0 0.0 0.0 +de 01_solar 1 194 2000.0 1.0 0.0 +de 02_wind_on 1 194 500.0 1.0 0.0 +de 03_wind_off 1 194 0.0 0.0 0.0 +de 04_res 1 194 0.0 0.0 0.0 +de 05_nuclear 1 194 0.0 0.0 0.0 +de 06_coal 1 194 0.0 0.0 0.0 +de 07_gas 1 194 0.0 0.0 0.0 +de 08_non-res 1 194 0.0 0.0 0.0 +de 09_hydro_pump 1 194 0.0 0.0 0.0 +de 01_solar 1 195 2000.0 1.0 0.0 +de 02_wind_on 1 195 600.0 1.0 0.0 +de 03_wind_off 1 195 0.0 0.0 0.0 +de 04_res 1 195 0.0 0.0 0.0 +de 05_nuclear 1 195 0.0 0.0 0.0 +de 06_coal 1 195 0.0 0.0 0.0 +de 07_gas 1 195 0.0 0.0 0.0 +de 08_non-res 1 195 0.0 0.0 0.0 +de 09_hydro_pump 1 195 0.0 0.0 0.0 +de 01_solar 1 196 2000.0 1.0 0.0 +de 02_wind_on 1 196 700.0 1.0 0.0 +de 03_wind_off 1 196 0.0 0.0 0.0 +de 04_res 1 196 0.0 0.0 0.0 +de 05_nuclear 1 196 0.0 0.0 0.0 +de 06_coal 1 196 0.0 0.0 0.0 +de 07_gas 1 196 0.0 0.0 0.0 +de 08_non-res 1 196 0.0 0.0 0.0 +de 09_hydro_pump 1 196 0.0 0.0 0.0 +de 01_solar 1 197 2000.0 1.0 0.0 +de 02_wind_on 1 197 800.0 1.0 0.0 +de 03_wind_off 1 197 0.0 0.0 0.0 +de 04_res 1 197 0.0 0.0 0.0 +de 05_nuclear 1 197 0.0 0.0 0.0 +de 06_coal 1 197 0.0 0.0 0.0 +de 07_gas 1 197 0.0 0.0 0.0 +de 08_non-res 1 197 0.0 0.0 0.0 +de 09_hydro_pump 1 197 0.0 0.0 0.0 +de 01_solar 1 198 2000.0 1.0 0.0 +de 02_wind_on 1 198 900.0 1.0 0.0 +de 03_wind_off 1 198 0.0 0.0 0.0 +de 04_res 1 198 0.0 0.0 0.0 +de 05_nuclear 1 198 0.0 0.0 0.0 +de 06_coal 1 198 0.0 0.0 0.0 +de 07_gas 1 198 0.0 0.0 0.0 +de 08_non-res 1 198 0.0 0.0 0.0 +de 09_hydro_pump 1 198 0.0 0.0 0.0 +de 01_solar 1 199 2000.0 1.0 0.0 +de 02_wind_on 1 199 1000.0 1.0 0.0 +de 03_wind_off 1 199 0.0 0.0 0.0 +de 04_res 1 199 0.0 0.0 0.0 +de 05_nuclear 1 199 0.0 0.0 0.0 +de 06_coal 1 199 0.0 0.0 0.0 +de 07_gas 1 199 0.0 0.0 0.0 +de 08_non-res 1 199 0.0 0.0 0.0 +de 09_hydro_pump 1 199 0.0 0.0 0.0 +de 01_solar 1 200 2000.0 1.0 0.0 +de 02_wind_on 1 200 1100.0 1.0 0.0 +de 03_wind_off 1 200 0.0 0.0 0.0 +de 04_res 1 200 0.0 0.0 0.0 +de 05_nuclear 1 200 0.0 0.0 0.0 +de 06_coal 1 200 0.0 0.0 0.0 +de 07_gas 1 200 0.0 0.0 0.0 +de 08_non-res 1 200 0.0 0.0 0.0 +de 09_hydro_pump 1 200 0.0 0.0 0.0 +de 01_solar 1 201 2000.0 1.0 0.0 +de 02_wind_on 1 201 1200.0 1.0 0.0 +de 03_wind_off 1 201 0.0 0.0 0.0 +de 04_res 1 201 0.0 0.0 0.0 +de 05_nuclear 1 201 0.0 0.0 0.0 +de 06_coal 1 201 0.0 0.0 0.0 +de 07_gas 1 201 0.0 0.0 0.0 +de 08_non-res 1 201 0.0 0.0 0.0 +de 09_hydro_pump 1 201 0.0 0.0 0.0 +de 01_solar 1 202 2000.0 1.0 0.0 +de 02_wind_on 1 202 1300.0 1.0 0.0 +de 03_wind_off 1 202 0.0 0.0 0.0 +de 04_res 1 202 0.0 0.0 0.0 +de 05_nuclear 1 202 0.0 0.0 0.0 +de 06_coal 1 202 0.0 0.0 0.0 +de 07_gas 1 202 0.0 0.0 0.0 +de 08_non-res 1 202 0.0 0.0 0.0 +de 09_hydro_pump 1 202 0.0 0.0 0.0 +de 01_solar 1 203 2000.0 1.0 0.0 +de 02_wind_on 1 203 1400.0 1.0 0.0 +de 03_wind_off 1 203 0.0 0.0 0.0 +de 04_res 1 203 0.0 0.0 0.0 +de 05_nuclear 1 203 0.0 0.0 0.0 +de 06_coal 1 203 0.0 0.0 0.0 +de 07_gas 1 203 0.0 0.0 0.0 +de 08_non-res 1 203 0.0 0.0 0.0 +de 09_hydro_pump 1 203 0.0 0.0 0.0 +de 01_solar 1 204 2000.0 1.0 0.0 +de 02_wind_on 1 204 1500.0 1.0 0.0 +de 03_wind_off 1 204 0.0 0.0 0.0 +de 04_res 1 204 0.0 0.0 0.0 +de 05_nuclear 1 204 0.0 0.0 0.0 +de 06_coal 1 204 0.0 0.0 0.0 +de 07_gas 1 204 0.0 0.0 0.0 +de 08_non-res 1 204 0.0 0.0 0.0 +de 09_hydro_pump 1 204 0.0 0.0 0.0 +de 01_solar 1 205 2000.0 1.0 0.0 +de 02_wind_on 1 205 1600.0 1.0 0.0 +de 03_wind_off 1 205 0.0 0.0 0.0 +de 04_res 1 205 0.0 0.0 0.0 +de 05_nuclear 1 205 0.0 0.0 0.0 +de 06_coal 1 205 0.0 0.0 0.0 +de 07_gas 1 205 0.0 0.0 0.0 +de 08_non-res 1 205 0.0 0.0 0.0 +de 09_hydro_pump 1 205 0.0 0.0 0.0 +de 01_solar 1 206 2000.0 1.0 0.0 +de 02_wind_on 1 206 1700.0 1.0 0.0 +de 03_wind_off 1 206 0.0 0.0 0.0 +de 04_res 1 206 0.0 0.0 0.0 +de 05_nuclear 1 206 0.0 0.0 0.0 +de 06_coal 1 206 0.0 0.0 0.0 +de 07_gas 1 206 0.0 0.0 0.0 +de 08_non-res 1 206 0.0 0.0 0.0 +de 09_hydro_pump 1 206 0.0 0.0 0.0 +de 01_solar 1 207 2000.0 1.0 0.0 +de 02_wind_on 1 207 1800.0 1.0 0.0 +de 03_wind_off 1 207 0.0 0.0 0.0 +de 04_res 1 207 0.0 0.0 0.0 +de 05_nuclear 1 207 0.0 0.0 0.0 +de 06_coal 1 207 0.0 0.0 0.0 +de 07_gas 1 207 0.0 0.0 0.0 +de 08_non-res 1 207 0.0 0.0 0.0 +de 09_hydro_pump 1 207 0.0 0.0 0.0 +de 01_solar 1 208 2000.0 1.0 0.0 +de 02_wind_on 1 208 1900.0 1.0 0.0 +de 03_wind_off 1 208 0.0 0.0 0.0 +de 04_res 1 208 0.0 0.0 0.0 +de 05_nuclear 1 208 0.0 0.0 0.0 +de 06_coal 1 208 0.0 0.0 0.0 +de 07_gas 1 208 0.0 0.0 0.0 +de 08_non-res 1 208 0.0 0.0 0.0 +de 09_hydro_pump 1 208 0.0 0.0 0.0 +de 01_solar 1 209 2000.0 1.0 0.0 +de 02_wind_on 1 209 2000.0 1.0 0.0 +de 03_wind_off 1 209 0.0 0.0 0.0 +de 04_res 1 209 0.0 0.0 0.0 +de 05_nuclear 1 209 0.0 0.0 0.0 +de 06_coal 1 209 0.0 0.0 0.0 +de 07_gas 1 209 0.0 0.0 0.0 +de 08_non-res 1 209 0.0 0.0 0.0 +de 09_hydro_pump 1 209 0.0 0.0 0.0 +de 01_solar 1 210 2000.0 1.0 0.0 +de 02_wind_on 1 210 2000.0 1.0 0.0 +de 03_wind_off 1 210 100.0 1.0 0.0 +de 04_res 1 210 0.0 0.0 0.0 +de 05_nuclear 1 210 0.0 0.0 0.0 +de 06_coal 1 210 0.0 0.0 0.0 +de 07_gas 1 210 0.0 0.0 0.0 +de 08_non-res 1 210 0.0 0.0 0.0 +de 09_hydro_pump 1 210 0.0 0.0 0.0 +de 01_solar 1 211 2000.0 1.0 0.0 +de 02_wind_on 1 211 2000.0 1.0 0.0 +de 03_wind_off 1 211 200.0 1.0 0.0 +de 04_res 1 211 0.0 0.0 0.0 +de 05_nuclear 1 211 0.0 0.0 0.0 +de 06_coal 1 211 0.0 0.0 0.0 +de 07_gas 1 211 0.0 0.0 0.0 +de 08_non-res 1 211 0.0 0.0 0.0 +de 09_hydro_pump 1 211 0.0 0.0 0.0 +de 01_solar 1 212 2000.0 1.0 0.0 +de 02_wind_on 1 212 2000.0 1.0 0.0 +de 03_wind_off 1 212 300.0 1.0 0.0 +de 04_res 1 212 0.0 0.0 0.0 +de 05_nuclear 1 212 0.0 0.0 0.0 +de 06_coal 1 212 0.0 0.0 0.0 +de 07_gas 1 212 0.0 0.0 0.0 +de 08_non-res 1 212 0.0 0.0 0.0 +de 09_hydro_pump 1 212 0.0 0.0 0.0 +de 01_solar 1 213 2000.0 1.0 0.0 +de 02_wind_on 1 213 2000.0 1.0 0.0 +de 03_wind_off 1 213 400.0 1.0 0.0 +de 04_res 1 213 0.0 0.0 0.0 +de 05_nuclear 1 213 0.0 0.0 0.0 +de 06_coal 1 213 0.0 0.0 0.0 +de 07_gas 1 213 0.0 0.0 0.0 +de 08_non-res 1 213 0.0 0.0 0.0 +de 09_hydro_pump 1 213 0.0 0.0 0.0 +de 01_solar 1 214 2000.0 1.0 0.0 +de 02_wind_on 1 214 2000.0 1.0 0.0 +de 03_wind_off 1 214 500.0 1.0 0.0 +de 04_res 1 214 0.0 0.0 0.0 +de 05_nuclear 1 214 0.0 0.0 0.0 +de 06_coal 1 214 0.0 0.0 0.0 +de 07_gas 1 214 0.0 0.0 0.0 +de 08_non-res 1 214 0.0 0.0 0.0 +de 09_hydro_pump 1 214 0.0 0.0 0.0 +de 01_solar 1 215 2000.0 1.0 0.0 +de 02_wind_on 1 215 2000.0 1.0 0.0 +de 03_wind_off 1 215 600.0 1.0 0.0 +de 04_res 1 215 0.0 0.0 0.0 +de 05_nuclear 1 215 0.0 0.0 0.0 +de 06_coal 1 215 0.0 0.0 0.0 +de 07_gas 1 215 0.0 0.0 0.0 +de 08_non-res 1 215 0.0 0.0 0.0 +de 09_hydro_pump 1 215 0.0 0.0 0.0 +de 01_solar 1 216 2000.0 1.0 0.0 +de 02_wind_on 1 216 2000.0 1.0 0.0 +de 03_wind_off 1 216 700.0 1.0 0.0 +de 04_res 1 216 0.0 0.0 0.0 +de 05_nuclear 1 216 0.0 0.0 0.0 +de 06_coal 1 216 0.0 0.0 0.0 +de 07_gas 1 216 0.0 0.0 0.0 +de 08_non-res 1 216 0.0 0.0 0.0 +de 09_hydro_pump 1 216 0.0 0.0 0.0 +de 01_solar 1 217 2000.0 1.0 0.0 +de 02_wind_on 1 217 2000.0 1.0 0.0 +de 03_wind_off 1 217 800.0 1.0 0.0 +de 04_res 1 217 0.0 0.0 0.0 +de 05_nuclear 1 217 0.0 0.0 0.0 +de 06_coal 1 217 0.0 0.0 0.0 +de 07_gas 1 217 0.0 0.0 0.0 +de 08_non-res 1 217 0.0 0.0 0.0 +de 09_hydro_pump 1 217 0.0 0.0 0.0 +de 01_solar 1 218 2000.0 1.0 0.0 +de 02_wind_on 1 218 2000.0 1.0 0.0 +de 03_wind_off 1 218 900.0 1.0 0.0 +de 04_res 1 218 0.0 0.0 0.0 +de 05_nuclear 1 218 0.0 0.0 0.0 +de 06_coal 1 218 0.0 0.0 0.0 +de 07_gas 1 218 0.0 0.0 0.0 +de 08_non-res 1 218 0.0 0.0 0.0 +de 09_hydro_pump 1 218 0.0 0.0 0.0 +de 01_solar 1 219 2000.0 1.0 0.0 +de 02_wind_on 1 219 2000.0 1.0 0.0 +de 03_wind_off 1 219 1000.0 1.0 0.0 +de 04_res 1 219 0.0 0.0 0.0 +de 05_nuclear 1 219 0.0 0.0 0.0 +de 06_coal 1 219 0.0 0.0 0.0 +de 07_gas 1 219 0.0 0.0 0.0 +de 08_non-res 1 219 0.0 0.0 0.0 +de 09_hydro_pump 1 219 0.0 0.0 0.0 +de 01_solar 1 220 2000.0 1.0 0.0 +de 02_wind_on 1 220 2000.0 1.0 0.0 +de 03_wind_off 1 220 1100.0 1.0 0.0 +de 04_res 1 220 0.0 0.0 0.0 +de 05_nuclear 1 220 0.0 0.0 0.0 +de 06_coal 1 220 0.0 0.0 0.0 +de 07_gas 1 220 0.0 0.0 0.0 +de 08_non-res 1 220 0.0 0.0 0.0 +de 09_hydro_pump 1 220 0.0 0.0 0.0 +de 01_solar 1 221 2000.0 1.0 0.0 +de 02_wind_on 1 221 2000.0 1.0 0.0 +de 03_wind_off 1 221 1200.0 1.0 0.0 +de 04_res 1 221 0.0 0.0 0.0 +de 05_nuclear 1 221 0.0 0.0 0.0 +de 06_coal 1 221 0.0 0.0 0.0 +de 07_gas 1 221 0.0 0.0 0.0 +de 08_non-res 1 221 0.0 0.0 0.0 +de 09_hydro_pump 1 221 0.0 0.0 0.0 +de 01_solar 1 222 2000.0 1.0 0.0 +de 02_wind_on 1 222 2000.0 1.0 0.0 +de 03_wind_off 1 222 1300.0 1.0 0.0 +de 04_res 1 222 0.0 0.0 0.0 +de 05_nuclear 1 222 0.0 0.0 0.0 +de 06_coal 1 222 0.0 0.0 0.0 +de 07_gas 1 222 0.0 0.0 0.0 +de 08_non-res 1 222 0.0 0.0 0.0 +de 09_hydro_pump 1 222 0.0 0.0 0.0 +de 01_solar 1 223 2000.0 1.0 0.0 +de 02_wind_on 1 223 2000.0 1.0 0.0 +de 03_wind_off 1 223 1400.0 1.0 0.0 +de 04_res 1 223 0.0 0.0 0.0 +de 05_nuclear 1 223 0.0 0.0 0.0 +de 06_coal 1 223 0.0 0.0 0.0 +de 07_gas 1 223 0.0 0.0 0.0 +de 08_non-res 1 223 0.0 0.0 0.0 +de 09_hydro_pump 1 223 0.0 0.0 0.0 +de 01_solar 1 224 2000.0 1.0 0.0 +de 02_wind_on 1 224 2000.0 1.0 0.0 +de 03_wind_off 1 224 1500.0 1.0 0.0 +de 04_res 1 224 0.0 0.0 0.0 +de 05_nuclear 1 224 0.0 0.0 0.0 +de 06_coal 1 224 0.0 0.0 0.0 +de 07_gas 1 224 0.0 0.0 0.0 +de 08_non-res 1 224 0.0 0.0 0.0 +de 09_hydro_pump 1 224 0.0 0.0 0.0 +de 01_solar 1 225 2000.0 1.0 0.0 +de 02_wind_on 1 225 2000.0 1.0 0.0 +de 03_wind_off 1 225 1600.0 1.0 0.0 +de 04_res 1 225 0.0 0.0 0.0 +de 05_nuclear 1 225 0.0 0.0 0.0 +de 06_coal 1 225 0.0 0.0 0.0 +de 07_gas 1 225 0.0 0.0 0.0 +de 08_non-res 1 225 0.0 0.0 0.0 +de 09_hydro_pump 1 225 0.0 0.0 0.0 +de 01_solar 1 226 2000.0 1.0 0.0 +de 02_wind_on 1 226 2000.0 1.0 0.0 +de 03_wind_off 1 226 1700.0 1.0 0.0 +de 04_res 1 226 0.0 0.0 0.0 +de 05_nuclear 1 226 0.0 0.0 0.0 +de 06_coal 1 226 0.0 0.0 0.0 +de 07_gas 1 226 0.0 0.0 0.0 +de 08_non-res 1 226 0.0 0.0 0.0 +de 09_hydro_pump 1 226 0.0 0.0 0.0 +de 01_solar 1 227 2000.0 1.0 0.0 +de 02_wind_on 1 227 2000.0 1.0 0.0 +de 03_wind_off 1 227 1800.0 1.0 0.0 +de 04_res 1 227 0.0 0.0 0.0 +de 05_nuclear 1 227 0.0 0.0 0.0 +de 06_coal 1 227 0.0 0.0 0.0 +de 07_gas 1 227 0.0 0.0 0.0 +de 08_non-res 1 227 0.0 0.0 0.0 +de 09_hydro_pump 1 227 0.0 0.0 0.0 +de 01_solar 1 228 2000.0 1.0 0.0 +de 02_wind_on 1 228 2000.0 1.0 0.0 +de 03_wind_off 1 228 1900.0 1.0 0.0 +de 04_res 1 228 0.0 0.0 0.0 +de 05_nuclear 1 228 0.0 0.0 0.0 +de 06_coal 1 228 0.0 0.0 0.0 +de 07_gas 1 228 0.0 0.0 0.0 +de 08_non-res 1 228 0.0 0.0 0.0 +de 09_hydro_pump 1 228 0.0 0.0 0.0 +de 01_solar 1 229 2000.0 1.0 0.0 +de 02_wind_on 1 229 2000.0 1.0 0.0 +de 03_wind_off 1 229 2000.0 1.0 0.0 +de 04_res 1 229 0.0 0.0 0.0 +de 05_nuclear 1 229 0.0 0.0 0.0 +de 06_coal 1 229 0.0 0.0 0.0 +de 07_gas 1 229 0.0 0.0 0.0 +de 08_non-res 1 229 0.0 0.0 0.0 +de 09_hydro_pump 1 229 0.0 0.0 0.0 +de 01_solar 1 230 2000.0 1.0 0.0 +de 02_wind_on 1 230 2000.0 1.0 0.0 +de 03_wind_off 1 230 2000.0 1.0 0.0 +de 04_res 1 230 100.0 1.0 0.0 +de 05_nuclear 1 230 0.0 0.0 0.0 +de 06_coal 1 230 0.0 0.0 0.0 +de 07_gas 1 230 0.0 0.0 0.0 +de 08_non-res 1 230 0.0 0.0 0.0 +de 09_hydro_pump 1 230 0.0 0.0 0.0 +de 01_solar 1 231 2000.0 1.0 0.0 +de 02_wind_on 1 231 2000.0 1.0 0.0 +de 03_wind_off 1 231 2000.0 1.0 0.0 +de 04_res 1 231 200.0 1.0 0.0 +de 05_nuclear 1 231 0.0 0.0 0.0 +de 06_coal 1 231 0.0 0.0 0.0 +de 07_gas 1 231 0.0 0.0 0.0 +de 08_non-res 1 231 0.0 0.0 0.0 +de 09_hydro_pump 1 231 0.0 0.0 0.0 +de 01_solar 1 232 2000.0 1.0 0.0 +de 02_wind_on 1 232 2000.0 1.0 0.0 +de 03_wind_off 1 232 2000.0 1.0 0.0 +de 04_res 1 232 300.0 1.0 0.0 +de 05_nuclear 1 232 0.0 0.0 0.0 +de 06_coal 1 232 0.0 0.0 0.0 +de 07_gas 1 232 0.0 0.0 0.0 +de 08_non-res 1 232 0.0 0.0 0.0 +de 09_hydro_pump 1 232 0.0 0.0 0.0 +de 01_solar 1 233 2000.0 1.0 0.0 +de 02_wind_on 1 233 2000.0 1.0 0.0 +de 03_wind_off 1 233 2000.0 1.0 0.0 +de 04_res 1 233 400.0 1.0 0.0 +de 05_nuclear 1 233 0.0 0.0 0.0 +de 06_coal 1 233 0.0 0.0 0.0 +de 07_gas 1 233 0.0 0.0 0.0 +de 08_non-res 1 233 0.0 0.0 0.0 +de 09_hydro_pump 1 233 0.0 0.0 0.0 +de 01_solar 1 234 2000.0 1.0 0.0 +de 02_wind_on 1 234 2000.0 1.0 0.0 +de 03_wind_off 1 234 2000.0 1.0 0.0 +de 04_res 1 234 500.0 1.0 0.0 +de 05_nuclear 1 234 0.0 0.0 0.0 +de 06_coal 1 234 0.0 0.0 0.0 +de 07_gas 1 234 0.0 0.0 0.0 +de 08_non-res 1 234 0.0 0.0 0.0 +de 09_hydro_pump 1 234 0.0 0.0 0.0 +de 01_solar 1 235 2000.0 1.0 0.0 +de 02_wind_on 1 235 2000.0 1.0 0.0 +de 03_wind_off 1 235 2000.0 1.0 0.0 +de 04_res 1 235 600.0 1.0 0.0 +de 05_nuclear 1 235 0.0 0.0 0.0 +de 06_coal 1 235 0.0 0.0 0.0 +de 07_gas 1 235 0.0 0.0 0.0 +de 08_non-res 1 235 0.0 0.0 0.0 +de 09_hydro_pump 1 235 0.0 0.0 0.0 +de 01_solar 1 236 2000.0 1.0 0.0 +de 02_wind_on 1 236 2000.0 1.0 0.0 +de 03_wind_off 1 236 2000.0 1.0 0.0 +de 04_res 1 236 700.0 1.0 0.0 +de 05_nuclear 1 236 0.0 0.0 0.0 +de 06_coal 1 236 0.0 0.0 0.0 +de 07_gas 1 236 0.0 0.0 0.0 +de 08_non-res 1 236 0.0 0.0 0.0 +de 09_hydro_pump 1 236 0.0 0.0 0.0 +de 01_solar 1 237 2000.0 1.0 0.0 +de 02_wind_on 1 237 2000.0 1.0 0.0 +de 03_wind_off 1 237 2000.0 1.0 0.0 +de 04_res 1 237 800.0 1.0 0.0 +de 05_nuclear 1 237 0.0 0.0 0.0 +de 06_coal 1 237 0.0 0.0 0.0 +de 07_gas 1 237 0.0 0.0 0.0 +de 08_non-res 1 237 0.0 0.0 0.0 +de 09_hydro_pump 1 237 0.0 0.0 0.0 +de 01_solar 1 238 2000.0 1.0 0.0 +de 02_wind_on 1 238 2000.0 1.0 0.0 +de 03_wind_off 1 238 2000.0 1.0 0.0 +de 04_res 1 238 900.0 1.0 0.0 +de 05_nuclear 1 238 0.0 0.0 0.0 +de 06_coal 1 238 0.0 0.0 0.0 +de 07_gas 1 238 0.0 0.0 0.0 +de 08_non-res 1 238 0.0 0.0 0.0 +de 09_hydro_pump 1 238 0.0 0.0 0.0 +de 01_solar 1 239 2000.0 1.0 0.0 +de 02_wind_on 1 239 2000.0 1.0 0.0 +de 03_wind_off 1 239 2000.0 1.0 0.0 +de 04_res 1 239 1000.0 1.0 0.0 +de 05_nuclear 1 239 0.0 0.0 0.0 +de 06_coal 1 239 0.0 0.0 0.0 +de 07_gas 1 239 0.0 0.0 0.0 +de 08_non-res 1 239 0.0 0.0 0.0 +de 09_hydro_pump 1 239 0.0 0.0 0.0 +de 01_solar 1 240 2000.0 1.0 0.0 +de 02_wind_on 1 240 2000.0 1.0 0.0 +de 03_wind_off 1 240 2000.0 1.0 0.0 +de 04_res 1 240 1100.0 1.0 0.0 +de 05_nuclear 1 240 0.0 0.0 0.0 +de 06_coal 1 240 0.0 0.0 0.0 +de 07_gas 1 240 0.0 0.0 0.0 +de 08_non-res 1 240 0.0 0.0 0.0 +de 09_hydro_pump 1 240 0.0 0.0 0.0 +de 01_solar 1 241 2000.0 1.0 0.0 +de 02_wind_on 1 241 2000.0 1.0 0.0 +de 03_wind_off 1 241 2000.0 1.0 0.0 +de 04_res 1 241 1200.0 1.0 0.0 +de 05_nuclear 1 241 0.0 0.0 0.0 +de 06_coal 1 241 0.0 0.0 0.0 +de 07_gas 1 241 0.0 0.0 0.0 +de 08_non-res 1 241 0.0 0.0 0.0 +de 09_hydro_pump 1 241 0.0 0.0 0.0 +de 01_solar 1 242 2000.0 1.0 0.0 +de 02_wind_on 1 242 2000.0 1.0 0.0 +de 03_wind_off 1 242 2000.0 1.0 0.0 +de 04_res 1 242 1300.0 1.0 0.0 +de 05_nuclear 1 242 0.0 0.0 0.0 +de 06_coal 1 242 0.0 0.0 0.0 +de 07_gas 1 242 0.0 0.0 0.0 +de 08_non-res 1 242 0.0 0.0 0.0 +de 09_hydro_pump 1 242 0.0 0.0 0.0 +de 01_solar 1 243 2000.0 1.0 0.0 +de 02_wind_on 1 243 2000.0 1.0 0.0 +de 03_wind_off 1 243 2000.0 1.0 0.0 +de 04_res 1 243 1400.0 1.0 0.0 +de 05_nuclear 1 243 0.0 0.0 0.0 +de 06_coal 1 243 0.0 0.0 0.0 +de 07_gas 1 243 0.0 0.0 0.0 +de 08_non-res 1 243 0.0 0.0 0.0 +de 09_hydro_pump 1 243 0.0 0.0 0.0 +de 01_solar 1 244 2000.0 1.0 0.0 +de 02_wind_on 1 244 2000.0 1.0 0.0 +de 03_wind_off 1 244 2000.0 1.0 0.0 +de 04_res 1 244 1500.0 1.0 0.0 +de 05_nuclear 1 244 0.0 0.0 0.0 +de 06_coal 1 244 0.0 0.0 0.0 +de 07_gas 1 244 0.0 0.0 0.0 +de 08_non-res 1 244 0.0 0.0 0.0 +de 09_hydro_pump 1 244 0.0 0.0 0.0 +de 01_solar 1 245 2000.0 1.0 0.0 +de 02_wind_on 1 245 2000.0 1.0 0.0 +de 03_wind_off 1 245 2000.0 1.0 0.0 +de 04_res 1 245 1600.0 1.0 0.0 +de 05_nuclear 1 245 0.0 0.0 0.0 +de 06_coal 1 245 0.0 0.0 0.0 +de 07_gas 1 245 0.0 0.0 0.0 +de 08_non-res 1 245 0.0 0.0 0.0 +de 09_hydro_pump 1 245 0.0 0.0 0.0 +de 01_solar 1 246 2000.0 1.0 0.0 +de 02_wind_on 1 246 2000.0 1.0 0.0 +de 03_wind_off 1 246 2000.0 1.0 0.0 +de 04_res 1 246 1700.0 1.0 0.0 +de 05_nuclear 1 246 0.0 0.0 0.0 +de 06_coal 1 246 0.0 0.0 0.0 +de 07_gas 1 246 0.0 0.0 0.0 +de 08_non-res 1 246 0.0 0.0 0.0 +de 09_hydro_pump 1 246 0.0 0.0 0.0 +de 01_solar 1 247 2000.0 1.0 0.0 +de 02_wind_on 1 247 2000.0 1.0 0.0 +de 03_wind_off 1 247 2000.0 1.0 0.0 +de 04_res 1 247 1800.0 1.0 0.0 +de 05_nuclear 1 247 0.0 0.0 0.0 +de 06_coal 1 247 0.0 0.0 0.0 +de 07_gas 1 247 0.0 0.0 0.0 +de 08_non-res 1 247 0.0 0.0 0.0 +de 09_hydro_pump 1 247 0.0 0.0 0.0 +de 01_solar 1 248 2000.0 1.0 0.0 +de 02_wind_on 1 248 2000.0 1.0 0.0 +de 03_wind_off 1 248 2000.0 1.0 0.0 +de 04_res 1 248 1900.0 1.0 0.0 +de 05_nuclear 1 248 0.0 0.0 0.0 +de 06_coal 1 248 0.0 0.0 0.0 +de 07_gas 1 248 0.0 0.0 0.0 +de 08_non-res 1 248 0.0 0.0 0.0 +de 09_hydro_pump 1 248 0.0 0.0 0.0 +de 01_solar 1 249 2000.0 1.0 0.0 +de 02_wind_on 1 249 2000.0 1.0 0.0 +de 03_wind_off 1 249 2000.0 1.0 0.0 +de 04_res 1 249 2000.0 1.0 0.0 +de 05_nuclear 1 249 0.0 0.0 0.0 +de 06_coal 1 249 0.0 0.0 0.0 +de 07_gas 1 249 0.0 0.0 0.0 +de 08_non-res 1 249 0.0 0.0 0.0 +de 09_hydro_pump 1 249 0.0 0.0 0.0 +de 01_solar 1 250 2000.0 1.0 0.0 +de 02_wind_on 1 250 2000.0 1.0 0.0 +de 03_wind_off 1 250 2000.0 1.0 0.0 +de 04_res 1 250 2000.0 1.0 0.0 +de 05_nuclear 1 250 100.0 1.0 0.0 +de 06_coal 1 250 0.0 0.0 0.0 +de 07_gas 1 250 0.0 0.0 0.0 +de 08_non-res 1 250 0.0 0.0 0.0 +de 09_hydro_pump 1 250 0.0 0.0 0.0 +de 01_solar 1 251 2000.0 1.0 0.0 +de 02_wind_on 1 251 2000.0 1.0 0.0 +de 03_wind_off 1 251 2000.0 1.0 0.0 +de 04_res 1 251 2000.0 1.0 0.0 +de 05_nuclear 1 251 200.0 1.0 0.0 +de 06_coal 1 251 0.0 0.0 0.0 +de 07_gas 1 251 0.0 0.0 0.0 +de 08_non-res 1 251 0.0 0.0 0.0 +de 09_hydro_pump 1 251 0.0 0.0 0.0 +de 01_solar 1 252 2000.0 1.0 0.0 +de 02_wind_on 1 252 2000.0 1.0 0.0 +de 03_wind_off 1 252 2000.0 1.0 0.0 +de 04_res 1 252 2000.0 1.0 0.0 +de 05_nuclear 1 252 300.0 1.0 0.0 +de 06_coal 1 252 0.0 0.0 0.0 +de 07_gas 1 252 0.0 0.0 0.0 +de 08_non-res 1 252 0.0 0.0 0.0 +de 09_hydro_pump 1 252 0.0 0.0 0.0 +de 01_solar 1 253 2000.0 1.0 0.0 +de 02_wind_on 1 253 2000.0 1.0 0.0 +de 03_wind_off 1 253 2000.0 1.0 0.0 +de 04_res 1 253 2000.0 1.0 0.0 +de 05_nuclear 1 253 400.0 1.0 0.0 +de 06_coal 1 253 0.0 0.0 0.0 +de 07_gas 1 253 0.0 0.0 0.0 +de 08_non-res 1 253 0.0 0.0 0.0 +de 09_hydro_pump 1 253 0.0 0.0 0.0 +de 01_solar 1 254 2000.0 1.0 0.0 +de 02_wind_on 1 254 2000.0 1.0 0.0 +de 03_wind_off 1 254 2000.0 1.0 0.0 +de 04_res 1 254 2000.0 1.0 0.0 +de 05_nuclear 1 254 500.0 1.0 0.0 +de 06_coal 1 254 0.0 0.0 0.0 +de 07_gas 1 254 0.0 0.0 0.0 +de 08_non-res 1 254 0.0 0.0 0.0 +de 09_hydro_pump 1 254 0.0 0.0 0.0 +de 01_solar 1 255 2000.0 1.0 0.0 +de 02_wind_on 1 255 2000.0 1.0 0.0 +de 03_wind_off 1 255 2000.0 1.0 0.0 +de 04_res 1 255 2000.0 1.0 0.0 +de 05_nuclear 1 255 600.0 1.0 0.0 +de 06_coal 1 255 0.0 0.0 0.0 +de 07_gas 1 255 0.0 0.0 0.0 +de 08_non-res 1 255 0.0 0.0 0.0 +de 09_hydro_pump 1 255 0.0 0.0 0.0 +de 01_solar 1 256 2000.0 1.0 0.0 +de 02_wind_on 1 256 2000.0 1.0 0.0 +de 03_wind_off 1 256 2000.0 1.0 0.0 +de 04_res 1 256 2000.0 1.0 0.0 +de 05_nuclear 1 256 700.0 1.0 0.0 +de 06_coal 1 256 0.0 0.0 0.0 +de 07_gas 1 256 0.0 0.0 0.0 +de 08_non-res 1 256 0.0 0.0 0.0 +de 09_hydro_pump 1 256 0.0 0.0 0.0 +de 01_solar 1 257 2000.0 1.0 0.0 +de 02_wind_on 1 257 2000.0 1.0 0.0 +de 03_wind_off 1 257 2000.0 1.0 0.0 +de 04_res 1 257 2000.0 1.0 0.0 +de 05_nuclear 1 257 800.0 1.0 0.0 +de 06_coal 1 257 0.0 0.0 0.0 +de 07_gas 1 257 0.0 0.0 0.0 +de 08_non-res 1 257 0.0 0.0 0.0 +de 09_hydro_pump 1 257 0.0 0.0 0.0 +de 01_solar 1 258 2000.0 1.0 0.0 +de 02_wind_on 1 258 2000.0 1.0 0.0 +de 03_wind_off 1 258 2000.0 1.0 0.0 +de 04_res 1 258 2000.0 1.0 0.0 +de 05_nuclear 1 258 900.0 1.0 0.0 +de 06_coal 1 258 0.0 0.0 0.0 +de 07_gas 1 258 0.0 0.0 0.0 +de 08_non-res 1 258 0.0 0.0 0.0 +de 09_hydro_pump 1 258 0.0 0.0 0.0 +de 01_solar 1 259 2000.0 1.0 0.0 +de 02_wind_on 1 259 2000.0 1.0 0.0 +de 03_wind_off 1 259 2000.0 1.0 0.0 +de 04_res 1 259 2000.0 1.0 0.0 +de 05_nuclear 1 259 1000.0 1.0 0.0 +de 06_coal 1 259 0.0 0.0 0.0 +de 07_gas 1 259 0.0 0.0 0.0 +de 08_non-res 1 259 0.0 0.0 0.0 +de 09_hydro_pump 1 259 0.0 0.0 0.0 +de 01_solar 1 260 2000.0 1.0 0.0 +de 02_wind_on 1 260 2000.0 1.0 0.0 +de 03_wind_off 1 260 2000.0 1.0 0.0 +de 04_res 1 260 2000.0 1.0 0.0 +de 05_nuclear 1 260 1100.0 1.0 0.0 +de 06_coal 1 260 0.0 0.0 0.0 +de 07_gas 1 260 0.0 0.0 0.0 +de 08_non-res 1 260 0.0 0.0 0.0 +de 09_hydro_pump 1 260 0.0 0.0 0.0 +de 01_solar 1 261 2000.0 1.0 0.0 +de 02_wind_on 1 261 2000.0 1.0 0.0 +de 03_wind_off 1 261 2000.0 1.0 0.0 +de 04_res 1 261 2000.0 1.0 0.0 +de 05_nuclear 1 261 1200.0 1.0 0.0 +de 06_coal 1 261 0.0 0.0 0.0 +de 07_gas 1 261 0.0 0.0 0.0 +de 08_non-res 1 261 0.0 0.0 0.0 +de 09_hydro_pump 1 261 0.0 0.0 0.0 +de 01_solar 1 262 2000.0 1.0 0.0 +de 02_wind_on 1 262 2000.0 1.0 0.0 +de 03_wind_off 1 262 2000.0 1.0 0.0 +de 04_res 1 262 2000.0 1.0 0.0 +de 05_nuclear 1 262 1300.0 1.0 0.0 +de 06_coal 1 262 0.0 0.0 0.0 +de 07_gas 1 262 0.0 0.0 0.0 +de 08_non-res 1 262 0.0 0.0 0.0 +de 09_hydro_pump 1 262 0.0 0.0 0.0 +de 01_solar 1 263 2000.0 1.0 0.0 +de 02_wind_on 1 263 2000.0 1.0 0.0 +de 03_wind_off 1 263 2000.0 1.0 0.0 +de 04_res 1 263 2000.0 1.0 0.0 +de 05_nuclear 1 263 1400.0 1.0 0.0 +de 06_coal 1 263 0.0 0.0 0.0 +de 07_gas 1 263 0.0 0.0 0.0 +de 08_non-res 1 263 0.0 0.0 0.0 +de 09_hydro_pump 1 263 0.0 0.0 0.0 +de 01_solar 1 264 2000.0 1.0 0.0 +de 02_wind_on 1 264 2000.0 1.0 0.0 +de 03_wind_off 1 264 2000.0 1.0 0.0 +de 04_res 1 264 2000.0 1.0 0.0 +de 05_nuclear 1 264 1500.0 1.0 0.0 +de 06_coal 1 264 0.0 0.0 0.0 +de 07_gas 1 264 0.0 0.0 0.0 +de 08_non-res 1 264 0.0 0.0 0.0 +de 09_hydro_pump 1 264 0.0 0.0 0.0 +de 01_solar 1 265 2000.0 1.0 0.0 +de 02_wind_on 1 265 2000.0 1.0 0.0 +de 03_wind_off 1 265 2000.0 1.0 0.0 +de 04_res 1 265 2000.0 1.0 0.0 +de 05_nuclear 1 265 1600.0 1.0 0.0 +de 06_coal 1 265 0.0 0.0 0.0 +de 07_gas 1 265 0.0 0.0 0.0 +de 08_non-res 1 265 0.0 0.0 0.0 +de 09_hydro_pump 1 265 0.0 0.0 0.0 +de 01_solar 1 266 2000.0 1.0 0.0 +de 02_wind_on 1 266 2000.0 1.0 0.0 +de 03_wind_off 1 266 2000.0 1.0 0.0 +de 04_res 1 266 2000.0 1.0 0.0 +de 05_nuclear 1 266 1700.0 1.0 0.0 +de 06_coal 1 266 0.0 0.0 0.0 +de 07_gas 1 266 0.0 0.0 0.0 +de 08_non-res 1 266 0.0 0.0 0.0 +de 09_hydro_pump 1 266 0.0 0.0 0.0 +de 01_solar 1 267 2000.0 1.0 0.0 +de 02_wind_on 1 267 2000.0 1.0 0.0 +de 03_wind_off 1 267 2000.0 1.0 0.0 +de 04_res 1 267 2000.0 1.0 0.0 +de 05_nuclear 1 267 1800.0 1.0 0.0 +de 06_coal 1 267 0.0 0.0 0.0 +de 07_gas 1 267 0.0 0.0 0.0 +de 08_non-res 1 267 0.0 0.0 0.0 +de 09_hydro_pump 1 267 0.0 0.0 0.0 +de 01_solar 1 268 2000.0 1.0 0.0 +de 02_wind_on 1 268 2000.0 1.0 0.0 +de 03_wind_off 1 268 2000.0 1.0 0.0 +de 04_res 1 268 2000.0 1.0 0.0 +de 05_nuclear 1 268 1900.0 1.0 0.0 +de 06_coal 1 268 0.0 0.0 0.0 +de 07_gas 1 268 0.0 0.0 0.0 +de 08_non-res 1 268 0.0 0.0 0.0 +de 09_hydro_pump 1 268 0.0 0.0 0.0 +de 01_solar 1 269 2000.0 1.0 0.0 +de 02_wind_on 1 269 2000.0 1.0 0.0 +de 03_wind_off 1 269 2000.0 1.0 0.0 +de 04_res 1 269 2000.0 1.0 0.0 +de 05_nuclear 1 269 2000.0 1.0 0.0 +de 06_coal 1 269 0.0 0.0 0.0 +de 07_gas 1 269 0.0 0.0 0.0 +de 08_non-res 1 269 0.0 0.0 0.0 +de 09_hydro_pump 1 269 0.0 0.0 0.0 +de 01_solar 1 270 2000.0 1.0 0.0 +de 02_wind_on 1 270 2000.0 1.0 0.0 +de 03_wind_off 1 270 2000.0 1.0 0.0 +de 04_res 1 270 2000.0 1.0 0.0 +de 05_nuclear 1 270 2000.0 1.0 0.0 +de 06_coal 1 270 100.0 1.0 0.0 +de 07_gas 1 270 0.0 0.0 0.0 +de 08_non-res 1 270 0.0 0.0 0.0 +de 09_hydro_pump 1 270 0.0 0.0 0.0 +de 01_solar 1 271 2000.0 1.0 0.0 +de 02_wind_on 1 271 2000.0 1.0 0.0 +de 03_wind_off 1 271 2000.0 1.0 0.0 +de 04_res 1 271 2000.0 1.0 0.0 +de 05_nuclear 1 271 2000.0 1.0 0.0 +de 06_coal 1 271 200.0 1.0 0.0 +de 07_gas 1 271 0.0 0.0 0.0 +de 08_non-res 1 271 0.0 0.0 0.0 +de 09_hydro_pump 1 271 0.0 0.0 0.0 +de 01_solar 1 272 2000.0 1.0 0.0 +de 02_wind_on 1 272 2000.0 1.0 0.0 +de 03_wind_off 1 272 2000.0 1.0 0.0 +de 04_res 1 272 2000.0 1.0 0.0 +de 05_nuclear 1 272 2000.0 1.0 0.0 +de 06_coal 1 272 300.0 1.0 0.0 +de 07_gas 1 272 0.0 0.0 0.0 +de 08_non-res 1 272 0.0 0.0 0.0 +de 09_hydro_pump 1 272 0.0 0.0 0.0 +de 01_solar 1 273 2000.0 1.0 0.0 +de 02_wind_on 1 273 2000.0 1.0 0.0 +de 03_wind_off 1 273 2000.0 1.0 0.0 +de 04_res 1 273 2000.0 1.0 0.0 +de 05_nuclear 1 273 2000.0 1.0 0.0 +de 06_coal 1 273 400.0 1.0 0.0 +de 07_gas 1 273 0.0 0.0 0.0 +de 08_non-res 1 273 0.0 0.0 0.0 +de 09_hydro_pump 1 273 0.0 0.0 0.0 +de 01_solar 1 274 2000.0 1.0 0.0 +de 02_wind_on 1 274 2000.0 1.0 0.0 +de 03_wind_off 1 274 2000.0 1.0 0.0 +de 04_res 1 274 2000.0 1.0 0.0 +de 05_nuclear 1 274 2000.0 1.0 0.0 +de 06_coal 1 274 500.0 1.0 0.0 +de 07_gas 1 274 0.0 0.0 0.0 +de 08_non-res 1 274 0.0 0.0 0.0 +de 09_hydro_pump 1 274 0.0 0.0 0.0 +de 01_solar 1 275 2000.0 1.0 0.0 +de 02_wind_on 1 275 2000.0 1.0 0.0 +de 03_wind_off 1 275 2000.0 1.0 0.0 +de 04_res 1 275 2000.0 1.0 0.0 +de 05_nuclear 1 275 2000.0 1.0 0.0 +de 06_coal 1 275 600.0 1.0 0.0 +de 07_gas 1 275 0.0 0.0 0.0 +de 08_non-res 1 275 0.0 0.0 0.0 +de 09_hydro_pump 1 275 0.0 0.0 0.0 +de 01_solar 1 276 2000.0 1.0 0.0 +de 02_wind_on 1 276 2000.0 1.0 0.0 +de 03_wind_off 1 276 2000.0 1.0 0.0 +de 04_res 1 276 2000.0 1.0 0.0 +de 05_nuclear 1 276 2000.0 1.0 0.0 +de 06_coal 1 276 700.0 1.0 0.0 +de 07_gas 1 276 0.0 0.0 0.0 +de 08_non-res 1 276 0.0 0.0 0.0 +de 09_hydro_pump 1 276 0.0 0.0 0.0 +de 01_solar 1 277 2000.0 1.0 0.0 +de 02_wind_on 1 277 2000.0 1.0 0.0 +de 03_wind_off 1 277 2000.0 1.0 0.0 +de 04_res 1 277 2000.0 1.0 0.0 +de 05_nuclear 1 277 2000.0 1.0 0.0 +de 06_coal 1 277 800.0 1.0 0.0 +de 07_gas 1 277 0.0 0.0 0.0 +de 08_non-res 1 277 0.0 0.0 0.0 +de 09_hydro_pump 1 277 0.0 0.0 0.0 +de 01_solar 1 278 2000.0 1.0 0.0 +de 02_wind_on 1 278 2000.0 1.0 0.0 +de 03_wind_off 1 278 2000.0 1.0 0.0 +de 04_res 1 278 2000.0 1.0 0.0 +de 05_nuclear 1 278 2000.0 1.0 0.0 +de 06_coal 1 278 900.0 1.0 0.0 +de 07_gas 1 278 0.0 0.0 0.0 +de 08_non-res 1 278 0.0 0.0 0.0 +de 09_hydro_pump 1 278 0.0 0.0 0.0 +de 01_solar 1 279 2000.0 1.0 0.0 +de 02_wind_on 1 279 2000.0 1.0 0.0 +de 03_wind_off 1 279 2000.0 1.0 0.0 +de 04_res 1 279 2000.0 1.0 0.0 +de 05_nuclear 1 279 2000.0 1.0 0.0 +de 06_coal 1 279 1000.0 1.0 0.0 +de 07_gas 1 279 0.0 0.0 0.0 +de 08_non-res 1 279 0.0 0.0 0.0 +de 09_hydro_pump 1 279 0.0 0.0 0.0 +de 01_solar 1 280 2000.0 1.0 0.0 +de 02_wind_on 1 280 2000.0 1.0 0.0 +de 03_wind_off 1 280 2000.0 1.0 0.0 +de 04_res 1 280 2000.0 1.0 0.0 +de 05_nuclear 1 280 2000.0 1.0 0.0 +de 06_coal 1 280 1100.0 1.0 0.0 +de 07_gas 1 280 0.0 0.0 0.0 +de 08_non-res 1 280 0.0 0.0 0.0 +de 09_hydro_pump 1 280 0.0 0.0 0.0 +de 01_solar 1 281 2000.0 1.0 0.0 +de 02_wind_on 1 281 2000.0 1.0 0.0 +de 03_wind_off 1 281 2000.0 1.0 0.0 +de 04_res 1 281 2000.0 1.0 0.0 +de 05_nuclear 1 281 2000.0 1.0 0.0 +de 06_coal 1 281 1200.0 1.0 0.0 +de 07_gas 1 281 0.0 0.0 0.0 +de 08_non-res 1 281 0.0 0.0 0.0 +de 09_hydro_pump 1 281 0.0 0.0 0.0 +de 01_solar 1 282 2000.0 1.0 0.0 +de 02_wind_on 1 282 2000.0 1.0 0.0 +de 03_wind_off 1 282 2000.0 1.0 0.0 +de 04_res 1 282 2000.0 1.0 0.0 +de 05_nuclear 1 282 2000.0 1.0 0.0 +de 06_coal 1 282 1300.0 1.0 0.0 +de 07_gas 1 282 0.0 0.0 0.0 +de 08_non-res 1 282 0.0 0.0 0.0 +de 09_hydro_pump 1 282 0.0 0.0 0.0 +de 01_solar 1 283 2000.0 1.0 0.0 +de 02_wind_on 1 283 2000.0 1.0 0.0 +de 03_wind_off 1 283 2000.0 1.0 0.0 +de 04_res 1 283 2000.0 1.0 0.0 +de 05_nuclear 1 283 2000.0 1.0 0.0 +de 06_coal 1 283 1400.0 1.0 0.0 +de 07_gas 1 283 0.0 0.0 0.0 +de 08_non-res 1 283 0.0 0.0 0.0 +de 09_hydro_pump 1 283 0.0 0.0 0.0 +de 01_solar 1 284 2000.0 1.0 0.0 +de 02_wind_on 1 284 2000.0 1.0 0.0 +de 03_wind_off 1 284 2000.0 1.0 0.0 +de 04_res 1 284 2000.0 1.0 0.0 +de 05_nuclear 1 284 2000.0 1.0 0.0 +de 06_coal 1 284 1500.0 1.0 0.0 +de 07_gas 1 284 0.0 0.0 0.0 +de 08_non-res 1 284 0.0 0.0 0.0 +de 09_hydro_pump 1 284 0.0 0.0 0.0 +de 01_solar 1 285 2000.0 1.0 0.0 +de 02_wind_on 1 285 2000.0 1.0 0.0 +de 03_wind_off 1 285 2000.0 1.0 0.0 +de 04_res 1 285 2000.0 1.0 0.0 +de 05_nuclear 1 285 2000.0 1.0 0.0 +de 06_coal 1 285 1600.0 1.0 0.0 +de 07_gas 1 285 0.0 0.0 0.0 +de 08_non-res 1 285 0.0 0.0 0.0 +de 09_hydro_pump 1 285 0.0 0.0 0.0 +de 01_solar 1 286 2000.0 1.0 0.0 +de 02_wind_on 1 286 2000.0 1.0 0.0 +de 03_wind_off 1 286 2000.0 1.0 0.0 +de 04_res 1 286 2000.0 1.0 0.0 +de 05_nuclear 1 286 2000.0 1.0 0.0 +de 06_coal 1 286 1700.0 1.0 0.0 +de 07_gas 1 286 0.0 0.0 0.0 +de 08_non-res 1 286 0.0 0.0 0.0 +de 09_hydro_pump 1 286 0.0 0.0 0.0 +de 01_solar 1 287 2000.0 1.0 0.0 +de 02_wind_on 1 287 2000.0 1.0 0.0 +de 03_wind_off 1 287 2000.0 1.0 0.0 +de 04_res 1 287 2000.0 1.0 0.0 +de 05_nuclear 1 287 2000.0 1.0 0.0 +de 06_coal 1 287 1800.0 1.0 0.0 +de 07_gas 1 287 0.0 0.0 0.0 +de 08_non-res 1 287 0.0 0.0 0.0 +de 09_hydro_pump 1 287 0.0 0.0 0.0 +de 01_solar 1 288 2000.0 1.0 0.0 +de 02_wind_on 1 288 2000.0 1.0 0.0 +de 03_wind_off 1 288 2000.0 1.0 0.0 +de 04_res 1 288 2000.0 1.0 0.0 +de 05_nuclear 1 288 2000.0 1.0 0.0 +de 06_coal 1 288 1900.0 1.0 0.0 +de 07_gas 1 288 0.0 0.0 0.0 +de 08_non-res 1 288 0.0 0.0 0.0 +de 09_hydro_pump 1 288 0.0 0.0 0.0 +de 01_solar 1 289 2000.0 1.0 0.0 +de 02_wind_on 1 289 2000.0 1.0 0.0 +de 03_wind_off 1 289 2000.0 1.0 0.0 +de 04_res 1 289 2000.0 1.0 0.0 +de 05_nuclear 1 289 2000.0 1.0 0.0 +de 06_coal 1 289 2000.0 1.0 0.0 +de 07_gas 1 289 0.0 0.0 0.0 +de 08_non-res 1 289 0.0 0.0 0.0 +de 09_hydro_pump 1 289 0.0 0.0 0.0 +de 01_solar 1 290 2000.0 1.0 0.0 +de 02_wind_on 1 290 2000.0 1.0 0.0 +de 03_wind_off 1 290 2000.0 1.0 0.0 +de 04_res 1 290 2000.0 1.0 0.0 +de 05_nuclear 1 290 2000.0 1.0 0.0 +de 06_coal 1 290 2000.0 1.0 0.0 +de 07_gas 1 290 100.0 1.0 0.0 +de 08_non-res 1 290 0.0 0.0 0.0 +de 09_hydro_pump 1 290 0.0 0.0 0.0 +de 01_solar 1 291 2000.0 1.0 0.0 +de 02_wind_on 1 291 2000.0 1.0 0.0 +de 03_wind_off 1 291 2000.0 1.0 0.0 +de 04_res 1 291 2000.0 1.0 0.0 +de 05_nuclear 1 291 2000.0 1.0 0.0 +de 06_coal 1 291 2000.0 1.0 0.0 +de 07_gas 1 291 200.0 1.0 0.0 +de 08_non-res 1 291 0.0 0.0 0.0 +de 09_hydro_pump 1 291 0.0 0.0 0.0 +de 01_solar 1 292 2000.0 1.0 0.0 +de 02_wind_on 1 292 2000.0 1.0 0.0 +de 03_wind_off 1 292 2000.0 1.0 0.0 +de 04_res 1 292 2000.0 1.0 0.0 +de 05_nuclear 1 292 2000.0 1.0 0.0 +de 06_coal 1 292 2000.0 1.0 0.0 +de 07_gas 1 292 300.0 1.0 0.0 +de 08_non-res 1 292 0.0 0.0 0.0 +de 09_hydro_pump 1 292 0.0 0.0 0.0 +de 01_solar 1 293 2000.0 1.0 0.0 +de 02_wind_on 1 293 2000.0 1.0 0.0 +de 03_wind_off 1 293 2000.0 1.0 0.0 +de 04_res 1 293 2000.0 1.0 0.0 +de 05_nuclear 1 293 2000.0 1.0 0.0 +de 06_coal 1 293 2000.0 1.0 0.0 +de 07_gas 1 293 400.0 1.0 0.0 +de 08_non-res 1 293 0.0 0.0 0.0 +de 09_hydro_pump 1 293 0.0 0.0 0.0 +de 01_solar 1 294 2000.0 1.0 0.0 +de 02_wind_on 1 294 2000.0 1.0 0.0 +de 03_wind_off 1 294 2000.0 1.0 0.0 +de 04_res 1 294 2000.0 1.0 0.0 +de 05_nuclear 1 294 2000.0 1.0 0.0 +de 06_coal 1 294 2000.0 1.0 0.0 +de 07_gas 1 294 500.0 1.0 0.0 +de 08_non-res 1 294 0.0 0.0 0.0 +de 09_hydro_pump 1 294 0.0 0.0 0.0 +de 01_solar 1 295 2000.0 1.0 0.0 +de 02_wind_on 1 295 2000.0 1.0 0.0 +de 03_wind_off 1 295 2000.0 1.0 0.0 +de 04_res 1 295 2000.0 1.0 0.0 +de 05_nuclear 1 295 2000.0 1.0 0.0 +de 06_coal 1 295 2000.0 1.0 0.0 +de 07_gas 1 295 600.0 1.0 0.0 +de 08_non-res 1 295 0.0 0.0 0.0 +de 09_hydro_pump 1 295 0.0 0.0 0.0 +de 01_solar 1 296 2000.0 1.0 0.0 +de 02_wind_on 1 296 2000.0 1.0 0.0 +de 03_wind_off 1 296 2000.0 1.0 0.0 +de 04_res 1 296 2000.0 1.0 0.0 +de 05_nuclear 1 296 2000.0 1.0 0.0 +de 06_coal 1 296 2000.0 1.0 0.0 +de 07_gas 1 296 700.0 1.0 0.0 +de 08_non-res 1 296 0.0 0.0 0.0 +de 09_hydro_pump 1 296 0.0 0.0 0.0 +de 01_solar 1 297 2000.0 1.0 0.0 +de 02_wind_on 1 297 2000.0 1.0 0.0 +de 03_wind_off 1 297 2000.0 1.0 0.0 +de 04_res 1 297 2000.0 1.0 0.0 +de 05_nuclear 1 297 2000.0 1.0 0.0 +de 06_coal 1 297 2000.0 1.0 0.0 +de 07_gas 1 297 800.0 1.0 0.0 +de 08_non-res 1 297 0.0 0.0 0.0 +de 09_hydro_pump 1 297 0.0 0.0 0.0 +de 01_solar 1 298 2000.0 1.0 0.0 +de 02_wind_on 1 298 2000.0 1.0 0.0 +de 03_wind_off 1 298 2000.0 1.0 0.0 +de 04_res 1 298 2000.0 1.0 0.0 +de 05_nuclear 1 298 2000.0 1.0 0.0 +de 06_coal 1 298 2000.0 1.0 0.0 +de 07_gas 1 298 900.0 1.0 0.0 +de 08_non-res 1 298 0.0 0.0 0.0 +de 09_hydro_pump 1 298 0.0 0.0 0.0 +de 01_solar 1 299 2000.0 1.0 0.0 +de 02_wind_on 1 299 2000.0 1.0 0.0 +de 03_wind_off 1 299 2000.0 1.0 0.0 +de 04_res 1 299 2000.0 1.0 0.0 +de 05_nuclear 1 299 2000.0 1.0 0.0 +de 06_coal 1 299 2000.0 1.0 0.0 +de 07_gas 1 299 1000.0 1.0 0.0 +de 08_non-res 1 299 0.0 0.0 0.0 +de 09_hydro_pump 1 299 0.0 0.0 0.0 +de 01_solar 1 300 2000.0 1.0 0.0 +de 02_wind_on 1 300 2000.0 1.0 0.0 +de 03_wind_off 1 300 2000.0 1.0 0.0 +de 04_res 1 300 2000.0 1.0 0.0 +de 05_nuclear 1 300 2000.0 1.0 0.0 +de 06_coal 1 300 2000.0 1.0 0.0 +de 07_gas 1 300 1100.0 1.0 0.0 +de 08_non-res 1 300 0.0 0.0 0.0 +de 09_hydro_pump 1 300 0.0 0.0 0.0 +de 01_solar 1 301 2000.0 1.0 0.0 +de 02_wind_on 1 301 2000.0 1.0 0.0 +de 03_wind_off 1 301 2000.0 1.0 0.0 +de 04_res 1 301 2000.0 1.0 0.0 +de 05_nuclear 1 301 2000.0 1.0 0.0 +de 06_coal 1 301 2000.0 1.0 0.0 +de 07_gas 1 301 1200.0 1.0 0.0 +de 08_non-res 1 301 0.0 0.0 0.0 +de 09_hydro_pump 1 301 0.0 0.0 0.0 +de 01_solar 1 302 2000.0 1.0 0.0 +de 02_wind_on 1 302 2000.0 1.0 0.0 +de 03_wind_off 1 302 2000.0 1.0 0.0 +de 04_res 1 302 2000.0 1.0 0.0 +de 05_nuclear 1 302 2000.0 1.0 0.0 +de 06_coal 1 302 2000.0 1.0 0.0 +de 07_gas 1 302 1300.0 1.0 0.0 +de 08_non-res 1 302 0.0 0.0 0.0 +de 09_hydro_pump 1 302 0.0 0.0 0.0 +de 01_solar 1 303 2000.0 1.0 0.0 +de 02_wind_on 1 303 2000.0 1.0 0.0 +de 03_wind_off 1 303 2000.0 1.0 0.0 +de 04_res 1 303 2000.0 1.0 0.0 +de 05_nuclear 1 303 2000.0 1.0 0.0 +de 06_coal 1 303 2000.0 1.0 0.0 +de 07_gas 1 303 1400.0 1.0 0.0 +de 08_non-res 1 303 0.0 0.0 0.0 +de 09_hydro_pump 1 303 0.0 0.0 0.0 +de 01_solar 1 304 2000.0 1.0 0.0 +de 02_wind_on 1 304 2000.0 1.0 0.0 +de 03_wind_off 1 304 2000.0 1.0 0.0 +de 04_res 1 304 2000.0 1.0 0.0 +de 05_nuclear 1 304 2000.0 1.0 0.0 +de 06_coal 1 304 2000.0 1.0 0.0 +de 07_gas 1 304 1500.0 1.0 0.0 +de 08_non-res 1 304 0.0 0.0 0.0 +de 09_hydro_pump 1 304 0.0 0.0 0.0 +de 01_solar 1 305 2000.0 1.0 0.0 +de 02_wind_on 1 305 2000.0 1.0 0.0 +de 03_wind_off 1 305 2000.0 1.0 0.0 +de 04_res 1 305 2000.0 1.0 0.0 +de 05_nuclear 1 305 2000.0 1.0 0.0 +de 06_coal 1 305 2000.0 1.0 0.0 +de 07_gas 1 305 1600.0 1.0 0.0 +de 08_non-res 1 305 0.0 0.0 0.0 +de 09_hydro_pump 1 305 0.0 0.0 0.0 +de 01_solar 1 306 2000.0 1.0 0.0 +de 02_wind_on 1 306 2000.0 1.0 0.0 +de 03_wind_off 1 306 2000.0 1.0 0.0 +de 04_res 1 306 2000.0 1.0 0.0 +de 05_nuclear 1 306 2000.0 1.0 0.0 +de 06_coal 1 306 2000.0 1.0 0.0 +de 07_gas 1 306 1700.0 1.0 0.0 +de 08_non-res 1 306 0.0 0.0 0.0 +de 09_hydro_pump 1 306 0.0 0.0 0.0 +de 01_solar 1 307 2000.0 1.0 0.0 +de 02_wind_on 1 307 2000.0 1.0 0.0 +de 03_wind_off 1 307 2000.0 1.0 0.0 +de 04_res 1 307 2000.0 1.0 0.0 +de 05_nuclear 1 307 2000.0 1.0 0.0 +de 06_coal 1 307 2000.0 1.0 0.0 +de 07_gas 1 307 1800.0 1.0 0.0 +de 08_non-res 1 307 0.0 0.0 0.0 +de 09_hydro_pump 1 307 0.0 0.0 0.0 +de 01_solar 1 308 2000.0 1.0 0.0 +de 02_wind_on 1 308 2000.0 1.0 0.0 +de 03_wind_off 1 308 2000.0 1.0 0.0 +de 04_res 1 308 2000.0 1.0 0.0 +de 05_nuclear 1 308 2000.0 1.0 0.0 +de 06_coal 1 308 2000.0 1.0 0.0 +de 07_gas 1 308 1900.0 1.0 0.0 +de 08_non-res 1 308 0.0 0.0 0.0 +de 09_hydro_pump 1 308 0.0 0.0 0.0 +de 01_solar 1 309 2000.0 1.0 0.0 +de 02_wind_on 1 309 2000.0 1.0 0.0 +de 03_wind_off 1 309 2000.0 1.0 0.0 +de 04_res 1 309 2000.0 1.0 0.0 +de 05_nuclear 1 309 2000.0 1.0 0.0 +de 06_coal 1 309 2000.0 1.0 0.0 +de 07_gas 1 309 2000.0 1.0 0.0 +de 08_non-res 1 309 0.0 0.0 0.0 +de 09_hydro_pump 1 309 0.0 0.0 0.0 +de 01_solar 1 310 2000.0 1.0 0.0 +de 02_wind_on 1 310 2000.0 1.0 0.0 +de 03_wind_off 1 310 2000.0 1.0 0.0 +de 04_res 1 310 2000.0 1.0 0.0 +de 05_nuclear 1 310 2000.0 1.0 0.0 +de 06_coal 1 310 2000.0 1.0 0.0 +de 07_gas 1 310 2000.0 1.0 0.0 +de 08_non-res 1 310 100.0 1.0 0.0 +de 09_hydro_pump 1 310 0.0 0.0 0.0 +de 01_solar 1 311 2000.0 1.0 0.0 +de 02_wind_on 1 311 2000.0 1.0 0.0 +de 03_wind_off 1 311 2000.0 1.0 0.0 +de 04_res 1 311 2000.0 1.0 0.0 +de 05_nuclear 1 311 2000.0 1.0 0.0 +de 06_coal 1 311 2000.0 1.0 0.0 +de 07_gas 1 311 2000.0 1.0 0.0 +de 08_non-res 1 311 200.0 1.0 0.0 +de 09_hydro_pump 1 311 0.0 0.0 0.0 +de 01_solar 1 312 2000.0 1.0 0.0 +de 02_wind_on 1 312 2000.0 1.0 0.0 +de 03_wind_off 1 312 2000.0 1.0 0.0 +de 04_res 1 312 2000.0 1.0 0.0 +de 05_nuclear 1 312 2000.0 1.0 0.0 +de 06_coal 1 312 2000.0 1.0 0.0 +de 07_gas 1 312 2000.0 1.0 0.0 +de 08_non-res 1 312 300.0 1.0 0.0 +de 09_hydro_pump 1 312 0.0 0.0 0.0 +de 01_solar 1 313 2000.0 1.0 0.0 +de 02_wind_on 1 313 2000.0 1.0 0.0 +de 03_wind_off 1 313 2000.0 1.0 0.0 +de 04_res 1 313 2000.0 1.0 0.0 +de 05_nuclear 1 313 2000.0 1.0 0.0 +de 06_coal 1 313 2000.0 1.0 0.0 +de 07_gas 1 313 2000.0 1.0 0.0 +de 08_non-res 1 313 400.0 1.0 0.0 +de 09_hydro_pump 1 313 0.0 0.0 0.0 +de 01_solar 1 314 2000.0 1.0 0.0 +de 02_wind_on 1 314 2000.0 1.0 0.0 +de 03_wind_off 1 314 2000.0 1.0 0.0 +de 04_res 1 314 2000.0 1.0 0.0 +de 05_nuclear 1 314 2000.0 1.0 0.0 +de 06_coal 1 314 2000.0 1.0 0.0 +de 07_gas 1 314 2000.0 1.0 0.0 +de 08_non-res 1 314 500.0 1.0 0.0 +de 09_hydro_pump 1 314 0.0 0.0 0.0 +de 01_solar 1 315 2000.0 1.0 0.0 +de 02_wind_on 1 315 2000.0 1.0 0.0 +de 03_wind_off 1 315 2000.0 1.0 0.0 +de 04_res 1 315 2000.0 1.0 0.0 +de 05_nuclear 1 315 2000.0 1.0 0.0 +de 06_coal 1 315 2000.0 1.0 0.0 +de 07_gas 1 315 2000.0 1.0 0.0 +de 08_non-res 1 315 600.0 1.0 0.0 +de 09_hydro_pump 1 315 0.0 0.0 0.0 +de 01_solar 1 316 2000.0 1.0 0.0 +de 02_wind_on 1 316 2000.0 1.0 0.0 +de 03_wind_off 1 316 2000.0 1.0 0.0 +de 04_res 1 316 2000.0 1.0 0.0 +de 05_nuclear 1 316 2000.0 1.0 0.0 +de 06_coal 1 316 2000.0 1.0 0.0 +de 07_gas 1 316 2000.0 1.0 0.0 +de 08_non-res 1 316 700.0 1.0 0.0 +de 09_hydro_pump 1 316 0.0 0.0 0.0 +de 01_solar 1 317 2000.0 1.0 0.0 +de 02_wind_on 1 317 2000.0 1.0 0.0 +de 03_wind_off 1 317 2000.0 1.0 0.0 +de 04_res 1 317 2000.0 1.0 0.0 +de 05_nuclear 1 317 2000.0 1.0 0.0 +de 06_coal 1 317 2000.0 1.0 0.0 +de 07_gas 1 317 2000.0 1.0 0.0 +de 08_non-res 1 317 800.0 1.0 0.0 +de 09_hydro_pump 1 317 0.0 0.0 0.0 +de 01_solar 1 318 2000.0 1.0 0.0 +de 02_wind_on 1 318 2000.0 1.0 0.0 +de 03_wind_off 1 318 2000.0 1.0 0.0 +de 04_res 1 318 2000.0 1.0 0.0 +de 05_nuclear 1 318 2000.0 1.0 0.0 +de 06_coal 1 318 2000.0 1.0 0.0 +de 07_gas 1 318 2000.0 1.0 0.0 +de 08_non-res 1 318 900.0 1.0 0.0 +de 09_hydro_pump 1 318 0.0 0.0 0.0 +de 01_solar 1 319 2000.0 1.0 0.0 +de 02_wind_on 1 319 2000.0 1.0 0.0 +de 03_wind_off 1 319 2000.0 1.0 0.0 +de 04_res 1 319 2000.0 1.0 0.0 +de 05_nuclear 1 319 2000.0 1.0 0.0 +de 06_coal 1 319 2000.0 1.0 0.0 +de 07_gas 1 319 2000.0 1.0 0.0 +de 08_non-res 1 319 1000.0 1.0 0.0 +de 09_hydro_pump 1 319 0.0 0.0 0.0 +de 01_solar 1 320 2000.0 1.0 0.0 +de 02_wind_on 1 320 2000.0 1.0 0.0 +de 03_wind_off 1 320 2000.0 1.0 0.0 +de 04_res 1 320 2000.0 1.0 0.0 +de 05_nuclear 1 320 2000.0 1.0 0.0 +de 06_coal 1 320 2000.0 1.0 0.0 +de 07_gas 1 320 2000.0 1.0 0.0 +de 08_non-res 1 320 1100.0 1.0 0.0 +de 09_hydro_pump 1 320 0.0 0.0 0.0 +de 01_solar 1 321 2000.0 1.0 0.0 +de 02_wind_on 1 321 2000.0 1.0 0.0 +de 03_wind_off 1 321 2000.0 1.0 0.0 +de 04_res 1 321 2000.0 1.0 0.0 +de 05_nuclear 1 321 2000.0 1.0 0.0 +de 06_coal 1 321 2000.0 1.0 0.0 +de 07_gas 1 321 2000.0 1.0 0.0 +de 08_non-res 1 321 1200.0 1.0 0.0 +de 09_hydro_pump 1 321 0.0 0.0 0.0 +de 01_solar 1 322 2000.0 1.0 0.0 +de 02_wind_on 1 322 2000.0 1.0 0.0 +de 03_wind_off 1 322 2000.0 1.0 0.0 +de 04_res 1 322 2000.0 1.0 0.0 +de 05_nuclear 1 322 2000.0 1.0 0.0 +de 06_coal 1 322 2000.0 1.0 0.0 +de 07_gas 1 322 2000.0 1.0 0.0 +de 08_non-res 1 322 1300.0 1.0 0.0 +de 09_hydro_pump 1 322 0.0 0.0 0.0 +de 01_solar 1 323 2000.0 1.0 0.0 +de 02_wind_on 1 323 2000.0 1.0 0.0 +de 03_wind_off 1 323 2000.0 1.0 0.0 +de 04_res 1 323 2000.0 1.0 0.0 +de 05_nuclear 1 323 2000.0 1.0 0.0 +de 06_coal 1 323 2000.0 1.0 0.0 +de 07_gas 1 323 2000.0 1.0 0.0 +de 08_non-res 1 323 1400.0 1.0 0.0 +de 09_hydro_pump 1 323 0.0 0.0 0.0 +de 01_solar 1 324 2000.0 1.0 0.0 +de 02_wind_on 1 324 2000.0 1.0 0.0 +de 03_wind_off 1 324 2000.0 1.0 0.0 +de 04_res 1 324 2000.0 1.0 0.0 +de 05_nuclear 1 324 2000.0 1.0 0.0 +de 06_coal 1 324 2000.0 1.0 0.0 +de 07_gas 1 324 2000.0 1.0 0.0 +de 08_non-res 1 324 1500.0 1.0 0.0 +de 09_hydro_pump 1 324 0.0 0.0 0.0 +de 01_solar 1 325 2000.0 1.0 0.0 +de 02_wind_on 1 325 2000.0 1.0 0.0 +de 03_wind_off 1 325 2000.0 1.0 0.0 +de 04_res 1 325 2000.0 1.0 0.0 +de 05_nuclear 1 325 2000.0 1.0 0.0 +de 06_coal 1 325 2000.0 1.0 0.0 +de 07_gas 1 325 2000.0 1.0 0.0 +de 08_non-res 1 325 1600.0 1.0 0.0 +de 09_hydro_pump 1 325 0.0 0.0 0.0 +de 01_solar 1 326 2000.0 1.0 0.0 +de 02_wind_on 1 326 2000.0 1.0 0.0 +de 03_wind_off 1 326 2000.0 1.0 0.0 +de 04_res 1 326 2000.0 1.0 0.0 +de 05_nuclear 1 326 2000.0 1.0 0.0 +de 06_coal 1 326 2000.0 1.0 0.0 +de 07_gas 1 326 2000.0 1.0 0.0 +de 08_non-res 1 326 1700.0 1.0 0.0 +de 09_hydro_pump 1 326 0.0 0.0 0.0 +de 01_solar 1 327 2000.0 1.0 0.0 +de 02_wind_on 1 327 2000.0 1.0 0.0 +de 03_wind_off 1 327 2000.0 1.0 0.0 +de 04_res 1 327 2000.0 1.0 0.0 +de 05_nuclear 1 327 2000.0 1.0 0.0 +de 06_coal 1 327 2000.0 1.0 0.0 +de 07_gas 1 327 2000.0 1.0 0.0 +de 08_non-res 1 327 1800.0 1.0 0.0 +de 09_hydro_pump 1 327 0.0 0.0 0.0 +de 01_solar 1 328 2000.0 1.0 0.0 +de 02_wind_on 1 328 2000.0 1.0 0.0 +de 03_wind_off 1 328 2000.0 1.0 0.0 +de 04_res 1 328 2000.0 1.0 0.0 +de 05_nuclear 1 328 2000.0 1.0 0.0 +de 06_coal 1 328 2000.0 1.0 0.0 +de 07_gas 1 328 2000.0 1.0 0.0 +de 08_non-res 1 328 1900.0 1.0 0.0 +de 09_hydro_pump 1 328 0.0 0.0 0.0 +de 01_solar 1 329 2000.0 1.0 0.0 +de 02_wind_on 1 329 2000.0 1.0 0.0 +de 03_wind_off 1 329 2000.0 1.0 0.0 +de 04_res 1 329 2000.0 1.0 0.0 +de 05_nuclear 1 329 2000.0 1.0 0.0 +de 06_coal 1 329 2000.0 1.0 0.0 +de 07_gas 1 329 2000.0 1.0 0.0 +de 08_non-res 1 329 2000.0 1.0 0.0 +de 09_hydro_pump 1 329 0.0 0.0 0.0 +de 01_solar 1 330 2000.0 1.0 0.0 +de 02_wind_on 1 330 2000.0 1.0 0.0 +de 03_wind_off 1 330 2000.0 1.0 0.0 +de 04_res 1 330 2000.0 1.0 0.0 +de 05_nuclear 1 330 2000.0 1.0 0.0 +de 06_coal 1 330 2000.0 1.0 0.0 +de 07_gas 1 330 2000.0 1.0 0.0 +de 08_non-res 1 330 2000.0 1.0 0.0 +de 09_hydro_pump 1 330 100.0 1.0 0.0 +de 01_solar 1 331 2000.0 1.0 0.0 +de 02_wind_on 1 331 2000.0 1.0 0.0 +de 03_wind_off 1 331 2000.0 1.0 0.0 +de 04_res 1 331 2000.0 1.0 0.0 +de 05_nuclear 1 331 2000.0 1.0 0.0 +de 06_coal 1 331 2000.0 1.0 0.0 +de 07_gas 1 331 2000.0 1.0 0.0 +de 08_non-res 1 331 2000.0 1.0 0.0 +de 09_hydro_pump 1 331 200.0 1.0 0.0 +de 01_solar 1 332 2000.0 1.0 0.0 +de 02_wind_on 1 332 2000.0 1.0 0.0 +de 03_wind_off 1 332 2000.0 1.0 0.0 +de 04_res 1 332 2000.0 1.0 0.0 +de 05_nuclear 1 332 2000.0 1.0 0.0 +de 06_coal 1 332 2000.0 1.0 0.0 +de 07_gas 1 332 2000.0 1.0 0.0 +de 08_non-res 1 332 2000.0 1.0 0.0 +de 09_hydro_pump 1 332 300.0 1.0 0.0 +de 01_solar 1 333 2000.0 1.0 0.0 +de 02_wind_on 1 333 2000.0 1.0 0.0 +de 03_wind_off 1 333 2000.0 1.0 0.0 +de 04_res 1 333 2000.0 1.0 0.0 +de 05_nuclear 1 333 2000.0 1.0 0.0 +de 06_coal 1 333 2000.0 1.0 0.0 +de 07_gas 1 333 2000.0 1.0 0.0 +de 08_non-res 1 333 2000.0 1.0 0.0 +de 09_hydro_pump 1 333 400.0 1.0 0.0 +de 01_solar 1 334 2000.0 1.0 0.0 +de 02_wind_on 1 334 2000.0 1.0 0.0 +de 03_wind_off 1 334 2000.0 1.0 0.0 +de 04_res 1 334 2000.0 1.0 0.0 +de 05_nuclear 1 334 2000.0 1.0 0.0 +de 06_coal 1 334 2000.0 1.0 0.0 +de 07_gas 1 334 2000.0 1.0 0.0 +de 08_non-res 1 334 2000.0 1.0 0.0 +de 09_hydro_pump 1 334 500.0 1.0 0.0 +de 01_solar 1 335 2000.0 1.0 0.0 +de 02_wind_on 1 335 2000.0 1.0 0.0 +de 03_wind_off 1 335 2000.0 1.0 0.0 +de 04_res 1 335 2000.0 1.0 0.0 +de 05_nuclear 1 335 2000.0 1.0 0.0 +de 06_coal 1 335 2000.0 1.0 0.0 +de 07_gas 1 335 2000.0 1.0 0.0 +de 08_non-res 1 335 2000.0 1.0 0.0 +de 09_hydro_pump 1 335 600.0 1.0 0.0 +de 01_solar 1 336 2000.0 1.0 0.0 +de 02_wind_on 1 336 2000.0 1.0 0.0 +de 03_wind_off 1 336 2000.0 1.0 0.0 +de 04_res 1 336 2000.0 1.0 0.0 +de 05_nuclear 1 336 2000.0 1.0 0.0 +de 06_coal 1 336 2000.0 1.0 0.0 +de 07_gas 1 336 2000.0 1.0 0.0 +de 08_non-res 1 336 2000.0 1.0 0.0 +de 09_hydro_pump 1 336 700.0 1.0 0.0 +fr 01_solar 1 1 0.0 0.0 0.0 +fr 02_wind_on 1 1 0.0 0.0 0.0 +fr 03_wind_off 1 1 0.0 0.0 0.0 +fr 04_res 1 1 0.0 0.0 0.0 +fr 05_nuclear 1 1 0.0 0.0 0.0 +fr 06_coal 1 1 0.0 0.0 0.0 +fr 07_gas 1 1 0.0 0.0 0.0 +fr 08_non-res 1 1 0.0 0.0 0.0 +fr 09_hydro_pump 1 1 0.0 0.0 0.0 +fr 01_solar 1 2 100.0 1.0 0.0 +fr 02_wind_on 1 2 0.0 0.0 0.0 +fr 03_wind_off 1 2 0.0 0.0 0.0 +fr 04_res 1 2 0.0 0.0 0.0 +fr 05_nuclear 1 2 0.0 0.0 0.0 +fr 06_coal 1 2 0.0 0.0 0.0 +fr 07_gas 1 2 0.0 0.0 0.0 +fr 08_non-res 1 2 0.0 0.0 0.0 +fr 09_hydro_pump 1 2 0.0 0.0 0.0 +fr 01_solar 1 3 200.0 1.0 0.0 +fr 02_wind_on 1 3 0.0 0.0 0.0 +fr 03_wind_off 1 3 0.0 0.0 0.0 +fr 04_res 1 3 0.0 0.0 0.0 +fr 05_nuclear 1 3 0.0 0.0 0.0 +fr 06_coal 1 3 0.0 0.0 0.0 +fr 07_gas 1 3 0.0 0.0 0.0 +fr 08_non-res 1 3 0.0 0.0 0.0 +fr 09_hydro_pump 1 3 0.0 0.0 0.0 +fr 01_solar 1 4 300.0 1.0 0.0 +fr 02_wind_on 1 4 0.0 0.0 0.0 +fr 03_wind_off 1 4 0.0 0.0 0.0 +fr 04_res 1 4 0.0 0.0 0.0 +fr 05_nuclear 1 4 0.0 0.0 0.0 +fr 06_coal 1 4 0.0 0.0 0.0 +fr 07_gas 1 4 0.0 0.0 0.0 +fr 08_non-res 1 4 0.0 0.0 0.0 +fr 09_hydro_pump 1 4 0.0 0.0 0.0 +fr 01_solar 1 5 400.0 1.0 0.0 +fr 02_wind_on 1 5 0.0 0.0 0.0 +fr 03_wind_off 1 5 0.0 0.0 0.0 +fr 04_res 1 5 0.0 0.0 0.0 +fr 05_nuclear 1 5 0.0 0.0 0.0 +fr 06_coal 1 5 0.0 0.0 0.0 +fr 07_gas 1 5 0.0 0.0 0.0 +fr 08_non-res 1 5 0.0 0.0 0.0 +fr 09_hydro_pump 1 5 0.0 0.0 0.0 +fr 01_solar 1 6 500.0 1.0 0.0 +fr 02_wind_on 1 6 0.0 0.0 0.0 +fr 03_wind_off 1 6 0.0 0.0 0.0 +fr 04_res 1 6 0.0 0.0 0.0 +fr 05_nuclear 1 6 0.0 0.0 0.0 +fr 06_coal 1 6 0.0 0.0 0.0 +fr 07_gas 1 6 0.0 0.0 0.0 +fr 08_non-res 1 6 0.0 0.0 0.0 +fr 09_hydro_pump 1 6 0.0 0.0 0.0 +fr 01_solar 1 7 600.0 1.0 0.0 +fr 02_wind_on 1 7 0.0 0.0 0.0 +fr 03_wind_off 1 7 0.0 0.0 0.0 +fr 04_res 1 7 0.0 0.0 0.0 +fr 05_nuclear 1 7 0.0 0.0 0.0 +fr 06_coal 1 7 0.0 0.0 0.0 +fr 07_gas 1 7 0.0 0.0 0.0 +fr 08_non-res 1 7 0.0 0.0 0.0 +fr 09_hydro_pump 1 7 0.0 0.0 0.0 +fr 01_solar 1 8 700.0 1.0 0.0 +fr 02_wind_on 1 8 0.0 0.0 0.0 +fr 03_wind_off 1 8 0.0 0.0 0.0 +fr 04_res 1 8 0.0 0.0 0.0 +fr 05_nuclear 1 8 0.0 0.0 0.0 +fr 06_coal 1 8 0.0 0.0 0.0 +fr 07_gas 1 8 0.0 0.0 0.0 +fr 08_non-res 1 8 0.0 0.0 0.0 +fr 09_hydro_pump 1 8 0.0 0.0 0.0 +fr 01_solar 1 9 800.0 1.0 0.0 +fr 02_wind_on 1 9 0.0 0.0 0.0 +fr 03_wind_off 1 9 0.0 0.0 0.0 +fr 04_res 1 9 0.0 0.0 0.0 +fr 05_nuclear 1 9 0.0 0.0 0.0 +fr 06_coal 1 9 0.0 0.0 0.0 +fr 07_gas 1 9 0.0 0.0 0.0 +fr 08_non-res 1 9 0.0 0.0 0.0 +fr 09_hydro_pump 1 9 0.0 0.0 0.0 +fr 01_solar 1 10 900.0 1.0 0.0 +fr 02_wind_on 1 10 0.0 0.0 0.0 +fr 03_wind_off 1 10 0.0 0.0 0.0 +fr 04_res 1 10 0.0 0.0 0.0 +fr 05_nuclear 1 10 0.0 0.0 0.0 +fr 06_coal 1 10 0.0 0.0 0.0 +fr 07_gas 1 10 0.0 0.0 0.0 +fr 08_non-res 1 10 0.0 0.0 0.0 +fr 09_hydro_pump 1 10 0.0 0.0 0.0 +fr 01_solar 1 11 1000.0 1.0 0.0 +fr 02_wind_on 1 11 0.0 0.0 0.0 +fr 03_wind_off 1 11 0.0 0.0 0.0 +fr 04_res 1 11 0.0 0.0 0.0 +fr 05_nuclear 1 11 0.0 0.0 0.0 +fr 06_coal 1 11 0.0 0.0 0.0 +fr 07_gas 1 11 0.0 0.0 0.0 +fr 08_non-res 1 11 0.0 0.0 0.0 +fr 09_hydro_pump 1 11 0.0 0.0 0.0 +fr 01_solar 1 12 1100.0 1.0 0.0 +fr 02_wind_on 1 12 0.0 0.0 0.0 +fr 03_wind_off 1 12 0.0 0.0 0.0 +fr 04_res 1 12 0.0 0.0 0.0 +fr 05_nuclear 1 12 0.0 0.0 0.0 +fr 06_coal 1 12 0.0 0.0 0.0 +fr 07_gas 1 12 0.0 0.0 0.0 +fr 08_non-res 1 12 0.0 0.0 0.0 +fr 09_hydro_pump 1 12 0.0 0.0 0.0 +fr 01_solar 1 13 1200.0 1.0 0.0 +fr 02_wind_on 1 13 0.0 0.0 0.0 +fr 03_wind_off 1 13 0.0 0.0 0.0 +fr 04_res 1 13 0.0 0.0 0.0 +fr 05_nuclear 1 13 0.0 0.0 0.0 +fr 06_coal 1 13 0.0 0.0 0.0 +fr 07_gas 1 13 0.0 0.0 0.0 +fr 08_non-res 1 13 0.0 0.0 0.0 +fr 09_hydro_pump 1 13 0.0 0.0 0.0 +fr 01_solar 1 14 1300.0 1.0 0.0 +fr 02_wind_on 1 14 0.0 0.0 0.0 +fr 03_wind_off 1 14 0.0 0.0 0.0 +fr 04_res 1 14 0.0 0.0 0.0 +fr 05_nuclear 1 14 0.0 0.0 0.0 +fr 06_coal 1 14 0.0 0.0 0.0 +fr 07_gas 1 14 0.0 0.0 0.0 +fr 08_non-res 1 14 0.0 0.0 0.0 +fr 09_hydro_pump 1 14 0.0 0.0 0.0 +fr 01_solar 1 15 1400.0 1.0 0.0 +fr 02_wind_on 1 15 0.0 0.0 0.0 +fr 03_wind_off 1 15 0.0 0.0 0.0 +fr 04_res 1 15 0.0 0.0 0.0 +fr 05_nuclear 1 15 0.0 0.0 0.0 +fr 06_coal 1 15 0.0 0.0 0.0 +fr 07_gas 1 15 0.0 0.0 0.0 +fr 08_non-res 1 15 0.0 0.0 0.0 +fr 09_hydro_pump 1 15 0.0 0.0 0.0 +fr 01_solar 1 16 1500.0 1.0 0.0 +fr 02_wind_on 1 16 0.0 0.0 0.0 +fr 03_wind_off 1 16 0.0 0.0 0.0 +fr 04_res 1 16 0.0 0.0 0.0 +fr 05_nuclear 1 16 0.0 0.0 0.0 +fr 06_coal 1 16 0.0 0.0 0.0 +fr 07_gas 1 16 0.0 0.0 0.0 +fr 08_non-res 1 16 0.0 0.0 0.0 +fr 09_hydro_pump 1 16 0.0 0.0 0.0 +fr 01_solar 1 17 1600.0 1.0 0.0 +fr 02_wind_on 1 17 0.0 0.0 0.0 +fr 03_wind_off 1 17 0.0 0.0 0.0 +fr 04_res 1 17 0.0 0.0 0.0 +fr 05_nuclear 1 17 0.0 0.0 0.0 +fr 06_coal 1 17 0.0 0.0 0.0 +fr 07_gas 1 17 0.0 0.0 0.0 +fr 08_non-res 1 17 0.0 0.0 0.0 +fr 09_hydro_pump 1 17 0.0 0.0 0.0 +fr 01_solar 1 18 1700.0 1.0 0.0 +fr 02_wind_on 1 18 0.0 0.0 0.0 +fr 03_wind_off 1 18 0.0 0.0 0.0 +fr 04_res 1 18 0.0 0.0 0.0 +fr 05_nuclear 1 18 0.0 0.0 0.0 +fr 06_coal 1 18 0.0 0.0 0.0 +fr 07_gas 1 18 0.0 0.0 0.0 +fr 08_non-res 1 18 0.0 0.0 0.0 +fr 09_hydro_pump 1 18 0.0 0.0 0.0 +fr 01_solar 1 19 1800.0 1.0 0.0 +fr 02_wind_on 1 19 0.0 0.0 0.0 +fr 03_wind_off 1 19 0.0 0.0 0.0 +fr 04_res 1 19 0.0 0.0 0.0 +fr 05_nuclear 1 19 0.0 0.0 0.0 +fr 06_coal 1 19 0.0 0.0 0.0 +fr 07_gas 1 19 0.0 0.0 0.0 +fr 08_non-res 1 19 0.0 0.0 0.0 +fr 09_hydro_pump 1 19 0.0 0.0 0.0 +fr 01_solar 1 20 1900.0 1.0 0.0 +fr 02_wind_on 1 20 0.0 0.0 0.0 +fr 03_wind_off 1 20 0.0 0.0 0.0 +fr 04_res 1 20 0.0 0.0 0.0 +fr 05_nuclear 1 20 0.0 0.0 0.0 +fr 06_coal 1 20 0.0 0.0 0.0 +fr 07_gas 1 20 0.0 0.0 0.0 +fr 08_non-res 1 20 0.0 0.0 0.0 +fr 09_hydro_pump 1 20 0.0 0.0 0.0 +fr 01_solar 1 21 2000.0 1.0 0.0 +fr 02_wind_on 1 21 0.0 0.0 0.0 +fr 03_wind_off 1 21 0.0 0.0 0.0 +fr 04_res 1 21 0.0 0.0 0.0 +fr 05_nuclear 1 21 0.0 0.0 0.0 +fr 06_coal 1 21 0.0 0.0 0.0 +fr 07_gas 1 21 0.0 0.0 0.0 +fr 08_non-res 1 21 0.0 0.0 0.0 +fr 09_hydro_pump 1 21 0.0 0.0 0.0 +fr 01_solar 1 22 2000.0 1.0 0.0 +fr 02_wind_on 1 22 100.0 1.0 0.0 +fr 03_wind_off 1 22 0.0 0.0 0.0 +fr 04_res 1 22 0.0 0.0 0.0 +fr 05_nuclear 1 22 0.0 0.0 0.0 +fr 06_coal 1 22 0.0 0.0 0.0 +fr 07_gas 1 22 0.0 0.0 0.0 +fr 08_non-res 1 22 0.0 0.0 0.0 +fr 09_hydro_pump 1 22 0.0 0.0 0.0 +fr 01_solar 1 23 2000.0 1.0 0.0 +fr 02_wind_on 1 23 200.0 1.0 0.0 +fr 03_wind_off 1 23 0.0 0.0 0.0 +fr 04_res 1 23 0.0 0.0 0.0 +fr 05_nuclear 1 23 0.0 0.0 0.0 +fr 06_coal 1 23 0.0 0.0 0.0 +fr 07_gas 1 23 0.0 0.0 0.0 +fr 08_non-res 1 23 0.0 0.0 0.0 +fr 09_hydro_pump 1 23 0.0 0.0 0.0 +fr 01_solar 1 24 2000.0 1.0 0.0 +fr 02_wind_on 1 24 300.0 1.0 0.0 +fr 03_wind_off 1 24 0.0 0.0 0.0 +fr 04_res 1 24 0.0 0.0 0.0 +fr 05_nuclear 1 24 0.0 0.0 0.0 +fr 06_coal 1 24 0.0 0.0 0.0 +fr 07_gas 1 24 0.0 0.0 0.0 +fr 08_non-res 1 24 0.0 0.0 0.0 +fr 09_hydro_pump 1 24 0.0 0.0 0.0 +fr 01_solar 1 25 2000.0 1.0 0.0 +fr 02_wind_on 1 25 400.0 1.0 0.0 +fr 03_wind_off 1 25 0.0 0.0 0.0 +fr 04_res 1 25 0.0 0.0 0.0 +fr 05_nuclear 1 25 0.0 0.0 0.0 +fr 06_coal 1 25 0.0 0.0 0.0 +fr 07_gas 1 25 0.0 0.0 0.0 +fr 08_non-res 1 25 0.0 0.0 0.0 +fr 09_hydro_pump 1 25 0.0 0.0 0.0 +fr 01_solar 1 26 2000.0 1.0 0.0 +fr 02_wind_on 1 26 500.0 1.0 0.0 +fr 03_wind_off 1 26 0.0 0.0 0.0 +fr 04_res 1 26 0.0 0.0 0.0 +fr 05_nuclear 1 26 0.0 0.0 0.0 +fr 06_coal 1 26 0.0 0.0 0.0 +fr 07_gas 1 26 0.0 0.0 0.0 +fr 08_non-res 1 26 0.0 0.0 0.0 +fr 09_hydro_pump 1 26 0.0 0.0 0.0 +fr 01_solar 1 27 2000.0 1.0 0.0 +fr 02_wind_on 1 27 600.0 1.0 0.0 +fr 03_wind_off 1 27 0.0 0.0 0.0 +fr 04_res 1 27 0.0 0.0 0.0 +fr 05_nuclear 1 27 0.0 0.0 0.0 +fr 06_coal 1 27 0.0 0.0 0.0 +fr 07_gas 1 27 0.0 0.0 0.0 +fr 08_non-res 1 27 0.0 0.0 0.0 +fr 09_hydro_pump 1 27 0.0 0.0 0.0 +fr 01_solar 1 28 2000.0 1.0 0.0 +fr 02_wind_on 1 28 700.0 1.0 0.0 +fr 03_wind_off 1 28 0.0 0.0 0.0 +fr 04_res 1 28 0.0 0.0 0.0 +fr 05_nuclear 1 28 0.0 0.0 0.0 +fr 06_coal 1 28 0.0 0.0 0.0 +fr 07_gas 1 28 0.0 0.0 0.0 +fr 08_non-res 1 28 0.0 0.0 0.0 +fr 09_hydro_pump 1 28 0.0 0.0 0.0 +fr 01_solar 1 29 2000.0 1.0 0.0 +fr 02_wind_on 1 29 800.0 1.0 0.0 +fr 03_wind_off 1 29 0.0 0.0 0.0 +fr 04_res 1 29 0.0 0.0 0.0 +fr 05_nuclear 1 29 0.0 0.0 0.0 +fr 06_coal 1 29 0.0 0.0 0.0 +fr 07_gas 1 29 0.0 0.0 0.0 +fr 08_non-res 1 29 0.0 0.0 0.0 +fr 09_hydro_pump 1 29 0.0 0.0 0.0 +fr 01_solar 1 30 2000.0 1.0 0.0 +fr 02_wind_on 1 30 900.0 1.0 0.0 +fr 03_wind_off 1 30 0.0 0.0 0.0 +fr 04_res 1 30 0.0 0.0 0.0 +fr 05_nuclear 1 30 0.0 0.0 0.0 +fr 06_coal 1 30 0.0 0.0 0.0 +fr 07_gas 1 30 0.0 0.0 0.0 +fr 08_non-res 1 30 0.0 0.0 0.0 +fr 09_hydro_pump 1 30 0.0 0.0 0.0 +fr 01_solar 1 31 2000.0 1.0 0.0 +fr 02_wind_on 1 31 1000.0 1.0 0.0 +fr 03_wind_off 1 31 0.0 0.0 0.0 +fr 04_res 1 31 0.0 0.0 0.0 +fr 05_nuclear 1 31 0.0 0.0 0.0 +fr 06_coal 1 31 0.0 0.0 0.0 +fr 07_gas 1 31 0.0 0.0 0.0 +fr 08_non-res 1 31 0.0 0.0 0.0 +fr 09_hydro_pump 1 31 0.0 0.0 0.0 +fr 01_solar 1 32 2000.0 1.0 0.0 +fr 02_wind_on 1 32 1100.0 1.0 0.0 +fr 03_wind_off 1 32 0.0 0.0 0.0 +fr 04_res 1 32 0.0 0.0 0.0 +fr 05_nuclear 1 32 0.0 0.0 0.0 +fr 06_coal 1 32 0.0 0.0 0.0 +fr 07_gas 1 32 0.0 0.0 0.0 +fr 08_non-res 1 32 0.0 0.0 0.0 +fr 09_hydro_pump 1 32 0.0 0.0 0.0 +fr 01_solar 1 33 2000.0 1.0 0.0 +fr 02_wind_on 1 33 1200.0 1.0 0.0 +fr 03_wind_off 1 33 0.0 0.0 0.0 +fr 04_res 1 33 0.0 0.0 0.0 +fr 05_nuclear 1 33 0.0 0.0 0.0 +fr 06_coal 1 33 0.0 0.0 0.0 +fr 07_gas 1 33 0.0 0.0 0.0 +fr 08_non-res 1 33 0.0 0.0 0.0 +fr 09_hydro_pump 1 33 0.0 0.0 0.0 +fr 01_solar 1 34 2000.0 1.0 0.0 +fr 02_wind_on 1 34 1300.0 1.0 0.0 +fr 03_wind_off 1 34 0.0 0.0 0.0 +fr 04_res 1 34 0.0 0.0 0.0 +fr 05_nuclear 1 34 0.0 0.0 0.0 +fr 06_coal 1 34 0.0 0.0 0.0 +fr 07_gas 1 34 0.0 0.0 0.0 +fr 08_non-res 1 34 0.0 0.0 0.0 +fr 09_hydro_pump 1 34 0.0 0.0 0.0 +fr 01_solar 1 35 2000.0 1.0 0.0 +fr 02_wind_on 1 35 1400.0 1.0 0.0 +fr 03_wind_off 1 35 0.0 0.0 0.0 +fr 04_res 1 35 0.0 0.0 0.0 +fr 05_nuclear 1 35 0.0 0.0 0.0 +fr 06_coal 1 35 0.0 0.0 0.0 +fr 07_gas 1 35 0.0 0.0 0.0 +fr 08_non-res 1 35 0.0 0.0 0.0 +fr 09_hydro_pump 1 35 0.0 0.0 0.0 +fr 01_solar 1 36 2000.0 1.0 0.0 +fr 02_wind_on 1 36 1500.0 1.0 0.0 +fr 03_wind_off 1 36 0.0 0.0 0.0 +fr 04_res 1 36 0.0 0.0 0.0 +fr 05_nuclear 1 36 0.0 0.0 0.0 +fr 06_coal 1 36 0.0 0.0 0.0 +fr 07_gas 1 36 0.0 0.0 0.0 +fr 08_non-res 1 36 0.0 0.0 0.0 +fr 09_hydro_pump 1 36 0.0 0.0 0.0 +fr 01_solar 1 37 2000.0 1.0 0.0 +fr 02_wind_on 1 37 1600.0 1.0 0.0 +fr 03_wind_off 1 37 0.0 0.0 0.0 +fr 04_res 1 37 0.0 0.0 0.0 +fr 05_nuclear 1 37 0.0 0.0 0.0 +fr 06_coal 1 37 0.0 0.0 0.0 +fr 07_gas 1 37 0.0 0.0 0.0 +fr 08_non-res 1 37 0.0 0.0 0.0 +fr 09_hydro_pump 1 37 0.0 0.0 0.0 +fr 01_solar 1 38 2000.0 1.0 0.0 +fr 02_wind_on 1 38 1700.0 1.0 0.0 +fr 03_wind_off 1 38 0.0 0.0 0.0 +fr 04_res 1 38 0.0 0.0 0.0 +fr 05_nuclear 1 38 0.0 0.0 0.0 +fr 06_coal 1 38 0.0 0.0 0.0 +fr 07_gas 1 38 0.0 0.0 0.0 +fr 08_non-res 1 38 0.0 0.0 0.0 +fr 09_hydro_pump 1 38 0.0 0.0 0.0 +fr 01_solar 1 39 2000.0 1.0 0.0 +fr 02_wind_on 1 39 1800.0 1.0 0.0 +fr 03_wind_off 1 39 0.0 0.0 0.0 +fr 04_res 1 39 0.0 0.0 0.0 +fr 05_nuclear 1 39 0.0 0.0 0.0 +fr 06_coal 1 39 0.0 0.0 0.0 +fr 07_gas 1 39 0.0 0.0 0.0 +fr 08_non-res 1 39 0.0 0.0 0.0 +fr 09_hydro_pump 1 39 0.0 0.0 0.0 +fr 01_solar 1 40 2000.0 1.0 0.0 +fr 02_wind_on 1 40 1900.0 1.0 0.0 +fr 03_wind_off 1 40 0.0 0.0 0.0 +fr 04_res 1 40 0.0 0.0 0.0 +fr 05_nuclear 1 40 0.0 0.0 0.0 +fr 06_coal 1 40 0.0 0.0 0.0 +fr 07_gas 1 40 0.0 0.0 0.0 +fr 08_non-res 1 40 0.0 0.0 0.0 +fr 09_hydro_pump 1 40 0.0 0.0 0.0 +fr 01_solar 1 41 2000.0 1.0 0.0 +fr 02_wind_on 1 41 2000.0 1.0 0.0 +fr 03_wind_off 1 41 0.0 0.0 0.0 +fr 04_res 1 41 0.0 0.0 0.0 +fr 05_nuclear 1 41 0.0 0.0 0.0 +fr 06_coal 1 41 0.0 0.0 0.0 +fr 07_gas 1 41 0.0 0.0 0.0 +fr 08_non-res 1 41 0.0 0.0 0.0 +fr 09_hydro_pump 1 41 0.0 0.0 0.0 +fr 01_solar 1 42 2000.0 1.0 0.0 +fr 02_wind_on 1 42 2000.0 1.0 0.0 +fr 03_wind_off 1 42 100.0 1.0 0.0 +fr 04_res 1 42 0.0 0.0 0.0 +fr 05_nuclear 1 42 0.0 0.0 0.0 +fr 06_coal 1 42 0.0 0.0 0.0 +fr 07_gas 1 42 0.0 0.0 0.0 +fr 08_non-res 1 42 0.0 0.0 0.0 +fr 09_hydro_pump 1 42 0.0 0.0 0.0 +fr 01_solar 1 43 2000.0 1.0 0.0 +fr 02_wind_on 1 43 2000.0 1.0 0.0 +fr 03_wind_off 1 43 200.0 1.0 0.0 +fr 04_res 1 43 0.0 0.0 0.0 +fr 05_nuclear 1 43 0.0 0.0 0.0 +fr 06_coal 1 43 0.0 0.0 0.0 +fr 07_gas 1 43 0.0 0.0 0.0 +fr 08_non-res 1 43 0.0 0.0 0.0 +fr 09_hydro_pump 1 43 0.0 0.0 0.0 +fr 01_solar 1 44 2000.0 1.0 0.0 +fr 02_wind_on 1 44 2000.0 1.0 0.0 +fr 03_wind_off 1 44 300.0 1.0 0.0 +fr 04_res 1 44 0.0 0.0 0.0 +fr 05_nuclear 1 44 0.0 0.0 0.0 +fr 06_coal 1 44 0.0 0.0 0.0 +fr 07_gas 1 44 0.0 0.0 0.0 +fr 08_non-res 1 44 0.0 0.0 0.0 +fr 09_hydro_pump 1 44 0.0 0.0 0.0 +fr 01_solar 1 45 2000.0 1.0 0.0 +fr 02_wind_on 1 45 2000.0 1.0 0.0 +fr 03_wind_off 1 45 400.0 1.0 0.0 +fr 04_res 1 45 0.0 0.0 0.0 +fr 05_nuclear 1 45 0.0 0.0 0.0 +fr 06_coal 1 45 0.0 0.0 0.0 +fr 07_gas 1 45 0.0 0.0 0.0 +fr 08_non-res 1 45 0.0 0.0 0.0 +fr 09_hydro_pump 1 45 0.0 0.0 0.0 +fr 01_solar 1 46 2000.0 1.0 0.0 +fr 02_wind_on 1 46 2000.0 1.0 0.0 +fr 03_wind_off 1 46 500.0 1.0 0.0 +fr 04_res 1 46 0.0 0.0 0.0 +fr 05_nuclear 1 46 0.0 0.0 0.0 +fr 06_coal 1 46 0.0 0.0 0.0 +fr 07_gas 1 46 0.0 0.0 0.0 +fr 08_non-res 1 46 0.0 0.0 0.0 +fr 09_hydro_pump 1 46 0.0 0.0 0.0 +fr 01_solar 1 47 2000.0 1.0 0.0 +fr 02_wind_on 1 47 2000.0 1.0 0.0 +fr 03_wind_off 1 47 600.0 1.0 0.0 +fr 04_res 1 47 0.0 0.0 0.0 +fr 05_nuclear 1 47 0.0 0.0 0.0 +fr 06_coal 1 47 0.0 0.0 0.0 +fr 07_gas 1 47 0.0 0.0 0.0 +fr 08_non-res 1 47 0.0 0.0 0.0 +fr 09_hydro_pump 1 47 0.0 0.0 0.0 +fr 01_solar 1 48 2000.0 1.0 0.0 +fr 02_wind_on 1 48 2000.0 1.0 0.0 +fr 03_wind_off 1 48 700.0 1.0 0.0 +fr 04_res 1 48 0.0 0.0 0.0 +fr 05_nuclear 1 48 0.0 0.0 0.0 +fr 06_coal 1 48 0.0 0.0 0.0 +fr 07_gas 1 48 0.0 0.0 0.0 +fr 08_non-res 1 48 0.0 0.0 0.0 +fr 09_hydro_pump 1 48 0.0 0.0 0.0 +fr 01_solar 1 49 2000.0 1.0 0.0 +fr 02_wind_on 1 49 2000.0 1.0 0.0 +fr 03_wind_off 1 49 800.0 1.0 0.0 +fr 04_res 1 49 0.0 0.0 0.0 +fr 05_nuclear 1 49 0.0 0.0 0.0 +fr 06_coal 1 49 0.0 0.0 0.0 +fr 07_gas 1 49 0.0 0.0 0.0 +fr 08_non-res 1 49 0.0 0.0 0.0 +fr 09_hydro_pump 1 49 0.0 0.0 0.0 +fr 01_solar 1 50 2000.0 1.0 0.0 +fr 02_wind_on 1 50 2000.0 1.0 0.0 +fr 03_wind_off 1 50 900.0 1.0 0.0 +fr 04_res 1 50 0.0 0.0 0.0 +fr 05_nuclear 1 50 0.0 0.0 0.0 +fr 06_coal 1 50 0.0 0.0 0.0 +fr 07_gas 1 50 0.0 0.0 0.0 +fr 08_non-res 1 50 0.0 0.0 0.0 +fr 09_hydro_pump 1 50 0.0 0.0 0.0 +fr 01_solar 1 51 2000.0 1.0 0.0 +fr 02_wind_on 1 51 2000.0 1.0 0.0 +fr 03_wind_off 1 51 1000.0 1.0 0.0 +fr 04_res 1 51 0.0 0.0 0.0 +fr 05_nuclear 1 51 0.0 0.0 0.0 +fr 06_coal 1 51 0.0 0.0 0.0 +fr 07_gas 1 51 0.0 0.0 0.0 +fr 08_non-res 1 51 0.0 0.0 0.0 +fr 09_hydro_pump 1 51 0.0 0.0 0.0 +fr 01_solar 1 52 2000.0 1.0 0.0 +fr 02_wind_on 1 52 2000.0 1.0 0.0 +fr 03_wind_off 1 52 1100.0 1.0 0.0 +fr 04_res 1 52 0.0 0.0 0.0 +fr 05_nuclear 1 52 0.0 0.0 0.0 +fr 06_coal 1 52 0.0 0.0 0.0 +fr 07_gas 1 52 0.0 0.0 0.0 +fr 08_non-res 1 52 0.0 0.0 0.0 +fr 09_hydro_pump 1 52 0.0 0.0 0.0 +fr 01_solar 1 53 2000.0 1.0 0.0 +fr 02_wind_on 1 53 2000.0 1.0 0.0 +fr 03_wind_off 1 53 1200.0 1.0 0.0 +fr 04_res 1 53 0.0 0.0 0.0 +fr 05_nuclear 1 53 0.0 0.0 0.0 +fr 06_coal 1 53 0.0 0.0 0.0 +fr 07_gas 1 53 0.0 0.0 0.0 +fr 08_non-res 1 53 0.0 0.0 0.0 +fr 09_hydro_pump 1 53 0.0 0.0 0.0 +fr 01_solar 1 54 2000.0 1.0 0.0 +fr 02_wind_on 1 54 2000.0 1.0 0.0 +fr 03_wind_off 1 54 1300.0 1.0 0.0 +fr 04_res 1 54 0.0 0.0 0.0 +fr 05_nuclear 1 54 0.0 0.0 0.0 +fr 06_coal 1 54 0.0 0.0 0.0 +fr 07_gas 1 54 0.0 0.0 0.0 +fr 08_non-res 1 54 0.0 0.0 0.0 +fr 09_hydro_pump 1 54 0.0 0.0 0.0 +fr 01_solar 1 55 2000.0 1.0 0.0 +fr 02_wind_on 1 55 2000.0 1.0 0.0 +fr 03_wind_off 1 55 1400.0 1.0 0.0 +fr 04_res 1 55 0.0 0.0 0.0 +fr 05_nuclear 1 55 0.0 0.0 0.0 +fr 06_coal 1 55 0.0 0.0 0.0 +fr 07_gas 1 55 0.0 0.0 0.0 +fr 08_non-res 1 55 0.0 0.0 0.0 +fr 09_hydro_pump 1 55 0.0 0.0 0.0 +fr 01_solar 1 56 2000.0 1.0 0.0 +fr 02_wind_on 1 56 2000.0 1.0 0.0 +fr 03_wind_off 1 56 1500.0 1.0 0.0 +fr 04_res 1 56 0.0 0.0 0.0 +fr 05_nuclear 1 56 0.0 0.0 0.0 +fr 06_coal 1 56 0.0 0.0 0.0 +fr 07_gas 1 56 0.0 0.0 0.0 +fr 08_non-res 1 56 0.0 0.0 0.0 +fr 09_hydro_pump 1 56 0.0 0.0 0.0 +fr 01_solar 1 57 2000.0 1.0 0.0 +fr 02_wind_on 1 57 2000.0 1.0 0.0 +fr 03_wind_off 1 57 1600.0 1.0 0.0 +fr 04_res 1 57 0.0 0.0 0.0 +fr 05_nuclear 1 57 0.0 0.0 0.0 +fr 06_coal 1 57 0.0 0.0 0.0 +fr 07_gas 1 57 0.0 0.0 0.0 +fr 08_non-res 1 57 0.0 0.0 0.0 +fr 09_hydro_pump 1 57 0.0 0.0 0.0 +fr 01_solar 1 58 2000.0 1.0 0.0 +fr 02_wind_on 1 58 2000.0 1.0 0.0 +fr 03_wind_off 1 58 1700.0 1.0 0.0 +fr 04_res 1 58 0.0 0.0 0.0 +fr 05_nuclear 1 58 0.0 0.0 0.0 +fr 06_coal 1 58 0.0 0.0 0.0 +fr 07_gas 1 58 0.0 0.0 0.0 +fr 08_non-res 1 58 0.0 0.0 0.0 +fr 09_hydro_pump 1 58 0.0 0.0 0.0 +fr 01_solar 1 59 2000.0 1.0 0.0 +fr 02_wind_on 1 59 2000.0 1.0 0.0 +fr 03_wind_off 1 59 1800.0 1.0 0.0 +fr 04_res 1 59 0.0 0.0 0.0 +fr 05_nuclear 1 59 0.0 0.0 0.0 +fr 06_coal 1 59 0.0 0.0 0.0 +fr 07_gas 1 59 0.0 0.0 0.0 +fr 08_non-res 1 59 0.0 0.0 0.0 +fr 09_hydro_pump 1 59 0.0 0.0 0.0 +fr 01_solar 1 60 2000.0 1.0 0.0 +fr 02_wind_on 1 60 2000.0 1.0 0.0 +fr 03_wind_off 1 60 1900.0 1.0 0.0 +fr 04_res 1 60 0.0 0.0 0.0 +fr 05_nuclear 1 60 0.0 0.0 0.0 +fr 06_coal 1 60 0.0 0.0 0.0 +fr 07_gas 1 60 0.0 0.0 0.0 +fr 08_non-res 1 60 0.0 0.0 0.0 +fr 09_hydro_pump 1 60 0.0 0.0 0.0 +fr 01_solar 1 61 2000.0 1.0 0.0 +fr 02_wind_on 1 61 2000.0 1.0 0.0 +fr 03_wind_off 1 61 2000.0 1.0 0.0 +fr 04_res 1 61 0.0 0.0 0.0 +fr 05_nuclear 1 61 0.0 0.0 0.0 +fr 06_coal 1 61 0.0 0.0 0.0 +fr 07_gas 1 61 0.0 0.0 0.0 +fr 08_non-res 1 61 0.0 0.0 0.0 +fr 09_hydro_pump 1 61 0.0 0.0 0.0 +fr 01_solar 1 62 2000.0 1.0 0.0 +fr 02_wind_on 1 62 2000.0 1.0 0.0 +fr 03_wind_off 1 62 2000.0 1.0 0.0 +fr 04_res 1 62 100.0 1.0 0.0 +fr 05_nuclear 1 62 0.0 0.0 0.0 +fr 06_coal 1 62 0.0 0.0 0.0 +fr 07_gas 1 62 0.0 0.0 0.0 +fr 08_non-res 1 62 0.0 0.0 0.0 +fr 09_hydro_pump 1 62 0.0 0.0 0.0 +fr 01_solar 1 63 2000.0 1.0 0.0 +fr 02_wind_on 1 63 2000.0 1.0 0.0 +fr 03_wind_off 1 63 2000.0 1.0 0.0 +fr 04_res 1 63 200.0 1.0 0.0 +fr 05_nuclear 1 63 0.0 0.0 0.0 +fr 06_coal 1 63 0.0 0.0 0.0 +fr 07_gas 1 63 0.0 0.0 0.0 +fr 08_non-res 1 63 0.0 0.0 0.0 +fr 09_hydro_pump 1 63 0.0 0.0 0.0 +fr 01_solar 1 64 2000.0 1.0 0.0 +fr 02_wind_on 1 64 2000.0 1.0 0.0 +fr 03_wind_off 1 64 2000.0 1.0 0.0 +fr 04_res 1 64 300.0 1.0 0.0 +fr 05_nuclear 1 64 0.0 0.0 0.0 +fr 06_coal 1 64 0.0 0.0 0.0 +fr 07_gas 1 64 0.0 0.0 0.0 +fr 08_non-res 1 64 0.0 0.0 0.0 +fr 09_hydro_pump 1 64 0.0 0.0 0.0 +fr 01_solar 1 65 2000.0 1.0 0.0 +fr 02_wind_on 1 65 2000.0 1.0 0.0 +fr 03_wind_off 1 65 2000.0 1.0 0.0 +fr 04_res 1 65 400.0 1.0 0.0 +fr 05_nuclear 1 65 0.0 0.0 0.0 +fr 06_coal 1 65 0.0 0.0 0.0 +fr 07_gas 1 65 0.0 0.0 0.0 +fr 08_non-res 1 65 0.0 0.0 0.0 +fr 09_hydro_pump 1 65 0.0 0.0 0.0 +fr 01_solar 1 66 2000.0 1.0 0.0 +fr 02_wind_on 1 66 2000.0 1.0 0.0 +fr 03_wind_off 1 66 2000.0 1.0 0.0 +fr 04_res 1 66 500.0 1.0 0.0 +fr 05_nuclear 1 66 0.0 0.0 0.0 +fr 06_coal 1 66 0.0 0.0 0.0 +fr 07_gas 1 66 0.0 0.0 0.0 +fr 08_non-res 1 66 0.0 0.0 0.0 +fr 09_hydro_pump 1 66 0.0 0.0 0.0 +fr 01_solar 1 67 2000.0 1.0 0.0 +fr 02_wind_on 1 67 2000.0 1.0 0.0 +fr 03_wind_off 1 67 2000.0 1.0 0.0 +fr 04_res 1 67 600.0 1.0 0.0 +fr 05_nuclear 1 67 0.0 0.0 0.0 +fr 06_coal 1 67 0.0 0.0 0.0 +fr 07_gas 1 67 0.0 0.0 0.0 +fr 08_non-res 1 67 0.0 0.0 0.0 +fr 09_hydro_pump 1 67 0.0 0.0 0.0 +fr 01_solar 1 68 2000.0 1.0 0.0 +fr 02_wind_on 1 68 2000.0 1.0 0.0 +fr 03_wind_off 1 68 2000.0 1.0 0.0 +fr 04_res 1 68 700.0 1.0 0.0 +fr 05_nuclear 1 68 0.0 0.0 0.0 +fr 06_coal 1 68 0.0 0.0 0.0 +fr 07_gas 1 68 0.0 0.0 0.0 +fr 08_non-res 1 68 0.0 0.0 0.0 +fr 09_hydro_pump 1 68 0.0 0.0 0.0 +fr 01_solar 1 69 2000.0 1.0 0.0 +fr 02_wind_on 1 69 2000.0 1.0 0.0 +fr 03_wind_off 1 69 2000.0 1.0 0.0 +fr 04_res 1 69 800.0 1.0 0.0 +fr 05_nuclear 1 69 0.0 0.0 0.0 +fr 06_coal 1 69 0.0 0.0 0.0 +fr 07_gas 1 69 0.0 0.0 0.0 +fr 08_non-res 1 69 0.0 0.0 0.0 +fr 09_hydro_pump 1 69 0.0 0.0 0.0 +fr 01_solar 1 70 2000.0 1.0 0.0 +fr 02_wind_on 1 70 2000.0 1.0 0.0 +fr 03_wind_off 1 70 2000.0 1.0 0.0 +fr 04_res 1 70 900.0 1.0 0.0 +fr 05_nuclear 1 70 0.0 0.0 0.0 +fr 06_coal 1 70 0.0 0.0 0.0 +fr 07_gas 1 70 0.0 0.0 0.0 +fr 08_non-res 1 70 0.0 0.0 0.0 +fr 09_hydro_pump 1 70 0.0 0.0 0.0 +fr 01_solar 1 71 2000.0 1.0 0.0 +fr 02_wind_on 1 71 2000.0 1.0 0.0 +fr 03_wind_off 1 71 2000.0 1.0 0.0 +fr 04_res 1 71 1000.0 1.0 0.0 +fr 05_nuclear 1 71 0.0 0.0 0.0 +fr 06_coal 1 71 0.0 0.0 0.0 +fr 07_gas 1 71 0.0 0.0 0.0 +fr 08_non-res 1 71 0.0 0.0 0.0 +fr 09_hydro_pump 1 71 0.0 0.0 0.0 +fr 01_solar 1 72 2000.0 1.0 0.0 +fr 02_wind_on 1 72 2000.0 1.0 0.0 +fr 03_wind_off 1 72 2000.0 1.0 0.0 +fr 04_res 1 72 1100.0 1.0 0.0 +fr 05_nuclear 1 72 0.0 0.0 0.0 +fr 06_coal 1 72 0.0 0.0 0.0 +fr 07_gas 1 72 0.0 0.0 0.0 +fr 08_non-res 1 72 0.0 0.0 0.0 +fr 09_hydro_pump 1 72 0.0 0.0 0.0 +fr 01_solar 1 73 2000.0 1.0 0.0 +fr 02_wind_on 1 73 2000.0 1.0 0.0 +fr 03_wind_off 1 73 2000.0 1.0 0.0 +fr 04_res 1 73 1200.0 1.0 0.0 +fr 05_nuclear 1 73 0.0 0.0 0.0 +fr 06_coal 1 73 0.0 0.0 0.0 +fr 07_gas 1 73 0.0 0.0 0.0 +fr 08_non-res 1 73 0.0 0.0 0.0 +fr 09_hydro_pump 1 73 0.0 0.0 0.0 +fr 01_solar 1 74 2000.0 1.0 0.0 +fr 02_wind_on 1 74 2000.0 1.0 0.0 +fr 03_wind_off 1 74 2000.0 1.0 0.0 +fr 04_res 1 74 1300.0 1.0 0.0 +fr 05_nuclear 1 74 0.0 0.0 0.0 +fr 06_coal 1 74 0.0 0.0 0.0 +fr 07_gas 1 74 0.0 0.0 0.0 +fr 08_non-res 1 74 0.0 0.0 0.0 +fr 09_hydro_pump 1 74 0.0 0.0 0.0 +fr 01_solar 1 75 2000.0 1.0 0.0 +fr 02_wind_on 1 75 2000.0 1.0 0.0 +fr 03_wind_off 1 75 2000.0 1.0 0.0 +fr 04_res 1 75 1400.0 1.0 0.0 +fr 05_nuclear 1 75 0.0 0.0 0.0 +fr 06_coal 1 75 0.0 0.0 0.0 +fr 07_gas 1 75 0.0 0.0 0.0 +fr 08_non-res 1 75 0.0 0.0 0.0 +fr 09_hydro_pump 1 75 0.0 0.0 0.0 +fr 01_solar 1 76 2000.0 1.0 0.0 +fr 02_wind_on 1 76 2000.0 1.0 0.0 +fr 03_wind_off 1 76 2000.0 1.0 0.0 +fr 04_res 1 76 1500.0 1.0 0.0 +fr 05_nuclear 1 76 0.0 0.0 0.0 +fr 06_coal 1 76 0.0 0.0 0.0 +fr 07_gas 1 76 0.0 0.0 0.0 +fr 08_non-res 1 76 0.0 0.0 0.0 +fr 09_hydro_pump 1 76 0.0 0.0 0.0 +fr 01_solar 1 77 2000.0 1.0 0.0 +fr 02_wind_on 1 77 2000.0 1.0 0.0 +fr 03_wind_off 1 77 2000.0 1.0 0.0 +fr 04_res 1 77 1600.0 1.0 0.0 +fr 05_nuclear 1 77 0.0 0.0 0.0 +fr 06_coal 1 77 0.0 0.0 0.0 +fr 07_gas 1 77 0.0 0.0 0.0 +fr 08_non-res 1 77 0.0 0.0 0.0 +fr 09_hydro_pump 1 77 0.0 0.0 0.0 +fr 01_solar 1 78 2000.0 1.0 0.0 +fr 02_wind_on 1 78 2000.0 1.0 0.0 +fr 03_wind_off 1 78 2000.0 1.0 0.0 +fr 04_res 1 78 1700.0 1.0 0.0 +fr 05_nuclear 1 78 0.0 0.0 0.0 +fr 06_coal 1 78 0.0 0.0 0.0 +fr 07_gas 1 78 0.0 0.0 0.0 +fr 08_non-res 1 78 0.0 0.0 0.0 +fr 09_hydro_pump 1 78 0.0 0.0 0.0 +fr 01_solar 1 79 2000.0 1.0 0.0 +fr 02_wind_on 1 79 2000.0 1.0 0.0 +fr 03_wind_off 1 79 2000.0 1.0 0.0 +fr 04_res 1 79 1800.0 1.0 0.0 +fr 05_nuclear 1 79 0.0 0.0 0.0 +fr 06_coal 1 79 0.0 0.0 0.0 +fr 07_gas 1 79 0.0 0.0 0.0 +fr 08_non-res 1 79 0.0 0.0 0.0 +fr 09_hydro_pump 1 79 0.0 0.0 0.0 +fr 01_solar 1 80 2000.0 1.0 0.0 +fr 02_wind_on 1 80 2000.0 1.0 0.0 +fr 03_wind_off 1 80 2000.0 1.0 0.0 +fr 04_res 1 80 1900.0 1.0 0.0 +fr 05_nuclear 1 80 0.0 0.0 0.0 +fr 06_coal 1 80 0.0 0.0 0.0 +fr 07_gas 1 80 0.0 0.0 0.0 +fr 08_non-res 1 80 0.0 0.0 0.0 +fr 09_hydro_pump 1 80 0.0 0.0 0.0 +fr 01_solar 1 81 2000.0 1.0 0.0 +fr 02_wind_on 1 81 2000.0 1.0 0.0 +fr 03_wind_off 1 81 2000.0 1.0 0.0 +fr 04_res 1 81 2000.0 1.0 0.0 +fr 05_nuclear 1 81 0.0 0.0 0.0 +fr 06_coal 1 81 0.0 0.0 0.0 +fr 07_gas 1 81 0.0 0.0 0.0 +fr 08_non-res 1 81 0.0 0.0 0.0 +fr 09_hydro_pump 1 81 0.0 0.0 0.0 +fr 01_solar 1 82 2000.0 1.0 0.0 +fr 02_wind_on 1 82 2000.0 1.0 0.0 +fr 03_wind_off 1 82 2000.0 1.0 0.0 +fr 04_res 1 82 2000.0 1.0 0.0 +fr 05_nuclear 1 82 100.0 1.0 0.0 +fr 06_coal 1 82 0.0 0.0 0.0 +fr 07_gas 1 82 0.0 0.0 0.0 +fr 08_non-res 1 82 0.0 0.0 0.0 +fr 09_hydro_pump 1 82 0.0 0.0 0.0 +fr 01_solar 1 83 2000.0 1.0 0.0 +fr 02_wind_on 1 83 2000.0 1.0 0.0 +fr 03_wind_off 1 83 2000.0 1.0 0.0 +fr 04_res 1 83 2000.0 1.0 0.0 +fr 05_nuclear 1 83 200.0 1.0 0.0 +fr 06_coal 1 83 0.0 0.0 0.0 +fr 07_gas 1 83 0.0 0.0 0.0 +fr 08_non-res 1 83 0.0 0.0 0.0 +fr 09_hydro_pump 1 83 0.0 0.0 0.0 +fr 01_solar 1 84 2000.0 1.0 0.0 +fr 02_wind_on 1 84 2000.0 1.0 0.0 +fr 03_wind_off 1 84 2000.0 1.0 0.0 +fr 04_res 1 84 2000.0 1.0 0.0 +fr 05_nuclear 1 84 300.0 1.0 0.0 +fr 06_coal 1 84 0.0 0.0 0.0 +fr 07_gas 1 84 0.0 0.0 0.0 +fr 08_non-res 1 84 0.0 0.0 0.0 +fr 09_hydro_pump 1 84 0.0 0.0 0.0 +fr 01_solar 1 85 2000.0 1.0 0.0 +fr 02_wind_on 1 85 2000.0 1.0 0.0 +fr 03_wind_off 1 85 2000.0 1.0 0.0 +fr 04_res 1 85 2000.0 1.0 0.0 +fr 05_nuclear 1 85 400.0 1.0 0.0 +fr 06_coal 1 85 0.0 0.0 0.0 +fr 07_gas 1 85 0.0 0.0 0.0 +fr 08_non-res 1 85 0.0 0.0 0.0 +fr 09_hydro_pump 1 85 0.0 0.0 0.0 +fr 01_solar 1 86 2000.0 1.0 0.0 +fr 02_wind_on 1 86 2000.0 1.0 0.0 +fr 03_wind_off 1 86 2000.0 1.0 0.0 +fr 04_res 1 86 2000.0 1.0 0.0 +fr 05_nuclear 1 86 500.0 1.0 0.0 +fr 06_coal 1 86 0.0 0.0 0.0 +fr 07_gas 1 86 0.0 0.0 0.0 +fr 08_non-res 1 86 0.0 0.0 0.0 +fr 09_hydro_pump 1 86 0.0 0.0 0.0 +fr 01_solar 1 87 2000.0 1.0 0.0 +fr 02_wind_on 1 87 2000.0 1.0 0.0 +fr 03_wind_off 1 87 2000.0 1.0 0.0 +fr 04_res 1 87 2000.0 1.0 0.0 +fr 05_nuclear 1 87 600.0 1.0 0.0 +fr 06_coal 1 87 0.0 0.0 0.0 +fr 07_gas 1 87 0.0 0.0 0.0 +fr 08_non-res 1 87 0.0 0.0 0.0 +fr 09_hydro_pump 1 87 0.0 0.0 0.0 +fr 01_solar 1 88 2000.0 1.0 0.0 +fr 02_wind_on 1 88 2000.0 1.0 0.0 +fr 03_wind_off 1 88 2000.0 1.0 0.0 +fr 04_res 1 88 2000.0 1.0 0.0 +fr 05_nuclear 1 88 700.0 1.0 0.0 +fr 06_coal 1 88 0.0 0.0 0.0 +fr 07_gas 1 88 0.0 0.0 0.0 +fr 08_non-res 1 88 0.0 0.0 0.0 +fr 09_hydro_pump 1 88 0.0 0.0 0.0 +fr 01_solar 1 89 2000.0 1.0 0.0 +fr 02_wind_on 1 89 2000.0 1.0 0.0 +fr 03_wind_off 1 89 2000.0 1.0 0.0 +fr 04_res 1 89 2000.0 1.0 0.0 +fr 05_nuclear 1 89 800.0 1.0 0.0 +fr 06_coal 1 89 0.0 0.0 0.0 +fr 07_gas 1 89 0.0 0.0 0.0 +fr 08_non-res 1 89 0.0 0.0 0.0 +fr 09_hydro_pump 1 89 0.0 0.0 0.0 +fr 01_solar 1 90 2000.0 1.0 0.0 +fr 02_wind_on 1 90 2000.0 1.0 0.0 +fr 03_wind_off 1 90 2000.0 1.0 0.0 +fr 04_res 1 90 2000.0 1.0 0.0 +fr 05_nuclear 1 90 900.0 1.0 0.0 +fr 06_coal 1 90 0.0 0.0 0.0 +fr 07_gas 1 90 0.0 0.0 0.0 +fr 08_non-res 1 90 0.0 0.0 0.0 +fr 09_hydro_pump 1 90 0.0 0.0 0.0 +fr 01_solar 1 91 2000.0 1.0 0.0 +fr 02_wind_on 1 91 2000.0 1.0 0.0 +fr 03_wind_off 1 91 2000.0 1.0 0.0 +fr 04_res 1 91 2000.0 1.0 0.0 +fr 05_nuclear 1 91 1000.0 1.0 0.0 +fr 06_coal 1 91 0.0 0.0 0.0 +fr 07_gas 1 91 0.0 0.0 0.0 +fr 08_non-res 1 91 0.0 0.0 0.0 +fr 09_hydro_pump 1 91 0.0 0.0 0.0 +fr 01_solar 1 92 2000.0 1.0 0.0 +fr 02_wind_on 1 92 2000.0 1.0 0.0 +fr 03_wind_off 1 92 2000.0 1.0 0.0 +fr 04_res 1 92 2000.0 1.0 0.0 +fr 05_nuclear 1 92 1100.0 1.0 0.0 +fr 06_coal 1 92 0.0 0.0 0.0 +fr 07_gas 1 92 0.0 0.0 0.0 +fr 08_non-res 1 92 0.0 0.0 0.0 +fr 09_hydro_pump 1 92 0.0 0.0 0.0 +fr 01_solar 1 93 2000.0 1.0 0.0 +fr 02_wind_on 1 93 2000.0 1.0 0.0 +fr 03_wind_off 1 93 2000.0 1.0 0.0 +fr 04_res 1 93 2000.0 1.0 0.0 +fr 05_nuclear 1 93 1200.0 1.0 0.0 +fr 06_coal 1 93 0.0 0.0 0.0 +fr 07_gas 1 93 0.0 0.0 0.0 +fr 08_non-res 1 93 0.0 0.0 0.0 +fr 09_hydro_pump 1 93 0.0 0.0 0.0 +fr 01_solar 1 94 2000.0 1.0 0.0 +fr 02_wind_on 1 94 2000.0 1.0 0.0 +fr 03_wind_off 1 94 2000.0 1.0 0.0 +fr 04_res 1 94 2000.0 1.0 0.0 +fr 05_nuclear 1 94 1300.0 1.0 0.0 +fr 06_coal 1 94 0.0 0.0 0.0 +fr 07_gas 1 94 0.0 0.0 0.0 +fr 08_non-res 1 94 0.0 0.0 0.0 +fr 09_hydro_pump 1 94 0.0 0.0 0.0 +fr 01_solar 1 95 2000.0 1.0 0.0 +fr 02_wind_on 1 95 2000.0 1.0 0.0 +fr 03_wind_off 1 95 2000.0 1.0 0.0 +fr 04_res 1 95 2000.0 1.0 0.0 +fr 05_nuclear 1 95 1400.0 1.0 0.0 +fr 06_coal 1 95 0.0 0.0 0.0 +fr 07_gas 1 95 0.0 0.0 0.0 +fr 08_non-res 1 95 0.0 0.0 0.0 +fr 09_hydro_pump 1 95 0.0 0.0 0.0 +fr 01_solar 1 96 2000.0 1.0 0.0 +fr 02_wind_on 1 96 2000.0 1.0 0.0 +fr 03_wind_off 1 96 2000.0 1.0 0.0 +fr 04_res 1 96 2000.0 1.0 0.0 +fr 05_nuclear 1 96 1500.0 1.0 0.0 +fr 06_coal 1 96 0.0 0.0 0.0 +fr 07_gas 1 96 0.0 0.0 0.0 +fr 08_non-res 1 96 0.0 0.0 0.0 +fr 09_hydro_pump 1 96 0.0 0.0 0.0 +fr 01_solar 1 97 2000.0 1.0 0.0 +fr 02_wind_on 1 97 2000.0 1.0 0.0 +fr 03_wind_off 1 97 2000.0 1.0 0.0 +fr 04_res 1 97 2000.0 1.0 0.0 +fr 05_nuclear 1 97 1600.0 1.0 0.0 +fr 06_coal 1 97 0.0 0.0 0.0 +fr 07_gas 1 97 0.0 0.0 0.0 +fr 08_non-res 1 97 0.0 0.0 0.0 +fr 09_hydro_pump 1 97 0.0 0.0 0.0 +fr 01_solar 1 98 2000.0 1.0 0.0 +fr 02_wind_on 1 98 2000.0 1.0 0.0 +fr 03_wind_off 1 98 2000.0 1.0 0.0 +fr 04_res 1 98 2000.0 1.0 0.0 +fr 05_nuclear 1 98 1700.0 1.0 0.0 +fr 06_coal 1 98 0.0 0.0 0.0 +fr 07_gas 1 98 0.0 0.0 0.0 +fr 08_non-res 1 98 0.0 0.0 0.0 +fr 09_hydro_pump 1 98 0.0 0.0 0.0 +fr 01_solar 1 99 2000.0 1.0 0.0 +fr 02_wind_on 1 99 2000.0 1.0 0.0 +fr 03_wind_off 1 99 2000.0 1.0 0.0 +fr 04_res 1 99 2000.0 1.0 0.0 +fr 05_nuclear 1 99 1800.0 1.0 0.0 +fr 06_coal 1 99 0.0 0.0 0.0 +fr 07_gas 1 99 0.0 0.0 0.0 +fr 08_non-res 1 99 0.0 0.0 0.0 +fr 09_hydro_pump 1 99 0.0 0.0 0.0 +fr 01_solar 1 100 2000.0 1.0 0.0 +fr 02_wind_on 1 100 2000.0 1.0 0.0 +fr 03_wind_off 1 100 2000.0 1.0 0.0 +fr 04_res 1 100 2000.0 1.0 0.0 +fr 05_nuclear 1 100 1900.0 1.0 0.0 +fr 06_coal 1 100 0.0 0.0 0.0 +fr 07_gas 1 100 0.0 0.0 0.0 +fr 08_non-res 1 100 0.0 0.0 0.0 +fr 09_hydro_pump 1 100 0.0 0.0 0.0 +fr 01_solar 1 101 2000.0 1.0 0.0 +fr 02_wind_on 1 101 2000.0 1.0 0.0 +fr 03_wind_off 1 101 2000.0 1.0 0.0 +fr 04_res 1 101 2000.0 1.0 0.0 +fr 05_nuclear 1 101 2000.0 1.0 0.0 +fr 06_coal 1 101 0.0 0.0 0.0 +fr 07_gas 1 101 0.0 0.0 0.0 +fr 08_non-res 1 101 0.0 0.0 0.0 +fr 09_hydro_pump 1 101 0.0 0.0 0.0 +fr 01_solar 1 102 2000.0 1.0 0.0 +fr 02_wind_on 1 102 2000.0 1.0 0.0 +fr 03_wind_off 1 102 2000.0 1.0 0.0 +fr 04_res 1 102 2000.0 1.0 0.0 +fr 05_nuclear 1 102 2000.0 1.0 0.0 +fr 06_coal 1 102 100.0 1.0 0.0 +fr 07_gas 1 102 0.0 0.0 0.0 +fr 08_non-res 1 102 0.0 0.0 0.0 +fr 09_hydro_pump 1 102 0.0 0.0 0.0 +fr 01_solar 1 103 2000.0 1.0 0.0 +fr 02_wind_on 1 103 2000.0 1.0 0.0 +fr 03_wind_off 1 103 2000.0 1.0 0.0 +fr 04_res 1 103 2000.0 1.0 0.0 +fr 05_nuclear 1 103 2000.0 1.0 0.0 +fr 06_coal 1 103 200.0 1.0 0.0 +fr 07_gas 1 103 0.0 0.0 0.0 +fr 08_non-res 1 103 0.0 0.0 0.0 +fr 09_hydro_pump 1 103 0.0 0.0 0.0 +fr 01_solar 1 104 2000.0 1.0 0.0 +fr 02_wind_on 1 104 2000.0 1.0 0.0 +fr 03_wind_off 1 104 2000.0 1.0 0.0 +fr 04_res 1 104 2000.0 1.0 0.0 +fr 05_nuclear 1 104 2000.0 1.0 0.0 +fr 06_coal 1 104 300.0 1.0 0.0 +fr 07_gas 1 104 0.0 0.0 0.0 +fr 08_non-res 1 104 0.0 0.0 0.0 +fr 09_hydro_pump 1 104 0.0 0.0 0.0 +fr 01_solar 1 105 2000.0 1.0 0.0 +fr 02_wind_on 1 105 2000.0 1.0 0.0 +fr 03_wind_off 1 105 2000.0 1.0 0.0 +fr 04_res 1 105 2000.0 1.0 0.0 +fr 05_nuclear 1 105 2000.0 1.0 0.0 +fr 06_coal 1 105 400.0 1.0 0.0 +fr 07_gas 1 105 0.0 0.0 0.0 +fr 08_non-res 1 105 0.0 0.0 0.0 +fr 09_hydro_pump 1 105 0.0 0.0 0.0 +fr 01_solar 1 106 2000.0 1.0 0.0 +fr 02_wind_on 1 106 2000.0 1.0 0.0 +fr 03_wind_off 1 106 2000.0 1.0 0.0 +fr 04_res 1 106 2000.0 1.0 0.0 +fr 05_nuclear 1 106 2000.0 1.0 0.0 +fr 06_coal 1 106 500.0 1.0 0.0 +fr 07_gas 1 106 0.0 0.0 0.0 +fr 08_non-res 1 106 0.0 0.0 0.0 +fr 09_hydro_pump 1 106 0.0 0.0 0.0 +fr 01_solar 1 107 2000.0 1.0 0.0 +fr 02_wind_on 1 107 2000.0 1.0 0.0 +fr 03_wind_off 1 107 2000.0 1.0 0.0 +fr 04_res 1 107 2000.0 1.0 0.0 +fr 05_nuclear 1 107 2000.0 1.0 0.0 +fr 06_coal 1 107 600.0 1.0 0.0 +fr 07_gas 1 107 0.0 0.0 0.0 +fr 08_non-res 1 107 0.0 0.0 0.0 +fr 09_hydro_pump 1 107 0.0 0.0 0.0 +fr 01_solar 1 108 2000.0 1.0 0.0 +fr 02_wind_on 1 108 2000.0 1.0 0.0 +fr 03_wind_off 1 108 2000.0 1.0 0.0 +fr 04_res 1 108 2000.0 1.0 0.0 +fr 05_nuclear 1 108 2000.0 1.0 0.0 +fr 06_coal 1 108 700.0 1.0 0.0 +fr 07_gas 1 108 0.0 0.0 0.0 +fr 08_non-res 1 108 0.0 0.0 0.0 +fr 09_hydro_pump 1 108 0.0 0.0 0.0 +fr 01_solar 1 109 2000.0 1.0 0.0 +fr 02_wind_on 1 109 2000.0 1.0 0.0 +fr 03_wind_off 1 109 2000.0 1.0 0.0 +fr 04_res 1 109 2000.0 1.0 0.0 +fr 05_nuclear 1 109 2000.0 1.0 0.0 +fr 06_coal 1 109 800.0 1.0 0.0 +fr 07_gas 1 109 0.0 0.0 0.0 +fr 08_non-res 1 109 0.0 0.0 0.0 +fr 09_hydro_pump 1 109 0.0 0.0 0.0 +fr 01_solar 1 110 2000.0 1.0 0.0 +fr 02_wind_on 1 110 2000.0 1.0 0.0 +fr 03_wind_off 1 110 2000.0 1.0 0.0 +fr 04_res 1 110 2000.0 1.0 0.0 +fr 05_nuclear 1 110 2000.0 1.0 0.0 +fr 06_coal 1 110 900.0 1.0 0.0 +fr 07_gas 1 110 0.0 0.0 0.0 +fr 08_non-res 1 110 0.0 0.0 0.0 +fr 09_hydro_pump 1 110 0.0 0.0 0.0 +fr 01_solar 1 111 2000.0 1.0 0.0 +fr 02_wind_on 1 111 2000.0 1.0 0.0 +fr 03_wind_off 1 111 2000.0 1.0 0.0 +fr 04_res 1 111 2000.0 1.0 0.0 +fr 05_nuclear 1 111 2000.0 1.0 0.0 +fr 06_coal 1 111 1000.0 1.0 0.0 +fr 07_gas 1 111 0.0 0.0 0.0 +fr 08_non-res 1 111 0.0 0.0 0.0 +fr 09_hydro_pump 1 111 0.0 0.0 0.0 +fr 01_solar 1 112 2000.0 1.0 0.0 +fr 02_wind_on 1 112 2000.0 1.0 0.0 +fr 03_wind_off 1 112 2000.0 1.0 0.0 +fr 04_res 1 112 2000.0 1.0 0.0 +fr 05_nuclear 1 112 2000.0 1.0 0.0 +fr 06_coal 1 112 1100.0 1.0 0.0 +fr 07_gas 1 112 0.0 0.0 0.0 +fr 08_non-res 1 112 0.0 0.0 0.0 +fr 09_hydro_pump 1 112 0.0 0.0 0.0 +fr 01_solar 1 113 2000.0 1.0 0.0 +fr 02_wind_on 1 113 2000.0 1.0 0.0 +fr 03_wind_off 1 113 2000.0 1.0 0.0 +fr 04_res 1 113 2000.0 1.0 0.0 +fr 05_nuclear 1 113 2000.0 1.0 0.0 +fr 06_coal 1 113 1200.0 1.0 0.0 +fr 07_gas 1 113 0.0 0.0 0.0 +fr 08_non-res 1 113 0.0 0.0 0.0 +fr 09_hydro_pump 1 113 0.0 0.0 0.0 +fr 01_solar 1 114 2000.0 1.0 0.0 +fr 02_wind_on 1 114 2000.0 1.0 0.0 +fr 03_wind_off 1 114 2000.0 1.0 0.0 +fr 04_res 1 114 2000.0 1.0 0.0 +fr 05_nuclear 1 114 2000.0 1.0 0.0 +fr 06_coal 1 114 1300.0 1.0 0.0 +fr 07_gas 1 114 0.0 0.0 0.0 +fr 08_non-res 1 114 0.0 0.0 0.0 +fr 09_hydro_pump 1 114 0.0 0.0 0.0 +fr 01_solar 1 115 2000.0 1.0 0.0 +fr 02_wind_on 1 115 2000.0 1.0 0.0 +fr 03_wind_off 1 115 2000.0 1.0 0.0 +fr 04_res 1 115 2000.0 1.0 0.0 +fr 05_nuclear 1 115 2000.0 1.0 0.0 +fr 06_coal 1 115 1400.0 1.0 0.0 +fr 07_gas 1 115 0.0 0.0 0.0 +fr 08_non-res 1 115 0.0 0.0 0.0 +fr 09_hydro_pump 1 115 0.0 0.0 0.0 +fr 01_solar 1 116 2000.0 1.0 0.0 +fr 02_wind_on 1 116 2000.0 1.0 0.0 +fr 03_wind_off 1 116 2000.0 1.0 0.0 +fr 04_res 1 116 2000.0 1.0 0.0 +fr 05_nuclear 1 116 2000.0 1.0 0.0 +fr 06_coal 1 116 1500.0 1.0 0.0 +fr 07_gas 1 116 0.0 0.0 0.0 +fr 08_non-res 1 116 0.0 0.0 0.0 +fr 09_hydro_pump 1 116 0.0 0.0 0.0 +fr 01_solar 1 117 2000.0 1.0 0.0 +fr 02_wind_on 1 117 2000.0 1.0 0.0 +fr 03_wind_off 1 117 2000.0 1.0 0.0 +fr 04_res 1 117 2000.0 1.0 0.0 +fr 05_nuclear 1 117 2000.0 1.0 0.0 +fr 06_coal 1 117 1600.0 1.0 0.0 +fr 07_gas 1 117 0.0 0.0 0.0 +fr 08_non-res 1 117 0.0 0.0 0.0 +fr 09_hydro_pump 1 117 0.0 0.0 0.0 +fr 01_solar 1 118 2000.0 1.0 0.0 +fr 02_wind_on 1 118 2000.0 1.0 0.0 +fr 03_wind_off 1 118 2000.0 1.0 0.0 +fr 04_res 1 118 2000.0 1.0 0.0 +fr 05_nuclear 1 118 2000.0 1.0 0.0 +fr 06_coal 1 118 1700.0 1.0 0.0 +fr 07_gas 1 118 0.0 0.0 0.0 +fr 08_non-res 1 118 0.0 0.0 0.0 +fr 09_hydro_pump 1 118 0.0 0.0 0.0 +fr 01_solar 1 119 2000.0 1.0 0.0 +fr 02_wind_on 1 119 2000.0 1.0 0.0 +fr 03_wind_off 1 119 2000.0 1.0 0.0 +fr 04_res 1 119 2000.0 1.0 0.0 +fr 05_nuclear 1 119 2000.0 1.0 0.0 +fr 06_coal 1 119 1800.0 1.0 0.0 +fr 07_gas 1 119 0.0 0.0 0.0 +fr 08_non-res 1 119 0.0 0.0 0.0 +fr 09_hydro_pump 1 119 0.0 0.0 0.0 +fr 01_solar 1 120 2000.0 1.0 0.0 +fr 02_wind_on 1 120 2000.0 1.0 0.0 +fr 03_wind_off 1 120 2000.0 1.0 0.0 +fr 04_res 1 120 2000.0 1.0 0.0 +fr 05_nuclear 1 120 2000.0 1.0 0.0 +fr 06_coal 1 120 1900.0 1.0 0.0 +fr 07_gas 1 120 0.0 0.0 0.0 +fr 08_non-res 1 120 0.0 0.0 0.0 +fr 09_hydro_pump 1 120 0.0 0.0 0.0 +fr 01_solar 1 121 2000.0 1.0 0.0 +fr 02_wind_on 1 121 2000.0 1.0 0.0 +fr 03_wind_off 1 121 2000.0 1.0 0.0 +fr 04_res 1 121 2000.0 1.0 0.0 +fr 05_nuclear 1 121 2000.0 1.0 0.0 +fr 06_coal 1 121 2000.0 1.0 0.0 +fr 07_gas 1 121 0.0 0.0 0.0 +fr 08_non-res 1 121 0.0 0.0 0.0 +fr 09_hydro_pump 1 121 0.0 0.0 0.0 +fr 01_solar 1 122 2000.0 1.0 0.0 +fr 02_wind_on 1 122 2000.0 1.0 0.0 +fr 03_wind_off 1 122 2000.0 1.0 0.0 +fr 04_res 1 122 2000.0 1.0 0.0 +fr 05_nuclear 1 122 2000.0 1.0 0.0 +fr 06_coal 1 122 2000.0 1.0 0.0 +fr 07_gas 1 122 100.0 1.0 0.0 +fr 08_non-res 1 122 0.0 0.0 0.0 +fr 09_hydro_pump 1 122 0.0 0.0 0.0 +fr 01_solar 1 123 2000.0 1.0 0.0 +fr 02_wind_on 1 123 2000.0 1.0 0.0 +fr 03_wind_off 1 123 2000.0 1.0 0.0 +fr 04_res 1 123 2000.0 1.0 0.0 +fr 05_nuclear 1 123 2000.0 1.0 0.0 +fr 06_coal 1 123 2000.0 1.0 0.0 +fr 07_gas 1 123 200.0 1.0 0.0 +fr 08_non-res 1 123 0.0 0.0 0.0 +fr 09_hydro_pump 1 123 0.0 0.0 0.0 +fr 01_solar 1 124 2000.0 1.0 0.0 +fr 02_wind_on 1 124 2000.0 1.0 0.0 +fr 03_wind_off 1 124 2000.0 1.0 0.0 +fr 04_res 1 124 2000.0 1.0 0.0 +fr 05_nuclear 1 124 2000.0 1.0 0.0 +fr 06_coal 1 124 2000.0 1.0 0.0 +fr 07_gas 1 124 300.0 1.0 0.0 +fr 08_non-res 1 124 0.0 0.0 0.0 +fr 09_hydro_pump 1 124 0.0 0.0 0.0 +fr 01_solar 1 125 2000.0 1.0 0.0 +fr 02_wind_on 1 125 2000.0 1.0 0.0 +fr 03_wind_off 1 125 2000.0 1.0 0.0 +fr 04_res 1 125 2000.0 1.0 0.0 +fr 05_nuclear 1 125 2000.0 1.0 0.0 +fr 06_coal 1 125 2000.0 1.0 0.0 +fr 07_gas 1 125 400.0 1.0 0.0 +fr 08_non-res 1 125 0.0 0.0 0.0 +fr 09_hydro_pump 1 125 0.0 0.0 0.0 +fr 01_solar 1 126 2000.0 1.0 0.0 +fr 02_wind_on 1 126 2000.0 1.0 0.0 +fr 03_wind_off 1 126 2000.0 1.0 0.0 +fr 04_res 1 126 2000.0 1.0 0.0 +fr 05_nuclear 1 126 2000.0 1.0 0.0 +fr 06_coal 1 126 2000.0 1.0 0.0 +fr 07_gas 1 126 500.0 1.0 0.0 +fr 08_non-res 1 126 0.0 0.0 0.0 +fr 09_hydro_pump 1 126 0.0 0.0 0.0 +fr 01_solar 1 127 2000.0 1.0 0.0 +fr 02_wind_on 1 127 2000.0 1.0 0.0 +fr 03_wind_off 1 127 2000.0 1.0 0.0 +fr 04_res 1 127 2000.0 1.0 0.0 +fr 05_nuclear 1 127 2000.0 1.0 0.0 +fr 06_coal 1 127 2000.0 1.0 0.0 +fr 07_gas 1 127 600.0 1.0 0.0 +fr 08_non-res 1 127 0.0 0.0 0.0 +fr 09_hydro_pump 1 127 0.0 0.0 0.0 +fr 01_solar 1 128 2000.0 1.0 0.0 +fr 02_wind_on 1 128 2000.0 1.0 0.0 +fr 03_wind_off 1 128 2000.0 1.0 0.0 +fr 04_res 1 128 2000.0 1.0 0.0 +fr 05_nuclear 1 128 2000.0 1.0 0.0 +fr 06_coal 1 128 2000.0 1.0 0.0 +fr 07_gas 1 128 700.0 1.0 0.0 +fr 08_non-res 1 128 0.0 0.0 0.0 +fr 09_hydro_pump 1 128 0.0 0.0 0.0 +fr 01_solar 1 129 2000.0 1.0 0.0 +fr 02_wind_on 1 129 2000.0 1.0 0.0 +fr 03_wind_off 1 129 2000.0 1.0 0.0 +fr 04_res 1 129 2000.0 1.0 0.0 +fr 05_nuclear 1 129 2000.0 1.0 0.0 +fr 06_coal 1 129 2000.0 1.0 0.0 +fr 07_gas 1 129 800.0 1.0 0.0 +fr 08_non-res 1 129 0.0 0.0 0.0 +fr 09_hydro_pump 1 129 0.0 0.0 0.0 +fr 01_solar 1 130 2000.0 1.0 0.0 +fr 02_wind_on 1 130 2000.0 1.0 0.0 +fr 03_wind_off 1 130 2000.0 1.0 0.0 +fr 04_res 1 130 2000.0 1.0 0.0 +fr 05_nuclear 1 130 2000.0 1.0 0.0 +fr 06_coal 1 130 2000.0 1.0 0.0 +fr 07_gas 1 130 900.0 1.0 0.0 +fr 08_non-res 1 130 0.0 0.0 0.0 +fr 09_hydro_pump 1 130 0.0 0.0 0.0 +fr 01_solar 1 131 2000.0 1.0 0.0 +fr 02_wind_on 1 131 2000.0 1.0 0.0 +fr 03_wind_off 1 131 2000.0 1.0 0.0 +fr 04_res 1 131 2000.0 1.0 0.0 +fr 05_nuclear 1 131 2000.0 1.0 0.0 +fr 06_coal 1 131 2000.0 1.0 0.0 +fr 07_gas 1 131 1000.0 1.0 0.0 +fr 08_non-res 1 131 0.0 0.0 0.0 +fr 09_hydro_pump 1 131 0.0 0.0 0.0 +fr 01_solar 1 132 2000.0 1.0 0.0 +fr 02_wind_on 1 132 2000.0 1.0 0.0 +fr 03_wind_off 1 132 2000.0 1.0 0.0 +fr 04_res 1 132 2000.0 1.0 0.0 +fr 05_nuclear 1 132 2000.0 1.0 0.0 +fr 06_coal 1 132 2000.0 1.0 0.0 +fr 07_gas 1 132 1100.0 1.0 0.0 +fr 08_non-res 1 132 0.0 0.0 0.0 +fr 09_hydro_pump 1 132 0.0 0.0 0.0 +fr 01_solar 1 133 2000.0 1.0 0.0 +fr 02_wind_on 1 133 2000.0 1.0 0.0 +fr 03_wind_off 1 133 2000.0 1.0 0.0 +fr 04_res 1 133 2000.0 1.0 0.0 +fr 05_nuclear 1 133 2000.0 1.0 0.0 +fr 06_coal 1 133 2000.0 1.0 0.0 +fr 07_gas 1 133 1200.0 1.0 0.0 +fr 08_non-res 1 133 0.0 0.0 0.0 +fr 09_hydro_pump 1 133 0.0 0.0 0.0 +fr 01_solar 1 134 2000.0 1.0 0.0 +fr 02_wind_on 1 134 2000.0 1.0 0.0 +fr 03_wind_off 1 134 2000.0 1.0 0.0 +fr 04_res 1 134 2000.0 1.0 0.0 +fr 05_nuclear 1 134 2000.0 1.0 0.0 +fr 06_coal 1 134 2000.0 1.0 0.0 +fr 07_gas 1 134 1300.0 1.0 0.0 +fr 08_non-res 1 134 0.0 0.0 0.0 +fr 09_hydro_pump 1 134 0.0 0.0 0.0 +fr 01_solar 1 135 2000.0 1.0 0.0 +fr 02_wind_on 1 135 2000.0 1.0 0.0 +fr 03_wind_off 1 135 2000.0 1.0 0.0 +fr 04_res 1 135 2000.0 1.0 0.0 +fr 05_nuclear 1 135 2000.0 1.0 0.0 +fr 06_coal 1 135 2000.0 1.0 0.0 +fr 07_gas 1 135 1400.0 1.0 0.0 +fr 08_non-res 1 135 0.0 0.0 0.0 +fr 09_hydro_pump 1 135 0.0 0.0 0.0 +fr 01_solar 1 136 2000.0 1.0 0.0 +fr 02_wind_on 1 136 2000.0 1.0 0.0 +fr 03_wind_off 1 136 2000.0 1.0 0.0 +fr 04_res 1 136 2000.0 1.0 0.0 +fr 05_nuclear 1 136 2000.0 1.0 0.0 +fr 06_coal 1 136 2000.0 1.0 0.0 +fr 07_gas 1 136 1500.0 1.0 0.0 +fr 08_non-res 1 136 0.0 0.0 0.0 +fr 09_hydro_pump 1 136 0.0 0.0 0.0 +fr 01_solar 1 137 2000.0 1.0 0.0 +fr 02_wind_on 1 137 2000.0 1.0 0.0 +fr 03_wind_off 1 137 2000.0 1.0 0.0 +fr 04_res 1 137 2000.0 1.0 0.0 +fr 05_nuclear 1 137 2000.0 1.0 0.0 +fr 06_coal 1 137 2000.0 1.0 0.0 +fr 07_gas 1 137 1600.0 1.0 0.0 +fr 08_non-res 1 137 0.0 0.0 0.0 +fr 09_hydro_pump 1 137 0.0 0.0 0.0 +fr 01_solar 1 138 2000.0 1.0 0.0 +fr 02_wind_on 1 138 2000.0 1.0 0.0 +fr 03_wind_off 1 138 2000.0 1.0 0.0 +fr 04_res 1 138 2000.0 1.0 0.0 +fr 05_nuclear 1 138 2000.0 1.0 0.0 +fr 06_coal 1 138 2000.0 1.0 0.0 +fr 07_gas 1 138 1700.0 1.0 0.0 +fr 08_non-res 1 138 0.0 0.0 0.0 +fr 09_hydro_pump 1 138 0.0 0.0 0.0 +fr 01_solar 1 139 2000.0 1.0 0.0 +fr 02_wind_on 1 139 2000.0 1.0 0.0 +fr 03_wind_off 1 139 2000.0 1.0 0.0 +fr 04_res 1 139 2000.0 1.0 0.0 +fr 05_nuclear 1 139 2000.0 1.0 0.0 +fr 06_coal 1 139 2000.0 1.0 0.0 +fr 07_gas 1 139 1800.0 1.0 0.0 +fr 08_non-res 1 139 0.0 0.0 0.0 +fr 09_hydro_pump 1 139 0.0 0.0 0.0 +fr 01_solar 1 140 2000.0 1.0 0.0 +fr 02_wind_on 1 140 2000.0 1.0 0.0 +fr 03_wind_off 1 140 2000.0 1.0 0.0 +fr 04_res 1 140 2000.0 1.0 0.0 +fr 05_nuclear 1 140 2000.0 1.0 0.0 +fr 06_coal 1 140 2000.0 1.0 0.0 +fr 07_gas 1 140 1900.0 1.0 0.0 +fr 08_non-res 1 140 0.0 0.0 0.0 +fr 09_hydro_pump 1 140 0.0 0.0 0.0 +fr 01_solar 1 141 2000.0 1.0 0.0 +fr 02_wind_on 1 141 2000.0 1.0 0.0 +fr 03_wind_off 1 141 2000.0 1.0 0.0 +fr 04_res 1 141 2000.0 1.0 0.0 +fr 05_nuclear 1 141 2000.0 1.0 0.0 +fr 06_coal 1 141 2000.0 1.0 0.0 +fr 07_gas 1 141 2000.0 1.0 0.0 +fr 08_non-res 1 141 0.0 0.0 0.0 +fr 09_hydro_pump 1 141 0.0 0.0 0.0 +fr 01_solar 1 142 2000.0 1.0 0.0 +fr 02_wind_on 1 142 2000.0 1.0 0.0 +fr 03_wind_off 1 142 2000.0 1.0 0.0 +fr 04_res 1 142 2000.0 1.0 0.0 +fr 05_nuclear 1 142 2000.0 1.0 0.0 +fr 06_coal 1 142 2000.0 1.0 0.0 +fr 07_gas 1 142 2000.0 1.0 0.0 +fr 08_non-res 1 142 100.0 1.0 0.0 +fr 09_hydro_pump 1 142 0.0 0.0 0.0 +fr 01_solar 1 143 2000.0 1.0 0.0 +fr 02_wind_on 1 143 2000.0 1.0 0.0 +fr 03_wind_off 1 143 2000.0 1.0 0.0 +fr 04_res 1 143 2000.0 1.0 0.0 +fr 05_nuclear 1 143 2000.0 1.0 0.0 +fr 06_coal 1 143 2000.0 1.0 0.0 +fr 07_gas 1 143 2000.0 1.0 0.0 +fr 08_non-res 1 143 200.0 1.0 0.0 +fr 09_hydro_pump 1 143 0.0 0.0 0.0 +fr 01_solar 1 144 2000.0 1.0 0.0 +fr 02_wind_on 1 144 2000.0 1.0 0.0 +fr 03_wind_off 1 144 2000.0 1.0 0.0 +fr 04_res 1 144 2000.0 1.0 0.0 +fr 05_nuclear 1 144 2000.0 1.0 0.0 +fr 06_coal 1 144 2000.0 1.0 0.0 +fr 07_gas 1 144 2000.0 1.0 0.0 +fr 08_non-res 1 144 300.0 1.0 0.0 +fr 09_hydro_pump 1 144 0.0 0.0 0.0 +fr 01_solar 1 145 2000.0 1.0 0.0 +fr 02_wind_on 1 145 2000.0 1.0 0.0 +fr 03_wind_off 1 145 2000.0 1.0 0.0 +fr 04_res 1 145 2000.0 1.0 0.0 +fr 05_nuclear 1 145 2000.0 1.0 0.0 +fr 06_coal 1 145 2000.0 1.0 0.0 +fr 07_gas 1 145 2000.0 1.0 0.0 +fr 08_non-res 1 145 400.0 1.0 0.0 +fr 09_hydro_pump 1 145 0.0 0.0 0.0 +fr 01_solar 1 146 2000.0 1.0 0.0 +fr 02_wind_on 1 146 2000.0 1.0 0.0 +fr 03_wind_off 1 146 2000.0 1.0 0.0 +fr 04_res 1 146 2000.0 1.0 0.0 +fr 05_nuclear 1 146 2000.0 1.0 0.0 +fr 06_coal 1 146 2000.0 1.0 0.0 +fr 07_gas 1 146 2000.0 1.0 0.0 +fr 08_non-res 1 146 500.0 1.0 0.0 +fr 09_hydro_pump 1 146 0.0 0.0 0.0 +fr 01_solar 1 147 2000.0 1.0 0.0 +fr 02_wind_on 1 147 2000.0 1.0 0.0 +fr 03_wind_off 1 147 2000.0 1.0 0.0 +fr 04_res 1 147 2000.0 1.0 0.0 +fr 05_nuclear 1 147 2000.0 1.0 0.0 +fr 06_coal 1 147 2000.0 1.0 0.0 +fr 07_gas 1 147 2000.0 1.0 0.0 +fr 08_non-res 1 147 600.0 1.0 0.0 +fr 09_hydro_pump 1 147 0.0 0.0 0.0 +fr 01_solar 1 148 2000.0 1.0 0.0 +fr 02_wind_on 1 148 2000.0 1.0 0.0 +fr 03_wind_off 1 148 2000.0 1.0 0.0 +fr 04_res 1 148 2000.0 1.0 0.0 +fr 05_nuclear 1 148 2000.0 1.0 0.0 +fr 06_coal 1 148 2000.0 1.0 0.0 +fr 07_gas 1 148 2000.0 1.0 0.0 +fr 08_non-res 1 148 700.0 1.0 0.0 +fr 09_hydro_pump 1 148 0.0 0.0 0.0 +fr 01_solar 1 149 2000.0 1.0 0.0 +fr 02_wind_on 1 149 2000.0 1.0 0.0 +fr 03_wind_off 1 149 2000.0 1.0 0.0 +fr 04_res 1 149 2000.0 1.0 0.0 +fr 05_nuclear 1 149 2000.0 1.0 0.0 +fr 06_coal 1 149 2000.0 1.0 0.0 +fr 07_gas 1 149 2000.0 1.0 0.0 +fr 08_non-res 1 149 800.0 1.0 0.0 +fr 09_hydro_pump 1 149 0.0 0.0 0.0 +fr 01_solar 1 150 2000.0 1.0 0.0 +fr 02_wind_on 1 150 2000.0 1.0 0.0 +fr 03_wind_off 1 150 2000.0 1.0 0.0 +fr 04_res 1 150 2000.0 1.0 0.0 +fr 05_nuclear 1 150 2000.0 1.0 0.0 +fr 06_coal 1 150 2000.0 1.0 0.0 +fr 07_gas 1 150 2000.0 1.0 0.0 +fr 08_non-res 1 150 900.0 1.0 0.0 +fr 09_hydro_pump 1 150 0.0 0.0 0.0 +fr 01_solar 1 151 2000.0 1.0 0.0 +fr 02_wind_on 1 151 2000.0 1.0 0.0 +fr 03_wind_off 1 151 2000.0 1.0 0.0 +fr 04_res 1 151 2000.0 1.0 0.0 +fr 05_nuclear 1 151 2000.0 1.0 0.0 +fr 06_coal 1 151 2000.0 1.0 0.0 +fr 07_gas 1 151 2000.0 1.0 0.0 +fr 08_non-res 1 151 1000.0 1.0 0.0 +fr 09_hydro_pump 1 151 0.0 0.0 0.0 +fr 01_solar 1 152 2000.0 1.0 0.0 +fr 02_wind_on 1 152 2000.0 1.0 0.0 +fr 03_wind_off 1 152 2000.0 1.0 0.0 +fr 04_res 1 152 2000.0 1.0 0.0 +fr 05_nuclear 1 152 2000.0 1.0 0.0 +fr 06_coal 1 152 2000.0 1.0 0.0 +fr 07_gas 1 152 2000.0 1.0 0.0 +fr 08_non-res 1 152 1100.0 1.0 0.0 +fr 09_hydro_pump 1 152 0.0 0.0 0.0 +fr 01_solar 1 153 2000.0 1.0 0.0 +fr 02_wind_on 1 153 2000.0 1.0 0.0 +fr 03_wind_off 1 153 2000.0 1.0 0.0 +fr 04_res 1 153 2000.0 1.0 0.0 +fr 05_nuclear 1 153 2000.0 1.0 0.0 +fr 06_coal 1 153 2000.0 1.0 0.0 +fr 07_gas 1 153 2000.0 1.0 0.0 +fr 08_non-res 1 153 1200.0 1.0 0.0 +fr 09_hydro_pump 1 153 0.0 0.0 0.0 +fr 01_solar 1 154 2000.0 1.0 0.0 +fr 02_wind_on 1 154 2000.0 1.0 0.0 +fr 03_wind_off 1 154 2000.0 1.0 0.0 +fr 04_res 1 154 2000.0 1.0 0.0 +fr 05_nuclear 1 154 2000.0 1.0 0.0 +fr 06_coal 1 154 2000.0 1.0 0.0 +fr 07_gas 1 154 2000.0 1.0 0.0 +fr 08_non-res 1 154 1300.0 1.0 0.0 +fr 09_hydro_pump 1 154 0.0 0.0 0.0 +fr 01_solar 1 155 2000.0 1.0 0.0 +fr 02_wind_on 1 155 2000.0 1.0 0.0 +fr 03_wind_off 1 155 2000.0 1.0 0.0 +fr 04_res 1 155 2000.0 1.0 0.0 +fr 05_nuclear 1 155 2000.0 1.0 0.0 +fr 06_coal 1 155 2000.0 1.0 0.0 +fr 07_gas 1 155 2000.0 1.0 0.0 +fr 08_non-res 1 155 1400.0 1.0 0.0 +fr 09_hydro_pump 1 155 0.0 0.0 0.0 +fr 01_solar 1 156 2000.0 1.0 0.0 +fr 02_wind_on 1 156 2000.0 1.0 0.0 +fr 03_wind_off 1 156 2000.0 1.0 0.0 +fr 04_res 1 156 2000.0 1.0 0.0 +fr 05_nuclear 1 156 2000.0 1.0 0.0 +fr 06_coal 1 156 2000.0 1.0 0.0 +fr 07_gas 1 156 2000.0 1.0 0.0 +fr 08_non-res 1 156 1500.0 1.0 0.0 +fr 09_hydro_pump 1 156 0.0 0.0 0.0 +fr 01_solar 1 157 2000.0 1.0 0.0 +fr 02_wind_on 1 157 2000.0 1.0 0.0 +fr 03_wind_off 1 157 2000.0 1.0 0.0 +fr 04_res 1 157 2000.0 1.0 0.0 +fr 05_nuclear 1 157 2000.0 1.0 0.0 +fr 06_coal 1 157 2000.0 1.0 0.0 +fr 07_gas 1 157 2000.0 1.0 0.0 +fr 08_non-res 1 157 1600.0 1.0 0.0 +fr 09_hydro_pump 1 157 0.0 0.0 0.0 +fr 01_solar 1 158 2000.0 1.0 0.0 +fr 02_wind_on 1 158 2000.0 1.0 0.0 +fr 03_wind_off 1 158 2000.0 1.0 0.0 +fr 04_res 1 158 2000.0 1.0 0.0 +fr 05_nuclear 1 158 2000.0 1.0 0.0 +fr 06_coal 1 158 2000.0 1.0 0.0 +fr 07_gas 1 158 2000.0 1.0 0.0 +fr 08_non-res 1 158 1700.0 1.0 0.0 +fr 09_hydro_pump 1 158 0.0 0.0 0.0 +fr 01_solar 1 159 2000.0 1.0 0.0 +fr 02_wind_on 1 159 2000.0 1.0 0.0 +fr 03_wind_off 1 159 2000.0 1.0 0.0 +fr 04_res 1 159 2000.0 1.0 0.0 +fr 05_nuclear 1 159 2000.0 1.0 0.0 +fr 06_coal 1 159 2000.0 1.0 0.0 +fr 07_gas 1 159 2000.0 1.0 0.0 +fr 08_non-res 1 159 1800.0 1.0 0.0 +fr 09_hydro_pump 1 159 0.0 0.0 0.0 +fr 01_solar 1 160 2000.0 1.0 0.0 +fr 02_wind_on 1 160 2000.0 1.0 0.0 +fr 03_wind_off 1 160 2000.0 1.0 0.0 +fr 04_res 1 160 2000.0 1.0 0.0 +fr 05_nuclear 1 160 2000.0 1.0 0.0 +fr 06_coal 1 160 2000.0 1.0 0.0 +fr 07_gas 1 160 2000.0 1.0 0.0 +fr 08_non-res 1 160 1900.0 1.0 0.0 +fr 09_hydro_pump 1 160 0.0 0.0 0.0 +fr 01_solar 1 161 2000.0 1.0 0.0 +fr 02_wind_on 1 161 2000.0 1.0 0.0 +fr 03_wind_off 1 161 2000.0 1.0 0.0 +fr 04_res 1 161 2000.0 1.0 0.0 +fr 05_nuclear 1 161 2000.0 1.0 0.0 +fr 06_coal 1 161 2000.0 1.0 0.0 +fr 07_gas 1 161 2000.0 1.0 0.0 +fr 08_non-res 1 161 2000.0 1.0 0.0 +fr 09_hydro_pump 1 161 0.0 0.0 0.0 +fr 01_solar 1 162 2000.0 1.0 0.0 +fr 02_wind_on 1 162 2000.0 1.0 0.0 +fr 03_wind_off 1 162 2000.0 1.0 0.0 +fr 04_res 1 162 2000.0 1.0 0.0 +fr 05_nuclear 1 162 2000.0 1.0 0.0 +fr 06_coal 1 162 2000.0 1.0 0.0 +fr 07_gas 1 162 2000.0 1.0 0.0 +fr 08_non-res 1 162 2000.0 1.0 0.0 +fr 09_hydro_pump 1 162 100.0 1.0 0.0 +fr 01_solar 1 163 2000.0 1.0 0.0 +fr 02_wind_on 1 163 2000.0 1.0 0.0 +fr 03_wind_off 1 163 2000.0 1.0 0.0 +fr 04_res 1 163 2000.0 1.0 0.0 +fr 05_nuclear 1 163 2000.0 1.0 0.0 +fr 06_coal 1 163 2000.0 1.0 0.0 +fr 07_gas 1 163 2000.0 1.0 0.0 +fr 08_non-res 1 163 2000.0 1.0 0.0 +fr 09_hydro_pump 1 163 200.0 1.0 0.0 +fr 01_solar 1 164 2000.0 1.0 0.0 +fr 02_wind_on 1 164 2000.0 1.0 0.0 +fr 03_wind_off 1 164 2000.0 1.0 0.0 +fr 04_res 1 164 2000.0 1.0 0.0 +fr 05_nuclear 1 164 2000.0 1.0 0.0 +fr 06_coal 1 164 2000.0 1.0 0.0 +fr 07_gas 1 164 2000.0 1.0 0.0 +fr 08_non-res 1 164 2000.0 1.0 0.0 +fr 09_hydro_pump 1 164 300.0 1.0 0.0 +fr 01_solar 1 165 2000.0 1.0 0.0 +fr 02_wind_on 1 165 2000.0 1.0 0.0 +fr 03_wind_off 1 165 2000.0 1.0 0.0 +fr 04_res 1 165 2000.0 1.0 0.0 +fr 05_nuclear 1 165 2000.0 1.0 0.0 +fr 06_coal 1 165 2000.0 1.0 0.0 +fr 07_gas 1 165 2000.0 1.0 0.0 +fr 08_non-res 1 165 2000.0 1.0 0.0 +fr 09_hydro_pump 1 165 400.0 1.0 0.0 +fr 01_solar 1 166 2000.0 1.0 0.0 +fr 02_wind_on 1 166 2000.0 1.0 0.0 +fr 03_wind_off 1 166 2000.0 1.0 0.0 +fr 04_res 1 166 2000.0 1.0 0.0 +fr 05_nuclear 1 166 2000.0 1.0 0.0 +fr 06_coal 1 166 2000.0 1.0 0.0 +fr 07_gas 1 166 2000.0 1.0 0.0 +fr 08_non-res 1 166 2000.0 1.0 0.0 +fr 09_hydro_pump 1 166 500.0 1.0 0.0 +fr 01_solar 1 167 2000.0 1.0 0.0 +fr 02_wind_on 1 167 2000.0 1.0 0.0 +fr 03_wind_off 1 167 2000.0 1.0 0.0 +fr 04_res 1 167 2000.0 1.0 0.0 +fr 05_nuclear 1 167 2000.0 1.0 0.0 +fr 06_coal 1 167 2000.0 1.0 0.0 +fr 07_gas 1 167 2000.0 1.0 0.0 +fr 08_non-res 1 167 2000.0 1.0 0.0 +fr 09_hydro_pump 1 167 600.0 1.0 0.0 +fr 01_solar 1 168 2000.0 1.0 0.0 +fr 02_wind_on 1 168 2000.0 1.0 0.0 +fr 03_wind_off 1 168 2000.0 1.0 0.0 +fr 04_res 1 168 2000.0 1.0 0.0 +fr 05_nuclear 1 168 2000.0 1.0 0.0 +fr 06_coal 1 168 2000.0 1.0 0.0 +fr 07_gas 1 168 2000.0 1.0 0.0 +fr 08_non-res 1 168 2000.0 1.0 0.0 +fr 09_hydro_pump 1 168 700.0 1.0 0.0 +fr 01_solar 1 169 0.0 0.0 0.0 +fr 02_wind_on 1 169 0.0 0.0 0.0 +fr 03_wind_off 1 169 0.0 0.0 0.0 +fr 04_res 1 169 0.0 0.0 0.0 +fr 05_nuclear 1 169 0.0 0.0 0.0 +fr 06_coal 1 169 0.0 0.0 0.0 +fr 07_gas 1 169 0.0 0.0 0.0 +fr 08_non-res 1 169 0.0 0.0 0.0 +fr 09_hydro_pump 1 169 0.0 0.0 0.0 +fr 01_solar 1 170 100.0 1.0 0.0 +fr 02_wind_on 1 170 0.0 0.0 0.0 +fr 03_wind_off 1 170 0.0 0.0 0.0 +fr 04_res 1 170 0.0 0.0 0.0 +fr 05_nuclear 1 170 0.0 0.0 0.0 +fr 06_coal 1 170 0.0 0.0 0.0 +fr 07_gas 1 170 0.0 0.0 0.0 +fr 08_non-res 1 170 0.0 0.0 0.0 +fr 09_hydro_pump 1 170 0.0 0.0 0.0 +fr 01_solar 1 171 200.0 1.0 0.0 +fr 02_wind_on 1 171 0.0 0.0 0.0 +fr 03_wind_off 1 171 0.0 0.0 0.0 +fr 04_res 1 171 0.0 0.0 0.0 +fr 05_nuclear 1 171 0.0 0.0 0.0 +fr 06_coal 1 171 0.0 0.0 0.0 +fr 07_gas 1 171 0.0 0.0 0.0 +fr 08_non-res 1 171 0.0 0.0 0.0 +fr 09_hydro_pump 1 171 0.0 0.0 0.0 +fr 01_solar 1 172 300.0 1.0 0.0 +fr 02_wind_on 1 172 0.0 0.0 0.0 +fr 03_wind_off 1 172 0.0 0.0 0.0 +fr 04_res 1 172 0.0 0.0 0.0 +fr 05_nuclear 1 172 0.0 0.0 0.0 +fr 06_coal 1 172 0.0 0.0 0.0 +fr 07_gas 1 172 0.0 0.0 0.0 +fr 08_non-res 1 172 0.0 0.0 0.0 +fr 09_hydro_pump 1 172 0.0 0.0 0.0 +fr 01_solar 1 173 400.0 1.0 0.0 +fr 02_wind_on 1 173 0.0 0.0 0.0 +fr 03_wind_off 1 173 0.0 0.0 0.0 +fr 04_res 1 173 0.0 0.0 0.0 +fr 05_nuclear 1 173 0.0 0.0 0.0 +fr 06_coal 1 173 0.0 0.0 0.0 +fr 07_gas 1 173 0.0 0.0 0.0 +fr 08_non-res 1 173 0.0 0.0 0.0 +fr 09_hydro_pump 1 173 0.0 0.0 0.0 +fr 01_solar 1 174 500.0 1.0 0.0 +fr 02_wind_on 1 174 0.0 0.0 0.0 +fr 03_wind_off 1 174 0.0 0.0 0.0 +fr 04_res 1 174 0.0 0.0 0.0 +fr 05_nuclear 1 174 0.0 0.0 0.0 +fr 06_coal 1 174 0.0 0.0 0.0 +fr 07_gas 1 174 0.0 0.0 0.0 +fr 08_non-res 1 174 0.0 0.0 0.0 +fr 09_hydro_pump 1 174 0.0 0.0 0.0 +fr 01_solar 1 175 600.0 1.0 0.0 +fr 02_wind_on 1 175 0.0 0.0 0.0 +fr 03_wind_off 1 175 0.0 0.0 0.0 +fr 04_res 1 175 0.0 0.0 0.0 +fr 05_nuclear 1 175 0.0 0.0 0.0 +fr 06_coal 1 175 0.0 0.0 0.0 +fr 07_gas 1 175 0.0 0.0 0.0 +fr 08_non-res 1 175 0.0 0.0 0.0 +fr 09_hydro_pump 1 175 0.0 0.0 0.0 +fr 01_solar 1 176 700.0 1.0 0.0 +fr 02_wind_on 1 176 0.0 0.0 0.0 +fr 03_wind_off 1 176 0.0 0.0 0.0 +fr 04_res 1 176 0.0 0.0 0.0 +fr 05_nuclear 1 176 0.0 0.0 0.0 +fr 06_coal 1 176 0.0 0.0 0.0 +fr 07_gas 1 176 0.0 0.0 0.0 +fr 08_non-res 1 176 0.0 0.0 0.0 +fr 09_hydro_pump 1 176 0.0 0.0 0.0 +fr 01_solar 1 177 800.0 1.0 0.0 +fr 02_wind_on 1 177 0.0 0.0 0.0 +fr 03_wind_off 1 177 0.0 0.0 0.0 +fr 04_res 1 177 0.0 0.0 0.0 +fr 05_nuclear 1 177 0.0 0.0 0.0 +fr 06_coal 1 177 0.0 0.0 0.0 +fr 07_gas 1 177 0.0 0.0 0.0 +fr 08_non-res 1 177 0.0 0.0 0.0 +fr 09_hydro_pump 1 177 0.0 0.0 0.0 +fr 01_solar 1 178 900.0 1.0 0.0 +fr 02_wind_on 1 178 0.0 0.0 0.0 +fr 03_wind_off 1 178 0.0 0.0 0.0 +fr 04_res 1 178 0.0 0.0 0.0 +fr 05_nuclear 1 178 0.0 0.0 0.0 +fr 06_coal 1 178 0.0 0.0 0.0 +fr 07_gas 1 178 0.0 0.0 0.0 +fr 08_non-res 1 178 0.0 0.0 0.0 +fr 09_hydro_pump 1 178 0.0 0.0 0.0 +fr 01_solar 1 179 1000.0 1.0 0.0 +fr 02_wind_on 1 179 0.0 0.0 0.0 +fr 03_wind_off 1 179 0.0 0.0 0.0 +fr 04_res 1 179 0.0 0.0 0.0 +fr 05_nuclear 1 179 0.0 0.0 0.0 +fr 06_coal 1 179 0.0 0.0 0.0 +fr 07_gas 1 179 0.0 0.0 0.0 +fr 08_non-res 1 179 0.0 0.0 0.0 +fr 09_hydro_pump 1 179 0.0 0.0 0.0 +fr 01_solar 1 180 1100.0 1.0 0.0 +fr 02_wind_on 1 180 0.0 0.0 0.0 +fr 03_wind_off 1 180 0.0 0.0 0.0 +fr 04_res 1 180 0.0 0.0 0.0 +fr 05_nuclear 1 180 0.0 0.0 0.0 +fr 06_coal 1 180 0.0 0.0 0.0 +fr 07_gas 1 180 0.0 0.0 0.0 +fr 08_non-res 1 180 0.0 0.0 0.0 +fr 09_hydro_pump 1 180 0.0 0.0 0.0 +fr 01_solar 1 181 1200.0 1.0 0.0 +fr 02_wind_on 1 181 0.0 0.0 0.0 +fr 03_wind_off 1 181 0.0 0.0 0.0 +fr 04_res 1 181 0.0 0.0 0.0 +fr 05_nuclear 1 181 0.0 0.0 0.0 +fr 06_coal 1 181 0.0 0.0 0.0 +fr 07_gas 1 181 0.0 0.0 0.0 +fr 08_non-res 1 181 0.0 0.0 0.0 +fr 09_hydro_pump 1 181 0.0 0.0 0.0 +fr 01_solar 1 182 1300.0 1.0 0.0 +fr 02_wind_on 1 182 0.0 0.0 0.0 +fr 03_wind_off 1 182 0.0 0.0 0.0 +fr 04_res 1 182 0.0 0.0 0.0 +fr 05_nuclear 1 182 0.0 0.0 0.0 +fr 06_coal 1 182 0.0 0.0 0.0 +fr 07_gas 1 182 0.0 0.0 0.0 +fr 08_non-res 1 182 0.0 0.0 0.0 +fr 09_hydro_pump 1 182 0.0 0.0 0.0 +fr 01_solar 1 183 1400.0 1.0 0.0 +fr 02_wind_on 1 183 0.0 0.0 0.0 +fr 03_wind_off 1 183 0.0 0.0 0.0 +fr 04_res 1 183 0.0 0.0 0.0 +fr 05_nuclear 1 183 0.0 0.0 0.0 +fr 06_coal 1 183 0.0 0.0 0.0 +fr 07_gas 1 183 0.0 0.0 0.0 +fr 08_non-res 1 183 0.0 0.0 0.0 +fr 09_hydro_pump 1 183 0.0 0.0 0.0 +fr 01_solar 1 184 1500.0 1.0 0.0 +fr 02_wind_on 1 184 0.0 0.0 0.0 +fr 03_wind_off 1 184 0.0 0.0 0.0 +fr 04_res 1 184 0.0 0.0 0.0 +fr 05_nuclear 1 184 0.0 0.0 0.0 +fr 06_coal 1 184 0.0 0.0 0.0 +fr 07_gas 1 184 0.0 0.0 0.0 +fr 08_non-res 1 184 0.0 0.0 0.0 +fr 09_hydro_pump 1 184 0.0 0.0 0.0 +fr 01_solar 1 185 1600.0 1.0 0.0 +fr 02_wind_on 1 185 0.0 0.0 0.0 +fr 03_wind_off 1 185 0.0 0.0 0.0 +fr 04_res 1 185 0.0 0.0 0.0 +fr 05_nuclear 1 185 0.0 0.0 0.0 +fr 06_coal 1 185 0.0 0.0 0.0 +fr 07_gas 1 185 0.0 0.0 0.0 +fr 08_non-res 1 185 0.0 0.0 0.0 +fr 09_hydro_pump 1 185 0.0 0.0 0.0 +fr 01_solar 1 186 1700.0 1.0 0.0 +fr 02_wind_on 1 186 0.0 0.0 0.0 +fr 03_wind_off 1 186 0.0 0.0 0.0 +fr 04_res 1 186 0.0 0.0 0.0 +fr 05_nuclear 1 186 0.0 0.0 0.0 +fr 06_coal 1 186 0.0 0.0 0.0 +fr 07_gas 1 186 0.0 0.0 0.0 +fr 08_non-res 1 186 0.0 0.0 0.0 +fr 09_hydro_pump 1 186 0.0 0.0 0.0 +fr 01_solar 1 187 1800.0 1.0 0.0 +fr 02_wind_on 1 187 0.0 0.0 0.0 +fr 03_wind_off 1 187 0.0 0.0 0.0 +fr 04_res 1 187 0.0 0.0 0.0 +fr 05_nuclear 1 187 0.0 0.0 0.0 +fr 06_coal 1 187 0.0 0.0 0.0 +fr 07_gas 1 187 0.0 0.0 0.0 +fr 08_non-res 1 187 0.0 0.0 0.0 +fr 09_hydro_pump 1 187 0.0 0.0 0.0 +fr 01_solar 1 188 1900.0 1.0 0.0 +fr 02_wind_on 1 188 0.0 0.0 0.0 +fr 03_wind_off 1 188 0.0 0.0 0.0 +fr 04_res 1 188 0.0 0.0 0.0 +fr 05_nuclear 1 188 0.0 0.0 0.0 +fr 06_coal 1 188 0.0 0.0 0.0 +fr 07_gas 1 188 0.0 0.0 0.0 +fr 08_non-res 1 188 0.0 0.0 0.0 +fr 09_hydro_pump 1 188 0.0 0.0 0.0 +fr 01_solar 1 189 2000.0 1.0 0.0 +fr 02_wind_on 1 189 0.0 0.0 0.0 +fr 03_wind_off 1 189 0.0 0.0 0.0 +fr 04_res 1 189 0.0 0.0 0.0 +fr 05_nuclear 1 189 0.0 0.0 0.0 +fr 06_coal 1 189 0.0 0.0 0.0 +fr 07_gas 1 189 0.0 0.0 0.0 +fr 08_non-res 1 189 0.0 0.0 0.0 +fr 09_hydro_pump 1 189 0.0 0.0 0.0 +fr 01_solar 1 190 2000.0 1.0 0.0 +fr 02_wind_on 1 190 100.0 1.0 0.0 +fr 03_wind_off 1 190 0.0 0.0 0.0 +fr 04_res 1 190 0.0 0.0 0.0 +fr 05_nuclear 1 190 0.0 0.0 0.0 +fr 06_coal 1 190 0.0 0.0 0.0 +fr 07_gas 1 190 0.0 0.0 0.0 +fr 08_non-res 1 190 0.0 0.0 0.0 +fr 09_hydro_pump 1 190 0.0 0.0 0.0 +fr 01_solar 1 191 2000.0 1.0 0.0 +fr 02_wind_on 1 191 200.0 1.0 0.0 +fr 03_wind_off 1 191 0.0 0.0 0.0 +fr 04_res 1 191 0.0 0.0 0.0 +fr 05_nuclear 1 191 0.0 0.0 0.0 +fr 06_coal 1 191 0.0 0.0 0.0 +fr 07_gas 1 191 0.0 0.0 0.0 +fr 08_non-res 1 191 0.0 0.0 0.0 +fr 09_hydro_pump 1 191 0.0 0.0 0.0 +fr 01_solar 1 192 2000.0 1.0 0.0 +fr 02_wind_on 1 192 300.0 1.0 0.0 +fr 03_wind_off 1 192 0.0 0.0 0.0 +fr 04_res 1 192 0.0 0.0 0.0 +fr 05_nuclear 1 192 0.0 0.0 0.0 +fr 06_coal 1 192 0.0 0.0 0.0 +fr 07_gas 1 192 0.0 0.0 0.0 +fr 08_non-res 1 192 0.0 0.0 0.0 +fr 09_hydro_pump 1 192 0.0 0.0 0.0 +fr 01_solar 1 193 2000.0 1.0 0.0 +fr 02_wind_on 1 193 400.0 1.0 0.0 +fr 03_wind_off 1 193 0.0 0.0 0.0 +fr 04_res 1 193 0.0 0.0 0.0 +fr 05_nuclear 1 193 0.0 0.0 0.0 +fr 06_coal 1 193 0.0 0.0 0.0 +fr 07_gas 1 193 0.0 0.0 0.0 +fr 08_non-res 1 193 0.0 0.0 0.0 +fr 09_hydro_pump 1 193 0.0 0.0 0.0 +fr 01_solar 1 194 2000.0 1.0 0.0 +fr 02_wind_on 1 194 500.0 1.0 0.0 +fr 03_wind_off 1 194 0.0 0.0 0.0 +fr 04_res 1 194 0.0 0.0 0.0 +fr 05_nuclear 1 194 0.0 0.0 0.0 +fr 06_coal 1 194 0.0 0.0 0.0 +fr 07_gas 1 194 0.0 0.0 0.0 +fr 08_non-res 1 194 0.0 0.0 0.0 +fr 09_hydro_pump 1 194 0.0 0.0 0.0 +fr 01_solar 1 195 2000.0 1.0 0.0 +fr 02_wind_on 1 195 600.0 1.0 0.0 +fr 03_wind_off 1 195 0.0 0.0 0.0 +fr 04_res 1 195 0.0 0.0 0.0 +fr 05_nuclear 1 195 0.0 0.0 0.0 +fr 06_coal 1 195 0.0 0.0 0.0 +fr 07_gas 1 195 0.0 0.0 0.0 +fr 08_non-res 1 195 0.0 0.0 0.0 +fr 09_hydro_pump 1 195 0.0 0.0 0.0 +fr 01_solar 1 196 2000.0 1.0 0.0 +fr 02_wind_on 1 196 700.0 1.0 0.0 +fr 03_wind_off 1 196 0.0 0.0 0.0 +fr 04_res 1 196 0.0 0.0 0.0 +fr 05_nuclear 1 196 0.0 0.0 0.0 +fr 06_coal 1 196 0.0 0.0 0.0 +fr 07_gas 1 196 0.0 0.0 0.0 +fr 08_non-res 1 196 0.0 0.0 0.0 +fr 09_hydro_pump 1 196 0.0 0.0 0.0 +fr 01_solar 1 197 2000.0 1.0 0.0 +fr 02_wind_on 1 197 800.0 1.0 0.0 +fr 03_wind_off 1 197 0.0 0.0 0.0 +fr 04_res 1 197 0.0 0.0 0.0 +fr 05_nuclear 1 197 0.0 0.0 0.0 +fr 06_coal 1 197 0.0 0.0 0.0 +fr 07_gas 1 197 0.0 0.0 0.0 +fr 08_non-res 1 197 0.0 0.0 0.0 +fr 09_hydro_pump 1 197 0.0 0.0 0.0 +fr 01_solar 1 198 2000.0 1.0 0.0 +fr 02_wind_on 1 198 900.0 1.0 0.0 +fr 03_wind_off 1 198 0.0 0.0 0.0 +fr 04_res 1 198 0.0 0.0 0.0 +fr 05_nuclear 1 198 0.0 0.0 0.0 +fr 06_coal 1 198 0.0 0.0 0.0 +fr 07_gas 1 198 0.0 0.0 0.0 +fr 08_non-res 1 198 0.0 0.0 0.0 +fr 09_hydro_pump 1 198 0.0 0.0 0.0 +fr 01_solar 1 199 2000.0 1.0 0.0 +fr 02_wind_on 1 199 1000.0 1.0 0.0 +fr 03_wind_off 1 199 0.0 0.0 0.0 +fr 04_res 1 199 0.0 0.0 0.0 +fr 05_nuclear 1 199 0.0 0.0 0.0 +fr 06_coal 1 199 0.0 0.0 0.0 +fr 07_gas 1 199 0.0 0.0 0.0 +fr 08_non-res 1 199 0.0 0.0 0.0 +fr 09_hydro_pump 1 199 0.0 0.0 0.0 +fr 01_solar 1 200 2000.0 1.0 0.0 +fr 02_wind_on 1 200 1100.0 1.0 0.0 +fr 03_wind_off 1 200 0.0 0.0 0.0 +fr 04_res 1 200 0.0 0.0 0.0 +fr 05_nuclear 1 200 0.0 0.0 0.0 +fr 06_coal 1 200 0.0 0.0 0.0 +fr 07_gas 1 200 0.0 0.0 0.0 +fr 08_non-res 1 200 0.0 0.0 0.0 +fr 09_hydro_pump 1 200 0.0 0.0 0.0 +fr 01_solar 1 201 2000.0 1.0 0.0 +fr 02_wind_on 1 201 1200.0 1.0 0.0 +fr 03_wind_off 1 201 0.0 0.0 0.0 +fr 04_res 1 201 0.0 0.0 0.0 +fr 05_nuclear 1 201 0.0 0.0 0.0 +fr 06_coal 1 201 0.0 0.0 0.0 +fr 07_gas 1 201 0.0 0.0 0.0 +fr 08_non-res 1 201 0.0 0.0 0.0 +fr 09_hydro_pump 1 201 0.0 0.0 0.0 +fr 01_solar 1 202 2000.0 1.0 0.0 +fr 02_wind_on 1 202 1300.0 1.0 0.0 +fr 03_wind_off 1 202 0.0 0.0 0.0 +fr 04_res 1 202 0.0 0.0 0.0 +fr 05_nuclear 1 202 0.0 0.0 0.0 +fr 06_coal 1 202 0.0 0.0 0.0 +fr 07_gas 1 202 0.0 0.0 0.0 +fr 08_non-res 1 202 0.0 0.0 0.0 +fr 09_hydro_pump 1 202 0.0 0.0 0.0 +fr 01_solar 1 203 2000.0 1.0 0.0 +fr 02_wind_on 1 203 1400.0 1.0 0.0 +fr 03_wind_off 1 203 0.0 0.0 0.0 +fr 04_res 1 203 0.0 0.0 0.0 +fr 05_nuclear 1 203 0.0 0.0 0.0 +fr 06_coal 1 203 0.0 0.0 0.0 +fr 07_gas 1 203 0.0 0.0 0.0 +fr 08_non-res 1 203 0.0 0.0 0.0 +fr 09_hydro_pump 1 203 0.0 0.0 0.0 +fr 01_solar 1 204 2000.0 1.0 0.0 +fr 02_wind_on 1 204 1500.0 1.0 0.0 +fr 03_wind_off 1 204 0.0 0.0 0.0 +fr 04_res 1 204 0.0 0.0 0.0 +fr 05_nuclear 1 204 0.0 0.0 0.0 +fr 06_coal 1 204 0.0 0.0 0.0 +fr 07_gas 1 204 0.0 0.0 0.0 +fr 08_non-res 1 204 0.0 0.0 0.0 +fr 09_hydro_pump 1 204 0.0 0.0 0.0 +fr 01_solar 1 205 2000.0 1.0 0.0 +fr 02_wind_on 1 205 1600.0 1.0 0.0 +fr 03_wind_off 1 205 0.0 0.0 0.0 +fr 04_res 1 205 0.0 0.0 0.0 +fr 05_nuclear 1 205 0.0 0.0 0.0 +fr 06_coal 1 205 0.0 0.0 0.0 +fr 07_gas 1 205 0.0 0.0 0.0 +fr 08_non-res 1 205 0.0 0.0 0.0 +fr 09_hydro_pump 1 205 0.0 0.0 0.0 +fr 01_solar 1 206 2000.0 1.0 0.0 +fr 02_wind_on 1 206 1700.0 1.0 0.0 +fr 03_wind_off 1 206 0.0 0.0 0.0 +fr 04_res 1 206 0.0 0.0 0.0 +fr 05_nuclear 1 206 0.0 0.0 0.0 +fr 06_coal 1 206 0.0 0.0 0.0 +fr 07_gas 1 206 0.0 0.0 0.0 +fr 08_non-res 1 206 0.0 0.0 0.0 +fr 09_hydro_pump 1 206 0.0 0.0 0.0 +fr 01_solar 1 207 2000.0 1.0 0.0 +fr 02_wind_on 1 207 1800.0 1.0 0.0 +fr 03_wind_off 1 207 0.0 0.0 0.0 +fr 04_res 1 207 0.0 0.0 0.0 +fr 05_nuclear 1 207 0.0 0.0 0.0 +fr 06_coal 1 207 0.0 0.0 0.0 +fr 07_gas 1 207 0.0 0.0 0.0 +fr 08_non-res 1 207 0.0 0.0 0.0 +fr 09_hydro_pump 1 207 0.0 0.0 0.0 +fr 01_solar 1 208 2000.0 1.0 0.0 +fr 02_wind_on 1 208 1900.0 1.0 0.0 +fr 03_wind_off 1 208 0.0 0.0 0.0 +fr 04_res 1 208 0.0 0.0 0.0 +fr 05_nuclear 1 208 0.0 0.0 0.0 +fr 06_coal 1 208 0.0 0.0 0.0 +fr 07_gas 1 208 0.0 0.0 0.0 +fr 08_non-res 1 208 0.0 0.0 0.0 +fr 09_hydro_pump 1 208 0.0 0.0 0.0 +fr 01_solar 1 209 2000.0 1.0 0.0 +fr 02_wind_on 1 209 2000.0 1.0 0.0 +fr 03_wind_off 1 209 0.0 0.0 0.0 +fr 04_res 1 209 0.0 0.0 0.0 +fr 05_nuclear 1 209 0.0 0.0 0.0 +fr 06_coal 1 209 0.0 0.0 0.0 +fr 07_gas 1 209 0.0 0.0 0.0 +fr 08_non-res 1 209 0.0 0.0 0.0 +fr 09_hydro_pump 1 209 0.0 0.0 0.0 +fr 01_solar 1 210 2000.0 1.0 0.0 +fr 02_wind_on 1 210 2000.0 1.0 0.0 +fr 03_wind_off 1 210 100.0 1.0 0.0 +fr 04_res 1 210 0.0 0.0 0.0 +fr 05_nuclear 1 210 0.0 0.0 0.0 +fr 06_coal 1 210 0.0 0.0 0.0 +fr 07_gas 1 210 0.0 0.0 0.0 +fr 08_non-res 1 210 0.0 0.0 0.0 +fr 09_hydro_pump 1 210 0.0 0.0 0.0 +fr 01_solar 1 211 2000.0 1.0 0.0 +fr 02_wind_on 1 211 2000.0 1.0 0.0 +fr 03_wind_off 1 211 200.0 1.0 0.0 +fr 04_res 1 211 0.0 0.0 0.0 +fr 05_nuclear 1 211 0.0 0.0 0.0 +fr 06_coal 1 211 0.0 0.0 0.0 +fr 07_gas 1 211 0.0 0.0 0.0 +fr 08_non-res 1 211 0.0 0.0 0.0 +fr 09_hydro_pump 1 211 0.0 0.0 0.0 +fr 01_solar 1 212 2000.0 1.0 0.0 +fr 02_wind_on 1 212 2000.0 1.0 0.0 +fr 03_wind_off 1 212 300.0 1.0 0.0 +fr 04_res 1 212 0.0 0.0 0.0 +fr 05_nuclear 1 212 0.0 0.0 0.0 +fr 06_coal 1 212 0.0 0.0 0.0 +fr 07_gas 1 212 0.0 0.0 0.0 +fr 08_non-res 1 212 0.0 0.0 0.0 +fr 09_hydro_pump 1 212 0.0 0.0 0.0 +fr 01_solar 1 213 2000.0 1.0 0.0 +fr 02_wind_on 1 213 2000.0 1.0 0.0 +fr 03_wind_off 1 213 400.0 1.0 0.0 +fr 04_res 1 213 0.0 0.0 0.0 +fr 05_nuclear 1 213 0.0 0.0 0.0 +fr 06_coal 1 213 0.0 0.0 0.0 +fr 07_gas 1 213 0.0 0.0 0.0 +fr 08_non-res 1 213 0.0 0.0 0.0 +fr 09_hydro_pump 1 213 0.0 0.0 0.0 +fr 01_solar 1 214 2000.0 1.0 0.0 +fr 02_wind_on 1 214 2000.0 1.0 0.0 +fr 03_wind_off 1 214 500.0 1.0 0.0 +fr 04_res 1 214 0.0 0.0 0.0 +fr 05_nuclear 1 214 0.0 0.0 0.0 +fr 06_coal 1 214 0.0 0.0 0.0 +fr 07_gas 1 214 0.0 0.0 0.0 +fr 08_non-res 1 214 0.0 0.0 0.0 +fr 09_hydro_pump 1 214 0.0 0.0 0.0 +fr 01_solar 1 215 2000.0 1.0 0.0 +fr 02_wind_on 1 215 2000.0 1.0 0.0 +fr 03_wind_off 1 215 600.0 1.0 0.0 +fr 04_res 1 215 0.0 0.0 0.0 +fr 05_nuclear 1 215 0.0 0.0 0.0 +fr 06_coal 1 215 0.0 0.0 0.0 +fr 07_gas 1 215 0.0 0.0 0.0 +fr 08_non-res 1 215 0.0 0.0 0.0 +fr 09_hydro_pump 1 215 0.0 0.0 0.0 +fr 01_solar 1 216 2000.0 1.0 0.0 +fr 02_wind_on 1 216 2000.0 1.0 0.0 +fr 03_wind_off 1 216 700.0 1.0 0.0 +fr 04_res 1 216 0.0 0.0 0.0 +fr 05_nuclear 1 216 0.0 0.0 0.0 +fr 06_coal 1 216 0.0 0.0 0.0 +fr 07_gas 1 216 0.0 0.0 0.0 +fr 08_non-res 1 216 0.0 0.0 0.0 +fr 09_hydro_pump 1 216 0.0 0.0 0.0 +fr 01_solar 1 217 2000.0 1.0 0.0 +fr 02_wind_on 1 217 2000.0 1.0 0.0 +fr 03_wind_off 1 217 800.0 1.0 0.0 +fr 04_res 1 217 0.0 0.0 0.0 +fr 05_nuclear 1 217 0.0 0.0 0.0 +fr 06_coal 1 217 0.0 0.0 0.0 +fr 07_gas 1 217 0.0 0.0 0.0 +fr 08_non-res 1 217 0.0 0.0 0.0 +fr 09_hydro_pump 1 217 0.0 0.0 0.0 +fr 01_solar 1 218 2000.0 1.0 0.0 +fr 02_wind_on 1 218 2000.0 1.0 0.0 +fr 03_wind_off 1 218 900.0 1.0 0.0 +fr 04_res 1 218 0.0 0.0 0.0 +fr 05_nuclear 1 218 0.0 0.0 0.0 +fr 06_coal 1 218 0.0 0.0 0.0 +fr 07_gas 1 218 0.0 0.0 0.0 +fr 08_non-res 1 218 0.0 0.0 0.0 +fr 09_hydro_pump 1 218 0.0 0.0 0.0 +fr 01_solar 1 219 2000.0 1.0 0.0 +fr 02_wind_on 1 219 2000.0 1.0 0.0 +fr 03_wind_off 1 219 1000.0 1.0 0.0 +fr 04_res 1 219 0.0 0.0 0.0 +fr 05_nuclear 1 219 0.0 0.0 0.0 +fr 06_coal 1 219 0.0 0.0 0.0 +fr 07_gas 1 219 0.0 0.0 0.0 +fr 08_non-res 1 219 0.0 0.0 0.0 +fr 09_hydro_pump 1 219 0.0 0.0 0.0 +fr 01_solar 1 220 2000.0 1.0 0.0 +fr 02_wind_on 1 220 2000.0 1.0 0.0 +fr 03_wind_off 1 220 1100.0 1.0 0.0 +fr 04_res 1 220 0.0 0.0 0.0 +fr 05_nuclear 1 220 0.0 0.0 0.0 +fr 06_coal 1 220 0.0 0.0 0.0 +fr 07_gas 1 220 0.0 0.0 0.0 +fr 08_non-res 1 220 0.0 0.0 0.0 +fr 09_hydro_pump 1 220 0.0 0.0 0.0 +fr 01_solar 1 221 2000.0 1.0 0.0 +fr 02_wind_on 1 221 2000.0 1.0 0.0 +fr 03_wind_off 1 221 1200.0 1.0 0.0 +fr 04_res 1 221 0.0 0.0 0.0 +fr 05_nuclear 1 221 0.0 0.0 0.0 +fr 06_coal 1 221 0.0 0.0 0.0 +fr 07_gas 1 221 0.0 0.0 0.0 +fr 08_non-res 1 221 0.0 0.0 0.0 +fr 09_hydro_pump 1 221 0.0 0.0 0.0 +fr 01_solar 1 222 2000.0 1.0 0.0 +fr 02_wind_on 1 222 2000.0 1.0 0.0 +fr 03_wind_off 1 222 1300.0 1.0 0.0 +fr 04_res 1 222 0.0 0.0 0.0 +fr 05_nuclear 1 222 0.0 0.0 0.0 +fr 06_coal 1 222 0.0 0.0 0.0 +fr 07_gas 1 222 0.0 0.0 0.0 +fr 08_non-res 1 222 0.0 0.0 0.0 +fr 09_hydro_pump 1 222 0.0 0.0 0.0 +fr 01_solar 1 223 2000.0 1.0 0.0 +fr 02_wind_on 1 223 2000.0 1.0 0.0 +fr 03_wind_off 1 223 1400.0 1.0 0.0 +fr 04_res 1 223 0.0 0.0 0.0 +fr 05_nuclear 1 223 0.0 0.0 0.0 +fr 06_coal 1 223 0.0 0.0 0.0 +fr 07_gas 1 223 0.0 0.0 0.0 +fr 08_non-res 1 223 0.0 0.0 0.0 +fr 09_hydro_pump 1 223 0.0 0.0 0.0 +fr 01_solar 1 224 2000.0 1.0 0.0 +fr 02_wind_on 1 224 2000.0 1.0 0.0 +fr 03_wind_off 1 224 1500.0 1.0 0.0 +fr 04_res 1 224 0.0 0.0 0.0 +fr 05_nuclear 1 224 0.0 0.0 0.0 +fr 06_coal 1 224 0.0 0.0 0.0 +fr 07_gas 1 224 0.0 0.0 0.0 +fr 08_non-res 1 224 0.0 0.0 0.0 +fr 09_hydro_pump 1 224 0.0 0.0 0.0 +fr 01_solar 1 225 2000.0 1.0 0.0 +fr 02_wind_on 1 225 2000.0 1.0 0.0 +fr 03_wind_off 1 225 1600.0 1.0 0.0 +fr 04_res 1 225 0.0 0.0 0.0 +fr 05_nuclear 1 225 0.0 0.0 0.0 +fr 06_coal 1 225 0.0 0.0 0.0 +fr 07_gas 1 225 0.0 0.0 0.0 +fr 08_non-res 1 225 0.0 0.0 0.0 +fr 09_hydro_pump 1 225 0.0 0.0 0.0 +fr 01_solar 1 226 2000.0 1.0 0.0 +fr 02_wind_on 1 226 2000.0 1.0 0.0 +fr 03_wind_off 1 226 1700.0 1.0 0.0 +fr 04_res 1 226 0.0 0.0 0.0 +fr 05_nuclear 1 226 0.0 0.0 0.0 +fr 06_coal 1 226 0.0 0.0 0.0 +fr 07_gas 1 226 0.0 0.0 0.0 +fr 08_non-res 1 226 0.0 0.0 0.0 +fr 09_hydro_pump 1 226 0.0 0.0 0.0 +fr 01_solar 1 227 2000.0 1.0 0.0 +fr 02_wind_on 1 227 2000.0 1.0 0.0 +fr 03_wind_off 1 227 1800.0 1.0 0.0 +fr 04_res 1 227 0.0 0.0 0.0 +fr 05_nuclear 1 227 0.0 0.0 0.0 +fr 06_coal 1 227 0.0 0.0 0.0 +fr 07_gas 1 227 0.0 0.0 0.0 +fr 08_non-res 1 227 0.0 0.0 0.0 +fr 09_hydro_pump 1 227 0.0 0.0 0.0 +fr 01_solar 1 228 2000.0 1.0 0.0 +fr 02_wind_on 1 228 2000.0 1.0 0.0 +fr 03_wind_off 1 228 1900.0 1.0 0.0 +fr 04_res 1 228 0.0 0.0 0.0 +fr 05_nuclear 1 228 0.0 0.0 0.0 +fr 06_coal 1 228 0.0 0.0 0.0 +fr 07_gas 1 228 0.0 0.0 0.0 +fr 08_non-res 1 228 0.0 0.0 0.0 +fr 09_hydro_pump 1 228 0.0 0.0 0.0 +fr 01_solar 1 229 2000.0 1.0 0.0 +fr 02_wind_on 1 229 2000.0 1.0 0.0 +fr 03_wind_off 1 229 2000.0 1.0 0.0 +fr 04_res 1 229 0.0 0.0 0.0 +fr 05_nuclear 1 229 0.0 0.0 0.0 +fr 06_coal 1 229 0.0 0.0 0.0 +fr 07_gas 1 229 0.0 0.0 0.0 +fr 08_non-res 1 229 0.0 0.0 0.0 +fr 09_hydro_pump 1 229 0.0 0.0 0.0 +fr 01_solar 1 230 2000.0 1.0 0.0 +fr 02_wind_on 1 230 2000.0 1.0 0.0 +fr 03_wind_off 1 230 2000.0 1.0 0.0 +fr 04_res 1 230 100.0 1.0 0.0 +fr 05_nuclear 1 230 0.0 0.0 0.0 +fr 06_coal 1 230 0.0 0.0 0.0 +fr 07_gas 1 230 0.0 0.0 0.0 +fr 08_non-res 1 230 0.0 0.0 0.0 +fr 09_hydro_pump 1 230 0.0 0.0 0.0 +fr 01_solar 1 231 2000.0 1.0 0.0 +fr 02_wind_on 1 231 2000.0 1.0 0.0 +fr 03_wind_off 1 231 2000.0 1.0 0.0 +fr 04_res 1 231 200.0 1.0 0.0 +fr 05_nuclear 1 231 0.0 0.0 0.0 +fr 06_coal 1 231 0.0 0.0 0.0 +fr 07_gas 1 231 0.0 0.0 0.0 +fr 08_non-res 1 231 0.0 0.0 0.0 +fr 09_hydro_pump 1 231 0.0 0.0 0.0 +fr 01_solar 1 232 2000.0 1.0 0.0 +fr 02_wind_on 1 232 2000.0 1.0 0.0 +fr 03_wind_off 1 232 2000.0 1.0 0.0 +fr 04_res 1 232 300.0 1.0 0.0 +fr 05_nuclear 1 232 0.0 0.0 0.0 +fr 06_coal 1 232 0.0 0.0 0.0 +fr 07_gas 1 232 0.0 0.0 0.0 +fr 08_non-res 1 232 0.0 0.0 0.0 +fr 09_hydro_pump 1 232 0.0 0.0 0.0 +fr 01_solar 1 233 2000.0 1.0 0.0 +fr 02_wind_on 1 233 2000.0 1.0 0.0 +fr 03_wind_off 1 233 2000.0 1.0 0.0 +fr 04_res 1 233 400.0 1.0 0.0 +fr 05_nuclear 1 233 0.0 0.0 0.0 +fr 06_coal 1 233 0.0 0.0 0.0 +fr 07_gas 1 233 0.0 0.0 0.0 +fr 08_non-res 1 233 0.0 0.0 0.0 +fr 09_hydro_pump 1 233 0.0 0.0 0.0 +fr 01_solar 1 234 2000.0 1.0 0.0 +fr 02_wind_on 1 234 2000.0 1.0 0.0 +fr 03_wind_off 1 234 2000.0 1.0 0.0 +fr 04_res 1 234 500.0 1.0 0.0 +fr 05_nuclear 1 234 0.0 0.0 0.0 +fr 06_coal 1 234 0.0 0.0 0.0 +fr 07_gas 1 234 0.0 0.0 0.0 +fr 08_non-res 1 234 0.0 0.0 0.0 +fr 09_hydro_pump 1 234 0.0 0.0 0.0 +fr 01_solar 1 235 2000.0 1.0 0.0 +fr 02_wind_on 1 235 2000.0 1.0 0.0 +fr 03_wind_off 1 235 2000.0 1.0 0.0 +fr 04_res 1 235 600.0 1.0 0.0 +fr 05_nuclear 1 235 0.0 0.0 0.0 +fr 06_coal 1 235 0.0 0.0 0.0 +fr 07_gas 1 235 0.0 0.0 0.0 +fr 08_non-res 1 235 0.0 0.0 0.0 +fr 09_hydro_pump 1 235 0.0 0.0 0.0 +fr 01_solar 1 236 2000.0 1.0 0.0 +fr 02_wind_on 1 236 2000.0 1.0 0.0 +fr 03_wind_off 1 236 2000.0 1.0 0.0 +fr 04_res 1 236 700.0 1.0 0.0 +fr 05_nuclear 1 236 0.0 0.0 0.0 +fr 06_coal 1 236 0.0 0.0 0.0 +fr 07_gas 1 236 0.0 0.0 0.0 +fr 08_non-res 1 236 0.0 0.0 0.0 +fr 09_hydro_pump 1 236 0.0 0.0 0.0 +fr 01_solar 1 237 2000.0 1.0 0.0 +fr 02_wind_on 1 237 2000.0 1.0 0.0 +fr 03_wind_off 1 237 2000.0 1.0 0.0 +fr 04_res 1 237 800.0 1.0 0.0 +fr 05_nuclear 1 237 0.0 0.0 0.0 +fr 06_coal 1 237 0.0 0.0 0.0 +fr 07_gas 1 237 0.0 0.0 0.0 +fr 08_non-res 1 237 0.0 0.0 0.0 +fr 09_hydro_pump 1 237 0.0 0.0 0.0 +fr 01_solar 1 238 2000.0 1.0 0.0 +fr 02_wind_on 1 238 2000.0 1.0 0.0 +fr 03_wind_off 1 238 2000.0 1.0 0.0 +fr 04_res 1 238 900.0 1.0 0.0 +fr 05_nuclear 1 238 0.0 0.0 0.0 +fr 06_coal 1 238 0.0 0.0 0.0 +fr 07_gas 1 238 0.0 0.0 0.0 +fr 08_non-res 1 238 0.0 0.0 0.0 +fr 09_hydro_pump 1 238 0.0 0.0 0.0 +fr 01_solar 1 239 2000.0 1.0 0.0 +fr 02_wind_on 1 239 2000.0 1.0 0.0 +fr 03_wind_off 1 239 2000.0 1.0 0.0 +fr 04_res 1 239 1000.0 1.0 0.0 +fr 05_nuclear 1 239 0.0 0.0 0.0 +fr 06_coal 1 239 0.0 0.0 0.0 +fr 07_gas 1 239 0.0 0.0 0.0 +fr 08_non-res 1 239 0.0 0.0 0.0 +fr 09_hydro_pump 1 239 0.0 0.0 0.0 +fr 01_solar 1 240 2000.0 1.0 0.0 +fr 02_wind_on 1 240 2000.0 1.0 0.0 +fr 03_wind_off 1 240 2000.0 1.0 0.0 +fr 04_res 1 240 1100.0 1.0 0.0 +fr 05_nuclear 1 240 0.0 0.0 0.0 +fr 06_coal 1 240 0.0 0.0 0.0 +fr 07_gas 1 240 0.0 0.0 0.0 +fr 08_non-res 1 240 0.0 0.0 0.0 +fr 09_hydro_pump 1 240 0.0 0.0 0.0 +fr 01_solar 1 241 2000.0 1.0 0.0 +fr 02_wind_on 1 241 2000.0 1.0 0.0 +fr 03_wind_off 1 241 2000.0 1.0 0.0 +fr 04_res 1 241 1200.0 1.0 0.0 +fr 05_nuclear 1 241 0.0 0.0 0.0 +fr 06_coal 1 241 0.0 0.0 0.0 +fr 07_gas 1 241 0.0 0.0 0.0 +fr 08_non-res 1 241 0.0 0.0 0.0 +fr 09_hydro_pump 1 241 0.0 0.0 0.0 +fr 01_solar 1 242 2000.0 1.0 0.0 +fr 02_wind_on 1 242 2000.0 1.0 0.0 +fr 03_wind_off 1 242 2000.0 1.0 0.0 +fr 04_res 1 242 1300.0 1.0 0.0 +fr 05_nuclear 1 242 0.0 0.0 0.0 +fr 06_coal 1 242 0.0 0.0 0.0 +fr 07_gas 1 242 0.0 0.0 0.0 +fr 08_non-res 1 242 0.0 0.0 0.0 +fr 09_hydro_pump 1 242 0.0 0.0 0.0 +fr 01_solar 1 243 2000.0 1.0 0.0 +fr 02_wind_on 1 243 2000.0 1.0 0.0 +fr 03_wind_off 1 243 2000.0 1.0 0.0 +fr 04_res 1 243 1400.0 1.0 0.0 +fr 05_nuclear 1 243 0.0 0.0 0.0 +fr 06_coal 1 243 0.0 0.0 0.0 +fr 07_gas 1 243 0.0 0.0 0.0 +fr 08_non-res 1 243 0.0 0.0 0.0 +fr 09_hydro_pump 1 243 0.0 0.0 0.0 +fr 01_solar 1 244 2000.0 1.0 0.0 +fr 02_wind_on 1 244 2000.0 1.0 0.0 +fr 03_wind_off 1 244 2000.0 1.0 0.0 +fr 04_res 1 244 1500.0 1.0 0.0 +fr 05_nuclear 1 244 0.0 0.0 0.0 +fr 06_coal 1 244 0.0 0.0 0.0 +fr 07_gas 1 244 0.0 0.0 0.0 +fr 08_non-res 1 244 0.0 0.0 0.0 +fr 09_hydro_pump 1 244 0.0 0.0 0.0 +fr 01_solar 1 245 2000.0 1.0 0.0 +fr 02_wind_on 1 245 2000.0 1.0 0.0 +fr 03_wind_off 1 245 2000.0 1.0 0.0 +fr 04_res 1 245 1600.0 1.0 0.0 +fr 05_nuclear 1 245 0.0 0.0 0.0 +fr 06_coal 1 245 0.0 0.0 0.0 +fr 07_gas 1 245 0.0 0.0 0.0 +fr 08_non-res 1 245 0.0 0.0 0.0 +fr 09_hydro_pump 1 245 0.0 0.0 0.0 +fr 01_solar 1 246 2000.0 1.0 0.0 +fr 02_wind_on 1 246 2000.0 1.0 0.0 +fr 03_wind_off 1 246 2000.0 1.0 0.0 +fr 04_res 1 246 1700.0 1.0 0.0 +fr 05_nuclear 1 246 0.0 0.0 0.0 +fr 06_coal 1 246 0.0 0.0 0.0 +fr 07_gas 1 246 0.0 0.0 0.0 +fr 08_non-res 1 246 0.0 0.0 0.0 +fr 09_hydro_pump 1 246 0.0 0.0 0.0 +fr 01_solar 1 247 2000.0 1.0 0.0 +fr 02_wind_on 1 247 2000.0 1.0 0.0 +fr 03_wind_off 1 247 2000.0 1.0 0.0 +fr 04_res 1 247 1800.0 1.0 0.0 +fr 05_nuclear 1 247 0.0 0.0 0.0 +fr 06_coal 1 247 0.0 0.0 0.0 +fr 07_gas 1 247 0.0 0.0 0.0 +fr 08_non-res 1 247 0.0 0.0 0.0 +fr 09_hydro_pump 1 247 0.0 0.0 0.0 +fr 01_solar 1 248 2000.0 1.0 0.0 +fr 02_wind_on 1 248 2000.0 1.0 0.0 +fr 03_wind_off 1 248 2000.0 1.0 0.0 +fr 04_res 1 248 1900.0 1.0 0.0 +fr 05_nuclear 1 248 0.0 0.0 0.0 +fr 06_coal 1 248 0.0 0.0 0.0 +fr 07_gas 1 248 0.0 0.0 0.0 +fr 08_non-res 1 248 0.0 0.0 0.0 +fr 09_hydro_pump 1 248 0.0 0.0 0.0 +fr 01_solar 1 249 2000.0 1.0 0.0 +fr 02_wind_on 1 249 2000.0 1.0 0.0 +fr 03_wind_off 1 249 2000.0 1.0 0.0 +fr 04_res 1 249 2000.0 1.0 0.0 +fr 05_nuclear 1 249 0.0 0.0 0.0 +fr 06_coal 1 249 0.0 0.0 0.0 +fr 07_gas 1 249 0.0 0.0 0.0 +fr 08_non-res 1 249 0.0 0.0 0.0 +fr 09_hydro_pump 1 249 0.0 0.0 0.0 +fr 01_solar 1 250 2000.0 1.0 0.0 +fr 02_wind_on 1 250 2000.0 1.0 0.0 +fr 03_wind_off 1 250 2000.0 1.0 0.0 +fr 04_res 1 250 2000.0 1.0 0.0 +fr 05_nuclear 1 250 100.0 1.0 0.0 +fr 06_coal 1 250 0.0 0.0 0.0 +fr 07_gas 1 250 0.0 0.0 0.0 +fr 08_non-res 1 250 0.0 0.0 0.0 +fr 09_hydro_pump 1 250 0.0 0.0 0.0 +fr 01_solar 1 251 2000.0 1.0 0.0 +fr 02_wind_on 1 251 2000.0 1.0 0.0 +fr 03_wind_off 1 251 2000.0 1.0 0.0 +fr 04_res 1 251 2000.0 1.0 0.0 +fr 05_nuclear 1 251 200.0 1.0 0.0 +fr 06_coal 1 251 0.0 0.0 0.0 +fr 07_gas 1 251 0.0 0.0 0.0 +fr 08_non-res 1 251 0.0 0.0 0.0 +fr 09_hydro_pump 1 251 0.0 0.0 0.0 +fr 01_solar 1 252 2000.0 1.0 0.0 +fr 02_wind_on 1 252 2000.0 1.0 0.0 +fr 03_wind_off 1 252 2000.0 1.0 0.0 +fr 04_res 1 252 2000.0 1.0 0.0 +fr 05_nuclear 1 252 300.0 1.0 0.0 +fr 06_coal 1 252 0.0 0.0 0.0 +fr 07_gas 1 252 0.0 0.0 0.0 +fr 08_non-res 1 252 0.0 0.0 0.0 +fr 09_hydro_pump 1 252 0.0 0.0 0.0 +fr 01_solar 1 253 2000.0 1.0 0.0 +fr 02_wind_on 1 253 2000.0 1.0 0.0 +fr 03_wind_off 1 253 2000.0 1.0 0.0 +fr 04_res 1 253 2000.0 1.0 0.0 +fr 05_nuclear 1 253 400.0 1.0 0.0 +fr 06_coal 1 253 0.0 0.0 0.0 +fr 07_gas 1 253 0.0 0.0 0.0 +fr 08_non-res 1 253 0.0 0.0 0.0 +fr 09_hydro_pump 1 253 0.0 0.0 0.0 +fr 01_solar 1 254 2000.0 1.0 0.0 +fr 02_wind_on 1 254 2000.0 1.0 0.0 +fr 03_wind_off 1 254 2000.0 1.0 0.0 +fr 04_res 1 254 2000.0 1.0 0.0 +fr 05_nuclear 1 254 500.0 1.0 0.0 +fr 06_coal 1 254 0.0 0.0 0.0 +fr 07_gas 1 254 0.0 0.0 0.0 +fr 08_non-res 1 254 0.0 0.0 0.0 +fr 09_hydro_pump 1 254 0.0 0.0 0.0 +fr 01_solar 1 255 2000.0 1.0 0.0 +fr 02_wind_on 1 255 2000.0 1.0 0.0 +fr 03_wind_off 1 255 2000.0 1.0 0.0 +fr 04_res 1 255 2000.0 1.0 0.0 +fr 05_nuclear 1 255 600.0 1.0 0.0 +fr 06_coal 1 255 0.0 0.0 0.0 +fr 07_gas 1 255 0.0 0.0 0.0 +fr 08_non-res 1 255 0.0 0.0 0.0 +fr 09_hydro_pump 1 255 0.0 0.0 0.0 +fr 01_solar 1 256 2000.0 1.0 0.0 +fr 02_wind_on 1 256 2000.0 1.0 0.0 +fr 03_wind_off 1 256 2000.0 1.0 0.0 +fr 04_res 1 256 2000.0 1.0 0.0 +fr 05_nuclear 1 256 700.0 1.0 0.0 +fr 06_coal 1 256 0.0 0.0 0.0 +fr 07_gas 1 256 0.0 0.0 0.0 +fr 08_non-res 1 256 0.0 0.0 0.0 +fr 09_hydro_pump 1 256 0.0 0.0 0.0 +fr 01_solar 1 257 2000.0 1.0 0.0 +fr 02_wind_on 1 257 2000.0 1.0 0.0 +fr 03_wind_off 1 257 2000.0 1.0 0.0 +fr 04_res 1 257 2000.0 1.0 0.0 +fr 05_nuclear 1 257 800.0 1.0 0.0 +fr 06_coal 1 257 0.0 0.0 0.0 +fr 07_gas 1 257 0.0 0.0 0.0 +fr 08_non-res 1 257 0.0 0.0 0.0 +fr 09_hydro_pump 1 257 0.0 0.0 0.0 +fr 01_solar 1 258 2000.0 1.0 0.0 +fr 02_wind_on 1 258 2000.0 1.0 0.0 +fr 03_wind_off 1 258 2000.0 1.0 0.0 +fr 04_res 1 258 2000.0 1.0 0.0 +fr 05_nuclear 1 258 900.0 1.0 0.0 +fr 06_coal 1 258 0.0 0.0 0.0 +fr 07_gas 1 258 0.0 0.0 0.0 +fr 08_non-res 1 258 0.0 0.0 0.0 +fr 09_hydro_pump 1 258 0.0 0.0 0.0 +fr 01_solar 1 259 2000.0 1.0 0.0 +fr 02_wind_on 1 259 2000.0 1.0 0.0 +fr 03_wind_off 1 259 2000.0 1.0 0.0 +fr 04_res 1 259 2000.0 1.0 0.0 +fr 05_nuclear 1 259 1000.0 1.0 0.0 +fr 06_coal 1 259 0.0 0.0 0.0 +fr 07_gas 1 259 0.0 0.0 0.0 +fr 08_non-res 1 259 0.0 0.0 0.0 +fr 09_hydro_pump 1 259 0.0 0.0 0.0 +fr 01_solar 1 260 2000.0 1.0 0.0 +fr 02_wind_on 1 260 2000.0 1.0 0.0 +fr 03_wind_off 1 260 2000.0 1.0 0.0 +fr 04_res 1 260 2000.0 1.0 0.0 +fr 05_nuclear 1 260 1100.0 1.0 0.0 +fr 06_coal 1 260 0.0 0.0 0.0 +fr 07_gas 1 260 0.0 0.0 0.0 +fr 08_non-res 1 260 0.0 0.0 0.0 +fr 09_hydro_pump 1 260 0.0 0.0 0.0 +fr 01_solar 1 261 2000.0 1.0 0.0 +fr 02_wind_on 1 261 2000.0 1.0 0.0 +fr 03_wind_off 1 261 2000.0 1.0 0.0 +fr 04_res 1 261 2000.0 1.0 0.0 +fr 05_nuclear 1 261 1200.0 1.0 0.0 +fr 06_coal 1 261 0.0 0.0 0.0 +fr 07_gas 1 261 0.0 0.0 0.0 +fr 08_non-res 1 261 0.0 0.0 0.0 +fr 09_hydro_pump 1 261 0.0 0.0 0.0 +fr 01_solar 1 262 2000.0 1.0 0.0 +fr 02_wind_on 1 262 2000.0 1.0 0.0 +fr 03_wind_off 1 262 2000.0 1.0 0.0 +fr 04_res 1 262 2000.0 1.0 0.0 +fr 05_nuclear 1 262 1300.0 1.0 0.0 +fr 06_coal 1 262 0.0 0.0 0.0 +fr 07_gas 1 262 0.0 0.0 0.0 +fr 08_non-res 1 262 0.0 0.0 0.0 +fr 09_hydro_pump 1 262 0.0 0.0 0.0 +fr 01_solar 1 263 2000.0 1.0 0.0 +fr 02_wind_on 1 263 2000.0 1.0 0.0 +fr 03_wind_off 1 263 2000.0 1.0 0.0 +fr 04_res 1 263 2000.0 1.0 0.0 +fr 05_nuclear 1 263 1400.0 1.0 0.0 +fr 06_coal 1 263 0.0 0.0 0.0 +fr 07_gas 1 263 0.0 0.0 0.0 +fr 08_non-res 1 263 0.0 0.0 0.0 +fr 09_hydro_pump 1 263 0.0 0.0 0.0 +fr 01_solar 1 264 2000.0 1.0 0.0 +fr 02_wind_on 1 264 2000.0 1.0 0.0 +fr 03_wind_off 1 264 2000.0 1.0 0.0 +fr 04_res 1 264 2000.0 1.0 0.0 +fr 05_nuclear 1 264 1500.0 1.0 0.0 +fr 06_coal 1 264 0.0 0.0 0.0 +fr 07_gas 1 264 0.0 0.0 0.0 +fr 08_non-res 1 264 0.0 0.0 0.0 +fr 09_hydro_pump 1 264 0.0 0.0 0.0 +fr 01_solar 1 265 2000.0 1.0 0.0 +fr 02_wind_on 1 265 2000.0 1.0 0.0 +fr 03_wind_off 1 265 2000.0 1.0 0.0 +fr 04_res 1 265 2000.0 1.0 0.0 +fr 05_nuclear 1 265 1600.0 1.0 0.0 +fr 06_coal 1 265 0.0 0.0 0.0 +fr 07_gas 1 265 0.0 0.0 0.0 +fr 08_non-res 1 265 0.0 0.0 0.0 +fr 09_hydro_pump 1 265 0.0 0.0 0.0 +fr 01_solar 1 266 2000.0 1.0 0.0 +fr 02_wind_on 1 266 2000.0 1.0 0.0 +fr 03_wind_off 1 266 2000.0 1.0 0.0 +fr 04_res 1 266 2000.0 1.0 0.0 +fr 05_nuclear 1 266 1700.0 1.0 0.0 +fr 06_coal 1 266 0.0 0.0 0.0 +fr 07_gas 1 266 0.0 0.0 0.0 +fr 08_non-res 1 266 0.0 0.0 0.0 +fr 09_hydro_pump 1 266 0.0 0.0 0.0 +fr 01_solar 1 267 2000.0 1.0 0.0 +fr 02_wind_on 1 267 2000.0 1.0 0.0 +fr 03_wind_off 1 267 2000.0 1.0 0.0 +fr 04_res 1 267 2000.0 1.0 0.0 +fr 05_nuclear 1 267 1800.0 1.0 0.0 +fr 06_coal 1 267 0.0 0.0 0.0 +fr 07_gas 1 267 0.0 0.0 0.0 +fr 08_non-res 1 267 0.0 0.0 0.0 +fr 09_hydro_pump 1 267 0.0 0.0 0.0 +fr 01_solar 1 268 2000.0 1.0 0.0 +fr 02_wind_on 1 268 2000.0 1.0 0.0 +fr 03_wind_off 1 268 2000.0 1.0 0.0 +fr 04_res 1 268 2000.0 1.0 0.0 +fr 05_nuclear 1 268 1900.0 1.0 0.0 +fr 06_coal 1 268 0.0 0.0 0.0 +fr 07_gas 1 268 0.0 0.0 0.0 +fr 08_non-res 1 268 0.0 0.0 0.0 +fr 09_hydro_pump 1 268 0.0 0.0 0.0 +fr 01_solar 1 269 2000.0 1.0 0.0 +fr 02_wind_on 1 269 2000.0 1.0 0.0 +fr 03_wind_off 1 269 2000.0 1.0 0.0 +fr 04_res 1 269 2000.0 1.0 0.0 +fr 05_nuclear 1 269 2000.0 1.0 0.0 +fr 06_coal 1 269 0.0 0.0 0.0 +fr 07_gas 1 269 0.0 0.0 0.0 +fr 08_non-res 1 269 0.0 0.0 0.0 +fr 09_hydro_pump 1 269 0.0 0.0 0.0 +fr 01_solar 1 270 2000.0 1.0 0.0 +fr 02_wind_on 1 270 2000.0 1.0 0.0 +fr 03_wind_off 1 270 2000.0 1.0 0.0 +fr 04_res 1 270 2000.0 1.0 0.0 +fr 05_nuclear 1 270 2000.0 1.0 0.0 +fr 06_coal 1 270 100.0 1.0 0.0 +fr 07_gas 1 270 0.0 0.0 0.0 +fr 08_non-res 1 270 0.0 0.0 0.0 +fr 09_hydro_pump 1 270 0.0 0.0 0.0 +fr 01_solar 1 271 2000.0 1.0 0.0 +fr 02_wind_on 1 271 2000.0 1.0 0.0 +fr 03_wind_off 1 271 2000.0 1.0 0.0 +fr 04_res 1 271 2000.0 1.0 0.0 +fr 05_nuclear 1 271 2000.0 1.0 0.0 +fr 06_coal 1 271 200.0 1.0 0.0 +fr 07_gas 1 271 0.0 0.0 0.0 +fr 08_non-res 1 271 0.0 0.0 0.0 +fr 09_hydro_pump 1 271 0.0 0.0 0.0 +fr 01_solar 1 272 2000.0 1.0 0.0 +fr 02_wind_on 1 272 2000.0 1.0 0.0 +fr 03_wind_off 1 272 2000.0 1.0 0.0 +fr 04_res 1 272 2000.0 1.0 0.0 +fr 05_nuclear 1 272 2000.0 1.0 0.0 +fr 06_coal 1 272 300.0 1.0 0.0 +fr 07_gas 1 272 0.0 0.0 0.0 +fr 08_non-res 1 272 0.0 0.0 0.0 +fr 09_hydro_pump 1 272 0.0 0.0 0.0 +fr 01_solar 1 273 2000.0 1.0 0.0 +fr 02_wind_on 1 273 2000.0 1.0 0.0 +fr 03_wind_off 1 273 2000.0 1.0 0.0 +fr 04_res 1 273 2000.0 1.0 0.0 +fr 05_nuclear 1 273 2000.0 1.0 0.0 +fr 06_coal 1 273 400.0 1.0 0.0 +fr 07_gas 1 273 0.0 0.0 0.0 +fr 08_non-res 1 273 0.0 0.0 0.0 +fr 09_hydro_pump 1 273 0.0 0.0 0.0 +fr 01_solar 1 274 2000.0 1.0 0.0 +fr 02_wind_on 1 274 2000.0 1.0 0.0 +fr 03_wind_off 1 274 2000.0 1.0 0.0 +fr 04_res 1 274 2000.0 1.0 0.0 +fr 05_nuclear 1 274 2000.0 1.0 0.0 +fr 06_coal 1 274 500.0 1.0 0.0 +fr 07_gas 1 274 0.0 0.0 0.0 +fr 08_non-res 1 274 0.0 0.0 0.0 +fr 09_hydro_pump 1 274 0.0 0.0 0.0 +fr 01_solar 1 275 2000.0 1.0 0.0 +fr 02_wind_on 1 275 2000.0 1.0 0.0 +fr 03_wind_off 1 275 2000.0 1.0 0.0 +fr 04_res 1 275 2000.0 1.0 0.0 +fr 05_nuclear 1 275 2000.0 1.0 0.0 +fr 06_coal 1 275 600.0 1.0 0.0 +fr 07_gas 1 275 0.0 0.0 0.0 +fr 08_non-res 1 275 0.0 0.0 0.0 +fr 09_hydro_pump 1 275 0.0 0.0 0.0 +fr 01_solar 1 276 2000.0 1.0 0.0 +fr 02_wind_on 1 276 2000.0 1.0 0.0 +fr 03_wind_off 1 276 2000.0 1.0 0.0 +fr 04_res 1 276 2000.0 1.0 0.0 +fr 05_nuclear 1 276 2000.0 1.0 0.0 +fr 06_coal 1 276 700.0 1.0 0.0 +fr 07_gas 1 276 0.0 0.0 0.0 +fr 08_non-res 1 276 0.0 0.0 0.0 +fr 09_hydro_pump 1 276 0.0 0.0 0.0 +fr 01_solar 1 277 2000.0 1.0 0.0 +fr 02_wind_on 1 277 2000.0 1.0 0.0 +fr 03_wind_off 1 277 2000.0 1.0 0.0 +fr 04_res 1 277 2000.0 1.0 0.0 +fr 05_nuclear 1 277 2000.0 1.0 0.0 +fr 06_coal 1 277 800.0 1.0 0.0 +fr 07_gas 1 277 0.0 0.0 0.0 +fr 08_non-res 1 277 0.0 0.0 0.0 +fr 09_hydro_pump 1 277 0.0 0.0 0.0 +fr 01_solar 1 278 2000.0 1.0 0.0 +fr 02_wind_on 1 278 2000.0 1.0 0.0 +fr 03_wind_off 1 278 2000.0 1.0 0.0 +fr 04_res 1 278 2000.0 1.0 0.0 +fr 05_nuclear 1 278 2000.0 1.0 0.0 +fr 06_coal 1 278 900.0 1.0 0.0 +fr 07_gas 1 278 0.0 0.0 0.0 +fr 08_non-res 1 278 0.0 0.0 0.0 +fr 09_hydro_pump 1 278 0.0 0.0 0.0 +fr 01_solar 1 279 2000.0 1.0 0.0 +fr 02_wind_on 1 279 2000.0 1.0 0.0 +fr 03_wind_off 1 279 2000.0 1.0 0.0 +fr 04_res 1 279 2000.0 1.0 0.0 +fr 05_nuclear 1 279 2000.0 1.0 0.0 +fr 06_coal 1 279 1000.0 1.0 0.0 +fr 07_gas 1 279 0.0 0.0 0.0 +fr 08_non-res 1 279 0.0 0.0 0.0 +fr 09_hydro_pump 1 279 0.0 0.0 0.0 +fr 01_solar 1 280 2000.0 1.0 0.0 +fr 02_wind_on 1 280 2000.0 1.0 0.0 +fr 03_wind_off 1 280 2000.0 1.0 0.0 +fr 04_res 1 280 2000.0 1.0 0.0 +fr 05_nuclear 1 280 2000.0 1.0 0.0 +fr 06_coal 1 280 1100.0 1.0 0.0 +fr 07_gas 1 280 0.0 0.0 0.0 +fr 08_non-res 1 280 0.0 0.0 0.0 +fr 09_hydro_pump 1 280 0.0 0.0 0.0 +fr 01_solar 1 281 2000.0 1.0 0.0 +fr 02_wind_on 1 281 2000.0 1.0 0.0 +fr 03_wind_off 1 281 2000.0 1.0 0.0 +fr 04_res 1 281 2000.0 1.0 0.0 +fr 05_nuclear 1 281 2000.0 1.0 0.0 +fr 06_coal 1 281 1200.0 1.0 0.0 +fr 07_gas 1 281 0.0 0.0 0.0 +fr 08_non-res 1 281 0.0 0.0 0.0 +fr 09_hydro_pump 1 281 0.0 0.0 0.0 +fr 01_solar 1 282 2000.0 1.0 0.0 +fr 02_wind_on 1 282 2000.0 1.0 0.0 +fr 03_wind_off 1 282 2000.0 1.0 0.0 +fr 04_res 1 282 2000.0 1.0 0.0 +fr 05_nuclear 1 282 2000.0 1.0 0.0 +fr 06_coal 1 282 1300.0 1.0 0.0 +fr 07_gas 1 282 0.0 0.0 0.0 +fr 08_non-res 1 282 0.0 0.0 0.0 +fr 09_hydro_pump 1 282 0.0 0.0 0.0 +fr 01_solar 1 283 2000.0 1.0 0.0 +fr 02_wind_on 1 283 2000.0 1.0 0.0 +fr 03_wind_off 1 283 2000.0 1.0 0.0 +fr 04_res 1 283 2000.0 1.0 0.0 +fr 05_nuclear 1 283 2000.0 1.0 0.0 +fr 06_coal 1 283 1400.0 1.0 0.0 +fr 07_gas 1 283 0.0 0.0 0.0 +fr 08_non-res 1 283 0.0 0.0 0.0 +fr 09_hydro_pump 1 283 0.0 0.0 0.0 +fr 01_solar 1 284 2000.0 1.0 0.0 +fr 02_wind_on 1 284 2000.0 1.0 0.0 +fr 03_wind_off 1 284 2000.0 1.0 0.0 +fr 04_res 1 284 2000.0 1.0 0.0 +fr 05_nuclear 1 284 2000.0 1.0 0.0 +fr 06_coal 1 284 1500.0 1.0 0.0 +fr 07_gas 1 284 0.0 0.0 0.0 +fr 08_non-res 1 284 0.0 0.0 0.0 +fr 09_hydro_pump 1 284 0.0 0.0 0.0 +fr 01_solar 1 285 2000.0 1.0 0.0 +fr 02_wind_on 1 285 2000.0 1.0 0.0 +fr 03_wind_off 1 285 2000.0 1.0 0.0 +fr 04_res 1 285 2000.0 1.0 0.0 +fr 05_nuclear 1 285 2000.0 1.0 0.0 +fr 06_coal 1 285 1600.0 1.0 0.0 +fr 07_gas 1 285 0.0 0.0 0.0 +fr 08_non-res 1 285 0.0 0.0 0.0 +fr 09_hydro_pump 1 285 0.0 0.0 0.0 +fr 01_solar 1 286 2000.0 1.0 0.0 +fr 02_wind_on 1 286 2000.0 1.0 0.0 +fr 03_wind_off 1 286 2000.0 1.0 0.0 +fr 04_res 1 286 2000.0 1.0 0.0 +fr 05_nuclear 1 286 2000.0 1.0 0.0 +fr 06_coal 1 286 1700.0 1.0 0.0 +fr 07_gas 1 286 0.0 0.0 0.0 +fr 08_non-res 1 286 0.0 0.0 0.0 +fr 09_hydro_pump 1 286 0.0 0.0 0.0 +fr 01_solar 1 287 2000.0 1.0 0.0 +fr 02_wind_on 1 287 2000.0 1.0 0.0 +fr 03_wind_off 1 287 2000.0 1.0 0.0 +fr 04_res 1 287 2000.0 1.0 0.0 +fr 05_nuclear 1 287 2000.0 1.0 0.0 +fr 06_coal 1 287 1800.0 1.0 0.0 +fr 07_gas 1 287 0.0 0.0 0.0 +fr 08_non-res 1 287 0.0 0.0 0.0 +fr 09_hydro_pump 1 287 0.0 0.0 0.0 +fr 01_solar 1 288 2000.0 1.0 0.0 +fr 02_wind_on 1 288 2000.0 1.0 0.0 +fr 03_wind_off 1 288 2000.0 1.0 0.0 +fr 04_res 1 288 2000.0 1.0 0.0 +fr 05_nuclear 1 288 2000.0 1.0 0.0 +fr 06_coal 1 288 1900.0 1.0 0.0 +fr 07_gas 1 288 0.0 0.0 0.0 +fr 08_non-res 1 288 0.0 0.0 0.0 +fr 09_hydro_pump 1 288 0.0 0.0 0.0 +fr 01_solar 1 289 2000.0 1.0 0.0 +fr 02_wind_on 1 289 2000.0 1.0 0.0 +fr 03_wind_off 1 289 2000.0 1.0 0.0 +fr 04_res 1 289 2000.0 1.0 0.0 +fr 05_nuclear 1 289 2000.0 1.0 0.0 +fr 06_coal 1 289 2000.0 1.0 0.0 +fr 07_gas 1 289 0.0 0.0 0.0 +fr 08_non-res 1 289 0.0 0.0 0.0 +fr 09_hydro_pump 1 289 0.0 0.0 0.0 +fr 01_solar 1 290 2000.0 1.0 0.0 +fr 02_wind_on 1 290 2000.0 1.0 0.0 +fr 03_wind_off 1 290 2000.0 1.0 0.0 +fr 04_res 1 290 2000.0 1.0 0.0 +fr 05_nuclear 1 290 2000.0 1.0 0.0 +fr 06_coal 1 290 2000.0 1.0 0.0 +fr 07_gas 1 290 100.0 1.0 0.0 +fr 08_non-res 1 290 0.0 0.0 0.0 +fr 09_hydro_pump 1 290 0.0 0.0 0.0 +fr 01_solar 1 291 2000.0 1.0 0.0 +fr 02_wind_on 1 291 2000.0 1.0 0.0 +fr 03_wind_off 1 291 2000.0 1.0 0.0 +fr 04_res 1 291 2000.0 1.0 0.0 +fr 05_nuclear 1 291 2000.0 1.0 0.0 +fr 06_coal 1 291 2000.0 1.0 0.0 +fr 07_gas 1 291 200.0 1.0 0.0 +fr 08_non-res 1 291 0.0 0.0 0.0 +fr 09_hydro_pump 1 291 0.0 0.0 0.0 +fr 01_solar 1 292 2000.0 1.0 0.0 +fr 02_wind_on 1 292 2000.0 1.0 0.0 +fr 03_wind_off 1 292 2000.0 1.0 0.0 +fr 04_res 1 292 2000.0 1.0 0.0 +fr 05_nuclear 1 292 2000.0 1.0 0.0 +fr 06_coal 1 292 2000.0 1.0 0.0 +fr 07_gas 1 292 300.0 1.0 0.0 +fr 08_non-res 1 292 0.0 0.0 0.0 +fr 09_hydro_pump 1 292 0.0 0.0 0.0 +fr 01_solar 1 293 2000.0 1.0 0.0 +fr 02_wind_on 1 293 2000.0 1.0 0.0 +fr 03_wind_off 1 293 2000.0 1.0 0.0 +fr 04_res 1 293 2000.0 1.0 0.0 +fr 05_nuclear 1 293 2000.0 1.0 0.0 +fr 06_coal 1 293 2000.0 1.0 0.0 +fr 07_gas 1 293 400.0 1.0 0.0 +fr 08_non-res 1 293 0.0 0.0 0.0 +fr 09_hydro_pump 1 293 0.0 0.0 0.0 +fr 01_solar 1 294 2000.0 1.0 0.0 +fr 02_wind_on 1 294 2000.0 1.0 0.0 +fr 03_wind_off 1 294 2000.0 1.0 0.0 +fr 04_res 1 294 2000.0 1.0 0.0 +fr 05_nuclear 1 294 2000.0 1.0 0.0 +fr 06_coal 1 294 2000.0 1.0 0.0 +fr 07_gas 1 294 500.0 1.0 0.0 +fr 08_non-res 1 294 0.0 0.0 0.0 +fr 09_hydro_pump 1 294 0.0 0.0 0.0 +fr 01_solar 1 295 2000.0 1.0 0.0 +fr 02_wind_on 1 295 2000.0 1.0 0.0 +fr 03_wind_off 1 295 2000.0 1.0 0.0 +fr 04_res 1 295 2000.0 1.0 0.0 +fr 05_nuclear 1 295 2000.0 1.0 0.0 +fr 06_coal 1 295 2000.0 1.0 0.0 +fr 07_gas 1 295 600.0 1.0 0.0 +fr 08_non-res 1 295 0.0 0.0 0.0 +fr 09_hydro_pump 1 295 0.0 0.0 0.0 +fr 01_solar 1 296 2000.0 1.0 0.0 +fr 02_wind_on 1 296 2000.0 1.0 0.0 +fr 03_wind_off 1 296 2000.0 1.0 0.0 +fr 04_res 1 296 2000.0 1.0 0.0 +fr 05_nuclear 1 296 2000.0 1.0 0.0 +fr 06_coal 1 296 2000.0 1.0 0.0 +fr 07_gas 1 296 700.0 1.0 0.0 +fr 08_non-res 1 296 0.0 0.0 0.0 +fr 09_hydro_pump 1 296 0.0 0.0 0.0 +fr 01_solar 1 297 2000.0 1.0 0.0 +fr 02_wind_on 1 297 2000.0 1.0 0.0 +fr 03_wind_off 1 297 2000.0 1.0 0.0 +fr 04_res 1 297 2000.0 1.0 0.0 +fr 05_nuclear 1 297 2000.0 1.0 0.0 +fr 06_coal 1 297 2000.0 1.0 0.0 +fr 07_gas 1 297 800.0 1.0 0.0 +fr 08_non-res 1 297 0.0 0.0 0.0 +fr 09_hydro_pump 1 297 0.0 0.0 0.0 +fr 01_solar 1 298 2000.0 1.0 0.0 +fr 02_wind_on 1 298 2000.0 1.0 0.0 +fr 03_wind_off 1 298 2000.0 1.0 0.0 +fr 04_res 1 298 2000.0 1.0 0.0 +fr 05_nuclear 1 298 2000.0 1.0 0.0 +fr 06_coal 1 298 2000.0 1.0 0.0 +fr 07_gas 1 298 900.0 1.0 0.0 +fr 08_non-res 1 298 0.0 0.0 0.0 +fr 09_hydro_pump 1 298 0.0 0.0 0.0 +fr 01_solar 1 299 2000.0 1.0 0.0 +fr 02_wind_on 1 299 2000.0 1.0 0.0 +fr 03_wind_off 1 299 2000.0 1.0 0.0 +fr 04_res 1 299 2000.0 1.0 0.0 +fr 05_nuclear 1 299 2000.0 1.0 0.0 +fr 06_coal 1 299 2000.0 1.0 0.0 +fr 07_gas 1 299 1000.0 1.0 0.0 +fr 08_non-res 1 299 0.0 0.0 0.0 +fr 09_hydro_pump 1 299 0.0 0.0 0.0 +fr 01_solar 1 300 2000.0 1.0 0.0 +fr 02_wind_on 1 300 2000.0 1.0 0.0 +fr 03_wind_off 1 300 2000.0 1.0 0.0 +fr 04_res 1 300 2000.0 1.0 0.0 +fr 05_nuclear 1 300 2000.0 1.0 0.0 +fr 06_coal 1 300 2000.0 1.0 0.0 +fr 07_gas 1 300 1100.0 1.0 0.0 +fr 08_non-res 1 300 0.0 0.0 0.0 +fr 09_hydro_pump 1 300 0.0 0.0 0.0 +fr 01_solar 1 301 2000.0 1.0 0.0 +fr 02_wind_on 1 301 2000.0 1.0 0.0 +fr 03_wind_off 1 301 2000.0 1.0 0.0 +fr 04_res 1 301 2000.0 1.0 0.0 +fr 05_nuclear 1 301 2000.0 1.0 0.0 +fr 06_coal 1 301 2000.0 1.0 0.0 +fr 07_gas 1 301 1200.0 1.0 0.0 +fr 08_non-res 1 301 0.0 0.0 0.0 +fr 09_hydro_pump 1 301 0.0 0.0 0.0 +fr 01_solar 1 302 2000.0 1.0 0.0 +fr 02_wind_on 1 302 2000.0 1.0 0.0 +fr 03_wind_off 1 302 2000.0 1.0 0.0 +fr 04_res 1 302 2000.0 1.0 0.0 +fr 05_nuclear 1 302 2000.0 1.0 0.0 +fr 06_coal 1 302 2000.0 1.0 0.0 +fr 07_gas 1 302 1300.0 1.0 0.0 +fr 08_non-res 1 302 0.0 0.0 0.0 +fr 09_hydro_pump 1 302 0.0 0.0 0.0 +fr 01_solar 1 303 2000.0 1.0 0.0 +fr 02_wind_on 1 303 2000.0 1.0 0.0 +fr 03_wind_off 1 303 2000.0 1.0 0.0 +fr 04_res 1 303 2000.0 1.0 0.0 +fr 05_nuclear 1 303 2000.0 1.0 0.0 +fr 06_coal 1 303 2000.0 1.0 0.0 +fr 07_gas 1 303 1400.0 1.0 0.0 +fr 08_non-res 1 303 0.0 0.0 0.0 +fr 09_hydro_pump 1 303 0.0 0.0 0.0 +fr 01_solar 1 304 2000.0 1.0 0.0 +fr 02_wind_on 1 304 2000.0 1.0 0.0 +fr 03_wind_off 1 304 2000.0 1.0 0.0 +fr 04_res 1 304 2000.0 1.0 0.0 +fr 05_nuclear 1 304 2000.0 1.0 0.0 +fr 06_coal 1 304 2000.0 1.0 0.0 +fr 07_gas 1 304 1500.0 1.0 0.0 +fr 08_non-res 1 304 0.0 0.0 0.0 +fr 09_hydro_pump 1 304 0.0 0.0 0.0 +fr 01_solar 1 305 2000.0 1.0 0.0 +fr 02_wind_on 1 305 2000.0 1.0 0.0 +fr 03_wind_off 1 305 2000.0 1.0 0.0 +fr 04_res 1 305 2000.0 1.0 0.0 +fr 05_nuclear 1 305 2000.0 1.0 0.0 +fr 06_coal 1 305 2000.0 1.0 0.0 +fr 07_gas 1 305 1600.0 1.0 0.0 +fr 08_non-res 1 305 0.0 0.0 0.0 +fr 09_hydro_pump 1 305 0.0 0.0 0.0 +fr 01_solar 1 306 2000.0 1.0 0.0 +fr 02_wind_on 1 306 2000.0 1.0 0.0 +fr 03_wind_off 1 306 2000.0 1.0 0.0 +fr 04_res 1 306 2000.0 1.0 0.0 +fr 05_nuclear 1 306 2000.0 1.0 0.0 +fr 06_coal 1 306 2000.0 1.0 0.0 +fr 07_gas 1 306 1700.0 1.0 0.0 +fr 08_non-res 1 306 0.0 0.0 0.0 +fr 09_hydro_pump 1 306 0.0 0.0 0.0 +fr 01_solar 1 307 2000.0 1.0 0.0 +fr 02_wind_on 1 307 2000.0 1.0 0.0 +fr 03_wind_off 1 307 2000.0 1.0 0.0 +fr 04_res 1 307 2000.0 1.0 0.0 +fr 05_nuclear 1 307 2000.0 1.0 0.0 +fr 06_coal 1 307 2000.0 1.0 0.0 +fr 07_gas 1 307 1800.0 1.0 0.0 +fr 08_non-res 1 307 0.0 0.0 0.0 +fr 09_hydro_pump 1 307 0.0 0.0 0.0 +fr 01_solar 1 308 2000.0 1.0 0.0 +fr 02_wind_on 1 308 2000.0 1.0 0.0 +fr 03_wind_off 1 308 2000.0 1.0 0.0 +fr 04_res 1 308 2000.0 1.0 0.0 +fr 05_nuclear 1 308 2000.0 1.0 0.0 +fr 06_coal 1 308 2000.0 1.0 0.0 +fr 07_gas 1 308 1900.0 1.0 0.0 +fr 08_non-res 1 308 0.0 0.0 0.0 +fr 09_hydro_pump 1 308 0.0 0.0 0.0 +fr 01_solar 1 309 2000.0 1.0 0.0 +fr 02_wind_on 1 309 2000.0 1.0 0.0 +fr 03_wind_off 1 309 2000.0 1.0 0.0 +fr 04_res 1 309 2000.0 1.0 0.0 +fr 05_nuclear 1 309 2000.0 1.0 0.0 +fr 06_coal 1 309 2000.0 1.0 0.0 +fr 07_gas 1 309 2000.0 1.0 0.0 +fr 08_non-res 1 309 0.0 0.0 0.0 +fr 09_hydro_pump 1 309 0.0 0.0 0.0 +fr 01_solar 1 310 2000.0 1.0 0.0 +fr 02_wind_on 1 310 2000.0 1.0 0.0 +fr 03_wind_off 1 310 2000.0 1.0 0.0 +fr 04_res 1 310 2000.0 1.0 0.0 +fr 05_nuclear 1 310 2000.0 1.0 0.0 +fr 06_coal 1 310 2000.0 1.0 0.0 +fr 07_gas 1 310 2000.0 1.0 0.0 +fr 08_non-res 1 310 100.0 1.0 0.0 +fr 09_hydro_pump 1 310 0.0 0.0 0.0 +fr 01_solar 1 311 2000.0 1.0 0.0 +fr 02_wind_on 1 311 2000.0 1.0 0.0 +fr 03_wind_off 1 311 2000.0 1.0 0.0 +fr 04_res 1 311 2000.0 1.0 0.0 +fr 05_nuclear 1 311 2000.0 1.0 0.0 +fr 06_coal 1 311 2000.0 1.0 0.0 +fr 07_gas 1 311 2000.0 1.0 0.0 +fr 08_non-res 1 311 200.0 1.0 0.0 +fr 09_hydro_pump 1 311 0.0 0.0 0.0 +fr 01_solar 1 312 2000.0 1.0 0.0 +fr 02_wind_on 1 312 2000.0 1.0 0.0 +fr 03_wind_off 1 312 2000.0 1.0 0.0 +fr 04_res 1 312 2000.0 1.0 0.0 +fr 05_nuclear 1 312 2000.0 1.0 0.0 +fr 06_coal 1 312 2000.0 1.0 0.0 +fr 07_gas 1 312 2000.0 1.0 0.0 +fr 08_non-res 1 312 300.0 1.0 0.0 +fr 09_hydro_pump 1 312 0.0 0.0 0.0 +fr 01_solar 1 313 2000.0 1.0 0.0 +fr 02_wind_on 1 313 2000.0 1.0 0.0 +fr 03_wind_off 1 313 2000.0 1.0 0.0 +fr 04_res 1 313 2000.0 1.0 0.0 +fr 05_nuclear 1 313 2000.0 1.0 0.0 +fr 06_coal 1 313 2000.0 1.0 0.0 +fr 07_gas 1 313 2000.0 1.0 0.0 +fr 08_non-res 1 313 400.0 1.0 0.0 +fr 09_hydro_pump 1 313 0.0 0.0 0.0 +fr 01_solar 1 314 2000.0 1.0 0.0 +fr 02_wind_on 1 314 2000.0 1.0 0.0 +fr 03_wind_off 1 314 2000.0 1.0 0.0 +fr 04_res 1 314 2000.0 1.0 0.0 +fr 05_nuclear 1 314 2000.0 1.0 0.0 +fr 06_coal 1 314 2000.0 1.0 0.0 +fr 07_gas 1 314 2000.0 1.0 0.0 +fr 08_non-res 1 314 500.0 1.0 0.0 +fr 09_hydro_pump 1 314 0.0 0.0 0.0 +fr 01_solar 1 315 2000.0 1.0 0.0 +fr 02_wind_on 1 315 2000.0 1.0 0.0 +fr 03_wind_off 1 315 2000.0 1.0 0.0 +fr 04_res 1 315 2000.0 1.0 0.0 +fr 05_nuclear 1 315 2000.0 1.0 0.0 +fr 06_coal 1 315 2000.0 1.0 0.0 +fr 07_gas 1 315 2000.0 1.0 0.0 +fr 08_non-res 1 315 600.0 1.0 0.0 +fr 09_hydro_pump 1 315 0.0 0.0 0.0 +fr 01_solar 1 316 2000.0 1.0 0.0 +fr 02_wind_on 1 316 2000.0 1.0 0.0 +fr 03_wind_off 1 316 2000.0 1.0 0.0 +fr 04_res 1 316 2000.0 1.0 0.0 +fr 05_nuclear 1 316 2000.0 1.0 0.0 +fr 06_coal 1 316 2000.0 1.0 0.0 +fr 07_gas 1 316 2000.0 1.0 0.0 +fr 08_non-res 1 316 700.0 1.0 0.0 +fr 09_hydro_pump 1 316 0.0 0.0 0.0 +fr 01_solar 1 317 2000.0 1.0 0.0 +fr 02_wind_on 1 317 2000.0 1.0 0.0 +fr 03_wind_off 1 317 2000.0 1.0 0.0 +fr 04_res 1 317 2000.0 1.0 0.0 +fr 05_nuclear 1 317 2000.0 1.0 0.0 +fr 06_coal 1 317 2000.0 1.0 0.0 +fr 07_gas 1 317 2000.0 1.0 0.0 +fr 08_non-res 1 317 800.0 1.0 0.0 +fr 09_hydro_pump 1 317 0.0 0.0 0.0 +fr 01_solar 1 318 2000.0 1.0 0.0 +fr 02_wind_on 1 318 2000.0 1.0 0.0 +fr 03_wind_off 1 318 2000.0 1.0 0.0 +fr 04_res 1 318 2000.0 1.0 0.0 +fr 05_nuclear 1 318 2000.0 1.0 0.0 +fr 06_coal 1 318 2000.0 1.0 0.0 +fr 07_gas 1 318 2000.0 1.0 0.0 +fr 08_non-res 1 318 900.0 1.0 0.0 +fr 09_hydro_pump 1 318 0.0 0.0 0.0 +fr 01_solar 1 319 2000.0 1.0 0.0 +fr 02_wind_on 1 319 2000.0 1.0 0.0 +fr 03_wind_off 1 319 2000.0 1.0 0.0 +fr 04_res 1 319 2000.0 1.0 0.0 +fr 05_nuclear 1 319 2000.0 1.0 0.0 +fr 06_coal 1 319 2000.0 1.0 0.0 +fr 07_gas 1 319 2000.0 1.0 0.0 +fr 08_non-res 1 319 1000.0 1.0 0.0 +fr 09_hydro_pump 1 319 0.0 0.0 0.0 +fr 01_solar 1 320 2000.0 1.0 0.0 +fr 02_wind_on 1 320 2000.0 1.0 0.0 +fr 03_wind_off 1 320 2000.0 1.0 0.0 +fr 04_res 1 320 2000.0 1.0 0.0 +fr 05_nuclear 1 320 2000.0 1.0 0.0 +fr 06_coal 1 320 2000.0 1.0 0.0 +fr 07_gas 1 320 2000.0 1.0 0.0 +fr 08_non-res 1 320 1100.0 1.0 0.0 +fr 09_hydro_pump 1 320 0.0 0.0 0.0 +fr 01_solar 1 321 2000.0 1.0 0.0 +fr 02_wind_on 1 321 2000.0 1.0 0.0 +fr 03_wind_off 1 321 2000.0 1.0 0.0 +fr 04_res 1 321 2000.0 1.0 0.0 +fr 05_nuclear 1 321 2000.0 1.0 0.0 +fr 06_coal 1 321 2000.0 1.0 0.0 +fr 07_gas 1 321 2000.0 1.0 0.0 +fr 08_non-res 1 321 1200.0 1.0 0.0 +fr 09_hydro_pump 1 321 0.0 0.0 0.0 +fr 01_solar 1 322 2000.0 1.0 0.0 +fr 02_wind_on 1 322 2000.0 1.0 0.0 +fr 03_wind_off 1 322 2000.0 1.0 0.0 +fr 04_res 1 322 2000.0 1.0 0.0 +fr 05_nuclear 1 322 2000.0 1.0 0.0 +fr 06_coal 1 322 2000.0 1.0 0.0 +fr 07_gas 1 322 2000.0 1.0 0.0 +fr 08_non-res 1 322 1300.0 1.0 0.0 +fr 09_hydro_pump 1 322 0.0 0.0 0.0 +fr 01_solar 1 323 2000.0 1.0 0.0 +fr 02_wind_on 1 323 2000.0 1.0 0.0 +fr 03_wind_off 1 323 2000.0 1.0 0.0 +fr 04_res 1 323 2000.0 1.0 0.0 +fr 05_nuclear 1 323 2000.0 1.0 0.0 +fr 06_coal 1 323 2000.0 1.0 0.0 +fr 07_gas 1 323 2000.0 1.0 0.0 +fr 08_non-res 1 323 1400.0 1.0 0.0 +fr 09_hydro_pump 1 323 0.0 0.0 0.0 +fr 01_solar 1 324 2000.0 1.0 0.0 +fr 02_wind_on 1 324 2000.0 1.0 0.0 +fr 03_wind_off 1 324 2000.0 1.0 0.0 +fr 04_res 1 324 2000.0 1.0 0.0 +fr 05_nuclear 1 324 2000.0 1.0 0.0 +fr 06_coal 1 324 2000.0 1.0 0.0 +fr 07_gas 1 324 2000.0 1.0 0.0 +fr 08_non-res 1 324 1500.0 1.0 0.0 +fr 09_hydro_pump 1 324 0.0 0.0 0.0 +fr 01_solar 1 325 2000.0 1.0 0.0 +fr 02_wind_on 1 325 2000.0 1.0 0.0 +fr 03_wind_off 1 325 2000.0 1.0 0.0 +fr 04_res 1 325 2000.0 1.0 0.0 +fr 05_nuclear 1 325 2000.0 1.0 0.0 +fr 06_coal 1 325 2000.0 1.0 0.0 +fr 07_gas 1 325 2000.0 1.0 0.0 +fr 08_non-res 1 325 1600.0 1.0 0.0 +fr 09_hydro_pump 1 325 0.0 0.0 0.0 +fr 01_solar 1 326 2000.0 1.0 0.0 +fr 02_wind_on 1 326 2000.0 1.0 0.0 +fr 03_wind_off 1 326 2000.0 1.0 0.0 +fr 04_res 1 326 2000.0 1.0 0.0 +fr 05_nuclear 1 326 2000.0 1.0 0.0 +fr 06_coal 1 326 2000.0 1.0 0.0 +fr 07_gas 1 326 2000.0 1.0 0.0 +fr 08_non-res 1 326 1700.0 1.0 0.0 +fr 09_hydro_pump 1 326 0.0 0.0 0.0 +fr 01_solar 1 327 2000.0 1.0 0.0 +fr 02_wind_on 1 327 2000.0 1.0 0.0 +fr 03_wind_off 1 327 2000.0 1.0 0.0 +fr 04_res 1 327 2000.0 1.0 0.0 +fr 05_nuclear 1 327 2000.0 1.0 0.0 +fr 06_coal 1 327 2000.0 1.0 0.0 +fr 07_gas 1 327 2000.0 1.0 0.0 +fr 08_non-res 1 327 1800.0 1.0 0.0 +fr 09_hydro_pump 1 327 0.0 0.0 0.0 +fr 01_solar 1 328 2000.0 1.0 0.0 +fr 02_wind_on 1 328 2000.0 1.0 0.0 +fr 03_wind_off 1 328 2000.0 1.0 0.0 +fr 04_res 1 328 2000.0 1.0 0.0 +fr 05_nuclear 1 328 2000.0 1.0 0.0 +fr 06_coal 1 328 2000.0 1.0 0.0 +fr 07_gas 1 328 2000.0 1.0 0.0 +fr 08_non-res 1 328 1900.0 1.0 0.0 +fr 09_hydro_pump 1 328 0.0 0.0 0.0 +fr 01_solar 1 329 2000.0 1.0 0.0 +fr 02_wind_on 1 329 2000.0 1.0 0.0 +fr 03_wind_off 1 329 2000.0 1.0 0.0 +fr 04_res 1 329 2000.0 1.0 0.0 +fr 05_nuclear 1 329 2000.0 1.0 0.0 +fr 06_coal 1 329 2000.0 1.0 0.0 +fr 07_gas 1 329 2000.0 1.0 0.0 +fr 08_non-res 1 329 2000.0 1.0 0.0 +fr 09_hydro_pump 1 329 0.0 0.0 0.0 +fr 01_solar 1 330 2000.0 1.0 0.0 +fr 02_wind_on 1 330 2000.0 1.0 0.0 +fr 03_wind_off 1 330 2000.0 1.0 0.0 +fr 04_res 1 330 2000.0 1.0 0.0 +fr 05_nuclear 1 330 2000.0 1.0 0.0 +fr 06_coal 1 330 2000.0 1.0 0.0 +fr 07_gas 1 330 2000.0 1.0 0.0 +fr 08_non-res 1 330 2000.0 1.0 0.0 +fr 09_hydro_pump 1 330 100.0 1.0 0.0 +fr 01_solar 1 331 2000.0 1.0 0.0 +fr 02_wind_on 1 331 2000.0 1.0 0.0 +fr 03_wind_off 1 331 2000.0 1.0 0.0 +fr 04_res 1 331 2000.0 1.0 0.0 +fr 05_nuclear 1 331 2000.0 1.0 0.0 +fr 06_coal 1 331 2000.0 1.0 0.0 +fr 07_gas 1 331 2000.0 1.0 0.0 +fr 08_non-res 1 331 2000.0 1.0 0.0 +fr 09_hydro_pump 1 331 200.0 1.0 0.0 +fr 01_solar 1 332 2000.0 1.0 0.0 +fr 02_wind_on 1 332 2000.0 1.0 0.0 +fr 03_wind_off 1 332 2000.0 1.0 0.0 +fr 04_res 1 332 2000.0 1.0 0.0 +fr 05_nuclear 1 332 2000.0 1.0 0.0 +fr 06_coal 1 332 2000.0 1.0 0.0 +fr 07_gas 1 332 2000.0 1.0 0.0 +fr 08_non-res 1 332 2000.0 1.0 0.0 +fr 09_hydro_pump 1 332 300.0 1.0 0.0 +fr 01_solar 1 333 2000.0 1.0 0.0 +fr 02_wind_on 1 333 2000.0 1.0 0.0 +fr 03_wind_off 1 333 2000.0 1.0 0.0 +fr 04_res 1 333 2000.0 1.0 0.0 +fr 05_nuclear 1 333 2000.0 1.0 0.0 +fr 06_coal 1 333 2000.0 1.0 0.0 +fr 07_gas 1 333 2000.0 1.0 0.0 +fr 08_non-res 1 333 2000.0 1.0 0.0 +fr 09_hydro_pump 1 333 400.0 1.0 0.0 +fr 01_solar 1 334 2000.0 1.0 0.0 +fr 02_wind_on 1 334 2000.0 1.0 0.0 +fr 03_wind_off 1 334 2000.0 1.0 0.0 +fr 04_res 1 334 2000.0 1.0 0.0 +fr 05_nuclear 1 334 2000.0 1.0 0.0 +fr 06_coal 1 334 2000.0 1.0 0.0 +fr 07_gas 1 334 2000.0 1.0 0.0 +fr 08_non-res 1 334 2000.0 1.0 0.0 +fr 09_hydro_pump 1 334 500.0 1.0 0.0 +fr 01_solar 1 335 2000.0 1.0 0.0 +fr 02_wind_on 1 335 2000.0 1.0 0.0 +fr 03_wind_off 1 335 2000.0 1.0 0.0 +fr 04_res 1 335 2000.0 1.0 0.0 +fr 05_nuclear 1 335 2000.0 1.0 0.0 +fr 06_coal 1 335 2000.0 1.0 0.0 +fr 07_gas 1 335 2000.0 1.0 0.0 +fr 08_non-res 1 335 2000.0 1.0 0.0 +fr 09_hydro_pump 1 335 600.0 1.0 0.0 +fr 01_solar 1 336 2000.0 1.0 0.0 +fr 02_wind_on 1 336 2000.0 1.0 0.0 +fr 03_wind_off 1 336 2000.0 1.0 0.0 +fr 04_res 1 336 2000.0 1.0 0.0 +fr 05_nuclear 1 336 2000.0 1.0 0.0 +fr 06_coal 1 336 2000.0 1.0 0.0 +fr 07_gas 1 336 2000.0 1.0 0.0 +fr 08_non-res 1 336 2000.0 1.0 0.0 +fr 09_hydro_pump 1 336 700.0 1.0 0.0 +it 01_solar 1 1 0.0 0.0 0.0 +it 02_wind_on 1 1 0.0 0.0 0.0 +it 03_wind_off 1 1 0.0 0.0 0.0 +it 04_res 1 1 0.0 0.0 0.0 +it 05_nuclear 1 1 0.0 0.0 0.0 +it 06_coal 1 1 0.0 0.0 0.0 +it 07_gas 1 1 0.0 0.0 0.0 +it 08_non-res 1 1 0.0 0.0 0.0 +it 09_hydro_pump 1 1 0.0 0.0 0.0 +it 01_solar 1 2 100.0 1.0 0.0 +it 02_wind_on 1 2 0.0 0.0 0.0 +it 03_wind_off 1 2 0.0 0.0 0.0 +it 04_res 1 2 0.0 0.0 0.0 +it 05_nuclear 1 2 0.0 0.0 0.0 +it 06_coal 1 2 0.0 0.0 0.0 +it 07_gas 1 2 0.0 0.0 0.0 +it 08_non-res 1 2 0.0 0.0 0.0 +it 09_hydro_pump 1 2 0.0 0.0 0.0 +it 01_solar 1 3 200.0 1.0 0.0 +it 02_wind_on 1 3 0.0 0.0 0.0 +it 03_wind_off 1 3 0.0 0.0 0.0 +it 04_res 1 3 0.0 0.0 0.0 +it 05_nuclear 1 3 0.0 0.0 0.0 +it 06_coal 1 3 0.0 0.0 0.0 +it 07_gas 1 3 0.0 0.0 0.0 +it 08_non-res 1 3 0.0 0.0 0.0 +it 09_hydro_pump 1 3 0.0 0.0 0.0 +it 01_solar 1 4 300.0 1.0 0.0 +it 02_wind_on 1 4 0.0 0.0 0.0 +it 03_wind_off 1 4 0.0 0.0 0.0 +it 04_res 1 4 0.0 0.0 0.0 +it 05_nuclear 1 4 0.0 0.0 0.0 +it 06_coal 1 4 0.0 0.0 0.0 +it 07_gas 1 4 0.0 0.0 0.0 +it 08_non-res 1 4 0.0 0.0 0.0 +it 09_hydro_pump 1 4 0.0 0.0 0.0 +it 01_solar 1 5 400.0 1.0 0.0 +it 02_wind_on 1 5 0.0 0.0 0.0 +it 03_wind_off 1 5 0.0 0.0 0.0 +it 04_res 1 5 0.0 0.0 0.0 +it 05_nuclear 1 5 0.0 0.0 0.0 +it 06_coal 1 5 0.0 0.0 0.0 +it 07_gas 1 5 0.0 0.0 0.0 +it 08_non-res 1 5 0.0 0.0 0.0 +it 09_hydro_pump 1 5 0.0 0.0 0.0 +it 01_solar 1 6 500.0 1.0 0.0 +it 02_wind_on 1 6 0.0 0.0 0.0 +it 03_wind_off 1 6 0.0 0.0 0.0 +it 04_res 1 6 0.0 0.0 0.0 +it 05_nuclear 1 6 0.0 0.0 0.0 +it 06_coal 1 6 0.0 0.0 0.0 +it 07_gas 1 6 0.0 0.0 0.0 +it 08_non-res 1 6 0.0 0.0 0.0 +it 09_hydro_pump 1 6 0.0 0.0 0.0 +it 01_solar 1 7 600.0 1.0 0.0 +it 02_wind_on 1 7 0.0 0.0 0.0 +it 03_wind_off 1 7 0.0 0.0 0.0 +it 04_res 1 7 0.0 0.0 0.0 +it 05_nuclear 1 7 0.0 0.0 0.0 +it 06_coal 1 7 0.0 0.0 0.0 +it 07_gas 1 7 0.0 0.0 0.0 +it 08_non-res 1 7 0.0 0.0 0.0 +it 09_hydro_pump 1 7 0.0 0.0 0.0 +it 01_solar 1 8 700.0 1.0 0.0 +it 02_wind_on 1 8 0.0 0.0 0.0 +it 03_wind_off 1 8 0.0 0.0 0.0 +it 04_res 1 8 0.0 0.0 0.0 +it 05_nuclear 1 8 0.0 0.0 0.0 +it 06_coal 1 8 0.0 0.0 0.0 +it 07_gas 1 8 0.0 0.0 0.0 +it 08_non-res 1 8 0.0 0.0 0.0 +it 09_hydro_pump 1 8 0.0 0.0 0.0 +it 01_solar 1 9 800.0 1.0 0.0 +it 02_wind_on 1 9 0.0 0.0 0.0 +it 03_wind_off 1 9 0.0 0.0 0.0 +it 04_res 1 9 0.0 0.0 0.0 +it 05_nuclear 1 9 0.0 0.0 0.0 +it 06_coal 1 9 0.0 0.0 0.0 +it 07_gas 1 9 0.0 0.0 0.0 +it 08_non-res 1 9 0.0 0.0 0.0 +it 09_hydro_pump 1 9 0.0 0.0 0.0 +it 01_solar 1 10 900.0 1.0 0.0 +it 02_wind_on 1 10 0.0 0.0 0.0 +it 03_wind_off 1 10 0.0 0.0 0.0 +it 04_res 1 10 0.0 0.0 0.0 +it 05_nuclear 1 10 0.0 0.0 0.0 +it 06_coal 1 10 0.0 0.0 0.0 +it 07_gas 1 10 0.0 0.0 0.0 +it 08_non-res 1 10 0.0 0.0 0.0 +it 09_hydro_pump 1 10 0.0 0.0 0.0 +it 01_solar 1 11 1000.0 1.0 0.0 +it 02_wind_on 1 11 0.0 0.0 0.0 +it 03_wind_off 1 11 0.0 0.0 0.0 +it 04_res 1 11 0.0 0.0 0.0 +it 05_nuclear 1 11 0.0 0.0 0.0 +it 06_coal 1 11 0.0 0.0 0.0 +it 07_gas 1 11 0.0 0.0 0.0 +it 08_non-res 1 11 0.0 0.0 0.0 +it 09_hydro_pump 1 11 0.0 0.0 0.0 +it 01_solar 1 12 1100.0 1.0 0.0 +it 02_wind_on 1 12 0.0 0.0 0.0 +it 03_wind_off 1 12 0.0 0.0 0.0 +it 04_res 1 12 0.0 0.0 0.0 +it 05_nuclear 1 12 0.0 0.0 0.0 +it 06_coal 1 12 0.0 0.0 0.0 +it 07_gas 1 12 0.0 0.0 0.0 +it 08_non-res 1 12 0.0 0.0 0.0 +it 09_hydro_pump 1 12 0.0 0.0 0.0 +it 01_solar 1 13 1200.0 1.0 0.0 +it 02_wind_on 1 13 0.0 0.0 0.0 +it 03_wind_off 1 13 0.0 0.0 0.0 +it 04_res 1 13 0.0 0.0 0.0 +it 05_nuclear 1 13 0.0 0.0 0.0 +it 06_coal 1 13 0.0 0.0 0.0 +it 07_gas 1 13 0.0 0.0 0.0 +it 08_non-res 1 13 0.0 0.0 0.0 +it 09_hydro_pump 1 13 0.0 0.0 0.0 +it 01_solar 1 14 1300.0 1.0 0.0 +it 02_wind_on 1 14 0.0 0.0 0.0 +it 03_wind_off 1 14 0.0 0.0 0.0 +it 04_res 1 14 0.0 0.0 0.0 +it 05_nuclear 1 14 0.0 0.0 0.0 +it 06_coal 1 14 0.0 0.0 0.0 +it 07_gas 1 14 0.0 0.0 0.0 +it 08_non-res 1 14 0.0 0.0 0.0 +it 09_hydro_pump 1 14 0.0 0.0 0.0 +it 01_solar 1 15 1400.0 1.0 0.0 +it 02_wind_on 1 15 0.0 0.0 0.0 +it 03_wind_off 1 15 0.0 0.0 0.0 +it 04_res 1 15 0.0 0.0 0.0 +it 05_nuclear 1 15 0.0 0.0 0.0 +it 06_coal 1 15 0.0 0.0 0.0 +it 07_gas 1 15 0.0 0.0 0.0 +it 08_non-res 1 15 0.0 0.0 0.0 +it 09_hydro_pump 1 15 0.0 0.0 0.0 +it 01_solar 1 16 1500.0 1.0 0.0 +it 02_wind_on 1 16 0.0 0.0 0.0 +it 03_wind_off 1 16 0.0 0.0 0.0 +it 04_res 1 16 0.0 0.0 0.0 +it 05_nuclear 1 16 0.0 0.0 0.0 +it 06_coal 1 16 0.0 0.0 0.0 +it 07_gas 1 16 0.0 0.0 0.0 +it 08_non-res 1 16 0.0 0.0 0.0 +it 09_hydro_pump 1 16 0.0 0.0 0.0 +it 01_solar 1 17 1600.0 1.0 0.0 +it 02_wind_on 1 17 0.0 0.0 0.0 +it 03_wind_off 1 17 0.0 0.0 0.0 +it 04_res 1 17 0.0 0.0 0.0 +it 05_nuclear 1 17 0.0 0.0 0.0 +it 06_coal 1 17 0.0 0.0 0.0 +it 07_gas 1 17 0.0 0.0 0.0 +it 08_non-res 1 17 0.0 0.0 0.0 +it 09_hydro_pump 1 17 0.0 0.0 0.0 +it 01_solar 1 18 1700.0 1.0 0.0 +it 02_wind_on 1 18 0.0 0.0 0.0 +it 03_wind_off 1 18 0.0 0.0 0.0 +it 04_res 1 18 0.0 0.0 0.0 +it 05_nuclear 1 18 0.0 0.0 0.0 +it 06_coal 1 18 0.0 0.0 0.0 +it 07_gas 1 18 0.0 0.0 0.0 +it 08_non-res 1 18 0.0 0.0 0.0 +it 09_hydro_pump 1 18 0.0 0.0 0.0 +it 01_solar 1 19 1800.0 1.0 0.0 +it 02_wind_on 1 19 0.0 0.0 0.0 +it 03_wind_off 1 19 0.0 0.0 0.0 +it 04_res 1 19 0.0 0.0 0.0 +it 05_nuclear 1 19 0.0 0.0 0.0 +it 06_coal 1 19 0.0 0.0 0.0 +it 07_gas 1 19 0.0 0.0 0.0 +it 08_non-res 1 19 0.0 0.0 0.0 +it 09_hydro_pump 1 19 0.0 0.0 0.0 +it 01_solar 1 20 1900.0 1.0 0.0 +it 02_wind_on 1 20 0.0 0.0 0.0 +it 03_wind_off 1 20 0.0 0.0 0.0 +it 04_res 1 20 0.0 0.0 0.0 +it 05_nuclear 1 20 0.0 0.0 0.0 +it 06_coal 1 20 0.0 0.0 0.0 +it 07_gas 1 20 0.0 0.0 0.0 +it 08_non-res 1 20 0.0 0.0 0.0 +it 09_hydro_pump 1 20 0.0 0.0 0.0 +it 01_solar 1 21 2000.0 1.0 0.0 +it 02_wind_on 1 21 0.0 0.0 0.0 +it 03_wind_off 1 21 0.0 0.0 0.0 +it 04_res 1 21 0.0 0.0 0.0 +it 05_nuclear 1 21 0.0 0.0 0.0 +it 06_coal 1 21 0.0 0.0 0.0 +it 07_gas 1 21 0.0 0.0 0.0 +it 08_non-res 1 21 0.0 0.0 0.0 +it 09_hydro_pump 1 21 0.0 0.0 0.0 +it 01_solar 1 22 2000.0 1.0 0.0 +it 02_wind_on 1 22 100.0 1.0 0.0 +it 03_wind_off 1 22 0.0 0.0 0.0 +it 04_res 1 22 0.0 0.0 0.0 +it 05_nuclear 1 22 0.0 0.0 0.0 +it 06_coal 1 22 0.0 0.0 0.0 +it 07_gas 1 22 0.0 0.0 0.0 +it 08_non-res 1 22 0.0 0.0 0.0 +it 09_hydro_pump 1 22 0.0 0.0 0.0 +it 01_solar 1 23 2000.0 1.0 0.0 +it 02_wind_on 1 23 200.0 1.0 0.0 +it 03_wind_off 1 23 0.0 0.0 0.0 +it 04_res 1 23 0.0 0.0 0.0 +it 05_nuclear 1 23 0.0 0.0 0.0 +it 06_coal 1 23 0.0 0.0 0.0 +it 07_gas 1 23 0.0 0.0 0.0 +it 08_non-res 1 23 0.0 0.0 0.0 +it 09_hydro_pump 1 23 0.0 0.0 0.0 +it 01_solar 1 24 2000.0 1.0 0.0 +it 02_wind_on 1 24 300.0 1.0 0.0 +it 03_wind_off 1 24 0.0 0.0 0.0 +it 04_res 1 24 0.0 0.0 0.0 +it 05_nuclear 1 24 0.0 0.0 0.0 +it 06_coal 1 24 0.0 0.0 0.0 +it 07_gas 1 24 0.0 0.0 0.0 +it 08_non-res 1 24 0.0 0.0 0.0 +it 09_hydro_pump 1 24 0.0 0.0 0.0 +it 01_solar 1 25 2000.0 1.0 0.0 +it 02_wind_on 1 25 400.0 1.0 0.0 +it 03_wind_off 1 25 0.0 0.0 0.0 +it 04_res 1 25 0.0 0.0 0.0 +it 05_nuclear 1 25 0.0 0.0 0.0 +it 06_coal 1 25 0.0 0.0 0.0 +it 07_gas 1 25 0.0 0.0 0.0 +it 08_non-res 1 25 0.0 0.0 0.0 +it 09_hydro_pump 1 25 0.0 0.0 0.0 +it 01_solar 1 26 2000.0 1.0 0.0 +it 02_wind_on 1 26 500.0 1.0 0.0 +it 03_wind_off 1 26 0.0 0.0 0.0 +it 04_res 1 26 0.0 0.0 0.0 +it 05_nuclear 1 26 0.0 0.0 0.0 +it 06_coal 1 26 0.0 0.0 0.0 +it 07_gas 1 26 0.0 0.0 0.0 +it 08_non-res 1 26 0.0 0.0 0.0 +it 09_hydro_pump 1 26 0.0 0.0 0.0 +it 01_solar 1 27 2000.0 1.0 0.0 +it 02_wind_on 1 27 600.0 1.0 0.0 +it 03_wind_off 1 27 0.0 0.0 0.0 +it 04_res 1 27 0.0 0.0 0.0 +it 05_nuclear 1 27 0.0 0.0 0.0 +it 06_coal 1 27 0.0 0.0 0.0 +it 07_gas 1 27 0.0 0.0 0.0 +it 08_non-res 1 27 0.0 0.0 0.0 +it 09_hydro_pump 1 27 0.0 0.0 0.0 +it 01_solar 1 28 2000.0 1.0 0.0 +it 02_wind_on 1 28 700.0 1.0 0.0 +it 03_wind_off 1 28 0.0 0.0 0.0 +it 04_res 1 28 0.0 0.0 0.0 +it 05_nuclear 1 28 0.0 0.0 0.0 +it 06_coal 1 28 0.0 0.0 0.0 +it 07_gas 1 28 0.0 0.0 0.0 +it 08_non-res 1 28 0.0 0.0 0.0 +it 09_hydro_pump 1 28 0.0 0.0 0.0 +it 01_solar 1 29 2000.0 1.0 0.0 +it 02_wind_on 1 29 800.0 1.0 0.0 +it 03_wind_off 1 29 0.0 0.0 0.0 +it 04_res 1 29 0.0 0.0 0.0 +it 05_nuclear 1 29 0.0 0.0 0.0 +it 06_coal 1 29 0.0 0.0 0.0 +it 07_gas 1 29 0.0 0.0 0.0 +it 08_non-res 1 29 0.0 0.0 0.0 +it 09_hydro_pump 1 29 0.0 0.0 0.0 +it 01_solar 1 30 2000.0 1.0 0.0 +it 02_wind_on 1 30 900.0 1.0 0.0 +it 03_wind_off 1 30 0.0 0.0 0.0 +it 04_res 1 30 0.0 0.0 0.0 +it 05_nuclear 1 30 0.0 0.0 0.0 +it 06_coal 1 30 0.0 0.0 0.0 +it 07_gas 1 30 0.0 0.0 0.0 +it 08_non-res 1 30 0.0 0.0 0.0 +it 09_hydro_pump 1 30 0.0 0.0 0.0 +it 01_solar 1 31 2000.0 1.0 0.0 +it 02_wind_on 1 31 1000.0 1.0 0.0 +it 03_wind_off 1 31 0.0 0.0 0.0 +it 04_res 1 31 0.0 0.0 0.0 +it 05_nuclear 1 31 0.0 0.0 0.0 +it 06_coal 1 31 0.0 0.0 0.0 +it 07_gas 1 31 0.0 0.0 0.0 +it 08_non-res 1 31 0.0 0.0 0.0 +it 09_hydro_pump 1 31 0.0 0.0 0.0 +it 01_solar 1 32 2000.0 1.0 0.0 +it 02_wind_on 1 32 1100.0 1.0 0.0 +it 03_wind_off 1 32 0.0 0.0 0.0 +it 04_res 1 32 0.0 0.0 0.0 +it 05_nuclear 1 32 0.0 0.0 0.0 +it 06_coal 1 32 0.0 0.0 0.0 +it 07_gas 1 32 0.0 0.0 0.0 +it 08_non-res 1 32 0.0 0.0 0.0 +it 09_hydro_pump 1 32 0.0 0.0 0.0 +it 01_solar 1 33 2000.0 1.0 0.0 +it 02_wind_on 1 33 1200.0 1.0 0.0 +it 03_wind_off 1 33 0.0 0.0 0.0 +it 04_res 1 33 0.0 0.0 0.0 +it 05_nuclear 1 33 0.0 0.0 0.0 +it 06_coal 1 33 0.0 0.0 0.0 +it 07_gas 1 33 0.0 0.0 0.0 +it 08_non-res 1 33 0.0 0.0 0.0 +it 09_hydro_pump 1 33 0.0 0.0 0.0 +it 01_solar 1 34 2000.0 1.0 0.0 +it 02_wind_on 1 34 1300.0 1.0 0.0 +it 03_wind_off 1 34 0.0 0.0 0.0 +it 04_res 1 34 0.0 0.0 0.0 +it 05_nuclear 1 34 0.0 0.0 0.0 +it 06_coal 1 34 0.0 0.0 0.0 +it 07_gas 1 34 0.0 0.0 0.0 +it 08_non-res 1 34 0.0 0.0 0.0 +it 09_hydro_pump 1 34 0.0 0.0 0.0 +it 01_solar 1 35 2000.0 1.0 0.0 +it 02_wind_on 1 35 1400.0 1.0 0.0 +it 03_wind_off 1 35 0.0 0.0 0.0 +it 04_res 1 35 0.0 0.0 0.0 +it 05_nuclear 1 35 0.0 0.0 0.0 +it 06_coal 1 35 0.0 0.0 0.0 +it 07_gas 1 35 0.0 0.0 0.0 +it 08_non-res 1 35 0.0 0.0 0.0 +it 09_hydro_pump 1 35 0.0 0.0 0.0 +it 01_solar 1 36 2000.0 1.0 0.0 +it 02_wind_on 1 36 1500.0 1.0 0.0 +it 03_wind_off 1 36 0.0 0.0 0.0 +it 04_res 1 36 0.0 0.0 0.0 +it 05_nuclear 1 36 0.0 0.0 0.0 +it 06_coal 1 36 0.0 0.0 0.0 +it 07_gas 1 36 0.0 0.0 0.0 +it 08_non-res 1 36 0.0 0.0 0.0 +it 09_hydro_pump 1 36 0.0 0.0 0.0 +it 01_solar 1 37 2000.0 1.0 0.0 +it 02_wind_on 1 37 1600.0 1.0 0.0 +it 03_wind_off 1 37 0.0 0.0 0.0 +it 04_res 1 37 0.0 0.0 0.0 +it 05_nuclear 1 37 0.0 0.0 0.0 +it 06_coal 1 37 0.0 0.0 0.0 +it 07_gas 1 37 0.0 0.0 0.0 +it 08_non-res 1 37 0.0 0.0 0.0 +it 09_hydro_pump 1 37 0.0 0.0 0.0 +it 01_solar 1 38 2000.0 1.0 0.0 +it 02_wind_on 1 38 1700.0 1.0 0.0 +it 03_wind_off 1 38 0.0 0.0 0.0 +it 04_res 1 38 0.0 0.0 0.0 +it 05_nuclear 1 38 0.0 0.0 0.0 +it 06_coal 1 38 0.0 0.0 0.0 +it 07_gas 1 38 0.0 0.0 0.0 +it 08_non-res 1 38 0.0 0.0 0.0 +it 09_hydro_pump 1 38 0.0 0.0 0.0 +it 01_solar 1 39 2000.0 1.0 0.0 +it 02_wind_on 1 39 1800.0 1.0 0.0 +it 03_wind_off 1 39 0.0 0.0 0.0 +it 04_res 1 39 0.0 0.0 0.0 +it 05_nuclear 1 39 0.0 0.0 0.0 +it 06_coal 1 39 0.0 0.0 0.0 +it 07_gas 1 39 0.0 0.0 0.0 +it 08_non-res 1 39 0.0 0.0 0.0 +it 09_hydro_pump 1 39 0.0 0.0 0.0 +it 01_solar 1 40 2000.0 1.0 0.0 +it 02_wind_on 1 40 1900.0 1.0 0.0 +it 03_wind_off 1 40 0.0 0.0 0.0 +it 04_res 1 40 0.0 0.0 0.0 +it 05_nuclear 1 40 0.0 0.0 0.0 +it 06_coal 1 40 0.0 0.0 0.0 +it 07_gas 1 40 0.0 0.0 0.0 +it 08_non-res 1 40 0.0 0.0 0.0 +it 09_hydro_pump 1 40 0.0 0.0 0.0 +it 01_solar 1 41 2000.0 1.0 0.0 +it 02_wind_on 1 41 2000.0 1.0 0.0 +it 03_wind_off 1 41 0.0 0.0 0.0 +it 04_res 1 41 0.0 0.0 0.0 +it 05_nuclear 1 41 0.0 0.0 0.0 +it 06_coal 1 41 0.0 0.0 0.0 +it 07_gas 1 41 0.0 0.0 0.0 +it 08_non-res 1 41 0.0 0.0 0.0 +it 09_hydro_pump 1 41 0.0 0.0 0.0 +it 01_solar 1 42 2000.0 1.0 0.0 +it 02_wind_on 1 42 2000.0 1.0 0.0 +it 03_wind_off 1 42 100.0 1.0 0.0 +it 04_res 1 42 0.0 0.0 0.0 +it 05_nuclear 1 42 0.0 0.0 0.0 +it 06_coal 1 42 0.0 0.0 0.0 +it 07_gas 1 42 0.0 0.0 0.0 +it 08_non-res 1 42 0.0 0.0 0.0 +it 09_hydro_pump 1 42 0.0 0.0 0.0 +it 01_solar 1 43 2000.0 1.0 0.0 +it 02_wind_on 1 43 2000.0 1.0 0.0 +it 03_wind_off 1 43 200.0 1.0 0.0 +it 04_res 1 43 0.0 0.0 0.0 +it 05_nuclear 1 43 0.0 0.0 0.0 +it 06_coal 1 43 0.0 0.0 0.0 +it 07_gas 1 43 0.0 0.0 0.0 +it 08_non-res 1 43 0.0 0.0 0.0 +it 09_hydro_pump 1 43 0.0 0.0 0.0 +it 01_solar 1 44 2000.0 1.0 0.0 +it 02_wind_on 1 44 2000.0 1.0 0.0 +it 03_wind_off 1 44 300.0 1.0 0.0 +it 04_res 1 44 0.0 0.0 0.0 +it 05_nuclear 1 44 0.0 0.0 0.0 +it 06_coal 1 44 0.0 0.0 0.0 +it 07_gas 1 44 0.0 0.0 0.0 +it 08_non-res 1 44 0.0 0.0 0.0 +it 09_hydro_pump 1 44 0.0 0.0 0.0 +it 01_solar 1 45 2000.0 1.0 0.0 +it 02_wind_on 1 45 2000.0 1.0 0.0 +it 03_wind_off 1 45 400.0 1.0 0.0 +it 04_res 1 45 0.0 0.0 0.0 +it 05_nuclear 1 45 0.0 0.0 0.0 +it 06_coal 1 45 0.0 0.0 0.0 +it 07_gas 1 45 0.0 0.0 0.0 +it 08_non-res 1 45 0.0 0.0 0.0 +it 09_hydro_pump 1 45 0.0 0.0 0.0 +it 01_solar 1 46 2000.0 1.0 0.0 +it 02_wind_on 1 46 2000.0 1.0 0.0 +it 03_wind_off 1 46 500.0 1.0 0.0 +it 04_res 1 46 0.0 0.0 0.0 +it 05_nuclear 1 46 0.0 0.0 0.0 +it 06_coal 1 46 0.0 0.0 0.0 +it 07_gas 1 46 0.0 0.0 0.0 +it 08_non-res 1 46 0.0 0.0 0.0 +it 09_hydro_pump 1 46 0.0 0.0 0.0 +it 01_solar 1 47 2000.0 1.0 0.0 +it 02_wind_on 1 47 2000.0 1.0 0.0 +it 03_wind_off 1 47 600.0 1.0 0.0 +it 04_res 1 47 0.0 0.0 0.0 +it 05_nuclear 1 47 0.0 0.0 0.0 +it 06_coal 1 47 0.0 0.0 0.0 +it 07_gas 1 47 0.0 0.0 0.0 +it 08_non-res 1 47 0.0 0.0 0.0 +it 09_hydro_pump 1 47 0.0 0.0 0.0 +it 01_solar 1 48 2000.0 1.0 0.0 +it 02_wind_on 1 48 2000.0 1.0 0.0 +it 03_wind_off 1 48 700.0 1.0 0.0 +it 04_res 1 48 0.0 0.0 0.0 +it 05_nuclear 1 48 0.0 0.0 0.0 +it 06_coal 1 48 0.0 0.0 0.0 +it 07_gas 1 48 0.0 0.0 0.0 +it 08_non-res 1 48 0.0 0.0 0.0 +it 09_hydro_pump 1 48 0.0 0.0 0.0 +it 01_solar 1 49 2000.0 1.0 0.0 +it 02_wind_on 1 49 2000.0 1.0 0.0 +it 03_wind_off 1 49 800.0 1.0 0.0 +it 04_res 1 49 0.0 0.0 0.0 +it 05_nuclear 1 49 0.0 0.0 0.0 +it 06_coal 1 49 0.0 0.0 0.0 +it 07_gas 1 49 0.0 0.0 0.0 +it 08_non-res 1 49 0.0 0.0 0.0 +it 09_hydro_pump 1 49 0.0 0.0 0.0 +it 01_solar 1 50 2000.0 1.0 0.0 +it 02_wind_on 1 50 2000.0 1.0 0.0 +it 03_wind_off 1 50 900.0 1.0 0.0 +it 04_res 1 50 0.0 0.0 0.0 +it 05_nuclear 1 50 0.0 0.0 0.0 +it 06_coal 1 50 0.0 0.0 0.0 +it 07_gas 1 50 0.0 0.0 0.0 +it 08_non-res 1 50 0.0 0.0 0.0 +it 09_hydro_pump 1 50 0.0 0.0 0.0 +it 01_solar 1 51 2000.0 1.0 0.0 +it 02_wind_on 1 51 2000.0 1.0 0.0 +it 03_wind_off 1 51 1000.0 1.0 0.0 +it 04_res 1 51 0.0 0.0 0.0 +it 05_nuclear 1 51 0.0 0.0 0.0 +it 06_coal 1 51 0.0 0.0 0.0 +it 07_gas 1 51 0.0 0.0 0.0 +it 08_non-res 1 51 0.0 0.0 0.0 +it 09_hydro_pump 1 51 0.0 0.0 0.0 +it 01_solar 1 52 2000.0 1.0 0.0 +it 02_wind_on 1 52 2000.0 1.0 0.0 +it 03_wind_off 1 52 1100.0 1.0 0.0 +it 04_res 1 52 0.0 0.0 0.0 +it 05_nuclear 1 52 0.0 0.0 0.0 +it 06_coal 1 52 0.0 0.0 0.0 +it 07_gas 1 52 0.0 0.0 0.0 +it 08_non-res 1 52 0.0 0.0 0.0 +it 09_hydro_pump 1 52 0.0 0.0 0.0 +it 01_solar 1 53 2000.0 1.0 0.0 +it 02_wind_on 1 53 2000.0 1.0 0.0 +it 03_wind_off 1 53 1200.0 1.0 0.0 +it 04_res 1 53 0.0 0.0 0.0 +it 05_nuclear 1 53 0.0 0.0 0.0 +it 06_coal 1 53 0.0 0.0 0.0 +it 07_gas 1 53 0.0 0.0 0.0 +it 08_non-res 1 53 0.0 0.0 0.0 +it 09_hydro_pump 1 53 0.0 0.0 0.0 +it 01_solar 1 54 2000.0 1.0 0.0 +it 02_wind_on 1 54 2000.0 1.0 0.0 +it 03_wind_off 1 54 1300.0 1.0 0.0 +it 04_res 1 54 0.0 0.0 0.0 +it 05_nuclear 1 54 0.0 0.0 0.0 +it 06_coal 1 54 0.0 0.0 0.0 +it 07_gas 1 54 0.0 0.0 0.0 +it 08_non-res 1 54 0.0 0.0 0.0 +it 09_hydro_pump 1 54 0.0 0.0 0.0 +it 01_solar 1 55 2000.0 1.0 0.0 +it 02_wind_on 1 55 2000.0 1.0 0.0 +it 03_wind_off 1 55 1400.0 1.0 0.0 +it 04_res 1 55 0.0 0.0 0.0 +it 05_nuclear 1 55 0.0 0.0 0.0 +it 06_coal 1 55 0.0 0.0 0.0 +it 07_gas 1 55 0.0 0.0 0.0 +it 08_non-res 1 55 0.0 0.0 0.0 +it 09_hydro_pump 1 55 0.0 0.0 0.0 +it 01_solar 1 56 2000.0 1.0 0.0 +it 02_wind_on 1 56 2000.0 1.0 0.0 +it 03_wind_off 1 56 1500.0 1.0 0.0 +it 04_res 1 56 0.0 0.0 0.0 +it 05_nuclear 1 56 0.0 0.0 0.0 +it 06_coal 1 56 0.0 0.0 0.0 +it 07_gas 1 56 0.0 0.0 0.0 +it 08_non-res 1 56 0.0 0.0 0.0 +it 09_hydro_pump 1 56 0.0 0.0 0.0 +it 01_solar 1 57 2000.0 1.0 0.0 +it 02_wind_on 1 57 2000.0 1.0 0.0 +it 03_wind_off 1 57 1600.0 1.0 0.0 +it 04_res 1 57 0.0 0.0 0.0 +it 05_nuclear 1 57 0.0 0.0 0.0 +it 06_coal 1 57 0.0 0.0 0.0 +it 07_gas 1 57 0.0 0.0 0.0 +it 08_non-res 1 57 0.0 0.0 0.0 +it 09_hydro_pump 1 57 0.0 0.0 0.0 +it 01_solar 1 58 2000.0 1.0 0.0 +it 02_wind_on 1 58 2000.0 1.0 0.0 +it 03_wind_off 1 58 1700.0 1.0 0.0 +it 04_res 1 58 0.0 0.0 0.0 +it 05_nuclear 1 58 0.0 0.0 0.0 +it 06_coal 1 58 0.0 0.0 0.0 +it 07_gas 1 58 0.0 0.0 0.0 +it 08_non-res 1 58 0.0 0.0 0.0 +it 09_hydro_pump 1 58 0.0 0.0 0.0 +it 01_solar 1 59 2000.0 1.0 0.0 +it 02_wind_on 1 59 2000.0 1.0 0.0 +it 03_wind_off 1 59 1800.0 1.0 0.0 +it 04_res 1 59 0.0 0.0 0.0 +it 05_nuclear 1 59 0.0 0.0 0.0 +it 06_coal 1 59 0.0 0.0 0.0 +it 07_gas 1 59 0.0 0.0 0.0 +it 08_non-res 1 59 0.0 0.0 0.0 +it 09_hydro_pump 1 59 0.0 0.0 0.0 +it 01_solar 1 60 2000.0 1.0 0.0 +it 02_wind_on 1 60 2000.0 1.0 0.0 +it 03_wind_off 1 60 1900.0 1.0 0.0 +it 04_res 1 60 0.0 0.0 0.0 +it 05_nuclear 1 60 0.0 0.0 0.0 +it 06_coal 1 60 0.0 0.0 0.0 +it 07_gas 1 60 0.0 0.0 0.0 +it 08_non-res 1 60 0.0 0.0 0.0 +it 09_hydro_pump 1 60 0.0 0.0 0.0 +it 01_solar 1 61 2000.0 1.0 0.0 +it 02_wind_on 1 61 2000.0 1.0 0.0 +it 03_wind_off 1 61 2000.0 1.0 0.0 +it 04_res 1 61 0.0 0.0 0.0 +it 05_nuclear 1 61 0.0 0.0 0.0 +it 06_coal 1 61 0.0 0.0 0.0 +it 07_gas 1 61 0.0 0.0 0.0 +it 08_non-res 1 61 0.0 0.0 0.0 +it 09_hydro_pump 1 61 0.0 0.0 0.0 +it 01_solar 1 62 2000.0 1.0 0.0 +it 02_wind_on 1 62 2000.0 1.0 0.0 +it 03_wind_off 1 62 2000.0 1.0 0.0 +it 04_res 1 62 100.0 1.0 0.0 +it 05_nuclear 1 62 0.0 0.0 0.0 +it 06_coal 1 62 0.0 0.0 0.0 +it 07_gas 1 62 0.0 0.0 0.0 +it 08_non-res 1 62 0.0 0.0 0.0 +it 09_hydro_pump 1 62 0.0 0.0 0.0 +it 01_solar 1 63 2000.0 1.0 0.0 +it 02_wind_on 1 63 2000.0 1.0 0.0 +it 03_wind_off 1 63 2000.0 1.0 0.0 +it 04_res 1 63 200.0 1.0 0.0 +it 05_nuclear 1 63 0.0 0.0 0.0 +it 06_coal 1 63 0.0 0.0 0.0 +it 07_gas 1 63 0.0 0.0 0.0 +it 08_non-res 1 63 0.0 0.0 0.0 +it 09_hydro_pump 1 63 0.0 0.0 0.0 +it 01_solar 1 64 2000.0 1.0 0.0 +it 02_wind_on 1 64 2000.0 1.0 0.0 +it 03_wind_off 1 64 2000.0 1.0 0.0 +it 04_res 1 64 300.0 1.0 0.0 +it 05_nuclear 1 64 0.0 0.0 0.0 +it 06_coal 1 64 0.0 0.0 0.0 +it 07_gas 1 64 0.0 0.0 0.0 +it 08_non-res 1 64 0.0 0.0 0.0 +it 09_hydro_pump 1 64 0.0 0.0 0.0 +it 01_solar 1 65 2000.0 1.0 0.0 +it 02_wind_on 1 65 2000.0 1.0 0.0 +it 03_wind_off 1 65 2000.0 1.0 0.0 +it 04_res 1 65 400.0 1.0 0.0 +it 05_nuclear 1 65 0.0 0.0 0.0 +it 06_coal 1 65 0.0 0.0 0.0 +it 07_gas 1 65 0.0 0.0 0.0 +it 08_non-res 1 65 0.0 0.0 0.0 +it 09_hydro_pump 1 65 0.0 0.0 0.0 +it 01_solar 1 66 2000.0 1.0 0.0 +it 02_wind_on 1 66 2000.0 1.0 0.0 +it 03_wind_off 1 66 2000.0 1.0 0.0 +it 04_res 1 66 500.0 1.0 0.0 +it 05_nuclear 1 66 0.0 0.0 0.0 +it 06_coal 1 66 0.0 0.0 0.0 +it 07_gas 1 66 0.0 0.0 0.0 +it 08_non-res 1 66 0.0 0.0 0.0 +it 09_hydro_pump 1 66 0.0 0.0 0.0 +it 01_solar 1 67 2000.0 1.0 0.0 +it 02_wind_on 1 67 2000.0 1.0 0.0 +it 03_wind_off 1 67 2000.0 1.0 0.0 +it 04_res 1 67 600.0 1.0 0.0 +it 05_nuclear 1 67 0.0 0.0 0.0 +it 06_coal 1 67 0.0 0.0 0.0 +it 07_gas 1 67 0.0 0.0 0.0 +it 08_non-res 1 67 0.0 0.0 0.0 +it 09_hydro_pump 1 67 0.0 0.0 0.0 +it 01_solar 1 68 2000.0 1.0 0.0 +it 02_wind_on 1 68 2000.0 1.0 0.0 +it 03_wind_off 1 68 2000.0 1.0 0.0 +it 04_res 1 68 700.0 1.0 0.0 +it 05_nuclear 1 68 0.0 0.0 0.0 +it 06_coal 1 68 0.0 0.0 0.0 +it 07_gas 1 68 0.0 0.0 0.0 +it 08_non-res 1 68 0.0 0.0 0.0 +it 09_hydro_pump 1 68 0.0 0.0 0.0 +it 01_solar 1 69 2000.0 1.0 0.0 +it 02_wind_on 1 69 2000.0 1.0 0.0 +it 03_wind_off 1 69 2000.0 1.0 0.0 +it 04_res 1 69 800.0 1.0 0.0 +it 05_nuclear 1 69 0.0 0.0 0.0 +it 06_coal 1 69 0.0 0.0 0.0 +it 07_gas 1 69 0.0 0.0 0.0 +it 08_non-res 1 69 0.0 0.0 0.0 +it 09_hydro_pump 1 69 0.0 0.0 0.0 +it 01_solar 1 70 2000.0 1.0 0.0 +it 02_wind_on 1 70 2000.0 1.0 0.0 +it 03_wind_off 1 70 2000.0 1.0 0.0 +it 04_res 1 70 900.0 1.0 0.0 +it 05_nuclear 1 70 0.0 0.0 0.0 +it 06_coal 1 70 0.0 0.0 0.0 +it 07_gas 1 70 0.0 0.0 0.0 +it 08_non-res 1 70 0.0 0.0 0.0 +it 09_hydro_pump 1 70 0.0 0.0 0.0 +it 01_solar 1 71 2000.0 1.0 0.0 +it 02_wind_on 1 71 2000.0 1.0 0.0 +it 03_wind_off 1 71 2000.0 1.0 0.0 +it 04_res 1 71 1000.0 1.0 0.0 +it 05_nuclear 1 71 0.0 0.0 0.0 +it 06_coal 1 71 0.0 0.0 0.0 +it 07_gas 1 71 0.0 0.0 0.0 +it 08_non-res 1 71 0.0 0.0 0.0 +it 09_hydro_pump 1 71 0.0 0.0 0.0 +it 01_solar 1 72 2000.0 1.0 0.0 +it 02_wind_on 1 72 2000.0 1.0 0.0 +it 03_wind_off 1 72 2000.0 1.0 0.0 +it 04_res 1 72 1100.0 1.0 0.0 +it 05_nuclear 1 72 0.0 0.0 0.0 +it 06_coal 1 72 0.0 0.0 0.0 +it 07_gas 1 72 0.0 0.0 0.0 +it 08_non-res 1 72 0.0 0.0 0.0 +it 09_hydro_pump 1 72 0.0 0.0 0.0 +it 01_solar 1 73 2000.0 1.0 0.0 +it 02_wind_on 1 73 2000.0 1.0 0.0 +it 03_wind_off 1 73 2000.0 1.0 0.0 +it 04_res 1 73 1200.0 1.0 0.0 +it 05_nuclear 1 73 0.0 0.0 0.0 +it 06_coal 1 73 0.0 0.0 0.0 +it 07_gas 1 73 0.0 0.0 0.0 +it 08_non-res 1 73 0.0 0.0 0.0 +it 09_hydro_pump 1 73 0.0 0.0 0.0 +it 01_solar 1 74 2000.0 1.0 0.0 +it 02_wind_on 1 74 2000.0 1.0 0.0 +it 03_wind_off 1 74 2000.0 1.0 0.0 +it 04_res 1 74 1300.0 1.0 0.0 +it 05_nuclear 1 74 0.0 0.0 0.0 +it 06_coal 1 74 0.0 0.0 0.0 +it 07_gas 1 74 0.0 0.0 0.0 +it 08_non-res 1 74 0.0 0.0 0.0 +it 09_hydro_pump 1 74 0.0 0.0 0.0 +it 01_solar 1 75 2000.0 1.0 0.0 +it 02_wind_on 1 75 2000.0 1.0 0.0 +it 03_wind_off 1 75 2000.0 1.0 0.0 +it 04_res 1 75 1400.0 1.0 0.0 +it 05_nuclear 1 75 0.0 0.0 0.0 +it 06_coal 1 75 0.0 0.0 0.0 +it 07_gas 1 75 0.0 0.0 0.0 +it 08_non-res 1 75 0.0 0.0 0.0 +it 09_hydro_pump 1 75 0.0 0.0 0.0 +it 01_solar 1 76 2000.0 1.0 0.0 +it 02_wind_on 1 76 2000.0 1.0 0.0 +it 03_wind_off 1 76 2000.0 1.0 0.0 +it 04_res 1 76 1500.0 1.0 0.0 +it 05_nuclear 1 76 0.0 0.0 0.0 +it 06_coal 1 76 0.0 0.0 0.0 +it 07_gas 1 76 0.0 0.0 0.0 +it 08_non-res 1 76 0.0 0.0 0.0 +it 09_hydro_pump 1 76 0.0 0.0 0.0 +it 01_solar 1 77 2000.0 1.0 0.0 +it 02_wind_on 1 77 2000.0 1.0 0.0 +it 03_wind_off 1 77 2000.0 1.0 0.0 +it 04_res 1 77 1600.0 1.0 0.0 +it 05_nuclear 1 77 0.0 0.0 0.0 +it 06_coal 1 77 0.0 0.0 0.0 +it 07_gas 1 77 0.0 0.0 0.0 +it 08_non-res 1 77 0.0 0.0 0.0 +it 09_hydro_pump 1 77 0.0 0.0 0.0 +it 01_solar 1 78 2000.0 1.0 0.0 +it 02_wind_on 1 78 2000.0 1.0 0.0 +it 03_wind_off 1 78 2000.0 1.0 0.0 +it 04_res 1 78 1700.0 1.0 0.0 +it 05_nuclear 1 78 0.0 0.0 0.0 +it 06_coal 1 78 0.0 0.0 0.0 +it 07_gas 1 78 0.0 0.0 0.0 +it 08_non-res 1 78 0.0 0.0 0.0 +it 09_hydro_pump 1 78 0.0 0.0 0.0 +it 01_solar 1 79 2000.0 1.0 0.0 +it 02_wind_on 1 79 2000.0 1.0 0.0 +it 03_wind_off 1 79 2000.0 1.0 0.0 +it 04_res 1 79 1800.0 1.0 0.0 +it 05_nuclear 1 79 0.0 0.0 0.0 +it 06_coal 1 79 0.0 0.0 0.0 +it 07_gas 1 79 0.0 0.0 0.0 +it 08_non-res 1 79 0.0 0.0 0.0 +it 09_hydro_pump 1 79 0.0 0.0 0.0 +it 01_solar 1 80 2000.0 1.0 0.0 +it 02_wind_on 1 80 2000.0 1.0 0.0 +it 03_wind_off 1 80 2000.0 1.0 0.0 +it 04_res 1 80 1900.0 1.0 0.0 +it 05_nuclear 1 80 0.0 0.0 0.0 +it 06_coal 1 80 0.0 0.0 0.0 +it 07_gas 1 80 0.0 0.0 0.0 +it 08_non-res 1 80 0.0 0.0 0.0 +it 09_hydro_pump 1 80 0.0 0.0 0.0 +it 01_solar 1 81 2000.0 1.0 0.0 +it 02_wind_on 1 81 2000.0 1.0 0.0 +it 03_wind_off 1 81 2000.0 1.0 0.0 +it 04_res 1 81 2000.0 1.0 0.0 +it 05_nuclear 1 81 0.0 0.0 0.0 +it 06_coal 1 81 0.0 0.0 0.0 +it 07_gas 1 81 0.0 0.0 0.0 +it 08_non-res 1 81 0.0 0.0 0.0 +it 09_hydro_pump 1 81 0.0 0.0 0.0 +it 01_solar 1 82 2000.0 1.0 0.0 +it 02_wind_on 1 82 2000.0 1.0 0.0 +it 03_wind_off 1 82 2000.0 1.0 0.0 +it 04_res 1 82 2000.0 1.0 0.0 +it 05_nuclear 1 82 100.0 1.0 0.0 +it 06_coal 1 82 0.0 0.0 0.0 +it 07_gas 1 82 0.0 0.0 0.0 +it 08_non-res 1 82 0.0 0.0 0.0 +it 09_hydro_pump 1 82 0.0 0.0 0.0 +it 01_solar 1 83 2000.0 1.0 0.0 +it 02_wind_on 1 83 2000.0 1.0 0.0 +it 03_wind_off 1 83 2000.0 1.0 0.0 +it 04_res 1 83 2000.0 1.0 0.0 +it 05_nuclear 1 83 200.0 1.0 0.0 +it 06_coal 1 83 0.0 0.0 0.0 +it 07_gas 1 83 0.0 0.0 0.0 +it 08_non-res 1 83 0.0 0.0 0.0 +it 09_hydro_pump 1 83 0.0 0.0 0.0 +it 01_solar 1 84 2000.0 1.0 0.0 +it 02_wind_on 1 84 2000.0 1.0 0.0 +it 03_wind_off 1 84 2000.0 1.0 0.0 +it 04_res 1 84 2000.0 1.0 0.0 +it 05_nuclear 1 84 300.0 1.0 0.0 +it 06_coal 1 84 0.0 0.0 0.0 +it 07_gas 1 84 0.0 0.0 0.0 +it 08_non-res 1 84 0.0 0.0 0.0 +it 09_hydro_pump 1 84 0.0 0.0 0.0 +it 01_solar 1 85 2000.0 1.0 0.0 +it 02_wind_on 1 85 2000.0 1.0 0.0 +it 03_wind_off 1 85 2000.0 1.0 0.0 +it 04_res 1 85 2000.0 1.0 0.0 +it 05_nuclear 1 85 400.0 1.0 0.0 +it 06_coal 1 85 0.0 0.0 0.0 +it 07_gas 1 85 0.0 0.0 0.0 +it 08_non-res 1 85 0.0 0.0 0.0 +it 09_hydro_pump 1 85 0.0 0.0 0.0 +it 01_solar 1 86 2000.0 1.0 0.0 +it 02_wind_on 1 86 2000.0 1.0 0.0 +it 03_wind_off 1 86 2000.0 1.0 0.0 +it 04_res 1 86 2000.0 1.0 0.0 +it 05_nuclear 1 86 500.0 1.0 0.0 +it 06_coal 1 86 0.0 0.0 0.0 +it 07_gas 1 86 0.0 0.0 0.0 +it 08_non-res 1 86 0.0 0.0 0.0 +it 09_hydro_pump 1 86 0.0 0.0 0.0 +it 01_solar 1 87 2000.0 1.0 0.0 +it 02_wind_on 1 87 2000.0 1.0 0.0 +it 03_wind_off 1 87 2000.0 1.0 0.0 +it 04_res 1 87 2000.0 1.0 0.0 +it 05_nuclear 1 87 600.0 1.0 0.0 +it 06_coal 1 87 0.0 0.0 0.0 +it 07_gas 1 87 0.0 0.0 0.0 +it 08_non-res 1 87 0.0 0.0 0.0 +it 09_hydro_pump 1 87 0.0 0.0 0.0 +it 01_solar 1 88 2000.0 1.0 0.0 +it 02_wind_on 1 88 2000.0 1.0 0.0 +it 03_wind_off 1 88 2000.0 1.0 0.0 +it 04_res 1 88 2000.0 1.0 0.0 +it 05_nuclear 1 88 700.0 1.0 0.0 +it 06_coal 1 88 0.0 0.0 0.0 +it 07_gas 1 88 0.0 0.0 0.0 +it 08_non-res 1 88 0.0 0.0 0.0 +it 09_hydro_pump 1 88 0.0 0.0 0.0 +it 01_solar 1 89 2000.0 1.0 0.0 +it 02_wind_on 1 89 2000.0 1.0 0.0 +it 03_wind_off 1 89 2000.0 1.0 0.0 +it 04_res 1 89 2000.0 1.0 0.0 +it 05_nuclear 1 89 800.0 1.0 0.0 +it 06_coal 1 89 0.0 0.0 0.0 +it 07_gas 1 89 0.0 0.0 0.0 +it 08_non-res 1 89 0.0 0.0 0.0 +it 09_hydro_pump 1 89 0.0 0.0 0.0 +it 01_solar 1 90 2000.0 1.0 0.0 +it 02_wind_on 1 90 2000.0 1.0 0.0 +it 03_wind_off 1 90 2000.0 1.0 0.0 +it 04_res 1 90 2000.0 1.0 0.0 +it 05_nuclear 1 90 900.0 1.0 0.0 +it 06_coal 1 90 0.0 0.0 0.0 +it 07_gas 1 90 0.0 0.0 0.0 +it 08_non-res 1 90 0.0 0.0 0.0 +it 09_hydro_pump 1 90 0.0 0.0 0.0 +it 01_solar 1 91 2000.0 1.0 0.0 +it 02_wind_on 1 91 2000.0 1.0 0.0 +it 03_wind_off 1 91 2000.0 1.0 0.0 +it 04_res 1 91 2000.0 1.0 0.0 +it 05_nuclear 1 91 1000.0 1.0 0.0 +it 06_coal 1 91 0.0 0.0 0.0 +it 07_gas 1 91 0.0 0.0 0.0 +it 08_non-res 1 91 0.0 0.0 0.0 +it 09_hydro_pump 1 91 0.0 0.0 0.0 +it 01_solar 1 92 2000.0 1.0 0.0 +it 02_wind_on 1 92 2000.0 1.0 0.0 +it 03_wind_off 1 92 2000.0 1.0 0.0 +it 04_res 1 92 2000.0 1.0 0.0 +it 05_nuclear 1 92 1100.0 1.0 0.0 +it 06_coal 1 92 0.0 0.0 0.0 +it 07_gas 1 92 0.0 0.0 0.0 +it 08_non-res 1 92 0.0 0.0 0.0 +it 09_hydro_pump 1 92 0.0 0.0 0.0 +it 01_solar 1 93 2000.0 1.0 0.0 +it 02_wind_on 1 93 2000.0 1.0 0.0 +it 03_wind_off 1 93 2000.0 1.0 0.0 +it 04_res 1 93 2000.0 1.0 0.0 +it 05_nuclear 1 93 1200.0 1.0 0.0 +it 06_coal 1 93 0.0 0.0 0.0 +it 07_gas 1 93 0.0 0.0 0.0 +it 08_non-res 1 93 0.0 0.0 0.0 +it 09_hydro_pump 1 93 0.0 0.0 0.0 +it 01_solar 1 94 2000.0 1.0 0.0 +it 02_wind_on 1 94 2000.0 1.0 0.0 +it 03_wind_off 1 94 2000.0 1.0 0.0 +it 04_res 1 94 2000.0 1.0 0.0 +it 05_nuclear 1 94 1300.0 1.0 0.0 +it 06_coal 1 94 0.0 0.0 0.0 +it 07_gas 1 94 0.0 0.0 0.0 +it 08_non-res 1 94 0.0 0.0 0.0 +it 09_hydro_pump 1 94 0.0 0.0 0.0 +it 01_solar 1 95 2000.0 1.0 0.0 +it 02_wind_on 1 95 2000.0 1.0 0.0 +it 03_wind_off 1 95 2000.0 1.0 0.0 +it 04_res 1 95 2000.0 1.0 0.0 +it 05_nuclear 1 95 1400.0 1.0 0.0 +it 06_coal 1 95 0.0 0.0 0.0 +it 07_gas 1 95 0.0 0.0 0.0 +it 08_non-res 1 95 0.0 0.0 0.0 +it 09_hydro_pump 1 95 0.0 0.0 0.0 +it 01_solar 1 96 2000.0 1.0 0.0 +it 02_wind_on 1 96 2000.0 1.0 0.0 +it 03_wind_off 1 96 2000.0 1.0 0.0 +it 04_res 1 96 2000.0 1.0 0.0 +it 05_nuclear 1 96 1500.0 1.0 0.0 +it 06_coal 1 96 0.0 0.0 0.0 +it 07_gas 1 96 0.0 0.0 0.0 +it 08_non-res 1 96 0.0 0.0 0.0 +it 09_hydro_pump 1 96 0.0 0.0 0.0 +it 01_solar 1 97 2000.0 1.0 0.0 +it 02_wind_on 1 97 2000.0 1.0 0.0 +it 03_wind_off 1 97 2000.0 1.0 0.0 +it 04_res 1 97 2000.0 1.0 0.0 +it 05_nuclear 1 97 1600.0 1.0 0.0 +it 06_coal 1 97 0.0 0.0 0.0 +it 07_gas 1 97 0.0 0.0 0.0 +it 08_non-res 1 97 0.0 0.0 0.0 +it 09_hydro_pump 1 97 0.0 0.0 0.0 +it 01_solar 1 98 2000.0 1.0 0.0 +it 02_wind_on 1 98 2000.0 1.0 0.0 +it 03_wind_off 1 98 2000.0 1.0 0.0 +it 04_res 1 98 2000.0 1.0 0.0 +it 05_nuclear 1 98 1700.0 1.0 0.0 +it 06_coal 1 98 0.0 0.0 0.0 +it 07_gas 1 98 0.0 0.0 0.0 +it 08_non-res 1 98 0.0 0.0 0.0 +it 09_hydro_pump 1 98 0.0 0.0 0.0 +it 01_solar 1 99 2000.0 1.0 0.0 +it 02_wind_on 1 99 2000.0 1.0 0.0 +it 03_wind_off 1 99 2000.0 1.0 0.0 +it 04_res 1 99 2000.0 1.0 0.0 +it 05_nuclear 1 99 1800.0 1.0 0.0 +it 06_coal 1 99 0.0 0.0 0.0 +it 07_gas 1 99 0.0 0.0 0.0 +it 08_non-res 1 99 0.0 0.0 0.0 +it 09_hydro_pump 1 99 0.0 0.0 0.0 +it 01_solar 1 100 2000.0 1.0 0.0 +it 02_wind_on 1 100 2000.0 1.0 0.0 +it 03_wind_off 1 100 2000.0 1.0 0.0 +it 04_res 1 100 2000.0 1.0 0.0 +it 05_nuclear 1 100 1900.0 1.0 0.0 +it 06_coal 1 100 0.0 0.0 0.0 +it 07_gas 1 100 0.0 0.0 0.0 +it 08_non-res 1 100 0.0 0.0 0.0 +it 09_hydro_pump 1 100 0.0 0.0 0.0 +it 01_solar 1 101 2000.0 1.0 0.0 +it 02_wind_on 1 101 2000.0 1.0 0.0 +it 03_wind_off 1 101 2000.0 1.0 0.0 +it 04_res 1 101 2000.0 1.0 0.0 +it 05_nuclear 1 101 2000.0 1.0 0.0 +it 06_coal 1 101 0.0 0.0 0.0 +it 07_gas 1 101 0.0 0.0 0.0 +it 08_non-res 1 101 0.0 0.0 0.0 +it 09_hydro_pump 1 101 0.0 0.0 0.0 +it 01_solar 1 102 2000.0 1.0 0.0 +it 02_wind_on 1 102 2000.0 1.0 0.0 +it 03_wind_off 1 102 2000.0 1.0 0.0 +it 04_res 1 102 2000.0 1.0 0.0 +it 05_nuclear 1 102 2000.0 1.0 0.0 +it 06_coal 1 102 100.0 1.0 0.0 +it 07_gas 1 102 0.0 0.0 0.0 +it 08_non-res 1 102 0.0 0.0 0.0 +it 09_hydro_pump 1 102 0.0 0.0 0.0 +it 01_solar 1 103 2000.0 1.0 0.0 +it 02_wind_on 1 103 2000.0 1.0 0.0 +it 03_wind_off 1 103 2000.0 1.0 0.0 +it 04_res 1 103 2000.0 1.0 0.0 +it 05_nuclear 1 103 2000.0 1.0 0.0 +it 06_coal 1 103 200.0 1.0 0.0 +it 07_gas 1 103 0.0 0.0 0.0 +it 08_non-res 1 103 0.0 0.0 0.0 +it 09_hydro_pump 1 103 0.0 0.0 0.0 +it 01_solar 1 104 2000.0 1.0 0.0 +it 02_wind_on 1 104 2000.0 1.0 0.0 +it 03_wind_off 1 104 2000.0 1.0 0.0 +it 04_res 1 104 2000.0 1.0 0.0 +it 05_nuclear 1 104 2000.0 1.0 0.0 +it 06_coal 1 104 300.0 1.0 0.0 +it 07_gas 1 104 0.0 0.0 0.0 +it 08_non-res 1 104 0.0 0.0 0.0 +it 09_hydro_pump 1 104 0.0 0.0 0.0 +it 01_solar 1 105 2000.0 1.0 0.0 +it 02_wind_on 1 105 2000.0 1.0 0.0 +it 03_wind_off 1 105 2000.0 1.0 0.0 +it 04_res 1 105 2000.0 1.0 0.0 +it 05_nuclear 1 105 2000.0 1.0 0.0 +it 06_coal 1 105 400.0 1.0 0.0 +it 07_gas 1 105 0.0 0.0 0.0 +it 08_non-res 1 105 0.0 0.0 0.0 +it 09_hydro_pump 1 105 0.0 0.0 0.0 +it 01_solar 1 106 2000.0 1.0 0.0 +it 02_wind_on 1 106 2000.0 1.0 0.0 +it 03_wind_off 1 106 2000.0 1.0 0.0 +it 04_res 1 106 2000.0 1.0 0.0 +it 05_nuclear 1 106 2000.0 1.0 0.0 +it 06_coal 1 106 500.0 1.0 0.0 +it 07_gas 1 106 0.0 0.0 0.0 +it 08_non-res 1 106 0.0 0.0 0.0 +it 09_hydro_pump 1 106 0.0 0.0 0.0 +it 01_solar 1 107 2000.0 1.0 0.0 +it 02_wind_on 1 107 2000.0 1.0 0.0 +it 03_wind_off 1 107 2000.0 1.0 0.0 +it 04_res 1 107 2000.0 1.0 0.0 +it 05_nuclear 1 107 2000.0 1.0 0.0 +it 06_coal 1 107 600.0 1.0 0.0 +it 07_gas 1 107 0.0 0.0 0.0 +it 08_non-res 1 107 0.0 0.0 0.0 +it 09_hydro_pump 1 107 0.0 0.0 0.0 +it 01_solar 1 108 2000.0 1.0 0.0 +it 02_wind_on 1 108 2000.0 1.0 0.0 +it 03_wind_off 1 108 2000.0 1.0 0.0 +it 04_res 1 108 2000.0 1.0 0.0 +it 05_nuclear 1 108 2000.0 1.0 0.0 +it 06_coal 1 108 700.0 1.0 0.0 +it 07_gas 1 108 0.0 0.0 0.0 +it 08_non-res 1 108 0.0 0.0 0.0 +it 09_hydro_pump 1 108 0.0 0.0 0.0 +it 01_solar 1 109 2000.0 1.0 0.0 +it 02_wind_on 1 109 2000.0 1.0 0.0 +it 03_wind_off 1 109 2000.0 1.0 0.0 +it 04_res 1 109 2000.0 1.0 0.0 +it 05_nuclear 1 109 2000.0 1.0 0.0 +it 06_coal 1 109 800.0 1.0 0.0 +it 07_gas 1 109 0.0 0.0 0.0 +it 08_non-res 1 109 0.0 0.0 0.0 +it 09_hydro_pump 1 109 0.0 0.0 0.0 +it 01_solar 1 110 2000.0 1.0 0.0 +it 02_wind_on 1 110 2000.0 1.0 0.0 +it 03_wind_off 1 110 2000.0 1.0 0.0 +it 04_res 1 110 2000.0 1.0 0.0 +it 05_nuclear 1 110 2000.0 1.0 0.0 +it 06_coal 1 110 900.0 1.0 0.0 +it 07_gas 1 110 0.0 0.0 0.0 +it 08_non-res 1 110 0.0 0.0 0.0 +it 09_hydro_pump 1 110 0.0 0.0 0.0 +it 01_solar 1 111 2000.0 1.0 0.0 +it 02_wind_on 1 111 2000.0 1.0 0.0 +it 03_wind_off 1 111 2000.0 1.0 0.0 +it 04_res 1 111 2000.0 1.0 0.0 +it 05_nuclear 1 111 2000.0 1.0 0.0 +it 06_coal 1 111 1000.0 1.0 0.0 +it 07_gas 1 111 0.0 0.0 0.0 +it 08_non-res 1 111 0.0 0.0 0.0 +it 09_hydro_pump 1 111 0.0 0.0 0.0 +it 01_solar 1 112 2000.0 1.0 0.0 +it 02_wind_on 1 112 2000.0 1.0 0.0 +it 03_wind_off 1 112 2000.0 1.0 0.0 +it 04_res 1 112 2000.0 1.0 0.0 +it 05_nuclear 1 112 2000.0 1.0 0.0 +it 06_coal 1 112 1100.0 1.0 0.0 +it 07_gas 1 112 0.0 0.0 0.0 +it 08_non-res 1 112 0.0 0.0 0.0 +it 09_hydro_pump 1 112 0.0 0.0 0.0 +it 01_solar 1 113 2000.0 1.0 0.0 +it 02_wind_on 1 113 2000.0 1.0 0.0 +it 03_wind_off 1 113 2000.0 1.0 0.0 +it 04_res 1 113 2000.0 1.0 0.0 +it 05_nuclear 1 113 2000.0 1.0 0.0 +it 06_coal 1 113 1200.0 1.0 0.0 +it 07_gas 1 113 0.0 0.0 0.0 +it 08_non-res 1 113 0.0 0.0 0.0 +it 09_hydro_pump 1 113 0.0 0.0 0.0 +it 01_solar 1 114 2000.0 1.0 0.0 +it 02_wind_on 1 114 2000.0 1.0 0.0 +it 03_wind_off 1 114 2000.0 1.0 0.0 +it 04_res 1 114 2000.0 1.0 0.0 +it 05_nuclear 1 114 2000.0 1.0 0.0 +it 06_coal 1 114 1300.0 1.0 0.0 +it 07_gas 1 114 0.0 0.0 0.0 +it 08_non-res 1 114 0.0 0.0 0.0 +it 09_hydro_pump 1 114 0.0 0.0 0.0 +it 01_solar 1 115 2000.0 1.0 0.0 +it 02_wind_on 1 115 2000.0 1.0 0.0 +it 03_wind_off 1 115 2000.0 1.0 0.0 +it 04_res 1 115 2000.0 1.0 0.0 +it 05_nuclear 1 115 2000.0 1.0 0.0 +it 06_coal 1 115 1400.0 1.0 0.0 +it 07_gas 1 115 0.0 0.0 0.0 +it 08_non-res 1 115 0.0 0.0 0.0 +it 09_hydro_pump 1 115 0.0 0.0 0.0 +it 01_solar 1 116 2000.0 1.0 0.0 +it 02_wind_on 1 116 2000.0 1.0 0.0 +it 03_wind_off 1 116 2000.0 1.0 0.0 +it 04_res 1 116 2000.0 1.0 0.0 +it 05_nuclear 1 116 2000.0 1.0 0.0 +it 06_coal 1 116 1500.0 1.0 0.0 +it 07_gas 1 116 0.0 0.0 0.0 +it 08_non-res 1 116 0.0 0.0 0.0 +it 09_hydro_pump 1 116 0.0 0.0 0.0 +it 01_solar 1 117 2000.0 1.0 0.0 +it 02_wind_on 1 117 2000.0 1.0 0.0 +it 03_wind_off 1 117 2000.0 1.0 0.0 +it 04_res 1 117 2000.0 1.0 0.0 +it 05_nuclear 1 117 2000.0 1.0 0.0 +it 06_coal 1 117 1600.0 1.0 0.0 +it 07_gas 1 117 0.0 0.0 0.0 +it 08_non-res 1 117 0.0 0.0 0.0 +it 09_hydro_pump 1 117 0.0 0.0 0.0 +it 01_solar 1 118 2000.0 1.0 0.0 +it 02_wind_on 1 118 2000.0 1.0 0.0 +it 03_wind_off 1 118 2000.0 1.0 0.0 +it 04_res 1 118 2000.0 1.0 0.0 +it 05_nuclear 1 118 2000.0 1.0 0.0 +it 06_coal 1 118 1700.0 1.0 0.0 +it 07_gas 1 118 0.0 0.0 0.0 +it 08_non-res 1 118 0.0 0.0 0.0 +it 09_hydro_pump 1 118 0.0 0.0 0.0 +it 01_solar 1 119 2000.0 1.0 0.0 +it 02_wind_on 1 119 2000.0 1.0 0.0 +it 03_wind_off 1 119 2000.0 1.0 0.0 +it 04_res 1 119 2000.0 1.0 0.0 +it 05_nuclear 1 119 2000.0 1.0 0.0 +it 06_coal 1 119 1800.0 1.0 0.0 +it 07_gas 1 119 0.0 0.0 0.0 +it 08_non-res 1 119 0.0 0.0 0.0 +it 09_hydro_pump 1 119 0.0 0.0 0.0 +it 01_solar 1 120 2000.0 1.0 0.0 +it 02_wind_on 1 120 2000.0 1.0 0.0 +it 03_wind_off 1 120 2000.0 1.0 0.0 +it 04_res 1 120 2000.0 1.0 0.0 +it 05_nuclear 1 120 2000.0 1.0 0.0 +it 06_coal 1 120 1900.0 1.0 0.0 +it 07_gas 1 120 0.0 0.0 0.0 +it 08_non-res 1 120 0.0 0.0 0.0 +it 09_hydro_pump 1 120 0.0 0.0 0.0 +it 01_solar 1 121 2000.0 1.0 0.0 +it 02_wind_on 1 121 2000.0 1.0 0.0 +it 03_wind_off 1 121 2000.0 1.0 0.0 +it 04_res 1 121 2000.0 1.0 0.0 +it 05_nuclear 1 121 2000.0 1.0 0.0 +it 06_coal 1 121 2000.0 1.0 0.0 +it 07_gas 1 121 0.0 0.0 0.0 +it 08_non-res 1 121 0.0 0.0 0.0 +it 09_hydro_pump 1 121 0.0 0.0 0.0 +it 01_solar 1 122 2000.0 1.0 0.0 +it 02_wind_on 1 122 2000.0 1.0 0.0 +it 03_wind_off 1 122 2000.0 1.0 0.0 +it 04_res 1 122 2000.0 1.0 0.0 +it 05_nuclear 1 122 2000.0 1.0 0.0 +it 06_coal 1 122 2000.0 1.0 0.0 +it 07_gas 1 122 100.0 1.0 0.0 +it 08_non-res 1 122 0.0 0.0 0.0 +it 09_hydro_pump 1 122 0.0 0.0 0.0 +it 01_solar 1 123 2000.0 1.0 0.0 +it 02_wind_on 1 123 2000.0 1.0 0.0 +it 03_wind_off 1 123 2000.0 1.0 0.0 +it 04_res 1 123 2000.0 1.0 0.0 +it 05_nuclear 1 123 2000.0 1.0 0.0 +it 06_coal 1 123 2000.0 1.0 0.0 +it 07_gas 1 123 200.0 1.0 0.0 +it 08_non-res 1 123 0.0 0.0 0.0 +it 09_hydro_pump 1 123 0.0 0.0 0.0 +it 01_solar 1 124 2000.0 1.0 0.0 +it 02_wind_on 1 124 2000.0 1.0 0.0 +it 03_wind_off 1 124 2000.0 1.0 0.0 +it 04_res 1 124 2000.0 1.0 0.0 +it 05_nuclear 1 124 2000.0 1.0 0.0 +it 06_coal 1 124 2000.0 1.0 0.0 +it 07_gas 1 124 300.0 1.0 0.0 +it 08_non-res 1 124 0.0 0.0 0.0 +it 09_hydro_pump 1 124 0.0 0.0 0.0 +it 01_solar 1 125 2000.0 1.0 0.0 +it 02_wind_on 1 125 2000.0 1.0 0.0 +it 03_wind_off 1 125 2000.0 1.0 0.0 +it 04_res 1 125 2000.0 1.0 0.0 +it 05_nuclear 1 125 2000.0 1.0 0.0 +it 06_coal 1 125 2000.0 1.0 0.0 +it 07_gas 1 125 400.0 1.0 0.0 +it 08_non-res 1 125 0.0 0.0 0.0 +it 09_hydro_pump 1 125 0.0 0.0 0.0 +it 01_solar 1 126 2000.0 1.0 0.0 +it 02_wind_on 1 126 2000.0 1.0 0.0 +it 03_wind_off 1 126 2000.0 1.0 0.0 +it 04_res 1 126 2000.0 1.0 0.0 +it 05_nuclear 1 126 2000.0 1.0 0.0 +it 06_coal 1 126 2000.0 1.0 0.0 +it 07_gas 1 126 500.0 1.0 0.0 +it 08_non-res 1 126 0.0 0.0 0.0 +it 09_hydro_pump 1 126 0.0 0.0 0.0 +it 01_solar 1 127 2000.0 1.0 0.0 +it 02_wind_on 1 127 2000.0 1.0 0.0 +it 03_wind_off 1 127 2000.0 1.0 0.0 +it 04_res 1 127 2000.0 1.0 0.0 +it 05_nuclear 1 127 2000.0 1.0 0.0 +it 06_coal 1 127 2000.0 1.0 0.0 +it 07_gas 1 127 600.0 1.0 0.0 +it 08_non-res 1 127 0.0 0.0 0.0 +it 09_hydro_pump 1 127 0.0 0.0 0.0 +it 01_solar 1 128 2000.0 1.0 0.0 +it 02_wind_on 1 128 2000.0 1.0 0.0 +it 03_wind_off 1 128 2000.0 1.0 0.0 +it 04_res 1 128 2000.0 1.0 0.0 +it 05_nuclear 1 128 2000.0 1.0 0.0 +it 06_coal 1 128 2000.0 1.0 0.0 +it 07_gas 1 128 700.0 1.0 0.0 +it 08_non-res 1 128 0.0 0.0 0.0 +it 09_hydro_pump 1 128 0.0 0.0 0.0 +it 01_solar 1 129 2000.0 1.0 0.0 +it 02_wind_on 1 129 2000.0 1.0 0.0 +it 03_wind_off 1 129 2000.0 1.0 0.0 +it 04_res 1 129 2000.0 1.0 0.0 +it 05_nuclear 1 129 2000.0 1.0 0.0 +it 06_coal 1 129 2000.0 1.0 0.0 +it 07_gas 1 129 800.0 1.0 0.0 +it 08_non-res 1 129 0.0 0.0 0.0 +it 09_hydro_pump 1 129 0.0 0.0 0.0 +it 01_solar 1 130 2000.0 1.0 0.0 +it 02_wind_on 1 130 2000.0 1.0 0.0 +it 03_wind_off 1 130 2000.0 1.0 0.0 +it 04_res 1 130 2000.0 1.0 0.0 +it 05_nuclear 1 130 2000.0 1.0 0.0 +it 06_coal 1 130 2000.0 1.0 0.0 +it 07_gas 1 130 900.0 1.0 0.0 +it 08_non-res 1 130 0.0 0.0 0.0 +it 09_hydro_pump 1 130 0.0 0.0 0.0 +it 01_solar 1 131 2000.0 1.0 0.0 +it 02_wind_on 1 131 2000.0 1.0 0.0 +it 03_wind_off 1 131 2000.0 1.0 0.0 +it 04_res 1 131 2000.0 1.0 0.0 +it 05_nuclear 1 131 2000.0 1.0 0.0 +it 06_coal 1 131 2000.0 1.0 0.0 +it 07_gas 1 131 1000.0 1.0 0.0 +it 08_non-res 1 131 0.0 0.0 0.0 +it 09_hydro_pump 1 131 0.0 0.0 0.0 +it 01_solar 1 132 2000.0 1.0 0.0 +it 02_wind_on 1 132 2000.0 1.0 0.0 +it 03_wind_off 1 132 2000.0 1.0 0.0 +it 04_res 1 132 2000.0 1.0 0.0 +it 05_nuclear 1 132 2000.0 1.0 0.0 +it 06_coal 1 132 2000.0 1.0 0.0 +it 07_gas 1 132 1100.0 1.0 0.0 +it 08_non-res 1 132 0.0 0.0 0.0 +it 09_hydro_pump 1 132 0.0 0.0 0.0 +it 01_solar 1 133 2000.0 1.0 0.0 +it 02_wind_on 1 133 2000.0 1.0 0.0 +it 03_wind_off 1 133 2000.0 1.0 0.0 +it 04_res 1 133 2000.0 1.0 0.0 +it 05_nuclear 1 133 2000.0 1.0 0.0 +it 06_coal 1 133 2000.0 1.0 0.0 +it 07_gas 1 133 1200.0 1.0 0.0 +it 08_non-res 1 133 0.0 0.0 0.0 +it 09_hydro_pump 1 133 0.0 0.0 0.0 +it 01_solar 1 134 2000.0 1.0 0.0 +it 02_wind_on 1 134 2000.0 1.0 0.0 +it 03_wind_off 1 134 2000.0 1.0 0.0 +it 04_res 1 134 2000.0 1.0 0.0 +it 05_nuclear 1 134 2000.0 1.0 0.0 +it 06_coal 1 134 2000.0 1.0 0.0 +it 07_gas 1 134 1300.0 1.0 0.0 +it 08_non-res 1 134 0.0 0.0 0.0 +it 09_hydro_pump 1 134 0.0 0.0 0.0 +it 01_solar 1 135 2000.0 1.0 0.0 +it 02_wind_on 1 135 2000.0 1.0 0.0 +it 03_wind_off 1 135 2000.0 1.0 0.0 +it 04_res 1 135 2000.0 1.0 0.0 +it 05_nuclear 1 135 2000.0 1.0 0.0 +it 06_coal 1 135 2000.0 1.0 0.0 +it 07_gas 1 135 1400.0 1.0 0.0 +it 08_non-res 1 135 0.0 0.0 0.0 +it 09_hydro_pump 1 135 0.0 0.0 0.0 +it 01_solar 1 136 2000.0 1.0 0.0 +it 02_wind_on 1 136 2000.0 1.0 0.0 +it 03_wind_off 1 136 2000.0 1.0 0.0 +it 04_res 1 136 2000.0 1.0 0.0 +it 05_nuclear 1 136 2000.0 1.0 0.0 +it 06_coal 1 136 2000.0 1.0 0.0 +it 07_gas 1 136 1500.0 1.0 0.0 +it 08_non-res 1 136 0.0 0.0 0.0 +it 09_hydro_pump 1 136 0.0 0.0 0.0 +it 01_solar 1 137 2000.0 1.0 0.0 +it 02_wind_on 1 137 2000.0 1.0 0.0 +it 03_wind_off 1 137 2000.0 1.0 0.0 +it 04_res 1 137 2000.0 1.0 0.0 +it 05_nuclear 1 137 2000.0 1.0 0.0 +it 06_coal 1 137 2000.0 1.0 0.0 +it 07_gas 1 137 1600.0 1.0 0.0 +it 08_non-res 1 137 0.0 0.0 0.0 +it 09_hydro_pump 1 137 0.0 0.0 0.0 +it 01_solar 1 138 2000.0 1.0 0.0 +it 02_wind_on 1 138 2000.0 1.0 0.0 +it 03_wind_off 1 138 2000.0 1.0 0.0 +it 04_res 1 138 2000.0 1.0 0.0 +it 05_nuclear 1 138 2000.0 1.0 0.0 +it 06_coal 1 138 2000.0 1.0 0.0 +it 07_gas 1 138 1700.0 1.0 0.0 +it 08_non-res 1 138 0.0 0.0 0.0 +it 09_hydro_pump 1 138 0.0 0.0 0.0 +it 01_solar 1 139 2000.0 1.0 0.0 +it 02_wind_on 1 139 2000.0 1.0 0.0 +it 03_wind_off 1 139 2000.0 1.0 0.0 +it 04_res 1 139 2000.0 1.0 0.0 +it 05_nuclear 1 139 2000.0 1.0 0.0 +it 06_coal 1 139 2000.0 1.0 0.0 +it 07_gas 1 139 1800.0 1.0 0.0 +it 08_non-res 1 139 0.0 0.0 0.0 +it 09_hydro_pump 1 139 0.0 0.0 0.0 +it 01_solar 1 140 2000.0 1.0 0.0 +it 02_wind_on 1 140 2000.0 1.0 0.0 +it 03_wind_off 1 140 2000.0 1.0 0.0 +it 04_res 1 140 2000.0 1.0 0.0 +it 05_nuclear 1 140 2000.0 1.0 0.0 +it 06_coal 1 140 2000.0 1.0 0.0 +it 07_gas 1 140 1900.0 1.0 0.0 +it 08_non-res 1 140 0.0 0.0 0.0 +it 09_hydro_pump 1 140 0.0 0.0 0.0 +it 01_solar 1 141 2000.0 1.0 0.0 +it 02_wind_on 1 141 2000.0 1.0 0.0 +it 03_wind_off 1 141 2000.0 1.0 0.0 +it 04_res 1 141 2000.0 1.0 0.0 +it 05_nuclear 1 141 2000.0 1.0 0.0 +it 06_coal 1 141 2000.0 1.0 0.0 +it 07_gas 1 141 2000.0 1.0 0.0 +it 08_non-res 1 141 0.0 0.0 0.0 +it 09_hydro_pump 1 141 0.0 0.0 0.0 +it 01_solar 1 142 2000.0 1.0 0.0 +it 02_wind_on 1 142 2000.0 1.0 0.0 +it 03_wind_off 1 142 2000.0 1.0 0.0 +it 04_res 1 142 2000.0 1.0 0.0 +it 05_nuclear 1 142 2000.0 1.0 0.0 +it 06_coal 1 142 2000.0 1.0 0.0 +it 07_gas 1 142 2000.0 1.0 0.0 +it 08_non-res 1 142 100.0 1.0 0.0 +it 09_hydro_pump 1 142 0.0 0.0 0.0 +it 01_solar 1 143 2000.0 1.0 0.0 +it 02_wind_on 1 143 2000.0 1.0 0.0 +it 03_wind_off 1 143 2000.0 1.0 0.0 +it 04_res 1 143 2000.0 1.0 0.0 +it 05_nuclear 1 143 2000.0 1.0 0.0 +it 06_coal 1 143 2000.0 1.0 0.0 +it 07_gas 1 143 2000.0 1.0 0.0 +it 08_non-res 1 143 200.0 1.0 0.0 +it 09_hydro_pump 1 143 0.0 0.0 0.0 +it 01_solar 1 144 2000.0 1.0 0.0 +it 02_wind_on 1 144 2000.0 1.0 0.0 +it 03_wind_off 1 144 2000.0 1.0 0.0 +it 04_res 1 144 2000.0 1.0 0.0 +it 05_nuclear 1 144 2000.0 1.0 0.0 +it 06_coal 1 144 2000.0 1.0 0.0 +it 07_gas 1 144 2000.0 1.0 0.0 +it 08_non-res 1 144 300.0 1.0 0.0 +it 09_hydro_pump 1 144 0.0 0.0 0.0 +it 01_solar 1 145 2000.0 1.0 0.0 +it 02_wind_on 1 145 2000.0 1.0 0.0 +it 03_wind_off 1 145 2000.0 1.0 0.0 +it 04_res 1 145 2000.0 1.0 0.0 +it 05_nuclear 1 145 2000.0 1.0 0.0 +it 06_coal 1 145 2000.0 1.0 0.0 +it 07_gas 1 145 2000.0 1.0 0.0 +it 08_non-res 1 145 400.0 1.0 0.0 +it 09_hydro_pump 1 145 0.0 0.0 0.0 +it 01_solar 1 146 2000.0 1.0 0.0 +it 02_wind_on 1 146 2000.0 1.0 0.0 +it 03_wind_off 1 146 2000.0 1.0 0.0 +it 04_res 1 146 2000.0 1.0 0.0 +it 05_nuclear 1 146 2000.0 1.0 0.0 +it 06_coal 1 146 2000.0 1.0 0.0 +it 07_gas 1 146 2000.0 1.0 0.0 +it 08_non-res 1 146 500.0 1.0 0.0 +it 09_hydro_pump 1 146 0.0 0.0 0.0 +it 01_solar 1 147 2000.0 1.0 0.0 +it 02_wind_on 1 147 2000.0 1.0 0.0 +it 03_wind_off 1 147 2000.0 1.0 0.0 +it 04_res 1 147 2000.0 1.0 0.0 +it 05_nuclear 1 147 2000.0 1.0 0.0 +it 06_coal 1 147 2000.0 1.0 0.0 +it 07_gas 1 147 2000.0 1.0 0.0 +it 08_non-res 1 147 600.0 1.0 0.0 +it 09_hydro_pump 1 147 0.0 0.0 0.0 +it 01_solar 1 148 2000.0 1.0 0.0 +it 02_wind_on 1 148 2000.0 1.0 0.0 +it 03_wind_off 1 148 2000.0 1.0 0.0 +it 04_res 1 148 2000.0 1.0 0.0 +it 05_nuclear 1 148 2000.0 1.0 0.0 +it 06_coal 1 148 2000.0 1.0 0.0 +it 07_gas 1 148 2000.0 1.0 0.0 +it 08_non-res 1 148 700.0 1.0 0.0 +it 09_hydro_pump 1 148 0.0 0.0 0.0 +it 01_solar 1 149 2000.0 1.0 0.0 +it 02_wind_on 1 149 2000.0 1.0 0.0 +it 03_wind_off 1 149 2000.0 1.0 0.0 +it 04_res 1 149 2000.0 1.0 0.0 +it 05_nuclear 1 149 2000.0 1.0 0.0 +it 06_coal 1 149 2000.0 1.0 0.0 +it 07_gas 1 149 2000.0 1.0 0.0 +it 08_non-res 1 149 800.0 1.0 0.0 +it 09_hydro_pump 1 149 0.0 0.0 0.0 +it 01_solar 1 150 2000.0 1.0 0.0 +it 02_wind_on 1 150 2000.0 1.0 0.0 +it 03_wind_off 1 150 2000.0 1.0 0.0 +it 04_res 1 150 2000.0 1.0 0.0 +it 05_nuclear 1 150 2000.0 1.0 0.0 +it 06_coal 1 150 2000.0 1.0 0.0 +it 07_gas 1 150 2000.0 1.0 0.0 +it 08_non-res 1 150 900.0 1.0 0.0 +it 09_hydro_pump 1 150 0.0 0.0 0.0 +it 01_solar 1 151 2000.0 1.0 0.0 +it 02_wind_on 1 151 2000.0 1.0 0.0 +it 03_wind_off 1 151 2000.0 1.0 0.0 +it 04_res 1 151 2000.0 1.0 0.0 +it 05_nuclear 1 151 2000.0 1.0 0.0 +it 06_coal 1 151 2000.0 1.0 0.0 +it 07_gas 1 151 2000.0 1.0 0.0 +it 08_non-res 1 151 1000.0 1.0 0.0 +it 09_hydro_pump 1 151 0.0 0.0 0.0 +it 01_solar 1 152 2000.0 1.0 0.0 +it 02_wind_on 1 152 2000.0 1.0 0.0 +it 03_wind_off 1 152 2000.0 1.0 0.0 +it 04_res 1 152 2000.0 1.0 0.0 +it 05_nuclear 1 152 2000.0 1.0 0.0 +it 06_coal 1 152 2000.0 1.0 0.0 +it 07_gas 1 152 2000.0 1.0 0.0 +it 08_non-res 1 152 1100.0 1.0 0.0 +it 09_hydro_pump 1 152 0.0 0.0 0.0 +it 01_solar 1 153 2000.0 1.0 0.0 +it 02_wind_on 1 153 2000.0 1.0 0.0 +it 03_wind_off 1 153 2000.0 1.0 0.0 +it 04_res 1 153 2000.0 1.0 0.0 +it 05_nuclear 1 153 2000.0 1.0 0.0 +it 06_coal 1 153 2000.0 1.0 0.0 +it 07_gas 1 153 2000.0 1.0 0.0 +it 08_non-res 1 153 1200.0 1.0 0.0 +it 09_hydro_pump 1 153 0.0 0.0 0.0 +it 01_solar 1 154 2000.0 1.0 0.0 +it 02_wind_on 1 154 2000.0 1.0 0.0 +it 03_wind_off 1 154 2000.0 1.0 0.0 +it 04_res 1 154 2000.0 1.0 0.0 +it 05_nuclear 1 154 2000.0 1.0 0.0 +it 06_coal 1 154 2000.0 1.0 0.0 +it 07_gas 1 154 2000.0 1.0 0.0 +it 08_non-res 1 154 1300.0 1.0 0.0 +it 09_hydro_pump 1 154 0.0 0.0 0.0 +it 01_solar 1 155 2000.0 1.0 0.0 +it 02_wind_on 1 155 2000.0 1.0 0.0 +it 03_wind_off 1 155 2000.0 1.0 0.0 +it 04_res 1 155 2000.0 1.0 0.0 +it 05_nuclear 1 155 2000.0 1.0 0.0 +it 06_coal 1 155 2000.0 1.0 0.0 +it 07_gas 1 155 2000.0 1.0 0.0 +it 08_non-res 1 155 1400.0 1.0 0.0 +it 09_hydro_pump 1 155 0.0 0.0 0.0 +it 01_solar 1 156 2000.0 1.0 0.0 +it 02_wind_on 1 156 2000.0 1.0 0.0 +it 03_wind_off 1 156 2000.0 1.0 0.0 +it 04_res 1 156 2000.0 1.0 0.0 +it 05_nuclear 1 156 2000.0 1.0 0.0 +it 06_coal 1 156 2000.0 1.0 0.0 +it 07_gas 1 156 2000.0 1.0 0.0 +it 08_non-res 1 156 1500.0 1.0 0.0 +it 09_hydro_pump 1 156 0.0 0.0 0.0 +it 01_solar 1 157 2000.0 1.0 0.0 +it 02_wind_on 1 157 2000.0 1.0 0.0 +it 03_wind_off 1 157 2000.0 1.0 0.0 +it 04_res 1 157 2000.0 1.0 0.0 +it 05_nuclear 1 157 2000.0 1.0 0.0 +it 06_coal 1 157 2000.0 1.0 0.0 +it 07_gas 1 157 2000.0 1.0 0.0 +it 08_non-res 1 157 1600.0 1.0 0.0 +it 09_hydro_pump 1 157 0.0 0.0 0.0 +it 01_solar 1 158 2000.0 1.0 0.0 +it 02_wind_on 1 158 2000.0 1.0 0.0 +it 03_wind_off 1 158 2000.0 1.0 0.0 +it 04_res 1 158 2000.0 1.0 0.0 +it 05_nuclear 1 158 2000.0 1.0 0.0 +it 06_coal 1 158 2000.0 1.0 0.0 +it 07_gas 1 158 2000.0 1.0 0.0 +it 08_non-res 1 158 1700.0 1.0 0.0 +it 09_hydro_pump 1 158 0.0 0.0 0.0 +it 01_solar 1 159 2000.0 1.0 0.0 +it 02_wind_on 1 159 2000.0 1.0 0.0 +it 03_wind_off 1 159 2000.0 1.0 0.0 +it 04_res 1 159 2000.0 1.0 0.0 +it 05_nuclear 1 159 2000.0 1.0 0.0 +it 06_coal 1 159 2000.0 1.0 0.0 +it 07_gas 1 159 2000.0 1.0 0.0 +it 08_non-res 1 159 1800.0 1.0 0.0 +it 09_hydro_pump 1 159 0.0 0.0 0.0 +it 01_solar 1 160 2000.0 1.0 0.0 +it 02_wind_on 1 160 2000.0 1.0 0.0 +it 03_wind_off 1 160 2000.0 1.0 0.0 +it 04_res 1 160 2000.0 1.0 0.0 +it 05_nuclear 1 160 2000.0 1.0 0.0 +it 06_coal 1 160 2000.0 1.0 0.0 +it 07_gas 1 160 2000.0 1.0 0.0 +it 08_non-res 1 160 1900.0 1.0 0.0 +it 09_hydro_pump 1 160 0.0 0.0 0.0 +it 01_solar 1 161 2000.0 1.0 0.0 +it 02_wind_on 1 161 2000.0 1.0 0.0 +it 03_wind_off 1 161 2000.0 1.0 0.0 +it 04_res 1 161 2000.0 1.0 0.0 +it 05_nuclear 1 161 2000.0 1.0 0.0 +it 06_coal 1 161 2000.0 1.0 0.0 +it 07_gas 1 161 2000.0 1.0 0.0 +it 08_non-res 1 161 2000.0 1.0 0.0 +it 09_hydro_pump 1 161 0.0 0.0 0.0 +it 01_solar 1 162 2000.0 1.0 0.0 +it 02_wind_on 1 162 2000.0 1.0 0.0 +it 03_wind_off 1 162 2000.0 1.0 0.0 +it 04_res 1 162 2000.0 1.0 0.0 +it 05_nuclear 1 162 2000.0 1.0 0.0 +it 06_coal 1 162 2000.0 1.0 0.0 +it 07_gas 1 162 2000.0 1.0 0.0 +it 08_non-res 1 162 2000.0 1.0 0.0 +it 09_hydro_pump 1 162 100.0 1.0 0.0 +it 01_solar 1 163 2000.0 1.0 0.0 +it 02_wind_on 1 163 2000.0 1.0 0.0 +it 03_wind_off 1 163 2000.0 1.0 0.0 +it 04_res 1 163 2000.0 1.0 0.0 +it 05_nuclear 1 163 2000.0 1.0 0.0 +it 06_coal 1 163 2000.0 1.0 0.0 +it 07_gas 1 163 2000.0 1.0 0.0 +it 08_non-res 1 163 2000.0 1.0 0.0 +it 09_hydro_pump 1 163 200.0 1.0 0.0 +it 01_solar 1 164 2000.0 1.0 0.0 +it 02_wind_on 1 164 2000.0 1.0 0.0 +it 03_wind_off 1 164 2000.0 1.0 0.0 +it 04_res 1 164 2000.0 1.0 0.0 +it 05_nuclear 1 164 2000.0 1.0 0.0 +it 06_coal 1 164 2000.0 1.0 0.0 +it 07_gas 1 164 2000.0 1.0 0.0 +it 08_non-res 1 164 2000.0 1.0 0.0 +it 09_hydro_pump 1 164 300.0 1.0 0.0 +it 01_solar 1 165 2000.0 1.0 0.0 +it 02_wind_on 1 165 2000.0 1.0 0.0 +it 03_wind_off 1 165 2000.0 1.0 0.0 +it 04_res 1 165 2000.0 1.0 0.0 +it 05_nuclear 1 165 2000.0 1.0 0.0 +it 06_coal 1 165 2000.0 1.0 0.0 +it 07_gas 1 165 2000.0 1.0 0.0 +it 08_non-res 1 165 2000.0 1.0 0.0 +it 09_hydro_pump 1 165 400.0 1.0 0.0 +it 01_solar 1 166 2000.0 1.0 0.0 +it 02_wind_on 1 166 2000.0 1.0 0.0 +it 03_wind_off 1 166 2000.0 1.0 0.0 +it 04_res 1 166 2000.0 1.0 0.0 +it 05_nuclear 1 166 2000.0 1.0 0.0 +it 06_coal 1 166 2000.0 1.0 0.0 +it 07_gas 1 166 2000.0 1.0 0.0 +it 08_non-res 1 166 2000.0 1.0 0.0 +it 09_hydro_pump 1 166 500.0 1.0 0.0 +it 01_solar 1 167 2000.0 1.0 0.0 +it 02_wind_on 1 167 2000.0 1.0 0.0 +it 03_wind_off 1 167 2000.0 1.0 0.0 +it 04_res 1 167 2000.0 1.0 0.0 +it 05_nuclear 1 167 2000.0 1.0 0.0 +it 06_coal 1 167 2000.0 1.0 0.0 +it 07_gas 1 167 2000.0 1.0 0.0 +it 08_non-res 1 167 2000.0 1.0 0.0 +it 09_hydro_pump 1 167 600.0 1.0 0.0 +it 01_solar 1 168 2000.0 1.0 0.0 +it 02_wind_on 1 168 2000.0 1.0 0.0 +it 03_wind_off 1 168 2000.0 1.0 0.0 +it 04_res 1 168 2000.0 1.0 0.0 +it 05_nuclear 1 168 2000.0 1.0 0.0 +it 06_coal 1 168 2000.0 1.0 0.0 +it 07_gas 1 168 2000.0 1.0 0.0 +it 08_non-res 1 168 2000.0 1.0 0.0 +it 09_hydro_pump 1 168 700.0 1.0 0.0 +it 01_solar 1 169 0.0 0.0 0.0 +it 02_wind_on 1 169 0.0 0.0 0.0 +it 03_wind_off 1 169 0.0 0.0 0.0 +it 04_res 1 169 0.0 0.0 0.0 +it 05_nuclear 1 169 0.0 0.0 0.0 +it 06_coal 1 169 0.0 0.0 0.0 +it 07_gas 1 169 0.0 0.0 0.0 +it 08_non-res 1 169 0.0 0.0 0.0 +it 09_hydro_pump 1 169 0.0 0.0 0.0 +it 01_solar 1 170 100.0 1.0 0.0 +it 02_wind_on 1 170 0.0 0.0 0.0 +it 03_wind_off 1 170 0.0 0.0 0.0 +it 04_res 1 170 0.0 0.0 0.0 +it 05_nuclear 1 170 0.0 0.0 0.0 +it 06_coal 1 170 0.0 0.0 0.0 +it 07_gas 1 170 0.0 0.0 0.0 +it 08_non-res 1 170 0.0 0.0 0.0 +it 09_hydro_pump 1 170 0.0 0.0 0.0 +it 01_solar 1 171 200.0 1.0 0.0 +it 02_wind_on 1 171 0.0 0.0 0.0 +it 03_wind_off 1 171 0.0 0.0 0.0 +it 04_res 1 171 0.0 0.0 0.0 +it 05_nuclear 1 171 0.0 0.0 0.0 +it 06_coal 1 171 0.0 0.0 0.0 +it 07_gas 1 171 0.0 0.0 0.0 +it 08_non-res 1 171 0.0 0.0 0.0 +it 09_hydro_pump 1 171 0.0 0.0 0.0 +it 01_solar 1 172 300.0 1.0 0.0 +it 02_wind_on 1 172 0.0 0.0 0.0 +it 03_wind_off 1 172 0.0 0.0 0.0 +it 04_res 1 172 0.0 0.0 0.0 +it 05_nuclear 1 172 0.0 0.0 0.0 +it 06_coal 1 172 0.0 0.0 0.0 +it 07_gas 1 172 0.0 0.0 0.0 +it 08_non-res 1 172 0.0 0.0 0.0 +it 09_hydro_pump 1 172 0.0 0.0 0.0 +it 01_solar 1 173 400.0 1.0 0.0 +it 02_wind_on 1 173 0.0 0.0 0.0 +it 03_wind_off 1 173 0.0 0.0 0.0 +it 04_res 1 173 0.0 0.0 0.0 +it 05_nuclear 1 173 0.0 0.0 0.0 +it 06_coal 1 173 0.0 0.0 0.0 +it 07_gas 1 173 0.0 0.0 0.0 +it 08_non-res 1 173 0.0 0.0 0.0 +it 09_hydro_pump 1 173 0.0 0.0 0.0 +it 01_solar 1 174 500.0 1.0 0.0 +it 02_wind_on 1 174 0.0 0.0 0.0 +it 03_wind_off 1 174 0.0 0.0 0.0 +it 04_res 1 174 0.0 0.0 0.0 +it 05_nuclear 1 174 0.0 0.0 0.0 +it 06_coal 1 174 0.0 0.0 0.0 +it 07_gas 1 174 0.0 0.0 0.0 +it 08_non-res 1 174 0.0 0.0 0.0 +it 09_hydro_pump 1 174 0.0 0.0 0.0 +it 01_solar 1 175 600.0 1.0 0.0 +it 02_wind_on 1 175 0.0 0.0 0.0 +it 03_wind_off 1 175 0.0 0.0 0.0 +it 04_res 1 175 0.0 0.0 0.0 +it 05_nuclear 1 175 0.0 0.0 0.0 +it 06_coal 1 175 0.0 0.0 0.0 +it 07_gas 1 175 0.0 0.0 0.0 +it 08_non-res 1 175 0.0 0.0 0.0 +it 09_hydro_pump 1 175 0.0 0.0 0.0 +it 01_solar 1 176 700.0 1.0 0.0 +it 02_wind_on 1 176 0.0 0.0 0.0 +it 03_wind_off 1 176 0.0 0.0 0.0 +it 04_res 1 176 0.0 0.0 0.0 +it 05_nuclear 1 176 0.0 0.0 0.0 +it 06_coal 1 176 0.0 0.0 0.0 +it 07_gas 1 176 0.0 0.0 0.0 +it 08_non-res 1 176 0.0 0.0 0.0 +it 09_hydro_pump 1 176 0.0 0.0 0.0 +it 01_solar 1 177 800.0 1.0 0.0 +it 02_wind_on 1 177 0.0 0.0 0.0 +it 03_wind_off 1 177 0.0 0.0 0.0 +it 04_res 1 177 0.0 0.0 0.0 +it 05_nuclear 1 177 0.0 0.0 0.0 +it 06_coal 1 177 0.0 0.0 0.0 +it 07_gas 1 177 0.0 0.0 0.0 +it 08_non-res 1 177 0.0 0.0 0.0 +it 09_hydro_pump 1 177 0.0 0.0 0.0 +it 01_solar 1 178 900.0 1.0 0.0 +it 02_wind_on 1 178 0.0 0.0 0.0 +it 03_wind_off 1 178 0.0 0.0 0.0 +it 04_res 1 178 0.0 0.0 0.0 +it 05_nuclear 1 178 0.0 0.0 0.0 +it 06_coal 1 178 0.0 0.0 0.0 +it 07_gas 1 178 0.0 0.0 0.0 +it 08_non-res 1 178 0.0 0.0 0.0 +it 09_hydro_pump 1 178 0.0 0.0 0.0 +it 01_solar 1 179 1000.0 1.0 0.0 +it 02_wind_on 1 179 0.0 0.0 0.0 +it 03_wind_off 1 179 0.0 0.0 0.0 +it 04_res 1 179 0.0 0.0 0.0 +it 05_nuclear 1 179 0.0 0.0 0.0 +it 06_coal 1 179 0.0 0.0 0.0 +it 07_gas 1 179 0.0 0.0 0.0 +it 08_non-res 1 179 0.0 0.0 0.0 +it 09_hydro_pump 1 179 0.0 0.0 0.0 +it 01_solar 1 180 1100.0 1.0 0.0 +it 02_wind_on 1 180 0.0 0.0 0.0 +it 03_wind_off 1 180 0.0 0.0 0.0 +it 04_res 1 180 0.0 0.0 0.0 +it 05_nuclear 1 180 0.0 0.0 0.0 +it 06_coal 1 180 0.0 0.0 0.0 +it 07_gas 1 180 0.0 0.0 0.0 +it 08_non-res 1 180 0.0 0.0 0.0 +it 09_hydro_pump 1 180 0.0 0.0 0.0 +it 01_solar 1 181 1200.0 1.0 0.0 +it 02_wind_on 1 181 0.0 0.0 0.0 +it 03_wind_off 1 181 0.0 0.0 0.0 +it 04_res 1 181 0.0 0.0 0.0 +it 05_nuclear 1 181 0.0 0.0 0.0 +it 06_coal 1 181 0.0 0.0 0.0 +it 07_gas 1 181 0.0 0.0 0.0 +it 08_non-res 1 181 0.0 0.0 0.0 +it 09_hydro_pump 1 181 0.0 0.0 0.0 +it 01_solar 1 182 1300.0 1.0 0.0 +it 02_wind_on 1 182 0.0 0.0 0.0 +it 03_wind_off 1 182 0.0 0.0 0.0 +it 04_res 1 182 0.0 0.0 0.0 +it 05_nuclear 1 182 0.0 0.0 0.0 +it 06_coal 1 182 0.0 0.0 0.0 +it 07_gas 1 182 0.0 0.0 0.0 +it 08_non-res 1 182 0.0 0.0 0.0 +it 09_hydro_pump 1 182 0.0 0.0 0.0 +it 01_solar 1 183 1400.0 1.0 0.0 +it 02_wind_on 1 183 0.0 0.0 0.0 +it 03_wind_off 1 183 0.0 0.0 0.0 +it 04_res 1 183 0.0 0.0 0.0 +it 05_nuclear 1 183 0.0 0.0 0.0 +it 06_coal 1 183 0.0 0.0 0.0 +it 07_gas 1 183 0.0 0.0 0.0 +it 08_non-res 1 183 0.0 0.0 0.0 +it 09_hydro_pump 1 183 0.0 0.0 0.0 +it 01_solar 1 184 1500.0 1.0 0.0 +it 02_wind_on 1 184 0.0 0.0 0.0 +it 03_wind_off 1 184 0.0 0.0 0.0 +it 04_res 1 184 0.0 0.0 0.0 +it 05_nuclear 1 184 0.0 0.0 0.0 +it 06_coal 1 184 0.0 0.0 0.0 +it 07_gas 1 184 0.0 0.0 0.0 +it 08_non-res 1 184 0.0 0.0 0.0 +it 09_hydro_pump 1 184 0.0 0.0 0.0 +it 01_solar 1 185 1600.0 1.0 0.0 +it 02_wind_on 1 185 0.0 0.0 0.0 +it 03_wind_off 1 185 0.0 0.0 0.0 +it 04_res 1 185 0.0 0.0 0.0 +it 05_nuclear 1 185 0.0 0.0 0.0 +it 06_coal 1 185 0.0 0.0 0.0 +it 07_gas 1 185 0.0 0.0 0.0 +it 08_non-res 1 185 0.0 0.0 0.0 +it 09_hydro_pump 1 185 0.0 0.0 0.0 +it 01_solar 1 186 1700.0 1.0 0.0 +it 02_wind_on 1 186 0.0 0.0 0.0 +it 03_wind_off 1 186 0.0 0.0 0.0 +it 04_res 1 186 0.0 0.0 0.0 +it 05_nuclear 1 186 0.0 0.0 0.0 +it 06_coal 1 186 0.0 0.0 0.0 +it 07_gas 1 186 0.0 0.0 0.0 +it 08_non-res 1 186 0.0 0.0 0.0 +it 09_hydro_pump 1 186 0.0 0.0 0.0 +it 01_solar 1 187 1800.0 1.0 0.0 +it 02_wind_on 1 187 0.0 0.0 0.0 +it 03_wind_off 1 187 0.0 0.0 0.0 +it 04_res 1 187 0.0 0.0 0.0 +it 05_nuclear 1 187 0.0 0.0 0.0 +it 06_coal 1 187 0.0 0.0 0.0 +it 07_gas 1 187 0.0 0.0 0.0 +it 08_non-res 1 187 0.0 0.0 0.0 +it 09_hydro_pump 1 187 0.0 0.0 0.0 +it 01_solar 1 188 1900.0 1.0 0.0 +it 02_wind_on 1 188 0.0 0.0 0.0 +it 03_wind_off 1 188 0.0 0.0 0.0 +it 04_res 1 188 0.0 0.0 0.0 +it 05_nuclear 1 188 0.0 0.0 0.0 +it 06_coal 1 188 0.0 0.0 0.0 +it 07_gas 1 188 0.0 0.0 0.0 +it 08_non-res 1 188 0.0 0.0 0.0 +it 09_hydro_pump 1 188 0.0 0.0 0.0 +it 01_solar 1 189 2000.0 1.0 0.0 +it 02_wind_on 1 189 0.0 0.0 0.0 +it 03_wind_off 1 189 0.0 0.0 0.0 +it 04_res 1 189 0.0 0.0 0.0 +it 05_nuclear 1 189 0.0 0.0 0.0 +it 06_coal 1 189 0.0 0.0 0.0 +it 07_gas 1 189 0.0 0.0 0.0 +it 08_non-res 1 189 0.0 0.0 0.0 +it 09_hydro_pump 1 189 0.0 0.0 0.0 +it 01_solar 1 190 2000.0 1.0 0.0 +it 02_wind_on 1 190 100.0 1.0 0.0 +it 03_wind_off 1 190 0.0 0.0 0.0 +it 04_res 1 190 0.0 0.0 0.0 +it 05_nuclear 1 190 0.0 0.0 0.0 +it 06_coal 1 190 0.0 0.0 0.0 +it 07_gas 1 190 0.0 0.0 0.0 +it 08_non-res 1 190 0.0 0.0 0.0 +it 09_hydro_pump 1 190 0.0 0.0 0.0 +it 01_solar 1 191 2000.0 1.0 0.0 +it 02_wind_on 1 191 200.0 1.0 0.0 +it 03_wind_off 1 191 0.0 0.0 0.0 +it 04_res 1 191 0.0 0.0 0.0 +it 05_nuclear 1 191 0.0 0.0 0.0 +it 06_coal 1 191 0.0 0.0 0.0 +it 07_gas 1 191 0.0 0.0 0.0 +it 08_non-res 1 191 0.0 0.0 0.0 +it 09_hydro_pump 1 191 0.0 0.0 0.0 +it 01_solar 1 192 2000.0 1.0 0.0 +it 02_wind_on 1 192 300.0 1.0 0.0 +it 03_wind_off 1 192 0.0 0.0 0.0 +it 04_res 1 192 0.0 0.0 0.0 +it 05_nuclear 1 192 0.0 0.0 0.0 +it 06_coal 1 192 0.0 0.0 0.0 +it 07_gas 1 192 0.0 0.0 0.0 +it 08_non-res 1 192 0.0 0.0 0.0 +it 09_hydro_pump 1 192 0.0 0.0 0.0 +it 01_solar 1 193 2000.0 1.0 0.0 +it 02_wind_on 1 193 400.0 1.0 0.0 +it 03_wind_off 1 193 0.0 0.0 0.0 +it 04_res 1 193 0.0 0.0 0.0 +it 05_nuclear 1 193 0.0 0.0 0.0 +it 06_coal 1 193 0.0 0.0 0.0 +it 07_gas 1 193 0.0 0.0 0.0 +it 08_non-res 1 193 0.0 0.0 0.0 +it 09_hydro_pump 1 193 0.0 0.0 0.0 +it 01_solar 1 194 2000.0 1.0 0.0 +it 02_wind_on 1 194 500.0 1.0 0.0 +it 03_wind_off 1 194 0.0 0.0 0.0 +it 04_res 1 194 0.0 0.0 0.0 +it 05_nuclear 1 194 0.0 0.0 0.0 +it 06_coal 1 194 0.0 0.0 0.0 +it 07_gas 1 194 0.0 0.0 0.0 +it 08_non-res 1 194 0.0 0.0 0.0 +it 09_hydro_pump 1 194 0.0 0.0 0.0 +it 01_solar 1 195 2000.0 1.0 0.0 +it 02_wind_on 1 195 600.0 1.0 0.0 +it 03_wind_off 1 195 0.0 0.0 0.0 +it 04_res 1 195 0.0 0.0 0.0 +it 05_nuclear 1 195 0.0 0.0 0.0 +it 06_coal 1 195 0.0 0.0 0.0 +it 07_gas 1 195 0.0 0.0 0.0 +it 08_non-res 1 195 0.0 0.0 0.0 +it 09_hydro_pump 1 195 0.0 0.0 0.0 +it 01_solar 1 196 2000.0 1.0 0.0 +it 02_wind_on 1 196 700.0 1.0 0.0 +it 03_wind_off 1 196 0.0 0.0 0.0 +it 04_res 1 196 0.0 0.0 0.0 +it 05_nuclear 1 196 0.0 0.0 0.0 +it 06_coal 1 196 0.0 0.0 0.0 +it 07_gas 1 196 0.0 0.0 0.0 +it 08_non-res 1 196 0.0 0.0 0.0 +it 09_hydro_pump 1 196 0.0 0.0 0.0 +it 01_solar 1 197 2000.0 1.0 0.0 +it 02_wind_on 1 197 800.0 1.0 0.0 +it 03_wind_off 1 197 0.0 0.0 0.0 +it 04_res 1 197 0.0 0.0 0.0 +it 05_nuclear 1 197 0.0 0.0 0.0 +it 06_coal 1 197 0.0 0.0 0.0 +it 07_gas 1 197 0.0 0.0 0.0 +it 08_non-res 1 197 0.0 0.0 0.0 +it 09_hydro_pump 1 197 0.0 0.0 0.0 +it 01_solar 1 198 2000.0 1.0 0.0 +it 02_wind_on 1 198 900.0 1.0 0.0 +it 03_wind_off 1 198 0.0 0.0 0.0 +it 04_res 1 198 0.0 0.0 0.0 +it 05_nuclear 1 198 0.0 0.0 0.0 +it 06_coal 1 198 0.0 0.0 0.0 +it 07_gas 1 198 0.0 0.0 0.0 +it 08_non-res 1 198 0.0 0.0 0.0 +it 09_hydro_pump 1 198 0.0 0.0 0.0 +it 01_solar 1 199 2000.0 1.0 0.0 +it 02_wind_on 1 199 1000.0 1.0 0.0 +it 03_wind_off 1 199 0.0 0.0 0.0 +it 04_res 1 199 0.0 0.0 0.0 +it 05_nuclear 1 199 0.0 0.0 0.0 +it 06_coal 1 199 0.0 0.0 0.0 +it 07_gas 1 199 0.0 0.0 0.0 +it 08_non-res 1 199 0.0 0.0 0.0 +it 09_hydro_pump 1 199 0.0 0.0 0.0 +it 01_solar 1 200 2000.0 1.0 0.0 +it 02_wind_on 1 200 1100.0 1.0 0.0 +it 03_wind_off 1 200 0.0 0.0 0.0 +it 04_res 1 200 0.0 0.0 0.0 +it 05_nuclear 1 200 0.0 0.0 0.0 +it 06_coal 1 200 0.0 0.0 0.0 +it 07_gas 1 200 0.0 0.0 0.0 +it 08_non-res 1 200 0.0 0.0 0.0 +it 09_hydro_pump 1 200 0.0 0.0 0.0 +it 01_solar 1 201 2000.0 1.0 0.0 +it 02_wind_on 1 201 1200.0 1.0 0.0 +it 03_wind_off 1 201 0.0 0.0 0.0 +it 04_res 1 201 0.0 0.0 0.0 +it 05_nuclear 1 201 0.0 0.0 0.0 +it 06_coal 1 201 0.0 0.0 0.0 +it 07_gas 1 201 0.0 0.0 0.0 +it 08_non-res 1 201 0.0 0.0 0.0 +it 09_hydro_pump 1 201 0.0 0.0 0.0 +it 01_solar 1 202 2000.0 1.0 0.0 +it 02_wind_on 1 202 1300.0 1.0 0.0 +it 03_wind_off 1 202 0.0 0.0 0.0 +it 04_res 1 202 0.0 0.0 0.0 +it 05_nuclear 1 202 0.0 0.0 0.0 +it 06_coal 1 202 0.0 0.0 0.0 +it 07_gas 1 202 0.0 0.0 0.0 +it 08_non-res 1 202 0.0 0.0 0.0 +it 09_hydro_pump 1 202 0.0 0.0 0.0 +it 01_solar 1 203 2000.0 1.0 0.0 +it 02_wind_on 1 203 1400.0 1.0 0.0 +it 03_wind_off 1 203 0.0 0.0 0.0 +it 04_res 1 203 0.0 0.0 0.0 +it 05_nuclear 1 203 0.0 0.0 0.0 +it 06_coal 1 203 0.0 0.0 0.0 +it 07_gas 1 203 0.0 0.0 0.0 +it 08_non-res 1 203 0.0 0.0 0.0 +it 09_hydro_pump 1 203 0.0 0.0 0.0 +it 01_solar 1 204 2000.0 1.0 0.0 +it 02_wind_on 1 204 1500.0 1.0 0.0 +it 03_wind_off 1 204 0.0 0.0 0.0 +it 04_res 1 204 0.0 0.0 0.0 +it 05_nuclear 1 204 0.0 0.0 0.0 +it 06_coal 1 204 0.0 0.0 0.0 +it 07_gas 1 204 0.0 0.0 0.0 +it 08_non-res 1 204 0.0 0.0 0.0 +it 09_hydro_pump 1 204 0.0 0.0 0.0 +it 01_solar 1 205 2000.0 1.0 0.0 +it 02_wind_on 1 205 1600.0 1.0 0.0 +it 03_wind_off 1 205 0.0 0.0 0.0 +it 04_res 1 205 0.0 0.0 0.0 +it 05_nuclear 1 205 0.0 0.0 0.0 +it 06_coal 1 205 0.0 0.0 0.0 +it 07_gas 1 205 0.0 0.0 0.0 +it 08_non-res 1 205 0.0 0.0 0.0 +it 09_hydro_pump 1 205 0.0 0.0 0.0 +it 01_solar 1 206 2000.0 1.0 0.0 +it 02_wind_on 1 206 1700.0 1.0 0.0 +it 03_wind_off 1 206 0.0 0.0 0.0 +it 04_res 1 206 0.0 0.0 0.0 +it 05_nuclear 1 206 0.0 0.0 0.0 +it 06_coal 1 206 0.0 0.0 0.0 +it 07_gas 1 206 0.0 0.0 0.0 +it 08_non-res 1 206 0.0 0.0 0.0 +it 09_hydro_pump 1 206 0.0 0.0 0.0 +it 01_solar 1 207 2000.0 1.0 0.0 +it 02_wind_on 1 207 1800.0 1.0 0.0 +it 03_wind_off 1 207 0.0 0.0 0.0 +it 04_res 1 207 0.0 0.0 0.0 +it 05_nuclear 1 207 0.0 0.0 0.0 +it 06_coal 1 207 0.0 0.0 0.0 +it 07_gas 1 207 0.0 0.0 0.0 +it 08_non-res 1 207 0.0 0.0 0.0 +it 09_hydro_pump 1 207 0.0 0.0 0.0 +it 01_solar 1 208 2000.0 1.0 0.0 +it 02_wind_on 1 208 1900.0 1.0 0.0 +it 03_wind_off 1 208 0.0 0.0 0.0 +it 04_res 1 208 0.0 0.0 0.0 +it 05_nuclear 1 208 0.0 0.0 0.0 +it 06_coal 1 208 0.0 0.0 0.0 +it 07_gas 1 208 0.0 0.0 0.0 +it 08_non-res 1 208 0.0 0.0 0.0 +it 09_hydro_pump 1 208 0.0 0.0 0.0 +it 01_solar 1 209 2000.0 1.0 0.0 +it 02_wind_on 1 209 2000.0 1.0 0.0 +it 03_wind_off 1 209 0.0 0.0 0.0 +it 04_res 1 209 0.0 0.0 0.0 +it 05_nuclear 1 209 0.0 0.0 0.0 +it 06_coal 1 209 0.0 0.0 0.0 +it 07_gas 1 209 0.0 0.0 0.0 +it 08_non-res 1 209 0.0 0.0 0.0 +it 09_hydro_pump 1 209 0.0 0.0 0.0 +it 01_solar 1 210 2000.0 1.0 0.0 +it 02_wind_on 1 210 2000.0 1.0 0.0 +it 03_wind_off 1 210 100.0 1.0 0.0 +it 04_res 1 210 0.0 0.0 0.0 +it 05_nuclear 1 210 0.0 0.0 0.0 +it 06_coal 1 210 0.0 0.0 0.0 +it 07_gas 1 210 0.0 0.0 0.0 +it 08_non-res 1 210 0.0 0.0 0.0 +it 09_hydro_pump 1 210 0.0 0.0 0.0 +it 01_solar 1 211 2000.0 1.0 0.0 +it 02_wind_on 1 211 2000.0 1.0 0.0 +it 03_wind_off 1 211 200.0 1.0 0.0 +it 04_res 1 211 0.0 0.0 0.0 +it 05_nuclear 1 211 0.0 0.0 0.0 +it 06_coal 1 211 0.0 0.0 0.0 +it 07_gas 1 211 0.0 0.0 0.0 +it 08_non-res 1 211 0.0 0.0 0.0 +it 09_hydro_pump 1 211 0.0 0.0 0.0 +it 01_solar 1 212 2000.0 1.0 0.0 +it 02_wind_on 1 212 2000.0 1.0 0.0 +it 03_wind_off 1 212 300.0 1.0 0.0 +it 04_res 1 212 0.0 0.0 0.0 +it 05_nuclear 1 212 0.0 0.0 0.0 +it 06_coal 1 212 0.0 0.0 0.0 +it 07_gas 1 212 0.0 0.0 0.0 +it 08_non-res 1 212 0.0 0.0 0.0 +it 09_hydro_pump 1 212 0.0 0.0 0.0 +it 01_solar 1 213 2000.0 1.0 0.0 +it 02_wind_on 1 213 2000.0 1.0 0.0 +it 03_wind_off 1 213 400.0 1.0 0.0 +it 04_res 1 213 0.0 0.0 0.0 +it 05_nuclear 1 213 0.0 0.0 0.0 +it 06_coal 1 213 0.0 0.0 0.0 +it 07_gas 1 213 0.0 0.0 0.0 +it 08_non-res 1 213 0.0 0.0 0.0 +it 09_hydro_pump 1 213 0.0 0.0 0.0 +it 01_solar 1 214 2000.0 1.0 0.0 +it 02_wind_on 1 214 2000.0 1.0 0.0 +it 03_wind_off 1 214 500.0 1.0 0.0 +it 04_res 1 214 0.0 0.0 0.0 +it 05_nuclear 1 214 0.0 0.0 0.0 +it 06_coal 1 214 0.0 0.0 0.0 +it 07_gas 1 214 0.0 0.0 0.0 +it 08_non-res 1 214 0.0 0.0 0.0 +it 09_hydro_pump 1 214 0.0 0.0 0.0 +it 01_solar 1 215 2000.0 1.0 0.0 +it 02_wind_on 1 215 2000.0 1.0 0.0 +it 03_wind_off 1 215 600.0 1.0 0.0 +it 04_res 1 215 0.0 0.0 0.0 +it 05_nuclear 1 215 0.0 0.0 0.0 +it 06_coal 1 215 0.0 0.0 0.0 +it 07_gas 1 215 0.0 0.0 0.0 +it 08_non-res 1 215 0.0 0.0 0.0 +it 09_hydro_pump 1 215 0.0 0.0 0.0 +it 01_solar 1 216 2000.0 1.0 0.0 +it 02_wind_on 1 216 2000.0 1.0 0.0 +it 03_wind_off 1 216 700.0 1.0 0.0 +it 04_res 1 216 0.0 0.0 0.0 +it 05_nuclear 1 216 0.0 0.0 0.0 +it 06_coal 1 216 0.0 0.0 0.0 +it 07_gas 1 216 0.0 0.0 0.0 +it 08_non-res 1 216 0.0 0.0 0.0 +it 09_hydro_pump 1 216 0.0 0.0 0.0 +it 01_solar 1 217 2000.0 1.0 0.0 +it 02_wind_on 1 217 2000.0 1.0 0.0 +it 03_wind_off 1 217 800.0 1.0 0.0 +it 04_res 1 217 0.0 0.0 0.0 +it 05_nuclear 1 217 0.0 0.0 0.0 +it 06_coal 1 217 0.0 0.0 0.0 +it 07_gas 1 217 0.0 0.0 0.0 +it 08_non-res 1 217 0.0 0.0 0.0 +it 09_hydro_pump 1 217 0.0 0.0 0.0 +it 01_solar 1 218 2000.0 1.0 0.0 +it 02_wind_on 1 218 2000.0 1.0 0.0 +it 03_wind_off 1 218 900.0 1.0 0.0 +it 04_res 1 218 0.0 0.0 0.0 +it 05_nuclear 1 218 0.0 0.0 0.0 +it 06_coal 1 218 0.0 0.0 0.0 +it 07_gas 1 218 0.0 0.0 0.0 +it 08_non-res 1 218 0.0 0.0 0.0 +it 09_hydro_pump 1 218 0.0 0.0 0.0 +it 01_solar 1 219 2000.0 1.0 0.0 +it 02_wind_on 1 219 2000.0 1.0 0.0 +it 03_wind_off 1 219 1000.0 1.0 0.0 +it 04_res 1 219 0.0 0.0 0.0 +it 05_nuclear 1 219 0.0 0.0 0.0 +it 06_coal 1 219 0.0 0.0 0.0 +it 07_gas 1 219 0.0 0.0 0.0 +it 08_non-res 1 219 0.0 0.0 0.0 +it 09_hydro_pump 1 219 0.0 0.0 0.0 +it 01_solar 1 220 2000.0 1.0 0.0 +it 02_wind_on 1 220 2000.0 1.0 0.0 +it 03_wind_off 1 220 1100.0 1.0 0.0 +it 04_res 1 220 0.0 0.0 0.0 +it 05_nuclear 1 220 0.0 0.0 0.0 +it 06_coal 1 220 0.0 0.0 0.0 +it 07_gas 1 220 0.0 0.0 0.0 +it 08_non-res 1 220 0.0 0.0 0.0 +it 09_hydro_pump 1 220 0.0 0.0 0.0 +it 01_solar 1 221 2000.0 1.0 0.0 +it 02_wind_on 1 221 2000.0 1.0 0.0 +it 03_wind_off 1 221 1200.0 1.0 0.0 +it 04_res 1 221 0.0 0.0 0.0 +it 05_nuclear 1 221 0.0 0.0 0.0 +it 06_coal 1 221 0.0 0.0 0.0 +it 07_gas 1 221 0.0 0.0 0.0 +it 08_non-res 1 221 0.0 0.0 0.0 +it 09_hydro_pump 1 221 0.0 0.0 0.0 +it 01_solar 1 222 2000.0 1.0 0.0 +it 02_wind_on 1 222 2000.0 1.0 0.0 +it 03_wind_off 1 222 1300.0 1.0 0.0 +it 04_res 1 222 0.0 0.0 0.0 +it 05_nuclear 1 222 0.0 0.0 0.0 +it 06_coal 1 222 0.0 0.0 0.0 +it 07_gas 1 222 0.0 0.0 0.0 +it 08_non-res 1 222 0.0 0.0 0.0 +it 09_hydro_pump 1 222 0.0 0.0 0.0 +it 01_solar 1 223 2000.0 1.0 0.0 +it 02_wind_on 1 223 2000.0 1.0 0.0 +it 03_wind_off 1 223 1400.0 1.0 0.0 +it 04_res 1 223 0.0 0.0 0.0 +it 05_nuclear 1 223 0.0 0.0 0.0 +it 06_coal 1 223 0.0 0.0 0.0 +it 07_gas 1 223 0.0 0.0 0.0 +it 08_non-res 1 223 0.0 0.0 0.0 +it 09_hydro_pump 1 223 0.0 0.0 0.0 +it 01_solar 1 224 2000.0 1.0 0.0 +it 02_wind_on 1 224 2000.0 1.0 0.0 +it 03_wind_off 1 224 1500.0 1.0 0.0 +it 04_res 1 224 0.0 0.0 0.0 +it 05_nuclear 1 224 0.0 0.0 0.0 +it 06_coal 1 224 0.0 0.0 0.0 +it 07_gas 1 224 0.0 0.0 0.0 +it 08_non-res 1 224 0.0 0.0 0.0 +it 09_hydro_pump 1 224 0.0 0.0 0.0 +it 01_solar 1 225 2000.0 1.0 0.0 +it 02_wind_on 1 225 2000.0 1.0 0.0 +it 03_wind_off 1 225 1600.0 1.0 0.0 +it 04_res 1 225 0.0 0.0 0.0 +it 05_nuclear 1 225 0.0 0.0 0.0 +it 06_coal 1 225 0.0 0.0 0.0 +it 07_gas 1 225 0.0 0.0 0.0 +it 08_non-res 1 225 0.0 0.0 0.0 +it 09_hydro_pump 1 225 0.0 0.0 0.0 +it 01_solar 1 226 2000.0 1.0 0.0 +it 02_wind_on 1 226 2000.0 1.0 0.0 +it 03_wind_off 1 226 1700.0 1.0 0.0 +it 04_res 1 226 0.0 0.0 0.0 +it 05_nuclear 1 226 0.0 0.0 0.0 +it 06_coal 1 226 0.0 0.0 0.0 +it 07_gas 1 226 0.0 0.0 0.0 +it 08_non-res 1 226 0.0 0.0 0.0 +it 09_hydro_pump 1 226 0.0 0.0 0.0 +it 01_solar 1 227 2000.0 1.0 0.0 +it 02_wind_on 1 227 2000.0 1.0 0.0 +it 03_wind_off 1 227 1800.0 1.0 0.0 +it 04_res 1 227 0.0 0.0 0.0 +it 05_nuclear 1 227 0.0 0.0 0.0 +it 06_coal 1 227 0.0 0.0 0.0 +it 07_gas 1 227 0.0 0.0 0.0 +it 08_non-res 1 227 0.0 0.0 0.0 +it 09_hydro_pump 1 227 0.0 0.0 0.0 +it 01_solar 1 228 2000.0 1.0 0.0 +it 02_wind_on 1 228 2000.0 1.0 0.0 +it 03_wind_off 1 228 1900.0 1.0 0.0 +it 04_res 1 228 0.0 0.0 0.0 +it 05_nuclear 1 228 0.0 0.0 0.0 +it 06_coal 1 228 0.0 0.0 0.0 +it 07_gas 1 228 0.0 0.0 0.0 +it 08_non-res 1 228 0.0 0.0 0.0 +it 09_hydro_pump 1 228 0.0 0.0 0.0 +it 01_solar 1 229 2000.0 1.0 0.0 +it 02_wind_on 1 229 2000.0 1.0 0.0 +it 03_wind_off 1 229 2000.0 1.0 0.0 +it 04_res 1 229 0.0 0.0 0.0 +it 05_nuclear 1 229 0.0 0.0 0.0 +it 06_coal 1 229 0.0 0.0 0.0 +it 07_gas 1 229 0.0 0.0 0.0 +it 08_non-res 1 229 0.0 0.0 0.0 +it 09_hydro_pump 1 229 0.0 0.0 0.0 +it 01_solar 1 230 2000.0 1.0 0.0 +it 02_wind_on 1 230 2000.0 1.0 0.0 +it 03_wind_off 1 230 2000.0 1.0 0.0 +it 04_res 1 230 100.0 1.0 0.0 +it 05_nuclear 1 230 0.0 0.0 0.0 +it 06_coal 1 230 0.0 0.0 0.0 +it 07_gas 1 230 0.0 0.0 0.0 +it 08_non-res 1 230 0.0 0.0 0.0 +it 09_hydro_pump 1 230 0.0 0.0 0.0 +it 01_solar 1 231 2000.0 1.0 0.0 +it 02_wind_on 1 231 2000.0 1.0 0.0 +it 03_wind_off 1 231 2000.0 1.0 0.0 +it 04_res 1 231 200.0 1.0 0.0 +it 05_nuclear 1 231 0.0 0.0 0.0 +it 06_coal 1 231 0.0 0.0 0.0 +it 07_gas 1 231 0.0 0.0 0.0 +it 08_non-res 1 231 0.0 0.0 0.0 +it 09_hydro_pump 1 231 0.0 0.0 0.0 +it 01_solar 1 232 2000.0 1.0 0.0 +it 02_wind_on 1 232 2000.0 1.0 0.0 +it 03_wind_off 1 232 2000.0 1.0 0.0 +it 04_res 1 232 300.0 1.0 0.0 +it 05_nuclear 1 232 0.0 0.0 0.0 +it 06_coal 1 232 0.0 0.0 0.0 +it 07_gas 1 232 0.0 0.0 0.0 +it 08_non-res 1 232 0.0 0.0 0.0 +it 09_hydro_pump 1 232 0.0 0.0 0.0 +it 01_solar 1 233 2000.0 1.0 0.0 +it 02_wind_on 1 233 2000.0 1.0 0.0 +it 03_wind_off 1 233 2000.0 1.0 0.0 +it 04_res 1 233 400.0 1.0 0.0 +it 05_nuclear 1 233 0.0 0.0 0.0 +it 06_coal 1 233 0.0 0.0 0.0 +it 07_gas 1 233 0.0 0.0 0.0 +it 08_non-res 1 233 0.0 0.0 0.0 +it 09_hydro_pump 1 233 0.0 0.0 0.0 +it 01_solar 1 234 2000.0 1.0 0.0 +it 02_wind_on 1 234 2000.0 1.0 0.0 +it 03_wind_off 1 234 2000.0 1.0 0.0 +it 04_res 1 234 500.0 1.0 0.0 +it 05_nuclear 1 234 0.0 0.0 0.0 +it 06_coal 1 234 0.0 0.0 0.0 +it 07_gas 1 234 0.0 0.0 0.0 +it 08_non-res 1 234 0.0 0.0 0.0 +it 09_hydro_pump 1 234 0.0 0.0 0.0 +it 01_solar 1 235 2000.0 1.0 0.0 +it 02_wind_on 1 235 2000.0 1.0 0.0 +it 03_wind_off 1 235 2000.0 1.0 0.0 +it 04_res 1 235 600.0 1.0 0.0 +it 05_nuclear 1 235 0.0 0.0 0.0 +it 06_coal 1 235 0.0 0.0 0.0 +it 07_gas 1 235 0.0 0.0 0.0 +it 08_non-res 1 235 0.0 0.0 0.0 +it 09_hydro_pump 1 235 0.0 0.0 0.0 +it 01_solar 1 236 2000.0 1.0 0.0 +it 02_wind_on 1 236 2000.0 1.0 0.0 +it 03_wind_off 1 236 2000.0 1.0 0.0 +it 04_res 1 236 700.0 1.0 0.0 +it 05_nuclear 1 236 0.0 0.0 0.0 +it 06_coal 1 236 0.0 0.0 0.0 +it 07_gas 1 236 0.0 0.0 0.0 +it 08_non-res 1 236 0.0 0.0 0.0 +it 09_hydro_pump 1 236 0.0 0.0 0.0 +it 01_solar 1 237 2000.0 1.0 0.0 +it 02_wind_on 1 237 2000.0 1.0 0.0 +it 03_wind_off 1 237 2000.0 1.0 0.0 +it 04_res 1 237 800.0 1.0 0.0 +it 05_nuclear 1 237 0.0 0.0 0.0 +it 06_coal 1 237 0.0 0.0 0.0 +it 07_gas 1 237 0.0 0.0 0.0 +it 08_non-res 1 237 0.0 0.0 0.0 +it 09_hydro_pump 1 237 0.0 0.0 0.0 +it 01_solar 1 238 2000.0 1.0 0.0 +it 02_wind_on 1 238 2000.0 1.0 0.0 +it 03_wind_off 1 238 2000.0 1.0 0.0 +it 04_res 1 238 900.0 1.0 0.0 +it 05_nuclear 1 238 0.0 0.0 0.0 +it 06_coal 1 238 0.0 0.0 0.0 +it 07_gas 1 238 0.0 0.0 0.0 +it 08_non-res 1 238 0.0 0.0 0.0 +it 09_hydro_pump 1 238 0.0 0.0 0.0 +it 01_solar 1 239 2000.0 1.0 0.0 +it 02_wind_on 1 239 2000.0 1.0 0.0 +it 03_wind_off 1 239 2000.0 1.0 0.0 +it 04_res 1 239 1000.0 1.0 0.0 +it 05_nuclear 1 239 0.0 0.0 0.0 +it 06_coal 1 239 0.0 0.0 0.0 +it 07_gas 1 239 0.0 0.0 0.0 +it 08_non-res 1 239 0.0 0.0 0.0 +it 09_hydro_pump 1 239 0.0 0.0 0.0 +it 01_solar 1 240 2000.0 1.0 0.0 +it 02_wind_on 1 240 2000.0 1.0 0.0 +it 03_wind_off 1 240 2000.0 1.0 0.0 +it 04_res 1 240 1100.0 1.0 0.0 +it 05_nuclear 1 240 0.0 0.0 0.0 +it 06_coal 1 240 0.0 0.0 0.0 +it 07_gas 1 240 0.0 0.0 0.0 +it 08_non-res 1 240 0.0 0.0 0.0 +it 09_hydro_pump 1 240 0.0 0.0 0.0 +it 01_solar 1 241 2000.0 1.0 0.0 +it 02_wind_on 1 241 2000.0 1.0 0.0 +it 03_wind_off 1 241 2000.0 1.0 0.0 +it 04_res 1 241 1200.0 1.0 0.0 +it 05_nuclear 1 241 0.0 0.0 0.0 +it 06_coal 1 241 0.0 0.0 0.0 +it 07_gas 1 241 0.0 0.0 0.0 +it 08_non-res 1 241 0.0 0.0 0.0 +it 09_hydro_pump 1 241 0.0 0.0 0.0 +it 01_solar 1 242 2000.0 1.0 0.0 +it 02_wind_on 1 242 2000.0 1.0 0.0 +it 03_wind_off 1 242 2000.0 1.0 0.0 +it 04_res 1 242 1300.0 1.0 0.0 +it 05_nuclear 1 242 0.0 0.0 0.0 +it 06_coal 1 242 0.0 0.0 0.0 +it 07_gas 1 242 0.0 0.0 0.0 +it 08_non-res 1 242 0.0 0.0 0.0 +it 09_hydro_pump 1 242 0.0 0.0 0.0 +it 01_solar 1 243 2000.0 1.0 0.0 +it 02_wind_on 1 243 2000.0 1.0 0.0 +it 03_wind_off 1 243 2000.0 1.0 0.0 +it 04_res 1 243 1400.0 1.0 0.0 +it 05_nuclear 1 243 0.0 0.0 0.0 +it 06_coal 1 243 0.0 0.0 0.0 +it 07_gas 1 243 0.0 0.0 0.0 +it 08_non-res 1 243 0.0 0.0 0.0 +it 09_hydro_pump 1 243 0.0 0.0 0.0 +it 01_solar 1 244 2000.0 1.0 0.0 +it 02_wind_on 1 244 2000.0 1.0 0.0 +it 03_wind_off 1 244 2000.0 1.0 0.0 +it 04_res 1 244 1500.0 1.0 0.0 +it 05_nuclear 1 244 0.0 0.0 0.0 +it 06_coal 1 244 0.0 0.0 0.0 +it 07_gas 1 244 0.0 0.0 0.0 +it 08_non-res 1 244 0.0 0.0 0.0 +it 09_hydro_pump 1 244 0.0 0.0 0.0 +it 01_solar 1 245 2000.0 1.0 0.0 +it 02_wind_on 1 245 2000.0 1.0 0.0 +it 03_wind_off 1 245 2000.0 1.0 0.0 +it 04_res 1 245 1600.0 1.0 0.0 +it 05_nuclear 1 245 0.0 0.0 0.0 +it 06_coal 1 245 0.0 0.0 0.0 +it 07_gas 1 245 0.0 0.0 0.0 +it 08_non-res 1 245 0.0 0.0 0.0 +it 09_hydro_pump 1 245 0.0 0.0 0.0 +it 01_solar 1 246 2000.0 1.0 0.0 +it 02_wind_on 1 246 2000.0 1.0 0.0 +it 03_wind_off 1 246 2000.0 1.0 0.0 +it 04_res 1 246 1700.0 1.0 0.0 +it 05_nuclear 1 246 0.0 0.0 0.0 +it 06_coal 1 246 0.0 0.0 0.0 +it 07_gas 1 246 0.0 0.0 0.0 +it 08_non-res 1 246 0.0 0.0 0.0 +it 09_hydro_pump 1 246 0.0 0.0 0.0 +it 01_solar 1 247 2000.0 1.0 0.0 +it 02_wind_on 1 247 2000.0 1.0 0.0 +it 03_wind_off 1 247 2000.0 1.0 0.0 +it 04_res 1 247 1800.0 1.0 0.0 +it 05_nuclear 1 247 0.0 0.0 0.0 +it 06_coal 1 247 0.0 0.0 0.0 +it 07_gas 1 247 0.0 0.0 0.0 +it 08_non-res 1 247 0.0 0.0 0.0 +it 09_hydro_pump 1 247 0.0 0.0 0.0 +it 01_solar 1 248 2000.0 1.0 0.0 +it 02_wind_on 1 248 2000.0 1.0 0.0 +it 03_wind_off 1 248 2000.0 1.0 0.0 +it 04_res 1 248 1900.0 1.0 0.0 +it 05_nuclear 1 248 0.0 0.0 0.0 +it 06_coal 1 248 0.0 0.0 0.0 +it 07_gas 1 248 0.0 0.0 0.0 +it 08_non-res 1 248 0.0 0.0 0.0 +it 09_hydro_pump 1 248 0.0 0.0 0.0 +it 01_solar 1 249 2000.0 1.0 0.0 +it 02_wind_on 1 249 2000.0 1.0 0.0 +it 03_wind_off 1 249 2000.0 1.0 0.0 +it 04_res 1 249 2000.0 1.0 0.0 +it 05_nuclear 1 249 0.0 0.0 0.0 +it 06_coal 1 249 0.0 0.0 0.0 +it 07_gas 1 249 0.0 0.0 0.0 +it 08_non-res 1 249 0.0 0.0 0.0 +it 09_hydro_pump 1 249 0.0 0.0 0.0 +it 01_solar 1 250 2000.0 1.0 0.0 +it 02_wind_on 1 250 2000.0 1.0 0.0 +it 03_wind_off 1 250 2000.0 1.0 0.0 +it 04_res 1 250 2000.0 1.0 0.0 +it 05_nuclear 1 250 100.0 1.0 0.0 +it 06_coal 1 250 0.0 0.0 0.0 +it 07_gas 1 250 0.0 0.0 0.0 +it 08_non-res 1 250 0.0 0.0 0.0 +it 09_hydro_pump 1 250 0.0 0.0 0.0 +it 01_solar 1 251 2000.0 1.0 0.0 +it 02_wind_on 1 251 2000.0 1.0 0.0 +it 03_wind_off 1 251 2000.0 1.0 0.0 +it 04_res 1 251 2000.0 1.0 0.0 +it 05_nuclear 1 251 200.0 1.0 0.0 +it 06_coal 1 251 0.0 0.0 0.0 +it 07_gas 1 251 0.0 0.0 0.0 +it 08_non-res 1 251 0.0 0.0 0.0 +it 09_hydro_pump 1 251 0.0 0.0 0.0 +it 01_solar 1 252 2000.0 1.0 0.0 +it 02_wind_on 1 252 2000.0 1.0 0.0 +it 03_wind_off 1 252 2000.0 1.0 0.0 +it 04_res 1 252 2000.0 1.0 0.0 +it 05_nuclear 1 252 300.0 1.0 0.0 +it 06_coal 1 252 0.0 0.0 0.0 +it 07_gas 1 252 0.0 0.0 0.0 +it 08_non-res 1 252 0.0 0.0 0.0 +it 09_hydro_pump 1 252 0.0 0.0 0.0 +it 01_solar 1 253 2000.0 1.0 0.0 +it 02_wind_on 1 253 2000.0 1.0 0.0 +it 03_wind_off 1 253 2000.0 1.0 0.0 +it 04_res 1 253 2000.0 1.0 0.0 +it 05_nuclear 1 253 400.0 1.0 0.0 +it 06_coal 1 253 0.0 0.0 0.0 +it 07_gas 1 253 0.0 0.0 0.0 +it 08_non-res 1 253 0.0 0.0 0.0 +it 09_hydro_pump 1 253 0.0 0.0 0.0 +it 01_solar 1 254 2000.0 1.0 0.0 +it 02_wind_on 1 254 2000.0 1.0 0.0 +it 03_wind_off 1 254 2000.0 1.0 0.0 +it 04_res 1 254 2000.0 1.0 0.0 +it 05_nuclear 1 254 500.0 1.0 0.0 +it 06_coal 1 254 0.0 0.0 0.0 +it 07_gas 1 254 0.0 0.0 0.0 +it 08_non-res 1 254 0.0 0.0 0.0 +it 09_hydro_pump 1 254 0.0 0.0 0.0 +it 01_solar 1 255 2000.0 1.0 0.0 +it 02_wind_on 1 255 2000.0 1.0 0.0 +it 03_wind_off 1 255 2000.0 1.0 0.0 +it 04_res 1 255 2000.0 1.0 0.0 +it 05_nuclear 1 255 600.0 1.0 0.0 +it 06_coal 1 255 0.0 0.0 0.0 +it 07_gas 1 255 0.0 0.0 0.0 +it 08_non-res 1 255 0.0 0.0 0.0 +it 09_hydro_pump 1 255 0.0 0.0 0.0 +it 01_solar 1 256 2000.0 1.0 0.0 +it 02_wind_on 1 256 2000.0 1.0 0.0 +it 03_wind_off 1 256 2000.0 1.0 0.0 +it 04_res 1 256 2000.0 1.0 0.0 +it 05_nuclear 1 256 700.0 1.0 0.0 +it 06_coal 1 256 0.0 0.0 0.0 +it 07_gas 1 256 0.0 0.0 0.0 +it 08_non-res 1 256 0.0 0.0 0.0 +it 09_hydro_pump 1 256 0.0 0.0 0.0 +it 01_solar 1 257 2000.0 1.0 0.0 +it 02_wind_on 1 257 2000.0 1.0 0.0 +it 03_wind_off 1 257 2000.0 1.0 0.0 +it 04_res 1 257 2000.0 1.0 0.0 +it 05_nuclear 1 257 800.0 1.0 0.0 +it 06_coal 1 257 0.0 0.0 0.0 +it 07_gas 1 257 0.0 0.0 0.0 +it 08_non-res 1 257 0.0 0.0 0.0 +it 09_hydro_pump 1 257 0.0 0.0 0.0 +it 01_solar 1 258 2000.0 1.0 0.0 +it 02_wind_on 1 258 2000.0 1.0 0.0 +it 03_wind_off 1 258 2000.0 1.0 0.0 +it 04_res 1 258 2000.0 1.0 0.0 +it 05_nuclear 1 258 900.0 1.0 0.0 +it 06_coal 1 258 0.0 0.0 0.0 +it 07_gas 1 258 0.0 0.0 0.0 +it 08_non-res 1 258 0.0 0.0 0.0 +it 09_hydro_pump 1 258 0.0 0.0 0.0 +it 01_solar 1 259 2000.0 1.0 0.0 +it 02_wind_on 1 259 2000.0 1.0 0.0 +it 03_wind_off 1 259 2000.0 1.0 0.0 +it 04_res 1 259 2000.0 1.0 0.0 +it 05_nuclear 1 259 1000.0 1.0 0.0 +it 06_coal 1 259 0.0 0.0 0.0 +it 07_gas 1 259 0.0 0.0 0.0 +it 08_non-res 1 259 0.0 0.0 0.0 +it 09_hydro_pump 1 259 0.0 0.0 0.0 +it 01_solar 1 260 2000.0 1.0 0.0 +it 02_wind_on 1 260 2000.0 1.0 0.0 +it 03_wind_off 1 260 2000.0 1.0 0.0 +it 04_res 1 260 2000.0 1.0 0.0 +it 05_nuclear 1 260 1100.0 1.0 0.0 +it 06_coal 1 260 0.0 0.0 0.0 +it 07_gas 1 260 0.0 0.0 0.0 +it 08_non-res 1 260 0.0 0.0 0.0 +it 09_hydro_pump 1 260 0.0 0.0 0.0 +it 01_solar 1 261 2000.0 1.0 0.0 +it 02_wind_on 1 261 2000.0 1.0 0.0 +it 03_wind_off 1 261 2000.0 1.0 0.0 +it 04_res 1 261 2000.0 1.0 0.0 +it 05_nuclear 1 261 1200.0 1.0 0.0 +it 06_coal 1 261 0.0 0.0 0.0 +it 07_gas 1 261 0.0 0.0 0.0 +it 08_non-res 1 261 0.0 0.0 0.0 +it 09_hydro_pump 1 261 0.0 0.0 0.0 +it 01_solar 1 262 2000.0 1.0 0.0 +it 02_wind_on 1 262 2000.0 1.0 0.0 +it 03_wind_off 1 262 2000.0 1.0 0.0 +it 04_res 1 262 2000.0 1.0 0.0 +it 05_nuclear 1 262 1300.0 1.0 0.0 +it 06_coal 1 262 0.0 0.0 0.0 +it 07_gas 1 262 0.0 0.0 0.0 +it 08_non-res 1 262 0.0 0.0 0.0 +it 09_hydro_pump 1 262 0.0 0.0 0.0 +it 01_solar 1 263 2000.0 1.0 0.0 +it 02_wind_on 1 263 2000.0 1.0 0.0 +it 03_wind_off 1 263 2000.0 1.0 0.0 +it 04_res 1 263 2000.0 1.0 0.0 +it 05_nuclear 1 263 1400.0 1.0 0.0 +it 06_coal 1 263 0.0 0.0 0.0 +it 07_gas 1 263 0.0 0.0 0.0 +it 08_non-res 1 263 0.0 0.0 0.0 +it 09_hydro_pump 1 263 0.0 0.0 0.0 +it 01_solar 1 264 2000.0 1.0 0.0 +it 02_wind_on 1 264 2000.0 1.0 0.0 +it 03_wind_off 1 264 2000.0 1.0 0.0 +it 04_res 1 264 2000.0 1.0 0.0 +it 05_nuclear 1 264 1500.0 1.0 0.0 +it 06_coal 1 264 0.0 0.0 0.0 +it 07_gas 1 264 0.0 0.0 0.0 +it 08_non-res 1 264 0.0 0.0 0.0 +it 09_hydro_pump 1 264 0.0 0.0 0.0 +it 01_solar 1 265 2000.0 1.0 0.0 +it 02_wind_on 1 265 2000.0 1.0 0.0 +it 03_wind_off 1 265 2000.0 1.0 0.0 +it 04_res 1 265 2000.0 1.0 0.0 +it 05_nuclear 1 265 1600.0 1.0 0.0 +it 06_coal 1 265 0.0 0.0 0.0 +it 07_gas 1 265 0.0 0.0 0.0 +it 08_non-res 1 265 0.0 0.0 0.0 +it 09_hydro_pump 1 265 0.0 0.0 0.0 +it 01_solar 1 266 2000.0 1.0 0.0 +it 02_wind_on 1 266 2000.0 1.0 0.0 +it 03_wind_off 1 266 2000.0 1.0 0.0 +it 04_res 1 266 2000.0 1.0 0.0 +it 05_nuclear 1 266 1700.0 1.0 0.0 +it 06_coal 1 266 0.0 0.0 0.0 +it 07_gas 1 266 0.0 0.0 0.0 +it 08_non-res 1 266 0.0 0.0 0.0 +it 09_hydro_pump 1 266 0.0 0.0 0.0 +it 01_solar 1 267 2000.0 1.0 0.0 +it 02_wind_on 1 267 2000.0 1.0 0.0 +it 03_wind_off 1 267 2000.0 1.0 0.0 +it 04_res 1 267 2000.0 1.0 0.0 +it 05_nuclear 1 267 1800.0 1.0 0.0 +it 06_coal 1 267 0.0 0.0 0.0 +it 07_gas 1 267 0.0 0.0 0.0 +it 08_non-res 1 267 0.0 0.0 0.0 +it 09_hydro_pump 1 267 0.0 0.0 0.0 +it 01_solar 1 268 2000.0 1.0 0.0 +it 02_wind_on 1 268 2000.0 1.0 0.0 +it 03_wind_off 1 268 2000.0 1.0 0.0 +it 04_res 1 268 2000.0 1.0 0.0 +it 05_nuclear 1 268 1900.0 1.0 0.0 +it 06_coal 1 268 0.0 0.0 0.0 +it 07_gas 1 268 0.0 0.0 0.0 +it 08_non-res 1 268 0.0 0.0 0.0 +it 09_hydro_pump 1 268 0.0 0.0 0.0 +it 01_solar 1 269 2000.0 1.0 0.0 +it 02_wind_on 1 269 2000.0 1.0 0.0 +it 03_wind_off 1 269 2000.0 1.0 0.0 +it 04_res 1 269 2000.0 1.0 0.0 +it 05_nuclear 1 269 2000.0 1.0 0.0 +it 06_coal 1 269 0.0 0.0 0.0 +it 07_gas 1 269 0.0 0.0 0.0 +it 08_non-res 1 269 0.0 0.0 0.0 +it 09_hydro_pump 1 269 0.0 0.0 0.0 +it 01_solar 1 270 2000.0 1.0 0.0 +it 02_wind_on 1 270 2000.0 1.0 0.0 +it 03_wind_off 1 270 2000.0 1.0 0.0 +it 04_res 1 270 2000.0 1.0 0.0 +it 05_nuclear 1 270 2000.0 1.0 0.0 +it 06_coal 1 270 100.0 1.0 0.0 +it 07_gas 1 270 0.0 0.0 0.0 +it 08_non-res 1 270 0.0 0.0 0.0 +it 09_hydro_pump 1 270 0.0 0.0 0.0 +it 01_solar 1 271 2000.0 1.0 0.0 +it 02_wind_on 1 271 2000.0 1.0 0.0 +it 03_wind_off 1 271 2000.0 1.0 0.0 +it 04_res 1 271 2000.0 1.0 0.0 +it 05_nuclear 1 271 2000.0 1.0 0.0 +it 06_coal 1 271 200.0 1.0 0.0 +it 07_gas 1 271 0.0 0.0 0.0 +it 08_non-res 1 271 0.0 0.0 0.0 +it 09_hydro_pump 1 271 0.0 0.0 0.0 +it 01_solar 1 272 2000.0 1.0 0.0 +it 02_wind_on 1 272 2000.0 1.0 0.0 +it 03_wind_off 1 272 2000.0 1.0 0.0 +it 04_res 1 272 2000.0 1.0 0.0 +it 05_nuclear 1 272 2000.0 1.0 0.0 +it 06_coal 1 272 300.0 1.0 0.0 +it 07_gas 1 272 0.0 0.0 0.0 +it 08_non-res 1 272 0.0 0.0 0.0 +it 09_hydro_pump 1 272 0.0 0.0 0.0 +it 01_solar 1 273 2000.0 1.0 0.0 +it 02_wind_on 1 273 2000.0 1.0 0.0 +it 03_wind_off 1 273 2000.0 1.0 0.0 +it 04_res 1 273 2000.0 1.0 0.0 +it 05_nuclear 1 273 2000.0 1.0 0.0 +it 06_coal 1 273 400.0 1.0 0.0 +it 07_gas 1 273 0.0 0.0 0.0 +it 08_non-res 1 273 0.0 0.0 0.0 +it 09_hydro_pump 1 273 0.0 0.0 0.0 +it 01_solar 1 274 2000.0 1.0 0.0 +it 02_wind_on 1 274 2000.0 1.0 0.0 +it 03_wind_off 1 274 2000.0 1.0 0.0 +it 04_res 1 274 2000.0 1.0 0.0 +it 05_nuclear 1 274 2000.0 1.0 0.0 +it 06_coal 1 274 500.0 1.0 0.0 +it 07_gas 1 274 0.0 0.0 0.0 +it 08_non-res 1 274 0.0 0.0 0.0 +it 09_hydro_pump 1 274 0.0 0.0 0.0 +it 01_solar 1 275 2000.0 1.0 0.0 +it 02_wind_on 1 275 2000.0 1.0 0.0 +it 03_wind_off 1 275 2000.0 1.0 0.0 +it 04_res 1 275 2000.0 1.0 0.0 +it 05_nuclear 1 275 2000.0 1.0 0.0 +it 06_coal 1 275 600.0 1.0 0.0 +it 07_gas 1 275 0.0 0.0 0.0 +it 08_non-res 1 275 0.0 0.0 0.0 +it 09_hydro_pump 1 275 0.0 0.0 0.0 +it 01_solar 1 276 2000.0 1.0 0.0 +it 02_wind_on 1 276 2000.0 1.0 0.0 +it 03_wind_off 1 276 2000.0 1.0 0.0 +it 04_res 1 276 2000.0 1.0 0.0 +it 05_nuclear 1 276 2000.0 1.0 0.0 +it 06_coal 1 276 700.0 1.0 0.0 +it 07_gas 1 276 0.0 0.0 0.0 +it 08_non-res 1 276 0.0 0.0 0.0 +it 09_hydro_pump 1 276 0.0 0.0 0.0 +it 01_solar 1 277 2000.0 1.0 0.0 +it 02_wind_on 1 277 2000.0 1.0 0.0 +it 03_wind_off 1 277 2000.0 1.0 0.0 +it 04_res 1 277 2000.0 1.0 0.0 +it 05_nuclear 1 277 2000.0 1.0 0.0 +it 06_coal 1 277 800.0 1.0 0.0 +it 07_gas 1 277 0.0 0.0 0.0 +it 08_non-res 1 277 0.0 0.0 0.0 +it 09_hydro_pump 1 277 0.0 0.0 0.0 +it 01_solar 1 278 2000.0 1.0 0.0 +it 02_wind_on 1 278 2000.0 1.0 0.0 +it 03_wind_off 1 278 2000.0 1.0 0.0 +it 04_res 1 278 2000.0 1.0 0.0 +it 05_nuclear 1 278 2000.0 1.0 0.0 +it 06_coal 1 278 900.0 1.0 0.0 +it 07_gas 1 278 0.0 0.0 0.0 +it 08_non-res 1 278 0.0 0.0 0.0 +it 09_hydro_pump 1 278 0.0 0.0 0.0 +it 01_solar 1 279 2000.0 1.0 0.0 +it 02_wind_on 1 279 2000.0 1.0 0.0 +it 03_wind_off 1 279 2000.0 1.0 0.0 +it 04_res 1 279 2000.0 1.0 0.0 +it 05_nuclear 1 279 2000.0 1.0 0.0 +it 06_coal 1 279 1000.0 1.0 0.0 +it 07_gas 1 279 0.0 0.0 0.0 +it 08_non-res 1 279 0.0 0.0 0.0 +it 09_hydro_pump 1 279 0.0 0.0 0.0 +it 01_solar 1 280 2000.0 1.0 0.0 +it 02_wind_on 1 280 2000.0 1.0 0.0 +it 03_wind_off 1 280 2000.0 1.0 0.0 +it 04_res 1 280 2000.0 1.0 0.0 +it 05_nuclear 1 280 2000.0 1.0 0.0 +it 06_coal 1 280 1100.0 1.0 0.0 +it 07_gas 1 280 0.0 0.0 0.0 +it 08_non-res 1 280 0.0 0.0 0.0 +it 09_hydro_pump 1 280 0.0 0.0 0.0 +it 01_solar 1 281 2000.0 1.0 0.0 +it 02_wind_on 1 281 2000.0 1.0 0.0 +it 03_wind_off 1 281 2000.0 1.0 0.0 +it 04_res 1 281 2000.0 1.0 0.0 +it 05_nuclear 1 281 2000.0 1.0 0.0 +it 06_coal 1 281 1200.0 1.0 0.0 +it 07_gas 1 281 0.0 0.0 0.0 +it 08_non-res 1 281 0.0 0.0 0.0 +it 09_hydro_pump 1 281 0.0 0.0 0.0 +it 01_solar 1 282 2000.0 1.0 0.0 +it 02_wind_on 1 282 2000.0 1.0 0.0 +it 03_wind_off 1 282 2000.0 1.0 0.0 +it 04_res 1 282 2000.0 1.0 0.0 +it 05_nuclear 1 282 2000.0 1.0 0.0 +it 06_coal 1 282 1300.0 1.0 0.0 +it 07_gas 1 282 0.0 0.0 0.0 +it 08_non-res 1 282 0.0 0.0 0.0 +it 09_hydro_pump 1 282 0.0 0.0 0.0 +it 01_solar 1 283 2000.0 1.0 0.0 +it 02_wind_on 1 283 2000.0 1.0 0.0 +it 03_wind_off 1 283 2000.0 1.0 0.0 +it 04_res 1 283 2000.0 1.0 0.0 +it 05_nuclear 1 283 2000.0 1.0 0.0 +it 06_coal 1 283 1400.0 1.0 0.0 +it 07_gas 1 283 0.0 0.0 0.0 +it 08_non-res 1 283 0.0 0.0 0.0 +it 09_hydro_pump 1 283 0.0 0.0 0.0 +it 01_solar 1 284 2000.0 1.0 0.0 +it 02_wind_on 1 284 2000.0 1.0 0.0 +it 03_wind_off 1 284 2000.0 1.0 0.0 +it 04_res 1 284 2000.0 1.0 0.0 +it 05_nuclear 1 284 2000.0 1.0 0.0 +it 06_coal 1 284 1500.0 1.0 0.0 +it 07_gas 1 284 0.0 0.0 0.0 +it 08_non-res 1 284 0.0 0.0 0.0 +it 09_hydro_pump 1 284 0.0 0.0 0.0 +it 01_solar 1 285 2000.0 1.0 0.0 +it 02_wind_on 1 285 2000.0 1.0 0.0 +it 03_wind_off 1 285 2000.0 1.0 0.0 +it 04_res 1 285 2000.0 1.0 0.0 +it 05_nuclear 1 285 2000.0 1.0 0.0 +it 06_coal 1 285 1600.0 1.0 0.0 +it 07_gas 1 285 0.0 0.0 0.0 +it 08_non-res 1 285 0.0 0.0 0.0 +it 09_hydro_pump 1 285 0.0 0.0 0.0 +it 01_solar 1 286 2000.0 1.0 0.0 +it 02_wind_on 1 286 2000.0 1.0 0.0 +it 03_wind_off 1 286 2000.0 1.0 0.0 +it 04_res 1 286 2000.0 1.0 0.0 +it 05_nuclear 1 286 2000.0 1.0 0.0 +it 06_coal 1 286 1700.0 1.0 0.0 +it 07_gas 1 286 0.0 0.0 0.0 +it 08_non-res 1 286 0.0 0.0 0.0 +it 09_hydro_pump 1 286 0.0 0.0 0.0 +it 01_solar 1 287 2000.0 1.0 0.0 +it 02_wind_on 1 287 2000.0 1.0 0.0 +it 03_wind_off 1 287 2000.0 1.0 0.0 +it 04_res 1 287 2000.0 1.0 0.0 +it 05_nuclear 1 287 2000.0 1.0 0.0 +it 06_coal 1 287 1800.0 1.0 0.0 +it 07_gas 1 287 0.0 0.0 0.0 +it 08_non-res 1 287 0.0 0.0 0.0 +it 09_hydro_pump 1 287 0.0 0.0 0.0 +it 01_solar 1 288 2000.0 1.0 0.0 +it 02_wind_on 1 288 2000.0 1.0 0.0 +it 03_wind_off 1 288 2000.0 1.0 0.0 +it 04_res 1 288 2000.0 1.0 0.0 +it 05_nuclear 1 288 2000.0 1.0 0.0 +it 06_coal 1 288 1900.0 1.0 0.0 +it 07_gas 1 288 0.0 0.0 0.0 +it 08_non-res 1 288 0.0 0.0 0.0 +it 09_hydro_pump 1 288 0.0 0.0 0.0 +it 01_solar 1 289 2000.0 1.0 0.0 +it 02_wind_on 1 289 2000.0 1.0 0.0 +it 03_wind_off 1 289 2000.0 1.0 0.0 +it 04_res 1 289 2000.0 1.0 0.0 +it 05_nuclear 1 289 2000.0 1.0 0.0 +it 06_coal 1 289 2000.0 1.0 0.0 +it 07_gas 1 289 0.0 0.0 0.0 +it 08_non-res 1 289 0.0 0.0 0.0 +it 09_hydro_pump 1 289 0.0 0.0 0.0 +it 01_solar 1 290 2000.0 1.0 0.0 +it 02_wind_on 1 290 2000.0 1.0 0.0 +it 03_wind_off 1 290 2000.0 1.0 0.0 +it 04_res 1 290 2000.0 1.0 0.0 +it 05_nuclear 1 290 2000.0 1.0 0.0 +it 06_coal 1 290 2000.0 1.0 0.0 +it 07_gas 1 290 100.0 1.0 0.0 +it 08_non-res 1 290 0.0 0.0 0.0 +it 09_hydro_pump 1 290 0.0 0.0 0.0 +it 01_solar 1 291 2000.0 1.0 0.0 +it 02_wind_on 1 291 2000.0 1.0 0.0 +it 03_wind_off 1 291 2000.0 1.0 0.0 +it 04_res 1 291 2000.0 1.0 0.0 +it 05_nuclear 1 291 2000.0 1.0 0.0 +it 06_coal 1 291 2000.0 1.0 0.0 +it 07_gas 1 291 200.0 1.0 0.0 +it 08_non-res 1 291 0.0 0.0 0.0 +it 09_hydro_pump 1 291 0.0 0.0 0.0 +it 01_solar 1 292 2000.0 1.0 0.0 +it 02_wind_on 1 292 2000.0 1.0 0.0 +it 03_wind_off 1 292 2000.0 1.0 0.0 +it 04_res 1 292 2000.0 1.0 0.0 +it 05_nuclear 1 292 2000.0 1.0 0.0 +it 06_coal 1 292 2000.0 1.0 0.0 +it 07_gas 1 292 300.0 1.0 0.0 +it 08_non-res 1 292 0.0 0.0 0.0 +it 09_hydro_pump 1 292 0.0 0.0 0.0 +it 01_solar 1 293 2000.0 1.0 0.0 +it 02_wind_on 1 293 2000.0 1.0 0.0 +it 03_wind_off 1 293 2000.0 1.0 0.0 +it 04_res 1 293 2000.0 1.0 0.0 +it 05_nuclear 1 293 2000.0 1.0 0.0 +it 06_coal 1 293 2000.0 1.0 0.0 +it 07_gas 1 293 400.0 1.0 0.0 +it 08_non-res 1 293 0.0 0.0 0.0 +it 09_hydro_pump 1 293 0.0 0.0 0.0 +it 01_solar 1 294 2000.0 1.0 0.0 +it 02_wind_on 1 294 2000.0 1.0 0.0 +it 03_wind_off 1 294 2000.0 1.0 0.0 +it 04_res 1 294 2000.0 1.0 0.0 +it 05_nuclear 1 294 2000.0 1.0 0.0 +it 06_coal 1 294 2000.0 1.0 0.0 +it 07_gas 1 294 500.0 1.0 0.0 +it 08_non-res 1 294 0.0 0.0 0.0 +it 09_hydro_pump 1 294 0.0 0.0 0.0 +it 01_solar 1 295 2000.0 1.0 0.0 +it 02_wind_on 1 295 2000.0 1.0 0.0 +it 03_wind_off 1 295 2000.0 1.0 0.0 +it 04_res 1 295 2000.0 1.0 0.0 +it 05_nuclear 1 295 2000.0 1.0 0.0 +it 06_coal 1 295 2000.0 1.0 0.0 +it 07_gas 1 295 600.0 1.0 0.0 +it 08_non-res 1 295 0.0 0.0 0.0 +it 09_hydro_pump 1 295 0.0 0.0 0.0 +it 01_solar 1 296 2000.0 1.0 0.0 +it 02_wind_on 1 296 2000.0 1.0 0.0 +it 03_wind_off 1 296 2000.0 1.0 0.0 +it 04_res 1 296 2000.0 1.0 0.0 +it 05_nuclear 1 296 2000.0 1.0 0.0 +it 06_coal 1 296 2000.0 1.0 0.0 +it 07_gas 1 296 700.0 1.0 0.0 +it 08_non-res 1 296 0.0 0.0 0.0 +it 09_hydro_pump 1 296 0.0 0.0 0.0 +it 01_solar 1 297 2000.0 1.0 0.0 +it 02_wind_on 1 297 2000.0 1.0 0.0 +it 03_wind_off 1 297 2000.0 1.0 0.0 +it 04_res 1 297 2000.0 1.0 0.0 +it 05_nuclear 1 297 2000.0 1.0 0.0 +it 06_coal 1 297 2000.0 1.0 0.0 +it 07_gas 1 297 800.0 1.0 0.0 +it 08_non-res 1 297 0.0 0.0 0.0 +it 09_hydro_pump 1 297 0.0 0.0 0.0 +it 01_solar 1 298 2000.0 1.0 0.0 +it 02_wind_on 1 298 2000.0 1.0 0.0 +it 03_wind_off 1 298 2000.0 1.0 0.0 +it 04_res 1 298 2000.0 1.0 0.0 +it 05_nuclear 1 298 2000.0 1.0 0.0 +it 06_coal 1 298 2000.0 1.0 0.0 +it 07_gas 1 298 900.0 1.0 0.0 +it 08_non-res 1 298 0.0 0.0 0.0 +it 09_hydro_pump 1 298 0.0 0.0 0.0 +it 01_solar 1 299 2000.0 1.0 0.0 +it 02_wind_on 1 299 2000.0 1.0 0.0 +it 03_wind_off 1 299 2000.0 1.0 0.0 +it 04_res 1 299 2000.0 1.0 0.0 +it 05_nuclear 1 299 2000.0 1.0 0.0 +it 06_coal 1 299 2000.0 1.0 0.0 +it 07_gas 1 299 1000.0 1.0 0.0 +it 08_non-res 1 299 0.0 0.0 0.0 +it 09_hydro_pump 1 299 0.0 0.0 0.0 +it 01_solar 1 300 2000.0 1.0 0.0 +it 02_wind_on 1 300 2000.0 1.0 0.0 +it 03_wind_off 1 300 2000.0 1.0 0.0 +it 04_res 1 300 2000.0 1.0 0.0 +it 05_nuclear 1 300 2000.0 1.0 0.0 +it 06_coal 1 300 2000.0 1.0 0.0 +it 07_gas 1 300 1100.0 1.0 0.0 +it 08_non-res 1 300 0.0 0.0 0.0 +it 09_hydro_pump 1 300 0.0 0.0 0.0 +it 01_solar 1 301 2000.0 1.0 0.0 +it 02_wind_on 1 301 2000.0 1.0 0.0 +it 03_wind_off 1 301 2000.0 1.0 0.0 +it 04_res 1 301 2000.0 1.0 0.0 +it 05_nuclear 1 301 2000.0 1.0 0.0 +it 06_coal 1 301 2000.0 1.0 0.0 +it 07_gas 1 301 1200.0 1.0 0.0 +it 08_non-res 1 301 0.0 0.0 0.0 +it 09_hydro_pump 1 301 0.0 0.0 0.0 +it 01_solar 1 302 2000.0 1.0 0.0 +it 02_wind_on 1 302 2000.0 1.0 0.0 +it 03_wind_off 1 302 2000.0 1.0 0.0 +it 04_res 1 302 2000.0 1.0 0.0 +it 05_nuclear 1 302 2000.0 1.0 0.0 +it 06_coal 1 302 2000.0 1.0 0.0 +it 07_gas 1 302 1300.0 1.0 0.0 +it 08_non-res 1 302 0.0 0.0 0.0 +it 09_hydro_pump 1 302 0.0 0.0 0.0 +it 01_solar 1 303 2000.0 1.0 0.0 +it 02_wind_on 1 303 2000.0 1.0 0.0 +it 03_wind_off 1 303 2000.0 1.0 0.0 +it 04_res 1 303 2000.0 1.0 0.0 +it 05_nuclear 1 303 2000.0 1.0 0.0 +it 06_coal 1 303 2000.0 1.0 0.0 +it 07_gas 1 303 1400.0 1.0 0.0 +it 08_non-res 1 303 0.0 0.0 0.0 +it 09_hydro_pump 1 303 0.0 0.0 0.0 +it 01_solar 1 304 2000.0 1.0 0.0 +it 02_wind_on 1 304 2000.0 1.0 0.0 +it 03_wind_off 1 304 2000.0 1.0 0.0 +it 04_res 1 304 2000.0 1.0 0.0 +it 05_nuclear 1 304 2000.0 1.0 0.0 +it 06_coal 1 304 2000.0 1.0 0.0 +it 07_gas 1 304 1500.0 1.0 0.0 +it 08_non-res 1 304 0.0 0.0 0.0 +it 09_hydro_pump 1 304 0.0 0.0 0.0 +it 01_solar 1 305 2000.0 1.0 0.0 +it 02_wind_on 1 305 2000.0 1.0 0.0 +it 03_wind_off 1 305 2000.0 1.0 0.0 +it 04_res 1 305 2000.0 1.0 0.0 +it 05_nuclear 1 305 2000.0 1.0 0.0 +it 06_coal 1 305 2000.0 1.0 0.0 +it 07_gas 1 305 1600.0 1.0 0.0 +it 08_non-res 1 305 0.0 0.0 0.0 +it 09_hydro_pump 1 305 0.0 0.0 0.0 +it 01_solar 1 306 2000.0 1.0 0.0 +it 02_wind_on 1 306 2000.0 1.0 0.0 +it 03_wind_off 1 306 2000.0 1.0 0.0 +it 04_res 1 306 2000.0 1.0 0.0 +it 05_nuclear 1 306 2000.0 1.0 0.0 +it 06_coal 1 306 2000.0 1.0 0.0 +it 07_gas 1 306 1700.0 1.0 0.0 +it 08_non-res 1 306 0.0 0.0 0.0 +it 09_hydro_pump 1 306 0.0 0.0 0.0 +it 01_solar 1 307 2000.0 1.0 0.0 +it 02_wind_on 1 307 2000.0 1.0 0.0 +it 03_wind_off 1 307 2000.0 1.0 0.0 +it 04_res 1 307 2000.0 1.0 0.0 +it 05_nuclear 1 307 2000.0 1.0 0.0 +it 06_coal 1 307 2000.0 1.0 0.0 +it 07_gas 1 307 1800.0 1.0 0.0 +it 08_non-res 1 307 0.0 0.0 0.0 +it 09_hydro_pump 1 307 0.0 0.0 0.0 +it 01_solar 1 308 2000.0 1.0 0.0 +it 02_wind_on 1 308 2000.0 1.0 0.0 +it 03_wind_off 1 308 2000.0 1.0 0.0 +it 04_res 1 308 2000.0 1.0 0.0 +it 05_nuclear 1 308 2000.0 1.0 0.0 +it 06_coal 1 308 2000.0 1.0 0.0 +it 07_gas 1 308 1900.0 1.0 0.0 +it 08_non-res 1 308 0.0 0.0 0.0 +it 09_hydro_pump 1 308 0.0 0.0 0.0 +it 01_solar 1 309 2000.0 1.0 0.0 +it 02_wind_on 1 309 2000.0 1.0 0.0 +it 03_wind_off 1 309 2000.0 1.0 0.0 +it 04_res 1 309 2000.0 1.0 0.0 +it 05_nuclear 1 309 2000.0 1.0 0.0 +it 06_coal 1 309 2000.0 1.0 0.0 +it 07_gas 1 309 2000.0 1.0 0.0 +it 08_non-res 1 309 0.0 0.0 0.0 +it 09_hydro_pump 1 309 0.0 0.0 0.0 +it 01_solar 1 310 2000.0 1.0 0.0 +it 02_wind_on 1 310 2000.0 1.0 0.0 +it 03_wind_off 1 310 2000.0 1.0 0.0 +it 04_res 1 310 2000.0 1.0 0.0 +it 05_nuclear 1 310 2000.0 1.0 0.0 +it 06_coal 1 310 2000.0 1.0 0.0 +it 07_gas 1 310 2000.0 1.0 0.0 +it 08_non-res 1 310 100.0 1.0 0.0 +it 09_hydro_pump 1 310 0.0 0.0 0.0 +it 01_solar 1 311 2000.0 1.0 0.0 +it 02_wind_on 1 311 2000.0 1.0 0.0 +it 03_wind_off 1 311 2000.0 1.0 0.0 +it 04_res 1 311 2000.0 1.0 0.0 +it 05_nuclear 1 311 2000.0 1.0 0.0 +it 06_coal 1 311 2000.0 1.0 0.0 +it 07_gas 1 311 2000.0 1.0 0.0 +it 08_non-res 1 311 200.0 1.0 0.0 +it 09_hydro_pump 1 311 0.0 0.0 0.0 +it 01_solar 1 312 2000.0 1.0 0.0 +it 02_wind_on 1 312 2000.0 1.0 0.0 +it 03_wind_off 1 312 2000.0 1.0 0.0 +it 04_res 1 312 2000.0 1.0 0.0 +it 05_nuclear 1 312 2000.0 1.0 0.0 +it 06_coal 1 312 2000.0 1.0 0.0 +it 07_gas 1 312 2000.0 1.0 0.0 +it 08_non-res 1 312 300.0 1.0 0.0 +it 09_hydro_pump 1 312 0.0 0.0 0.0 +it 01_solar 1 313 2000.0 1.0 0.0 +it 02_wind_on 1 313 2000.0 1.0 0.0 +it 03_wind_off 1 313 2000.0 1.0 0.0 +it 04_res 1 313 2000.0 1.0 0.0 +it 05_nuclear 1 313 2000.0 1.0 0.0 +it 06_coal 1 313 2000.0 1.0 0.0 +it 07_gas 1 313 2000.0 1.0 0.0 +it 08_non-res 1 313 400.0 1.0 0.0 +it 09_hydro_pump 1 313 0.0 0.0 0.0 +it 01_solar 1 314 2000.0 1.0 0.0 +it 02_wind_on 1 314 2000.0 1.0 0.0 +it 03_wind_off 1 314 2000.0 1.0 0.0 +it 04_res 1 314 2000.0 1.0 0.0 +it 05_nuclear 1 314 2000.0 1.0 0.0 +it 06_coal 1 314 2000.0 1.0 0.0 +it 07_gas 1 314 2000.0 1.0 0.0 +it 08_non-res 1 314 500.0 1.0 0.0 +it 09_hydro_pump 1 314 0.0 0.0 0.0 +it 01_solar 1 315 2000.0 1.0 0.0 +it 02_wind_on 1 315 2000.0 1.0 0.0 +it 03_wind_off 1 315 2000.0 1.0 0.0 +it 04_res 1 315 2000.0 1.0 0.0 +it 05_nuclear 1 315 2000.0 1.0 0.0 +it 06_coal 1 315 2000.0 1.0 0.0 +it 07_gas 1 315 2000.0 1.0 0.0 +it 08_non-res 1 315 600.0 1.0 0.0 +it 09_hydro_pump 1 315 0.0 0.0 0.0 +it 01_solar 1 316 2000.0 1.0 0.0 +it 02_wind_on 1 316 2000.0 1.0 0.0 +it 03_wind_off 1 316 2000.0 1.0 0.0 +it 04_res 1 316 2000.0 1.0 0.0 +it 05_nuclear 1 316 2000.0 1.0 0.0 +it 06_coal 1 316 2000.0 1.0 0.0 +it 07_gas 1 316 2000.0 1.0 0.0 +it 08_non-res 1 316 700.0 1.0 0.0 +it 09_hydro_pump 1 316 0.0 0.0 0.0 +it 01_solar 1 317 2000.0 1.0 0.0 +it 02_wind_on 1 317 2000.0 1.0 0.0 +it 03_wind_off 1 317 2000.0 1.0 0.0 +it 04_res 1 317 2000.0 1.0 0.0 +it 05_nuclear 1 317 2000.0 1.0 0.0 +it 06_coal 1 317 2000.0 1.0 0.0 +it 07_gas 1 317 2000.0 1.0 0.0 +it 08_non-res 1 317 800.0 1.0 0.0 +it 09_hydro_pump 1 317 0.0 0.0 0.0 +it 01_solar 1 318 2000.0 1.0 0.0 +it 02_wind_on 1 318 2000.0 1.0 0.0 +it 03_wind_off 1 318 2000.0 1.0 0.0 +it 04_res 1 318 2000.0 1.0 0.0 +it 05_nuclear 1 318 2000.0 1.0 0.0 +it 06_coal 1 318 2000.0 1.0 0.0 +it 07_gas 1 318 2000.0 1.0 0.0 +it 08_non-res 1 318 900.0 1.0 0.0 +it 09_hydro_pump 1 318 0.0 0.0 0.0 +it 01_solar 1 319 2000.0 1.0 0.0 +it 02_wind_on 1 319 2000.0 1.0 0.0 +it 03_wind_off 1 319 2000.0 1.0 0.0 +it 04_res 1 319 2000.0 1.0 0.0 +it 05_nuclear 1 319 2000.0 1.0 0.0 +it 06_coal 1 319 2000.0 1.0 0.0 +it 07_gas 1 319 2000.0 1.0 0.0 +it 08_non-res 1 319 1000.0 1.0 0.0 +it 09_hydro_pump 1 319 0.0 0.0 0.0 +it 01_solar 1 320 2000.0 1.0 0.0 +it 02_wind_on 1 320 2000.0 1.0 0.0 +it 03_wind_off 1 320 2000.0 1.0 0.0 +it 04_res 1 320 2000.0 1.0 0.0 +it 05_nuclear 1 320 2000.0 1.0 0.0 +it 06_coal 1 320 2000.0 1.0 0.0 +it 07_gas 1 320 2000.0 1.0 0.0 +it 08_non-res 1 320 1100.0 1.0 0.0 +it 09_hydro_pump 1 320 0.0 0.0 0.0 +it 01_solar 1 321 2000.0 1.0 0.0 +it 02_wind_on 1 321 2000.0 1.0 0.0 +it 03_wind_off 1 321 2000.0 1.0 0.0 +it 04_res 1 321 2000.0 1.0 0.0 +it 05_nuclear 1 321 2000.0 1.0 0.0 +it 06_coal 1 321 2000.0 1.0 0.0 +it 07_gas 1 321 2000.0 1.0 0.0 +it 08_non-res 1 321 1200.0 1.0 0.0 +it 09_hydro_pump 1 321 0.0 0.0 0.0 +it 01_solar 1 322 2000.0 1.0 0.0 +it 02_wind_on 1 322 2000.0 1.0 0.0 +it 03_wind_off 1 322 2000.0 1.0 0.0 +it 04_res 1 322 2000.0 1.0 0.0 +it 05_nuclear 1 322 2000.0 1.0 0.0 +it 06_coal 1 322 2000.0 1.0 0.0 +it 07_gas 1 322 2000.0 1.0 0.0 +it 08_non-res 1 322 1300.0 1.0 0.0 +it 09_hydro_pump 1 322 0.0 0.0 0.0 +it 01_solar 1 323 2000.0 1.0 0.0 +it 02_wind_on 1 323 2000.0 1.0 0.0 +it 03_wind_off 1 323 2000.0 1.0 0.0 +it 04_res 1 323 2000.0 1.0 0.0 +it 05_nuclear 1 323 2000.0 1.0 0.0 +it 06_coal 1 323 2000.0 1.0 0.0 +it 07_gas 1 323 2000.0 1.0 0.0 +it 08_non-res 1 323 1400.0 1.0 0.0 +it 09_hydro_pump 1 323 0.0 0.0 0.0 +it 01_solar 1 324 2000.0 1.0 0.0 +it 02_wind_on 1 324 2000.0 1.0 0.0 +it 03_wind_off 1 324 2000.0 1.0 0.0 +it 04_res 1 324 2000.0 1.0 0.0 +it 05_nuclear 1 324 2000.0 1.0 0.0 +it 06_coal 1 324 2000.0 1.0 0.0 +it 07_gas 1 324 2000.0 1.0 0.0 +it 08_non-res 1 324 1500.0 1.0 0.0 +it 09_hydro_pump 1 324 0.0 0.0 0.0 +it 01_solar 1 325 2000.0 1.0 0.0 +it 02_wind_on 1 325 2000.0 1.0 0.0 +it 03_wind_off 1 325 2000.0 1.0 0.0 +it 04_res 1 325 2000.0 1.0 0.0 +it 05_nuclear 1 325 2000.0 1.0 0.0 +it 06_coal 1 325 2000.0 1.0 0.0 +it 07_gas 1 325 2000.0 1.0 0.0 +it 08_non-res 1 325 1600.0 1.0 0.0 +it 09_hydro_pump 1 325 0.0 0.0 0.0 +it 01_solar 1 326 2000.0 1.0 0.0 +it 02_wind_on 1 326 2000.0 1.0 0.0 +it 03_wind_off 1 326 2000.0 1.0 0.0 +it 04_res 1 326 2000.0 1.0 0.0 +it 05_nuclear 1 326 2000.0 1.0 0.0 +it 06_coal 1 326 2000.0 1.0 0.0 +it 07_gas 1 326 2000.0 1.0 0.0 +it 08_non-res 1 326 1700.0 1.0 0.0 +it 09_hydro_pump 1 326 0.0 0.0 0.0 +it 01_solar 1 327 2000.0 1.0 0.0 +it 02_wind_on 1 327 2000.0 1.0 0.0 +it 03_wind_off 1 327 2000.0 1.0 0.0 +it 04_res 1 327 2000.0 1.0 0.0 +it 05_nuclear 1 327 2000.0 1.0 0.0 +it 06_coal 1 327 2000.0 1.0 0.0 +it 07_gas 1 327 2000.0 1.0 0.0 +it 08_non-res 1 327 1800.0 1.0 0.0 +it 09_hydro_pump 1 327 0.0 0.0 0.0 +it 01_solar 1 328 2000.0 1.0 0.0 +it 02_wind_on 1 328 2000.0 1.0 0.0 +it 03_wind_off 1 328 2000.0 1.0 0.0 +it 04_res 1 328 2000.0 1.0 0.0 +it 05_nuclear 1 328 2000.0 1.0 0.0 +it 06_coal 1 328 2000.0 1.0 0.0 +it 07_gas 1 328 2000.0 1.0 0.0 +it 08_non-res 1 328 1900.0 1.0 0.0 +it 09_hydro_pump 1 328 0.0 0.0 0.0 +it 01_solar 1 329 2000.0 1.0 0.0 +it 02_wind_on 1 329 2000.0 1.0 0.0 +it 03_wind_off 1 329 2000.0 1.0 0.0 +it 04_res 1 329 2000.0 1.0 0.0 +it 05_nuclear 1 329 2000.0 1.0 0.0 +it 06_coal 1 329 2000.0 1.0 0.0 +it 07_gas 1 329 2000.0 1.0 0.0 +it 08_non-res 1 329 2000.0 1.0 0.0 +it 09_hydro_pump 1 329 0.0 0.0 0.0 +it 01_solar 1 330 2000.0 1.0 0.0 +it 02_wind_on 1 330 2000.0 1.0 0.0 +it 03_wind_off 1 330 2000.0 1.0 0.0 +it 04_res 1 330 2000.0 1.0 0.0 +it 05_nuclear 1 330 2000.0 1.0 0.0 +it 06_coal 1 330 2000.0 1.0 0.0 +it 07_gas 1 330 2000.0 1.0 0.0 +it 08_non-res 1 330 2000.0 1.0 0.0 +it 09_hydro_pump 1 330 100.0 1.0 0.0 +it 01_solar 1 331 2000.0 1.0 0.0 +it 02_wind_on 1 331 2000.0 1.0 0.0 +it 03_wind_off 1 331 2000.0 1.0 0.0 +it 04_res 1 331 2000.0 1.0 0.0 +it 05_nuclear 1 331 2000.0 1.0 0.0 +it 06_coal 1 331 2000.0 1.0 0.0 +it 07_gas 1 331 2000.0 1.0 0.0 +it 08_non-res 1 331 2000.0 1.0 0.0 +it 09_hydro_pump 1 331 200.0 1.0 0.0 +it 01_solar 1 332 2000.0 1.0 0.0 +it 02_wind_on 1 332 2000.0 1.0 0.0 +it 03_wind_off 1 332 2000.0 1.0 0.0 +it 04_res 1 332 2000.0 1.0 0.0 +it 05_nuclear 1 332 2000.0 1.0 0.0 +it 06_coal 1 332 2000.0 1.0 0.0 +it 07_gas 1 332 2000.0 1.0 0.0 +it 08_non-res 1 332 2000.0 1.0 0.0 +it 09_hydro_pump 1 332 300.0 1.0 0.0 +it 01_solar 1 333 2000.0 1.0 0.0 +it 02_wind_on 1 333 2000.0 1.0 0.0 +it 03_wind_off 1 333 2000.0 1.0 0.0 +it 04_res 1 333 2000.0 1.0 0.0 +it 05_nuclear 1 333 2000.0 1.0 0.0 +it 06_coal 1 333 2000.0 1.0 0.0 +it 07_gas 1 333 2000.0 1.0 0.0 +it 08_non-res 1 333 2000.0 1.0 0.0 +it 09_hydro_pump 1 333 400.0 1.0 0.0 +it 01_solar 1 334 2000.0 1.0 0.0 +it 02_wind_on 1 334 2000.0 1.0 0.0 +it 03_wind_off 1 334 2000.0 1.0 0.0 +it 04_res 1 334 2000.0 1.0 0.0 +it 05_nuclear 1 334 2000.0 1.0 0.0 +it 06_coal 1 334 2000.0 1.0 0.0 +it 07_gas 1 334 2000.0 1.0 0.0 +it 08_non-res 1 334 2000.0 1.0 0.0 +it 09_hydro_pump 1 334 500.0 1.0 0.0 +it 01_solar 1 335 2000.0 1.0 0.0 +it 02_wind_on 1 335 2000.0 1.0 0.0 +it 03_wind_off 1 335 2000.0 1.0 0.0 +it 04_res 1 335 2000.0 1.0 0.0 +it 05_nuclear 1 335 2000.0 1.0 0.0 +it 06_coal 1 335 2000.0 1.0 0.0 +it 07_gas 1 335 2000.0 1.0 0.0 +it 08_non-res 1 335 2000.0 1.0 0.0 +it 09_hydro_pump 1 335 600.0 1.0 0.0 +it 01_solar 1 336 2000.0 1.0 0.0 +it 02_wind_on 1 336 2000.0 1.0 0.0 +it 03_wind_off 1 336 2000.0 1.0 0.0 +it 04_res 1 336 2000.0 1.0 0.0 +it 05_nuclear 1 336 2000.0 1.0 0.0 +it 06_coal 1 336 2000.0 1.0 0.0 +it 07_gas 1 336 2000.0 1.0 0.0 +it 08_non-res 1 336 2000.0 1.0 0.0 +it 09_hydro_pump 1 336 700.0 1.0 0.0 diff --git a/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-03-all.result.tsv b/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-03-all.result.tsv index 4d0e4d75b0..746fdaae90 100644 --- a/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-03-all.result.tsv +++ b/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-03-all.result.tsv @@ -1,15 +1,15 @@ -area timeId time OP. COST EXP OP. COST STD OP. COST MIN OP. COST MAX MRG. PRICE EXP MRG. PRICE STD MRG. PRICE MIN MRG. PRICE MAX -de 1 2030 282000.0 0.0 282000.0 282000.0 11.66 0.0 11.66 11.66 -de 2 2030 1252000.0 0.0 1252000.0 1252000.0 23.33 0.0 23.33 23.33 -de 3 2030 2910000.0 0.0 2910000.0 2910000.0 35.0 0.0 35.0 35.0 -de 4 2030 5256000.0 0.0 5256000.0 5256000.0 46.67 0.0 46.67 46.67 -de 5 2030 8290000.0 0.0 8290000.0 8290000.0 58.33 0.0 58.33 58.33 -de 6 2030 12018000.0 0.0 12018000.0 12018000.0 71.67 0.0 71.67 71.67 -de 7 2030 16444000.0 0.0 16444000.0 16444000.0 83.33 0.0 83.33 83.33 -es 1 2030 282000.0 0.0 282000.0 282000.0 11.66 0.0 11.66 11.66 -es 2 2030 1252000.0 0.0 1252000.0 1252000.0 23.33 0.0 23.33 23.33 -es 3 2030 2910000.0 0.0 2910000.0 2910000.0 35.0 0.0 35.0 35.0 -es 4 2030 5256000.0 0.0 5256000.0 5256000.0 46.67 0.0 46.67 46.67 -es 5 2030 8290000.0 0.0 8290000.0 8290000.0 58.33 0.0 58.33 58.33 -es 6 2030 12018000.0 0.0 12018000.0 12018000.0 71.67 0.0 71.67 71.67 -es 7 2030 16444000.0 0.0 16444000.0 16444000.0 83.33 0.0 83.33 83.33 +area timeId OP. COST EXP OP. COST STD OP. COST MIN OP. COST MAX MRG. PRICE EXP MRG. PRICE STD MRG. PRICE MIN MRG. PRICE MAX +de 1 282000.0 0.0 282000.0 282000.0 11.66 0.0 11.66 11.66 +de 2 1252000.0 0.0 1252000.0 1252000.0 23.33 0.0 23.33 23.33 +de 3 2910000.0 0.0 2910000.0 2910000.0 35.0 0.0 35.0 35.0 +de 4 5256000.0 0.0 5256000.0 5256000.0 46.67 0.0 46.67 46.67 +de 5 8290000.0 0.0 8290000.0 8290000.0 58.33 0.0 58.33 58.33 +de 6 12018000.0 0.0 12018000.0 12018000.0 71.67 0.0 71.67 71.67 +de 7 16444000.0 0.0 16444000.0 16444000.0 83.33 0.0 83.33 83.33 +es 1 282000.0 0.0 282000.0 282000.0 11.66 0.0 11.66 11.66 +es 2 1252000.0 0.0 1252000.0 1252000.0 23.33 0.0 23.33 23.33 +es 3 2910000.0 0.0 2910000.0 2910000.0 35.0 0.0 35.0 35.0 +es 4 5256000.0 0.0 5256000.0 5256000.0 46.67 0.0 46.67 46.67 +es 5 8290000.0 0.0 8290000.0 8290000.0 58.33 0.0 58.33 58.33 +es 6 12018000.0 0.0 12018000.0 12018000.0 71.67 0.0 71.67 71.67 +es 7 16444000.0 0.0 16444000.0 16444000.0 83.33 0.0 83.33 83.33 diff --git a/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-03.result.tsv b/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-03.result.tsv index 59356a20c7..581347465b 100644 --- a/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-03.result.tsv +++ b/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-03.result.tsv @@ -1,9 +1,9 @@ -area mcYear timeId time OP. COST MRG. PRICE -de 1 1 2030 46452000.0 47.14 -de 1 2 2030 46452000.0 47.14 -es 1 1 2030 46452000.0 47.14 -es 1 2 2030 46452000.0 47.14 -de 2 1 2030 46452000.0 47.14 -de 2 2 2030 46452000.0 47.14 -es 2 1 2030 46452000.0 47.14 -es 2 2 2030 46452000.0 47.14 +area mcYear timeId OP. COST MRG. PRICE +de 1 1 46452000.0 47.14 +de 1 2 46452000.0 47.14 +es 1 1 46452000.0 47.14 +es 1 2 46452000.0 47.14 +de 2 1 46452000.0 47.14 +de 2 2 46452000.0 47.14 +es 2 1 46452000.0 47.14 +es 2 2 46452000.0 47.14 diff --git a/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-04-all.result.tsv b/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-04-all.result.tsv index 5232984b37..b761e4c4ae 100644 --- a/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-04-all.result.tsv +++ b/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-04-all.result.tsv @@ -1,15 +1,15 @@ -area timeId time OV. COST EXP OP. COST EXP OP. COST STD OP. COST MIN OP. COST MAX MRG. PRICE EXP MRG. PRICE STD MRG. PRICE MIN MRG. PRICE MAX CO2 EMIS. EXP BALANCE EXP BALANCE STD BALANCE MIN BALANCE MAX ROW BAL. VALUES PSP EXP MISC. NDG EXP LOAD EXP LOAD STD LOAD MIN LOAD MAX H. ROR EXP H. ROR STD H. ROR MIN H. ROR MAX WIND EXP WIND STD WIND MIN WIND MAX SOLAR EXP SOLAR STD SOLAR MIN SOLAR MAX NUCLEAR EXP NUCLEAR STD NUCLEAR MIN NUCLEAR MAX LIGNITE EXP LIGNITE STD LIGNITE MIN LIGNITE MAX COAL EXP COAL STD COAL MIN COAL MAX GAS EXP GAS STD GAS MIN GAS MAX OIL EXP OIL STD OIL MIN OIL MAX MIX. FUEL EXP MIX. FUEL STD MIX. FUEL MIN MIX. FUEL MAX MISC. DTG EXP MISC. DTG STD MISC. DTG MIN MISC. DTG MAX H. STOR EXP H. STOR STD H. STOR MIN H. STOR MAX H. PUMP EXP H. PUMP STD H. PUMP MIN H. PUMP MAX H. LEV EXP H. LEV STD H. LEV MIN H. LEV MAX H. INFL EXP H. INFL STD H. INFL MIN H. INFL MAX H. OVFL EXP H. OVFL STD H. OVFL MIN H. OVFL MAX H. VAL EXP H. VAL STD H. VAL MIN H. VAL MAX H. COST EXP H. COST STD H. COST MIN H. COST MAX UNSP. ENRG EXP UNSP. ENRG STD UNSP. ENRG MIN UNSP. ENRG MAX SPIL. ENRG EXP SPIL. ENRG STD SPIL. ENRG MIN SPIL. ENRG MAX LOLD EXP LOLD STD LOLD MIN LOLD MAX LOLP VALUES AVL DTG EXP AVL DTG STD AVL DTG MIN AVL DTG MAX DTG MRG EXP DTG MRG STD DTG MRG MIN DTG MRG MAX MAX MRG EXP MAX MRG STD MAX MRG MIN MAX MRG MAX NP COST EXP NP COST STD NP COST MIN NP COST MAX NODU EXP NODU STD NODU MIN NODU MAX -de 1 2030 282000.0 282000.0 0.0 282000.0 282000.0 11.66 0.0 11.66 11.66 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 27600.0 0.0 27600.0 27600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 27600.0 0.0 27600.0 27600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 404400.0 0.0 404400.0 404400.0 404400.0 0.0 404400.0 404400.0 0.0 0.0 0.0 0.0 26.0 0.0 26.0 26.0 -de 2 2030 1252000.0 1252000.0 0.0 1252000.0 1252000.0 23.33 0.0 23.33 23.33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 85200.0 0.0 85200.0 85200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 85200.0 0.0 85200.0 85200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 346800.0 0.0 346800.0 346800.0 346800.0 0.0 346800.0 346800.0 0.0 0.0 0.0 0.0 55.0 0.0 55.0 55.0 -de 3 2030 2910000.0 2910000.0 0.0 2910000.0 2910000.0 35.0 0.0 35.0 35.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 142800.0 0.0 142800.0 142800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 142800.0 0.0 142800.0 142800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 289200.0 0.0 289200.0 289200.0 289200.0 0.0 289200.0 289200.0 0.0 0.0 0.0 0.0 83.0 0.0 83.0 83.0 -de 4 2030 5256000.0 5256000.0 0.0 5256000.0 5256000.0 46.67 0.0 46.67 46.67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200400.0 0.0 200400.0 200400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200400.0 0.0 200400.0 200400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 231600.0 0.0 231600.0 231600.0 231600.0 0.0 231600.0 231600.0 0.0 0.0 0.0 0.0 111.0 0.0 111.0 111.0 -de 5 2030 8290000.0 8290000.0 0.0 8290000.0 8290000.0 58.33 0.0 58.33 58.33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 258000.0 0.0 258000.0 258000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 258000.0 0.0 258000.0 258000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 174000.0 0.0 174000.0 174000.0 174000.0 0.0 174000.0 174000.0 0.0 0.0 0.0 0.0 139.0 0.0 139.0 139.0 -de 6 2030 12018000.0 12018000.0 0.0 12018000.0 12018000.0 71.67 0.0 71.67 71.67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 315600.0 0.0 315600.0 315600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 315600.0 0.0 315600.0 315600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 116400.0 0.0 116400.0 116400.0 116400.0 0.0 116400.0 116400.0 0.0 0.0 0.0 0.0 170.0 0.0 170.0 170.0 -de 7 2030 16444000.0 16444000.0 0.0 16444000.0 16444000.0 83.33 0.0 83.33 83.33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 373200.0 0.0 373200.0 373200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 373200.0 0.0 373200.0 373200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 58800.0 0.0 58800.0 58800.0 58800.0 0.0 58800.0 58800.0 0.0 0.0 0.0 0.0 199.0 0.0 199.0 199.0 -es 1 2030 282000.0 282000.0 0.0 282000.0 282000.0 11.66 0.0 11.66 11.66 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 27600.0 0.0 27600.0 27600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 27600.0 0.0 27600.0 27600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 404400.0 0.0 404400.0 404400.0 404400.0 0.0 404400.0 404400.0 0.0 0.0 0.0 0.0 26.0 0.0 26.0 26.0 -es 2 2030 1252000.0 1252000.0 0.0 1252000.0 1252000.0 23.33 0.0 23.33 23.33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 85200.0 0.0 85200.0 85200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 85200.0 0.0 85200.0 85200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 346800.0 0.0 346800.0 346800.0 346800.0 0.0 346800.0 346800.0 0.0 0.0 0.0 0.0 55.0 0.0 55.0 55.0 -es 3 2030 2910000.0 2910000.0 0.0 2910000.0 2910000.0 35.0 0.0 35.0 35.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 142800.0 0.0 142800.0 142800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 142800.0 0.0 142800.0 142800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 289200.0 0.0 289200.0 289200.0 289200.0 0.0 289200.0 289200.0 0.0 0.0 0.0 0.0 83.0 0.0 83.0 83.0 -es 4 2030 5256000.0 5256000.0 0.0 5256000.0 5256000.0 46.67 0.0 46.67 46.67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200400.0 0.0 200400.0 200400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200400.0 0.0 200400.0 200400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 231600.0 0.0 231600.0 231600.0 231600.0 0.0 231600.0 231600.0 0.0 0.0 0.0 0.0 111.0 0.0 111.0 111.0 -es 5 2030 8290000.0 8290000.0 0.0 8290000.0 8290000.0 58.33 0.0 58.33 58.33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 258000.0 0.0 258000.0 258000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 258000.0 0.0 258000.0 258000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 174000.0 0.0 174000.0 174000.0 174000.0 0.0 174000.0 174000.0 0.0 0.0 0.0 0.0 139.0 0.0 139.0 139.0 -es 6 2030 12018000.0 12018000.0 0.0 12018000.0 12018000.0 71.67 0.0 71.67 71.67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 315600.0 0.0 315600.0 315600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 315600.0 0.0 315600.0 315600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 116400.0 0.0 116400.0 116400.0 116400.0 0.0 116400.0 116400.0 0.0 0.0 0.0 0.0 170.0 0.0 170.0 170.0 -es 7 2030 16444000.0 16444000.0 0.0 16444000.0 16444000.0 83.33 0.0 83.33 83.33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 373200.0 0.0 373200.0 373200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 373200.0 0.0 373200.0 373200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 58800.0 0.0 58800.0 58800.0 58800.0 0.0 58800.0 58800.0 0.0 0.0 0.0 0.0 199.0 0.0 199.0 199.0 +area timeId OV. COST EXP OP. COST EXP OP. COST STD OP. COST MIN OP. COST MAX MRG. PRICE EXP MRG. PRICE STD MRG. PRICE MIN MRG. PRICE MAX CO2 EMIS. EXP BALANCE EXP BALANCE STD BALANCE MIN BALANCE MAX ROW BAL. VALUES PSP EXP MISC. NDG EXP LOAD EXP LOAD STD LOAD MIN LOAD MAX H. ROR EXP H. ROR STD H. ROR MIN H. ROR MAX WIND EXP WIND STD WIND MIN WIND MAX SOLAR EXP SOLAR STD SOLAR MIN SOLAR MAX NUCLEAR EXP NUCLEAR STD NUCLEAR MIN NUCLEAR MAX LIGNITE EXP LIGNITE STD LIGNITE MIN LIGNITE MAX COAL EXP COAL STD COAL MIN COAL MAX GAS EXP GAS STD GAS MIN GAS MAX OIL EXP OIL STD OIL MIN OIL MAX MIX. FUEL EXP MIX. FUEL STD MIX. FUEL MIN MIX. FUEL MAX MISC. DTG EXP MISC. DTG STD MISC. DTG MIN MISC. DTG MAX H. STOR EXP H. STOR STD H. STOR MIN H. STOR MAX H. PUMP EXP H. PUMP STD H. PUMP MIN H. PUMP MAX H. LEV EXP H. LEV STD H. LEV MIN H. LEV MAX H. INFL EXP H. INFL STD H. INFL MIN H. INFL MAX H. OVFL EXP H. OVFL STD H. OVFL MIN H. OVFL MAX H. VAL EXP H. VAL STD H. VAL MIN H. VAL MAX H. COST EXP H. COST STD H. COST MIN H. COST MAX UNSP. ENRG EXP UNSP. ENRG STD UNSP. ENRG MIN UNSP. ENRG MAX SPIL. ENRG EXP SPIL. ENRG STD SPIL. ENRG MIN SPIL. ENRG MAX LOLD EXP LOLD STD LOLD MIN LOLD MAX LOLP VALUES AVL DTG EXP AVL DTG STD AVL DTG MIN AVL DTG MAX DTG MRG EXP DTG MRG STD DTG MRG MIN DTG MRG MAX MAX MRG EXP MAX MRG STD MAX MRG MIN MAX MRG MAX NP COST EXP NP COST STD NP COST MIN NP COST MAX NODU EXP NODU STD NODU MIN NODU MAX +de 1 282000.0 282000.0 0.0 282000.0 282000.0 11.66 0.0 11.66 11.66 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 27600.0 0.0 27600.0 27600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 27600.0 0.0 27600.0 27600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 404400.0 0.0 404400.0 404400.0 404400.0 0.0 404400.0 404400.0 0.0 0.0 0.0 0.0 26.0 0.0 26.0 26.0 +de 2 1252000.0 1252000.0 0.0 1252000.0 1252000.0 23.33 0.0 23.33 23.33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 85200.0 0.0 85200.0 85200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 85200.0 0.0 85200.0 85200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 346800.0 0.0 346800.0 346800.0 346800.0 0.0 346800.0 346800.0 0.0 0.0 0.0 0.0 55.0 0.0 55.0 55.0 +de 3 2910000.0 2910000.0 0.0 2910000.0 2910000.0 35.0 0.0 35.0 35.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 142800.0 0.0 142800.0 142800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 142800.0 0.0 142800.0 142800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 289200.0 0.0 289200.0 289200.0 289200.0 0.0 289200.0 289200.0 0.0 0.0 0.0 0.0 83.0 0.0 83.0 83.0 +de 4 5256000.0 5256000.0 0.0 5256000.0 5256000.0 46.67 0.0 46.67 46.67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200400.0 0.0 200400.0 200400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200400.0 0.0 200400.0 200400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 231600.0 0.0 231600.0 231600.0 231600.0 0.0 231600.0 231600.0 0.0 0.0 0.0 0.0 111.0 0.0 111.0 111.0 +de 5 8290000.0 8290000.0 0.0 8290000.0 8290000.0 58.33 0.0 58.33 58.33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 258000.0 0.0 258000.0 258000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 258000.0 0.0 258000.0 258000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 174000.0 0.0 174000.0 174000.0 174000.0 0.0 174000.0 174000.0 0.0 0.0 0.0 0.0 139.0 0.0 139.0 139.0 +de 6 12018000.0 12018000.0 0.0 12018000.0 12018000.0 71.67 0.0 71.67 71.67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 315600.0 0.0 315600.0 315600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 315600.0 0.0 315600.0 315600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 116400.0 0.0 116400.0 116400.0 116400.0 0.0 116400.0 116400.0 0.0 0.0 0.0 0.0 170.0 0.0 170.0 170.0 +de 7 16444000.0 16444000.0 0.0 16444000.0 16444000.0 83.33 0.0 83.33 83.33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 373200.0 0.0 373200.0 373200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 373200.0 0.0 373200.0 373200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 58800.0 0.0 58800.0 58800.0 58800.0 0.0 58800.0 58800.0 0.0 0.0 0.0 0.0 199.0 0.0 199.0 199.0 +es 1 282000.0 282000.0 0.0 282000.0 282000.0 11.66 0.0 11.66 11.66 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 27600.0 0.0 27600.0 27600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 27600.0 0.0 27600.0 27600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 404400.0 0.0 404400.0 404400.0 404400.0 0.0 404400.0 404400.0 0.0 0.0 0.0 0.0 26.0 0.0 26.0 26.0 +es 2 1252000.0 1252000.0 0.0 1252000.0 1252000.0 23.33 0.0 23.33 23.33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 85200.0 0.0 85200.0 85200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 85200.0 0.0 85200.0 85200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 346800.0 0.0 346800.0 346800.0 346800.0 0.0 346800.0 346800.0 0.0 0.0 0.0 0.0 55.0 0.0 55.0 55.0 +es 3 2910000.0 2910000.0 0.0 2910000.0 2910000.0 35.0 0.0 35.0 35.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 142800.0 0.0 142800.0 142800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 142800.0 0.0 142800.0 142800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 289200.0 0.0 289200.0 289200.0 289200.0 0.0 289200.0 289200.0 0.0 0.0 0.0 0.0 83.0 0.0 83.0 83.0 +es 4 5256000.0 5256000.0 0.0 5256000.0 5256000.0 46.67 0.0 46.67 46.67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200400.0 0.0 200400.0 200400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200400.0 0.0 200400.0 200400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 231600.0 0.0 231600.0 231600.0 231600.0 0.0 231600.0 231600.0 0.0 0.0 0.0 0.0 111.0 0.0 111.0 111.0 +es 5 8290000.0 8290000.0 0.0 8290000.0 8290000.0 58.33 0.0 58.33 58.33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 258000.0 0.0 258000.0 258000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 258000.0 0.0 258000.0 258000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 174000.0 0.0 174000.0 174000.0 174000.0 0.0 174000.0 174000.0 0.0 0.0 0.0 0.0 139.0 0.0 139.0 139.0 +es 6 12018000.0 12018000.0 0.0 12018000.0 12018000.0 71.67 0.0 71.67 71.67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 315600.0 0.0 315600.0 315600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 315600.0 0.0 315600.0 315600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 116400.0 0.0 116400.0 116400.0 116400.0 0.0 116400.0 116400.0 0.0 0.0 0.0 0.0 170.0 0.0 170.0 170.0 +es 7 16444000.0 16444000.0 0.0 16444000.0 16444000.0 83.33 0.0 83.33 83.33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 373200.0 0.0 373200.0 373200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 373200.0 0.0 373200.0 373200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 432000.0 0.0 432000.0 432000.0 58800.0 0.0 58800.0 58800.0 58800.0 0.0 58800.0 58800.0 0.0 0.0 0.0 0.0 199.0 0.0 199.0 199.0 diff --git a/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-04.result.tsv b/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-04.result.tsv index b46df1bcae..bb591d136e 100644 --- a/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-04.result.tsv +++ b/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-04.result.tsv @@ -1,1009 +1,1009 @@ -area mcYear timeId time OV. COST OP. COST MRG. PRICE CO2 EMIS. BALANCE ROW BAL. PSP MISC. NDG LOAD H. ROR WIND SOLAR NUCLEAR LIGNITE COAL GAS OIL MIX. FUEL MISC. DTG H. STOR H. PUMP H. LEV H. INFL H. OVFL H. VAL H. COST UNSP. ENRG SPIL. ENRG LOLD LOLP AVL DTG DTG MRG MAX MRG NP COST NODU -de 2 1 2030 0.0 0.0 9.98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 -de 2 2 2030 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 -de 2 3 2030 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 -de 2 4 2030 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 -de 2 5 2030 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 -de 2 6 2030 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 -de 2 7 2030 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 -de 2 8 2030 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 -de 2 9 2030 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 -de 2 10 2030 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 -de 2 11 2030 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 -de 2 12 2030 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 -de 2 13 2030 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 -de 2 14 2030 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 -de 2 15 2030 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 -de 2 16 2030 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 -de 2 17 2030 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 -de 2 18 2030 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 -de 2 19 2030 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 -de 2 20 2030 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 -de 2 21 2030 20000.0 20000.0 19.98 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 -de 2 22 2030 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 -de 2 23 2030 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 -de 2 24 2030 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 -de 2 25 2030 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 -de 2 26 2030 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 -de 2 27 2030 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 -de 2 28 2030 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 -de 2 29 2030 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 -de 2 30 2030 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 -de 2 31 2030 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 -de 2 32 2030 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 -de 2 33 2030 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 -de 2 34 2030 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 -de 2 35 2030 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 -de 2 36 2030 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 -de 2 37 2030 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 -de 2 38 2030 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 -de 2 39 2030 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 -de 2 40 2030 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 -de 2 41 2030 60000.0 60000.0 29.98 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 -de 2 42 2030 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 -de 2 43 2030 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 -de 2 44 2030 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 -de 2 45 2030 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 -de 2 46 2030 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 -de 2 47 2030 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 -de 2 48 2030 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 -de 2 49 2030 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 -de 2 50 2030 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 -de 2 51 2030 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 -de 2 52 2030 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 -de 2 53 2030 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 -de 2 54 2030 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 -de 2 55 2030 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 -de 2 56 2030 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 -de 2 57 2030 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 -de 2 58 2030 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 -de 2 59 2030 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 -de 2 60 2030 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 -de 2 61 2030 120000.0 120000.0 39.98 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 -de 2 62 2030 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 -de 2 63 2030 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 -de 2 64 2030 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 -de 2 65 2030 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 -de 2 66 2030 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 -de 2 67 2030 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 -de 2 68 2030 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 -de 2 69 2030 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 -de 2 70 2030 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 -de 2 71 2030 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 -de 2 72 2030 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 -de 2 73 2030 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 -de 2 74 2030 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 -de 2 75 2030 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 -de 2 76 2030 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 -de 2 77 2030 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 -de 2 78 2030 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 -de 2 79 2030 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 -de 2 80 2030 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 -de 2 81 2030 200000.0 200000.0 49.98 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 -de 2 82 2030 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 -de 2 83 2030 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 -de 2 84 2030 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 -de 2 85 2030 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 -de 2 86 2030 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 -de 2 87 2030 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 -de 2 88 2030 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 -de 2 89 2030 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 -de 2 90 2030 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 -de 2 91 2030 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 -de 2 92 2030 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 -de 2 93 2030 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 -de 2 94 2030 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 -de 2 95 2030 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 -de 2 96 2030 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 -de 2 97 2030 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 -de 2 98 2030 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 -de 2 99 2030 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 -de 2 100 2030 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 -de 2 101 2030 300000.0 300000.0 59.98 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 -de 2 102 2030 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 -de 2 103 2030 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 -de 2 104 2030 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 -de 2 105 2030 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 -de 2 106 2030 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 -de 2 107 2030 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 -de 2 108 2030 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 -de 2 109 2030 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 -de 2 110 2030 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 -de 2 111 2030 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 -de 2 112 2030 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 -de 2 113 2030 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 -de 2 114 2030 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 -de 2 115 2030 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 -de 2 116 2030 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 -de 2 117 2030 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 -de 2 118 2030 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 -de 2 119 2030 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 -de 2 120 2030 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 -de 2 121 2030 420000.0 420000.0 69.98 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 -de 2 122 2030 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 -de 2 123 2030 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 -de 2 124 2030 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 -de 2 125 2030 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 -de 2 126 2030 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 -de 2 127 2030 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 -de 2 128 2030 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 -de 2 129 2030 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 -de 2 130 2030 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 -de 2 131 2030 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 -de 2 132 2030 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 -de 2 133 2030 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 -de 2 134 2030 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 -de 2 135 2030 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 -de 2 136 2030 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 -de 2 137 2030 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 -de 2 138 2030 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 -de 2 139 2030 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 -de 2 140 2030 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 -de 2 141 2030 560000.0 560000.0 79.98 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 -de 2 142 2030 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 -de 2 143 2030 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 -de 2 144 2030 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 -de 2 145 2030 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 -de 2 146 2030 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 -de 2 147 2030 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 -de 2 148 2030 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 -de 2 149 2030 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 -de 2 150 2030 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 -de 2 151 2030 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 -de 2 152 2030 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 -de 2 153 2030 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 -de 2 154 2030 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 -de 2 155 2030 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 -de 2 156 2030 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 -de 2 157 2030 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 -de 2 158 2030 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 -de 2 159 2030 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 -de 2 160 2030 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 -de 2 161 2030 720000.0 720000.0 89.98 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 -de 2 162 2030 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 -de 2 163 2030 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 -de 2 164 2030 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 -de 2 165 2030 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 -de 2 166 2030 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 -de 2 167 2030 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 -de 2 168 2030 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 -de 2 169 2030 0.0 0.0 9.98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 -de 2 170 2030 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 -de 2 171 2030 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 -de 2 172 2030 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 -de 2 173 2030 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 -de 2 174 2030 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 -de 2 175 2030 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 -de 2 176 2030 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 -de 2 177 2030 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 -de 2 178 2030 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 -de 2 179 2030 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 -de 2 180 2030 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 -de 2 181 2030 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 -de 2 182 2030 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 -de 2 183 2030 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 -de 2 184 2030 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 -de 2 185 2030 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 -de 2 186 2030 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 -de 2 187 2030 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 -de 2 188 2030 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 -de 2 189 2030 20000.0 20000.0 19.98 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 -de 2 190 2030 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 -de 2 191 2030 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 -de 2 192 2030 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 -de 2 193 2030 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 -de 2 194 2030 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 -de 2 195 2030 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 -de 2 196 2030 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 -de 2 197 2030 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 -de 2 198 2030 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 -de 2 199 2030 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 -de 2 200 2030 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 -de 2 201 2030 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 -de 2 202 2030 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 -de 2 203 2030 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 -de 2 204 2030 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 -de 2 205 2030 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 -de 2 206 2030 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 -de 2 207 2030 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 -de 2 208 2030 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 -de 2 209 2030 60000.0 60000.0 29.98 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 -de 2 210 2030 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 -de 2 211 2030 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 -de 2 212 2030 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 -de 2 213 2030 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 -de 2 214 2030 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 -de 2 215 2030 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 -de 2 216 2030 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 -de 2 217 2030 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 -de 2 218 2030 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 -de 2 219 2030 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 -de 2 220 2030 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 -de 2 221 2030 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 -de 2 222 2030 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 -de 2 223 2030 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 -de 2 224 2030 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 -de 2 225 2030 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 -de 2 226 2030 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 -de 2 227 2030 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 -de 2 228 2030 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 -de 2 229 2030 120000.0 120000.0 39.98 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 -de 2 230 2030 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 -de 2 231 2030 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 -de 2 232 2030 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 -de 2 233 2030 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 -de 2 234 2030 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 -de 2 235 2030 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 -de 2 236 2030 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 -de 2 237 2030 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 -de 2 238 2030 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 -de 2 239 2030 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 -de 2 240 2030 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 -de 2 241 2030 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 -de 2 242 2030 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 -de 2 243 2030 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 -de 2 244 2030 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 -de 2 245 2030 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 -de 2 246 2030 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 -de 2 247 2030 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 -de 2 248 2030 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 -de 2 249 2030 200000.0 200000.0 49.98 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 -de 2 250 2030 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 -de 2 251 2030 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 -de 2 252 2030 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 -de 2 253 2030 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 -de 2 254 2030 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 -de 2 255 2030 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 -de 2 256 2030 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 -de 2 257 2030 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 -de 2 258 2030 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 -de 2 259 2030 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 -de 2 260 2030 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 -de 2 261 2030 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 -de 2 262 2030 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 -de 2 263 2030 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 -de 2 264 2030 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 -de 2 265 2030 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 -de 2 266 2030 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 -de 2 267 2030 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 -de 2 268 2030 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 -de 2 269 2030 300000.0 300000.0 59.98 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 -de 2 270 2030 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 -de 2 271 2030 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 -de 2 272 2030 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 -de 2 273 2030 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 -de 2 274 2030 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 -de 2 275 2030 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 -de 2 276 2030 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 -de 2 277 2030 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 -de 2 278 2030 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 -de 2 279 2030 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 -de 2 280 2030 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 -de 2 281 2030 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 -de 2 282 2030 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 -de 2 283 2030 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 -de 2 284 2030 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 -de 2 285 2030 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 -de 2 286 2030 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 -de 2 287 2030 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 -de 2 288 2030 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 -de 2 289 2030 420000.0 420000.0 69.98 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 -de 2 290 2030 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 -de 2 291 2030 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 -de 2 292 2030 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 -de 2 293 2030 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 -de 2 294 2030 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 -de 2 295 2030 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 -de 2 296 2030 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 -de 2 297 2030 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 -de 2 298 2030 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 -de 2 299 2030 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 -de 2 300 2030 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 -de 2 301 2030 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 -de 2 302 2030 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 -de 2 303 2030 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 -de 2 304 2030 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 -de 2 305 2030 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 -de 2 306 2030 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 -de 2 307 2030 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 -de 2 308 2030 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 -de 2 309 2030 560000.0 560000.0 79.98 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 -de 2 310 2030 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 -de 2 311 2030 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 -de 2 312 2030 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 -de 2 313 2030 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 -de 2 314 2030 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 -de 2 315 2030 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 -de 2 316 2030 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 -de 2 317 2030 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 -de 2 318 2030 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 -de 2 319 2030 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 -de 2 320 2030 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 -de 2 321 2030 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 -de 2 322 2030 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 -de 2 323 2030 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 -de 2 324 2030 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 -de 2 325 2030 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 -de 2 326 2030 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 -de 2 327 2030 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 -de 2 328 2030 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 -de 2 329 2030 720000.0 720000.0 89.98 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 -de 2 330 2030 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 -de 2 331 2030 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 -de 2 332 2030 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 -de 2 333 2030 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 -de 2 334 2030 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 -de 2 335 2030 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 -de 2 336 2030 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 -es 2 1 2030 0.0 0.0 9.98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 -es 2 2 2030 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 -es 2 3 2030 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 -es 2 4 2030 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 -es 2 5 2030 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 -es 2 6 2030 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 -es 2 7 2030 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 -es 2 8 2030 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 -es 2 9 2030 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 -es 2 10 2030 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 -es 2 11 2030 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 -es 2 12 2030 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 -es 2 13 2030 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 -es 2 14 2030 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 -es 2 15 2030 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 -es 2 16 2030 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 -es 2 17 2030 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 -es 2 18 2030 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 -es 2 19 2030 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 -es 2 20 2030 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 -es 2 21 2030 20000.0 20000.0 19.98 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 -es 2 22 2030 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 -es 2 23 2030 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 -es 2 24 2030 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 -es 2 25 2030 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 -es 2 26 2030 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 -es 2 27 2030 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 -es 2 28 2030 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 -es 2 29 2030 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 -es 2 30 2030 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 -es 2 31 2030 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 -es 2 32 2030 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 -es 2 33 2030 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 -es 2 34 2030 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 -es 2 35 2030 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 -es 2 36 2030 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 -es 2 37 2030 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 -es 2 38 2030 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 -es 2 39 2030 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 -es 2 40 2030 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 -es 2 41 2030 60000.0 60000.0 29.98 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 -es 2 42 2030 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 -es 2 43 2030 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 -es 2 44 2030 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 -es 2 45 2030 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 -es 2 46 2030 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 -es 2 47 2030 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 -es 2 48 2030 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 -es 2 49 2030 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 -es 2 50 2030 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 -es 2 51 2030 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 -es 2 52 2030 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 -es 2 53 2030 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 -es 2 54 2030 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 -es 2 55 2030 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 -es 2 56 2030 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 -es 2 57 2030 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 -es 2 58 2030 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 -es 2 59 2030 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 -es 2 60 2030 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 -es 2 61 2030 120000.0 120000.0 39.98 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 -es 2 62 2030 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 -es 2 63 2030 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 -es 2 64 2030 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 -es 2 65 2030 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 -es 2 66 2030 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 -es 2 67 2030 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 -es 2 68 2030 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 -es 2 69 2030 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 -es 2 70 2030 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 -es 2 71 2030 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 -es 2 72 2030 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 -es 2 73 2030 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 -es 2 74 2030 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 -es 2 75 2030 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 -es 2 76 2030 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 -es 2 77 2030 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 -es 2 78 2030 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 -es 2 79 2030 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 -es 2 80 2030 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 -es 2 81 2030 200000.0 200000.0 49.98 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 -es 2 82 2030 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 -es 2 83 2030 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 -es 2 84 2030 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 -es 2 85 2030 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 -es 2 86 2030 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 -es 2 87 2030 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 -es 2 88 2030 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 -es 2 89 2030 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 -es 2 90 2030 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 -es 2 91 2030 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 -es 2 92 2030 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 -es 2 93 2030 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 -es 2 94 2030 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 -es 2 95 2030 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 -es 2 96 2030 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 -es 2 97 2030 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 -es 2 98 2030 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 -es 2 99 2030 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 -es 2 100 2030 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 -es 2 101 2030 300000.0 300000.0 59.98 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 -es 2 102 2030 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 -es 2 103 2030 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 -es 2 104 2030 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 -es 2 105 2030 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 -es 2 106 2030 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 -es 2 107 2030 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 -es 2 108 2030 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 -es 2 109 2030 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 -es 2 110 2030 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 -es 2 111 2030 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 -es 2 112 2030 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 -es 2 113 2030 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 -es 2 114 2030 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 -es 2 115 2030 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 -es 2 116 2030 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 -es 2 117 2030 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 -es 2 118 2030 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 -es 2 119 2030 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 -es 2 120 2030 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 -es 2 121 2030 420000.0 420000.0 69.98 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 -es 2 122 2030 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 -es 2 123 2030 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 -es 2 124 2030 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 -es 2 125 2030 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 -es 2 126 2030 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 -es 2 127 2030 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 -es 2 128 2030 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 -es 2 129 2030 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 -es 2 130 2030 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 -es 2 131 2030 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 -es 2 132 2030 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 -es 2 133 2030 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 -es 2 134 2030 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 -es 2 135 2030 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 -es 2 136 2030 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 -es 2 137 2030 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 -es 2 138 2030 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 -es 2 139 2030 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 -es 2 140 2030 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 -es 2 141 2030 560000.0 560000.0 79.98 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 -es 2 142 2030 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 -es 2 143 2030 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 -es 2 144 2030 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 -es 2 145 2030 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 -es 2 146 2030 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 -es 2 147 2030 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 -es 2 148 2030 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 -es 2 149 2030 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 -es 2 150 2030 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 -es 2 151 2030 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 -es 2 152 2030 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 -es 2 153 2030 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 -es 2 154 2030 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 -es 2 155 2030 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 -es 2 156 2030 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 -es 2 157 2030 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 -es 2 158 2030 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 -es 2 159 2030 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 -es 2 160 2030 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 -es 2 161 2030 720000.0 720000.0 89.98 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 -es 2 162 2030 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 -es 2 163 2030 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 -es 2 164 2030 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 -es 2 165 2030 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 -es 2 166 2030 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 -es 2 167 2030 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 -es 2 168 2030 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 -es 2 169 2030 0.0 0.0 9.98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 -es 2 170 2030 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 -es 2 171 2030 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 -es 2 172 2030 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 -es 2 173 2030 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 -es 2 174 2030 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 -es 2 175 2030 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 -es 2 176 2030 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 -es 2 177 2030 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 -es 2 178 2030 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 -es 2 179 2030 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 -es 2 180 2030 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 -es 2 181 2030 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 -es 2 182 2030 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 -es 2 183 2030 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 -es 2 184 2030 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 -es 2 185 2030 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 -es 2 186 2030 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 -es 2 187 2030 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 -es 2 188 2030 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 -es 2 189 2030 20000.0 20000.0 19.98 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 -es 2 190 2030 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 -es 2 191 2030 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 -es 2 192 2030 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 -es 2 193 2030 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 -es 2 194 2030 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 -es 2 195 2030 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 -es 2 196 2030 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 -es 2 197 2030 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 -es 2 198 2030 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 -es 2 199 2030 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 -es 2 200 2030 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 -es 2 201 2030 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 -es 2 202 2030 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 -es 2 203 2030 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 -es 2 204 2030 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 -es 2 205 2030 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 -es 2 206 2030 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 -es 2 207 2030 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 -es 2 208 2030 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 -es 2 209 2030 60000.0 60000.0 29.98 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 -es 2 210 2030 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 -es 2 211 2030 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 -es 2 212 2030 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 -es 2 213 2030 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 -es 2 214 2030 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 -es 2 215 2030 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 -es 2 216 2030 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 -es 2 217 2030 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 -es 2 218 2030 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 -es 2 219 2030 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 -es 2 220 2030 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 -es 2 221 2030 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 -es 2 222 2030 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 -es 2 223 2030 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 -es 2 224 2030 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 -es 2 225 2030 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 -es 2 226 2030 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 -es 2 227 2030 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 -es 2 228 2030 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 -es 2 229 2030 120000.0 120000.0 39.98 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 -es 2 230 2030 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 -es 2 231 2030 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 -es 2 232 2030 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 -es 2 233 2030 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 -es 2 234 2030 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 -es 2 235 2030 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 -es 2 236 2030 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 -es 2 237 2030 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 -es 2 238 2030 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 -es 2 239 2030 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 -es 2 240 2030 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 -es 2 241 2030 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 -es 2 242 2030 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 -es 2 243 2030 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 -es 2 244 2030 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 -es 2 245 2030 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 -es 2 246 2030 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 -es 2 247 2030 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 -es 2 248 2030 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 -es 2 249 2030 200000.0 200000.0 49.98 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 -es 2 250 2030 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 -es 2 251 2030 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 -es 2 252 2030 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 -es 2 253 2030 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 -es 2 254 2030 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 -es 2 255 2030 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 -es 2 256 2030 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 -es 2 257 2030 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 -es 2 258 2030 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 -es 2 259 2030 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 -es 2 260 2030 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 -es 2 261 2030 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 -es 2 262 2030 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 -es 2 263 2030 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 -es 2 264 2030 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 -es 2 265 2030 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 -es 2 266 2030 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 -es 2 267 2030 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 -es 2 268 2030 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 -es 2 269 2030 300000.0 300000.0 59.98 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 -es 2 270 2030 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 -es 2 271 2030 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 -es 2 272 2030 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 -es 2 273 2030 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 -es 2 274 2030 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 -es 2 275 2030 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 -es 2 276 2030 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 -es 2 277 2030 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 -es 2 278 2030 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 -es 2 279 2030 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 -es 2 280 2030 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 -es 2 281 2030 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 -es 2 282 2030 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 -es 2 283 2030 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 -es 2 284 2030 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 -es 2 285 2030 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 -es 2 286 2030 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 -es 2 287 2030 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 -es 2 288 2030 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 -es 2 289 2030 420000.0 420000.0 69.98 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 -es 2 290 2030 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 -es 2 291 2030 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 -es 2 292 2030 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 -es 2 293 2030 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 -es 2 294 2030 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 -es 2 295 2030 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 -es 2 296 2030 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 -es 2 297 2030 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 -es 2 298 2030 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 -es 2 299 2030 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 -es 2 300 2030 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 -es 2 301 2030 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 -es 2 302 2030 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 -es 2 303 2030 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 -es 2 304 2030 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 -es 2 305 2030 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 -es 2 306 2030 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 -es 2 307 2030 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 -es 2 308 2030 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 -es 2 309 2030 560000.0 560000.0 79.98 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 -es 2 310 2030 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 -es 2 311 2030 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 -es 2 312 2030 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 -es 2 313 2030 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 -es 2 314 2030 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 -es 2 315 2030 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 -es 2 316 2030 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 -es 2 317 2030 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 -es 2 318 2030 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 -es 2 319 2030 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 -es 2 320 2030 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 -es 2 321 2030 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 -es 2 322 2030 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 -es 2 323 2030 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 -es 2 324 2030 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 -es 2 325 2030 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 -es 2 326 2030 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 -es 2 327 2030 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 -es 2 328 2030 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 -es 2 329 2030 720000.0 720000.0 89.98 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 -es 2 330 2030 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 -es 2 331 2030 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 -es 2 332 2030 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 -es 2 333 2030 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 -es 2 334 2030 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 -es 2 335 2030 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 -es 2 336 2030 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 -fr 2 1 2030 0.0 0.0 9.99 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 -fr 2 2 2030 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 -fr 2 3 2030 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 -fr 2 4 2030 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 -fr 2 5 2030 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 -fr 2 6 2030 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 -fr 2 7 2030 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 -fr 2 8 2030 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 -fr 2 9 2030 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 -fr 2 10 2030 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 -fr 2 11 2030 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 -fr 2 12 2030 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 -fr 2 13 2030 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 -fr 2 14 2030 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 -fr 2 15 2030 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 -fr 2 16 2030 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 -fr 2 17 2030 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 -fr 2 18 2030 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 -fr 2 19 2030 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 -fr 2 20 2030 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 -fr 2 21 2030 20000.0 20000.0 19.99 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 -fr 2 22 2030 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 -fr 2 23 2030 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 -fr 2 24 2030 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 -fr 2 25 2030 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 -fr 2 26 2030 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 -fr 2 27 2030 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 -fr 2 28 2030 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 -fr 2 29 2030 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 -fr 2 30 2030 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 -fr 2 31 2030 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 -fr 2 32 2030 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 -fr 2 33 2030 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 -fr 2 34 2030 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 -fr 2 35 2030 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 -fr 2 36 2030 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 -fr 2 37 2030 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 -fr 2 38 2030 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 -fr 2 39 2030 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 -fr 2 40 2030 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 -fr 2 41 2030 60000.0 60000.0 29.99 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 -fr 2 42 2030 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 -fr 2 43 2030 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 -fr 2 44 2030 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 -fr 2 45 2030 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 -fr 2 46 2030 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 -fr 2 47 2030 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 -fr 2 48 2030 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 -fr 2 49 2030 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 -fr 2 50 2030 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 -fr 2 51 2030 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 -fr 2 52 2030 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 -fr 2 53 2030 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 -fr 2 54 2030 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 -fr 2 55 2030 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 -fr 2 56 2030 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 -fr 2 57 2030 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 -fr 2 58 2030 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 -fr 2 59 2030 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 -fr 2 60 2030 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 -fr 2 61 2030 120000.0 120000.0 39.99 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 -fr 2 62 2030 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 -fr 2 63 2030 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 -fr 2 64 2030 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 -fr 2 65 2030 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 -fr 2 66 2030 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 -fr 2 67 2030 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 -fr 2 68 2030 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 -fr 2 69 2030 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 -fr 2 70 2030 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 -fr 2 71 2030 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 -fr 2 72 2030 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 -fr 2 73 2030 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 -fr 2 74 2030 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 -fr 2 75 2030 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 -fr 2 76 2030 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 -fr 2 77 2030 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 -fr 2 78 2030 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 -fr 2 79 2030 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 -fr 2 80 2030 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 -fr 2 81 2030 200000.0 200000.0 49.99 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 -fr 2 82 2030 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 -fr 2 83 2030 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 -fr 2 84 2030 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 -fr 2 85 2030 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 -fr 2 86 2030 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 -fr 2 87 2030 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 -fr 2 88 2030 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 -fr 2 89 2030 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 -fr 2 90 2030 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 -fr 2 91 2030 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 -fr 2 92 2030 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 -fr 2 93 2030 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 -fr 2 94 2030 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 -fr 2 95 2030 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 -fr 2 96 2030 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 -fr 2 97 2030 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 -fr 2 98 2030 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 -fr 2 99 2030 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 -fr 2 100 2030 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 -fr 2 101 2030 300000.0 300000.0 59.99 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 -fr 2 102 2030 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 -fr 2 103 2030 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 -fr 2 104 2030 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 -fr 2 105 2030 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 -fr 2 106 2030 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 -fr 2 107 2030 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 -fr 2 108 2030 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 -fr 2 109 2030 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 -fr 2 110 2030 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 -fr 2 111 2030 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 -fr 2 112 2030 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 -fr 2 113 2030 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 -fr 2 114 2030 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 -fr 2 115 2030 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 -fr 2 116 2030 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 -fr 2 117 2030 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 -fr 2 118 2030 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 -fr 2 119 2030 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 -fr 2 120 2030 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 -fr 2 121 2030 420000.0 420000.0 69.99 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 -fr 2 122 2030 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 -fr 2 123 2030 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 -fr 2 124 2030 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 -fr 2 125 2030 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 -fr 2 126 2030 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 -fr 2 127 2030 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 -fr 2 128 2030 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 -fr 2 129 2030 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 -fr 2 130 2030 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 -fr 2 131 2030 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 -fr 2 132 2030 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 -fr 2 133 2030 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 -fr 2 134 2030 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 -fr 2 135 2030 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 -fr 2 136 2030 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 -fr 2 137 2030 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 -fr 2 138 2030 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 -fr 2 139 2030 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 -fr 2 140 2030 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 -fr 2 141 2030 560000.0 560000.0 79.99 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 -fr 2 142 2030 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 -fr 2 143 2030 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 -fr 2 144 2030 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 -fr 2 145 2030 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 -fr 2 146 2030 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 -fr 2 147 2030 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 -fr 2 148 2030 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 -fr 2 149 2030 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 -fr 2 150 2030 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 -fr 2 151 2030 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 -fr 2 152 2030 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 -fr 2 153 2030 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 -fr 2 154 2030 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 -fr 2 155 2030 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 -fr 2 156 2030 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 -fr 2 157 2030 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 -fr 2 158 2030 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 -fr 2 159 2030 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 -fr 2 160 2030 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 -fr 2 161 2030 720000.0 720000.0 89.99 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 -fr 2 162 2030 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 -fr 2 163 2030 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 -fr 2 164 2030 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 -fr 2 165 2030 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 -fr 2 166 2030 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 -fr 2 167 2030 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 -fr 2 168 2030 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 -fr 2 169 2030 0.0 0.0 9.99 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 -fr 2 170 2030 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 -fr 2 171 2030 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 -fr 2 172 2030 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 -fr 2 173 2030 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 -fr 2 174 2030 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 -fr 2 175 2030 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 -fr 2 176 2030 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 -fr 2 177 2030 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 -fr 2 178 2030 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 -fr 2 179 2030 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 -fr 2 180 2030 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 -fr 2 181 2030 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 -fr 2 182 2030 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 -fr 2 183 2030 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 -fr 2 184 2030 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 -fr 2 185 2030 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 -fr 2 186 2030 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 -fr 2 187 2030 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 -fr 2 188 2030 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 -fr 2 189 2030 20000.0 20000.0 19.99 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 -fr 2 190 2030 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 -fr 2 191 2030 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 -fr 2 192 2030 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 -fr 2 193 2030 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 -fr 2 194 2030 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 -fr 2 195 2030 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 -fr 2 196 2030 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 -fr 2 197 2030 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 -fr 2 198 2030 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 -fr 2 199 2030 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 -fr 2 200 2030 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 -fr 2 201 2030 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 -fr 2 202 2030 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 -fr 2 203 2030 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 -fr 2 204 2030 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 -fr 2 205 2030 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 -fr 2 206 2030 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 -fr 2 207 2030 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 -fr 2 208 2030 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 -fr 2 209 2030 60000.0 60000.0 29.99 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 -fr 2 210 2030 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 -fr 2 211 2030 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 -fr 2 212 2030 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 -fr 2 213 2030 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 -fr 2 214 2030 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 -fr 2 215 2030 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 -fr 2 216 2030 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 -fr 2 217 2030 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 -fr 2 218 2030 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 -fr 2 219 2030 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 -fr 2 220 2030 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 -fr 2 221 2030 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 -fr 2 222 2030 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 -fr 2 223 2030 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 -fr 2 224 2030 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 -fr 2 225 2030 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 -fr 2 226 2030 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 -fr 2 227 2030 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 -fr 2 228 2030 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 -fr 2 229 2030 120000.0 120000.0 39.99 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 -fr 2 230 2030 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 -fr 2 231 2030 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 -fr 2 232 2030 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 -fr 2 233 2030 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 -fr 2 234 2030 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 -fr 2 235 2030 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 -fr 2 236 2030 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 -fr 2 237 2030 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 -fr 2 238 2030 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 -fr 2 239 2030 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 -fr 2 240 2030 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 -fr 2 241 2030 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 -fr 2 242 2030 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 -fr 2 243 2030 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 -fr 2 244 2030 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 -fr 2 245 2030 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 -fr 2 246 2030 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 -fr 2 247 2030 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 -fr 2 248 2030 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 -fr 2 249 2030 200000.0 200000.0 49.99 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 -fr 2 250 2030 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 -fr 2 251 2030 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 -fr 2 252 2030 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 -fr 2 253 2030 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 -fr 2 254 2030 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 -fr 2 255 2030 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 -fr 2 256 2030 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 -fr 2 257 2030 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 -fr 2 258 2030 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 -fr 2 259 2030 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 -fr 2 260 2030 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 -fr 2 261 2030 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 -fr 2 262 2030 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 -fr 2 263 2030 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 -fr 2 264 2030 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 -fr 2 265 2030 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 -fr 2 266 2030 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 -fr 2 267 2030 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 -fr 2 268 2030 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 -fr 2 269 2030 300000.0 300000.0 59.99 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 -fr 2 270 2030 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 -fr 2 271 2030 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 -fr 2 272 2030 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 -fr 2 273 2030 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 -fr 2 274 2030 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 -fr 2 275 2030 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 -fr 2 276 2030 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 -fr 2 277 2030 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 -fr 2 278 2030 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 -fr 2 279 2030 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 -fr 2 280 2030 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 -fr 2 281 2030 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 -fr 2 282 2030 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 -fr 2 283 2030 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 -fr 2 284 2030 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 -fr 2 285 2030 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 -fr 2 286 2030 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 -fr 2 287 2030 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 -fr 2 288 2030 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 -fr 2 289 2030 420000.0 420000.0 69.99 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 -fr 2 290 2030 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 -fr 2 291 2030 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 -fr 2 292 2030 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 -fr 2 293 2030 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 -fr 2 294 2030 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 -fr 2 295 2030 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 -fr 2 296 2030 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 -fr 2 297 2030 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 -fr 2 298 2030 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 -fr 2 299 2030 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 -fr 2 300 2030 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 -fr 2 301 2030 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 -fr 2 302 2030 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 -fr 2 303 2030 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 -fr 2 304 2030 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 -fr 2 305 2030 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 -fr 2 306 2030 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 -fr 2 307 2030 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 -fr 2 308 2030 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 -fr 2 309 2030 560000.0 560000.0 79.99 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 -fr 2 310 2030 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 -fr 2 311 2030 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 -fr 2 312 2030 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 -fr 2 313 2030 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 -fr 2 314 2030 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 -fr 2 315 2030 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 -fr 2 316 2030 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 -fr 2 317 2030 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 -fr 2 318 2030 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 -fr 2 319 2030 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 -fr 2 320 2030 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 -fr 2 321 2030 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 -fr 2 322 2030 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 -fr 2 323 2030 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 -fr 2 324 2030 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 -fr 2 325 2030 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 -fr 2 326 2030 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 -fr 2 327 2030 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 -fr 2 328 2030 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 -fr 2 329 2030 720000.0 720000.0 89.99 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 -fr 2 330 2030 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 -fr 2 331 2030 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 -fr 2 332 2030 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 -fr 2 333 2030 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 -fr 2 334 2030 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 -fr 2 335 2030 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 -fr 2 336 2030 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 +area mcYear timeId OV. COST OP. COST MRG. PRICE CO2 EMIS. BALANCE ROW BAL. PSP MISC. NDG LOAD H. ROR WIND SOLAR NUCLEAR LIGNITE COAL GAS OIL MIX. FUEL MISC. DTG H. STOR H. PUMP H. LEV H. INFL H. OVFL H. VAL H. COST UNSP. ENRG SPIL. ENRG LOLD LOLP AVL DTG DTG MRG MAX MRG NP COST NODU +de 2 1 0.0 0.0 9.98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 +de 2 2 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 +de 2 3 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 +de 2 4 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 +de 2 5 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 +de 2 6 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 +de 2 7 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 +de 2 8 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 +de 2 9 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 +de 2 10 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 +de 2 11 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 +de 2 12 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 +de 2 13 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 +de 2 14 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 +de 2 15 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 +de 2 16 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 +de 2 17 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 +de 2 18 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 +de 2 19 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 +de 2 20 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 +de 2 21 20000.0 20000.0 19.98 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 +de 2 22 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 +de 2 23 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 +de 2 24 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 +de 2 25 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 +de 2 26 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 +de 2 27 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 +de 2 28 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 +de 2 29 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 +de 2 30 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 +de 2 31 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 +de 2 32 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 +de 2 33 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 +de 2 34 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 +de 2 35 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 +de 2 36 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 +de 2 37 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 +de 2 38 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 +de 2 39 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 +de 2 40 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 +de 2 41 60000.0 60000.0 29.98 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 +de 2 42 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 +de 2 43 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 +de 2 44 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 +de 2 45 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 +de 2 46 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 +de 2 47 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 +de 2 48 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 +de 2 49 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 +de 2 50 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 +de 2 51 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 +de 2 52 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 +de 2 53 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 +de 2 54 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 +de 2 55 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 +de 2 56 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 +de 2 57 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 +de 2 58 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 +de 2 59 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 +de 2 60 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 +de 2 61 120000.0 120000.0 39.98 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 +de 2 62 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 +de 2 63 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 +de 2 64 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 +de 2 65 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 +de 2 66 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 +de 2 67 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 +de 2 68 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 +de 2 69 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 +de 2 70 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 +de 2 71 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 +de 2 72 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 +de 2 73 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 +de 2 74 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 +de 2 75 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 +de 2 76 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 +de 2 77 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 +de 2 78 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 +de 2 79 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 +de 2 80 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 +de 2 81 200000.0 200000.0 49.98 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 +de 2 82 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 +de 2 83 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 +de 2 84 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 +de 2 85 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 +de 2 86 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 +de 2 87 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 +de 2 88 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 +de 2 89 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 +de 2 90 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 +de 2 91 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 +de 2 92 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 +de 2 93 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 +de 2 94 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 +de 2 95 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 +de 2 96 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 +de 2 97 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 +de 2 98 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 +de 2 99 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 +de 2 100 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 +de 2 101 300000.0 300000.0 59.98 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 +de 2 102 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 +de 2 103 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 +de 2 104 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 +de 2 105 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 +de 2 106 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 +de 2 107 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 +de 2 108 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 +de 2 109 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 +de 2 110 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 +de 2 111 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 +de 2 112 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 +de 2 113 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 +de 2 114 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 +de 2 115 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 +de 2 116 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 +de 2 117 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 +de 2 118 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 +de 2 119 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 +de 2 120 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 +de 2 121 420000.0 420000.0 69.98 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 +de 2 122 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 +de 2 123 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 +de 2 124 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 +de 2 125 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 +de 2 126 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 +de 2 127 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 +de 2 128 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 +de 2 129 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 +de 2 130 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 +de 2 131 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 +de 2 132 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 +de 2 133 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 +de 2 134 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 +de 2 135 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 +de 2 136 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 +de 2 137 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 +de 2 138 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 +de 2 139 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 +de 2 140 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 +de 2 141 560000.0 560000.0 79.98 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 +de 2 142 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 +de 2 143 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 +de 2 144 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 +de 2 145 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 +de 2 146 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 +de 2 147 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 +de 2 148 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 +de 2 149 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 +de 2 150 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 +de 2 151 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 +de 2 152 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 +de 2 153 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 +de 2 154 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 +de 2 155 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 +de 2 156 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 +de 2 157 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 +de 2 158 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 +de 2 159 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 +de 2 160 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 +de 2 161 720000.0 720000.0 89.98 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 +de 2 162 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 +de 2 163 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 +de 2 164 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 +de 2 165 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 +de 2 166 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 +de 2 167 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 +de 2 168 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 +de 2 169 0.0 0.0 9.98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 +de 2 170 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 +de 2 171 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 +de 2 172 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 +de 2 173 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 +de 2 174 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 +de 2 175 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 +de 2 176 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 +de 2 177 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 +de 2 178 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 +de 2 179 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 +de 2 180 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 +de 2 181 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 +de 2 182 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 +de 2 183 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 +de 2 184 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 +de 2 185 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 +de 2 186 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 +de 2 187 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 +de 2 188 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 +de 2 189 20000.0 20000.0 19.98 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 +de 2 190 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 +de 2 191 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 +de 2 192 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 +de 2 193 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 +de 2 194 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 +de 2 195 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 +de 2 196 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 +de 2 197 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 +de 2 198 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 +de 2 199 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 +de 2 200 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 +de 2 201 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 +de 2 202 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 +de 2 203 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 +de 2 204 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 +de 2 205 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 +de 2 206 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 +de 2 207 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 +de 2 208 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 +de 2 209 60000.0 60000.0 29.98 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 +de 2 210 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 +de 2 211 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 +de 2 212 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 +de 2 213 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 +de 2 214 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 +de 2 215 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 +de 2 216 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 +de 2 217 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 +de 2 218 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 +de 2 219 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 +de 2 220 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 +de 2 221 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 +de 2 222 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 +de 2 223 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 +de 2 224 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 +de 2 225 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 +de 2 226 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 +de 2 227 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 +de 2 228 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 +de 2 229 120000.0 120000.0 39.98 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 +de 2 230 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 +de 2 231 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 +de 2 232 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 +de 2 233 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 +de 2 234 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 +de 2 235 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 +de 2 236 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 +de 2 237 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 +de 2 238 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 +de 2 239 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 +de 2 240 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 +de 2 241 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 +de 2 242 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 +de 2 243 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 +de 2 244 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 +de 2 245 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 +de 2 246 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 +de 2 247 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 +de 2 248 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 +de 2 249 200000.0 200000.0 49.98 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 +de 2 250 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 +de 2 251 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 +de 2 252 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 +de 2 253 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 +de 2 254 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 +de 2 255 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 +de 2 256 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 +de 2 257 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 +de 2 258 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 +de 2 259 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 +de 2 260 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 +de 2 261 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 +de 2 262 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 +de 2 263 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 +de 2 264 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 +de 2 265 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 +de 2 266 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 +de 2 267 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 +de 2 268 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 +de 2 269 300000.0 300000.0 59.98 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 +de 2 270 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 +de 2 271 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 +de 2 272 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 +de 2 273 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 +de 2 274 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 +de 2 275 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 +de 2 276 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 +de 2 277 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 +de 2 278 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 +de 2 279 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 +de 2 280 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 +de 2 281 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 +de 2 282 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 +de 2 283 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 +de 2 284 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 +de 2 285 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 +de 2 286 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 +de 2 287 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 +de 2 288 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 +de 2 289 420000.0 420000.0 69.98 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 +de 2 290 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 +de 2 291 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 +de 2 292 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 +de 2 293 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 +de 2 294 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 +de 2 295 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 +de 2 296 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 +de 2 297 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 +de 2 298 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 +de 2 299 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 +de 2 300 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 +de 2 301 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 +de 2 302 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 +de 2 303 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 +de 2 304 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 +de 2 305 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 +de 2 306 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 +de 2 307 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 +de 2 308 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 +de 2 309 560000.0 560000.0 79.98 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 +de 2 310 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 +de 2 311 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 +de 2 312 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 +de 2 313 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 +de 2 314 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 +de 2 315 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 +de 2 316 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 +de 2 317 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 +de 2 318 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 +de 2 319 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 +de 2 320 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 +de 2 321 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 +de 2 322 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 +de 2 323 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 +de 2 324 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 +de 2 325 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 +de 2 326 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 +de 2 327 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 +de 2 328 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 +de 2 329 720000.0 720000.0 89.98 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 +de 2 330 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 +de 2 331 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 +de 2 332 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 +de 2 333 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 +de 2 334 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 +de 2 335 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 +de 2 336 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 +es 2 1 0.0 0.0 9.98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 +es 2 2 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 +es 2 3 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 +es 2 4 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 +es 2 5 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 +es 2 6 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 +es 2 7 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 +es 2 8 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 +es 2 9 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 +es 2 10 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 +es 2 11 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 +es 2 12 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 +es 2 13 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 +es 2 14 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 +es 2 15 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 +es 2 16 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 +es 2 17 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 +es 2 18 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 +es 2 19 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 +es 2 20 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 +es 2 21 20000.0 20000.0 19.98 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 +es 2 22 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 +es 2 23 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 +es 2 24 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 +es 2 25 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 +es 2 26 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 +es 2 27 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 +es 2 28 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 +es 2 29 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 +es 2 30 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 +es 2 31 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 +es 2 32 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 +es 2 33 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 +es 2 34 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 +es 2 35 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 +es 2 36 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 +es 2 37 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 +es 2 38 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 +es 2 39 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 +es 2 40 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 +es 2 41 60000.0 60000.0 29.98 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 +es 2 42 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 +es 2 43 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 +es 2 44 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 +es 2 45 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 +es 2 46 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 +es 2 47 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 +es 2 48 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 +es 2 49 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 +es 2 50 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 +es 2 51 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 +es 2 52 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 +es 2 53 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 +es 2 54 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 +es 2 55 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 +es 2 56 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 +es 2 57 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 +es 2 58 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 +es 2 59 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 +es 2 60 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 +es 2 61 120000.0 120000.0 39.98 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 +es 2 62 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 +es 2 63 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 +es 2 64 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 +es 2 65 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 +es 2 66 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 +es 2 67 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 +es 2 68 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 +es 2 69 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 +es 2 70 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 +es 2 71 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 +es 2 72 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 +es 2 73 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 +es 2 74 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 +es 2 75 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 +es 2 76 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 +es 2 77 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 +es 2 78 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 +es 2 79 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 +es 2 80 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 +es 2 81 200000.0 200000.0 49.98 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 +es 2 82 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 +es 2 83 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 +es 2 84 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 +es 2 85 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 +es 2 86 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 +es 2 87 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 +es 2 88 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 +es 2 89 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 +es 2 90 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 +es 2 91 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 +es 2 92 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 +es 2 93 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 +es 2 94 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 +es 2 95 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 +es 2 96 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 +es 2 97 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 +es 2 98 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 +es 2 99 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 +es 2 100 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 +es 2 101 300000.0 300000.0 59.98 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 +es 2 102 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 +es 2 103 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 +es 2 104 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 +es 2 105 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 +es 2 106 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 +es 2 107 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 +es 2 108 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 +es 2 109 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 +es 2 110 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 +es 2 111 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 +es 2 112 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 +es 2 113 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 +es 2 114 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 +es 2 115 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 +es 2 116 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 +es 2 117 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 +es 2 118 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 +es 2 119 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 +es 2 120 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 +es 2 121 420000.0 420000.0 69.98 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 +es 2 122 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 +es 2 123 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 +es 2 124 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 +es 2 125 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 +es 2 126 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 +es 2 127 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 +es 2 128 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 +es 2 129 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 +es 2 130 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 +es 2 131 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 +es 2 132 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 +es 2 133 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 +es 2 134 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 +es 2 135 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 +es 2 136 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 +es 2 137 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 +es 2 138 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 +es 2 139 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 +es 2 140 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 +es 2 141 560000.0 560000.0 79.98 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 +es 2 142 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 +es 2 143 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 +es 2 144 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 +es 2 145 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 +es 2 146 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 +es 2 147 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 +es 2 148 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 +es 2 149 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 +es 2 150 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 +es 2 151 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 +es 2 152 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 +es 2 153 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 +es 2 154 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 +es 2 155 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 +es 2 156 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 +es 2 157 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 +es 2 158 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 +es 2 159 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 +es 2 160 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 +es 2 161 720000.0 720000.0 89.98 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 +es 2 162 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 +es 2 163 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 +es 2 164 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 +es 2 165 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 +es 2 166 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 +es 2 167 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 +es 2 168 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 +es 2 169 0.0 0.0 9.98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 +es 2 170 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 +es 2 171 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 +es 2 172 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 +es 2 173 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 +es 2 174 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 +es 2 175 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 +es 2 176 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 +es 2 177 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 +es 2 178 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 +es 2 179 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 +es 2 180 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 +es 2 181 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 +es 2 182 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 +es 2 183 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 +es 2 184 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 +es 2 185 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 +es 2 186 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 +es 2 187 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 +es 2 188 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 +es 2 189 20000.0 20000.0 19.98 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 +es 2 190 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 +es 2 191 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 +es 2 192 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 +es 2 193 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 +es 2 194 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 +es 2 195 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 +es 2 196 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 +es 2 197 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 +es 2 198 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 +es 2 199 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 +es 2 200 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 +es 2 201 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 +es 2 202 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 +es 2 203 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 +es 2 204 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 +es 2 205 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 +es 2 206 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 +es 2 207 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 +es 2 208 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 +es 2 209 60000.0 60000.0 29.98 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 +es 2 210 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 +es 2 211 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 +es 2 212 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 +es 2 213 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 +es 2 214 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 +es 2 215 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 +es 2 216 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 +es 2 217 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 +es 2 218 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 +es 2 219 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 +es 2 220 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 +es 2 221 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 +es 2 222 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 +es 2 223 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 +es 2 224 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 +es 2 225 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 +es 2 226 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 +es 2 227 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 +es 2 228 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 +es 2 229 120000.0 120000.0 39.98 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 +es 2 230 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 +es 2 231 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 +es 2 232 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 +es 2 233 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 +es 2 234 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 +es 2 235 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 +es 2 236 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 +es 2 237 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 +es 2 238 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 +es 2 239 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 +es 2 240 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 +es 2 241 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 +es 2 242 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 +es 2 243 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 +es 2 244 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 +es 2 245 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 +es 2 246 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 +es 2 247 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 +es 2 248 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 +es 2 249 200000.0 200000.0 49.98 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 +es 2 250 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 +es 2 251 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 +es 2 252 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 +es 2 253 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 +es 2 254 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 +es 2 255 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 +es 2 256 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 +es 2 257 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 +es 2 258 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 +es 2 259 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 +es 2 260 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 +es 2 261 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 +es 2 262 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 +es 2 263 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 +es 2 264 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 +es 2 265 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 +es 2 266 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 +es 2 267 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 +es 2 268 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 +es 2 269 300000.0 300000.0 59.98 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 +es 2 270 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 +es 2 271 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 +es 2 272 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 +es 2 273 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 +es 2 274 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 +es 2 275 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 +es 2 276 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 +es 2 277 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 +es 2 278 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 +es 2 279 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 +es 2 280 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 +es 2 281 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 +es 2 282 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 +es 2 283 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 +es 2 284 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 +es 2 285 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 +es 2 286 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 +es 2 287 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 +es 2 288 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 +es 2 289 420000.0 420000.0 69.98 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 +es 2 290 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 +es 2 291 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 +es 2 292 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 +es 2 293 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 +es 2 294 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 +es 2 295 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 +es 2 296 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 +es 2 297 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 +es 2 298 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 +es 2 299 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 +es 2 300 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 +es 2 301 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 +es 2 302 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 +es 2 303 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 +es 2 304 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 +es 2 305 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 +es 2 306 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 +es 2 307 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 +es 2 308 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 +es 2 309 560000.0 560000.0 79.98 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 +es 2 310 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 +es 2 311 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 +es 2 312 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 +es 2 313 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 +es 2 314 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 +es 2 315 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 +es 2 316 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 +es 2 317 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 +es 2 318 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 +es 2 319 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 +es 2 320 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 +es 2 321 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 +es 2 322 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 +es 2 323 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 +es 2 324 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 +es 2 325 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 +es 2 326 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 +es 2 327 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 +es 2 328 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 +es 2 329 720000.0 720000.0 89.98 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 +es 2 330 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 +es 2 331 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 +es 2 332 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 +es 2 333 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 +es 2 334 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 +es 2 335 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 +es 2 336 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 +fr 2 1 0.0 0.0 9.99 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 +fr 2 2 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 +fr 2 3 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 +fr 2 4 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 +fr 2 5 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 +fr 2 6 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 +fr 2 7 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 +fr 2 8 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 +fr 2 9 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 +fr 2 10 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 +fr 2 11 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 +fr 2 12 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 +fr 2 13 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 +fr 2 14 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 +fr 2 15 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 +fr 2 16 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 +fr 2 17 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 +fr 2 18 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 +fr 2 19 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 +fr 2 20 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 +fr 2 21 20000.0 20000.0 19.99 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 +fr 2 22 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 +fr 2 23 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 +fr 2 24 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 +fr 2 25 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 +fr 2 26 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 +fr 2 27 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 +fr 2 28 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 +fr 2 29 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 +fr 2 30 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 +fr 2 31 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 +fr 2 32 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 +fr 2 33 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 +fr 2 34 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 +fr 2 35 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 +fr 2 36 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 +fr 2 37 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 +fr 2 38 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 +fr 2 39 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 +fr 2 40 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 +fr 2 41 60000.0 60000.0 29.99 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 +fr 2 42 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 +fr 2 43 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 +fr 2 44 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 +fr 2 45 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 +fr 2 46 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 +fr 2 47 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 +fr 2 48 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 +fr 2 49 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 +fr 2 50 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 +fr 2 51 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 +fr 2 52 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 +fr 2 53 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 +fr 2 54 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 +fr 2 55 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 +fr 2 56 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 +fr 2 57 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 +fr 2 58 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 +fr 2 59 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 +fr 2 60 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 +fr 2 61 120000.0 120000.0 39.99 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 +fr 2 62 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 +fr 2 63 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 +fr 2 64 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 +fr 2 65 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 +fr 2 66 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 +fr 2 67 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 +fr 2 68 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 +fr 2 69 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 +fr 2 70 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 +fr 2 71 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 +fr 2 72 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 +fr 2 73 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 +fr 2 74 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 +fr 2 75 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 +fr 2 76 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 +fr 2 77 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 +fr 2 78 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 +fr 2 79 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 +fr 2 80 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 +fr 2 81 200000.0 200000.0 49.99 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 +fr 2 82 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 +fr 2 83 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 +fr 2 84 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 +fr 2 85 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 +fr 2 86 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 +fr 2 87 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 +fr 2 88 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 +fr 2 89 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 +fr 2 90 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 +fr 2 91 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 +fr 2 92 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 +fr 2 93 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 +fr 2 94 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 +fr 2 95 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 +fr 2 96 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 +fr 2 97 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 +fr 2 98 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 +fr 2 99 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 +fr 2 100 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 +fr 2 101 300000.0 300000.0 59.99 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 +fr 2 102 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 +fr 2 103 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 +fr 2 104 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 +fr 2 105 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 +fr 2 106 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 +fr 2 107 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 +fr 2 108 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 +fr 2 109 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 +fr 2 110 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 +fr 2 111 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 +fr 2 112 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 +fr 2 113 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 +fr 2 114 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 +fr 2 115 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 +fr 2 116 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 +fr 2 117 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 +fr 2 118 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 +fr 2 119 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 +fr 2 120 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 +fr 2 121 420000.0 420000.0 69.99 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 +fr 2 122 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 +fr 2 123 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 +fr 2 124 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 +fr 2 125 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 +fr 2 126 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 +fr 2 127 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 +fr 2 128 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 +fr 2 129 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 +fr 2 130 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 +fr 2 131 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 +fr 2 132 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 +fr 2 133 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 +fr 2 134 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 +fr 2 135 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 +fr 2 136 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 +fr 2 137 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 +fr 2 138 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 +fr 2 139 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 +fr 2 140 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 +fr 2 141 560000.0 560000.0 79.99 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 +fr 2 142 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 +fr 2 143 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 +fr 2 144 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 +fr 2 145 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 +fr 2 146 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 +fr 2 147 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 +fr 2 148 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 +fr 2 149 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 +fr 2 150 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 +fr 2 151 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 +fr 2 152 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 +fr 2 153 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 +fr 2 154 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 +fr 2 155 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 +fr 2 156 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 +fr 2 157 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 +fr 2 158 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 +fr 2 159 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 +fr 2 160 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 +fr 2 161 720000.0 720000.0 89.99 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 +fr 2 162 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 +fr 2 163 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 +fr 2 164 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 +fr 2 165 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 +fr 2 166 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 +fr 2 167 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 +fr 2 168 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 +fr 2 169 0.0 0.0 9.99 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 18000.0 18000.0 0.0 0.0 +fr 2 170 1000.0 1000.0 10.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17900.0 17900.0 0.0 1.0 +fr 2 171 2000.0 2000.0 10.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17800.0 17800.0 0.0 1.0 +fr 2 172 3000.0 3000.0 10.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17700.0 17700.0 0.0 1.0 +fr 2 173 4000.0 4000.0 10.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17600.0 17600.0 0.0 1.0 +fr 2 174 5000.0 5000.0 10.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17500.0 17500.0 0.0 1.0 +fr 2 175 6000.0 6000.0 10.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17400.0 17400.0 0.0 1.0 +fr 2 176 7000.0 7000.0 10.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17300.0 17300.0 0.0 1.0 +fr 2 177 8000.0 8000.0 10.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17200.0 17200.0 0.0 1.0 +fr 2 178 9000.0 9000.0 10.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17100.0 17100.0 0.0 1.0 +fr 2 179 10000.0 10000.0 10.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 17000.0 17000.0 0.0 1.0 +fr 2 180 11000.0 11000.0 10.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16900.0 16900.0 0.0 1.0 +fr 2 181 12000.0 12000.0 10.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16800.0 16800.0 0.0 1.0 +fr 2 182 13000.0 13000.0 10.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16700.0 16700.0 0.0 1.0 +fr 2 183 14000.0 14000.0 10.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16600.0 16600.0 0.0 1.0 +fr 2 184 15000.0 15000.0 10.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16500.0 16500.0 0.0 1.0 +fr 2 185 16000.0 16000.0 10.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16400.0 16400.0 0.0 1.0 +fr 2 186 17000.0 17000.0 10.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16300.0 16300.0 0.0 1.0 +fr 2 187 18000.0 18000.0 10.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16200.0 16200.0 0.0 1.0 +fr 2 188 19000.0 19000.0 10.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16100.0 16100.0 0.0 1.0 +fr 2 189 20000.0 20000.0 19.99 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 16000.0 16000.0 0.0 1.0 +fr 2 190 22000.0 22000.0 20.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15900.0 15900.0 0.0 2.0 +fr 2 191 24000.0 24000.0 20.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15800.0 15800.0 0.0 2.0 +fr 2 192 26000.0 26000.0 20.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15700.0 15700.0 0.0 2.0 +fr 2 193 28000.0 28000.0 20.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15600.0 15600.0 0.0 2.0 +fr 2 194 30000.0 30000.0 20.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15500.0 15500.0 0.0 2.0 +fr 2 195 32000.0 32000.0 20.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15400.0 15400.0 0.0 2.0 +fr 2 196 34000.0 34000.0 20.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15300.0 15300.0 0.0 2.0 +fr 2 197 36000.0 36000.0 20.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15200.0 15200.0 0.0 2.0 +fr 2 198 38000.0 38000.0 20.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15100.0 15100.0 0.0 2.0 +fr 2 199 40000.0 40000.0 20.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 15000.0 15000.0 0.0 2.0 +fr 2 200 42000.0 42000.0 20.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14900.0 14900.0 0.0 2.0 +fr 2 201 44000.0 44000.0 20.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14800.0 14800.0 0.0 2.0 +fr 2 202 46000.0 46000.0 20.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14700.0 14700.0 0.0 2.0 +fr 2 203 48000.0 48000.0 20.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14600.0 14600.0 0.0 2.0 +fr 2 204 50000.0 50000.0 20.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14500.0 14500.0 0.0 2.0 +fr 2 205 52000.0 52000.0 20.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14400.0 14400.0 0.0 2.0 +fr 2 206 54000.0 54000.0 20.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14300.0 14300.0 0.0 2.0 +fr 2 207 56000.0 56000.0 20.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14200.0 14200.0 0.0 2.0 +fr 2 208 58000.0 58000.0 20.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14100.0 14100.0 0.0 2.0 +fr 2 209 60000.0 60000.0 29.99 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 14000.0 14000.0 0.0 2.0 +fr 2 210 63000.0 63000.0 30.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13900.0 13900.0 0.0 3.0 +fr 2 211 66000.0 66000.0 30.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13800.0 13800.0 0.0 3.0 +fr 2 212 69000.0 69000.0 30.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13700.0 13700.0 0.0 3.0 +fr 2 213 72000.0 72000.0 30.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13600.0 13600.0 0.0 3.0 +fr 2 214 75000.0 75000.0 30.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13500.0 13500.0 0.0 3.0 +fr 2 215 78000.0 78000.0 30.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13400.0 13400.0 0.0 3.0 +fr 2 216 81000.0 81000.0 30.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13300.0 13300.0 0.0 3.0 +fr 2 217 84000.0 84000.0 30.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13200.0 13200.0 0.0 3.0 +fr 2 218 87000.0 87000.0 30.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13100.0 13100.0 0.0 3.0 +fr 2 219 90000.0 90000.0 30.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 13000.0 13000.0 0.0 3.0 +fr 2 220 93000.0 93000.0 30.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12900.0 12900.0 0.0 3.0 +fr 2 221 96000.0 96000.0 30.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12800.0 12800.0 0.0 3.0 +fr 2 222 99000.0 99000.0 30.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12700.0 12700.0 0.0 3.0 +fr 2 223 102000.0 102000.0 30.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12600.0 12600.0 0.0 3.0 +fr 2 224 105000.0 105000.0 30.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12500.0 12500.0 0.0 3.0 +fr 2 225 108000.0 108000.0 30.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12400.0 12400.0 0.0 3.0 +fr 2 226 111000.0 111000.0 30.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12300.0 12300.0 0.0 3.0 +fr 2 227 114000.0 114000.0 30.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12200.0 12200.0 0.0 3.0 +fr 2 228 117000.0 117000.0 30.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12100.0 12100.0 0.0 3.0 +fr 2 229 120000.0 120000.0 39.99 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 12000.0 12000.0 0.0 3.0 +fr 2 230 124000.0 124000.0 40.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11900.0 11900.0 0.0 4.0 +fr 2 231 128000.0 128000.0 40.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11800.0 11800.0 0.0 4.0 +fr 2 232 132000.0 132000.0 40.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11700.0 11700.0 0.0 4.0 +fr 2 233 136000.0 136000.0 40.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11600.0 11600.0 0.0 4.0 +fr 2 234 140000.0 140000.0 40.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11500.0 11500.0 0.0 4.0 +fr 2 235 144000.0 144000.0 40.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11400.0 11400.0 0.0 4.0 +fr 2 236 148000.0 148000.0 40.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11300.0 11300.0 0.0 4.0 +fr 2 237 152000.0 152000.0 40.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11200.0 11200.0 0.0 4.0 +fr 2 238 156000.0 156000.0 40.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11100.0 11100.0 0.0 4.0 +fr 2 239 160000.0 160000.0 40.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 11000.0 11000.0 0.0 4.0 +fr 2 240 164000.0 164000.0 40.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10900.0 10900.0 0.0 4.0 +fr 2 241 168000.0 168000.0 40.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10800.0 10800.0 0.0 4.0 +fr 2 242 172000.0 172000.0 40.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10700.0 10700.0 0.0 4.0 +fr 2 243 176000.0 176000.0 40.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10600.0 10600.0 0.0 4.0 +fr 2 244 180000.0 180000.0 40.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10500.0 10500.0 0.0 4.0 +fr 2 245 184000.0 184000.0 40.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10400.0 10400.0 0.0 4.0 +fr 2 246 188000.0 188000.0 40.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10300.0 10300.0 0.0 4.0 +fr 2 247 192000.0 192000.0 40.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10200.0 10200.0 0.0 4.0 +fr 2 248 196000.0 196000.0 40.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10100.0 10100.0 0.0 4.0 +fr 2 249 200000.0 200000.0 49.99 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 10000.0 10000.0 0.0 4.0 +fr 2 250 205000.0 205000.0 50.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9900.0 9900.0 0.0 5.0 +fr 2 251 210000.0 210000.0 50.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9800.0 9800.0 0.0 5.0 +fr 2 252 215000.0 215000.0 50.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9700.0 9700.0 0.0 5.0 +fr 2 253 220000.0 220000.0 50.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9600.0 9600.0 0.0 5.0 +fr 2 254 225000.0 225000.0 50.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9500.0 9500.0 0.0 5.0 +fr 2 255 230000.0 230000.0 50.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9400.0 9400.0 0.0 5.0 +fr 2 256 235000.0 235000.0 50.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9300.0 9300.0 0.0 5.0 +fr 2 257 240000.0 240000.0 50.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9200.0 9200.0 0.0 5.0 +fr 2 258 245000.0 245000.0 50.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9100.0 9100.0 0.0 5.0 +fr 2 259 250000.0 250000.0 50.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 9000.0 9000.0 0.0 5.0 +fr 2 260 255000.0 255000.0 50.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8900.0 8900.0 0.0 5.0 +fr 2 261 260000.0 260000.0 50.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8800.0 8800.0 0.0 5.0 +fr 2 262 265000.0 265000.0 50.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8700.0 8700.0 0.0 5.0 +fr 2 263 270000.0 270000.0 50.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8600.0 8600.0 0.0 5.0 +fr 2 264 275000.0 275000.0 50.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8500.0 8500.0 0.0 5.0 +fr 2 265 280000.0 280000.0 50.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8400.0 8400.0 0.0 5.0 +fr 2 266 285000.0 285000.0 50.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8300.0 8300.0 0.0 5.0 +fr 2 267 290000.0 290000.0 50.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8200.0 8200.0 0.0 5.0 +fr 2 268 295000.0 295000.0 50.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8100.0 8100.0 0.0 5.0 +fr 2 269 300000.0 300000.0 59.99 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 8000.0 8000.0 0.0 5.0 +fr 2 270 306000.0 306000.0 60.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7900.0 7900.0 0.0 6.0 +fr 2 271 312000.0 312000.0 60.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7800.0 7800.0 0.0 6.0 +fr 2 272 318000.0 318000.0 60.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7700.0 7700.0 0.0 6.0 +fr 2 273 324000.0 324000.0 60.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7600.0 7600.0 0.0 6.0 +fr 2 274 330000.0 330000.0 60.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7500.0 7500.0 0.0 6.0 +fr 2 275 336000.0 336000.0 60.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7400.0 7400.0 0.0 6.0 +fr 2 276 342000.0 342000.0 60.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7300.0 7300.0 0.0 6.0 +fr 2 277 348000.0 348000.0 60.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7200.0 7200.0 0.0 6.0 +fr 2 278 354000.0 354000.0 60.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7100.0 7100.0 0.0 6.0 +fr 2 279 360000.0 360000.0 60.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 7000.0 7000.0 0.0 6.0 +fr 2 280 366000.0 366000.0 60.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6900.0 6900.0 0.0 6.0 +fr 2 281 372000.0 372000.0 60.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6800.0 6800.0 0.0 6.0 +fr 2 282 378000.0 378000.0 60.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6700.0 6700.0 0.0 6.0 +fr 2 283 384000.0 384000.0 60.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6600.0 6600.0 0.0 6.0 +fr 2 284 390000.0 390000.0 60.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6500.0 6500.0 0.0 6.0 +fr 2 285 396000.0 396000.0 60.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6400.0 6400.0 0.0 6.0 +fr 2 286 402000.0 402000.0 60.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6300.0 6300.0 0.0 6.0 +fr 2 287 408000.0 408000.0 60.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6200.0 6200.0 0.0 6.0 +fr 2 288 414000.0 414000.0 60.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6100.0 6100.0 0.0 6.0 +fr 2 289 420000.0 420000.0 69.99 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 6000.0 6000.0 0.0 6.0 +fr 2 290 427000.0 427000.0 70.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5900.0 5900.0 0.0 7.0 +fr 2 291 434000.0 434000.0 70.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5800.0 5800.0 0.0 7.0 +fr 2 292 441000.0 441000.0 70.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5700.0 5700.0 0.0 7.0 +fr 2 293 448000.0 448000.0 70.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5600.0 5600.0 0.0 7.0 +fr 2 294 455000.0 455000.0 70.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5500.0 5500.0 0.0 7.0 +fr 2 295 462000.0 462000.0 70.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5400.0 5400.0 0.0 7.0 +fr 2 296 469000.0 469000.0 70.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5300.0 5300.0 0.0 7.0 +fr 2 297 476000.0 476000.0 70.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5200.0 5200.0 0.0 7.0 +fr 2 298 483000.0 483000.0 70.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5100.0 5100.0 0.0 7.0 +fr 2 299 490000.0 490000.0 70.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 5000.0 5000.0 0.0 7.0 +fr 2 300 497000.0 497000.0 70.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4900.0 4900.0 0.0 7.0 +fr 2 301 504000.0 504000.0 70.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4800.0 4800.0 0.0 7.0 +fr 2 302 511000.0 511000.0 70.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4700.0 4700.0 0.0 7.0 +fr 2 303 518000.0 518000.0 70.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4600.0 4600.0 0.0 7.0 +fr 2 304 525000.0 525000.0 70.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4500.0 4500.0 0.0 7.0 +fr 2 305 532000.0 532000.0 70.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4400.0 4400.0 0.0 7.0 +fr 2 306 539000.0 539000.0 70.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4300.0 4300.0 0.0 7.0 +fr 2 307 546000.0 546000.0 70.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4200.0 4200.0 0.0 7.0 +fr 2 308 553000.0 553000.0 70.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4100.0 4100.0 0.0 7.0 +fr 2 309 560000.0 560000.0 79.99 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 4000.0 4000.0 0.0 7.0 +fr 2 310 568000.0 568000.0 80.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3900.0 3900.0 0.0 8.0 +fr 2 311 576000.0 576000.0 80.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3800.0 3800.0 0.0 8.0 +fr 2 312 584000.0 584000.0 80.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3700.0 3700.0 0.0 8.0 +fr 2 313 592000.0 592000.0 80.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3600.0 3600.0 0.0 8.0 +fr 2 314 600000.0 600000.0 80.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3500.0 3500.0 0.0 8.0 +fr 2 315 608000.0 608000.0 80.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3400.0 3400.0 0.0 8.0 +fr 2 316 616000.0 616000.0 80.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3300.0 3300.0 0.0 8.0 +fr 2 317 624000.0 624000.0 80.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3200.0 3200.0 0.0 8.0 +fr 2 318 632000.0 632000.0 80.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3100.0 3100.0 0.0 8.0 +fr 2 319 640000.0 640000.0 80.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 3000.0 3000.0 0.0 8.0 +fr 2 320 648000.0 648000.0 80.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2900.0 2900.0 0.0 8.0 +fr 2 321 656000.0 656000.0 80.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2800.0 2800.0 0.0 8.0 +fr 2 322 664000.0 664000.0 80.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2700.0 2700.0 0.0 8.0 +fr 2 323 672000.0 672000.0 80.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2600.0 2600.0 0.0 8.0 +fr 2 324 680000.0 680000.0 80.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2500.0 2500.0 0.0 8.0 +fr 2 325 688000.0 688000.0 80.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2400.0 2400.0 0.0 8.0 +fr 2 326 696000.0 696000.0 80.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2300.0 2300.0 0.0 8.0 +fr 2 327 704000.0 704000.0 80.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2200.0 2200.0 0.0 8.0 +fr 2 328 712000.0 712000.0 80.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15900.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2100.0 2100.0 0.0 8.0 +fr 2 329 720000.0 720000.0 89.99 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 2000.0 2000.0 0.0 8.0 +fr 2 330 729000.0 729000.0 90.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16100.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1900.0 1900.0 0.0 9.0 +fr 2 331 738000.0 738000.0 90.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1800.0 1800.0 0.0 9.0 +fr 2 332 747000.0 747000.0 90.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16300.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1700.0 1700.0 0.0 9.0 +fr 2 333 756000.0 756000.0 90.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16400.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1600.0 1600.0 0.0 9.0 +fr 2 334 765000.0 765000.0 90.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16500.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1500.0 1500.0 0.0 9.0 +fr 2 335 774000.0 774000.0 90.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1400.0 1400.0 0.0 9.0 +fr 2 336 783000.0 783000.0 90.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18000.0 1300.0 1300.0 0.0 9.0 diff --git a/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-05-all.result.tsv b/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-05-all.result.tsv index c4361bb160..c6da892b94 100644 --- a/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-05-all.result.tsv +++ b/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-05-all.result.tsv @@ -1,3 +1,3 @@ -area timeId time OV. COST EXP OP. COST EXP OP. COST STD OP. COST MIN OP. COST MAX MRG. PRICE EXP MRG. PRICE STD MRG. PRICE MIN MRG. PRICE MAX CO2 EMIS. EXP BALANCE EXP BALANCE STD BALANCE MIN BALANCE MAX ROW BAL. VALUES PSP EXP MISC. NDG EXP LOAD EXP LOAD STD LOAD MIN LOAD MAX H. ROR EXP H. ROR STD H. ROR MIN H. ROR MAX WIND EXP WIND STD WIND MIN WIND MAX SOLAR EXP SOLAR STD SOLAR MIN SOLAR MAX NUCLEAR EXP NUCLEAR STD NUCLEAR MIN NUCLEAR MAX LIGNITE EXP LIGNITE STD LIGNITE MIN LIGNITE MAX COAL EXP COAL STD COAL MIN COAL MAX GAS EXP GAS STD GAS MIN GAS MAX OIL EXP OIL STD OIL MIN OIL MAX MIX. FUEL EXP MIX. FUEL STD MIX. FUEL MIN MIX. FUEL MAX MISC. DTG EXP MISC. DTG STD MISC. DTG MIN MISC. DTG MAX H. STOR EXP H. STOR STD H. STOR MIN H. STOR MAX H. PUMP EXP H. PUMP STD H. PUMP MIN H. PUMP MAX H. LEV EXP H. LEV STD H. LEV MIN H. LEV MAX H. INFL EXP H. INFL STD H. INFL MIN H. INFL MAX H. OVFL EXP H. OVFL STD H. OVFL MIN H. OVFL MAX H. VAL EXP H. VAL STD H. VAL MIN H. VAL MAX H. COST EXP H. COST STD H. COST MIN H. COST MAX UNSP. ENRG EXP UNSP. ENRG STD UNSP. ENRG MIN UNSP. ENRG MAX SPIL. ENRG EXP SPIL. ENRG STD SPIL. ENRG MIN SPIL. ENRG MAX LOLD EXP LOLD STD LOLD MIN LOLD MAX LOLP VALUES AVL DTG EXP AVL DTG STD AVL DTG MIN AVL DTG MAX DTG MRG EXP DTG MRG STD DTG MRG MIN DTG MRG MAX MAX MRG EXP MAX MRG STD MAX MRG MIN MAX MRG MAX NP COST EXP NP COST STD NP COST MIN NP COST MAX NODU EXP NODU STD NODU MIN NODU MAX -de 1 2030 46452000.0 46452000.0 0.0 46452000.0 46452000.0 47.14 0.0 47.14 47.14 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1402800.0 0.0 1402800.0 1402800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1402800.0 0.0 1402800.0 1402800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3024000.0 0.0 3024000.0 3024000.0 1621200.0 0.0 1621200.0 1621200.0 1621200.0 0.0 1621200.0 1621200.0 0.0 0.0 0.0 0.0 783.0 0.0 783.0 783.0 -es 1 2030 46452000.0 46452000.0 0.0 46452000.0 46452000.0 47.14 0.0 47.14 47.14 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1402800.0 0.0 1402800.0 1402800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1402800.0 0.0 1402800.0 1402800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3024000.0 0.0 3024000.0 3024000.0 1621200.0 0.0 1621200.0 1621200.0 1621200.0 0.0 1621200.0 1621200.0 0.0 0.0 0.0 0.0 783.0 0.0 783.0 783.0 +area timeId OV. COST EXP OP. COST EXP OP. COST STD OP. COST MIN OP. COST MAX MRG. PRICE EXP MRG. PRICE STD MRG. PRICE MIN MRG. PRICE MAX CO2 EMIS. EXP BALANCE EXP BALANCE STD BALANCE MIN BALANCE MAX ROW BAL. VALUES PSP EXP MISC. NDG EXP LOAD EXP LOAD STD LOAD MIN LOAD MAX H. ROR EXP H. ROR STD H. ROR MIN H. ROR MAX WIND EXP WIND STD WIND MIN WIND MAX SOLAR EXP SOLAR STD SOLAR MIN SOLAR MAX NUCLEAR EXP NUCLEAR STD NUCLEAR MIN NUCLEAR MAX LIGNITE EXP LIGNITE STD LIGNITE MIN LIGNITE MAX COAL EXP COAL STD COAL MIN COAL MAX GAS EXP GAS STD GAS MIN GAS MAX OIL EXP OIL STD OIL MIN OIL MAX MIX. FUEL EXP MIX. FUEL STD MIX. FUEL MIN MIX. FUEL MAX MISC. DTG EXP MISC. DTG STD MISC. DTG MIN MISC. DTG MAX H. STOR EXP H. STOR STD H. STOR MIN H. STOR MAX H. PUMP EXP H. PUMP STD H. PUMP MIN H. PUMP MAX H. LEV EXP H. LEV STD H. LEV MIN H. LEV MAX H. INFL EXP H. INFL STD H. INFL MIN H. INFL MAX H. OVFL EXP H. OVFL STD H. OVFL MIN H. OVFL MAX H. VAL EXP H. VAL STD H. VAL MIN H. VAL MAX H. COST EXP H. COST STD H. COST MIN H. COST MAX UNSP. ENRG EXP UNSP. ENRG STD UNSP. ENRG MIN UNSP. ENRG MAX SPIL. ENRG EXP SPIL. ENRG STD SPIL. ENRG MIN SPIL. ENRG MAX LOLD EXP LOLD STD LOLD MIN LOLD MAX LOLP VALUES AVL DTG EXP AVL DTG STD AVL DTG MIN AVL DTG MAX DTG MRG EXP DTG MRG STD DTG MRG MIN DTG MRG MAX MAX MRG EXP MAX MRG STD MAX MRG MIN MAX MRG MAX NP COST EXP NP COST STD NP COST MIN NP COST MAX NODU EXP NODU STD NODU MIN NODU MAX +de 1 46452000.0 46452000.0 0.0 46452000.0 46452000.0 47.14 0.0 47.14 47.14 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1402800.0 0.0 1402800.0 1402800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1402800.0 0.0 1402800.0 1402800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3024000.0 0.0 3024000.0 3024000.0 1621200.0 0.0 1621200.0 1621200.0 1621200.0 0.0 1621200.0 1621200.0 0.0 0.0 0.0 0.0 783.0 0.0 783.0 783.0 +es 1 46452000.0 46452000.0 0.0 46452000.0 46452000.0 47.14 0.0 47.14 47.14 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1402800.0 0.0 1402800.0 1402800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1402800.0 0.0 1402800.0 1402800.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3024000.0 0.0 3024000.0 3024000.0 1621200.0 0.0 1621200.0 1621200.0 1621200.0 0.0 1621200.0 1621200.0 0.0 0.0 0.0 0.0 783.0 0.0 783.0 783.0 diff --git a/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-05.result.tsv b/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-05.result.tsv index 61ff1bf485..5a23499f7f 100644 --- a/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-05.result.tsv +++ b/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-05.result.tsv @@ -1,5 +1,5 @@ -area mcYear timeId time OV. COST OP. COST MRG. PRICE CO2 EMIS. BALANCE ROW BAL. PSP MISC. NDG LOAD H. ROR WIND SOLAR NUCLEAR LIGNITE COAL GAS OIL MIX. FUEL MISC. DTG H. STOR H. PUMP H. LEV H. INFL H. OVFL H. VAL H. COST UNSP. ENRG SPIL. ENRG LOLD LOLP AVL DTG DTG MRG MAX MRG NP COST NODU -de 1 1 2030 92904000.0 92904000.0 47.14 0.0 0.0 0.0 0.0 0.0 2805600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2805600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6048000.0 3242400.0 3242400.0 0.0 1566.0 -es 1 1 2030 92904000.0 92904000.0 47.14 0.0 0.0 0.0 0.0 0.0 2805600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2805600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6048000.0 3242400.0 3242400.0 0.0 1566.0 -de 2 1 2030 92904000.0 92904000.0 47.14 0.0 0.0 0.0 0.0 0.0 2805600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2805600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6048000.0 3242400.0 3242400.0 0.0 1566.0 -es 2 1 2030 92904000.0 92904000.0 47.14 0.0 0.0 0.0 0.0 0.0 2805600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2805600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6048000.0 3242400.0 3242400.0 0.0 1566.0 +area mcYear timeId OV. COST OP. COST MRG. PRICE CO2 EMIS. BALANCE ROW BAL. PSP MISC. NDG LOAD H. ROR WIND SOLAR NUCLEAR LIGNITE COAL GAS OIL MIX. FUEL MISC. DTG H. STOR H. PUMP H. LEV H. INFL H. OVFL H. VAL H. COST UNSP. ENRG SPIL. ENRG LOLD LOLP AVL DTG DTG MRG MAX MRG NP COST NODU +de 1 1 92904000.0 92904000.0 47.14 0.0 0.0 0.0 0.0 0.0 2805600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2805600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6048000.0 3242400.0 3242400.0 0.0 1566.0 +es 1 1 92904000.0 92904000.0 47.14 0.0 0.0 0.0 0.0 0.0 2805600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2805600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6048000.0 3242400.0 3242400.0 0.0 1566.0 +de 2 1 92904000.0 92904000.0 47.14 0.0 0.0 0.0 0.0 0.0 2805600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2805600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6048000.0 3242400.0 3242400.0 0.0 1566.0 +es 2 1 92904000.0 92904000.0 47.14 0.0 0.0 0.0 0.0 0.0 2805600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2805600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6048000.0 3242400.0 3242400.0 0.0 1566.0 diff --git a/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-06-all.result.tsv b/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-06-all.result.tsv index 67ce2dcb67..23f7647b5c 100644 --- a/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-06-all.result.tsv +++ b/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-06-all.result.tsv @@ -1,15 +1,15 @@ -area timeId time OP. COST MIN OP. COST MAX MRG. PRICE MIN MRG. PRICE MAX BALANCE MIN BALANCE MAX LOAD MIN LOAD MAX H. ROR MIN H. ROR MAX WIND MIN WIND MAX SOLAR MIN SOLAR MAX NUCLEAR MIN NUCLEAR MAX LIGNITE MIN LIGNITE MAX COAL MIN COAL MAX GAS MIN GAS MAX OIL MIN OIL MAX MIX. FUEL MIN MIX. FUEL MAX MISC. DTG MIN MISC. DTG MAX H. STOR MIN H. STOR MAX H. PUMP MIN H. PUMP MAX H. LEV MIN H. LEV MAX H. INFL MIN H. INFL MAX H. OVFL MIN H. OVFL MAX H. VAL MIN H. VAL MAX H. COST MIN H. COST MAX UNSP. ENRG MIN UNSP. ENRG MAX SPIL. ENRG MIN SPIL. ENRG MAX LOLD MIN LOLD MAX AVL DTG MIN AVL DTG MAX DTG MRG MIN DTG MRG MAX MAX MRG MIN MAX MRG MAX NP COST MIN NP COST MAX NODU MIN NODU MAX -de 1 2030 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de 2 2030 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de 3 2030 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de 4 2030 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de 5 2030 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de 6 2030 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de 7 2030 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -es 1 2030 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -es 2 2030 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -es 3 2030 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -es 4 2030 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -es 5 2030 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -es 6 2030 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -es 7 2030 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +area timeId OP. COST MIN OP. COST MAX MRG. PRICE MIN MRG. PRICE MAX BALANCE MIN BALANCE MAX LOAD MIN LOAD MAX H. ROR MIN H. ROR MAX WIND MIN WIND MAX SOLAR MIN SOLAR MAX NUCLEAR MIN NUCLEAR MAX LIGNITE MIN LIGNITE MAX COAL MIN COAL MAX GAS MIN GAS MAX OIL MIN OIL MAX MIX. FUEL MIN MIX. FUEL MAX MISC. DTG MIN MISC. DTG MAX H. STOR MIN H. STOR MAX H. PUMP MIN H. PUMP MAX H. LEV MIN H. LEV MAX H. INFL MIN H. INFL MAX H. OVFL MIN H. OVFL MAX H. VAL MIN H. VAL MAX H. COST MIN H. COST MAX UNSP. ENRG MIN UNSP. ENRG MAX SPIL. ENRG MIN SPIL. ENRG MAX LOLD MIN LOLD MAX AVL DTG MIN AVL DTG MAX DTG MRG MIN DTG MRG MAX MAX MRG MIN MAX MRG MAX NP COST MIN NP COST MAX NODU MIN NODU MAX +de 1 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de 2 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de 3 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de 4 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de 5 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de 6 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de 7 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +es 1 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +es 2 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +es 3 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +es 4 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +es 5 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +es 6 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +es 7 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 diff --git a/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-06.result.tsv b/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-06.result.tsv index 8c166f1fe8..c05907efb3 100644 --- a/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-06.result.tsv +++ b/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-06.result.tsv @@ -1,2689 +1,2689 @@ -area mcYear timeId time NODU -de 1 1 2030 0.0 -de 1 2 2030 1.0 -de 1 3 2030 1.0 -de 1 4 2030 1.0 -de 1 5 2030 1.0 -de 1 6 2030 1.0 -de 1 7 2030 1.0 -de 1 8 2030 1.0 -de 1 9 2030 1.0 -de 1 10 2030 1.0 -de 1 11 2030 1.0 -de 1 12 2030 1.0 -de 1 13 2030 1.0 -de 1 14 2030 1.0 -de 1 15 2030 1.0 -de 1 16 2030 1.0 -de 1 17 2030 1.0 -de 1 18 2030 1.0 -de 1 19 2030 1.0 -de 1 20 2030 1.0 -de 1 21 2030 1.0 -de 1 22 2030 2.0 -de 1 23 2030 2.0 -de 1 24 2030 2.0 -de 1 25 2030 2.0 -de 1 26 2030 2.0 -de 1 27 2030 2.0 -de 1 28 2030 2.0 -de 1 29 2030 2.0 -de 1 30 2030 2.0 -de 1 31 2030 2.0 -de 1 32 2030 2.0 -de 1 33 2030 2.0 -de 1 34 2030 2.0 -de 1 35 2030 2.0 -de 1 36 2030 2.0 -de 1 37 2030 2.0 -de 1 38 2030 2.0 -de 1 39 2030 2.0 -de 1 40 2030 2.0 -de 1 41 2030 2.0 -de 1 42 2030 3.0 -de 1 43 2030 3.0 -de 1 44 2030 3.0 -de 1 45 2030 3.0 -de 1 46 2030 3.0 -de 1 47 2030 3.0 -de 1 48 2030 3.0 -de 1 49 2030 3.0 -de 1 50 2030 3.0 -de 1 51 2030 3.0 -de 1 52 2030 3.0 -de 1 53 2030 3.0 -de 1 54 2030 3.0 -de 1 55 2030 3.0 -de 1 56 2030 3.0 -de 1 57 2030 3.0 -de 1 58 2030 3.0 -de 1 59 2030 3.0 -de 1 60 2030 3.0 -de 1 61 2030 3.0 -de 1 62 2030 4.0 -de 1 63 2030 4.0 -de 1 64 2030 4.0 -de 1 65 2030 4.0 -de 1 66 2030 4.0 -de 1 67 2030 4.0 -de 1 68 2030 4.0 -de 1 69 2030 4.0 -de 1 70 2030 4.0 -de 1 71 2030 4.0 -de 1 72 2030 4.0 -de 1 73 2030 4.0 -de 1 74 2030 4.0 -de 1 75 2030 4.0 -de 1 76 2030 4.0 -de 1 77 2030 4.0 -de 1 78 2030 4.0 -de 1 79 2030 4.0 -de 1 80 2030 4.0 -de 1 81 2030 4.0 -de 1 82 2030 5.0 -de 1 83 2030 5.0 -de 1 84 2030 5.0 -de 1 85 2030 5.0 -de 1 86 2030 5.0 -de 1 87 2030 5.0 -de 1 88 2030 5.0 -de 1 89 2030 5.0 -de 1 90 2030 5.0 -de 1 91 2030 5.0 -de 1 92 2030 5.0 -de 1 93 2030 5.0 -de 1 94 2030 5.0 -de 1 95 2030 5.0 -de 1 96 2030 5.0 -de 1 97 2030 5.0 -de 1 98 2030 5.0 -de 1 99 2030 5.0 -de 1 100 2030 5.0 -de 1 101 2030 5.0 -de 1 102 2030 6.0 -de 1 103 2030 6.0 -de 1 104 2030 6.0 -de 1 105 2030 6.0 -de 1 106 2030 6.0 -de 1 107 2030 6.0 -de 1 108 2030 6.0 -de 1 109 2030 6.0 -de 1 110 2030 6.0 -de 1 111 2030 6.0 -de 1 112 2030 6.0 -de 1 113 2030 6.0 -de 1 114 2030 6.0 -de 1 115 2030 6.0 -de 1 116 2030 6.0 -de 1 117 2030 6.0 -de 1 118 2030 6.0 -de 1 119 2030 6.0 -de 1 120 2030 6.0 -de 1 121 2030 6.0 -de 1 122 2030 7.0 -de 1 123 2030 7.0 -de 1 124 2030 7.0 -de 1 125 2030 7.0 -de 1 126 2030 7.0 -de 1 127 2030 7.0 -de 1 128 2030 7.0 -de 1 129 2030 7.0 -de 1 130 2030 7.0 -de 1 131 2030 7.0 -de 1 132 2030 7.0 -de 1 133 2030 7.0 -de 1 134 2030 7.0 -de 1 135 2030 7.0 -de 1 136 2030 7.0 -de 1 137 2030 7.0 -de 1 138 2030 7.0 -de 1 139 2030 7.0 -de 1 140 2030 7.0 -de 1 141 2030 7.0 -de 1 142 2030 8.0 -de 1 143 2030 8.0 -de 1 144 2030 8.0 -de 1 145 2030 8.0 -de 1 146 2030 8.0 -de 1 147 2030 8.0 -de 1 148 2030 8.0 -de 1 149 2030 8.0 -de 1 150 2030 8.0 -de 1 151 2030 8.0 -de 1 152 2030 8.0 -de 1 153 2030 8.0 -de 1 154 2030 8.0 -de 1 155 2030 8.0 -de 1 156 2030 8.0 -de 1 157 2030 8.0 -de 1 158 2030 8.0 -de 1 159 2030 8.0 -de 1 160 2030 8.0 -de 1 161 2030 8.0 -de 1 162 2030 9.0 -de 1 163 2030 9.0 -de 1 164 2030 9.0 -de 1 165 2030 9.0 -de 1 166 2030 9.0 -de 1 167 2030 9.0 -de 1 168 2030 9.0 -de 1 169 2030 0.0 -de 1 170 2030 1.0 -de 1 171 2030 1.0 -de 1 172 2030 1.0 -de 1 173 2030 1.0 -de 1 174 2030 1.0 -de 1 175 2030 1.0 -de 1 176 2030 1.0 -de 1 177 2030 1.0 -de 1 178 2030 1.0 -de 1 179 2030 1.0 -de 1 180 2030 1.0 -de 1 181 2030 1.0 -de 1 182 2030 1.0 -de 1 183 2030 1.0 -de 1 184 2030 1.0 -de 1 185 2030 1.0 -de 1 186 2030 1.0 -de 1 187 2030 1.0 -de 1 188 2030 1.0 -de 1 189 2030 1.0 -de 1 190 2030 2.0 -de 1 191 2030 2.0 -de 1 192 2030 2.0 -de 1 193 2030 2.0 -de 1 194 2030 2.0 -de 1 195 2030 2.0 -de 1 196 2030 2.0 -de 1 197 2030 2.0 -de 1 198 2030 2.0 -de 1 199 2030 2.0 -de 1 200 2030 2.0 -de 1 201 2030 2.0 -de 1 202 2030 2.0 -de 1 203 2030 2.0 -de 1 204 2030 2.0 -de 1 205 2030 2.0 -de 1 206 2030 2.0 -de 1 207 2030 2.0 -de 1 208 2030 2.0 -de 1 209 2030 2.0 -de 1 210 2030 3.0 -de 1 211 2030 3.0 -de 1 212 2030 3.0 -de 1 213 2030 3.0 -de 1 214 2030 3.0 -de 1 215 2030 3.0 -de 1 216 2030 3.0 -de 1 217 2030 3.0 -de 1 218 2030 3.0 -de 1 219 2030 3.0 -de 1 220 2030 3.0 -de 1 221 2030 3.0 -de 1 222 2030 3.0 -de 1 223 2030 3.0 -de 1 224 2030 3.0 -de 1 225 2030 3.0 -de 1 226 2030 3.0 -de 1 227 2030 3.0 -de 1 228 2030 3.0 -de 1 229 2030 3.0 -de 1 230 2030 4.0 -de 1 231 2030 4.0 -de 1 232 2030 4.0 -de 1 233 2030 4.0 -de 1 234 2030 4.0 -de 1 235 2030 4.0 -de 1 236 2030 4.0 -de 1 237 2030 4.0 -de 1 238 2030 4.0 -de 1 239 2030 4.0 -de 1 240 2030 4.0 -de 1 241 2030 4.0 -de 1 242 2030 4.0 -de 1 243 2030 4.0 -de 1 244 2030 4.0 -de 1 245 2030 4.0 -de 1 246 2030 4.0 -de 1 247 2030 4.0 -de 1 248 2030 4.0 -de 1 249 2030 4.0 -de 1 250 2030 5.0 -de 1 251 2030 5.0 -de 1 252 2030 5.0 -de 1 253 2030 5.0 -de 1 254 2030 5.0 -de 1 255 2030 5.0 -de 1 256 2030 5.0 -de 1 257 2030 5.0 -de 1 258 2030 5.0 -de 1 259 2030 5.0 -de 1 260 2030 5.0 -de 1 261 2030 5.0 -de 1 262 2030 5.0 -de 1 263 2030 5.0 -de 1 264 2030 5.0 -de 1 265 2030 5.0 -de 1 266 2030 5.0 -de 1 267 2030 5.0 -de 1 268 2030 5.0 -de 1 269 2030 5.0 -de 1 270 2030 6.0 -de 1 271 2030 6.0 -de 1 272 2030 6.0 -de 1 273 2030 6.0 -de 1 274 2030 6.0 -de 1 275 2030 6.0 -de 1 276 2030 6.0 -de 1 277 2030 6.0 -de 1 278 2030 6.0 -de 1 279 2030 6.0 -de 1 280 2030 6.0 -de 1 281 2030 6.0 -de 1 282 2030 6.0 -de 1 283 2030 6.0 -de 1 284 2030 6.0 -de 1 285 2030 6.0 -de 1 286 2030 6.0 -de 1 287 2030 6.0 -de 1 288 2030 6.0 -de 1 289 2030 6.0 -de 1 290 2030 7.0 -de 1 291 2030 7.0 -de 1 292 2030 7.0 -de 1 293 2030 7.0 -de 1 294 2030 7.0 -de 1 295 2030 7.0 -de 1 296 2030 7.0 -de 1 297 2030 7.0 -de 1 298 2030 7.0 -de 1 299 2030 7.0 -de 1 300 2030 7.0 -de 1 301 2030 7.0 -de 1 302 2030 7.0 -de 1 303 2030 7.0 -de 1 304 2030 7.0 -de 1 305 2030 7.0 -de 1 306 2030 7.0 -de 1 307 2030 7.0 -de 1 308 2030 7.0 -de 1 309 2030 7.0 -de 1 310 2030 8.0 -de 1 311 2030 8.0 -de 1 312 2030 8.0 -de 1 313 2030 8.0 -de 1 314 2030 8.0 -de 1 315 2030 8.0 -de 1 316 2030 8.0 -de 1 317 2030 8.0 -de 1 318 2030 8.0 -de 1 319 2030 8.0 -de 1 320 2030 8.0 -de 1 321 2030 8.0 -de 1 322 2030 8.0 -de 1 323 2030 8.0 -de 1 324 2030 8.0 -de 1 325 2030 8.0 -de 1 326 2030 8.0 -de 1 327 2030 8.0 -de 1 328 2030 8.0 -de 1 329 2030 8.0 -de 1 330 2030 9.0 -de 1 331 2030 9.0 -de 1 332 2030 9.0 -de 1 333 2030 9.0 -de 1 334 2030 9.0 -de 1 335 2030 9.0 -de 1 336 2030 9.0 -es 1 1 2030 0.0 -es 1 2 2030 1.0 -es 1 3 2030 1.0 -es 1 4 2030 1.0 -es 1 5 2030 1.0 -es 1 6 2030 1.0 -es 1 7 2030 1.0 -es 1 8 2030 1.0 -es 1 9 2030 1.0 -es 1 10 2030 1.0 -es 1 11 2030 1.0 -es 1 12 2030 1.0 -es 1 13 2030 1.0 -es 1 14 2030 1.0 -es 1 15 2030 1.0 -es 1 16 2030 1.0 -es 1 17 2030 1.0 -es 1 18 2030 1.0 -es 1 19 2030 1.0 -es 1 20 2030 1.0 -es 1 21 2030 1.0 -es 1 22 2030 2.0 -es 1 23 2030 2.0 -es 1 24 2030 2.0 -es 1 25 2030 2.0 -es 1 26 2030 2.0 -es 1 27 2030 2.0 -es 1 28 2030 2.0 -es 1 29 2030 2.0 -es 1 30 2030 2.0 -es 1 31 2030 2.0 -es 1 32 2030 2.0 -es 1 33 2030 2.0 -es 1 34 2030 2.0 -es 1 35 2030 2.0 -es 1 36 2030 2.0 -es 1 37 2030 2.0 -es 1 38 2030 2.0 -es 1 39 2030 2.0 -es 1 40 2030 2.0 -es 1 41 2030 2.0 -es 1 42 2030 3.0 -es 1 43 2030 3.0 -es 1 44 2030 3.0 -es 1 45 2030 3.0 -es 1 46 2030 3.0 -es 1 47 2030 3.0 -es 1 48 2030 3.0 -es 1 49 2030 3.0 -es 1 50 2030 3.0 -es 1 51 2030 3.0 -es 1 52 2030 3.0 -es 1 53 2030 3.0 -es 1 54 2030 3.0 -es 1 55 2030 3.0 -es 1 56 2030 3.0 -es 1 57 2030 3.0 -es 1 58 2030 3.0 -es 1 59 2030 3.0 -es 1 60 2030 3.0 -es 1 61 2030 3.0 -es 1 62 2030 4.0 -es 1 63 2030 4.0 -es 1 64 2030 4.0 -es 1 65 2030 4.0 -es 1 66 2030 4.0 -es 1 67 2030 4.0 -es 1 68 2030 4.0 -es 1 69 2030 4.0 -es 1 70 2030 4.0 -es 1 71 2030 4.0 -es 1 72 2030 4.0 -es 1 73 2030 4.0 -es 1 74 2030 4.0 -es 1 75 2030 4.0 -es 1 76 2030 4.0 -es 1 77 2030 4.0 -es 1 78 2030 4.0 -es 1 79 2030 4.0 -es 1 80 2030 4.0 -es 1 81 2030 4.0 -es 1 82 2030 5.0 -es 1 83 2030 5.0 -es 1 84 2030 5.0 -es 1 85 2030 5.0 -es 1 86 2030 5.0 -es 1 87 2030 5.0 -es 1 88 2030 5.0 -es 1 89 2030 5.0 -es 1 90 2030 5.0 -es 1 91 2030 5.0 -es 1 92 2030 5.0 -es 1 93 2030 5.0 -es 1 94 2030 5.0 -es 1 95 2030 5.0 -es 1 96 2030 5.0 -es 1 97 2030 5.0 -es 1 98 2030 5.0 -es 1 99 2030 5.0 -es 1 100 2030 5.0 -es 1 101 2030 5.0 -es 1 102 2030 6.0 -es 1 103 2030 6.0 -es 1 104 2030 6.0 -es 1 105 2030 6.0 -es 1 106 2030 6.0 -es 1 107 2030 6.0 -es 1 108 2030 6.0 -es 1 109 2030 6.0 -es 1 110 2030 6.0 -es 1 111 2030 6.0 -es 1 112 2030 6.0 -es 1 113 2030 6.0 -es 1 114 2030 6.0 -es 1 115 2030 6.0 -es 1 116 2030 6.0 -es 1 117 2030 6.0 -es 1 118 2030 6.0 -es 1 119 2030 6.0 -es 1 120 2030 6.0 -es 1 121 2030 6.0 -es 1 122 2030 7.0 -es 1 123 2030 7.0 -es 1 124 2030 7.0 -es 1 125 2030 7.0 -es 1 126 2030 7.0 -es 1 127 2030 7.0 -es 1 128 2030 7.0 -es 1 129 2030 7.0 -es 1 130 2030 7.0 -es 1 131 2030 7.0 -es 1 132 2030 7.0 -es 1 133 2030 7.0 -es 1 134 2030 7.0 -es 1 135 2030 7.0 -es 1 136 2030 7.0 -es 1 137 2030 7.0 -es 1 138 2030 7.0 -es 1 139 2030 7.0 -es 1 140 2030 7.0 -es 1 141 2030 7.0 -es 1 142 2030 8.0 -es 1 143 2030 8.0 -es 1 144 2030 8.0 -es 1 145 2030 8.0 -es 1 146 2030 8.0 -es 1 147 2030 8.0 -es 1 148 2030 8.0 -es 1 149 2030 8.0 -es 1 150 2030 8.0 -es 1 151 2030 8.0 -es 1 152 2030 8.0 -es 1 153 2030 8.0 -es 1 154 2030 8.0 -es 1 155 2030 8.0 -es 1 156 2030 8.0 -es 1 157 2030 8.0 -es 1 158 2030 8.0 -es 1 159 2030 8.0 -es 1 160 2030 8.0 -es 1 161 2030 8.0 -es 1 162 2030 9.0 -es 1 163 2030 9.0 -es 1 164 2030 9.0 -es 1 165 2030 9.0 -es 1 166 2030 9.0 -es 1 167 2030 9.0 -es 1 168 2030 9.0 -es 1 169 2030 0.0 -es 1 170 2030 1.0 -es 1 171 2030 1.0 -es 1 172 2030 1.0 -es 1 173 2030 1.0 -es 1 174 2030 1.0 -es 1 175 2030 1.0 -es 1 176 2030 1.0 -es 1 177 2030 1.0 -es 1 178 2030 1.0 -es 1 179 2030 1.0 -es 1 180 2030 1.0 -es 1 181 2030 1.0 -es 1 182 2030 1.0 -es 1 183 2030 1.0 -es 1 184 2030 1.0 -es 1 185 2030 1.0 -es 1 186 2030 1.0 -es 1 187 2030 1.0 -es 1 188 2030 1.0 -es 1 189 2030 1.0 -es 1 190 2030 2.0 -es 1 191 2030 2.0 -es 1 192 2030 2.0 -es 1 193 2030 2.0 -es 1 194 2030 2.0 -es 1 195 2030 2.0 -es 1 196 2030 2.0 -es 1 197 2030 2.0 -es 1 198 2030 2.0 -es 1 199 2030 2.0 -es 1 200 2030 2.0 -es 1 201 2030 2.0 -es 1 202 2030 2.0 -es 1 203 2030 2.0 -es 1 204 2030 2.0 -es 1 205 2030 2.0 -es 1 206 2030 2.0 -es 1 207 2030 2.0 -es 1 208 2030 2.0 -es 1 209 2030 2.0 -es 1 210 2030 3.0 -es 1 211 2030 3.0 -es 1 212 2030 3.0 -es 1 213 2030 3.0 -es 1 214 2030 3.0 -es 1 215 2030 3.0 -es 1 216 2030 3.0 -es 1 217 2030 3.0 -es 1 218 2030 3.0 -es 1 219 2030 3.0 -es 1 220 2030 3.0 -es 1 221 2030 3.0 -es 1 222 2030 3.0 -es 1 223 2030 3.0 -es 1 224 2030 3.0 -es 1 225 2030 3.0 -es 1 226 2030 3.0 -es 1 227 2030 3.0 -es 1 228 2030 3.0 -es 1 229 2030 3.0 -es 1 230 2030 4.0 -es 1 231 2030 4.0 -es 1 232 2030 4.0 -es 1 233 2030 4.0 -es 1 234 2030 4.0 -es 1 235 2030 4.0 -es 1 236 2030 4.0 -es 1 237 2030 4.0 -es 1 238 2030 4.0 -es 1 239 2030 4.0 -es 1 240 2030 4.0 -es 1 241 2030 4.0 -es 1 242 2030 4.0 -es 1 243 2030 4.0 -es 1 244 2030 4.0 -es 1 245 2030 4.0 -es 1 246 2030 4.0 -es 1 247 2030 4.0 -es 1 248 2030 4.0 -es 1 249 2030 4.0 -es 1 250 2030 5.0 -es 1 251 2030 5.0 -es 1 252 2030 5.0 -es 1 253 2030 5.0 -es 1 254 2030 5.0 -es 1 255 2030 5.0 -es 1 256 2030 5.0 -es 1 257 2030 5.0 -es 1 258 2030 5.0 -es 1 259 2030 5.0 -es 1 260 2030 5.0 -es 1 261 2030 5.0 -es 1 262 2030 5.0 -es 1 263 2030 5.0 -es 1 264 2030 5.0 -es 1 265 2030 5.0 -es 1 266 2030 5.0 -es 1 267 2030 5.0 -es 1 268 2030 5.0 -es 1 269 2030 5.0 -es 1 270 2030 6.0 -es 1 271 2030 6.0 -es 1 272 2030 6.0 -es 1 273 2030 6.0 -es 1 274 2030 6.0 -es 1 275 2030 6.0 -es 1 276 2030 6.0 -es 1 277 2030 6.0 -es 1 278 2030 6.0 -es 1 279 2030 6.0 -es 1 280 2030 6.0 -es 1 281 2030 6.0 -es 1 282 2030 6.0 -es 1 283 2030 6.0 -es 1 284 2030 6.0 -es 1 285 2030 6.0 -es 1 286 2030 6.0 -es 1 287 2030 6.0 -es 1 288 2030 6.0 -es 1 289 2030 6.0 -es 1 290 2030 7.0 -es 1 291 2030 7.0 -es 1 292 2030 7.0 -es 1 293 2030 7.0 -es 1 294 2030 7.0 -es 1 295 2030 7.0 -es 1 296 2030 7.0 -es 1 297 2030 7.0 -es 1 298 2030 7.0 -es 1 299 2030 7.0 -es 1 300 2030 7.0 -es 1 301 2030 7.0 -es 1 302 2030 7.0 -es 1 303 2030 7.0 -es 1 304 2030 7.0 -es 1 305 2030 7.0 -es 1 306 2030 7.0 -es 1 307 2030 7.0 -es 1 308 2030 7.0 -es 1 309 2030 7.0 -es 1 310 2030 8.0 -es 1 311 2030 8.0 -es 1 312 2030 8.0 -es 1 313 2030 8.0 -es 1 314 2030 8.0 -es 1 315 2030 8.0 -es 1 316 2030 8.0 -es 1 317 2030 8.0 -es 1 318 2030 8.0 -es 1 319 2030 8.0 -es 1 320 2030 8.0 -es 1 321 2030 8.0 -es 1 322 2030 8.0 -es 1 323 2030 8.0 -es 1 324 2030 8.0 -es 1 325 2030 8.0 -es 1 326 2030 8.0 -es 1 327 2030 8.0 -es 1 328 2030 8.0 -es 1 329 2030 8.0 -es 1 330 2030 9.0 -es 1 331 2030 9.0 -es 1 332 2030 9.0 -es 1 333 2030 9.0 -es 1 334 2030 9.0 -es 1 335 2030 9.0 -es 1 336 2030 9.0 -fr 1 1 2030 0.0 -fr 1 2 2030 1.0 -fr 1 3 2030 1.0 -fr 1 4 2030 1.0 -fr 1 5 2030 1.0 -fr 1 6 2030 1.0 -fr 1 7 2030 1.0 -fr 1 8 2030 1.0 -fr 1 9 2030 1.0 -fr 1 10 2030 1.0 -fr 1 11 2030 1.0 -fr 1 12 2030 1.0 -fr 1 13 2030 1.0 -fr 1 14 2030 1.0 -fr 1 15 2030 1.0 -fr 1 16 2030 1.0 -fr 1 17 2030 1.0 -fr 1 18 2030 1.0 -fr 1 19 2030 1.0 -fr 1 20 2030 1.0 -fr 1 21 2030 1.0 -fr 1 22 2030 2.0 -fr 1 23 2030 2.0 -fr 1 24 2030 2.0 -fr 1 25 2030 2.0 -fr 1 26 2030 2.0 -fr 1 27 2030 2.0 -fr 1 28 2030 2.0 -fr 1 29 2030 2.0 -fr 1 30 2030 2.0 -fr 1 31 2030 2.0 -fr 1 32 2030 2.0 -fr 1 33 2030 2.0 -fr 1 34 2030 2.0 -fr 1 35 2030 2.0 -fr 1 36 2030 2.0 -fr 1 37 2030 2.0 -fr 1 38 2030 2.0 -fr 1 39 2030 2.0 -fr 1 40 2030 2.0 -fr 1 41 2030 2.0 -fr 1 42 2030 3.0 -fr 1 43 2030 3.0 -fr 1 44 2030 3.0 -fr 1 45 2030 3.0 -fr 1 46 2030 3.0 -fr 1 47 2030 3.0 -fr 1 48 2030 3.0 -fr 1 49 2030 3.0 -fr 1 50 2030 3.0 -fr 1 51 2030 3.0 -fr 1 52 2030 3.0 -fr 1 53 2030 3.0 -fr 1 54 2030 3.0 -fr 1 55 2030 3.0 -fr 1 56 2030 3.0 -fr 1 57 2030 3.0 -fr 1 58 2030 3.0 -fr 1 59 2030 3.0 -fr 1 60 2030 3.0 -fr 1 61 2030 3.0 -fr 1 62 2030 4.0 -fr 1 63 2030 4.0 -fr 1 64 2030 4.0 -fr 1 65 2030 4.0 -fr 1 66 2030 4.0 -fr 1 67 2030 4.0 -fr 1 68 2030 4.0 -fr 1 69 2030 4.0 -fr 1 70 2030 4.0 -fr 1 71 2030 4.0 -fr 1 72 2030 4.0 -fr 1 73 2030 4.0 -fr 1 74 2030 4.0 -fr 1 75 2030 4.0 -fr 1 76 2030 4.0 -fr 1 77 2030 4.0 -fr 1 78 2030 4.0 -fr 1 79 2030 4.0 -fr 1 80 2030 4.0 -fr 1 81 2030 4.0 -fr 1 82 2030 5.0 -fr 1 83 2030 5.0 -fr 1 84 2030 5.0 -fr 1 85 2030 5.0 -fr 1 86 2030 5.0 -fr 1 87 2030 5.0 -fr 1 88 2030 5.0 -fr 1 89 2030 5.0 -fr 1 90 2030 5.0 -fr 1 91 2030 5.0 -fr 1 92 2030 5.0 -fr 1 93 2030 5.0 -fr 1 94 2030 5.0 -fr 1 95 2030 5.0 -fr 1 96 2030 5.0 -fr 1 97 2030 5.0 -fr 1 98 2030 5.0 -fr 1 99 2030 5.0 -fr 1 100 2030 5.0 -fr 1 101 2030 5.0 -fr 1 102 2030 6.0 -fr 1 103 2030 6.0 -fr 1 104 2030 6.0 -fr 1 105 2030 6.0 -fr 1 106 2030 6.0 -fr 1 107 2030 6.0 -fr 1 108 2030 6.0 -fr 1 109 2030 6.0 -fr 1 110 2030 6.0 -fr 1 111 2030 6.0 -fr 1 112 2030 6.0 -fr 1 113 2030 6.0 -fr 1 114 2030 6.0 -fr 1 115 2030 6.0 -fr 1 116 2030 6.0 -fr 1 117 2030 6.0 -fr 1 118 2030 6.0 -fr 1 119 2030 6.0 -fr 1 120 2030 6.0 -fr 1 121 2030 6.0 -fr 1 122 2030 7.0 -fr 1 123 2030 7.0 -fr 1 124 2030 7.0 -fr 1 125 2030 7.0 -fr 1 126 2030 7.0 -fr 1 127 2030 7.0 -fr 1 128 2030 7.0 -fr 1 129 2030 7.0 -fr 1 130 2030 7.0 -fr 1 131 2030 7.0 -fr 1 132 2030 7.0 -fr 1 133 2030 7.0 -fr 1 134 2030 7.0 -fr 1 135 2030 7.0 -fr 1 136 2030 7.0 -fr 1 137 2030 7.0 -fr 1 138 2030 7.0 -fr 1 139 2030 7.0 -fr 1 140 2030 7.0 -fr 1 141 2030 7.0 -fr 1 142 2030 8.0 -fr 1 143 2030 8.0 -fr 1 144 2030 8.0 -fr 1 145 2030 8.0 -fr 1 146 2030 8.0 -fr 1 147 2030 8.0 -fr 1 148 2030 8.0 -fr 1 149 2030 8.0 -fr 1 150 2030 8.0 -fr 1 151 2030 8.0 -fr 1 152 2030 8.0 -fr 1 153 2030 8.0 -fr 1 154 2030 8.0 -fr 1 155 2030 8.0 -fr 1 156 2030 8.0 -fr 1 157 2030 8.0 -fr 1 158 2030 8.0 -fr 1 159 2030 8.0 -fr 1 160 2030 8.0 -fr 1 161 2030 8.0 -fr 1 162 2030 9.0 -fr 1 163 2030 9.0 -fr 1 164 2030 9.0 -fr 1 165 2030 9.0 -fr 1 166 2030 9.0 -fr 1 167 2030 9.0 -fr 1 168 2030 9.0 -fr 1 169 2030 0.0 -fr 1 170 2030 1.0 -fr 1 171 2030 1.0 -fr 1 172 2030 1.0 -fr 1 173 2030 1.0 -fr 1 174 2030 1.0 -fr 1 175 2030 1.0 -fr 1 176 2030 1.0 -fr 1 177 2030 1.0 -fr 1 178 2030 1.0 -fr 1 179 2030 1.0 -fr 1 180 2030 1.0 -fr 1 181 2030 1.0 -fr 1 182 2030 1.0 -fr 1 183 2030 1.0 -fr 1 184 2030 1.0 -fr 1 185 2030 1.0 -fr 1 186 2030 1.0 -fr 1 187 2030 1.0 -fr 1 188 2030 1.0 -fr 1 189 2030 1.0 -fr 1 190 2030 2.0 -fr 1 191 2030 2.0 -fr 1 192 2030 2.0 -fr 1 193 2030 2.0 -fr 1 194 2030 2.0 -fr 1 195 2030 2.0 -fr 1 196 2030 2.0 -fr 1 197 2030 2.0 -fr 1 198 2030 2.0 -fr 1 199 2030 2.0 -fr 1 200 2030 2.0 -fr 1 201 2030 2.0 -fr 1 202 2030 2.0 -fr 1 203 2030 2.0 -fr 1 204 2030 2.0 -fr 1 205 2030 2.0 -fr 1 206 2030 2.0 -fr 1 207 2030 2.0 -fr 1 208 2030 2.0 -fr 1 209 2030 2.0 -fr 1 210 2030 3.0 -fr 1 211 2030 3.0 -fr 1 212 2030 3.0 -fr 1 213 2030 3.0 -fr 1 214 2030 3.0 -fr 1 215 2030 3.0 -fr 1 216 2030 3.0 -fr 1 217 2030 3.0 -fr 1 218 2030 3.0 -fr 1 219 2030 3.0 -fr 1 220 2030 3.0 -fr 1 221 2030 3.0 -fr 1 222 2030 3.0 -fr 1 223 2030 3.0 -fr 1 224 2030 3.0 -fr 1 225 2030 3.0 -fr 1 226 2030 3.0 -fr 1 227 2030 3.0 -fr 1 228 2030 3.0 -fr 1 229 2030 3.0 -fr 1 230 2030 4.0 -fr 1 231 2030 4.0 -fr 1 232 2030 4.0 -fr 1 233 2030 4.0 -fr 1 234 2030 4.0 -fr 1 235 2030 4.0 -fr 1 236 2030 4.0 -fr 1 237 2030 4.0 -fr 1 238 2030 4.0 -fr 1 239 2030 4.0 -fr 1 240 2030 4.0 -fr 1 241 2030 4.0 -fr 1 242 2030 4.0 -fr 1 243 2030 4.0 -fr 1 244 2030 4.0 -fr 1 245 2030 4.0 -fr 1 246 2030 4.0 -fr 1 247 2030 4.0 -fr 1 248 2030 4.0 -fr 1 249 2030 4.0 -fr 1 250 2030 5.0 -fr 1 251 2030 5.0 -fr 1 252 2030 5.0 -fr 1 253 2030 5.0 -fr 1 254 2030 5.0 -fr 1 255 2030 5.0 -fr 1 256 2030 5.0 -fr 1 257 2030 5.0 -fr 1 258 2030 5.0 -fr 1 259 2030 5.0 -fr 1 260 2030 5.0 -fr 1 261 2030 5.0 -fr 1 262 2030 5.0 -fr 1 263 2030 5.0 -fr 1 264 2030 5.0 -fr 1 265 2030 5.0 -fr 1 266 2030 5.0 -fr 1 267 2030 5.0 -fr 1 268 2030 5.0 -fr 1 269 2030 5.0 -fr 1 270 2030 6.0 -fr 1 271 2030 6.0 -fr 1 272 2030 6.0 -fr 1 273 2030 6.0 -fr 1 274 2030 6.0 -fr 1 275 2030 6.0 -fr 1 276 2030 6.0 -fr 1 277 2030 6.0 -fr 1 278 2030 6.0 -fr 1 279 2030 6.0 -fr 1 280 2030 6.0 -fr 1 281 2030 6.0 -fr 1 282 2030 6.0 -fr 1 283 2030 6.0 -fr 1 284 2030 6.0 -fr 1 285 2030 6.0 -fr 1 286 2030 6.0 -fr 1 287 2030 6.0 -fr 1 288 2030 6.0 -fr 1 289 2030 6.0 -fr 1 290 2030 7.0 -fr 1 291 2030 7.0 -fr 1 292 2030 7.0 -fr 1 293 2030 7.0 -fr 1 294 2030 7.0 -fr 1 295 2030 7.0 -fr 1 296 2030 7.0 -fr 1 297 2030 7.0 -fr 1 298 2030 7.0 -fr 1 299 2030 7.0 -fr 1 300 2030 7.0 -fr 1 301 2030 7.0 -fr 1 302 2030 7.0 -fr 1 303 2030 7.0 -fr 1 304 2030 7.0 -fr 1 305 2030 7.0 -fr 1 306 2030 7.0 -fr 1 307 2030 7.0 -fr 1 308 2030 7.0 -fr 1 309 2030 7.0 -fr 1 310 2030 8.0 -fr 1 311 2030 8.0 -fr 1 312 2030 8.0 -fr 1 313 2030 8.0 -fr 1 314 2030 8.0 -fr 1 315 2030 8.0 -fr 1 316 2030 8.0 -fr 1 317 2030 8.0 -fr 1 318 2030 8.0 -fr 1 319 2030 8.0 -fr 1 320 2030 8.0 -fr 1 321 2030 8.0 -fr 1 322 2030 8.0 -fr 1 323 2030 8.0 -fr 1 324 2030 8.0 -fr 1 325 2030 8.0 -fr 1 326 2030 8.0 -fr 1 327 2030 8.0 -fr 1 328 2030 8.0 -fr 1 329 2030 8.0 -fr 1 330 2030 9.0 -fr 1 331 2030 9.0 -fr 1 332 2030 9.0 -fr 1 333 2030 9.0 -fr 1 334 2030 9.0 -fr 1 335 2030 9.0 -fr 1 336 2030 9.0 -it 1 1 2030 0.0 -it 1 2 2030 1.0 -it 1 3 2030 1.0 -it 1 4 2030 1.0 -it 1 5 2030 1.0 -it 1 6 2030 1.0 -it 1 7 2030 1.0 -it 1 8 2030 1.0 -it 1 9 2030 1.0 -it 1 10 2030 1.0 -it 1 11 2030 1.0 -it 1 12 2030 1.0 -it 1 13 2030 1.0 -it 1 14 2030 1.0 -it 1 15 2030 1.0 -it 1 16 2030 1.0 -it 1 17 2030 1.0 -it 1 18 2030 1.0 -it 1 19 2030 1.0 -it 1 20 2030 1.0 -it 1 21 2030 1.0 -it 1 22 2030 2.0 -it 1 23 2030 2.0 -it 1 24 2030 2.0 -it 1 25 2030 2.0 -it 1 26 2030 2.0 -it 1 27 2030 2.0 -it 1 28 2030 2.0 -it 1 29 2030 2.0 -it 1 30 2030 2.0 -it 1 31 2030 2.0 -it 1 32 2030 2.0 -it 1 33 2030 2.0 -it 1 34 2030 2.0 -it 1 35 2030 2.0 -it 1 36 2030 2.0 -it 1 37 2030 2.0 -it 1 38 2030 2.0 -it 1 39 2030 2.0 -it 1 40 2030 2.0 -it 1 41 2030 2.0 -it 1 42 2030 3.0 -it 1 43 2030 3.0 -it 1 44 2030 3.0 -it 1 45 2030 3.0 -it 1 46 2030 3.0 -it 1 47 2030 3.0 -it 1 48 2030 3.0 -it 1 49 2030 3.0 -it 1 50 2030 3.0 -it 1 51 2030 3.0 -it 1 52 2030 3.0 -it 1 53 2030 3.0 -it 1 54 2030 3.0 -it 1 55 2030 3.0 -it 1 56 2030 3.0 -it 1 57 2030 3.0 -it 1 58 2030 3.0 -it 1 59 2030 3.0 -it 1 60 2030 3.0 -it 1 61 2030 3.0 -it 1 62 2030 4.0 -it 1 63 2030 4.0 -it 1 64 2030 4.0 -it 1 65 2030 4.0 -it 1 66 2030 4.0 -it 1 67 2030 4.0 -it 1 68 2030 4.0 -it 1 69 2030 4.0 -it 1 70 2030 4.0 -it 1 71 2030 4.0 -it 1 72 2030 4.0 -it 1 73 2030 4.0 -it 1 74 2030 4.0 -it 1 75 2030 4.0 -it 1 76 2030 4.0 -it 1 77 2030 4.0 -it 1 78 2030 4.0 -it 1 79 2030 4.0 -it 1 80 2030 4.0 -it 1 81 2030 4.0 -it 1 82 2030 5.0 -it 1 83 2030 5.0 -it 1 84 2030 5.0 -it 1 85 2030 5.0 -it 1 86 2030 5.0 -it 1 87 2030 5.0 -it 1 88 2030 5.0 -it 1 89 2030 5.0 -it 1 90 2030 5.0 -it 1 91 2030 5.0 -it 1 92 2030 5.0 -it 1 93 2030 5.0 -it 1 94 2030 5.0 -it 1 95 2030 5.0 -it 1 96 2030 5.0 -it 1 97 2030 5.0 -it 1 98 2030 5.0 -it 1 99 2030 5.0 -it 1 100 2030 5.0 -it 1 101 2030 5.0 -it 1 102 2030 6.0 -it 1 103 2030 6.0 -it 1 104 2030 6.0 -it 1 105 2030 6.0 -it 1 106 2030 6.0 -it 1 107 2030 6.0 -it 1 108 2030 6.0 -it 1 109 2030 6.0 -it 1 110 2030 6.0 -it 1 111 2030 6.0 -it 1 112 2030 6.0 -it 1 113 2030 6.0 -it 1 114 2030 6.0 -it 1 115 2030 6.0 -it 1 116 2030 6.0 -it 1 117 2030 6.0 -it 1 118 2030 6.0 -it 1 119 2030 6.0 -it 1 120 2030 6.0 -it 1 121 2030 6.0 -it 1 122 2030 7.0 -it 1 123 2030 7.0 -it 1 124 2030 7.0 -it 1 125 2030 7.0 -it 1 126 2030 7.0 -it 1 127 2030 7.0 -it 1 128 2030 7.0 -it 1 129 2030 7.0 -it 1 130 2030 7.0 -it 1 131 2030 7.0 -it 1 132 2030 7.0 -it 1 133 2030 7.0 -it 1 134 2030 7.0 -it 1 135 2030 7.0 -it 1 136 2030 7.0 -it 1 137 2030 7.0 -it 1 138 2030 7.0 -it 1 139 2030 7.0 -it 1 140 2030 7.0 -it 1 141 2030 7.0 -it 1 142 2030 8.0 -it 1 143 2030 8.0 -it 1 144 2030 8.0 -it 1 145 2030 8.0 -it 1 146 2030 8.0 -it 1 147 2030 8.0 -it 1 148 2030 8.0 -it 1 149 2030 8.0 -it 1 150 2030 8.0 -it 1 151 2030 8.0 -it 1 152 2030 8.0 -it 1 153 2030 8.0 -it 1 154 2030 8.0 -it 1 155 2030 8.0 -it 1 156 2030 8.0 -it 1 157 2030 8.0 -it 1 158 2030 8.0 -it 1 159 2030 8.0 -it 1 160 2030 8.0 -it 1 161 2030 8.0 -it 1 162 2030 9.0 -it 1 163 2030 9.0 -it 1 164 2030 9.0 -it 1 165 2030 9.0 -it 1 166 2030 9.0 -it 1 167 2030 9.0 -it 1 168 2030 9.0 -it 1 169 2030 0.0 -it 1 170 2030 1.0 -it 1 171 2030 1.0 -it 1 172 2030 1.0 -it 1 173 2030 1.0 -it 1 174 2030 1.0 -it 1 175 2030 1.0 -it 1 176 2030 1.0 -it 1 177 2030 1.0 -it 1 178 2030 1.0 -it 1 179 2030 1.0 -it 1 180 2030 1.0 -it 1 181 2030 1.0 -it 1 182 2030 1.0 -it 1 183 2030 1.0 -it 1 184 2030 1.0 -it 1 185 2030 1.0 -it 1 186 2030 1.0 -it 1 187 2030 1.0 -it 1 188 2030 1.0 -it 1 189 2030 1.0 -it 1 190 2030 2.0 -it 1 191 2030 2.0 -it 1 192 2030 2.0 -it 1 193 2030 2.0 -it 1 194 2030 2.0 -it 1 195 2030 2.0 -it 1 196 2030 2.0 -it 1 197 2030 2.0 -it 1 198 2030 2.0 -it 1 199 2030 2.0 -it 1 200 2030 2.0 -it 1 201 2030 2.0 -it 1 202 2030 2.0 -it 1 203 2030 2.0 -it 1 204 2030 2.0 -it 1 205 2030 2.0 -it 1 206 2030 2.0 -it 1 207 2030 2.0 -it 1 208 2030 2.0 -it 1 209 2030 2.0 -it 1 210 2030 3.0 -it 1 211 2030 3.0 -it 1 212 2030 3.0 -it 1 213 2030 3.0 -it 1 214 2030 3.0 -it 1 215 2030 3.0 -it 1 216 2030 3.0 -it 1 217 2030 3.0 -it 1 218 2030 3.0 -it 1 219 2030 3.0 -it 1 220 2030 3.0 -it 1 221 2030 3.0 -it 1 222 2030 3.0 -it 1 223 2030 3.0 -it 1 224 2030 3.0 -it 1 225 2030 3.0 -it 1 226 2030 3.0 -it 1 227 2030 3.0 -it 1 228 2030 3.0 -it 1 229 2030 3.0 -it 1 230 2030 4.0 -it 1 231 2030 4.0 -it 1 232 2030 4.0 -it 1 233 2030 4.0 -it 1 234 2030 4.0 -it 1 235 2030 4.0 -it 1 236 2030 4.0 -it 1 237 2030 4.0 -it 1 238 2030 4.0 -it 1 239 2030 4.0 -it 1 240 2030 4.0 -it 1 241 2030 4.0 -it 1 242 2030 4.0 -it 1 243 2030 4.0 -it 1 244 2030 4.0 -it 1 245 2030 4.0 -it 1 246 2030 4.0 -it 1 247 2030 4.0 -it 1 248 2030 4.0 -it 1 249 2030 4.0 -it 1 250 2030 5.0 -it 1 251 2030 5.0 -it 1 252 2030 5.0 -it 1 253 2030 5.0 -it 1 254 2030 5.0 -it 1 255 2030 5.0 -it 1 256 2030 5.0 -it 1 257 2030 5.0 -it 1 258 2030 5.0 -it 1 259 2030 5.0 -it 1 260 2030 5.0 -it 1 261 2030 5.0 -it 1 262 2030 5.0 -it 1 263 2030 5.0 -it 1 264 2030 5.0 -it 1 265 2030 5.0 -it 1 266 2030 5.0 -it 1 267 2030 5.0 -it 1 268 2030 5.0 -it 1 269 2030 5.0 -it 1 270 2030 6.0 -it 1 271 2030 6.0 -it 1 272 2030 6.0 -it 1 273 2030 6.0 -it 1 274 2030 6.0 -it 1 275 2030 6.0 -it 1 276 2030 6.0 -it 1 277 2030 6.0 -it 1 278 2030 6.0 -it 1 279 2030 6.0 -it 1 280 2030 6.0 -it 1 281 2030 6.0 -it 1 282 2030 6.0 -it 1 283 2030 6.0 -it 1 284 2030 6.0 -it 1 285 2030 6.0 -it 1 286 2030 6.0 -it 1 287 2030 6.0 -it 1 288 2030 6.0 -it 1 289 2030 6.0 -it 1 290 2030 7.0 -it 1 291 2030 7.0 -it 1 292 2030 7.0 -it 1 293 2030 7.0 -it 1 294 2030 7.0 -it 1 295 2030 7.0 -it 1 296 2030 7.0 -it 1 297 2030 7.0 -it 1 298 2030 7.0 -it 1 299 2030 7.0 -it 1 300 2030 7.0 -it 1 301 2030 7.0 -it 1 302 2030 7.0 -it 1 303 2030 7.0 -it 1 304 2030 7.0 -it 1 305 2030 7.0 -it 1 306 2030 7.0 -it 1 307 2030 7.0 -it 1 308 2030 7.0 -it 1 309 2030 7.0 -it 1 310 2030 8.0 -it 1 311 2030 8.0 -it 1 312 2030 8.0 -it 1 313 2030 8.0 -it 1 314 2030 8.0 -it 1 315 2030 8.0 -it 1 316 2030 8.0 -it 1 317 2030 8.0 -it 1 318 2030 8.0 -it 1 319 2030 8.0 -it 1 320 2030 8.0 -it 1 321 2030 8.0 -it 1 322 2030 8.0 -it 1 323 2030 8.0 -it 1 324 2030 8.0 -it 1 325 2030 8.0 -it 1 326 2030 8.0 -it 1 327 2030 8.0 -it 1 328 2030 8.0 -it 1 329 2030 8.0 -it 1 330 2030 9.0 -it 1 331 2030 9.0 -it 1 332 2030 9.0 -it 1 333 2030 9.0 -it 1 334 2030 9.0 -it 1 335 2030 9.0 -it 1 336 2030 9.0 -de 2 1 2030 0.0 -de 2 2 2030 1.0 -de 2 3 2030 1.0 -de 2 4 2030 1.0 -de 2 5 2030 1.0 -de 2 6 2030 1.0 -de 2 7 2030 1.0 -de 2 8 2030 1.0 -de 2 9 2030 1.0 -de 2 10 2030 1.0 -de 2 11 2030 1.0 -de 2 12 2030 1.0 -de 2 13 2030 1.0 -de 2 14 2030 1.0 -de 2 15 2030 1.0 -de 2 16 2030 1.0 -de 2 17 2030 1.0 -de 2 18 2030 1.0 -de 2 19 2030 1.0 -de 2 20 2030 1.0 -de 2 21 2030 1.0 -de 2 22 2030 2.0 -de 2 23 2030 2.0 -de 2 24 2030 2.0 -de 2 25 2030 2.0 -de 2 26 2030 2.0 -de 2 27 2030 2.0 -de 2 28 2030 2.0 -de 2 29 2030 2.0 -de 2 30 2030 2.0 -de 2 31 2030 2.0 -de 2 32 2030 2.0 -de 2 33 2030 2.0 -de 2 34 2030 2.0 -de 2 35 2030 2.0 -de 2 36 2030 2.0 -de 2 37 2030 2.0 -de 2 38 2030 2.0 -de 2 39 2030 2.0 -de 2 40 2030 2.0 -de 2 41 2030 2.0 -de 2 42 2030 3.0 -de 2 43 2030 3.0 -de 2 44 2030 3.0 -de 2 45 2030 3.0 -de 2 46 2030 3.0 -de 2 47 2030 3.0 -de 2 48 2030 3.0 -de 2 49 2030 3.0 -de 2 50 2030 3.0 -de 2 51 2030 3.0 -de 2 52 2030 3.0 -de 2 53 2030 3.0 -de 2 54 2030 3.0 -de 2 55 2030 3.0 -de 2 56 2030 3.0 -de 2 57 2030 3.0 -de 2 58 2030 3.0 -de 2 59 2030 3.0 -de 2 60 2030 3.0 -de 2 61 2030 3.0 -de 2 62 2030 4.0 -de 2 63 2030 4.0 -de 2 64 2030 4.0 -de 2 65 2030 4.0 -de 2 66 2030 4.0 -de 2 67 2030 4.0 -de 2 68 2030 4.0 -de 2 69 2030 4.0 -de 2 70 2030 4.0 -de 2 71 2030 4.0 -de 2 72 2030 4.0 -de 2 73 2030 4.0 -de 2 74 2030 4.0 -de 2 75 2030 4.0 -de 2 76 2030 4.0 -de 2 77 2030 4.0 -de 2 78 2030 4.0 -de 2 79 2030 4.0 -de 2 80 2030 4.0 -de 2 81 2030 4.0 -de 2 82 2030 5.0 -de 2 83 2030 5.0 -de 2 84 2030 5.0 -de 2 85 2030 5.0 -de 2 86 2030 5.0 -de 2 87 2030 5.0 -de 2 88 2030 5.0 -de 2 89 2030 5.0 -de 2 90 2030 5.0 -de 2 91 2030 5.0 -de 2 92 2030 5.0 -de 2 93 2030 5.0 -de 2 94 2030 5.0 -de 2 95 2030 5.0 -de 2 96 2030 5.0 -de 2 97 2030 5.0 -de 2 98 2030 5.0 -de 2 99 2030 5.0 -de 2 100 2030 5.0 -de 2 101 2030 5.0 -de 2 102 2030 6.0 -de 2 103 2030 6.0 -de 2 104 2030 6.0 -de 2 105 2030 6.0 -de 2 106 2030 6.0 -de 2 107 2030 6.0 -de 2 108 2030 6.0 -de 2 109 2030 6.0 -de 2 110 2030 6.0 -de 2 111 2030 6.0 -de 2 112 2030 6.0 -de 2 113 2030 6.0 -de 2 114 2030 6.0 -de 2 115 2030 6.0 -de 2 116 2030 6.0 -de 2 117 2030 6.0 -de 2 118 2030 6.0 -de 2 119 2030 6.0 -de 2 120 2030 6.0 -de 2 121 2030 6.0 -de 2 122 2030 7.0 -de 2 123 2030 7.0 -de 2 124 2030 7.0 -de 2 125 2030 7.0 -de 2 126 2030 7.0 -de 2 127 2030 7.0 -de 2 128 2030 7.0 -de 2 129 2030 7.0 -de 2 130 2030 7.0 -de 2 131 2030 7.0 -de 2 132 2030 7.0 -de 2 133 2030 7.0 -de 2 134 2030 7.0 -de 2 135 2030 7.0 -de 2 136 2030 7.0 -de 2 137 2030 7.0 -de 2 138 2030 7.0 -de 2 139 2030 7.0 -de 2 140 2030 7.0 -de 2 141 2030 7.0 -de 2 142 2030 8.0 -de 2 143 2030 8.0 -de 2 144 2030 8.0 -de 2 145 2030 8.0 -de 2 146 2030 8.0 -de 2 147 2030 8.0 -de 2 148 2030 8.0 -de 2 149 2030 8.0 -de 2 150 2030 8.0 -de 2 151 2030 8.0 -de 2 152 2030 8.0 -de 2 153 2030 8.0 -de 2 154 2030 8.0 -de 2 155 2030 8.0 -de 2 156 2030 8.0 -de 2 157 2030 8.0 -de 2 158 2030 8.0 -de 2 159 2030 8.0 -de 2 160 2030 8.0 -de 2 161 2030 8.0 -de 2 162 2030 9.0 -de 2 163 2030 9.0 -de 2 164 2030 9.0 -de 2 165 2030 9.0 -de 2 166 2030 9.0 -de 2 167 2030 9.0 -de 2 168 2030 9.0 -de 2 169 2030 0.0 -de 2 170 2030 1.0 -de 2 171 2030 1.0 -de 2 172 2030 1.0 -de 2 173 2030 1.0 -de 2 174 2030 1.0 -de 2 175 2030 1.0 -de 2 176 2030 1.0 -de 2 177 2030 1.0 -de 2 178 2030 1.0 -de 2 179 2030 1.0 -de 2 180 2030 1.0 -de 2 181 2030 1.0 -de 2 182 2030 1.0 -de 2 183 2030 1.0 -de 2 184 2030 1.0 -de 2 185 2030 1.0 -de 2 186 2030 1.0 -de 2 187 2030 1.0 -de 2 188 2030 1.0 -de 2 189 2030 1.0 -de 2 190 2030 2.0 -de 2 191 2030 2.0 -de 2 192 2030 2.0 -de 2 193 2030 2.0 -de 2 194 2030 2.0 -de 2 195 2030 2.0 -de 2 196 2030 2.0 -de 2 197 2030 2.0 -de 2 198 2030 2.0 -de 2 199 2030 2.0 -de 2 200 2030 2.0 -de 2 201 2030 2.0 -de 2 202 2030 2.0 -de 2 203 2030 2.0 -de 2 204 2030 2.0 -de 2 205 2030 2.0 -de 2 206 2030 2.0 -de 2 207 2030 2.0 -de 2 208 2030 2.0 -de 2 209 2030 2.0 -de 2 210 2030 3.0 -de 2 211 2030 3.0 -de 2 212 2030 3.0 -de 2 213 2030 3.0 -de 2 214 2030 3.0 -de 2 215 2030 3.0 -de 2 216 2030 3.0 -de 2 217 2030 3.0 -de 2 218 2030 3.0 -de 2 219 2030 3.0 -de 2 220 2030 3.0 -de 2 221 2030 3.0 -de 2 222 2030 3.0 -de 2 223 2030 3.0 -de 2 224 2030 3.0 -de 2 225 2030 3.0 -de 2 226 2030 3.0 -de 2 227 2030 3.0 -de 2 228 2030 3.0 -de 2 229 2030 3.0 -de 2 230 2030 4.0 -de 2 231 2030 4.0 -de 2 232 2030 4.0 -de 2 233 2030 4.0 -de 2 234 2030 4.0 -de 2 235 2030 4.0 -de 2 236 2030 4.0 -de 2 237 2030 4.0 -de 2 238 2030 4.0 -de 2 239 2030 4.0 -de 2 240 2030 4.0 -de 2 241 2030 4.0 -de 2 242 2030 4.0 -de 2 243 2030 4.0 -de 2 244 2030 4.0 -de 2 245 2030 4.0 -de 2 246 2030 4.0 -de 2 247 2030 4.0 -de 2 248 2030 4.0 -de 2 249 2030 4.0 -de 2 250 2030 5.0 -de 2 251 2030 5.0 -de 2 252 2030 5.0 -de 2 253 2030 5.0 -de 2 254 2030 5.0 -de 2 255 2030 5.0 -de 2 256 2030 5.0 -de 2 257 2030 5.0 -de 2 258 2030 5.0 -de 2 259 2030 5.0 -de 2 260 2030 5.0 -de 2 261 2030 5.0 -de 2 262 2030 5.0 -de 2 263 2030 5.0 -de 2 264 2030 5.0 -de 2 265 2030 5.0 -de 2 266 2030 5.0 -de 2 267 2030 5.0 -de 2 268 2030 5.0 -de 2 269 2030 5.0 -de 2 270 2030 6.0 -de 2 271 2030 6.0 -de 2 272 2030 6.0 -de 2 273 2030 6.0 -de 2 274 2030 6.0 -de 2 275 2030 6.0 -de 2 276 2030 6.0 -de 2 277 2030 6.0 -de 2 278 2030 6.0 -de 2 279 2030 6.0 -de 2 280 2030 6.0 -de 2 281 2030 6.0 -de 2 282 2030 6.0 -de 2 283 2030 6.0 -de 2 284 2030 6.0 -de 2 285 2030 6.0 -de 2 286 2030 6.0 -de 2 287 2030 6.0 -de 2 288 2030 6.0 -de 2 289 2030 6.0 -de 2 290 2030 7.0 -de 2 291 2030 7.0 -de 2 292 2030 7.0 -de 2 293 2030 7.0 -de 2 294 2030 7.0 -de 2 295 2030 7.0 -de 2 296 2030 7.0 -de 2 297 2030 7.0 -de 2 298 2030 7.0 -de 2 299 2030 7.0 -de 2 300 2030 7.0 -de 2 301 2030 7.0 -de 2 302 2030 7.0 -de 2 303 2030 7.0 -de 2 304 2030 7.0 -de 2 305 2030 7.0 -de 2 306 2030 7.0 -de 2 307 2030 7.0 -de 2 308 2030 7.0 -de 2 309 2030 7.0 -de 2 310 2030 8.0 -de 2 311 2030 8.0 -de 2 312 2030 8.0 -de 2 313 2030 8.0 -de 2 314 2030 8.0 -de 2 315 2030 8.0 -de 2 316 2030 8.0 -de 2 317 2030 8.0 -de 2 318 2030 8.0 -de 2 319 2030 8.0 -de 2 320 2030 8.0 -de 2 321 2030 8.0 -de 2 322 2030 8.0 -de 2 323 2030 8.0 -de 2 324 2030 8.0 -de 2 325 2030 8.0 -de 2 326 2030 8.0 -de 2 327 2030 8.0 -de 2 328 2030 8.0 -de 2 329 2030 8.0 -de 2 330 2030 9.0 -de 2 331 2030 9.0 -de 2 332 2030 9.0 -de 2 333 2030 9.0 -de 2 334 2030 9.0 -de 2 335 2030 9.0 -de 2 336 2030 9.0 -es 2 1 2030 0.0 -es 2 2 2030 1.0 -es 2 3 2030 1.0 -es 2 4 2030 1.0 -es 2 5 2030 1.0 -es 2 6 2030 1.0 -es 2 7 2030 1.0 -es 2 8 2030 1.0 -es 2 9 2030 1.0 -es 2 10 2030 1.0 -es 2 11 2030 1.0 -es 2 12 2030 1.0 -es 2 13 2030 1.0 -es 2 14 2030 1.0 -es 2 15 2030 1.0 -es 2 16 2030 1.0 -es 2 17 2030 1.0 -es 2 18 2030 1.0 -es 2 19 2030 1.0 -es 2 20 2030 1.0 -es 2 21 2030 1.0 -es 2 22 2030 2.0 -es 2 23 2030 2.0 -es 2 24 2030 2.0 -es 2 25 2030 2.0 -es 2 26 2030 2.0 -es 2 27 2030 2.0 -es 2 28 2030 2.0 -es 2 29 2030 2.0 -es 2 30 2030 2.0 -es 2 31 2030 2.0 -es 2 32 2030 2.0 -es 2 33 2030 2.0 -es 2 34 2030 2.0 -es 2 35 2030 2.0 -es 2 36 2030 2.0 -es 2 37 2030 2.0 -es 2 38 2030 2.0 -es 2 39 2030 2.0 -es 2 40 2030 2.0 -es 2 41 2030 2.0 -es 2 42 2030 3.0 -es 2 43 2030 3.0 -es 2 44 2030 3.0 -es 2 45 2030 3.0 -es 2 46 2030 3.0 -es 2 47 2030 3.0 -es 2 48 2030 3.0 -es 2 49 2030 3.0 -es 2 50 2030 3.0 -es 2 51 2030 3.0 -es 2 52 2030 3.0 -es 2 53 2030 3.0 -es 2 54 2030 3.0 -es 2 55 2030 3.0 -es 2 56 2030 3.0 -es 2 57 2030 3.0 -es 2 58 2030 3.0 -es 2 59 2030 3.0 -es 2 60 2030 3.0 -es 2 61 2030 3.0 -es 2 62 2030 4.0 -es 2 63 2030 4.0 -es 2 64 2030 4.0 -es 2 65 2030 4.0 -es 2 66 2030 4.0 -es 2 67 2030 4.0 -es 2 68 2030 4.0 -es 2 69 2030 4.0 -es 2 70 2030 4.0 -es 2 71 2030 4.0 -es 2 72 2030 4.0 -es 2 73 2030 4.0 -es 2 74 2030 4.0 -es 2 75 2030 4.0 -es 2 76 2030 4.0 -es 2 77 2030 4.0 -es 2 78 2030 4.0 -es 2 79 2030 4.0 -es 2 80 2030 4.0 -es 2 81 2030 4.0 -es 2 82 2030 5.0 -es 2 83 2030 5.0 -es 2 84 2030 5.0 -es 2 85 2030 5.0 -es 2 86 2030 5.0 -es 2 87 2030 5.0 -es 2 88 2030 5.0 -es 2 89 2030 5.0 -es 2 90 2030 5.0 -es 2 91 2030 5.0 -es 2 92 2030 5.0 -es 2 93 2030 5.0 -es 2 94 2030 5.0 -es 2 95 2030 5.0 -es 2 96 2030 5.0 -es 2 97 2030 5.0 -es 2 98 2030 5.0 -es 2 99 2030 5.0 -es 2 100 2030 5.0 -es 2 101 2030 5.0 -es 2 102 2030 6.0 -es 2 103 2030 6.0 -es 2 104 2030 6.0 -es 2 105 2030 6.0 -es 2 106 2030 6.0 -es 2 107 2030 6.0 -es 2 108 2030 6.0 -es 2 109 2030 6.0 -es 2 110 2030 6.0 -es 2 111 2030 6.0 -es 2 112 2030 6.0 -es 2 113 2030 6.0 -es 2 114 2030 6.0 -es 2 115 2030 6.0 -es 2 116 2030 6.0 -es 2 117 2030 6.0 -es 2 118 2030 6.0 -es 2 119 2030 6.0 -es 2 120 2030 6.0 -es 2 121 2030 6.0 -es 2 122 2030 7.0 -es 2 123 2030 7.0 -es 2 124 2030 7.0 -es 2 125 2030 7.0 -es 2 126 2030 7.0 -es 2 127 2030 7.0 -es 2 128 2030 7.0 -es 2 129 2030 7.0 -es 2 130 2030 7.0 -es 2 131 2030 7.0 -es 2 132 2030 7.0 -es 2 133 2030 7.0 -es 2 134 2030 7.0 -es 2 135 2030 7.0 -es 2 136 2030 7.0 -es 2 137 2030 7.0 -es 2 138 2030 7.0 -es 2 139 2030 7.0 -es 2 140 2030 7.0 -es 2 141 2030 7.0 -es 2 142 2030 8.0 -es 2 143 2030 8.0 -es 2 144 2030 8.0 -es 2 145 2030 8.0 -es 2 146 2030 8.0 -es 2 147 2030 8.0 -es 2 148 2030 8.0 -es 2 149 2030 8.0 -es 2 150 2030 8.0 -es 2 151 2030 8.0 -es 2 152 2030 8.0 -es 2 153 2030 8.0 -es 2 154 2030 8.0 -es 2 155 2030 8.0 -es 2 156 2030 8.0 -es 2 157 2030 8.0 -es 2 158 2030 8.0 -es 2 159 2030 8.0 -es 2 160 2030 8.0 -es 2 161 2030 8.0 -es 2 162 2030 9.0 -es 2 163 2030 9.0 -es 2 164 2030 9.0 -es 2 165 2030 9.0 -es 2 166 2030 9.0 -es 2 167 2030 9.0 -es 2 168 2030 9.0 -es 2 169 2030 0.0 -es 2 170 2030 1.0 -es 2 171 2030 1.0 -es 2 172 2030 1.0 -es 2 173 2030 1.0 -es 2 174 2030 1.0 -es 2 175 2030 1.0 -es 2 176 2030 1.0 -es 2 177 2030 1.0 -es 2 178 2030 1.0 -es 2 179 2030 1.0 -es 2 180 2030 1.0 -es 2 181 2030 1.0 -es 2 182 2030 1.0 -es 2 183 2030 1.0 -es 2 184 2030 1.0 -es 2 185 2030 1.0 -es 2 186 2030 1.0 -es 2 187 2030 1.0 -es 2 188 2030 1.0 -es 2 189 2030 1.0 -es 2 190 2030 2.0 -es 2 191 2030 2.0 -es 2 192 2030 2.0 -es 2 193 2030 2.0 -es 2 194 2030 2.0 -es 2 195 2030 2.0 -es 2 196 2030 2.0 -es 2 197 2030 2.0 -es 2 198 2030 2.0 -es 2 199 2030 2.0 -es 2 200 2030 2.0 -es 2 201 2030 2.0 -es 2 202 2030 2.0 -es 2 203 2030 2.0 -es 2 204 2030 2.0 -es 2 205 2030 2.0 -es 2 206 2030 2.0 -es 2 207 2030 2.0 -es 2 208 2030 2.0 -es 2 209 2030 2.0 -es 2 210 2030 3.0 -es 2 211 2030 3.0 -es 2 212 2030 3.0 -es 2 213 2030 3.0 -es 2 214 2030 3.0 -es 2 215 2030 3.0 -es 2 216 2030 3.0 -es 2 217 2030 3.0 -es 2 218 2030 3.0 -es 2 219 2030 3.0 -es 2 220 2030 3.0 -es 2 221 2030 3.0 -es 2 222 2030 3.0 -es 2 223 2030 3.0 -es 2 224 2030 3.0 -es 2 225 2030 3.0 -es 2 226 2030 3.0 -es 2 227 2030 3.0 -es 2 228 2030 3.0 -es 2 229 2030 3.0 -es 2 230 2030 4.0 -es 2 231 2030 4.0 -es 2 232 2030 4.0 -es 2 233 2030 4.0 -es 2 234 2030 4.0 -es 2 235 2030 4.0 -es 2 236 2030 4.0 -es 2 237 2030 4.0 -es 2 238 2030 4.0 -es 2 239 2030 4.0 -es 2 240 2030 4.0 -es 2 241 2030 4.0 -es 2 242 2030 4.0 -es 2 243 2030 4.0 -es 2 244 2030 4.0 -es 2 245 2030 4.0 -es 2 246 2030 4.0 -es 2 247 2030 4.0 -es 2 248 2030 4.0 -es 2 249 2030 4.0 -es 2 250 2030 5.0 -es 2 251 2030 5.0 -es 2 252 2030 5.0 -es 2 253 2030 5.0 -es 2 254 2030 5.0 -es 2 255 2030 5.0 -es 2 256 2030 5.0 -es 2 257 2030 5.0 -es 2 258 2030 5.0 -es 2 259 2030 5.0 -es 2 260 2030 5.0 -es 2 261 2030 5.0 -es 2 262 2030 5.0 -es 2 263 2030 5.0 -es 2 264 2030 5.0 -es 2 265 2030 5.0 -es 2 266 2030 5.0 -es 2 267 2030 5.0 -es 2 268 2030 5.0 -es 2 269 2030 5.0 -es 2 270 2030 6.0 -es 2 271 2030 6.0 -es 2 272 2030 6.0 -es 2 273 2030 6.0 -es 2 274 2030 6.0 -es 2 275 2030 6.0 -es 2 276 2030 6.0 -es 2 277 2030 6.0 -es 2 278 2030 6.0 -es 2 279 2030 6.0 -es 2 280 2030 6.0 -es 2 281 2030 6.0 -es 2 282 2030 6.0 -es 2 283 2030 6.0 -es 2 284 2030 6.0 -es 2 285 2030 6.0 -es 2 286 2030 6.0 -es 2 287 2030 6.0 -es 2 288 2030 6.0 -es 2 289 2030 6.0 -es 2 290 2030 7.0 -es 2 291 2030 7.0 -es 2 292 2030 7.0 -es 2 293 2030 7.0 -es 2 294 2030 7.0 -es 2 295 2030 7.0 -es 2 296 2030 7.0 -es 2 297 2030 7.0 -es 2 298 2030 7.0 -es 2 299 2030 7.0 -es 2 300 2030 7.0 -es 2 301 2030 7.0 -es 2 302 2030 7.0 -es 2 303 2030 7.0 -es 2 304 2030 7.0 -es 2 305 2030 7.0 -es 2 306 2030 7.0 -es 2 307 2030 7.0 -es 2 308 2030 7.0 -es 2 309 2030 7.0 -es 2 310 2030 8.0 -es 2 311 2030 8.0 -es 2 312 2030 8.0 -es 2 313 2030 8.0 -es 2 314 2030 8.0 -es 2 315 2030 8.0 -es 2 316 2030 8.0 -es 2 317 2030 8.0 -es 2 318 2030 8.0 -es 2 319 2030 8.0 -es 2 320 2030 8.0 -es 2 321 2030 8.0 -es 2 322 2030 8.0 -es 2 323 2030 8.0 -es 2 324 2030 8.0 -es 2 325 2030 8.0 -es 2 326 2030 8.0 -es 2 327 2030 8.0 -es 2 328 2030 8.0 -es 2 329 2030 8.0 -es 2 330 2030 9.0 -es 2 331 2030 9.0 -es 2 332 2030 9.0 -es 2 333 2030 9.0 -es 2 334 2030 9.0 -es 2 335 2030 9.0 -es 2 336 2030 9.0 -fr 2 1 2030 0.0 -fr 2 2 2030 1.0 -fr 2 3 2030 1.0 -fr 2 4 2030 1.0 -fr 2 5 2030 1.0 -fr 2 6 2030 1.0 -fr 2 7 2030 1.0 -fr 2 8 2030 1.0 -fr 2 9 2030 1.0 -fr 2 10 2030 1.0 -fr 2 11 2030 1.0 -fr 2 12 2030 1.0 -fr 2 13 2030 1.0 -fr 2 14 2030 1.0 -fr 2 15 2030 1.0 -fr 2 16 2030 1.0 -fr 2 17 2030 1.0 -fr 2 18 2030 1.0 -fr 2 19 2030 1.0 -fr 2 20 2030 1.0 -fr 2 21 2030 1.0 -fr 2 22 2030 2.0 -fr 2 23 2030 2.0 -fr 2 24 2030 2.0 -fr 2 25 2030 2.0 -fr 2 26 2030 2.0 -fr 2 27 2030 2.0 -fr 2 28 2030 2.0 -fr 2 29 2030 2.0 -fr 2 30 2030 2.0 -fr 2 31 2030 2.0 -fr 2 32 2030 2.0 -fr 2 33 2030 2.0 -fr 2 34 2030 2.0 -fr 2 35 2030 2.0 -fr 2 36 2030 2.0 -fr 2 37 2030 2.0 -fr 2 38 2030 2.0 -fr 2 39 2030 2.0 -fr 2 40 2030 2.0 -fr 2 41 2030 2.0 -fr 2 42 2030 3.0 -fr 2 43 2030 3.0 -fr 2 44 2030 3.0 -fr 2 45 2030 3.0 -fr 2 46 2030 3.0 -fr 2 47 2030 3.0 -fr 2 48 2030 3.0 -fr 2 49 2030 3.0 -fr 2 50 2030 3.0 -fr 2 51 2030 3.0 -fr 2 52 2030 3.0 -fr 2 53 2030 3.0 -fr 2 54 2030 3.0 -fr 2 55 2030 3.0 -fr 2 56 2030 3.0 -fr 2 57 2030 3.0 -fr 2 58 2030 3.0 -fr 2 59 2030 3.0 -fr 2 60 2030 3.0 -fr 2 61 2030 3.0 -fr 2 62 2030 4.0 -fr 2 63 2030 4.0 -fr 2 64 2030 4.0 -fr 2 65 2030 4.0 -fr 2 66 2030 4.0 -fr 2 67 2030 4.0 -fr 2 68 2030 4.0 -fr 2 69 2030 4.0 -fr 2 70 2030 4.0 -fr 2 71 2030 4.0 -fr 2 72 2030 4.0 -fr 2 73 2030 4.0 -fr 2 74 2030 4.0 -fr 2 75 2030 4.0 -fr 2 76 2030 4.0 -fr 2 77 2030 4.0 -fr 2 78 2030 4.0 -fr 2 79 2030 4.0 -fr 2 80 2030 4.0 -fr 2 81 2030 4.0 -fr 2 82 2030 5.0 -fr 2 83 2030 5.0 -fr 2 84 2030 5.0 -fr 2 85 2030 5.0 -fr 2 86 2030 5.0 -fr 2 87 2030 5.0 -fr 2 88 2030 5.0 -fr 2 89 2030 5.0 -fr 2 90 2030 5.0 -fr 2 91 2030 5.0 -fr 2 92 2030 5.0 -fr 2 93 2030 5.0 -fr 2 94 2030 5.0 -fr 2 95 2030 5.0 -fr 2 96 2030 5.0 -fr 2 97 2030 5.0 -fr 2 98 2030 5.0 -fr 2 99 2030 5.0 -fr 2 100 2030 5.0 -fr 2 101 2030 5.0 -fr 2 102 2030 6.0 -fr 2 103 2030 6.0 -fr 2 104 2030 6.0 -fr 2 105 2030 6.0 -fr 2 106 2030 6.0 -fr 2 107 2030 6.0 -fr 2 108 2030 6.0 -fr 2 109 2030 6.0 -fr 2 110 2030 6.0 -fr 2 111 2030 6.0 -fr 2 112 2030 6.0 -fr 2 113 2030 6.0 -fr 2 114 2030 6.0 -fr 2 115 2030 6.0 -fr 2 116 2030 6.0 -fr 2 117 2030 6.0 -fr 2 118 2030 6.0 -fr 2 119 2030 6.0 -fr 2 120 2030 6.0 -fr 2 121 2030 6.0 -fr 2 122 2030 7.0 -fr 2 123 2030 7.0 -fr 2 124 2030 7.0 -fr 2 125 2030 7.0 -fr 2 126 2030 7.0 -fr 2 127 2030 7.0 -fr 2 128 2030 7.0 -fr 2 129 2030 7.0 -fr 2 130 2030 7.0 -fr 2 131 2030 7.0 -fr 2 132 2030 7.0 -fr 2 133 2030 7.0 -fr 2 134 2030 7.0 -fr 2 135 2030 7.0 -fr 2 136 2030 7.0 -fr 2 137 2030 7.0 -fr 2 138 2030 7.0 -fr 2 139 2030 7.0 -fr 2 140 2030 7.0 -fr 2 141 2030 7.0 -fr 2 142 2030 8.0 -fr 2 143 2030 8.0 -fr 2 144 2030 8.0 -fr 2 145 2030 8.0 -fr 2 146 2030 8.0 -fr 2 147 2030 8.0 -fr 2 148 2030 8.0 -fr 2 149 2030 8.0 -fr 2 150 2030 8.0 -fr 2 151 2030 8.0 -fr 2 152 2030 8.0 -fr 2 153 2030 8.0 -fr 2 154 2030 8.0 -fr 2 155 2030 8.0 -fr 2 156 2030 8.0 -fr 2 157 2030 8.0 -fr 2 158 2030 8.0 -fr 2 159 2030 8.0 -fr 2 160 2030 8.0 -fr 2 161 2030 8.0 -fr 2 162 2030 9.0 -fr 2 163 2030 9.0 -fr 2 164 2030 9.0 -fr 2 165 2030 9.0 -fr 2 166 2030 9.0 -fr 2 167 2030 9.0 -fr 2 168 2030 9.0 -fr 2 169 2030 0.0 -fr 2 170 2030 1.0 -fr 2 171 2030 1.0 -fr 2 172 2030 1.0 -fr 2 173 2030 1.0 -fr 2 174 2030 1.0 -fr 2 175 2030 1.0 -fr 2 176 2030 1.0 -fr 2 177 2030 1.0 -fr 2 178 2030 1.0 -fr 2 179 2030 1.0 -fr 2 180 2030 1.0 -fr 2 181 2030 1.0 -fr 2 182 2030 1.0 -fr 2 183 2030 1.0 -fr 2 184 2030 1.0 -fr 2 185 2030 1.0 -fr 2 186 2030 1.0 -fr 2 187 2030 1.0 -fr 2 188 2030 1.0 -fr 2 189 2030 1.0 -fr 2 190 2030 2.0 -fr 2 191 2030 2.0 -fr 2 192 2030 2.0 -fr 2 193 2030 2.0 -fr 2 194 2030 2.0 -fr 2 195 2030 2.0 -fr 2 196 2030 2.0 -fr 2 197 2030 2.0 -fr 2 198 2030 2.0 -fr 2 199 2030 2.0 -fr 2 200 2030 2.0 -fr 2 201 2030 2.0 -fr 2 202 2030 2.0 -fr 2 203 2030 2.0 -fr 2 204 2030 2.0 -fr 2 205 2030 2.0 -fr 2 206 2030 2.0 -fr 2 207 2030 2.0 -fr 2 208 2030 2.0 -fr 2 209 2030 2.0 -fr 2 210 2030 3.0 -fr 2 211 2030 3.0 -fr 2 212 2030 3.0 -fr 2 213 2030 3.0 -fr 2 214 2030 3.0 -fr 2 215 2030 3.0 -fr 2 216 2030 3.0 -fr 2 217 2030 3.0 -fr 2 218 2030 3.0 -fr 2 219 2030 3.0 -fr 2 220 2030 3.0 -fr 2 221 2030 3.0 -fr 2 222 2030 3.0 -fr 2 223 2030 3.0 -fr 2 224 2030 3.0 -fr 2 225 2030 3.0 -fr 2 226 2030 3.0 -fr 2 227 2030 3.0 -fr 2 228 2030 3.0 -fr 2 229 2030 3.0 -fr 2 230 2030 4.0 -fr 2 231 2030 4.0 -fr 2 232 2030 4.0 -fr 2 233 2030 4.0 -fr 2 234 2030 4.0 -fr 2 235 2030 4.0 -fr 2 236 2030 4.0 -fr 2 237 2030 4.0 -fr 2 238 2030 4.0 -fr 2 239 2030 4.0 -fr 2 240 2030 4.0 -fr 2 241 2030 4.0 -fr 2 242 2030 4.0 -fr 2 243 2030 4.0 -fr 2 244 2030 4.0 -fr 2 245 2030 4.0 -fr 2 246 2030 4.0 -fr 2 247 2030 4.0 -fr 2 248 2030 4.0 -fr 2 249 2030 4.0 -fr 2 250 2030 5.0 -fr 2 251 2030 5.0 -fr 2 252 2030 5.0 -fr 2 253 2030 5.0 -fr 2 254 2030 5.0 -fr 2 255 2030 5.0 -fr 2 256 2030 5.0 -fr 2 257 2030 5.0 -fr 2 258 2030 5.0 -fr 2 259 2030 5.0 -fr 2 260 2030 5.0 -fr 2 261 2030 5.0 -fr 2 262 2030 5.0 -fr 2 263 2030 5.0 -fr 2 264 2030 5.0 -fr 2 265 2030 5.0 -fr 2 266 2030 5.0 -fr 2 267 2030 5.0 -fr 2 268 2030 5.0 -fr 2 269 2030 5.0 -fr 2 270 2030 6.0 -fr 2 271 2030 6.0 -fr 2 272 2030 6.0 -fr 2 273 2030 6.0 -fr 2 274 2030 6.0 -fr 2 275 2030 6.0 -fr 2 276 2030 6.0 -fr 2 277 2030 6.0 -fr 2 278 2030 6.0 -fr 2 279 2030 6.0 -fr 2 280 2030 6.0 -fr 2 281 2030 6.0 -fr 2 282 2030 6.0 -fr 2 283 2030 6.0 -fr 2 284 2030 6.0 -fr 2 285 2030 6.0 -fr 2 286 2030 6.0 -fr 2 287 2030 6.0 -fr 2 288 2030 6.0 -fr 2 289 2030 6.0 -fr 2 290 2030 7.0 -fr 2 291 2030 7.0 -fr 2 292 2030 7.0 -fr 2 293 2030 7.0 -fr 2 294 2030 7.0 -fr 2 295 2030 7.0 -fr 2 296 2030 7.0 -fr 2 297 2030 7.0 -fr 2 298 2030 7.0 -fr 2 299 2030 7.0 -fr 2 300 2030 7.0 -fr 2 301 2030 7.0 -fr 2 302 2030 7.0 -fr 2 303 2030 7.0 -fr 2 304 2030 7.0 -fr 2 305 2030 7.0 -fr 2 306 2030 7.0 -fr 2 307 2030 7.0 -fr 2 308 2030 7.0 -fr 2 309 2030 7.0 -fr 2 310 2030 8.0 -fr 2 311 2030 8.0 -fr 2 312 2030 8.0 -fr 2 313 2030 8.0 -fr 2 314 2030 8.0 -fr 2 315 2030 8.0 -fr 2 316 2030 8.0 -fr 2 317 2030 8.0 -fr 2 318 2030 8.0 -fr 2 319 2030 8.0 -fr 2 320 2030 8.0 -fr 2 321 2030 8.0 -fr 2 322 2030 8.0 -fr 2 323 2030 8.0 -fr 2 324 2030 8.0 -fr 2 325 2030 8.0 -fr 2 326 2030 8.0 -fr 2 327 2030 8.0 -fr 2 328 2030 8.0 -fr 2 329 2030 8.0 -fr 2 330 2030 9.0 -fr 2 331 2030 9.0 -fr 2 332 2030 9.0 -fr 2 333 2030 9.0 -fr 2 334 2030 9.0 -fr 2 335 2030 9.0 -fr 2 336 2030 9.0 -it 2 1 2030 0.0 -it 2 2 2030 1.0 -it 2 3 2030 1.0 -it 2 4 2030 1.0 -it 2 5 2030 1.0 -it 2 6 2030 1.0 -it 2 7 2030 1.0 -it 2 8 2030 1.0 -it 2 9 2030 1.0 -it 2 10 2030 1.0 -it 2 11 2030 1.0 -it 2 12 2030 1.0 -it 2 13 2030 1.0 -it 2 14 2030 1.0 -it 2 15 2030 1.0 -it 2 16 2030 1.0 -it 2 17 2030 1.0 -it 2 18 2030 1.0 -it 2 19 2030 1.0 -it 2 20 2030 1.0 -it 2 21 2030 1.0 -it 2 22 2030 2.0 -it 2 23 2030 2.0 -it 2 24 2030 2.0 -it 2 25 2030 2.0 -it 2 26 2030 2.0 -it 2 27 2030 2.0 -it 2 28 2030 2.0 -it 2 29 2030 2.0 -it 2 30 2030 2.0 -it 2 31 2030 2.0 -it 2 32 2030 2.0 -it 2 33 2030 2.0 -it 2 34 2030 2.0 -it 2 35 2030 2.0 -it 2 36 2030 2.0 -it 2 37 2030 2.0 -it 2 38 2030 2.0 -it 2 39 2030 2.0 -it 2 40 2030 2.0 -it 2 41 2030 2.0 -it 2 42 2030 3.0 -it 2 43 2030 3.0 -it 2 44 2030 3.0 -it 2 45 2030 3.0 -it 2 46 2030 3.0 -it 2 47 2030 3.0 -it 2 48 2030 3.0 -it 2 49 2030 3.0 -it 2 50 2030 3.0 -it 2 51 2030 3.0 -it 2 52 2030 3.0 -it 2 53 2030 3.0 -it 2 54 2030 3.0 -it 2 55 2030 3.0 -it 2 56 2030 3.0 -it 2 57 2030 3.0 -it 2 58 2030 3.0 -it 2 59 2030 3.0 -it 2 60 2030 3.0 -it 2 61 2030 3.0 -it 2 62 2030 4.0 -it 2 63 2030 4.0 -it 2 64 2030 4.0 -it 2 65 2030 4.0 -it 2 66 2030 4.0 -it 2 67 2030 4.0 -it 2 68 2030 4.0 -it 2 69 2030 4.0 -it 2 70 2030 4.0 -it 2 71 2030 4.0 -it 2 72 2030 4.0 -it 2 73 2030 4.0 -it 2 74 2030 4.0 -it 2 75 2030 4.0 -it 2 76 2030 4.0 -it 2 77 2030 4.0 -it 2 78 2030 4.0 -it 2 79 2030 4.0 -it 2 80 2030 4.0 -it 2 81 2030 4.0 -it 2 82 2030 5.0 -it 2 83 2030 5.0 -it 2 84 2030 5.0 -it 2 85 2030 5.0 -it 2 86 2030 5.0 -it 2 87 2030 5.0 -it 2 88 2030 5.0 -it 2 89 2030 5.0 -it 2 90 2030 5.0 -it 2 91 2030 5.0 -it 2 92 2030 5.0 -it 2 93 2030 5.0 -it 2 94 2030 5.0 -it 2 95 2030 5.0 -it 2 96 2030 5.0 -it 2 97 2030 5.0 -it 2 98 2030 5.0 -it 2 99 2030 5.0 -it 2 100 2030 5.0 -it 2 101 2030 5.0 -it 2 102 2030 6.0 -it 2 103 2030 6.0 -it 2 104 2030 6.0 -it 2 105 2030 6.0 -it 2 106 2030 6.0 -it 2 107 2030 6.0 -it 2 108 2030 6.0 -it 2 109 2030 6.0 -it 2 110 2030 6.0 -it 2 111 2030 6.0 -it 2 112 2030 6.0 -it 2 113 2030 6.0 -it 2 114 2030 6.0 -it 2 115 2030 6.0 -it 2 116 2030 6.0 -it 2 117 2030 6.0 -it 2 118 2030 6.0 -it 2 119 2030 6.0 -it 2 120 2030 6.0 -it 2 121 2030 6.0 -it 2 122 2030 7.0 -it 2 123 2030 7.0 -it 2 124 2030 7.0 -it 2 125 2030 7.0 -it 2 126 2030 7.0 -it 2 127 2030 7.0 -it 2 128 2030 7.0 -it 2 129 2030 7.0 -it 2 130 2030 7.0 -it 2 131 2030 7.0 -it 2 132 2030 7.0 -it 2 133 2030 7.0 -it 2 134 2030 7.0 -it 2 135 2030 7.0 -it 2 136 2030 7.0 -it 2 137 2030 7.0 -it 2 138 2030 7.0 -it 2 139 2030 7.0 -it 2 140 2030 7.0 -it 2 141 2030 7.0 -it 2 142 2030 8.0 -it 2 143 2030 8.0 -it 2 144 2030 8.0 -it 2 145 2030 8.0 -it 2 146 2030 8.0 -it 2 147 2030 8.0 -it 2 148 2030 8.0 -it 2 149 2030 8.0 -it 2 150 2030 8.0 -it 2 151 2030 8.0 -it 2 152 2030 8.0 -it 2 153 2030 8.0 -it 2 154 2030 8.0 -it 2 155 2030 8.0 -it 2 156 2030 8.0 -it 2 157 2030 8.0 -it 2 158 2030 8.0 -it 2 159 2030 8.0 -it 2 160 2030 8.0 -it 2 161 2030 8.0 -it 2 162 2030 9.0 -it 2 163 2030 9.0 -it 2 164 2030 9.0 -it 2 165 2030 9.0 -it 2 166 2030 9.0 -it 2 167 2030 9.0 -it 2 168 2030 9.0 -it 2 169 2030 0.0 -it 2 170 2030 1.0 -it 2 171 2030 1.0 -it 2 172 2030 1.0 -it 2 173 2030 1.0 -it 2 174 2030 1.0 -it 2 175 2030 1.0 -it 2 176 2030 1.0 -it 2 177 2030 1.0 -it 2 178 2030 1.0 -it 2 179 2030 1.0 -it 2 180 2030 1.0 -it 2 181 2030 1.0 -it 2 182 2030 1.0 -it 2 183 2030 1.0 -it 2 184 2030 1.0 -it 2 185 2030 1.0 -it 2 186 2030 1.0 -it 2 187 2030 1.0 -it 2 188 2030 1.0 -it 2 189 2030 1.0 -it 2 190 2030 2.0 -it 2 191 2030 2.0 -it 2 192 2030 2.0 -it 2 193 2030 2.0 -it 2 194 2030 2.0 -it 2 195 2030 2.0 -it 2 196 2030 2.0 -it 2 197 2030 2.0 -it 2 198 2030 2.0 -it 2 199 2030 2.0 -it 2 200 2030 2.0 -it 2 201 2030 2.0 -it 2 202 2030 2.0 -it 2 203 2030 2.0 -it 2 204 2030 2.0 -it 2 205 2030 2.0 -it 2 206 2030 2.0 -it 2 207 2030 2.0 -it 2 208 2030 2.0 -it 2 209 2030 2.0 -it 2 210 2030 3.0 -it 2 211 2030 3.0 -it 2 212 2030 3.0 -it 2 213 2030 3.0 -it 2 214 2030 3.0 -it 2 215 2030 3.0 -it 2 216 2030 3.0 -it 2 217 2030 3.0 -it 2 218 2030 3.0 -it 2 219 2030 3.0 -it 2 220 2030 3.0 -it 2 221 2030 3.0 -it 2 222 2030 3.0 -it 2 223 2030 3.0 -it 2 224 2030 3.0 -it 2 225 2030 3.0 -it 2 226 2030 3.0 -it 2 227 2030 3.0 -it 2 228 2030 3.0 -it 2 229 2030 3.0 -it 2 230 2030 4.0 -it 2 231 2030 4.0 -it 2 232 2030 4.0 -it 2 233 2030 4.0 -it 2 234 2030 4.0 -it 2 235 2030 4.0 -it 2 236 2030 4.0 -it 2 237 2030 4.0 -it 2 238 2030 4.0 -it 2 239 2030 4.0 -it 2 240 2030 4.0 -it 2 241 2030 4.0 -it 2 242 2030 4.0 -it 2 243 2030 4.0 -it 2 244 2030 4.0 -it 2 245 2030 4.0 -it 2 246 2030 4.0 -it 2 247 2030 4.0 -it 2 248 2030 4.0 -it 2 249 2030 4.0 -it 2 250 2030 5.0 -it 2 251 2030 5.0 -it 2 252 2030 5.0 -it 2 253 2030 5.0 -it 2 254 2030 5.0 -it 2 255 2030 5.0 -it 2 256 2030 5.0 -it 2 257 2030 5.0 -it 2 258 2030 5.0 -it 2 259 2030 5.0 -it 2 260 2030 5.0 -it 2 261 2030 5.0 -it 2 262 2030 5.0 -it 2 263 2030 5.0 -it 2 264 2030 5.0 -it 2 265 2030 5.0 -it 2 266 2030 5.0 -it 2 267 2030 5.0 -it 2 268 2030 5.0 -it 2 269 2030 5.0 -it 2 270 2030 6.0 -it 2 271 2030 6.0 -it 2 272 2030 6.0 -it 2 273 2030 6.0 -it 2 274 2030 6.0 -it 2 275 2030 6.0 -it 2 276 2030 6.0 -it 2 277 2030 6.0 -it 2 278 2030 6.0 -it 2 279 2030 6.0 -it 2 280 2030 6.0 -it 2 281 2030 6.0 -it 2 282 2030 6.0 -it 2 283 2030 6.0 -it 2 284 2030 6.0 -it 2 285 2030 6.0 -it 2 286 2030 6.0 -it 2 287 2030 6.0 -it 2 288 2030 6.0 -it 2 289 2030 6.0 -it 2 290 2030 7.0 -it 2 291 2030 7.0 -it 2 292 2030 7.0 -it 2 293 2030 7.0 -it 2 294 2030 7.0 -it 2 295 2030 7.0 -it 2 296 2030 7.0 -it 2 297 2030 7.0 -it 2 298 2030 7.0 -it 2 299 2030 7.0 -it 2 300 2030 7.0 -it 2 301 2030 7.0 -it 2 302 2030 7.0 -it 2 303 2030 7.0 -it 2 304 2030 7.0 -it 2 305 2030 7.0 -it 2 306 2030 7.0 -it 2 307 2030 7.0 -it 2 308 2030 7.0 -it 2 309 2030 7.0 -it 2 310 2030 8.0 -it 2 311 2030 8.0 -it 2 312 2030 8.0 -it 2 313 2030 8.0 -it 2 314 2030 8.0 -it 2 315 2030 8.0 -it 2 316 2030 8.0 -it 2 317 2030 8.0 -it 2 318 2030 8.0 -it 2 319 2030 8.0 -it 2 320 2030 8.0 -it 2 321 2030 8.0 -it 2 322 2030 8.0 -it 2 323 2030 8.0 -it 2 324 2030 8.0 -it 2 325 2030 8.0 -it 2 326 2030 8.0 -it 2 327 2030 8.0 -it 2 328 2030 8.0 -it 2 329 2030 8.0 -it 2 330 2030 9.0 -it 2 331 2030 9.0 -it 2 332 2030 9.0 -it 2 333 2030 9.0 -it 2 334 2030 9.0 -it 2 335 2030 9.0 -it 2 336 2030 9.0 +area mcYear timeId NODU +de 1 1 0.0 +de 1 2 1.0 +de 1 3 1.0 +de 1 4 1.0 +de 1 5 1.0 +de 1 6 1.0 +de 1 7 1.0 +de 1 8 1.0 +de 1 9 1.0 +de 1 10 1.0 +de 1 11 1.0 +de 1 12 1.0 +de 1 13 1.0 +de 1 14 1.0 +de 1 15 1.0 +de 1 16 1.0 +de 1 17 1.0 +de 1 18 1.0 +de 1 19 1.0 +de 1 20 1.0 +de 1 21 1.0 +de 1 22 2.0 +de 1 23 2.0 +de 1 24 2.0 +de 1 25 2.0 +de 1 26 2.0 +de 1 27 2.0 +de 1 28 2.0 +de 1 29 2.0 +de 1 30 2.0 +de 1 31 2.0 +de 1 32 2.0 +de 1 33 2.0 +de 1 34 2.0 +de 1 35 2.0 +de 1 36 2.0 +de 1 37 2.0 +de 1 38 2.0 +de 1 39 2.0 +de 1 40 2.0 +de 1 41 2.0 +de 1 42 3.0 +de 1 43 3.0 +de 1 44 3.0 +de 1 45 3.0 +de 1 46 3.0 +de 1 47 3.0 +de 1 48 3.0 +de 1 49 3.0 +de 1 50 3.0 +de 1 51 3.0 +de 1 52 3.0 +de 1 53 3.0 +de 1 54 3.0 +de 1 55 3.0 +de 1 56 3.0 +de 1 57 3.0 +de 1 58 3.0 +de 1 59 3.0 +de 1 60 3.0 +de 1 61 3.0 +de 1 62 4.0 +de 1 63 4.0 +de 1 64 4.0 +de 1 65 4.0 +de 1 66 4.0 +de 1 67 4.0 +de 1 68 4.0 +de 1 69 4.0 +de 1 70 4.0 +de 1 71 4.0 +de 1 72 4.0 +de 1 73 4.0 +de 1 74 4.0 +de 1 75 4.0 +de 1 76 4.0 +de 1 77 4.0 +de 1 78 4.0 +de 1 79 4.0 +de 1 80 4.0 +de 1 81 4.0 +de 1 82 5.0 +de 1 83 5.0 +de 1 84 5.0 +de 1 85 5.0 +de 1 86 5.0 +de 1 87 5.0 +de 1 88 5.0 +de 1 89 5.0 +de 1 90 5.0 +de 1 91 5.0 +de 1 92 5.0 +de 1 93 5.0 +de 1 94 5.0 +de 1 95 5.0 +de 1 96 5.0 +de 1 97 5.0 +de 1 98 5.0 +de 1 99 5.0 +de 1 100 5.0 +de 1 101 5.0 +de 1 102 6.0 +de 1 103 6.0 +de 1 104 6.0 +de 1 105 6.0 +de 1 106 6.0 +de 1 107 6.0 +de 1 108 6.0 +de 1 109 6.0 +de 1 110 6.0 +de 1 111 6.0 +de 1 112 6.0 +de 1 113 6.0 +de 1 114 6.0 +de 1 115 6.0 +de 1 116 6.0 +de 1 117 6.0 +de 1 118 6.0 +de 1 119 6.0 +de 1 120 6.0 +de 1 121 6.0 +de 1 122 7.0 +de 1 123 7.0 +de 1 124 7.0 +de 1 125 7.0 +de 1 126 7.0 +de 1 127 7.0 +de 1 128 7.0 +de 1 129 7.0 +de 1 130 7.0 +de 1 131 7.0 +de 1 132 7.0 +de 1 133 7.0 +de 1 134 7.0 +de 1 135 7.0 +de 1 136 7.0 +de 1 137 7.0 +de 1 138 7.0 +de 1 139 7.0 +de 1 140 7.0 +de 1 141 7.0 +de 1 142 8.0 +de 1 143 8.0 +de 1 144 8.0 +de 1 145 8.0 +de 1 146 8.0 +de 1 147 8.0 +de 1 148 8.0 +de 1 149 8.0 +de 1 150 8.0 +de 1 151 8.0 +de 1 152 8.0 +de 1 153 8.0 +de 1 154 8.0 +de 1 155 8.0 +de 1 156 8.0 +de 1 157 8.0 +de 1 158 8.0 +de 1 159 8.0 +de 1 160 8.0 +de 1 161 8.0 +de 1 162 9.0 +de 1 163 9.0 +de 1 164 9.0 +de 1 165 9.0 +de 1 166 9.0 +de 1 167 9.0 +de 1 168 9.0 +de 1 169 0.0 +de 1 170 1.0 +de 1 171 1.0 +de 1 172 1.0 +de 1 173 1.0 +de 1 174 1.0 +de 1 175 1.0 +de 1 176 1.0 +de 1 177 1.0 +de 1 178 1.0 +de 1 179 1.0 +de 1 180 1.0 +de 1 181 1.0 +de 1 182 1.0 +de 1 183 1.0 +de 1 184 1.0 +de 1 185 1.0 +de 1 186 1.0 +de 1 187 1.0 +de 1 188 1.0 +de 1 189 1.0 +de 1 190 2.0 +de 1 191 2.0 +de 1 192 2.0 +de 1 193 2.0 +de 1 194 2.0 +de 1 195 2.0 +de 1 196 2.0 +de 1 197 2.0 +de 1 198 2.0 +de 1 199 2.0 +de 1 200 2.0 +de 1 201 2.0 +de 1 202 2.0 +de 1 203 2.0 +de 1 204 2.0 +de 1 205 2.0 +de 1 206 2.0 +de 1 207 2.0 +de 1 208 2.0 +de 1 209 2.0 +de 1 210 3.0 +de 1 211 3.0 +de 1 212 3.0 +de 1 213 3.0 +de 1 214 3.0 +de 1 215 3.0 +de 1 216 3.0 +de 1 217 3.0 +de 1 218 3.0 +de 1 219 3.0 +de 1 220 3.0 +de 1 221 3.0 +de 1 222 3.0 +de 1 223 3.0 +de 1 224 3.0 +de 1 225 3.0 +de 1 226 3.0 +de 1 227 3.0 +de 1 228 3.0 +de 1 229 3.0 +de 1 230 4.0 +de 1 231 4.0 +de 1 232 4.0 +de 1 233 4.0 +de 1 234 4.0 +de 1 235 4.0 +de 1 236 4.0 +de 1 237 4.0 +de 1 238 4.0 +de 1 239 4.0 +de 1 240 4.0 +de 1 241 4.0 +de 1 242 4.0 +de 1 243 4.0 +de 1 244 4.0 +de 1 245 4.0 +de 1 246 4.0 +de 1 247 4.0 +de 1 248 4.0 +de 1 249 4.0 +de 1 250 5.0 +de 1 251 5.0 +de 1 252 5.0 +de 1 253 5.0 +de 1 254 5.0 +de 1 255 5.0 +de 1 256 5.0 +de 1 257 5.0 +de 1 258 5.0 +de 1 259 5.0 +de 1 260 5.0 +de 1 261 5.0 +de 1 262 5.0 +de 1 263 5.0 +de 1 264 5.0 +de 1 265 5.0 +de 1 266 5.0 +de 1 267 5.0 +de 1 268 5.0 +de 1 269 5.0 +de 1 270 6.0 +de 1 271 6.0 +de 1 272 6.0 +de 1 273 6.0 +de 1 274 6.0 +de 1 275 6.0 +de 1 276 6.0 +de 1 277 6.0 +de 1 278 6.0 +de 1 279 6.0 +de 1 280 6.0 +de 1 281 6.0 +de 1 282 6.0 +de 1 283 6.0 +de 1 284 6.0 +de 1 285 6.0 +de 1 286 6.0 +de 1 287 6.0 +de 1 288 6.0 +de 1 289 6.0 +de 1 290 7.0 +de 1 291 7.0 +de 1 292 7.0 +de 1 293 7.0 +de 1 294 7.0 +de 1 295 7.0 +de 1 296 7.0 +de 1 297 7.0 +de 1 298 7.0 +de 1 299 7.0 +de 1 300 7.0 +de 1 301 7.0 +de 1 302 7.0 +de 1 303 7.0 +de 1 304 7.0 +de 1 305 7.0 +de 1 306 7.0 +de 1 307 7.0 +de 1 308 7.0 +de 1 309 7.0 +de 1 310 8.0 +de 1 311 8.0 +de 1 312 8.0 +de 1 313 8.0 +de 1 314 8.0 +de 1 315 8.0 +de 1 316 8.0 +de 1 317 8.0 +de 1 318 8.0 +de 1 319 8.0 +de 1 320 8.0 +de 1 321 8.0 +de 1 322 8.0 +de 1 323 8.0 +de 1 324 8.0 +de 1 325 8.0 +de 1 326 8.0 +de 1 327 8.0 +de 1 328 8.0 +de 1 329 8.0 +de 1 330 9.0 +de 1 331 9.0 +de 1 332 9.0 +de 1 333 9.0 +de 1 334 9.0 +de 1 335 9.0 +de 1 336 9.0 +es 1 1 0.0 +es 1 2 1.0 +es 1 3 1.0 +es 1 4 1.0 +es 1 5 1.0 +es 1 6 1.0 +es 1 7 1.0 +es 1 8 1.0 +es 1 9 1.0 +es 1 10 1.0 +es 1 11 1.0 +es 1 12 1.0 +es 1 13 1.0 +es 1 14 1.0 +es 1 15 1.0 +es 1 16 1.0 +es 1 17 1.0 +es 1 18 1.0 +es 1 19 1.0 +es 1 20 1.0 +es 1 21 1.0 +es 1 22 2.0 +es 1 23 2.0 +es 1 24 2.0 +es 1 25 2.0 +es 1 26 2.0 +es 1 27 2.0 +es 1 28 2.0 +es 1 29 2.0 +es 1 30 2.0 +es 1 31 2.0 +es 1 32 2.0 +es 1 33 2.0 +es 1 34 2.0 +es 1 35 2.0 +es 1 36 2.0 +es 1 37 2.0 +es 1 38 2.0 +es 1 39 2.0 +es 1 40 2.0 +es 1 41 2.0 +es 1 42 3.0 +es 1 43 3.0 +es 1 44 3.0 +es 1 45 3.0 +es 1 46 3.0 +es 1 47 3.0 +es 1 48 3.0 +es 1 49 3.0 +es 1 50 3.0 +es 1 51 3.0 +es 1 52 3.0 +es 1 53 3.0 +es 1 54 3.0 +es 1 55 3.0 +es 1 56 3.0 +es 1 57 3.0 +es 1 58 3.0 +es 1 59 3.0 +es 1 60 3.0 +es 1 61 3.0 +es 1 62 4.0 +es 1 63 4.0 +es 1 64 4.0 +es 1 65 4.0 +es 1 66 4.0 +es 1 67 4.0 +es 1 68 4.0 +es 1 69 4.0 +es 1 70 4.0 +es 1 71 4.0 +es 1 72 4.0 +es 1 73 4.0 +es 1 74 4.0 +es 1 75 4.0 +es 1 76 4.0 +es 1 77 4.0 +es 1 78 4.0 +es 1 79 4.0 +es 1 80 4.0 +es 1 81 4.0 +es 1 82 5.0 +es 1 83 5.0 +es 1 84 5.0 +es 1 85 5.0 +es 1 86 5.0 +es 1 87 5.0 +es 1 88 5.0 +es 1 89 5.0 +es 1 90 5.0 +es 1 91 5.0 +es 1 92 5.0 +es 1 93 5.0 +es 1 94 5.0 +es 1 95 5.0 +es 1 96 5.0 +es 1 97 5.0 +es 1 98 5.0 +es 1 99 5.0 +es 1 100 5.0 +es 1 101 5.0 +es 1 102 6.0 +es 1 103 6.0 +es 1 104 6.0 +es 1 105 6.0 +es 1 106 6.0 +es 1 107 6.0 +es 1 108 6.0 +es 1 109 6.0 +es 1 110 6.0 +es 1 111 6.0 +es 1 112 6.0 +es 1 113 6.0 +es 1 114 6.0 +es 1 115 6.0 +es 1 116 6.0 +es 1 117 6.0 +es 1 118 6.0 +es 1 119 6.0 +es 1 120 6.0 +es 1 121 6.0 +es 1 122 7.0 +es 1 123 7.0 +es 1 124 7.0 +es 1 125 7.0 +es 1 126 7.0 +es 1 127 7.0 +es 1 128 7.0 +es 1 129 7.0 +es 1 130 7.0 +es 1 131 7.0 +es 1 132 7.0 +es 1 133 7.0 +es 1 134 7.0 +es 1 135 7.0 +es 1 136 7.0 +es 1 137 7.0 +es 1 138 7.0 +es 1 139 7.0 +es 1 140 7.0 +es 1 141 7.0 +es 1 142 8.0 +es 1 143 8.0 +es 1 144 8.0 +es 1 145 8.0 +es 1 146 8.0 +es 1 147 8.0 +es 1 148 8.0 +es 1 149 8.0 +es 1 150 8.0 +es 1 151 8.0 +es 1 152 8.0 +es 1 153 8.0 +es 1 154 8.0 +es 1 155 8.0 +es 1 156 8.0 +es 1 157 8.0 +es 1 158 8.0 +es 1 159 8.0 +es 1 160 8.0 +es 1 161 8.0 +es 1 162 9.0 +es 1 163 9.0 +es 1 164 9.0 +es 1 165 9.0 +es 1 166 9.0 +es 1 167 9.0 +es 1 168 9.0 +es 1 169 0.0 +es 1 170 1.0 +es 1 171 1.0 +es 1 172 1.0 +es 1 173 1.0 +es 1 174 1.0 +es 1 175 1.0 +es 1 176 1.0 +es 1 177 1.0 +es 1 178 1.0 +es 1 179 1.0 +es 1 180 1.0 +es 1 181 1.0 +es 1 182 1.0 +es 1 183 1.0 +es 1 184 1.0 +es 1 185 1.0 +es 1 186 1.0 +es 1 187 1.0 +es 1 188 1.0 +es 1 189 1.0 +es 1 190 2.0 +es 1 191 2.0 +es 1 192 2.0 +es 1 193 2.0 +es 1 194 2.0 +es 1 195 2.0 +es 1 196 2.0 +es 1 197 2.0 +es 1 198 2.0 +es 1 199 2.0 +es 1 200 2.0 +es 1 201 2.0 +es 1 202 2.0 +es 1 203 2.0 +es 1 204 2.0 +es 1 205 2.0 +es 1 206 2.0 +es 1 207 2.0 +es 1 208 2.0 +es 1 209 2.0 +es 1 210 3.0 +es 1 211 3.0 +es 1 212 3.0 +es 1 213 3.0 +es 1 214 3.0 +es 1 215 3.0 +es 1 216 3.0 +es 1 217 3.0 +es 1 218 3.0 +es 1 219 3.0 +es 1 220 3.0 +es 1 221 3.0 +es 1 222 3.0 +es 1 223 3.0 +es 1 224 3.0 +es 1 225 3.0 +es 1 226 3.0 +es 1 227 3.0 +es 1 228 3.0 +es 1 229 3.0 +es 1 230 4.0 +es 1 231 4.0 +es 1 232 4.0 +es 1 233 4.0 +es 1 234 4.0 +es 1 235 4.0 +es 1 236 4.0 +es 1 237 4.0 +es 1 238 4.0 +es 1 239 4.0 +es 1 240 4.0 +es 1 241 4.0 +es 1 242 4.0 +es 1 243 4.0 +es 1 244 4.0 +es 1 245 4.0 +es 1 246 4.0 +es 1 247 4.0 +es 1 248 4.0 +es 1 249 4.0 +es 1 250 5.0 +es 1 251 5.0 +es 1 252 5.0 +es 1 253 5.0 +es 1 254 5.0 +es 1 255 5.0 +es 1 256 5.0 +es 1 257 5.0 +es 1 258 5.0 +es 1 259 5.0 +es 1 260 5.0 +es 1 261 5.0 +es 1 262 5.0 +es 1 263 5.0 +es 1 264 5.0 +es 1 265 5.0 +es 1 266 5.0 +es 1 267 5.0 +es 1 268 5.0 +es 1 269 5.0 +es 1 270 6.0 +es 1 271 6.0 +es 1 272 6.0 +es 1 273 6.0 +es 1 274 6.0 +es 1 275 6.0 +es 1 276 6.0 +es 1 277 6.0 +es 1 278 6.0 +es 1 279 6.0 +es 1 280 6.0 +es 1 281 6.0 +es 1 282 6.0 +es 1 283 6.0 +es 1 284 6.0 +es 1 285 6.0 +es 1 286 6.0 +es 1 287 6.0 +es 1 288 6.0 +es 1 289 6.0 +es 1 290 7.0 +es 1 291 7.0 +es 1 292 7.0 +es 1 293 7.0 +es 1 294 7.0 +es 1 295 7.0 +es 1 296 7.0 +es 1 297 7.0 +es 1 298 7.0 +es 1 299 7.0 +es 1 300 7.0 +es 1 301 7.0 +es 1 302 7.0 +es 1 303 7.0 +es 1 304 7.0 +es 1 305 7.0 +es 1 306 7.0 +es 1 307 7.0 +es 1 308 7.0 +es 1 309 7.0 +es 1 310 8.0 +es 1 311 8.0 +es 1 312 8.0 +es 1 313 8.0 +es 1 314 8.0 +es 1 315 8.0 +es 1 316 8.0 +es 1 317 8.0 +es 1 318 8.0 +es 1 319 8.0 +es 1 320 8.0 +es 1 321 8.0 +es 1 322 8.0 +es 1 323 8.0 +es 1 324 8.0 +es 1 325 8.0 +es 1 326 8.0 +es 1 327 8.0 +es 1 328 8.0 +es 1 329 8.0 +es 1 330 9.0 +es 1 331 9.0 +es 1 332 9.0 +es 1 333 9.0 +es 1 334 9.0 +es 1 335 9.0 +es 1 336 9.0 +fr 1 1 0.0 +fr 1 2 1.0 +fr 1 3 1.0 +fr 1 4 1.0 +fr 1 5 1.0 +fr 1 6 1.0 +fr 1 7 1.0 +fr 1 8 1.0 +fr 1 9 1.0 +fr 1 10 1.0 +fr 1 11 1.0 +fr 1 12 1.0 +fr 1 13 1.0 +fr 1 14 1.0 +fr 1 15 1.0 +fr 1 16 1.0 +fr 1 17 1.0 +fr 1 18 1.0 +fr 1 19 1.0 +fr 1 20 1.0 +fr 1 21 1.0 +fr 1 22 2.0 +fr 1 23 2.0 +fr 1 24 2.0 +fr 1 25 2.0 +fr 1 26 2.0 +fr 1 27 2.0 +fr 1 28 2.0 +fr 1 29 2.0 +fr 1 30 2.0 +fr 1 31 2.0 +fr 1 32 2.0 +fr 1 33 2.0 +fr 1 34 2.0 +fr 1 35 2.0 +fr 1 36 2.0 +fr 1 37 2.0 +fr 1 38 2.0 +fr 1 39 2.0 +fr 1 40 2.0 +fr 1 41 2.0 +fr 1 42 3.0 +fr 1 43 3.0 +fr 1 44 3.0 +fr 1 45 3.0 +fr 1 46 3.0 +fr 1 47 3.0 +fr 1 48 3.0 +fr 1 49 3.0 +fr 1 50 3.0 +fr 1 51 3.0 +fr 1 52 3.0 +fr 1 53 3.0 +fr 1 54 3.0 +fr 1 55 3.0 +fr 1 56 3.0 +fr 1 57 3.0 +fr 1 58 3.0 +fr 1 59 3.0 +fr 1 60 3.0 +fr 1 61 3.0 +fr 1 62 4.0 +fr 1 63 4.0 +fr 1 64 4.0 +fr 1 65 4.0 +fr 1 66 4.0 +fr 1 67 4.0 +fr 1 68 4.0 +fr 1 69 4.0 +fr 1 70 4.0 +fr 1 71 4.0 +fr 1 72 4.0 +fr 1 73 4.0 +fr 1 74 4.0 +fr 1 75 4.0 +fr 1 76 4.0 +fr 1 77 4.0 +fr 1 78 4.0 +fr 1 79 4.0 +fr 1 80 4.0 +fr 1 81 4.0 +fr 1 82 5.0 +fr 1 83 5.0 +fr 1 84 5.0 +fr 1 85 5.0 +fr 1 86 5.0 +fr 1 87 5.0 +fr 1 88 5.0 +fr 1 89 5.0 +fr 1 90 5.0 +fr 1 91 5.0 +fr 1 92 5.0 +fr 1 93 5.0 +fr 1 94 5.0 +fr 1 95 5.0 +fr 1 96 5.0 +fr 1 97 5.0 +fr 1 98 5.0 +fr 1 99 5.0 +fr 1 100 5.0 +fr 1 101 5.0 +fr 1 102 6.0 +fr 1 103 6.0 +fr 1 104 6.0 +fr 1 105 6.0 +fr 1 106 6.0 +fr 1 107 6.0 +fr 1 108 6.0 +fr 1 109 6.0 +fr 1 110 6.0 +fr 1 111 6.0 +fr 1 112 6.0 +fr 1 113 6.0 +fr 1 114 6.0 +fr 1 115 6.0 +fr 1 116 6.0 +fr 1 117 6.0 +fr 1 118 6.0 +fr 1 119 6.0 +fr 1 120 6.0 +fr 1 121 6.0 +fr 1 122 7.0 +fr 1 123 7.0 +fr 1 124 7.0 +fr 1 125 7.0 +fr 1 126 7.0 +fr 1 127 7.0 +fr 1 128 7.0 +fr 1 129 7.0 +fr 1 130 7.0 +fr 1 131 7.0 +fr 1 132 7.0 +fr 1 133 7.0 +fr 1 134 7.0 +fr 1 135 7.0 +fr 1 136 7.0 +fr 1 137 7.0 +fr 1 138 7.0 +fr 1 139 7.0 +fr 1 140 7.0 +fr 1 141 7.0 +fr 1 142 8.0 +fr 1 143 8.0 +fr 1 144 8.0 +fr 1 145 8.0 +fr 1 146 8.0 +fr 1 147 8.0 +fr 1 148 8.0 +fr 1 149 8.0 +fr 1 150 8.0 +fr 1 151 8.0 +fr 1 152 8.0 +fr 1 153 8.0 +fr 1 154 8.0 +fr 1 155 8.0 +fr 1 156 8.0 +fr 1 157 8.0 +fr 1 158 8.0 +fr 1 159 8.0 +fr 1 160 8.0 +fr 1 161 8.0 +fr 1 162 9.0 +fr 1 163 9.0 +fr 1 164 9.0 +fr 1 165 9.0 +fr 1 166 9.0 +fr 1 167 9.0 +fr 1 168 9.0 +fr 1 169 0.0 +fr 1 170 1.0 +fr 1 171 1.0 +fr 1 172 1.0 +fr 1 173 1.0 +fr 1 174 1.0 +fr 1 175 1.0 +fr 1 176 1.0 +fr 1 177 1.0 +fr 1 178 1.0 +fr 1 179 1.0 +fr 1 180 1.0 +fr 1 181 1.0 +fr 1 182 1.0 +fr 1 183 1.0 +fr 1 184 1.0 +fr 1 185 1.0 +fr 1 186 1.0 +fr 1 187 1.0 +fr 1 188 1.0 +fr 1 189 1.0 +fr 1 190 2.0 +fr 1 191 2.0 +fr 1 192 2.0 +fr 1 193 2.0 +fr 1 194 2.0 +fr 1 195 2.0 +fr 1 196 2.0 +fr 1 197 2.0 +fr 1 198 2.0 +fr 1 199 2.0 +fr 1 200 2.0 +fr 1 201 2.0 +fr 1 202 2.0 +fr 1 203 2.0 +fr 1 204 2.0 +fr 1 205 2.0 +fr 1 206 2.0 +fr 1 207 2.0 +fr 1 208 2.0 +fr 1 209 2.0 +fr 1 210 3.0 +fr 1 211 3.0 +fr 1 212 3.0 +fr 1 213 3.0 +fr 1 214 3.0 +fr 1 215 3.0 +fr 1 216 3.0 +fr 1 217 3.0 +fr 1 218 3.0 +fr 1 219 3.0 +fr 1 220 3.0 +fr 1 221 3.0 +fr 1 222 3.0 +fr 1 223 3.0 +fr 1 224 3.0 +fr 1 225 3.0 +fr 1 226 3.0 +fr 1 227 3.0 +fr 1 228 3.0 +fr 1 229 3.0 +fr 1 230 4.0 +fr 1 231 4.0 +fr 1 232 4.0 +fr 1 233 4.0 +fr 1 234 4.0 +fr 1 235 4.0 +fr 1 236 4.0 +fr 1 237 4.0 +fr 1 238 4.0 +fr 1 239 4.0 +fr 1 240 4.0 +fr 1 241 4.0 +fr 1 242 4.0 +fr 1 243 4.0 +fr 1 244 4.0 +fr 1 245 4.0 +fr 1 246 4.0 +fr 1 247 4.0 +fr 1 248 4.0 +fr 1 249 4.0 +fr 1 250 5.0 +fr 1 251 5.0 +fr 1 252 5.0 +fr 1 253 5.0 +fr 1 254 5.0 +fr 1 255 5.0 +fr 1 256 5.0 +fr 1 257 5.0 +fr 1 258 5.0 +fr 1 259 5.0 +fr 1 260 5.0 +fr 1 261 5.0 +fr 1 262 5.0 +fr 1 263 5.0 +fr 1 264 5.0 +fr 1 265 5.0 +fr 1 266 5.0 +fr 1 267 5.0 +fr 1 268 5.0 +fr 1 269 5.0 +fr 1 270 6.0 +fr 1 271 6.0 +fr 1 272 6.0 +fr 1 273 6.0 +fr 1 274 6.0 +fr 1 275 6.0 +fr 1 276 6.0 +fr 1 277 6.0 +fr 1 278 6.0 +fr 1 279 6.0 +fr 1 280 6.0 +fr 1 281 6.0 +fr 1 282 6.0 +fr 1 283 6.0 +fr 1 284 6.0 +fr 1 285 6.0 +fr 1 286 6.0 +fr 1 287 6.0 +fr 1 288 6.0 +fr 1 289 6.0 +fr 1 290 7.0 +fr 1 291 7.0 +fr 1 292 7.0 +fr 1 293 7.0 +fr 1 294 7.0 +fr 1 295 7.0 +fr 1 296 7.0 +fr 1 297 7.0 +fr 1 298 7.0 +fr 1 299 7.0 +fr 1 300 7.0 +fr 1 301 7.0 +fr 1 302 7.0 +fr 1 303 7.0 +fr 1 304 7.0 +fr 1 305 7.0 +fr 1 306 7.0 +fr 1 307 7.0 +fr 1 308 7.0 +fr 1 309 7.0 +fr 1 310 8.0 +fr 1 311 8.0 +fr 1 312 8.0 +fr 1 313 8.0 +fr 1 314 8.0 +fr 1 315 8.0 +fr 1 316 8.0 +fr 1 317 8.0 +fr 1 318 8.0 +fr 1 319 8.0 +fr 1 320 8.0 +fr 1 321 8.0 +fr 1 322 8.0 +fr 1 323 8.0 +fr 1 324 8.0 +fr 1 325 8.0 +fr 1 326 8.0 +fr 1 327 8.0 +fr 1 328 8.0 +fr 1 329 8.0 +fr 1 330 9.0 +fr 1 331 9.0 +fr 1 332 9.0 +fr 1 333 9.0 +fr 1 334 9.0 +fr 1 335 9.0 +fr 1 336 9.0 +it 1 1 0.0 +it 1 2 1.0 +it 1 3 1.0 +it 1 4 1.0 +it 1 5 1.0 +it 1 6 1.0 +it 1 7 1.0 +it 1 8 1.0 +it 1 9 1.0 +it 1 10 1.0 +it 1 11 1.0 +it 1 12 1.0 +it 1 13 1.0 +it 1 14 1.0 +it 1 15 1.0 +it 1 16 1.0 +it 1 17 1.0 +it 1 18 1.0 +it 1 19 1.0 +it 1 20 1.0 +it 1 21 1.0 +it 1 22 2.0 +it 1 23 2.0 +it 1 24 2.0 +it 1 25 2.0 +it 1 26 2.0 +it 1 27 2.0 +it 1 28 2.0 +it 1 29 2.0 +it 1 30 2.0 +it 1 31 2.0 +it 1 32 2.0 +it 1 33 2.0 +it 1 34 2.0 +it 1 35 2.0 +it 1 36 2.0 +it 1 37 2.0 +it 1 38 2.0 +it 1 39 2.0 +it 1 40 2.0 +it 1 41 2.0 +it 1 42 3.0 +it 1 43 3.0 +it 1 44 3.0 +it 1 45 3.0 +it 1 46 3.0 +it 1 47 3.0 +it 1 48 3.0 +it 1 49 3.0 +it 1 50 3.0 +it 1 51 3.0 +it 1 52 3.0 +it 1 53 3.0 +it 1 54 3.0 +it 1 55 3.0 +it 1 56 3.0 +it 1 57 3.0 +it 1 58 3.0 +it 1 59 3.0 +it 1 60 3.0 +it 1 61 3.0 +it 1 62 4.0 +it 1 63 4.0 +it 1 64 4.0 +it 1 65 4.0 +it 1 66 4.0 +it 1 67 4.0 +it 1 68 4.0 +it 1 69 4.0 +it 1 70 4.0 +it 1 71 4.0 +it 1 72 4.0 +it 1 73 4.0 +it 1 74 4.0 +it 1 75 4.0 +it 1 76 4.0 +it 1 77 4.0 +it 1 78 4.0 +it 1 79 4.0 +it 1 80 4.0 +it 1 81 4.0 +it 1 82 5.0 +it 1 83 5.0 +it 1 84 5.0 +it 1 85 5.0 +it 1 86 5.0 +it 1 87 5.0 +it 1 88 5.0 +it 1 89 5.0 +it 1 90 5.0 +it 1 91 5.0 +it 1 92 5.0 +it 1 93 5.0 +it 1 94 5.0 +it 1 95 5.0 +it 1 96 5.0 +it 1 97 5.0 +it 1 98 5.0 +it 1 99 5.0 +it 1 100 5.0 +it 1 101 5.0 +it 1 102 6.0 +it 1 103 6.0 +it 1 104 6.0 +it 1 105 6.0 +it 1 106 6.0 +it 1 107 6.0 +it 1 108 6.0 +it 1 109 6.0 +it 1 110 6.0 +it 1 111 6.0 +it 1 112 6.0 +it 1 113 6.0 +it 1 114 6.0 +it 1 115 6.0 +it 1 116 6.0 +it 1 117 6.0 +it 1 118 6.0 +it 1 119 6.0 +it 1 120 6.0 +it 1 121 6.0 +it 1 122 7.0 +it 1 123 7.0 +it 1 124 7.0 +it 1 125 7.0 +it 1 126 7.0 +it 1 127 7.0 +it 1 128 7.0 +it 1 129 7.0 +it 1 130 7.0 +it 1 131 7.0 +it 1 132 7.0 +it 1 133 7.0 +it 1 134 7.0 +it 1 135 7.0 +it 1 136 7.0 +it 1 137 7.0 +it 1 138 7.0 +it 1 139 7.0 +it 1 140 7.0 +it 1 141 7.0 +it 1 142 8.0 +it 1 143 8.0 +it 1 144 8.0 +it 1 145 8.0 +it 1 146 8.0 +it 1 147 8.0 +it 1 148 8.0 +it 1 149 8.0 +it 1 150 8.0 +it 1 151 8.0 +it 1 152 8.0 +it 1 153 8.0 +it 1 154 8.0 +it 1 155 8.0 +it 1 156 8.0 +it 1 157 8.0 +it 1 158 8.0 +it 1 159 8.0 +it 1 160 8.0 +it 1 161 8.0 +it 1 162 9.0 +it 1 163 9.0 +it 1 164 9.0 +it 1 165 9.0 +it 1 166 9.0 +it 1 167 9.0 +it 1 168 9.0 +it 1 169 0.0 +it 1 170 1.0 +it 1 171 1.0 +it 1 172 1.0 +it 1 173 1.0 +it 1 174 1.0 +it 1 175 1.0 +it 1 176 1.0 +it 1 177 1.0 +it 1 178 1.0 +it 1 179 1.0 +it 1 180 1.0 +it 1 181 1.0 +it 1 182 1.0 +it 1 183 1.0 +it 1 184 1.0 +it 1 185 1.0 +it 1 186 1.0 +it 1 187 1.0 +it 1 188 1.0 +it 1 189 1.0 +it 1 190 2.0 +it 1 191 2.0 +it 1 192 2.0 +it 1 193 2.0 +it 1 194 2.0 +it 1 195 2.0 +it 1 196 2.0 +it 1 197 2.0 +it 1 198 2.0 +it 1 199 2.0 +it 1 200 2.0 +it 1 201 2.0 +it 1 202 2.0 +it 1 203 2.0 +it 1 204 2.0 +it 1 205 2.0 +it 1 206 2.0 +it 1 207 2.0 +it 1 208 2.0 +it 1 209 2.0 +it 1 210 3.0 +it 1 211 3.0 +it 1 212 3.0 +it 1 213 3.0 +it 1 214 3.0 +it 1 215 3.0 +it 1 216 3.0 +it 1 217 3.0 +it 1 218 3.0 +it 1 219 3.0 +it 1 220 3.0 +it 1 221 3.0 +it 1 222 3.0 +it 1 223 3.0 +it 1 224 3.0 +it 1 225 3.0 +it 1 226 3.0 +it 1 227 3.0 +it 1 228 3.0 +it 1 229 3.0 +it 1 230 4.0 +it 1 231 4.0 +it 1 232 4.0 +it 1 233 4.0 +it 1 234 4.0 +it 1 235 4.0 +it 1 236 4.0 +it 1 237 4.0 +it 1 238 4.0 +it 1 239 4.0 +it 1 240 4.0 +it 1 241 4.0 +it 1 242 4.0 +it 1 243 4.0 +it 1 244 4.0 +it 1 245 4.0 +it 1 246 4.0 +it 1 247 4.0 +it 1 248 4.0 +it 1 249 4.0 +it 1 250 5.0 +it 1 251 5.0 +it 1 252 5.0 +it 1 253 5.0 +it 1 254 5.0 +it 1 255 5.0 +it 1 256 5.0 +it 1 257 5.0 +it 1 258 5.0 +it 1 259 5.0 +it 1 260 5.0 +it 1 261 5.0 +it 1 262 5.0 +it 1 263 5.0 +it 1 264 5.0 +it 1 265 5.0 +it 1 266 5.0 +it 1 267 5.0 +it 1 268 5.0 +it 1 269 5.0 +it 1 270 6.0 +it 1 271 6.0 +it 1 272 6.0 +it 1 273 6.0 +it 1 274 6.0 +it 1 275 6.0 +it 1 276 6.0 +it 1 277 6.0 +it 1 278 6.0 +it 1 279 6.0 +it 1 280 6.0 +it 1 281 6.0 +it 1 282 6.0 +it 1 283 6.0 +it 1 284 6.0 +it 1 285 6.0 +it 1 286 6.0 +it 1 287 6.0 +it 1 288 6.0 +it 1 289 6.0 +it 1 290 7.0 +it 1 291 7.0 +it 1 292 7.0 +it 1 293 7.0 +it 1 294 7.0 +it 1 295 7.0 +it 1 296 7.0 +it 1 297 7.0 +it 1 298 7.0 +it 1 299 7.0 +it 1 300 7.0 +it 1 301 7.0 +it 1 302 7.0 +it 1 303 7.0 +it 1 304 7.0 +it 1 305 7.0 +it 1 306 7.0 +it 1 307 7.0 +it 1 308 7.0 +it 1 309 7.0 +it 1 310 8.0 +it 1 311 8.0 +it 1 312 8.0 +it 1 313 8.0 +it 1 314 8.0 +it 1 315 8.0 +it 1 316 8.0 +it 1 317 8.0 +it 1 318 8.0 +it 1 319 8.0 +it 1 320 8.0 +it 1 321 8.0 +it 1 322 8.0 +it 1 323 8.0 +it 1 324 8.0 +it 1 325 8.0 +it 1 326 8.0 +it 1 327 8.0 +it 1 328 8.0 +it 1 329 8.0 +it 1 330 9.0 +it 1 331 9.0 +it 1 332 9.0 +it 1 333 9.0 +it 1 334 9.0 +it 1 335 9.0 +it 1 336 9.0 +de 2 1 0.0 +de 2 2 1.0 +de 2 3 1.0 +de 2 4 1.0 +de 2 5 1.0 +de 2 6 1.0 +de 2 7 1.0 +de 2 8 1.0 +de 2 9 1.0 +de 2 10 1.0 +de 2 11 1.0 +de 2 12 1.0 +de 2 13 1.0 +de 2 14 1.0 +de 2 15 1.0 +de 2 16 1.0 +de 2 17 1.0 +de 2 18 1.0 +de 2 19 1.0 +de 2 20 1.0 +de 2 21 1.0 +de 2 22 2.0 +de 2 23 2.0 +de 2 24 2.0 +de 2 25 2.0 +de 2 26 2.0 +de 2 27 2.0 +de 2 28 2.0 +de 2 29 2.0 +de 2 30 2.0 +de 2 31 2.0 +de 2 32 2.0 +de 2 33 2.0 +de 2 34 2.0 +de 2 35 2.0 +de 2 36 2.0 +de 2 37 2.0 +de 2 38 2.0 +de 2 39 2.0 +de 2 40 2.0 +de 2 41 2.0 +de 2 42 3.0 +de 2 43 3.0 +de 2 44 3.0 +de 2 45 3.0 +de 2 46 3.0 +de 2 47 3.0 +de 2 48 3.0 +de 2 49 3.0 +de 2 50 3.0 +de 2 51 3.0 +de 2 52 3.0 +de 2 53 3.0 +de 2 54 3.0 +de 2 55 3.0 +de 2 56 3.0 +de 2 57 3.0 +de 2 58 3.0 +de 2 59 3.0 +de 2 60 3.0 +de 2 61 3.0 +de 2 62 4.0 +de 2 63 4.0 +de 2 64 4.0 +de 2 65 4.0 +de 2 66 4.0 +de 2 67 4.0 +de 2 68 4.0 +de 2 69 4.0 +de 2 70 4.0 +de 2 71 4.0 +de 2 72 4.0 +de 2 73 4.0 +de 2 74 4.0 +de 2 75 4.0 +de 2 76 4.0 +de 2 77 4.0 +de 2 78 4.0 +de 2 79 4.0 +de 2 80 4.0 +de 2 81 4.0 +de 2 82 5.0 +de 2 83 5.0 +de 2 84 5.0 +de 2 85 5.0 +de 2 86 5.0 +de 2 87 5.0 +de 2 88 5.0 +de 2 89 5.0 +de 2 90 5.0 +de 2 91 5.0 +de 2 92 5.0 +de 2 93 5.0 +de 2 94 5.0 +de 2 95 5.0 +de 2 96 5.0 +de 2 97 5.0 +de 2 98 5.0 +de 2 99 5.0 +de 2 100 5.0 +de 2 101 5.0 +de 2 102 6.0 +de 2 103 6.0 +de 2 104 6.0 +de 2 105 6.0 +de 2 106 6.0 +de 2 107 6.0 +de 2 108 6.0 +de 2 109 6.0 +de 2 110 6.0 +de 2 111 6.0 +de 2 112 6.0 +de 2 113 6.0 +de 2 114 6.0 +de 2 115 6.0 +de 2 116 6.0 +de 2 117 6.0 +de 2 118 6.0 +de 2 119 6.0 +de 2 120 6.0 +de 2 121 6.0 +de 2 122 7.0 +de 2 123 7.0 +de 2 124 7.0 +de 2 125 7.0 +de 2 126 7.0 +de 2 127 7.0 +de 2 128 7.0 +de 2 129 7.0 +de 2 130 7.0 +de 2 131 7.0 +de 2 132 7.0 +de 2 133 7.0 +de 2 134 7.0 +de 2 135 7.0 +de 2 136 7.0 +de 2 137 7.0 +de 2 138 7.0 +de 2 139 7.0 +de 2 140 7.0 +de 2 141 7.0 +de 2 142 8.0 +de 2 143 8.0 +de 2 144 8.0 +de 2 145 8.0 +de 2 146 8.0 +de 2 147 8.0 +de 2 148 8.0 +de 2 149 8.0 +de 2 150 8.0 +de 2 151 8.0 +de 2 152 8.0 +de 2 153 8.0 +de 2 154 8.0 +de 2 155 8.0 +de 2 156 8.0 +de 2 157 8.0 +de 2 158 8.0 +de 2 159 8.0 +de 2 160 8.0 +de 2 161 8.0 +de 2 162 9.0 +de 2 163 9.0 +de 2 164 9.0 +de 2 165 9.0 +de 2 166 9.0 +de 2 167 9.0 +de 2 168 9.0 +de 2 169 0.0 +de 2 170 1.0 +de 2 171 1.0 +de 2 172 1.0 +de 2 173 1.0 +de 2 174 1.0 +de 2 175 1.0 +de 2 176 1.0 +de 2 177 1.0 +de 2 178 1.0 +de 2 179 1.0 +de 2 180 1.0 +de 2 181 1.0 +de 2 182 1.0 +de 2 183 1.0 +de 2 184 1.0 +de 2 185 1.0 +de 2 186 1.0 +de 2 187 1.0 +de 2 188 1.0 +de 2 189 1.0 +de 2 190 2.0 +de 2 191 2.0 +de 2 192 2.0 +de 2 193 2.0 +de 2 194 2.0 +de 2 195 2.0 +de 2 196 2.0 +de 2 197 2.0 +de 2 198 2.0 +de 2 199 2.0 +de 2 200 2.0 +de 2 201 2.0 +de 2 202 2.0 +de 2 203 2.0 +de 2 204 2.0 +de 2 205 2.0 +de 2 206 2.0 +de 2 207 2.0 +de 2 208 2.0 +de 2 209 2.0 +de 2 210 3.0 +de 2 211 3.0 +de 2 212 3.0 +de 2 213 3.0 +de 2 214 3.0 +de 2 215 3.0 +de 2 216 3.0 +de 2 217 3.0 +de 2 218 3.0 +de 2 219 3.0 +de 2 220 3.0 +de 2 221 3.0 +de 2 222 3.0 +de 2 223 3.0 +de 2 224 3.0 +de 2 225 3.0 +de 2 226 3.0 +de 2 227 3.0 +de 2 228 3.0 +de 2 229 3.0 +de 2 230 4.0 +de 2 231 4.0 +de 2 232 4.0 +de 2 233 4.0 +de 2 234 4.0 +de 2 235 4.0 +de 2 236 4.0 +de 2 237 4.0 +de 2 238 4.0 +de 2 239 4.0 +de 2 240 4.0 +de 2 241 4.0 +de 2 242 4.0 +de 2 243 4.0 +de 2 244 4.0 +de 2 245 4.0 +de 2 246 4.0 +de 2 247 4.0 +de 2 248 4.0 +de 2 249 4.0 +de 2 250 5.0 +de 2 251 5.0 +de 2 252 5.0 +de 2 253 5.0 +de 2 254 5.0 +de 2 255 5.0 +de 2 256 5.0 +de 2 257 5.0 +de 2 258 5.0 +de 2 259 5.0 +de 2 260 5.0 +de 2 261 5.0 +de 2 262 5.0 +de 2 263 5.0 +de 2 264 5.0 +de 2 265 5.0 +de 2 266 5.0 +de 2 267 5.0 +de 2 268 5.0 +de 2 269 5.0 +de 2 270 6.0 +de 2 271 6.0 +de 2 272 6.0 +de 2 273 6.0 +de 2 274 6.0 +de 2 275 6.0 +de 2 276 6.0 +de 2 277 6.0 +de 2 278 6.0 +de 2 279 6.0 +de 2 280 6.0 +de 2 281 6.0 +de 2 282 6.0 +de 2 283 6.0 +de 2 284 6.0 +de 2 285 6.0 +de 2 286 6.0 +de 2 287 6.0 +de 2 288 6.0 +de 2 289 6.0 +de 2 290 7.0 +de 2 291 7.0 +de 2 292 7.0 +de 2 293 7.0 +de 2 294 7.0 +de 2 295 7.0 +de 2 296 7.0 +de 2 297 7.0 +de 2 298 7.0 +de 2 299 7.0 +de 2 300 7.0 +de 2 301 7.0 +de 2 302 7.0 +de 2 303 7.0 +de 2 304 7.0 +de 2 305 7.0 +de 2 306 7.0 +de 2 307 7.0 +de 2 308 7.0 +de 2 309 7.0 +de 2 310 8.0 +de 2 311 8.0 +de 2 312 8.0 +de 2 313 8.0 +de 2 314 8.0 +de 2 315 8.0 +de 2 316 8.0 +de 2 317 8.0 +de 2 318 8.0 +de 2 319 8.0 +de 2 320 8.0 +de 2 321 8.0 +de 2 322 8.0 +de 2 323 8.0 +de 2 324 8.0 +de 2 325 8.0 +de 2 326 8.0 +de 2 327 8.0 +de 2 328 8.0 +de 2 329 8.0 +de 2 330 9.0 +de 2 331 9.0 +de 2 332 9.0 +de 2 333 9.0 +de 2 334 9.0 +de 2 335 9.0 +de 2 336 9.0 +es 2 1 0.0 +es 2 2 1.0 +es 2 3 1.0 +es 2 4 1.0 +es 2 5 1.0 +es 2 6 1.0 +es 2 7 1.0 +es 2 8 1.0 +es 2 9 1.0 +es 2 10 1.0 +es 2 11 1.0 +es 2 12 1.0 +es 2 13 1.0 +es 2 14 1.0 +es 2 15 1.0 +es 2 16 1.0 +es 2 17 1.0 +es 2 18 1.0 +es 2 19 1.0 +es 2 20 1.0 +es 2 21 1.0 +es 2 22 2.0 +es 2 23 2.0 +es 2 24 2.0 +es 2 25 2.0 +es 2 26 2.0 +es 2 27 2.0 +es 2 28 2.0 +es 2 29 2.0 +es 2 30 2.0 +es 2 31 2.0 +es 2 32 2.0 +es 2 33 2.0 +es 2 34 2.0 +es 2 35 2.0 +es 2 36 2.0 +es 2 37 2.0 +es 2 38 2.0 +es 2 39 2.0 +es 2 40 2.0 +es 2 41 2.0 +es 2 42 3.0 +es 2 43 3.0 +es 2 44 3.0 +es 2 45 3.0 +es 2 46 3.0 +es 2 47 3.0 +es 2 48 3.0 +es 2 49 3.0 +es 2 50 3.0 +es 2 51 3.0 +es 2 52 3.0 +es 2 53 3.0 +es 2 54 3.0 +es 2 55 3.0 +es 2 56 3.0 +es 2 57 3.0 +es 2 58 3.0 +es 2 59 3.0 +es 2 60 3.0 +es 2 61 3.0 +es 2 62 4.0 +es 2 63 4.0 +es 2 64 4.0 +es 2 65 4.0 +es 2 66 4.0 +es 2 67 4.0 +es 2 68 4.0 +es 2 69 4.0 +es 2 70 4.0 +es 2 71 4.0 +es 2 72 4.0 +es 2 73 4.0 +es 2 74 4.0 +es 2 75 4.0 +es 2 76 4.0 +es 2 77 4.0 +es 2 78 4.0 +es 2 79 4.0 +es 2 80 4.0 +es 2 81 4.0 +es 2 82 5.0 +es 2 83 5.0 +es 2 84 5.0 +es 2 85 5.0 +es 2 86 5.0 +es 2 87 5.0 +es 2 88 5.0 +es 2 89 5.0 +es 2 90 5.0 +es 2 91 5.0 +es 2 92 5.0 +es 2 93 5.0 +es 2 94 5.0 +es 2 95 5.0 +es 2 96 5.0 +es 2 97 5.0 +es 2 98 5.0 +es 2 99 5.0 +es 2 100 5.0 +es 2 101 5.0 +es 2 102 6.0 +es 2 103 6.0 +es 2 104 6.0 +es 2 105 6.0 +es 2 106 6.0 +es 2 107 6.0 +es 2 108 6.0 +es 2 109 6.0 +es 2 110 6.0 +es 2 111 6.0 +es 2 112 6.0 +es 2 113 6.0 +es 2 114 6.0 +es 2 115 6.0 +es 2 116 6.0 +es 2 117 6.0 +es 2 118 6.0 +es 2 119 6.0 +es 2 120 6.0 +es 2 121 6.0 +es 2 122 7.0 +es 2 123 7.0 +es 2 124 7.0 +es 2 125 7.0 +es 2 126 7.0 +es 2 127 7.0 +es 2 128 7.0 +es 2 129 7.0 +es 2 130 7.0 +es 2 131 7.0 +es 2 132 7.0 +es 2 133 7.0 +es 2 134 7.0 +es 2 135 7.0 +es 2 136 7.0 +es 2 137 7.0 +es 2 138 7.0 +es 2 139 7.0 +es 2 140 7.0 +es 2 141 7.0 +es 2 142 8.0 +es 2 143 8.0 +es 2 144 8.0 +es 2 145 8.0 +es 2 146 8.0 +es 2 147 8.0 +es 2 148 8.0 +es 2 149 8.0 +es 2 150 8.0 +es 2 151 8.0 +es 2 152 8.0 +es 2 153 8.0 +es 2 154 8.0 +es 2 155 8.0 +es 2 156 8.0 +es 2 157 8.0 +es 2 158 8.0 +es 2 159 8.0 +es 2 160 8.0 +es 2 161 8.0 +es 2 162 9.0 +es 2 163 9.0 +es 2 164 9.0 +es 2 165 9.0 +es 2 166 9.0 +es 2 167 9.0 +es 2 168 9.0 +es 2 169 0.0 +es 2 170 1.0 +es 2 171 1.0 +es 2 172 1.0 +es 2 173 1.0 +es 2 174 1.0 +es 2 175 1.0 +es 2 176 1.0 +es 2 177 1.0 +es 2 178 1.0 +es 2 179 1.0 +es 2 180 1.0 +es 2 181 1.0 +es 2 182 1.0 +es 2 183 1.0 +es 2 184 1.0 +es 2 185 1.0 +es 2 186 1.0 +es 2 187 1.0 +es 2 188 1.0 +es 2 189 1.0 +es 2 190 2.0 +es 2 191 2.0 +es 2 192 2.0 +es 2 193 2.0 +es 2 194 2.0 +es 2 195 2.0 +es 2 196 2.0 +es 2 197 2.0 +es 2 198 2.0 +es 2 199 2.0 +es 2 200 2.0 +es 2 201 2.0 +es 2 202 2.0 +es 2 203 2.0 +es 2 204 2.0 +es 2 205 2.0 +es 2 206 2.0 +es 2 207 2.0 +es 2 208 2.0 +es 2 209 2.0 +es 2 210 3.0 +es 2 211 3.0 +es 2 212 3.0 +es 2 213 3.0 +es 2 214 3.0 +es 2 215 3.0 +es 2 216 3.0 +es 2 217 3.0 +es 2 218 3.0 +es 2 219 3.0 +es 2 220 3.0 +es 2 221 3.0 +es 2 222 3.0 +es 2 223 3.0 +es 2 224 3.0 +es 2 225 3.0 +es 2 226 3.0 +es 2 227 3.0 +es 2 228 3.0 +es 2 229 3.0 +es 2 230 4.0 +es 2 231 4.0 +es 2 232 4.0 +es 2 233 4.0 +es 2 234 4.0 +es 2 235 4.0 +es 2 236 4.0 +es 2 237 4.0 +es 2 238 4.0 +es 2 239 4.0 +es 2 240 4.0 +es 2 241 4.0 +es 2 242 4.0 +es 2 243 4.0 +es 2 244 4.0 +es 2 245 4.0 +es 2 246 4.0 +es 2 247 4.0 +es 2 248 4.0 +es 2 249 4.0 +es 2 250 5.0 +es 2 251 5.0 +es 2 252 5.0 +es 2 253 5.0 +es 2 254 5.0 +es 2 255 5.0 +es 2 256 5.0 +es 2 257 5.0 +es 2 258 5.0 +es 2 259 5.0 +es 2 260 5.0 +es 2 261 5.0 +es 2 262 5.0 +es 2 263 5.0 +es 2 264 5.0 +es 2 265 5.0 +es 2 266 5.0 +es 2 267 5.0 +es 2 268 5.0 +es 2 269 5.0 +es 2 270 6.0 +es 2 271 6.0 +es 2 272 6.0 +es 2 273 6.0 +es 2 274 6.0 +es 2 275 6.0 +es 2 276 6.0 +es 2 277 6.0 +es 2 278 6.0 +es 2 279 6.0 +es 2 280 6.0 +es 2 281 6.0 +es 2 282 6.0 +es 2 283 6.0 +es 2 284 6.0 +es 2 285 6.0 +es 2 286 6.0 +es 2 287 6.0 +es 2 288 6.0 +es 2 289 6.0 +es 2 290 7.0 +es 2 291 7.0 +es 2 292 7.0 +es 2 293 7.0 +es 2 294 7.0 +es 2 295 7.0 +es 2 296 7.0 +es 2 297 7.0 +es 2 298 7.0 +es 2 299 7.0 +es 2 300 7.0 +es 2 301 7.0 +es 2 302 7.0 +es 2 303 7.0 +es 2 304 7.0 +es 2 305 7.0 +es 2 306 7.0 +es 2 307 7.0 +es 2 308 7.0 +es 2 309 7.0 +es 2 310 8.0 +es 2 311 8.0 +es 2 312 8.0 +es 2 313 8.0 +es 2 314 8.0 +es 2 315 8.0 +es 2 316 8.0 +es 2 317 8.0 +es 2 318 8.0 +es 2 319 8.0 +es 2 320 8.0 +es 2 321 8.0 +es 2 322 8.0 +es 2 323 8.0 +es 2 324 8.0 +es 2 325 8.0 +es 2 326 8.0 +es 2 327 8.0 +es 2 328 8.0 +es 2 329 8.0 +es 2 330 9.0 +es 2 331 9.0 +es 2 332 9.0 +es 2 333 9.0 +es 2 334 9.0 +es 2 335 9.0 +es 2 336 9.0 +fr 2 1 0.0 +fr 2 2 1.0 +fr 2 3 1.0 +fr 2 4 1.0 +fr 2 5 1.0 +fr 2 6 1.0 +fr 2 7 1.0 +fr 2 8 1.0 +fr 2 9 1.0 +fr 2 10 1.0 +fr 2 11 1.0 +fr 2 12 1.0 +fr 2 13 1.0 +fr 2 14 1.0 +fr 2 15 1.0 +fr 2 16 1.0 +fr 2 17 1.0 +fr 2 18 1.0 +fr 2 19 1.0 +fr 2 20 1.0 +fr 2 21 1.0 +fr 2 22 2.0 +fr 2 23 2.0 +fr 2 24 2.0 +fr 2 25 2.0 +fr 2 26 2.0 +fr 2 27 2.0 +fr 2 28 2.0 +fr 2 29 2.0 +fr 2 30 2.0 +fr 2 31 2.0 +fr 2 32 2.0 +fr 2 33 2.0 +fr 2 34 2.0 +fr 2 35 2.0 +fr 2 36 2.0 +fr 2 37 2.0 +fr 2 38 2.0 +fr 2 39 2.0 +fr 2 40 2.0 +fr 2 41 2.0 +fr 2 42 3.0 +fr 2 43 3.0 +fr 2 44 3.0 +fr 2 45 3.0 +fr 2 46 3.0 +fr 2 47 3.0 +fr 2 48 3.0 +fr 2 49 3.0 +fr 2 50 3.0 +fr 2 51 3.0 +fr 2 52 3.0 +fr 2 53 3.0 +fr 2 54 3.0 +fr 2 55 3.0 +fr 2 56 3.0 +fr 2 57 3.0 +fr 2 58 3.0 +fr 2 59 3.0 +fr 2 60 3.0 +fr 2 61 3.0 +fr 2 62 4.0 +fr 2 63 4.0 +fr 2 64 4.0 +fr 2 65 4.0 +fr 2 66 4.0 +fr 2 67 4.0 +fr 2 68 4.0 +fr 2 69 4.0 +fr 2 70 4.0 +fr 2 71 4.0 +fr 2 72 4.0 +fr 2 73 4.0 +fr 2 74 4.0 +fr 2 75 4.0 +fr 2 76 4.0 +fr 2 77 4.0 +fr 2 78 4.0 +fr 2 79 4.0 +fr 2 80 4.0 +fr 2 81 4.0 +fr 2 82 5.0 +fr 2 83 5.0 +fr 2 84 5.0 +fr 2 85 5.0 +fr 2 86 5.0 +fr 2 87 5.0 +fr 2 88 5.0 +fr 2 89 5.0 +fr 2 90 5.0 +fr 2 91 5.0 +fr 2 92 5.0 +fr 2 93 5.0 +fr 2 94 5.0 +fr 2 95 5.0 +fr 2 96 5.0 +fr 2 97 5.0 +fr 2 98 5.0 +fr 2 99 5.0 +fr 2 100 5.0 +fr 2 101 5.0 +fr 2 102 6.0 +fr 2 103 6.0 +fr 2 104 6.0 +fr 2 105 6.0 +fr 2 106 6.0 +fr 2 107 6.0 +fr 2 108 6.0 +fr 2 109 6.0 +fr 2 110 6.0 +fr 2 111 6.0 +fr 2 112 6.0 +fr 2 113 6.0 +fr 2 114 6.0 +fr 2 115 6.0 +fr 2 116 6.0 +fr 2 117 6.0 +fr 2 118 6.0 +fr 2 119 6.0 +fr 2 120 6.0 +fr 2 121 6.0 +fr 2 122 7.0 +fr 2 123 7.0 +fr 2 124 7.0 +fr 2 125 7.0 +fr 2 126 7.0 +fr 2 127 7.0 +fr 2 128 7.0 +fr 2 129 7.0 +fr 2 130 7.0 +fr 2 131 7.0 +fr 2 132 7.0 +fr 2 133 7.0 +fr 2 134 7.0 +fr 2 135 7.0 +fr 2 136 7.0 +fr 2 137 7.0 +fr 2 138 7.0 +fr 2 139 7.0 +fr 2 140 7.0 +fr 2 141 7.0 +fr 2 142 8.0 +fr 2 143 8.0 +fr 2 144 8.0 +fr 2 145 8.0 +fr 2 146 8.0 +fr 2 147 8.0 +fr 2 148 8.0 +fr 2 149 8.0 +fr 2 150 8.0 +fr 2 151 8.0 +fr 2 152 8.0 +fr 2 153 8.0 +fr 2 154 8.0 +fr 2 155 8.0 +fr 2 156 8.0 +fr 2 157 8.0 +fr 2 158 8.0 +fr 2 159 8.0 +fr 2 160 8.0 +fr 2 161 8.0 +fr 2 162 9.0 +fr 2 163 9.0 +fr 2 164 9.0 +fr 2 165 9.0 +fr 2 166 9.0 +fr 2 167 9.0 +fr 2 168 9.0 +fr 2 169 0.0 +fr 2 170 1.0 +fr 2 171 1.0 +fr 2 172 1.0 +fr 2 173 1.0 +fr 2 174 1.0 +fr 2 175 1.0 +fr 2 176 1.0 +fr 2 177 1.0 +fr 2 178 1.0 +fr 2 179 1.0 +fr 2 180 1.0 +fr 2 181 1.0 +fr 2 182 1.0 +fr 2 183 1.0 +fr 2 184 1.0 +fr 2 185 1.0 +fr 2 186 1.0 +fr 2 187 1.0 +fr 2 188 1.0 +fr 2 189 1.0 +fr 2 190 2.0 +fr 2 191 2.0 +fr 2 192 2.0 +fr 2 193 2.0 +fr 2 194 2.0 +fr 2 195 2.0 +fr 2 196 2.0 +fr 2 197 2.0 +fr 2 198 2.0 +fr 2 199 2.0 +fr 2 200 2.0 +fr 2 201 2.0 +fr 2 202 2.0 +fr 2 203 2.0 +fr 2 204 2.0 +fr 2 205 2.0 +fr 2 206 2.0 +fr 2 207 2.0 +fr 2 208 2.0 +fr 2 209 2.0 +fr 2 210 3.0 +fr 2 211 3.0 +fr 2 212 3.0 +fr 2 213 3.0 +fr 2 214 3.0 +fr 2 215 3.0 +fr 2 216 3.0 +fr 2 217 3.0 +fr 2 218 3.0 +fr 2 219 3.0 +fr 2 220 3.0 +fr 2 221 3.0 +fr 2 222 3.0 +fr 2 223 3.0 +fr 2 224 3.0 +fr 2 225 3.0 +fr 2 226 3.0 +fr 2 227 3.0 +fr 2 228 3.0 +fr 2 229 3.0 +fr 2 230 4.0 +fr 2 231 4.0 +fr 2 232 4.0 +fr 2 233 4.0 +fr 2 234 4.0 +fr 2 235 4.0 +fr 2 236 4.0 +fr 2 237 4.0 +fr 2 238 4.0 +fr 2 239 4.0 +fr 2 240 4.0 +fr 2 241 4.0 +fr 2 242 4.0 +fr 2 243 4.0 +fr 2 244 4.0 +fr 2 245 4.0 +fr 2 246 4.0 +fr 2 247 4.0 +fr 2 248 4.0 +fr 2 249 4.0 +fr 2 250 5.0 +fr 2 251 5.0 +fr 2 252 5.0 +fr 2 253 5.0 +fr 2 254 5.0 +fr 2 255 5.0 +fr 2 256 5.0 +fr 2 257 5.0 +fr 2 258 5.0 +fr 2 259 5.0 +fr 2 260 5.0 +fr 2 261 5.0 +fr 2 262 5.0 +fr 2 263 5.0 +fr 2 264 5.0 +fr 2 265 5.0 +fr 2 266 5.0 +fr 2 267 5.0 +fr 2 268 5.0 +fr 2 269 5.0 +fr 2 270 6.0 +fr 2 271 6.0 +fr 2 272 6.0 +fr 2 273 6.0 +fr 2 274 6.0 +fr 2 275 6.0 +fr 2 276 6.0 +fr 2 277 6.0 +fr 2 278 6.0 +fr 2 279 6.0 +fr 2 280 6.0 +fr 2 281 6.0 +fr 2 282 6.0 +fr 2 283 6.0 +fr 2 284 6.0 +fr 2 285 6.0 +fr 2 286 6.0 +fr 2 287 6.0 +fr 2 288 6.0 +fr 2 289 6.0 +fr 2 290 7.0 +fr 2 291 7.0 +fr 2 292 7.0 +fr 2 293 7.0 +fr 2 294 7.0 +fr 2 295 7.0 +fr 2 296 7.0 +fr 2 297 7.0 +fr 2 298 7.0 +fr 2 299 7.0 +fr 2 300 7.0 +fr 2 301 7.0 +fr 2 302 7.0 +fr 2 303 7.0 +fr 2 304 7.0 +fr 2 305 7.0 +fr 2 306 7.0 +fr 2 307 7.0 +fr 2 308 7.0 +fr 2 309 7.0 +fr 2 310 8.0 +fr 2 311 8.0 +fr 2 312 8.0 +fr 2 313 8.0 +fr 2 314 8.0 +fr 2 315 8.0 +fr 2 316 8.0 +fr 2 317 8.0 +fr 2 318 8.0 +fr 2 319 8.0 +fr 2 320 8.0 +fr 2 321 8.0 +fr 2 322 8.0 +fr 2 323 8.0 +fr 2 324 8.0 +fr 2 325 8.0 +fr 2 326 8.0 +fr 2 327 8.0 +fr 2 328 8.0 +fr 2 329 8.0 +fr 2 330 9.0 +fr 2 331 9.0 +fr 2 332 9.0 +fr 2 333 9.0 +fr 2 334 9.0 +fr 2 335 9.0 +fr 2 336 9.0 +it 2 1 0.0 +it 2 2 1.0 +it 2 3 1.0 +it 2 4 1.0 +it 2 5 1.0 +it 2 6 1.0 +it 2 7 1.0 +it 2 8 1.0 +it 2 9 1.0 +it 2 10 1.0 +it 2 11 1.0 +it 2 12 1.0 +it 2 13 1.0 +it 2 14 1.0 +it 2 15 1.0 +it 2 16 1.0 +it 2 17 1.0 +it 2 18 1.0 +it 2 19 1.0 +it 2 20 1.0 +it 2 21 1.0 +it 2 22 2.0 +it 2 23 2.0 +it 2 24 2.0 +it 2 25 2.0 +it 2 26 2.0 +it 2 27 2.0 +it 2 28 2.0 +it 2 29 2.0 +it 2 30 2.0 +it 2 31 2.0 +it 2 32 2.0 +it 2 33 2.0 +it 2 34 2.0 +it 2 35 2.0 +it 2 36 2.0 +it 2 37 2.0 +it 2 38 2.0 +it 2 39 2.0 +it 2 40 2.0 +it 2 41 2.0 +it 2 42 3.0 +it 2 43 3.0 +it 2 44 3.0 +it 2 45 3.0 +it 2 46 3.0 +it 2 47 3.0 +it 2 48 3.0 +it 2 49 3.0 +it 2 50 3.0 +it 2 51 3.0 +it 2 52 3.0 +it 2 53 3.0 +it 2 54 3.0 +it 2 55 3.0 +it 2 56 3.0 +it 2 57 3.0 +it 2 58 3.0 +it 2 59 3.0 +it 2 60 3.0 +it 2 61 3.0 +it 2 62 4.0 +it 2 63 4.0 +it 2 64 4.0 +it 2 65 4.0 +it 2 66 4.0 +it 2 67 4.0 +it 2 68 4.0 +it 2 69 4.0 +it 2 70 4.0 +it 2 71 4.0 +it 2 72 4.0 +it 2 73 4.0 +it 2 74 4.0 +it 2 75 4.0 +it 2 76 4.0 +it 2 77 4.0 +it 2 78 4.0 +it 2 79 4.0 +it 2 80 4.0 +it 2 81 4.0 +it 2 82 5.0 +it 2 83 5.0 +it 2 84 5.0 +it 2 85 5.0 +it 2 86 5.0 +it 2 87 5.0 +it 2 88 5.0 +it 2 89 5.0 +it 2 90 5.0 +it 2 91 5.0 +it 2 92 5.0 +it 2 93 5.0 +it 2 94 5.0 +it 2 95 5.0 +it 2 96 5.0 +it 2 97 5.0 +it 2 98 5.0 +it 2 99 5.0 +it 2 100 5.0 +it 2 101 5.0 +it 2 102 6.0 +it 2 103 6.0 +it 2 104 6.0 +it 2 105 6.0 +it 2 106 6.0 +it 2 107 6.0 +it 2 108 6.0 +it 2 109 6.0 +it 2 110 6.0 +it 2 111 6.0 +it 2 112 6.0 +it 2 113 6.0 +it 2 114 6.0 +it 2 115 6.0 +it 2 116 6.0 +it 2 117 6.0 +it 2 118 6.0 +it 2 119 6.0 +it 2 120 6.0 +it 2 121 6.0 +it 2 122 7.0 +it 2 123 7.0 +it 2 124 7.0 +it 2 125 7.0 +it 2 126 7.0 +it 2 127 7.0 +it 2 128 7.0 +it 2 129 7.0 +it 2 130 7.0 +it 2 131 7.0 +it 2 132 7.0 +it 2 133 7.0 +it 2 134 7.0 +it 2 135 7.0 +it 2 136 7.0 +it 2 137 7.0 +it 2 138 7.0 +it 2 139 7.0 +it 2 140 7.0 +it 2 141 7.0 +it 2 142 8.0 +it 2 143 8.0 +it 2 144 8.0 +it 2 145 8.0 +it 2 146 8.0 +it 2 147 8.0 +it 2 148 8.0 +it 2 149 8.0 +it 2 150 8.0 +it 2 151 8.0 +it 2 152 8.0 +it 2 153 8.0 +it 2 154 8.0 +it 2 155 8.0 +it 2 156 8.0 +it 2 157 8.0 +it 2 158 8.0 +it 2 159 8.0 +it 2 160 8.0 +it 2 161 8.0 +it 2 162 9.0 +it 2 163 9.0 +it 2 164 9.0 +it 2 165 9.0 +it 2 166 9.0 +it 2 167 9.0 +it 2 168 9.0 +it 2 169 0.0 +it 2 170 1.0 +it 2 171 1.0 +it 2 172 1.0 +it 2 173 1.0 +it 2 174 1.0 +it 2 175 1.0 +it 2 176 1.0 +it 2 177 1.0 +it 2 178 1.0 +it 2 179 1.0 +it 2 180 1.0 +it 2 181 1.0 +it 2 182 1.0 +it 2 183 1.0 +it 2 184 1.0 +it 2 185 1.0 +it 2 186 1.0 +it 2 187 1.0 +it 2 188 1.0 +it 2 189 1.0 +it 2 190 2.0 +it 2 191 2.0 +it 2 192 2.0 +it 2 193 2.0 +it 2 194 2.0 +it 2 195 2.0 +it 2 196 2.0 +it 2 197 2.0 +it 2 198 2.0 +it 2 199 2.0 +it 2 200 2.0 +it 2 201 2.0 +it 2 202 2.0 +it 2 203 2.0 +it 2 204 2.0 +it 2 205 2.0 +it 2 206 2.0 +it 2 207 2.0 +it 2 208 2.0 +it 2 209 2.0 +it 2 210 3.0 +it 2 211 3.0 +it 2 212 3.0 +it 2 213 3.0 +it 2 214 3.0 +it 2 215 3.0 +it 2 216 3.0 +it 2 217 3.0 +it 2 218 3.0 +it 2 219 3.0 +it 2 220 3.0 +it 2 221 3.0 +it 2 222 3.0 +it 2 223 3.0 +it 2 224 3.0 +it 2 225 3.0 +it 2 226 3.0 +it 2 227 3.0 +it 2 228 3.0 +it 2 229 3.0 +it 2 230 4.0 +it 2 231 4.0 +it 2 232 4.0 +it 2 233 4.0 +it 2 234 4.0 +it 2 235 4.0 +it 2 236 4.0 +it 2 237 4.0 +it 2 238 4.0 +it 2 239 4.0 +it 2 240 4.0 +it 2 241 4.0 +it 2 242 4.0 +it 2 243 4.0 +it 2 244 4.0 +it 2 245 4.0 +it 2 246 4.0 +it 2 247 4.0 +it 2 248 4.0 +it 2 249 4.0 +it 2 250 5.0 +it 2 251 5.0 +it 2 252 5.0 +it 2 253 5.0 +it 2 254 5.0 +it 2 255 5.0 +it 2 256 5.0 +it 2 257 5.0 +it 2 258 5.0 +it 2 259 5.0 +it 2 260 5.0 +it 2 261 5.0 +it 2 262 5.0 +it 2 263 5.0 +it 2 264 5.0 +it 2 265 5.0 +it 2 266 5.0 +it 2 267 5.0 +it 2 268 5.0 +it 2 269 5.0 +it 2 270 6.0 +it 2 271 6.0 +it 2 272 6.0 +it 2 273 6.0 +it 2 274 6.0 +it 2 275 6.0 +it 2 276 6.0 +it 2 277 6.0 +it 2 278 6.0 +it 2 279 6.0 +it 2 280 6.0 +it 2 281 6.0 +it 2 282 6.0 +it 2 283 6.0 +it 2 284 6.0 +it 2 285 6.0 +it 2 286 6.0 +it 2 287 6.0 +it 2 288 6.0 +it 2 289 6.0 +it 2 290 7.0 +it 2 291 7.0 +it 2 292 7.0 +it 2 293 7.0 +it 2 294 7.0 +it 2 295 7.0 +it 2 296 7.0 +it 2 297 7.0 +it 2 298 7.0 +it 2 299 7.0 +it 2 300 7.0 +it 2 301 7.0 +it 2 302 7.0 +it 2 303 7.0 +it 2 304 7.0 +it 2 305 7.0 +it 2 306 7.0 +it 2 307 7.0 +it 2 308 7.0 +it 2 309 7.0 +it 2 310 8.0 +it 2 311 8.0 +it 2 312 8.0 +it 2 313 8.0 +it 2 314 8.0 +it 2 315 8.0 +it 2 316 8.0 +it 2 317 8.0 +it 2 318 8.0 +it 2 319 8.0 +it 2 320 8.0 +it 2 321 8.0 +it 2 322 8.0 +it 2 323 8.0 +it 2 324 8.0 +it 2 325 8.0 +it 2 326 8.0 +it 2 327 8.0 +it 2 328 8.0 +it 2 329 8.0 +it 2 330 9.0 +it 2 331 9.0 +it 2 332 9.0 +it 2 333 9.0 +it 2 334 9.0 +it 2 335 9.0 +it 2 336 9.0 diff --git a/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-07-all.result.tsv b/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-07-all.result.tsv index f658354e14..3acf32d4da 100644 --- a/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-07-all.result.tsv +++ b/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-07-all.result.tsv @@ -1,15 +1,15 @@ -area timeId time OV. COST EXP OP. COST EXP OP. COST STD OP. COST MIN OP. COST MAX H. COST EXP H. COST STD H. COST MIN H. COST MAX NP COST EXP NP COST STD NP COST MIN NP COST MAX NODU EXP NODU STD NODU MIN NODU MAX -de 1 2030 282000.0 282000.0 0.0 282000.0 282000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 26.0 0.0 26.0 26.0 -de 2 2030 1252000.0 1252000.0 0.0 1252000.0 1252000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 55.0 0.0 55.0 55.0 -de 3 2030 2910000.0 2910000.0 0.0 2910000.0 2910000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 83.0 0.0 83.0 83.0 -de 4 2030 5256000.0 5256000.0 0.0 5256000.0 5256000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 111.0 0.0 111.0 111.0 -de 5 2030 8290000.0 8290000.0 0.0 8290000.0 8290000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 139.0 0.0 139.0 139.0 -de 6 2030 12018000.0 12018000.0 0.0 12018000.0 12018000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 170.0 0.0 170.0 170.0 -de 7 2030 16444000.0 16444000.0 0.0 16444000.0 16444000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 199.0 0.0 199.0 199.0 -es 1 2030 282000.0 282000.0 0.0 282000.0 282000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 26.0 0.0 26.0 26.0 -es 2 2030 1252000.0 1252000.0 0.0 1252000.0 1252000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 55.0 0.0 55.0 55.0 -es 3 2030 2910000.0 2910000.0 0.0 2910000.0 2910000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 83.0 0.0 83.0 83.0 -es 4 2030 5256000.0 5256000.0 0.0 5256000.0 5256000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 111.0 0.0 111.0 111.0 -es 5 2030 8290000.0 8290000.0 0.0 8290000.0 8290000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 139.0 0.0 139.0 139.0 -es 6 2030 12018000.0 12018000.0 0.0 12018000.0 12018000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 170.0 0.0 170.0 170.0 -es 7 2030 16444000.0 16444000.0 0.0 16444000.0 16444000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 199.0 0.0 199.0 199.0 +area timeId OV. COST EXP OP. COST EXP OP. COST STD OP. COST MIN OP. COST MAX H. COST EXP H. COST STD H. COST MIN H. COST MAX NP COST EXP NP COST STD NP COST MIN NP COST MAX NODU EXP NODU STD NODU MIN NODU MAX +de 1 282000.0 282000.0 0.0 282000.0 282000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 26.0 0.0 26.0 26.0 +de 2 1252000.0 1252000.0 0.0 1252000.0 1252000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 55.0 0.0 55.0 55.0 +de 3 2910000.0 2910000.0 0.0 2910000.0 2910000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 83.0 0.0 83.0 83.0 +de 4 5256000.0 5256000.0 0.0 5256000.0 5256000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 111.0 0.0 111.0 111.0 +de 5 8290000.0 8290000.0 0.0 8290000.0 8290000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 139.0 0.0 139.0 139.0 +de 6 12018000.0 12018000.0 0.0 12018000.0 12018000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 170.0 0.0 170.0 170.0 +de 7 16444000.0 16444000.0 0.0 16444000.0 16444000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 199.0 0.0 199.0 199.0 +es 1 282000.0 282000.0 0.0 282000.0 282000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 26.0 0.0 26.0 26.0 +es 2 1252000.0 1252000.0 0.0 1252000.0 1252000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 55.0 0.0 55.0 55.0 +es 3 2910000.0 2910000.0 0.0 2910000.0 2910000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 83.0 0.0 83.0 83.0 +es 4 5256000.0 5256000.0 0.0 5256000.0 5256000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 111.0 0.0 111.0 111.0 +es 5 8290000.0 8290000.0 0.0 8290000.0 8290000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 139.0 0.0 139.0 139.0 +es 6 12018000.0 12018000.0 0.0 12018000.0 12018000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 170.0 0.0 170.0 170.0 +es 7 16444000.0 16444000.0 0.0 16444000.0 16444000.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 199.0 0.0 199.0 199.0 diff --git a/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-07.result.tsv b/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-07.result.tsv index 0b3974c655..fef638b5b9 100644 --- a/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-07.result.tsv +++ b/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-07.result.tsv @@ -1,24193 +1,24193 @@ -area cluster mcYear timeId time NODU NP Cost - Euro -de 01_solar 1 1 2030 0.0 0.0 -de 02_wind_on 1 1 2030 0.0 0.0 -de 03_wind_off 1 1 2030 0.0 0.0 -de 04_res 1 1 2030 0.0 0.0 -de 05_nuclear 1 1 2030 0.0 0.0 -de 06_coal 1 1 2030 0.0 0.0 -de 07_gas 1 1 2030 0.0 0.0 -de 08_non-res 1 1 2030 0.0 0.0 -de 09_hydro_pump 1 1 2030 0.0 0.0 -de 01_solar 1 2 2030 1.0 0.0 -de 02_wind_on 1 2 2030 0.0 0.0 -de 03_wind_off 1 2 2030 0.0 0.0 -de 04_res 1 2 2030 0.0 0.0 -de 05_nuclear 1 2 2030 0.0 0.0 -de 06_coal 1 2 2030 0.0 0.0 -de 07_gas 1 2 2030 0.0 0.0 -de 08_non-res 1 2 2030 0.0 0.0 -de 09_hydro_pump 1 2 2030 0.0 0.0 -de 01_solar 1 3 2030 1.0 0.0 -de 02_wind_on 1 3 2030 0.0 0.0 -de 03_wind_off 1 3 2030 0.0 0.0 -de 04_res 1 3 2030 0.0 0.0 -de 05_nuclear 1 3 2030 0.0 0.0 -de 06_coal 1 3 2030 0.0 0.0 -de 07_gas 1 3 2030 0.0 0.0 -de 08_non-res 1 3 2030 0.0 0.0 -de 09_hydro_pump 1 3 2030 0.0 0.0 -de 01_solar 1 4 2030 1.0 0.0 -de 02_wind_on 1 4 2030 0.0 0.0 -de 03_wind_off 1 4 2030 0.0 0.0 -de 04_res 1 4 2030 0.0 0.0 -de 05_nuclear 1 4 2030 0.0 0.0 -de 06_coal 1 4 2030 0.0 0.0 -de 07_gas 1 4 2030 0.0 0.0 -de 08_non-res 1 4 2030 0.0 0.0 -de 09_hydro_pump 1 4 2030 0.0 0.0 -de 01_solar 1 5 2030 1.0 0.0 -de 02_wind_on 1 5 2030 0.0 0.0 -de 03_wind_off 1 5 2030 0.0 0.0 -de 04_res 1 5 2030 0.0 0.0 -de 05_nuclear 1 5 2030 0.0 0.0 -de 06_coal 1 5 2030 0.0 0.0 -de 07_gas 1 5 2030 0.0 0.0 -de 08_non-res 1 5 2030 0.0 0.0 -de 09_hydro_pump 1 5 2030 0.0 0.0 -de 01_solar 1 6 2030 1.0 0.0 -de 02_wind_on 1 6 2030 0.0 0.0 -de 03_wind_off 1 6 2030 0.0 0.0 -de 04_res 1 6 2030 0.0 0.0 -de 05_nuclear 1 6 2030 0.0 0.0 -de 06_coal 1 6 2030 0.0 0.0 -de 07_gas 1 6 2030 0.0 0.0 -de 08_non-res 1 6 2030 0.0 0.0 -de 09_hydro_pump 1 6 2030 0.0 0.0 -de 01_solar 1 7 2030 1.0 0.0 -de 02_wind_on 1 7 2030 0.0 0.0 -de 03_wind_off 1 7 2030 0.0 0.0 -de 04_res 1 7 2030 0.0 0.0 -de 05_nuclear 1 7 2030 0.0 0.0 -de 06_coal 1 7 2030 0.0 0.0 -de 07_gas 1 7 2030 0.0 0.0 -de 08_non-res 1 7 2030 0.0 0.0 -de 09_hydro_pump 1 7 2030 0.0 0.0 -de 01_solar 1 8 2030 1.0 0.0 -de 02_wind_on 1 8 2030 0.0 0.0 -de 03_wind_off 1 8 2030 0.0 0.0 -de 04_res 1 8 2030 0.0 0.0 -de 05_nuclear 1 8 2030 0.0 0.0 -de 06_coal 1 8 2030 0.0 0.0 -de 07_gas 1 8 2030 0.0 0.0 -de 08_non-res 1 8 2030 0.0 0.0 -de 09_hydro_pump 1 8 2030 0.0 0.0 -de 01_solar 1 9 2030 1.0 0.0 -de 02_wind_on 1 9 2030 0.0 0.0 -de 03_wind_off 1 9 2030 0.0 0.0 -de 04_res 1 9 2030 0.0 0.0 -de 05_nuclear 1 9 2030 0.0 0.0 -de 06_coal 1 9 2030 0.0 0.0 -de 07_gas 1 9 2030 0.0 0.0 -de 08_non-res 1 9 2030 0.0 0.0 -de 09_hydro_pump 1 9 2030 0.0 0.0 -de 01_solar 1 10 2030 1.0 0.0 -de 02_wind_on 1 10 2030 0.0 0.0 -de 03_wind_off 1 10 2030 0.0 0.0 -de 04_res 1 10 2030 0.0 0.0 -de 05_nuclear 1 10 2030 0.0 0.0 -de 06_coal 1 10 2030 0.0 0.0 -de 07_gas 1 10 2030 0.0 0.0 -de 08_non-res 1 10 2030 0.0 0.0 -de 09_hydro_pump 1 10 2030 0.0 0.0 -de 01_solar 1 11 2030 1.0 0.0 -de 02_wind_on 1 11 2030 0.0 0.0 -de 03_wind_off 1 11 2030 0.0 0.0 -de 04_res 1 11 2030 0.0 0.0 -de 05_nuclear 1 11 2030 0.0 0.0 -de 06_coal 1 11 2030 0.0 0.0 -de 07_gas 1 11 2030 0.0 0.0 -de 08_non-res 1 11 2030 0.0 0.0 -de 09_hydro_pump 1 11 2030 0.0 0.0 -de 01_solar 1 12 2030 1.0 0.0 -de 02_wind_on 1 12 2030 0.0 0.0 -de 03_wind_off 1 12 2030 0.0 0.0 -de 04_res 1 12 2030 0.0 0.0 -de 05_nuclear 1 12 2030 0.0 0.0 -de 06_coal 1 12 2030 0.0 0.0 -de 07_gas 1 12 2030 0.0 0.0 -de 08_non-res 1 12 2030 0.0 0.0 -de 09_hydro_pump 1 12 2030 0.0 0.0 -de 01_solar 1 13 2030 1.0 0.0 -de 02_wind_on 1 13 2030 0.0 0.0 -de 03_wind_off 1 13 2030 0.0 0.0 -de 04_res 1 13 2030 0.0 0.0 -de 05_nuclear 1 13 2030 0.0 0.0 -de 06_coal 1 13 2030 0.0 0.0 -de 07_gas 1 13 2030 0.0 0.0 -de 08_non-res 1 13 2030 0.0 0.0 -de 09_hydro_pump 1 13 2030 0.0 0.0 -de 01_solar 1 14 2030 1.0 0.0 -de 02_wind_on 1 14 2030 0.0 0.0 -de 03_wind_off 1 14 2030 0.0 0.0 -de 04_res 1 14 2030 0.0 0.0 -de 05_nuclear 1 14 2030 0.0 0.0 -de 06_coal 1 14 2030 0.0 0.0 -de 07_gas 1 14 2030 0.0 0.0 -de 08_non-res 1 14 2030 0.0 0.0 -de 09_hydro_pump 1 14 2030 0.0 0.0 -de 01_solar 1 15 2030 1.0 0.0 -de 02_wind_on 1 15 2030 0.0 0.0 -de 03_wind_off 1 15 2030 0.0 0.0 -de 04_res 1 15 2030 0.0 0.0 -de 05_nuclear 1 15 2030 0.0 0.0 -de 06_coal 1 15 2030 0.0 0.0 -de 07_gas 1 15 2030 0.0 0.0 -de 08_non-res 1 15 2030 0.0 0.0 -de 09_hydro_pump 1 15 2030 0.0 0.0 -de 01_solar 1 16 2030 1.0 0.0 -de 02_wind_on 1 16 2030 0.0 0.0 -de 03_wind_off 1 16 2030 0.0 0.0 -de 04_res 1 16 2030 0.0 0.0 -de 05_nuclear 1 16 2030 0.0 0.0 -de 06_coal 1 16 2030 0.0 0.0 -de 07_gas 1 16 2030 0.0 0.0 -de 08_non-res 1 16 2030 0.0 0.0 -de 09_hydro_pump 1 16 2030 0.0 0.0 -de 01_solar 1 17 2030 1.0 0.0 -de 02_wind_on 1 17 2030 0.0 0.0 -de 03_wind_off 1 17 2030 0.0 0.0 -de 04_res 1 17 2030 0.0 0.0 -de 05_nuclear 1 17 2030 0.0 0.0 -de 06_coal 1 17 2030 0.0 0.0 -de 07_gas 1 17 2030 0.0 0.0 -de 08_non-res 1 17 2030 0.0 0.0 -de 09_hydro_pump 1 17 2030 0.0 0.0 -de 01_solar 1 18 2030 1.0 0.0 -de 02_wind_on 1 18 2030 0.0 0.0 -de 03_wind_off 1 18 2030 0.0 0.0 -de 04_res 1 18 2030 0.0 0.0 -de 05_nuclear 1 18 2030 0.0 0.0 -de 06_coal 1 18 2030 0.0 0.0 -de 07_gas 1 18 2030 0.0 0.0 -de 08_non-res 1 18 2030 0.0 0.0 -de 09_hydro_pump 1 18 2030 0.0 0.0 -de 01_solar 1 19 2030 1.0 0.0 -de 02_wind_on 1 19 2030 0.0 0.0 -de 03_wind_off 1 19 2030 0.0 0.0 -de 04_res 1 19 2030 0.0 0.0 -de 05_nuclear 1 19 2030 0.0 0.0 -de 06_coal 1 19 2030 0.0 0.0 -de 07_gas 1 19 2030 0.0 0.0 -de 08_non-res 1 19 2030 0.0 0.0 -de 09_hydro_pump 1 19 2030 0.0 0.0 -de 01_solar 1 20 2030 1.0 0.0 -de 02_wind_on 1 20 2030 0.0 0.0 -de 03_wind_off 1 20 2030 0.0 0.0 -de 04_res 1 20 2030 0.0 0.0 -de 05_nuclear 1 20 2030 0.0 0.0 -de 06_coal 1 20 2030 0.0 0.0 -de 07_gas 1 20 2030 0.0 0.0 -de 08_non-res 1 20 2030 0.0 0.0 -de 09_hydro_pump 1 20 2030 0.0 0.0 -de 01_solar 1 21 2030 1.0 0.0 -de 02_wind_on 1 21 2030 0.0 0.0 -de 03_wind_off 1 21 2030 0.0 0.0 -de 04_res 1 21 2030 0.0 0.0 -de 05_nuclear 1 21 2030 0.0 0.0 -de 06_coal 1 21 2030 0.0 0.0 -de 07_gas 1 21 2030 0.0 0.0 -de 08_non-res 1 21 2030 0.0 0.0 -de 09_hydro_pump 1 21 2030 0.0 0.0 -de 01_solar 1 22 2030 1.0 0.0 -de 02_wind_on 1 22 2030 1.0 0.0 -de 03_wind_off 1 22 2030 0.0 0.0 -de 04_res 1 22 2030 0.0 0.0 -de 05_nuclear 1 22 2030 0.0 0.0 -de 06_coal 1 22 2030 0.0 0.0 -de 07_gas 1 22 2030 0.0 0.0 -de 08_non-res 1 22 2030 0.0 0.0 -de 09_hydro_pump 1 22 2030 0.0 0.0 -de 01_solar 1 23 2030 1.0 0.0 -de 02_wind_on 1 23 2030 1.0 0.0 -de 03_wind_off 1 23 2030 0.0 0.0 -de 04_res 1 23 2030 0.0 0.0 -de 05_nuclear 1 23 2030 0.0 0.0 -de 06_coal 1 23 2030 0.0 0.0 -de 07_gas 1 23 2030 0.0 0.0 -de 08_non-res 1 23 2030 0.0 0.0 -de 09_hydro_pump 1 23 2030 0.0 0.0 -de 01_solar 1 24 2030 1.0 0.0 -de 02_wind_on 1 24 2030 1.0 0.0 -de 03_wind_off 1 24 2030 0.0 0.0 -de 04_res 1 24 2030 0.0 0.0 -de 05_nuclear 1 24 2030 0.0 0.0 -de 06_coal 1 24 2030 0.0 0.0 -de 07_gas 1 24 2030 0.0 0.0 -de 08_non-res 1 24 2030 0.0 0.0 -de 09_hydro_pump 1 24 2030 0.0 0.0 -de 01_solar 1 25 2030 1.0 0.0 -de 02_wind_on 1 25 2030 1.0 0.0 -de 03_wind_off 1 25 2030 0.0 0.0 -de 04_res 1 25 2030 0.0 0.0 -de 05_nuclear 1 25 2030 0.0 0.0 -de 06_coal 1 25 2030 0.0 0.0 -de 07_gas 1 25 2030 0.0 0.0 -de 08_non-res 1 25 2030 0.0 0.0 -de 09_hydro_pump 1 25 2030 0.0 0.0 -de 01_solar 1 26 2030 1.0 0.0 -de 02_wind_on 1 26 2030 1.0 0.0 -de 03_wind_off 1 26 2030 0.0 0.0 -de 04_res 1 26 2030 0.0 0.0 -de 05_nuclear 1 26 2030 0.0 0.0 -de 06_coal 1 26 2030 0.0 0.0 -de 07_gas 1 26 2030 0.0 0.0 -de 08_non-res 1 26 2030 0.0 0.0 -de 09_hydro_pump 1 26 2030 0.0 0.0 -de 01_solar 1 27 2030 1.0 0.0 -de 02_wind_on 1 27 2030 1.0 0.0 -de 03_wind_off 1 27 2030 0.0 0.0 -de 04_res 1 27 2030 0.0 0.0 -de 05_nuclear 1 27 2030 0.0 0.0 -de 06_coal 1 27 2030 0.0 0.0 -de 07_gas 1 27 2030 0.0 0.0 -de 08_non-res 1 27 2030 0.0 0.0 -de 09_hydro_pump 1 27 2030 0.0 0.0 -de 01_solar 1 28 2030 1.0 0.0 -de 02_wind_on 1 28 2030 1.0 0.0 -de 03_wind_off 1 28 2030 0.0 0.0 -de 04_res 1 28 2030 0.0 0.0 -de 05_nuclear 1 28 2030 0.0 0.0 -de 06_coal 1 28 2030 0.0 0.0 -de 07_gas 1 28 2030 0.0 0.0 -de 08_non-res 1 28 2030 0.0 0.0 -de 09_hydro_pump 1 28 2030 0.0 0.0 -de 01_solar 1 29 2030 1.0 0.0 -de 02_wind_on 1 29 2030 1.0 0.0 -de 03_wind_off 1 29 2030 0.0 0.0 -de 04_res 1 29 2030 0.0 0.0 -de 05_nuclear 1 29 2030 0.0 0.0 -de 06_coal 1 29 2030 0.0 0.0 -de 07_gas 1 29 2030 0.0 0.0 -de 08_non-res 1 29 2030 0.0 0.0 -de 09_hydro_pump 1 29 2030 0.0 0.0 -de 01_solar 1 30 2030 1.0 0.0 -de 02_wind_on 1 30 2030 1.0 0.0 -de 03_wind_off 1 30 2030 0.0 0.0 -de 04_res 1 30 2030 0.0 0.0 -de 05_nuclear 1 30 2030 0.0 0.0 -de 06_coal 1 30 2030 0.0 0.0 -de 07_gas 1 30 2030 0.0 0.0 -de 08_non-res 1 30 2030 0.0 0.0 -de 09_hydro_pump 1 30 2030 0.0 0.0 -de 01_solar 1 31 2030 1.0 0.0 -de 02_wind_on 1 31 2030 1.0 0.0 -de 03_wind_off 1 31 2030 0.0 0.0 -de 04_res 1 31 2030 0.0 0.0 -de 05_nuclear 1 31 2030 0.0 0.0 -de 06_coal 1 31 2030 0.0 0.0 -de 07_gas 1 31 2030 0.0 0.0 -de 08_non-res 1 31 2030 0.0 0.0 -de 09_hydro_pump 1 31 2030 0.0 0.0 -de 01_solar 1 32 2030 1.0 0.0 -de 02_wind_on 1 32 2030 1.0 0.0 -de 03_wind_off 1 32 2030 0.0 0.0 -de 04_res 1 32 2030 0.0 0.0 -de 05_nuclear 1 32 2030 0.0 0.0 -de 06_coal 1 32 2030 0.0 0.0 -de 07_gas 1 32 2030 0.0 0.0 -de 08_non-res 1 32 2030 0.0 0.0 -de 09_hydro_pump 1 32 2030 0.0 0.0 -de 01_solar 1 33 2030 1.0 0.0 -de 02_wind_on 1 33 2030 1.0 0.0 -de 03_wind_off 1 33 2030 0.0 0.0 -de 04_res 1 33 2030 0.0 0.0 -de 05_nuclear 1 33 2030 0.0 0.0 -de 06_coal 1 33 2030 0.0 0.0 -de 07_gas 1 33 2030 0.0 0.0 -de 08_non-res 1 33 2030 0.0 0.0 -de 09_hydro_pump 1 33 2030 0.0 0.0 -de 01_solar 1 34 2030 1.0 0.0 -de 02_wind_on 1 34 2030 1.0 0.0 -de 03_wind_off 1 34 2030 0.0 0.0 -de 04_res 1 34 2030 0.0 0.0 -de 05_nuclear 1 34 2030 0.0 0.0 -de 06_coal 1 34 2030 0.0 0.0 -de 07_gas 1 34 2030 0.0 0.0 -de 08_non-res 1 34 2030 0.0 0.0 -de 09_hydro_pump 1 34 2030 0.0 0.0 -de 01_solar 1 35 2030 1.0 0.0 -de 02_wind_on 1 35 2030 1.0 0.0 -de 03_wind_off 1 35 2030 0.0 0.0 -de 04_res 1 35 2030 0.0 0.0 -de 05_nuclear 1 35 2030 0.0 0.0 -de 06_coal 1 35 2030 0.0 0.0 -de 07_gas 1 35 2030 0.0 0.0 -de 08_non-res 1 35 2030 0.0 0.0 -de 09_hydro_pump 1 35 2030 0.0 0.0 -de 01_solar 1 36 2030 1.0 0.0 -de 02_wind_on 1 36 2030 1.0 0.0 -de 03_wind_off 1 36 2030 0.0 0.0 -de 04_res 1 36 2030 0.0 0.0 -de 05_nuclear 1 36 2030 0.0 0.0 -de 06_coal 1 36 2030 0.0 0.0 -de 07_gas 1 36 2030 0.0 0.0 -de 08_non-res 1 36 2030 0.0 0.0 -de 09_hydro_pump 1 36 2030 0.0 0.0 -de 01_solar 1 37 2030 1.0 0.0 -de 02_wind_on 1 37 2030 1.0 0.0 -de 03_wind_off 1 37 2030 0.0 0.0 -de 04_res 1 37 2030 0.0 0.0 -de 05_nuclear 1 37 2030 0.0 0.0 -de 06_coal 1 37 2030 0.0 0.0 -de 07_gas 1 37 2030 0.0 0.0 -de 08_non-res 1 37 2030 0.0 0.0 -de 09_hydro_pump 1 37 2030 0.0 0.0 -de 01_solar 1 38 2030 1.0 0.0 -de 02_wind_on 1 38 2030 1.0 0.0 -de 03_wind_off 1 38 2030 0.0 0.0 -de 04_res 1 38 2030 0.0 0.0 -de 05_nuclear 1 38 2030 0.0 0.0 -de 06_coal 1 38 2030 0.0 0.0 -de 07_gas 1 38 2030 0.0 0.0 -de 08_non-res 1 38 2030 0.0 0.0 -de 09_hydro_pump 1 38 2030 0.0 0.0 -de 01_solar 1 39 2030 1.0 0.0 -de 02_wind_on 1 39 2030 1.0 0.0 -de 03_wind_off 1 39 2030 0.0 0.0 -de 04_res 1 39 2030 0.0 0.0 -de 05_nuclear 1 39 2030 0.0 0.0 -de 06_coal 1 39 2030 0.0 0.0 -de 07_gas 1 39 2030 0.0 0.0 -de 08_non-res 1 39 2030 0.0 0.0 -de 09_hydro_pump 1 39 2030 0.0 0.0 -de 01_solar 1 40 2030 1.0 0.0 -de 02_wind_on 1 40 2030 1.0 0.0 -de 03_wind_off 1 40 2030 0.0 0.0 -de 04_res 1 40 2030 0.0 0.0 -de 05_nuclear 1 40 2030 0.0 0.0 -de 06_coal 1 40 2030 0.0 0.0 -de 07_gas 1 40 2030 0.0 0.0 -de 08_non-res 1 40 2030 0.0 0.0 -de 09_hydro_pump 1 40 2030 0.0 0.0 -de 01_solar 1 41 2030 1.0 0.0 -de 02_wind_on 1 41 2030 1.0 0.0 -de 03_wind_off 1 41 2030 0.0 0.0 -de 04_res 1 41 2030 0.0 0.0 -de 05_nuclear 1 41 2030 0.0 0.0 -de 06_coal 1 41 2030 0.0 0.0 -de 07_gas 1 41 2030 0.0 0.0 -de 08_non-res 1 41 2030 0.0 0.0 -de 09_hydro_pump 1 41 2030 0.0 0.0 -de 01_solar 1 42 2030 1.0 0.0 -de 02_wind_on 1 42 2030 1.0 0.0 -de 03_wind_off 1 42 2030 1.0 0.0 -de 04_res 1 42 2030 0.0 0.0 -de 05_nuclear 1 42 2030 0.0 0.0 -de 06_coal 1 42 2030 0.0 0.0 -de 07_gas 1 42 2030 0.0 0.0 -de 08_non-res 1 42 2030 0.0 0.0 -de 09_hydro_pump 1 42 2030 0.0 0.0 -de 01_solar 1 43 2030 1.0 0.0 -de 02_wind_on 1 43 2030 1.0 0.0 -de 03_wind_off 1 43 2030 1.0 0.0 -de 04_res 1 43 2030 0.0 0.0 -de 05_nuclear 1 43 2030 0.0 0.0 -de 06_coal 1 43 2030 0.0 0.0 -de 07_gas 1 43 2030 0.0 0.0 -de 08_non-res 1 43 2030 0.0 0.0 -de 09_hydro_pump 1 43 2030 0.0 0.0 -de 01_solar 1 44 2030 1.0 0.0 -de 02_wind_on 1 44 2030 1.0 0.0 -de 03_wind_off 1 44 2030 1.0 0.0 -de 04_res 1 44 2030 0.0 0.0 -de 05_nuclear 1 44 2030 0.0 0.0 -de 06_coal 1 44 2030 0.0 0.0 -de 07_gas 1 44 2030 0.0 0.0 -de 08_non-res 1 44 2030 0.0 0.0 -de 09_hydro_pump 1 44 2030 0.0 0.0 -de 01_solar 1 45 2030 1.0 0.0 -de 02_wind_on 1 45 2030 1.0 0.0 -de 03_wind_off 1 45 2030 1.0 0.0 -de 04_res 1 45 2030 0.0 0.0 -de 05_nuclear 1 45 2030 0.0 0.0 -de 06_coal 1 45 2030 0.0 0.0 -de 07_gas 1 45 2030 0.0 0.0 -de 08_non-res 1 45 2030 0.0 0.0 -de 09_hydro_pump 1 45 2030 0.0 0.0 -de 01_solar 1 46 2030 1.0 0.0 -de 02_wind_on 1 46 2030 1.0 0.0 -de 03_wind_off 1 46 2030 1.0 0.0 -de 04_res 1 46 2030 0.0 0.0 -de 05_nuclear 1 46 2030 0.0 0.0 -de 06_coal 1 46 2030 0.0 0.0 -de 07_gas 1 46 2030 0.0 0.0 -de 08_non-res 1 46 2030 0.0 0.0 -de 09_hydro_pump 1 46 2030 0.0 0.0 -de 01_solar 1 47 2030 1.0 0.0 -de 02_wind_on 1 47 2030 1.0 0.0 -de 03_wind_off 1 47 2030 1.0 0.0 -de 04_res 1 47 2030 0.0 0.0 -de 05_nuclear 1 47 2030 0.0 0.0 -de 06_coal 1 47 2030 0.0 0.0 -de 07_gas 1 47 2030 0.0 0.0 -de 08_non-res 1 47 2030 0.0 0.0 -de 09_hydro_pump 1 47 2030 0.0 0.0 -de 01_solar 1 48 2030 1.0 0.0 -de 02_wind_on 1 48 2030 1.0 0.0 -de 03_wind_off 1 48 2030 1.0 0.0 -de 04_res 1 48 2030 0.0 0.0 -de 05_nuclear 1 48 2030 0.0 0.0 -de 06_coal 1 48 2030 0.0 0.0 -de 07_gas 1 48 2030 0.0 0.0 -de 08_non-res 1 48 2030 0.0 0.0 -de 09_hydro_pump 1 48 2030 0.0 0.0 -de 01_solar 1 49 2030 1.0 0.0 -de 02_wind_on 1 49 2030 1.0 0.0 -de 03_wind_off 1 49 2030 1.0 0.0 -de 04_res 1 49 2030 0.0 0.0 -de 05_nuclear 1 49 2030 0.0 0.0 -de 06_coal 1 49 2030 0.0 0.0 -de 07_gas 1 49 2030 0.0 0.0 -de 08_non-res 1 49 2030 0.0 0.0 -de 09_hydro_pump 1 49 2030 0.0 0.0 -de 01_solar 1 50 2030 1.0 0.0 -de 02_wind_on 1 50 2030 1.0 0.0 -de 03_wind_off 1 50 2030 1.0 0.0 -de 04_res 1 50 2030 0.0 0.0 -de 05_nuclear 1 50 2030 0.0 0.0 -de 06_coal 1 50 2030 0.0 0.0 -de 07_gas 1 50 2030 0.0 0.0 -de 08_non-res 1 50 2030 0.0 0.0 -de 09_hydro_pump 1 50 2030 0.0 0.0 -de 01_solar 1 51 2030 1.0 0.0 -de 02_wind_on 1 51 2030 1.0 0.0 -de 03_wind_off 1 51 2030 1.0 0.0 -de 04_res 1 51 2030 0.0 0.0 -de 05_nuclear 1 51 2030 0.0 0.0 -de 06_coal 1 51 2030 0.0 0.0 -de 07_gas 1 51 2030 0.0 0.0 -de 08_non-res 1 51 2030 0.0 0.0 -de 09_hydro_pump 1 51 2030 0.0 0.0 -de 01_solar 1 52 2030 1.0 0.0 -de 02_wind_on 1 52 2030 1.0 0.0 -de 03_wind_off 1 52 2030 1.0 0.0 -de 04_res 1 52 2030 0.0 0.0 -de 05_nuclear 1 52 2030 0.0 0.0 -de 06_coal 1 52 2030 0.0 0.0 -de 07_gas 1 52 2030 0.0 0.0 -de 08_non-res 1 52 2030 0.0 0.0 -de 09_hydro_pump 1 52 2030 0.0 0.0 -de 01_solar 1 53 2030 1.0 0.0 -de 02_wind_on 1 53 2030 1.0 0.0 -de 03_wind_off 1 53 2030 1.0 0.0 -de 04_res 1 53 2030 0.0 0.0 -de 05_nuclear 1 53 2030 0.0 0.0 -de 06_coal 1 53 2030 0.0 0.0 -de 07_gas 1 53 2030 0.0 0.0 -de 08_non-res 1 53 2030 0.0 0.0 -de 09_hydro_pump 1 53 2030 0.0 0.0 -de 01_solar 1 54 2030 1.0 0.0 -de 02_wind_on 1 54 2030 1.0 0.0 -de 03_wind_off 1 54 2030 1.0 0.0 -de 04_res 1 54 2030 0.0 0.0 -de 05_nuclear 1 54 2030 0.0 0.0 -de 06_coal 1 54 2030 0.0 0.0 -de 07_gas 1 54 2030 0.0 0.0 -de 08_non-res 1 54 2030 0.0 0.0 -de 09_hydro_pump 1 54 2030 0.0 0.0 -de 01_solar 1 55 2030 1.0 0.0 -de 02_wind_on 1 55 2030 1.0 0.0 -de 03_wind_off 1 55 2030 1.0 0.0 -de 04_res 1 55 2030 0.0 0.0 -de 05_nuclear 1 55 2030 0.0 0.0 -de 06_coal 1 55 2030 0.0 0.0 -de 07_gas 1 55 2030 0.0 0.0 -de 08_non-res 1 55 2030 0.0 0.0 -de 09_hydro_pump 1 55 2030 0.0 0.0 -de 01_solar 1 56 2030 1.0 0.0 -de 02_wind_on 1 56 2030 1.0 0.0 -de 03_wind_off 1 56 2030 1.0 0.0 -de 04_res 1 56 2030 0.0 0.0 -de 05_nuclear 1 56 2030 0.0 0.0 -de 06_coal 1 56 2030 0.0 0.0 -de 07_gas 1 56 2030 0.0 0.0 -de 08_non-res 1 56 2030 0.0 0.0 -de 09_hydro_pump 1 56 2030 0.0 0.0 -de 01_solar 1 57 2030 1.0 0.0 -de 02_wind_on 1 57 2030 1.0 0.0 -de 03_wind_off 1 57 2030 1.0 0.0 -de 04_res 1 57 2030 0.0 0.0 -de 05_nuclear 1 57 2030 0.0 0.0 -de 06_coal 1 57 2030 0.0 0.0 -de 07_gas 1 57 2030 0.0 0.0 -de 08_non-res 1 57 2030 0.0 0.0 -de 09_hydro_pump 1 57 2030 0.0 0.0 -de 01_solar 1 58 2030 1.0 0.0 -de 02_wind_on 1 58 2030 1.0 0.0 -de 03_wind_off 1 58 2030 1.0 0.0 -de 04_res 1 58 2030 0.0 0.0 -de 05_nuclear 1 58 2030 0.0 0.0 -de 06_coal 1 58 2030 0.0 0.0 -de 07_gas 1 58 2030 0.0 0.0 -de 08_non-res 1 58 2030 0.0 0.0 -de 09_hydro_pump 1 58 2030 0.0 0.0 -de 01_solar 1 59 2030 1.0 0.0 -de 02_wind_on 1 59 2030 1.0 0.0 -de 03_wind_off 1 59 2030 1.0 0.0 -de 04_res 1 59 2030 0.0 0.0 -de 05_nuclear 1 59 2030 0.0 0.0 -de 06_coal 1 59 2030 0.0 0.0 -de 07_gas 1 59 2030 0.0 0.0 -de 08_non-res 1 59 2030 0.0 0.0 -de 09_hydro_pump 1 59 2030 0.0 0.0 -de 01_solar 1 60 2030 1.0 0.0 -de 02_wind_on 1 60 2030 1.0 0.0 -de 03_wind_off 1 60 2030 1.0 0.0 -de 04_res 1 60 2030 0.0 0.0 -de 05_nuclear 1 60 2030 0.0 0.0 -de 06_coal 1 60 2030 0.0 0.0 -de 07_gas 1 60 2030 0.0 0.0 -de 08_non-res 1 60 2030 0.0 0.0 -de 09_hydro_pump 1 60 2030 0.0 0.0 -de 01_solar 1 61 2030 1.0 0.0 -de 02_wind_on 1 61 2030 1.0 0.0 -de 03_wind_off 1 61 2030 1.0 0.0 -de 04_res 1 61 2030 0.0 0.0 -de 05_nuclear 1 61 2030 0.0 0.0 -de 06_coal 1 61 2030 0.0 0.0 -de 07_gas 1 61 2030 0.0 0.0 -de 08_non-res 1 61 2030 0.0 0.0 -de 09_hydro_pump 1 61 2030 0.0 0.0 -de 01_solar 1 62 2030 1.0 0.0 -de 02_wind_on 1 62 2030 1.0 0.0 -de 03_wind_off 1 62 2030 1.0 0.0 -de 04_res 1 62 2030 1.0 0.0 -de 05_nuclear 1 62 2030 0.0 0.0 -de 06_coal 1 62 2030 0.0 0.0 -de 07_gas 1 62 2030 0.0 0.0 -de 08_non-res 1 62 2030 0.0 0.0 -de 09_hydro_pump 1 62 2030 0.0 0.0 -de 01_solar 1 63 2030 1.0 0.0 -de 02_wind_on 1 63 2030 1.0 0.0 -de 03_wind_off 1 63 2030 1.0 0.0 -de 04_res 1 63 2030 1.0 0.0 -de 05_nuclear 1 63 2030 0.0 0.0 -de 06_coal 1 63 2030 0.0 0.0 -de 07_gas 1 63 2030 0.0 0.0 -de 08_non-res 1 63 2030 0.0 0.0 -de 09_hydro_pump 1 63 2030 0.0 0.0 -de 01_solar 1 64 2030 1.0 0.0 -de 02_wind_on 1 64 2030 1.0 0.0 -de 03_wind_off 1 64 2030 1.0 0.0 -de 04_res 1 64 2030 1.0 0.0 -de 05_nuclear 1 64 2030 0.0 0.0 -de 06_coal 1 64 2030 0.0 0.0 -de 07_gas 1 64 2030 0.0 0.0 -de 08_non-res 1 64 2030 0.0 0.0 -de 09_hydro_pump 1 64 2030 0.0 0.0 -de 01_solar 1 65 2030 1.0 0.0 -de 02_wind_on 1 65 2030 1.0 0.0 -de 03_wind_off 1 65 2030 1.0 0.0 -de 04_res 1 65 2030 1.0 0.0 -de 05_nuclear 1 65 2030 0.0 0.0 -de 06_coal 1 65 2030 0.0 0.0 -de 07_gas 1 65 2030 0.0 0.0 -de 08_non-res 1 65 2030 0.0 0.0 -de 09_hydro_pump 1 65 2030 0.0 0.0 -de 01_solar 1 66 2030 1.0 0.0 -de 02_wind_on 1 66 2030 1.0 0.0 -de 03_wind_off 1 66 2030 1.0 0.0 -de 04_res 1 66 2030 1.0 0.0 -de 05_nuclear 1 66 2030 0.0 0.0 -de 06_coal 1 66 2030 0.0 0.0 -de 07_gas 1 66 2030 0.0 0.0 -de 08_non-res 1 66 2030 0.0 0.0 -de 09_hydro_pump 1 66 2030 0.0 0.0 -de 01_solar 1 67 2030 1.0 0.0 -de 02_wind_on 1 67 2030 1.0 0.0 -de 03_wind_off 1 67 2030 1.0 0.0 -de 04_res 1 67 2030 1.0 0.0 -de 05_nuclear 1 67 2030 0.0 0.0 -de 06_coal 1 67 2030 0.0 0.0 -de 07_gas 1 67 2030 0.0 0.0 -de 08_non-res 1 67 2030 0.0 0.0 -de 09_hydro_pump 1 67 2030 0.0 0.0 -de 01_solar 1 68 2030 1.0 0.0 -de 02_wind_on 1 68 2030 1.0 0.0 -de 03_wind_off 1 68 2030 1.0 0.0 -de 04_res 1 68 2030 1.0 0.0 -de 05_nuclear 1 68 2030 0.0 0.0 -de 06_coal 1 68 2030 0.0 0.0 -de 07_gas 1 68 2030 0.0 0.0 -de 08_non-res 1 68 2030 0.0 0.0 -de 09_hydro_pump 1 68 2030 0.0 0.0 -de 01_solar 1 69 2030 1.0 0.0 -de 02_wind_on 1 69 2030 1.0 0.0 -de 03_wind_off 1 69 2030 1.0 0.0 -de 04_res 1 69 2030 1.0 0.0 -de 05_nuclear 1 69 2030 0.0 0.0 -de 06_coal 1 69 2030 0.0 0.0 -de 07_gas 1 69 2030 0.0 0.0 -de 08_non-res 1 69 2030 0.0 0.0 -de 09_hydro_pump 1 69 2030 0.0 0.0 -de 01_solar 1 70 2030 1.0 0.0 -de 02_wind_on 1 70 2030 1.0 0.0 -de 03_wind_off 1 70 2030 1.0 0.0 -de 04_res 1 70 2030 1.0 0.0 -de 05_nuclear 1 70 2030 0.0 0.0 -de 06_coal 1 70 2030 0.0 0.0 -de 07_gas 1 70 2030 0.0 0.0 -de 08_non-res 1 70 2030 0.0 0.0 -de 09_hydro_pump 1 70 2030 0.0 0.0 -de 01_solar 1 71 2030 1.0 0.0 -de 02_wind_on 1 71 2030 1.0 0.0 -de 03_wind_off 1 71 2030 1.0 0.0 -de 04_res 1 71 2030 1.0 0.0 -de 05_nuclear 1 71 2030 0.0 0.0 -de 06_coal 1 71 2030 0.0 0.0 -de 07_gas 1 71 2030 0.0 0.0 -de 08_non-res 1 71 2030 0.0 0.0 -de 09_hydro_pump 1 71 2030 0.0 0.0 -de 01_solar 1 72 2030 1.0 0.0 -de 02_wind_on 1 72 2030 1.0 0.0 -de 03_wind_off 1 72 2030 1.0 0.0 -de 04_res 1 72 2030 1.0 0.0 -de 05_nuclear 1 72 2030 0.0 0.0 -de 06_coal 1 72 2030 0.0 0.0 -de 07_gas 1 72 2030 0.0 0.0 -de 08_non-res 1 72 2030 0.0 0.0 -de 09_hydro_pump 1 72 2030 0.0 0.0 -de 01_solar 1 73 2030 1.0 0.0 -de 02_wind_on 1 73 2030 1.0 0.0 -de 03_wind_off 1 73 2030 1.0 0.0 -de 04_res 1 73 2030 1.0 0.0 -de 05_nuclear 1 73 2030 0.0 0.0 -de 06_coal 1 73 2030 0.0 0.0 -de 07_gas 1 73 2030 0.0 0.0 -de 08_non-res 1 73 2030 0.0 0.0 -de 09_hydro_pump 1 73 2030 0.0 0.0 -de 01_solar 1 74 2030 1.0 0.0 -de 02_wind_on 1 74 2030 1.0 0.0 -de 03_wind_off 1 74 2030 1.0 0.0 -de 04_res 1 74 2030 1.0 0.0 -de 05_nuclear 1 74 2030 0.0 0.0 -de 06_coal 1 74 2030 0.0 0.0 -de 07_gas 1 74 2030 0.0 0.0 -de 08_non-res 1 74 2030 0.0 0.0 -de 09_hydro_pump 1 74 2030 0.0 0.0 -de 01_solar 1 75 2030 1.0 0.0 -de 02_wind_on 1 75 2030 1.0 0.0 -de 03_wind_off 1 75 2030 1.0 0.0 -de 04_res 1 75 2030 1.0 0.0 -de 05_nuclear 1 75 2030 0.0 0.0 -de 06_coal 1 75 2030 0.0 0.0 -de 07_gas 1 75 2030 0.0 0.0 -de 08_non-res 1 75 2030 0.0 0.0 -de 09_hydro_pump 1 75 2030 0.0 0.0 -de 01_solar 1 76 2030 1.0 0.0 -de 02_wind_on 1 76 2030 1.0 0.0 -de 03_wind_off 1 76 2030 1.0 0.0 -de 04_res 1 76 2030 1.0 0.0 -de 05_nuclear 1 76 2030 0.0 0.0 -de 06_coal 1 76 2030 0.0 0.0 -de 07_gas 1 76 2030 0.0 0.0 -de 08_non-res 1 76 2030 0.0 0.0 -de 09_hydro_pump 1 76 2030 0.0 0.0 -de 01_solar 1 77 2030 1.0 0.0 -de 02_wind_on 1 77 2030 1.0 0.0 -de 03_wind_off 1 77 2030 1.0 0.0 -de 04_res 1 77 2030 1.0 0.0 -de 05_nuclear 1 77 2030 0.0 0.0 -de 06_coal 1 77 2030 0.0 0.0 -de 07_gas 1 77 2030 0.0 0.0 -de 08_non-res 1 77 2030 0.0 0.0 -de 09_hydro_pump 1 77 2030 0.0 0.0 -de 01_solar 1 78 2030 1.0 0.0 -de 02_wind_on 1 78 2030 1.0 0.0 -de 03_wind_off 1 78 2030 1.0 0.0 -de 04_res 1 78 2030 1.0 0.0 -de 05_nuclear 1 78 2030 0.0 0.0 -de 06_coal 1 78 2030 0.0 0.0 -de 07_gas 1 78 2030 0.0 0.0 -de 08_non-res 1 78 2030 0.0 0.0 -de 09_hydro_pump 1 78 2030 0.0 0.0 -de 01_solar 1 79 2030 1.0 0.0 -de 02_wind_on 1 79 2030 1.0 0.0 -de 03_wind_off 1 79 2030 1.0 0.0 -de 04_res 1 79 2030 1.0 0.0 -de 05_nuclear 1 79 2030 0.0 0.0 -de 06_coal 1 79 2030 0.0 0.0 -de 07_gas 1 79 2030 0.0 0.0 -de 08_non-res 1 79 2030 0.0 0.0 -de 09_hydro_pump 1 79 2030 0.0 0.0 -de 01_solar 1 80 2030 1.0 0.0 -de 02_wind_on 1 80 2030 1.0 0.0 -de 03_wind_off 1 80 2030 1.0 0.0 -de 04_res 1 80 2030 1.0 0.0 -de 05_nuclear 1 80 2030 0.0 0.0 -de 06_coal 1 80 2030 0.0 0.0 -de 07_gas 1 80 2030 0.0 0.0 -de 08_non-res 1 80 2030 0.0 0.0 -de 09_hydro_pump 1 80 2030 0.0 0.0 -de 01_solar 1 81 2030 1.0 0.0 -de 02_wind_on 1 81 2030 1.0 0.0 -de 03_wind_off 1 81 2030 1.0 0.0 -de 04_res 1 81 2030 1.0 0.0 -de 05_nuclear 1 81 2030 0.0 0.0 -de 06_coal 1 81 2030 0.0 0.0 -de 07_gas 1 81 2030 0.0 0.0 -de 08_non-res 1 81 2030 0.0 0.0 -de 09_hydro_pump 1 81 2030 0.0 0.0 -de 01_solar 1 82 2030 1.0 0.0 -de 02_wind_on 1 82 2030 1.0 0.0 -de 03_wind_off 1 82 2030 1.0 0.0 -de 04_res 1 82 2030 1.0 0.0 -de 05_nuclear 1 82 2030 1.0 0.0 -de 06_coal 1 82 2030 0.0 0.0 -de 07_gas 1 82 2030 0.0 0.0 -de 08_non-res 1 82 2030 0.0 0.0 -de 09_hydro_pump 1 82 2030 0.0 0.0 -de 01_solar 1 83 2030 1.0 0.0 -de 02_wind_on 1 83 2030 1.0 0.0 -de 03_wind_off 1 83 2030 1.0 0.0 -de 04_res 1 83 2030 1.0 0.0 -de 05_nuclear 1 83 2030 1.0 0.0 -de 06_coal 1 83 2030 0.0 0.0 -de 07_gas 1 83 2030 0.0 0.0 -de 08_non-res 1 83 2030 0.0 0.0 -de 09_hydro_pump 1 83 2030 0.0 0.0 -de 01_solar 1 84 2030 1.0 0.0 -de 02_wind_on 1 84 2030 1.0 0.0 -de 03_wind_off 1 84 2030 1.0 0.0 -de 04_res 1 84 2030 1.0 0.0 -de 05_nuclear 1 84 2030 1.0 0.0 -de 06_coal 1 84 2030 0.0 0.0 -de 07_gas 1 84 2030 0.0 0.0 -de 08_non-res 1 84 2030 0.0 0.0 -de 09_hydro_pump 1 84 2030 0.0 0.0 -de 01_solar 1 85 2030 1.0 0.0 -de 02_wind_on 1 85 2030 1.0 0.0 -de 03_wind_off 1 85 2030 1.0 0.0 -de 04_res 1 85 2030 1.0 0.0 -de 05_nuclear 1 85 2030 1.0 0.0 -de 06_coal 1 85 2030 0.0 0.0 -de 07_gas 1 85 2030 0.0 0.0 -de 08_non-res 1 85 2030 0.0 0.0 -de 09_hydro_pump 1 85 2030 0.0 0.0 -de 01_solar 1 86 2030 1.0 0.0 -de 02_wind_on 1 86 2030 1.0 0.0 -de 03_wind_off 1 86 2030 1.0 0.0 -de 04_res 1 86 2030 1.0 0.0 -de 05_nuclear 1 86 2030 1.0 0.0 -de 06_coal 1 86 2030 0.0 0.0 -de 07_gas 1 86 2030 0.0 0.0 -de 08_non-res 1 86 2030 0.0 0.0 -de 09_hydro_pump 1 86 2030 0.0 0.0 -de 01_solar 1 87 2030 1.0 0.0 -de 02_wind_on 1 87 2030 1.0 0.0 -de 03_wind_off 1 87 2030 1.0 0.0 -de 04_res 1 87 2030 1.0 0.0 -de 05_nuclear 1 87 2030 1.0 0.0 -de 06_coal 1 87 2030 0.0 0.0 -de 07_gas 1 87 2030 0.0 0.0 -de 08_non-res 1 87 2030 0.0 0.0 -de 09_hydro_pump 1 87 2030 0.0 0.0 -de 01_solar 1 88 2030 1.0 0.0 -de 02_wind_on 1 88 2030 1.0 0.0 -de 03_wind_off 1 88 2030 1.0 0.0 -de 04_res 1 88 2030 1.0 0.0 -de 05_nuclear 1 88 2030 1.0 0.0 -de 06_coal 1 88 2030 0.0 0.0 -de 07_gas 1 88 2030 0.0 0.0 -de 08_non-res 1 88 2030 0.0 0.0 -de 09_hydro_pump 1 88 2030 0.0 0.0 -de 01_solar 1 89 2030 1.0 0.0 -de 02_wind_on 1 89 2030 1.0 0.0 -de 03_wind_off 1 89 2030 1.0 0.0 -de 04_res 1 89 2030 1.0 0.0 -de 05_nuclear 1 89 2030 1.0 0.0 -de 06_coal 1 89 2030 0.0 0.0 -de 07_gas 1 89 2030 0.0 0.0 -de 08_non-res 1 89 2030 0.0 0.0 -de 09_hydro_pump 1 89 2030 0.0 0.0 -de 01_solar 1 90 2030 1.0 0.0 -de 02_wind_on 1 90 2030 1.0 0.0 -de 03_wind_off 1 90 2030 1.0 0.0 -de 04_res 1 90 2030 1.0 0.0 -de 05_nuclear 1 90 2030 1.0 0.0 -de 06_coal 1 90 2030 0.0 0.0 -de 07_gas 1 90 2030 0.0 0.0 -de 08_non-res 1 90 2030 0.0 0.0 -de 09_hydro_pump 1 90 2030 0.0 0.0 -de 01_solar 1 91 2030 1.0 0.0 -de 02_wind_on 1 91 2030 1.0 0.0 -de 03_wind_off 1 91 2030 1.0 0.0 -de 04_res 1 91 2030 1.0 0.0 -de 05_nuclear 1 91 2030 1.0 0.0 -de 06_coal 1 91 2030 0.0 0.0 -de 07_gas 1 91 2030 0.0 0.0 -de 08_non-res 1 91 2030 0.0 0.0 -de 09_hydro_pump 1 91 2030 0.0 0.0 -de 01_solar 1 92 2030 1.0 0.0 -de 02_wind_on 1 92 2030 1.0 0.0 -de 03_wind_off 1 92 2030 1.0 0.0 -de 04_res 1 92 2030 1.0 0.0 -de 05_nuclear 1 92 2030 1.0 0.0 -de 06_coal 1 92 2030 0.0 0.0 -de 07_gas 1 92 2030 0.0 0.0 -de 08_non-res 1 92 2030 0.0 0.0 -de 09_hydro_pump 1 92 2030 0.0 0.0 -de 01_solar 1 93 2030 1.0 0.0 -de 02_wind_on 1 93 2030 1.0 0.0 -de 03_wind_off 1 93 2030 1.0 0.0 -de 04_res 1 93 2030 1.0 0.0 -de 05_nuclear 1 93 2030 1.0 0.0 -de 06_coal 1 93 2030 0.0 0.0 -de 07_gas 1 93 2030 0.0 0.0 -de 08_non-res 1 93 2030 0.0 0.0 -de 09_hydro_pump 1 93 2030 0.0 0.0 -de 01_solar 1 94 2030 1.0 0.0 -de 02_wind_on 1 94 2030 1.0 0.0 -de 03_wind_off 1 94 2030 1.0 0.0 -de 04_res 1 94 2030 1.0 0.0 -de 05_nuclear 1 94 2030 1.0 0.0 -de 06_coal 1 94 2030 0.0 0.0 -de 07_gas 1 94 2030 0.0 0.0 -de 08_non-res 1 94 2030 0.0 0.0 -de 09_hydro_pump 1 94 2030 0.0 0.0 -de 01_solar 1 95 2030 1.0 0.0 -de 02_wind_on 1 95 2030 1.0 0.0 -de 03_wind_off 1 95 2030 1.0 0.0 -de 04_res 1 95 2030 1.0 0.0 -de 05_nuclear 1 95 2030 1.0 0.0 -de 06_coal 1 95 2030 0.0 0.0 -de 07_gas 1 95 2030 0.0 0.0 -de 08_non-res 1 95 2030 0.0 0.0 -de 09_hydro_pump 1 95 2030 0.0 0.0 -de 01_solar 1 96 2030 1.0 0.0 -de 02_wind_on 1 96 2030 1.0 0.0 -de 03_wind_off 1 96 2030 1.0 0.0 -de 04_res 1 96 2030 1.0 0.0 -de 05_nuclear 1 96 2030 1.0 0.0 -de 06_coal 1 96 2030 0.0 0.0 -de 07_gas 1 96 2030 0.0 0.0 -de 08_non-res 1 96 2030 0.0 0.0 -de 09_hydro_pump 1 96 2030 0.0 0.0 -de 01_solar 1 97 2030 1.0 0.0 -de 02_wind_on 1 97 2030 1.0 0.0 -de 03_wind_off 1 97 2030 1.0 0.0 -de 04_res 1 97 2030 1.0 0.0 -de 05_nuclear 1 97 2030 1.0 0.0 -de 06_coal 1 97 2030 0.0 0.0 -de 07_gas 1 97 2030 0.0 0.0 -de 08_non-res 1 97 2030 0.0 0.0 -de 09_hydro_pump 1 97 2030 0.0 0.0 -de 01_solar 1 98 2030 1.0 0.0 -de 02_wind_on 1 98 2030 1.0 0.0 -de 03_wind_off 1 98 2030 1.0 0.0 -de 04_res 1 98 2030 1.0 0.0 -de 05_nuclear 1 98 2030 1.0 0.0 -de 06_coal 1 98 2030 0.0 0.0 -de 07_gas 1 98 2030 0.0 0.0 -de 08_non-res 1 98 2030 0.0 0.0 -de 09_hydro_pump 1 98 2030 0.0 0.0 -de 01_solar 1 99 2030 1.0 0.0 -de 02_wind_on 1 99 2030 1.0 0.0 -de 03_wind_off 1 99 2030 1.0 0.0 -de 04_res 1 99 2030 1.0 0.0 -de 05_nuclear 1 99 2030 1.0 0.0 -de 06_coal 1 99 2030 0.0 0.0 -de 07_gas 1 99 2030 0.0 0.0 -de 08_non-res 1 99 2030 0.0 0.0 -de 09_hydro_pump 1 99 2030 0.0 0.0 -de 01_solar 1 100 2030 1.0 0.0 -de 02_wind_on 1 100 2030 1.0 0.0 -de 03_wind_off 1 100 2030 1.0 0.0 -de 04_res 1 100 2030 1.0 0.0 -de 05_nuclear 1 100 2030 1.0 0.0 -de 06_coal 1 100 2030 0.0 0.0 -de 07_gas 1 100 2030 0.0 0.0 -de 08_non-res 1 100 2030 0.0 0.0 -de 09_hydro_pump 1 100 2030 0.0 0.0 -de 01_solar 1 101 2030 1.0 0.0 -de 02_wind_on 1 101 2030 1.0 0.0 -de 03_wind_off 1 101 2030 1.0 0.0 -de 04_res 1 101 2030 1.0 0.0 -de 05_nuclear 1 101 2030 1.0 0.0 -de 06_coal 1 101 2030 0.0 0.0 -de 07_gas 1 101 2030 0.0 0.0 -de 08_non-res 1 101 2030 0.0 0.0 -de 09_hydro_pump 1 101 2030 0.0 0.0 -de 01_solar 1 102 2030 1.0 0.0 -de 02_wind_on 1 102 2030 1.0 0.0 -de 03_wind_off 1 102 2030 1.0 0.0 -de 04_res 1 102 2030 1.0 0.0 -de 05_nuclear 1 102 2030 1.0 0.0 -de 06_coal 1 102 2030 1.0 0.0 -de 07_gas 1 102 2030 0.0 0.0 -de 08_non-res 1 102 2030 0.0 0.0 -de 09_hydro_pump 1 102 2030 0.0 0.0 -de 01_solar 1 103 2030 1.0 0.0 -de 02_wind_on 1 103 2030 1.0 0.0 -de 03_wind_off 1 103 2030 1.0 0.0 -de 04_res 1 103 2030 1.0 0.0 -de 05_nuclear 1 103 2030 1.0 0.0 -de 06_coal 1 103 2030 1.0 0.0 -de 07_gas 1 103 2030 0.0 0.0 -de 08_non-res 1 103 2030 0.0 0.0 -de 09_hydro_pump 1 103 2030 0.0 0.0 -de 01_solar 1 104 2030 1.0 0.0 -de 02_wind_on 1 104 2030 1.0 0.0 -de 03_wind_off 1 104 2030 1.0 0.0 -de 04_res 1 104 2030 1.0 0.0 -de 05_nuclear 1 104 2030 1.0 0.0 -de 06_coal 1 104 2030 1.0 0.0 -de 07_gas 1 104 2030 0.0 0.0 -de 08_non-res 1 104 2030 0.0 0.0 -de 09_hydro_pump 1 104 2030 0.0 0.0 -de 01_solar 1 105 2030 1.0 0.0 -de 02_wind_on 1 105 2030 1.0 0.0 -de 03_wind_off 1 105 2030 1.0 0.0 -de 04_res 1 105 2030 1.0 0.0 -de 05_nuclear 1 105 2030 1.0 0.0 -de 06_coal 1 105 2030 1.0 0.0 -de 07_gas 1 105 2030 0.0 0.0 -de 08_non-res 1 105 2030 0.0 0.0 -de 09_hydro_pump 1 105 2030 0.0 0.0 -de 01_solar 1 106 2030 1.0 0.0 -de 02_wind_on 1 106 2030 1.0 0.0 -de 03_wind_off 1 106 2030 1.0 0.0 -de 04_res 1 106 2030 1.0 0.0 -de 05_nuclear 1 106 2030 1.0 0.0 -de 06_coal 1 106 2030 1.0 0.0 -de 07_gas 1 106 2030 0.0 0.0 -de 08_non-res 1 106 2030 0.0 0.0 -de 09_hydro_pump 1 106 2030 0.0 0.0 -de 01_solar 1 107 2030 1.0 0.0 -de 02_wind_on 1 107 2030 1.0 0.0 -de 03_wind_off 1 107 2030 1.0 0.0 -de 04_res 1 107 2030 1.0 0.0 -de 05_nuclear 1 107 2030 1.0 0.0 -de 06_coal 1 107 2030 1.0 0.0 -de 07_gas 1 107 2030 0.0 0.0 -de 08_non-res 1 107 2030 0.0 0.0 -de 09_hydro_pump 1 107 2030 0.0 0.0 -de 01_solar 1 108 2030 1.0 0.0 -de 02_wind_on 1 108 2030 1.0 0.0 -de 03_wind_off 1 108 2030 1.0 0.0 -de 04_res 1 108 2030 1.0 0.0 -de 05_nuclear 1 108 2030 1.0 0.0 -de 06_coal 1 108 2030 1.0 0.0 -de 07_gas 1 108 2030 0.0 0.0 -de 08_non-res 1 108 2030 0.0 0.0 -de 09_hydro_pump 1 108 2030 0.0 0.0 -de 01_solar 1 109 2030 1.0 0.0 -de 02_wind_on 1 109 2030 1.0 0.0 -de 03_wind_off 1 109 2030 1.0 0.0 -de 04_res 1 109 2030 1.0 0.0 -de 05_nuclear 1 109 2030 1.0 0.0 -de 06_coal 1 109 2030 1.0 0.0 -de 07_gas 1 109 2030 0.0 0.0 -de 08_non-res 1 109 2030 0.0 0.0 -de 09_hydro_pump 1 109 2030 0.0 0.0 -de 01_solar 1 110 2030 1.0 0.0 -de 02_wind_on 1 110 2030 1.0 0.0 -de 03_wind_off 1 110 2030 1.0 0.0 -de 04_res 1 110 2030 1.0 0.0 -de 05_nuclear 1 110 2030 1.0 0.0 -de 06_coal 1 110 2030 1.0 0.0 -de 07_gas 1 110 2030 0.0 0.0 -de 08_non-res 1 110 2030 0.0 0.0 -de 09_hydro_pump 1 110 2030 0.0 0.0 -de 01_solar 1 111 2030 1.0 0.0 -de 02_wind_on 1 111 2030 1.0 0.0 -de 03_wind_off 1 111 2030 1.0 0.0 -de 04_res 1 111 2030 1.0 0.0 -de 05_nuclear 1 111 2030 1.0 0.0 -de 06_coal 1 111 2030 1.0 0.0 -de 07_gas 1 111 2030 0.0 0.0 -de 08_non-res 1 111 2030 0.0 0.0 -de 09_hydro_pump 1 111 2030 0.0 0.0 -de 01_solar 1 112 2030 1.0 0.0 -de 02_wind_on 1 112 2030 1.0 0.0 -de 03_wind_off 1 112 2030 1.0 0.0 -de 04_res 1 112 2030 1.0 0.0 -de 05_nuclear 1 112 2030 1.0 0.0 -de 06_coal 1 112 2030 1.0 0.0 -de 07_gas 1 112 2030 0.0 0.0 -de 08_non-res 1 112 2030 0.0 0.0 -de 09_hydro_pump 1 112 2030 0.0 0.0 -de 01_solar 1 113 2030 1.0 0.0 -de 02_wind_on 1 113 2030 1.0 0.0 -de 03_wind_off 1 113 2030 1.0 0.0 -de 04_res 1 113 2030 1.0 0.0 -de 05_nuclear 1 113 2030 1.0 0.0 -de 06_coal 1 113 2030 1.0 0.0 -de 07_gas 1 113 2030 0.0 0.0 -de 08_non-res 1 113 2030 0.0 0.0 -de 09_hydro_pump 1 113 2030 0.0 0.0 -de 01_solar 1 114 2030 1.0 0.0 -de 02_wind_on 1 114 2030 1.0 0.0 -de 03_wind_off 1 114 2030 1.0 0.0 -de 04_res 1 114 2030 1.0 0.0 -de 05_nuclear 1 114 2030 1.0 0.0 -de 06_coal 1 114 2030 1.0 0.0 -de 07_gas 1 114 2030 0.0 0.0 -de 08_non-res 1 114 2030 0.0 0.0 -de 09_hydro_pump 1 114 2030 0.0 0.0 -de 01_solar 1 115 2030 1.0 0.0 -de 02_wind_on 1 115 2030 1.0 0.0 -de 03_wind_off 1 115 2030 1.0 0.0 -de 04_res 1 115 2030 1.0 0.0 -de 05_nuclear 1 115 2030 1.0 0.0 -de 06_coal 1 115 2030 1.0 0.0 -de 07_gas 1 115 2030 0.0 0.0 -de 08_non-res 1 115 2030 0.0 0.0 -de 09_hydro_pump 1 115 2030 0.0 0.0 -de 01_solar 1 116 2030 1.0 0.0 -de 02_wind_on 1 116 2030 1.0 0.0 -de 03_wind_off 1 116 2030 1.0 0.0 -de 04_res 1 116 2030 1.0 0.0 -de 05_nuclear 1 116 2030 1.0 0.0 -de 06_coal 1 116 2030 1.0 0.0 -de 07_gas 1 116 2030 0.0 0.0 -de 08_non-res 1 116 2030 0.0 0.0 -de 09_hydro_pump 1 116 2030 0.0 0.0 -de 01_solar 1 117 2030 1.0 0.0 -de 02_wind_on 1 117 2030 1.0 0.0 -de 03_wind_off 1 117 2030 1.0 0.0 -de 04_res 1 117 2030 1.0 0.0 -de 05_nuclear 1 117 2030 1.0 0.0 -de 06_coal 1 117 2030 1.0 0.0 -de 07_gas 1 117 2030 0.0 0.0 -de 08_non-res 1 117 2030 0.0 0.0 -de 09_hydro_pump 1 117 2030 0.0 0.0 -de 01_solar 1 118 2030 1.0 0.0 -de 02_wind_on 1 118 2030 1.0 0.0 -de 03_wind_off 1 118 2030 1.0 0.0 -de 04_res 1 118 2030 1.0 0.0 -de 05_nuclear 1 118 2030 1.0 0.0 -de 06_coal 1 118 2030 1.0 0.0 -de 07_gas 1 118 2030 0.0 0.0 -de 08_non-res 1 118 2030 0.0 0.0 -de 09_hydro_pump 1 118 2030 0.0 0.0 -de 01_solar 1 119 2030 1.0 0.0 -de 02_wind_on 1 119 2030 1.0 0.0 -de 03_wind_off 1 119 2030 1.0 0.0 -de 04_res 1 119 2030 1.0 0.0 -de 05_nuclear 1 119 2030 1.0 0.0 -de 06_coal 1 119 2030 1.0 0.0 -de 07_gas 1 119 2030 0.0 0.0 -de 08_non-res 1 119 2030 0.0 0.0 -de 09_hydro_pump 1 119 2030 0.0 0.0 -de 01_solar 1 120 2030 1.0 0.0 -de 02_wind_on 1 120 2030 1.0 0.0 -de 03_wind_off 1 120 2030 1.0 0.0 -de 04_res 1 120 2030 1.0 0.0 -de 05_nuclear 1 120 2030 1.0 0.0 -de 06_coal 1 120 2030 1.0 0.0 -de 07_gas 1 120 2030 0.0 0.0 -de 08_non-res 1 120 2030 0.0 0.0 -de 09_hydro_pump 1 120 2030 0.0 0.0 -de 01_solar 1 121 2030 1.0 0.0 -de 02_wind_on 1 121 2030 1.0 0.0 -de 03_wind_off 1 121 2030 1.0 0.0 -de 04_res 1 121 2030 1.0 0.0 -de 05_nuclear 1 121 2030 1.0 0.0 -de 06_coal 1 121 2030 1.0 0.0 -de 07_gas 1 121 2030 0.0 0.0 -de 08_non-res 1 121 2030 0.0 0.0 -de 09_hydro_pump 1 121 2030 0.0 0.0 -de 01_solar 1 122 2030 1.0 0.0 -de 02_wind_on 1 122 2030 1.0 0.0 -de 03_wind_off 1 122 2030 1.0 0.0 -de 04_res 1 122 2030 1.0 0.0 -de 05_nuclear 1 122 2030 1.0 0.0 -de 06_coal 1 122 2030 1.0 0.0 -de 07_gas 1 122 2030 1.0 0.0 -de 08_non-res 1 122 2030 0.0 0.0 -de 09_hydro_pump 1 122 2030 0.0 0.0 -de 01_solar 1 123 2030 1.0 0.0 -de 02_wind_on 1 123 2030 1.0 0.0 -de 03_wind_off 1 123 2030 1.0 0.0 -de 04_res 1 123 2030 1.0 0.0 -de 05_nuclear 1 123 2030 1.0 0.0 -de 06_coal 1 123 2030 1.0 0.0 -de 07_gas 1 123 2030 1.0 0.0 -de 08_non-res 1 123 2030 0.0 0.0 -de 09_hydro_pump 1 123 2030 0.0 0.0 -de 01_solar 1 124 2030 1.0 0.0 -de 02_wind_on 1 124 2030 1.0 0.0 -de 03_wind_off 1 124 2030 1.0 0.0 -de 04_res 1 124 2030 1.0 0.0 -de 05_nuclear 1 124 2030 1.0 0.0 -de 06_coal 1 124 2030 1.0 0.0 -de 07_gas 1 124 2030 1.0 0.0 -de 08_non-res 1 124 2030 0.0 0.0 -de 09_hydro_pump 1 124 2030 0.0 0.0 -de 01_solar 1 125 2030 1.0 0.0 -de 02_wind_on 1 125 2030 1.0 0.0 -de 03_wind_off 1 125 2030 1.0 0.0 -de 04_res 1 125 2030 1.0 0.0 -de 05_nuclear 1 125 2030 1.0 0.0 -de 06_coal 1 125 2030 1.0 0.0 -de 07_gas 1 125 2030 1.0 0.0 -de 08_non-res 1 125 2030 0.0 0.0 -de 09_hydro_pump 1 125 2030 0.0 0.0 -de 01_solar 1 126 2030 1.0 0.0 -de 02_wind_on 1 126 2030 1.0 0.0 -de 03_wind_off 1 126 2030 1.0 0.0 -de 04_res 1 126 2030 1.0 0.0 -de 05_nuclear 1 126 2030 1.0 0.0 -de 06_coal 1 126 2030 1.0 0.0 -de 07_gas 1 126 2030 1.0 0.0 -de 08_non-res 1 126 2030 0.0 0.0 -de 09_hydro_pump 1 126 2030 0.0 0.0 -de 01_solar 1 127 2030 1.0 0.0 -de 02_wind_on 1 127 2030 1.0 0.0 -de 03_wind_off 1 127 2030 1.0 0.0 -de 04_res 1 127 2030 1.0 0.0 -de 05_nuclear 1 127 2030 1.0 0.0 -de 06_coal 1 127 2030 1.0 0.0 -de 07_gas 1 127 2030 1.0 0.0 -de 08_non-res 1 127 2030 0.0 0.0 -de 09_hydro_pump 1 127 2030 0.0 0.0 -de 01_solar 1 128 2030 1.0 0.0 -de 02_wind_on 1 128 2030 1.0 0.0 -de 03_wind_off 1 128 2030 1.0 0.0 -de 04_res 1 128 2030 1.0 0.0 -de 05_nuclear 1 128 2030 1.0 0.0 -de 06_coal 1 128 2030 1.0 0.0 -de 07_gas 1 128 2030 1.0 0.0 -de 08_non-res 1 128 2030 0.0 0.0 -de 09_hydro_pump 1 128 2030 0.0 0.0 -de 01_solar 1 129 2030 1.0 0.0 -de 02_wind_on 1 129 2030 1.0 0.0 -de 03_wind_off 1 129 2030 1.0 0.0 -de 04_res 1 129 2030 1.0 0.0 -de 05_nuclear 1 129 2030 1.0 0.0 -de 06_coal 1 129 2030 1.0 0.0 -de 07_gas 1 129 2030 1.0 0.0 -de 08_non-res 1 129 2030 0.0 0.0 -de 09_hydro_pump 1 129 2030 0.0 0.0 -de 01_solar 1 130 2030 1.0 0.0 -de 02_wind_on 1 130 2030 1.0 0.0 -de 03_wind_off 1 130 2030 1.0 0.0 -de 04_res 1 130 2030 1.0 0.0 -de 05_nuclear 1 130 2030 1.0 0.0 -de 06_coal 1 130 2030 1.0 0.0 -de 07_gas 1 130 2030 1.0 0.0 -de 08_non-res 1 130 2030 0.0 0.0 -de 09_hydro_pump 1 130 2030 0.0 0.0 -de 01_solar 1 131 2030 1.0 0.0 -de 02_wind_on 1 131 2030 1.0 0.0 -de 03_wind_off 1 131 2030 1.0 0.0 -de 04_res 1 131 2030 1.0 0.0 -de 05_nuclear 1 131 2030 1.0 0.0 -de 06_coal 1 131 2030 1.0 0.0 -de 07_gas 1 131 2030 1.0 0.0 -de 08_non-res 1 131 2030 0.0 0.0 -de 09_hydro_pump 1 131 2030 0.0 0.0 -de 01_solar 1 132 2030 1.0 0.0 -de 02_wind_on 1 132 2030 1.0 0.0 -de 03_wind_off 1 132 2030 1.0 0.0 -de 04_res 1 132 2030 1.0 0.0 -de 05_nuclear 1 132 2030 1.0 0.0 -de 06_coal 1 132 2030 1.0 0.0 -de 07_gas 1 132 2030 1.0 0.0 -de 08_non-res 1 132 2030 0.0 0.0 -de 09_hydro_pump 1 132 2030 0.0 0.0 -de 01_solar 1 133 2030 1.0 0.0 -de 02_wind_on 1 133 2030 1.0 0.0 -de 03_wind_off 1 133 2030 1.0 0.0 -de 04_res 1 133 2030 1.0 0.0 -de 05_nuclear 1 133 2030 1.0 0.0 -de 06_coal 1 133 2030 1.0 0.0 -de 07_gas 1 133 2030 1.0 0.0 -de 08_non-res 1 133 2030 0.0 0.0 -de 09_hydro_pump 1 133 2030 0.0 0.0 -de 01_solar 1 134 2030 1.0 0.0 -de 02_wind_on 1 134 2030 1.0 0.0 -de 03_wind_off 1 134 2030 1.0 0.0 -de 04_res 1 134 2030 1.0 0.0 -de 05_nuclear 1 134 2030 1.0 0.0 -de 06_coal 1 134 2030 1.0 0.0 -de 07_gas 1 134 2030 1.0 0.0 -de 08_non-res 1 134 2030 0.0 0.0 -de 09_hydro_pump 1 134 2030 0.0 0.0 -de 01_solar 1 135 2030 1.0 0.0 -de 02_wind_on 1 135 2030 1.0 0.0 -de 03_wind_off 1 135 2030 1.0 0.0 -de 04_res 1 135 2030 1.0 0.0 -de 05_nuclear 1 135 2030 1.0 0.0 -de 06_coal 1 135 2030 1.0 0.0 -de 07_gas 1 135 2030 1.0 0.0 -de 08_non-res 1 135 2030 0.0 0.0 -de 09_hydro_pump 1 135 2030 0.0 0.0 -de 01_solar 1 136 2030 1.0 0.0 -de 02_wind_on 1 136 2030 1.0 0.0 -de 03_wind_off 1 136 2030 1.0 0.0 -de 04_res 1 136 2030 1.0 0.0 -de 05_nuclear 1 136 2030 1.0 0.0 -de 06_coal 1 136 2030 1.0 0.0 -de 07_gas 1 136 2030 1.0 0.0 -de 08_non-res 1 136 2030 0.0 0.0 -de 09_hydro_pump 1 136 2030 0.0 0.0 -de 01_solar 1 137 2030 1.0 0.0 -de 02_wind_on 1 137 2030 1.0 0.0 -de 03_wind_off 1 137 2030 1.0 0.0 -de 04_res 1 137 2030 1.0 0.0 -de 05_nuclear 1 137 2030 1.0 0.0 -de 06_coal 1 137 2030 1.0 0.0 -de 07_gas 1 137 2030 1.0 0.0 -de 08_non-res 1 137 2030 0.0 0.0 -de 09_hydro_pump 1 137 2030 0.0 0.0 -de 01_solar 1 138 2030 1.0 0.0 -de 02_wind_on 1 138 2030 1.0 0.0 -de 03_wind_off 1 138 2030 1.0 0.0 -de 04_res 1 138 2030 1.0 0.0 -de 05_nuclear 1 138 2030 1.0 0.0 -de 06_coal 1 138 2030 1.0 0.0 -de 07_gas 1 138 2030 1.0 0.0 -de 08_non-res 1 138 2030 0.0 0.0 -de 09_hydro_pump 1 138 2030 0.0 0.0 -de 01_solar 1 139 2030 1.0 0.0 -de 02_wind_on 1 139 2030 1.0 0.0 -de 03_wind_off 1 139 2030 1.0 0.0 -de 04_res 1 139 2030 1.0 0.0 -de 05_nuclear 1 139 2030 1.0 0.0 -de 06_coal 1 139 2030 1.0 0.0 -de 07_gas 1 139 2030 1.0 0.0 -de 08_non-res 1 139 2030 0.0 0.0 -de 09_hydro_pump 1 139 2030 0.0 0.0 -de 01_solar 1 140 2030 1.0 0.0 -de 02_wind_on 1 140 2030 1.0 0.0 -de 03_wind_off 1 140 2030 1.0 0.0 -de 04_res 1 140 2030 1.0 0.0 -de 05_nuclear 1 140 2030 1.0 0.0 -de 06_coal 1 140 2030 1.0 0.0 -de 07_gas 1 140 2030 1.0 0.0 -de 08_non-res 1 140 2030 0.0 0.0 -de 09_hydro_pump 1 140 2030 0.0 0.0 -de 01_solar 1 141 2030 1.0 0.0 -de 02_wind_on 1 141 2030 1.0 0.0 -de 03_wind_off 1 141 2030 1.0 0.0 -de 04_res 1 141 2030 1.0 0.0 -de 05_nuclear 1 141 2030 1.0 0.0 -de 06_coal 1 141 2030 1.0 0.0 -de 07_gas 1 141 2030 1.0 0.0 -de 08_non-res 1 141 2030 0.0 0.0 -de 09_hydro_pump 1 141 2030 0.0 0.0 -de 01_solar 1 142 2030 1.0 0.0 -de 02_wind_on 1 142 2030 1.0 0.0 -de 03_wind_off 1 142 2030 1.0 0.0 -de 04_res 1 142 2030 1.0 0.0 -de 05_nuclear 1 142 2030 1.0 0.0 -de 06_coal 1 142 2030 1.0 0.0 -de 07_gas 1 142 2030 1.0 0.0 -de 08_non-res 1 142 2030 1.0 0.0 -de 09_hydro_pump 1 142 2030 0.0 0.0 -de 01_solar 1 143 2030 1.0 0.0 -de 02_wind_on 1 143 2030 1.0 0.0 -de 03_wind_off 1 143 2030 1.0 0.0 -de 04_res 1 143 2030 1.0 0.0 -de 05_nuclear 1 143 2030 1.0 0.0 -de 06_coal 1 143 2030 1.0 0.0 -de 07_gas 1 143 2030 1.0 0.0 -de 08_non-res 1 143 2030 1.0 0.0 -de 09_hydro_pump 1 143 2030 0.0 0.0 -de 01_solar 1 144 2030 1.0 0.0 -de 02_wind_on 1 144 2030 1.0 0.0 -de 03_wind_off 1 144 2030 1.0 0.0 -de 04_res 1 144 2030 1.0 0.0 -de 05_nuclear 1 144 2030 1.0 0.0 -de 06_coal 1 144 2030 1.0 0.0 -de 07_gas 1 144 2030 1.0 0.0 -de 08_non-res 1 144 2030 1.0 0.0 -de 09_hydro_pump 1 144 2030 0.0 0.0 -de 01_solar 1 145 2030 1.0 0.0 -de 02_wind_on 1 145 2030 1.0 0.0 -de 03_wind_off 1 145 2030 1.0 0.0 -de 04_res 1 145 2030 1.0 0.0 -de 05_nuclear 1 145 2030 1.0 0.0 -de 06_coal 1 145 2030 1.0 0.0 -de 07_gas 1 145 2030 1.0 0.0 -de 08_non-res 1 145 2030 1.0 0.0 -de 09_hydro_pump 1 145 2030 0.0 0.0 -de 01_solar 1 146 2030 1.0 0.0 -de 02_wind_on 1 146 2030 1.0 0.0 -de 03_wind_off 1 146 2030 1.0 0.0 -de 04_res 1 146 2030 1.0 0.0 -de 05_nuclear 1 146 2030 1.0 0.0 -de 06_coal 1 146 2030 1.0 0.0 -de 07_gas 1 146 2030 1.0 0.0 -de 08_non-res 1 146 2030 1.0 0.0 -de 09_hydro_pump 1 146 2030 0.0 0.0 -de 01_solar 1 147 2030 1.0 0.0 -de 02_wind_on 1 147 2030 1.0 0.0 -de 03_wind_off 1 147 2030 1.0 0.0 -de 04_res 1 147 2030 1.0 0.0 -de 05_nuclear 1 147 2030 1.0 0.0 -de 06_coal 1 147 2030 1.0 0.0 -de 07_gas 1 147 2030 1.0 0.0 -de 08_non-res 1 147 2030 1.0 0.0 -de 09_hydro_pump 1 147 2030 0.0 0.0 -de 01_solar 1 148 2030 1.0 0.0 -de 02_wind_on 1 148 2030 1.0 0.0 -de 03_wind_off 1 148 2030 1.0 0.0 -de 04_res 1 148 2030 1.0 0.0 -de 05_nuclear 1 148 2030 1.0 0.0 -de 06_coal 1 148 2030 1.0 0.0 -de 07_gas 1 148 2030 1.0 0.0 -de 08_non-res 1 148 2030 1.0 0.0 -de 09_hydro_pump 1 148 2030 0.0 0.0 -de 01_solar 1 149 2030 1.0 0.0 -de 02_wind_on 1 149 2030 1.0 0.0 -de 03_wind_off 1 149 2030 1.0 0.0 -de 04_res 1 149 2030 1.0 0.0 -de 05_nuclear 1 149 2030 1.0 0.0 -de 06_coal 1 149 2030 1.0 0.0 -de 07_gas 1 149 2030 1.0 0.0 -de 08_non-res 1 149 2030 1.0 0.0 -de 09_hydro_pump 1 149 2030 0.0 0.0 -de 01_solar 1 150 2030 1.0 0.0 -de 02_wind_on 1 150 2030 1.0 0.0 -de 03_wind_off 1 150 2030 1.0 0.0 -de 04_res 1 150 2030 1.0 0.0 -de 05_nuclear 1 150 2030 1.0 0.0 -de 06_coal 1 150 2030 1.0 0.0 -de 07_gas 1 150 2030 1.0 0.0 -de 08_non-res 1 150 2030 1.0 0.0 -de 09_hydro_pump 1 150 2030 0.0 0.0 -de 01_solar 1 151 2030 1.0 0.0 -de 02_wind_on 1 151 2030 1.0 0.0 -de 03_wind_off 1 151 2030 1.0 0.0 -de 04_res 1 151 2030 1.0 0.0 -de 05_nuclear 1 151 2030 1.0 0.0 -de 06_coal 1 151 2030 1.0 0.0 -de 07_gas 1 151 2030 1.0 0.0 -de 08_non-res 1 151 2030 1.0 0.0 -de 09_hydro_pump 1 151 2030 0.0 0.0 -de 01_solar 1 152 2030 1.0 0.0 -de 02_wind_on 1 152 2030 1.0 0.0 -de 03_wind_off 1 152 2030 1.0 0.0 -de 04_res 1 152 2030 1.0 0.0 -de 05_nuclear 1 152 2030 1.0 0.0 -de 06_coal 1 152 2030 1.0 0.0 -de 07_gas 1 152 2030 1.0 0.0 -de 08_non-res 1 152 2030 1.0 0.0 -de 09_hydro_pump 1 152 2030 0.0 0.0 -de 01_solar 1 153 2030 1.0 0.0 -de 02_wind_on 1 153 2030 1.0 0.0 -de 03_wind_off 1 153 2030 1.0 0.0 -de 04_res 1 153 2030 1.0 0.0 -de 05_nuclear 1 153 2030 1.0 0.0 -de 06_coal 1 153 2030 1.0 0.0 -de 07_gas 1 153 2030 1.0 0.0 -de 08_non-res 1 153 2030 1.0 0.0 -de 09_hydro_pump 1 153 2030 0.0 0.0 -de 01_solar 1 154 2030 1.0 0.0 -de 02_wind_on 1 154 2030 1.0 0.0 -de 03_wind_off 1 154 2030 1.0 0.0 -de 04_res 1 154 2030 1.0 0.0 -de 05_nuclear 1 154 2030 1.0 0.0 -de 06_coal 1 154 2030 1.0 0.0 -de 07_gas 1 154 2030 1.0 0.0 -de 08_non-res 1 154 2030 1.0 0.0 -de 09_hydro_pump 1 154 2030 0.0 0.0 -de 01_solar 1 155 2030 1.0 0.0 -de 02_wind_on 1 155 2030 1.0 0.0 -de 03_wind_off 1 155 2030 1.0 0.0 -de 04_res 1 155 2030 1.0 0.0 -de 05_nuclear 1 155 2030 1.0 0.0 -de 06_coal 1 155 2030 1.0 0.0 -de 07_gas 1 155 2030 1.0 0.0 -de 08_non-res 1 155 2030 1.0 0.0 -de 09_hydro_pump 1 155 2030 0.0 0.0 -de 01_solar 1 156 2030 1.0 0.0 -de 02_wind_on 1 156 2030 1.0 0.0 -de 03_wind_off 1 156 2030 1.0 0.0 -de 04_res 1 156 2030 1.0 0.0 -de 05_nuclear 1 156 2030 1.0 0.0 -de 06_coal 1 156 2030 1.0 0.0 -de 07_gas 1 156 2030 1.0 0.0 -de 08_non-res 1 156 2030 1.0 0.0 -de 09_hydro_pump 1 156 2030 0.0 0.0 -de 01_solar 1 157 2030 1.0 0.0 -de 02_wind_on 1 157 2030 1.0 0.0 -de 03_wind_off 1 157 2030 1.0 0.0 -de 04_res 1 157 2030 1.0 0.0 -de 05_nuclear 1 157 2030 1.0 0.0 -de 06_coal 1 157 2030 1.0 0.0 -de 07_gas 1 157 2030 1.0 0.0 -de 08_non-res 1 157 2030 1.0 0.0 -de 09_hydro_pump 1 157 2030 0.0 0.0 -de 01_solar 1 158 2030 1.0 0.0 -de 02_wind_on 1 158 2030 1.0 0.0 -de 03_wind_off 1 158 2030 1.0 0.0 -de 04_res 1 158 2030 1.0 0.0 -de 05_nuclear 1 158 2030 1.0 0.0 -de 06_coal 1 158 2030 1.0 0.0 -de 07_gas 1 158 2030 1.0 0.0 -de 08_non-res 1 158 2030 1.0 0.0 -de 09_hydro_pump 1 158 2030 0.0 0.0 -de 01_solar 1 159 2030 1.0 0.0 -de 02_wind_on 1 159 2030 1.0 0.0 -de 03_wind_off 1 159 2030 1.0 0.0 -de 04_res 1 159 2030 1.0 0.0 -de 05_nuclear 1 159 2030 1.0 0.0 -de 06_coal 1 159 2030 1.0 0.0 -de 07_gas 1 159 2030 1.0 0.0 -de 08_non-res 1 159 2030 1.0 0.0 -de 09_hydro_pump 1 159 2030 0.0 0.0 -de 01_solar 1 160 2030 1.0 0.0 -de 02_wind_on 1 160 2030 1.0 0.0 -de 03_wind_off 1 160 2030 1.0 0.0 -de 04_res 1 160 2030 1.0 0.0 -de 05_nuclear 1 160 2030 1.0 0.0 -de 06_coal 1 160 2030 1.0 0.0 -de 07_gas 1 160 2030 1.0 0.0 -de 08_non-res 1 160 2030 1.0 0.0 -de 09_hydro_pump 1 160 2030 0.0 0.0 -de 01_solar 1 161 2030 1.0 0.0 -de 02_wind_on 1 161 2030 1.0 0.0 -de 03_wind_off 1 161 2030 1.0 0.0 -de 04_res 1 161 2030 1.0 0.0 -de 05_nuclear 1 161 2030 1.0 0.0 -de 06_coal 1 161 2030 1.0 0.0 -de 07_gas 1 161 2030 1.0 0.0 -de 08_non-res 1 161 2030 1.0 0.0 -de 09_hydro_pump 1 161 2030 0.0 0.0 -de 01_solar 1 162 2030 1.0 0.0 -de 02_wind_on 1 162 2030 1.0 0.0 -de 03_wind_off 1 162 2030 1.0 0.0 -de 04_res 1 162 2030 1.0 0.0 -de 05_nuclear 1 162 2030 1.0 0.0 -de 06_coal 1 162 2030 1.0 0.0 -de 07_gas 1 162 2030 1.0 0.0 -de 08_non-res 1 162 2030 1.0 0.0 -de 09_hydro_pump 1 162 2030 1.0 0.0 -de 01_solar 1 163 2030 1.0 0.0 -de 02_wind_on 1 163 2030 1.0 0.0 -de 03_wind_off 1 163 2030 1.0 0.0 -de 04_res 1 163 2030 1.0 0.0 -de 05_nuclear 1 163 2030 1.0 0.0 -de 06_coal 1 163 2030 1.0 0.0 -de 07_gas 1 163 2030 1.0 0.0 -de 08_non-res 1 163 2030 1.0 0.0 -de 09_hydro_pump 1 163 2030 1.0 0.0 -de 01_solar 1 164 2030 1.0 0.0 -de 02_wind_on 1 164 2030 1.0 0.0 -de 03_wind_off 1 164 2030 1.0 0.0 -de 04_res 1 164 2030 1.0 0.0 -de 05_nuclear 1 164 2030 1.0 0.0 -de 06_coal 1 164 2030 1.0 0.0 -de 07_gas 1 164 2030 1.0 0.0 -de 08_non-res 1 164 2030 1.0 0.0 -de 09_hydro_pump 1 164 2030 1.0 0.0 -de 01_solar 1 165 2030 1.0 0.0 -de 02_wind_on 1 165 2030 1.0 0.0 -de 03_wind_off 1 165 2030 1.0 0.0 -de 04_res 1 165 2030 1.0 0.0 -de 05_nuclear 1 165 2030 1.0 0.0 -de 06_coal 1 165 2030 1.0 0.0 -de 07_gas 1 165 2030 1.0 0.0 -de 08_non-res 1 165 2030 1.0 0.0 -de 09_hydro_pump 1 165 2030 1.0 0.0 -de 01_solar 1 166 2030 1.0 0.0 -de 02_wind_on 1 166 2030 1.0 0.0 -de 03_wind_off 1 166 2030 1.0 0.0 -de 04_res 1 166 2030 1.0 0.0 -de 05_nuclear 1 166 2030 1.0 0.0 -de 06_coal 1 166 2030 1.0 0.0 -de 07_gas 1 166 2030 1.0 0.0 -de 08_non-res 1 166 2030 1.0 0.0 -de 09_hydro_pump 1 166 2030 1.0 0.0 -de 01_solar 1 167 2030 1.0 0.0 -de 02_wind_on 1 167 2030 1.0 0.0 -de 03_wind_off 1 167 2030 1.0 0.0 -de 04_res 1 167 2030 1.0 0.0 -de 05_nuclear 1 167 2030 1.0 0.0 -de 06_coal 1 167 2030 1.0 0.0 -de 07_gas 1 167 2030 1.0 0.0 -de 08_non-res 1 167 2030 1.0 0.0 -de 09_hydro_pump 1 167 2030 1.0 0.0 -de 01_solar 1 168 2030 1.0 0.0 -de 02_wind_on 1 168 2030 1.0 0.0 -de 03_wind_off 1 168 2030 1.0 0.0 -de 04_res 1 168 2030 1.0 0.0 -de 05_nuclear 1 168 2030 1.0 0.0 -de 06_coal 1 168 2030 1.0 0.0 -de 07_gas 1 168 2030 1.0 0.0 -de 08_non-res 1 168 2030 1.0 0.0 -de 09_hydro_pump 1 168 2030 1.0 0.0 -de 01_solar 1 169 2030 0.0 0.0 -de 02_wind_on 1 169 2030 0.0 0.0 -de 03_wind_off 1 169 2030 0.0 0.0 -de 04_res 1 169 2030 0.0 0.0 -de 05_nuclear 1 169 2030 0.0 0.0 -de 06_coal 1 169 2030 0.0 0.0 -de 07_gas 1 169 2030 0.0 0.0 -de 08_non-res 1 169 2030 0.0 0.0 -de 09_hydro_pump 1 169 2030 0.0 0.0 -de 01_solar 1 170 2030 1.0 0.0 -de 02_wind_on 1 170 2030 0.0 0.0 -de 03_wind_off 1 170 2030 0.0 0.0 -de 04_res 1 170 2030 0.0 0.0 -de 05_nuclear 1 170 2030 0.0 0.0 -de 06_coal 1 170 2030 0.0 0.0 -de 07_gas 1 170 2030 0.0 0.0 -de 08_non-res 1 170 2030 0.0 0.0 -de 09_hydro_pump 1 170 2030 0.0 0.0 -de 01_solar 1 171 2030 1.0 0.0 -de 02_wind_on 1 171 2030 0.0 0.0 -de 03_wind_off 1 171 2030 0.0 0.0 -de 04_res 1 171 2030 0.0 0.0 -de 05_nuclear 1 171 2030 0.0 0.0 -de 06_coal 1 171 2030 0.0 0.0 -de 07_gas 1 171 2030 0.0 0.0 -de 08_non-res 1 171 2030 0.0 0.0 -de 09_hydro_pump 1 171 2030 0.0 0.0 -de 01_solar 1 172 2030 1.0 0.0 -de 02_wind_on 1 172 2030 0.0 0.0 -de 03_wind_off 1 172 2030 0.0 0.0 -de 04_res 1 172 2030 0.0 0.0 -de 05_nuclear 1 172 2030 0.0 0.0 -de 06_coal 1 172 2030 0.0 0.0 -de 07_gas 1 172 2030 0.0 0.0 -de 08_non-res 1 172 2030 0.0 0.0 -de 09_hydro_pump 1 172 2030 0.0 0.0 -de 01_solar 1 173 2030 1.0 0.0 -de 02_wind_on 1 173 2030 0.0 0.0 -de 03_wind_off 1 173 2030 0.0 0.0 -de 04_res 1 173 2030 0.0 0.0 -de 05_nuclear 1 173 2030 0.0 0.0 -de 06_coal 1 173 2030 0.0 0.0 -de 07_gas 1 173 2030 0.0 0.0 -de 08_non-res 1 173 2030 0.0 0.0 -de 09_hydro_pump 1 173 2030 0.0 0.0 -de 01_solar 1 174 2030 1.0 0.0 -de 02_wind_on 1 174 2030 0.0 0.0 -de 03_wind_off 1 174 2030 0.0 0.0 -de 04_res 1 174 2030 0.0 0.0 -de 05_nuclear 1 174 2030 0.0 0.0 -de 06_coal 1 174 2030 0.0 0.0 -de 07_gas 1 174 2030 0.0 0.0 -de 08_non-res 1 174 2030 0.0 0.0 -de 09_hydro_pump 1 174 2030 0.0 0.0 -de 01_solar 1 175 2030 1.0 0.0 -de 02_wind_on 1 175 2030 0.0 0.0 -de 03_wind_off 1 175 2030 0.0 0.0 -de 04_res 1 175 2030 0.0 0.0 -de 05_nuclear 1 175 2030 0.0 0.0 -de 06_coal 1 175 2030 0.0 0.0 -de 07_gas 1 175 2030 0.0 0.0 -de 08_non-res 1 175 2030 0.0 0.0 -de 09_hydro_pump 1 175 2030 0.0 0.0 -de 01_solar 1 176 2030 1.0 0.0 -de 02_wind_on 1 176 2030 0.0 0.0 -de 03_wind_off 1 176 2030 0.0 0.0 -de 04_res 1 176 2030 0.0 0.0 -de 05_nuclear 1 176 2030 0.0 0.0 -de 06_coal 1 176 2030 0.0 0.0 -de 07_gas 1 176 2030 0.0 0.0 -de 08_non-res 1 176 2030 0.0 0.0 -de 09_hydro_pump 1 176 2030 0.0 0.0 -de 01_solar 1 177 2030 1.0 0.0 -de 02_wind_on 1 177 2030 0.0 0.0 -de 03_wind_off 1 177 2030 0.0 0.0 -de 04_res 1 177 2030 0.0 0.0 -de 05_nuclear 1 177 2030 0.0 0.0 -de 06_coal 1 177 2030 0.0 0.0 -de 07_gas 1 177 2030 0.0 0.0 -de 08_non-res 1 177 2030 0.0 0.0 -de 09_hydro_pump 1 177 2030 0.0 0.0 -de 01_solar 1 178 2030 1.0 0.0 -de 02_wind_on 1 178 2030 0.0 0.0 -de 03_wind_off 1 178 2030 0.0 0.0 -de 04_res 1 178 2030 0.0 0.0 -de 05_nuclear 1 178 2030 0.0 0.0 -de 06_coal 1 178 2030 0.0 0.0 -de 07_gas 1 178 2030 0.0 0.0 -de 08_non-res 1 178 2030 0.0 0.0 -de 09_hydro_pump 1 178 2030 0.0 0.0 -de 01_solar 1 179 2030 1.0 0.0 -de 02_wind_on 1 179 2030 0.0 0.0 -de 03_wind_off 1 179 2030 0.0 0.0 -de 04_res 1 179 2030 0.0 0.0 -de 05_nuclear 1 179 2030 0.0 0.0 -de 06_coal 1 179 2030 0.0 0.0 -de 07_gas 1 179 2030 0.0 0.0 -de 08_non-res 1 179 2030 0.0 0.0 -de 09_hydro_pump 1 179 2030 0.0 0.0 -de 01_solar 1 180 2030 1.0 0.0 -de 02_wind_on 1 180 2030 0.0 0.0 -de 03_wind_off 1 180 2030 0.0 0.0 -de 04_res 1 180 2030 0.0 0.0 -de 05_nuclear 1 180 2030 0.0 0.0 -de 06_coal 1 180 2030 0.0 0.0 -de 07_gas 1 180 2030 0.0 0.0 -de 08_non-res 1 180 2030 0.0 0.0 -de 09_hydro_pump 1 180 2030 0.0 0.0 -de 01_solar 1 181 2030 1.0 0.0 -de 02_wind_on 1 181 2030 0.0 0.0 -de 03_wind_off 1 181 2030 0.0 0.0 -de 04_res 1 181 2030 0.0 0.0 -de 05_nuclear 1 181 2030 0.0 0.0 -de 06_coal 1 181 2030 0.0 0.0 -de 07_gas 1 181 2030 0.0 0.0 -de 08_non-res 1 181 2030 0.0 0.0 -de 09_hydro_pump 1 181 2030 0.0 0.0 -de 01_solar 1 182 2030 1.0 0.0 -de 02_wind_on 1 182 2030 0.0 0.0 -de 03_wind_off 1 182 2030 0.0 0.0 -de 04_res 1 182 2030 0.0 0.0 -de 05_nuclear 1 182 2030 0.0 0.0 -de 06_coal 1 182 2030 0.0 0.0 -de 07_gas 1 182 2030 0.0 0.0 -de 08_non-res 1 182 2030 0.0 0.0 -de 09_hydro_pump 1 182 2030 0.0 0.0 -de 01_solar 1 183 2030 1.0 0.0 -de 02_wind_on 1 183 2030 0.0 0.0 -de 03_wind_off 1 183 2030 0.0 0.0 -de 04_res 1 183 2030 0.0 0.0 -de 05_nuclear 1 183 2030 0.0 0.0 -de 06_coal 1 183 2030 0.0 0.0 -de 07_gas 1 183 2030 0.0 0.0 -de 08_non-res 1 183 2030 0.0 0.0 -de 09_hydro_pump 1 183 2030 0.0 0.0 -de 01_solar 1 184 2030 1.0 0.0 -de 02_wind_on 1 184 2030 0.0 0.0 -de 03_wind_off 1 184 2030 0.0 0.0 -de 04_res 1 184 2030 0.0 0.0 -de 05_nuclear 1 184 2030 0.0 0.0 -de 06_coal 1 184 2030 0.0 0.0 -de 07_gas 1 184 2030 0.0 0.0 -de 08_non-res 1 184 2030 0.0 0.0 -de 09_hydro_pump 1 184 2030 0.0 0.0 -de 01_solar 1 185 2030 1.0 0.0 -de 02_wind_on 1 185 2030 0.0 0.0 -de 03_wind_off 1 185 2030 0.0 0.0 -de 04_res 1 185 2030 0.0 0.0 -de 05_nuclear 1 185 2030 0.0 0.0 -de 06_coal 1 185 2030 0.0 0.0 -de 07_gas 1 185 2030 0.0 0.0 -de 08_non-res 1 185 2030 0.0 0.0 -de 09_hydro_pump 1 185 2030 0.0 0.0 -de 01_solar 1 186 2030 1.0 0.0 -de 02_wind_on 1 186 2030 0.0 0.0 -de 03_wind_off 1 186 2030 0.0 0.0 -de 04_res 1 186 2030 0.0 0.0 -de 05_nuclear 1 186 2030 0.0 0.0 -de 06_coal 1 186 2030 0.0 0.0 -de 07_gas 1 186 2030 0.0 0.0 -de 08_non-res 1 186 2030 0.0 0.0 -de 09_hydro_pump 1 186 2030 0.0 0.0 -de 01_solar 1 187 2030 1.0 0.0 -de 02_wind_on 1 187 2030 0.0 0.0 -de 03_wind_off 1 187 2030 0.0 0.0 -de 04_res 1 187 2030 0.0 0.0 -de 05_nuclear 1 187 2030 0.0 0.0 -de 06_coal 1 187 2030 0.0 0.0 -de 07_gas 1 187 2030 0.0 0.0 -de 08_non-res 1 187 2030 0.0 0.0 -de 09_hydro_pump 1 187 2030 0.0 0.0 -de 01_solar 1 188 2030 1.0 0.0 -de 02_wind_on 1 188 2030 0.0 0.0 -de 03_wind_off 1 188 2030 0.0 0.0 -de 04_res 1 188 2030 0.0 0.0 -de 05_nuclear 1 188 2030 0.0 0.0 -de 06_coal 1 188 2030 0.0 0.0 -de 07_gas 1 188 2030 0.0 0.0 -de 08_non-res 1 188 2030 0.0 0.0 -de 09_hydro_pump 1 188 2030 0.0 0.0 -de 01_solar 1 189 2030 1.0 0.0 -de 02_wind_on 1 189 2030 0.0 0.0 -de 03_wind_off 1 189 2030 0.0 0.0 -de 04_res 1 189 2030 0.0 0.0 -de 05_nuclear 1 189 2030 0.0 0.0 -de 06_coal 1 189 2030 0.0 0.0 -de 07_gas 1 189 2030 0.0 0.0 -de 08_non-res 1 189 2030 0.0 0.0 -de 09_hydro_pump 1 189 2030 0.0 0.0 -de 01_solar 1 190 2030 1.0 0.0 -de 02_wind_on 1 190 2030 1.0 0.0 -de 03_wind_off 1 190 2030 0.0 0.0 -de 04_res 1 190 2030 0.0 0.0 -de 05_nuclear 1 190 2030 0.0 0.0 -de 06_coal 1 190 2030 0.0 0.0 -de 07_gas 1 190 2030 0.0 0.0 -de 08_non-res 1 190 2030 0.0 0.0 -de 09_hydro_pump 1 190 2030 0.0 0.0 -de 01_solar 1 191 2030 1.0 0.0 -de 02_wind_on 1 191 2030 1.0 0.0 -de 03_wind_off 1 191 2030 0.0 0.0 -de 04_res 1 191 2030 0.0 0.0 -de 05_nuclear 1 191 2030 0.0 0.0 -de 06_coal 1 191 2030 0.0 0.0 -de 07_gas 1 191 2030 0.0 0.0 -de 08_non-res 1 191 2030 0.0 0.0 -de 09_hydro_pump 1 191 2030 0.0 0.0 -de 01_solar 1 192 2030 1.0 0.0 -de 02_wind_on 1 192 2030 1.0 0.0 -de 03_wind_off 1 192 2030 0.0 0.0 -de 04_res 1 192 2030 0.0 0.0 -de 05_nuclear 1 192 2030 0.0 0.0 -de 06_coal 1 192 2030 0.0 0.0 -de 07_gas 1 192 2030 0.0 0.0 -de 08_non-res 1 192 2030 0.0 0.0 -de 09_hydro_pump 1 192 2030 0.0 0.0 -de 01_solar 1 193 2030 1.0 0.0 -de 02_wind_on 1 193 2030 1.0 0.0 -de 03_wind_off 1 193 2030 0.0 0.0 -de 04_res 1 193 2030 0.0 0.0 -de 05_nuclear 1 193 2030 0.0 0.0 -de 06_coal 1 193 2030 0.0 0.0 -de 07_gas 1 193 2030 0.0 0.0 -de 08_non-res 1 193 2030 0.0 0.0 -de 09_hydro_pump 1 193 2030 0.0 0.0 -de 01_solar 1 194 2030 1.0 0.0 -de 02_wind_on 1 194 2030 1.0 0.0 -de 03_wind_off 1 194 2030 0.0 0.0 -de 04_res 1 194 2030 0.0 0.0 -de 05_nuclear 1 194 2030 0.0 0.0 -de 06_coal 1 194 2030 0.0 0.0 -de 07_gas 1 194 2030 0.0 0.0 -de 08_non-res 1 194 2030 0.0 0.0 -de 09_hydro_pump 1 194 2030 0.0 0.0 -de 01_solar 1 195 2030 1.0 0.0 -de 02_wind_on 1 195 2030 1.0 0.0 -de 03_wind_off 1 195 2030 0.0 0.0 -de 04_res 1 195 2030 0.0 0.0 -de 05_nuclear 1 195 2030 0.0 0.0 -de 06_coal 1 195 2030 0.0 0.0 -de 07_gas 1 195 2030 0.0 0.0 -de 08_non-res 1 195 2030 0.0 0.0 -de 09_hydro_pump 1 195 2030 0.0 0.0 -de 01_solar 1 196 2030 1.0 0.0 -de 02_wind_on 1 196 2030 1.0 0.0 -de 03_wind_off 1 196 2030 0.0 0.0 -de 04_res 1 196 2030 0.0 0.0 -de 05_nuclear 1 196 2030 0.0 0.0 -de 06_coal 1 196 2030 0.0 0.0 -de 07_gas 1 196 2030 0.0 0.0 -de 08_non-res 1 196 2030 0.0 0.0 -de 09_hydro_pump 1 196 2030 0.0 0.0 -de 01_solar 1 197 2030 1.0 0.0 -de 02_wind_on 1 197 2030 1.0 0.0 -de 03_wind_off 1 197 2030 0.0 0.0 -de 04_res 1 197 2030 0.0 0.0 -de 05_nuclear 1 197 2030 0.0 0.0 -de 06_coal 1 197 2030 0.0 0.0 -de 07_gas 1 197 2030 0.0 0.0 -de 08_non-res 1 197 2030 0.0 0.0 -de 09_hydro_pump 1 197 2030 0.0 0.0 -de 01_solar 1 198 2030 1.0 0.0 -de 02_wind_on 1 198 2030 1.0 0.0 -de 03_wind_off 1 198 2030 0.0 0.0 -de 04_res 1 198 2030 0.0 0.0 -de 05_nuclear 1 198 2030 0.0 0.0 -de 06_coal 1 198 2030 0.0 0.0 -de 07_gas 1 198 2030 0.0 0.0 -de 08_non-res 1 198 2030 0.0 0.0 -de 09_hydro_pump 1 198 2030 0.0 0.0 -de 01_solar 1 199 2030 1.0 0.0 -de 02_wind_on 1 199 2030 1.0 0.0 -de 03_wind_off 1 199 2030 0.0 0.0 -de 04_res 1 199 2030 0.0 0.0 -de 05_nuclear 1 199 2030 0.0 0.0 -de 06_coal 1 199 2030 0.0 0.0 -de 07_gas 1 199 2030 0.0 0.0 -de 08_non-res 1 199 2030 0.0 0.0 -de 09_hydro_pump 1 199 2030 0.0 0.0 -de 01_solar 1 200 2030 1.0 0.0 -de 02_wind_on 1 200 2030 1.0 0.0 -de 03_wind_off 1 200 2030 0.0 0.0 -de 04_res 1 200 2030 0.0 0.0 -de 05_nuclear 1 200 2030 0.0 0.0 -de 06_coal 1 200 2030 0.0 0.0 -de 07_gas 1 200 2030 0.0 0.0 -de 08_non-res 1 200 2030 0.0 0.0 -de 09_hydro_pump 1 200 2030 0.0 0.0 -de 01_solar 1 201 2030 1.0 0.0 -de 02_wind_on 1 201 2030 1.0 0.0 -de 03_wind_off 1 201 2030 0.0 0.0 -de 04_res 1 201 2030 0.0 0.0 -de 05_nuclear 1 201 2030 0.0 0.0 -de 06_coal 1 201 2030 0.0 0.0 -de 07_gas 1 201 2030 0.0 0.0 -de 08_non-res 1 201 2030 0.0 0.0 -de 09_hydro_pump 1 201 2030 0.0 0.0 -de 01_solar 1 202 2030 1.0 0.0 -de 02_wind_on 1 202 2030 1.0 0.0 -de 03_wind_off 1 202 2030 0.0 0.0 -de 04_res 1 202 2030 0.0 0.0 -de 05_nuclear 1 202 2030 0.0 0.0 -de 06_coal 1 202 2030 0.0 0.0 -de 07_gas 1 202 2030 0.0 0.0 -de 08_non-res 1 202 2030 0.0 0.0 -de 09_hydro_pump 1 202 2030 0.0 0.0 -de 01_solar 1 203 2030 1.0 0.0 -de 02_wind_on 1 203 2030 1.0 0.0 -de 03_wind_off 1 203 2030 0.0 0.0 -de 04_res 1 203 2030 0.0 0.0 -de 05_nuclear 1 203 2030 0.0 0.0 -de 06_coal 1 203 2030 0.0 0.0 -de 07_gas 1 203 2030 0.0 0.0 -de 08_non-res 1 203 2030 0.0 0.0 -de 09_hydro_pump 1 203 2030 0.0 0.0 -de 01_solar 1 204 2030 1.0 0.0 -de 02_wind_on 1 204 2030 1.0 0.0 -de 03_wind_off 1 204 2030 0.0 0.0 -de 04_res 1 204 2030 0.0 0.0 -de 05_nuclear 1 204 2030 0.0 0.0 -de 06_coal 1 204 2030 0.0 0.0 -de 07_gas 1 204 2030 0.0 0.0 -de 08_non-res 1 204 2030 0.0 0.0 -de 09_hydro_pump 1 204 2030 0.0 0.0 -de 01_solar 1 205 2030 1.0 0.0 -de 02_wind_on 1 205 2030 1.0 0.0 -de 03_wind_off 1 205 2030 0.0 0.0 -de 04_res 1 205 2030 0.0 0.0 -de 05_nuclear 1 205 2030 0.0 0.0 -de 06_coal 1 205 2030 0.0 0.0 -de 07_gas 1 205 2030 0.0 0.0 -de 08_non-res 1 205 2030 0.0 0.0 -de 09_hydro_pump 1 205 2030 0.0 0.0 -de 01_solar 1 206 2030 1.0 0.0 -de 02_wind_on 1 206 2030 1.0 0.0 -de 03_wind_off 1 206 2030 0.0 0.0 -de 04_res 1 206 2030 0.0 0.0 -de 05_nuclear 1 206 2030 0.0 0.0 -de 06_coal 1 206 2030 0.0 0.0 -de 07_gas 1 206 2030 0.0 0.0 -de 08_non-res 1 206 2030 0.0 0.0 -de 09_hydro_pump 1 206 2030 0.0 0.0 -de 01_solar 1 207 2030 1.0 0.0 -de 02_wind_on 1 207 2030 1.0 0.0 -de 03_wind_off 1 207 2030 0.0 0.0 -de 04_res 1 207 2030 0.0 0.0 -de 05_nuclear 1 207 2030 0.0 0.0 -de 06_coal 1 207 2030 0.0 0.0 -de 07_gas 1 207 2030 0.0 0.0 -de 08_non-res 1 207 2030 0.0 0.0 -de 09_hydro_pump 1 207 2030 0.0 0.0 -de 01_solar 1 208 2030 1.0 0.0 -de 02_wind_on 1 208 2030 1.0 0.0 -de 03_wind_off 1 208 2030 0.0 0.0 -de 04_res 1 208 2030 0.0 0.0 -de 05_nuclear 1 208 2030 0.0 0.0 -de 06_coal 1 208 2030 0.0 0.0 -de 07_gas 1 208 2030 0.0 0.0 -de 08_non-res 1 208 2030 0.0 0.0 -de 09_hydro_pump 1 208 2030 0.0 0.0 -de 01_solar 1 209 2030 1.0 0.0 -de 02_wind_on 1 209 2030 1.0 0.0 -de 03_wind_off 1 209 2030 0.0 0.0 -de 04_res 1 209 2030 0.0 0.0 -de 05_nuclear 1 209 2030 0.0 0.0 -de 06_coal 1 209 2030 0.0 0.0 -de 07_gas 1 209 2030 0.0 0.0 -de 08_non-res 1 209 2030 0.0 0.0 -de 09_hydro_pump 1 209 2030 0.0 0.0 -de 01_solar 1 210 2030 1.0 0.0 -de 02_wind_on 1 210 2030 1.0 0.0 -de 03_wind_off 1 210 2030 1.0 0.0 -de 04_res 1 210 2030 0.0 0.0 -de 05_nuclear 1 210 2030 0.0 0.0 -de 06_coal 1 210 2030 0.0 0.0 -de 07_gas 1 210 2030 0.0 0.0 -de 08_non-res 1 210 2030 0.0 0.0 -de 09_hydro_pump 1 210 2030 0.0 0.0 -de 01_solar 1 211 2030 1.0 0.0 -de 02_wind_on 1 211 2030 1.0 0.0 -de 03_wind_off 1 211 2030 1.0 0.0 -de 04_res 1 211 2030 0.0 0.0 -de 05_nuclear 1 211 2030 0.0 0.0 -de 06_coal 1 211 2030 0.0 0.0 -de 07_gas 1 211 2030 0.0 0.0 -de 08_non-res 1 211 2030 0.0 0.0 -de 09_hydro_pump 1 211 2030 0.0 0.0 -de 01_solar 1 212 2030 1.0 0.0 -de 02_wind_on 1 212 2030 1.0 0.0 -de 03_wind_off 1 212 2030 1.0 0.0 -de 04_res 1 212 2030 0.0 0.0 -de 05_nuclear 1 212 2030 0.0 0.0 -de 06_coal 1 212 2030 0.0 0.0 -de 07_gas 1 212 2030 0.0 0.0 -de 08_non-res 1 212 2030 0.0 0.0 -de 09_hydro_pump 1 212 2030 0.0 0.0 -de 01_solar 1 213 2030 1.0 0.0 -de 02_wind_on 1 213 2030 1.0 0.0 -de 03_wind_off 1 213 2030 1.0 0.0 -de 04_res 1 213 2030 0.0 0.0 -de 05_nuclear 1 213 2030 0.0 0.0 -de 06_coal 1 213 2030 0.0 0.0 -de 07_gas 1 213 2030 0.0 0.0 -de 08_non-res 1 213 2030 0.0 0.0 -de 09_hydro_pump 1 213 2030 0.0 0.0 -de 01_solar 1 214 2030 1.0 0.0 -de 02_wind_on 1 214 2030 1.0 0.0 -de 03_wind_off 1 214 2030 1.0 0.0 -de 04_res 1 214 2030 0.0 0.0 -de 05_nuclear 1 214 2030 0.0 0.0 -de 06_coal 1 214 2030 0.0 0.0 -de 07_gas 1 214 2030 0.0 0.0 -de 08_non-res 1 214 2030 0.0 0.0 -de 09_hydro_pump 1 214 2030 0.0 0.0 -de 01_solar 1 215 2030 1.0 0.0 -de 02_wind_on 1 215 2030 1.0 0.0 -de 03_wind_off 1 215 2030 1.0 0.0 -de 04_res 1 215 2030 0.0 0.0 -de 05_nuclear 1 215 2030 0.0 0.0 -de 06_coal 1 215 2030 0.0 0.0 -de 07_gas 1 215 2030 0.0 0.0 -de 08_non-res 1 215 2030 0.0 0.0 -de 09_hydro_pump 1 215 2030 0.0 0.0 -de 01_solar 1 216 2030 1.0 0.0 -de 02_wind_on 1 216 2030 1.0 0.0 -de 03_wind_off 1 216 2030 1.0 0.0 -de 04_res 1 216 2030 0.0 0.0 -de 05_nuclear 1 216 2030 0.0 0.0 -de 06_coal 1 216 2030 0.0 0.0 -de 07_gas 1 216 2030 0.0 0.0 -de 08_non-res 1 216 2030 0.0 0.0 -de 09_hydro_pump 1 216 2030 0.0 0.0 -de 01_solar 1 217 2030 1.0 0.0 -de 02_wind_on 1 217 2030 1.0 0.0 -de 03_wind_off 1 217 2030 1.0 0.0 -de 04_res 1 217 2030 0.0 0.0 -de 05_nuclear 1 217 2030 0.0 0.0 -de 06_coal 1 217 2030 0.0 0.0 -de 07_gas 1 217 2030 0.0 0.0 -de 08_non-res 1 217 2030 0.0 0.0 -de 09_hydro_pump 1 217 2030 0.0 0.0 -de 01_solar 1 218 2030 1.0 0.0 -de 02_wind_on 1 218 2030 1.0 0.0 -de 03_wind_off 1 218 2030 1.0 0.0 -de 04_res 1 218 2030 0.0 0.0 -de 05_nuclear 1 218 2030 0.0 0.0 -de 06_coal 1 218 2030 0.0 0.0 -de 07_gas 1 218 2030 0.0 0.0 -de 08_non-res 1 218 2030 0.0 0.0 -de 09_hydro_pump 1 218 2030 0.0 0.0 -de 01_solar 1 219 2030 1.0 0.0 -de 02_wind_on 1 219 2030 1.0 0.0 -de 03_wind_off 1 219 2030 1.0 0.0 -de 04_res 1 219 2030 0.0 0.0 -de 05_nuclear 1 219 2030 0.0 0.0 -de 06_coal 1 219 2030 0.0 0.0 -de 07_gas 1 219 2030 0.0 0.0 -de 08_non-res 1 219 2030 0.0 0.0 -de 09_hydro_pump 1 219 2030 0.0 0.0 -de 01_solar 1 220 2030 1.0 0.0 -de 02_wind_on 1 220 2030 1.0 0.0 -de 03_wind_off 1 220 2030 1.0 0.0 -de 04_res 1 220 2030 0.0 0.0 -de 05_nuclear 1 220 2030 0.0 0.0 -de 06_coal 1 220 2030 0.0 0.0 -de 07_gas 1 220 2030 0.0 0.0 -de 08_non-res 1 220 2030 0.0 0.0 -de 09_hydro_pump 1 220 2030 0.0 0.0 -de 01_solar 1 221 2030 1.0 0.0 -de 02_wind_on 1 221 2030 1.0 0.0 -de 03_wind_off 1 221 2030 1.0 0.0 -de 04_res 1 221 2030 0.0 0.0 -de 05_nuclear 1 221 2030 0.0 0.0 -de 06_coal 1 221 2030 0.0 0.0 -de 07_gas 1 221 2030 0.0 0.0 -de 08_non-res 1 221 2030 0.0 0.0 -de 09_hydro_pump 1 221 2030 0.0 0.0 -de 01_solar 1 222 2030 1.0 0.0 -de 02_wind_on 1 222 2030 1.0 0.0 -de 03_wind_off 1 222 2030 1.0 0.0 -de 04_res 1 222 2030 0.0 0.0 -de 05_nuclear 1 222 2030 0.0 0.0 -de 06_coal 1 222 2030 0.0 0.0 -de 07_gas 1 222 2030 0.0 0.0 -de 08_non-res 1 222 2030 0.0 0.0 -de 09_hydro_pump 1 222 2030 0.0 0.0 -de 01_solar 1 223 2030 1.0 0.0 -de 02_wind_on 1 223 2030 1.0 0.0 -de 03_wind_off 1 223 2030 1.0 0.0 -de 04_res 1 223 2030 0.0 0.0 -de 05_nuclear 1 223 2030 0.0 0.0 -de 06_coal 1 223 2030 0.0 0.0 -de 07_gas 1 223 2030 0.0 0.0 -de 08_non-res 1 223 2030 0.0 0.0 -de 09_hydro_pump 1 223 2030 0.0 0.0 -de 01_solar 1 224 2030 1.0 0.0 -de 02_wind_on 1 224 2030 1.0 0.0 -de 03_wind_off 1 224 2030 1.0 0.0 -de 04_res 1 224 2030 0.0 0.0 -de 05_nuclear 1 224 2030 0.0 0.0 -de 06_coal 1 224 2030 0.0 0.0 -de 07_gas 1 224 2030 0.0 0.0 -de 08_non-res 1 224 2030 0.0 0.0 -de 09_hydro_pump 1 224 2030 0.0 0.0 -de 01_solar 1 225 2030 1.0 0.0 -de 02_wind_on 1 225 2030 1.0 0.0 -de 03_wind_off 1 225 2030 1.0 0.0 -de 04_res 1 225 2030 0.0 0.0 -de 05_nuclear 1 225 2030 0.0 0.0 -de 06_coal 1 225 2030 0.0 0.0 -de 07_gas 1 225 2030 0.0 0.0 -de 08_non-res 1 225 2030 0.0 0.0 -de 09_hydro_pump 1 225 2030 0.0 0.0 -de 01_solar 1 226 2030 1.0 0.0 -de 02_wind_on 1 226 2030 1.0 0.0 -de 03_wind_off 1 226 2030 1.0 0.0 -de 04_res 1 226 2030 0.0 0.0 -de 05_nuclear 1 226 2030 0.0 0.0 -de 06_coal 1 226 2030 0.0 0.0 -de 07_gas 1 226 2030 0.0 0.0 -de 08_non-res 1 226 2030 0.0 0.0 -de 09_hydro_pump 1 226 2030 0.0 0.0 -de 01_solar 1 227 2030 1.0 0.0 -de 02_wind_on 1 227 2030 1.0 0.0 -de 03_wind_off 1 227 2030 1.0 0.0 -de 04_res 1 227 2030 0.0 0.0 -de 05_nuclear 1 227 2030 0.0 0.0 -de 06_coal 1 227 2030 0.0 0.0 -de 07_gas 1 227 2030 0.0 0.0 -de 08_non-res 1 227 2030 0.0 0.0 -de 09_hydro_pump 1 227 2030 0.0 0.0 -de 01_solar 1 228 2030 1.0 0.0 -de 02_wind_on 1 228 2030 1.0 0.0 -de 03_wind_off 1 228 2030 1.0 0.0 -de 04_res 1 228 2030 0.0 0.0 -de 05_nuclear 1 228 2030 0.0 0.0 -de 06_coal 1 228 2030 0.0 0.0 -de 07_gas 1 228 2030 0.0 0.0 -de 08_non-res 1 228 2030 0.0 0.0 -de 09_hydro_pump 1 228 2030 0.0 0.0 -de 01_solar 1 229 2030 1.0 0.0 -de 02_wind_on 1 229 2030 1.0 0.0 -de 03_wind_off 1 229 2030 1.0 0.0 -de 04_res 1 229 2030 0.0 0.0 -de 05_nuclear 1 229 2030 0.0 0.0 -de 06_coal 1 229 2030 0.0 0.0 -de 07_gas 1 229 2030 0.0 0.0 -de 08_non-res 1 229 2030 0.0 0.0 -de 09_hydro_pump 1 229 2030 0.0 0.0 -de 01_solar 1 230 2030 1.0 0.0 -de 02_wind_on 1 230 2030 1.0 0.0 -de 03_wind_off 1 230 2030 1.0 0.0 -de 04_res 1 230 2030 1.0 0.0 -de 05_nuclear 1 230 2030 0.0 0.0 -de 06_coal 1 230 2030 0.0 0.0 -de 07_gas 1 230 2030 0.0 0.0 -de 08_non-res 1 230 2030 0.0 0.0 -de 09_hydro_pump 1 230 2030 0.0 0.0 -de 01_solar 1 231 2030 1.0 0.0 -de 02_wind_on 1 231 2030 1.0 0.0 -de 03_wind_off 1 231 2030 1.0 0.0 -de 04_res 1 231 2030 1.0 0.0 -de 05_nuclear 1 231 2030 0.0 0.0 -de 06_coal 1 231 2030 0.0 0.0 -de 07_gas 1 231 2030 0.0 0.0 -de 08_non-res 1 231 2030 0.0 0.0 -de 09_hydro_pump 1 231 2030 0.0 0.0 -de 01_solar 1 232 2030 1.0 0.0 -de 02_wind_on 1 232 2030 1.0 0.0 -de 03_wind_off 1 232 2030 1.0 0.0 -de 04_res 1 232 2030 1.0 0.0 -de 05_nuclear 1 232 2030 0.0 0.0 -de 06_coal 1 232 2030 0.0 0.0 -de 07_gas 1 232 2030 0.0 0.0 -de 08_non-res 1 232 2030 0.0 0.0 -de 09_hydro_pump 1 232 2030 0.0 0.0 -de 01_solar 1 233 2030 1.0 0.0 -de 02_wind_on 1 233 2030 1.0 0.0 -de 03_wind_off 1 233 2030 1.0 0.0 -de 04_res 1 233 2030 1.0 0.0 -de 05_nuclear 1 233 2030 0.0 0.0 -de 06_coal 1 233 2030 0.0 0.0 -de 07_gas 1 233 2030 0.0 0.0 -de 08_non-res 1 233 2030 0.0 0.0 -de 09_hydro_pump 1 233 2030 0.0 0.0 -de 01_solar 1 234 2030 1.0 0.0 -de 02_wind_on 1 234 2030 1.0 0.0 -de 03_wind_off 1 234 2030 1.0 0.0 -de 04_res 1 234 2030 1.0 0.0 -de 05_nuclear 1 234 2030 0.0 0.0 -de 06_coal 1 234 2030 0.0 0.0 -de 07_gas 1 234 2030 0.0 0.0 -de 08_non-res 1 234 2030 0.0 0.0 -de 09_hydro_pump 1 234 2030 0.0 0.0 -de 01_solar 1 235 2030 1.0 0.0 -de 02_wind_on 1 235 2030 1.0 0.0 -de 03_wind_off 1 235 2030 1.0 0.0 -de 04_res 1 235 2030 1.0 0.0 -de 05_nuclear 1 235 2030 0.0 0.0 -de 06_coal 1 235 2030 0.0 0.0 -de 07_gas 1 235 2030 0.0 0.0 -de 08_non-res 1 235 2030 0.0 0.0 -de 09_hydro_pump 1 235 2030 0.0 0.0 -de 01_solar 1 236 2030 1.0 0.0 -de 02_wind_on 1 236 2030 1.0 0.0 -de 03_wind_off 1 236 2030 1.0 0.0 -de 04_res 1 236 2030 1.0 0.0 -de 05_nuclear 1 236 2030 0.0 0.0 -de 06_coal 1 236 2030 0.0 0.0 -de 07_gas 1 236 2030 0.0 0.0 -de 08_non-res 1 236 2030 0.0 0.0 -de 09_hydro_pump 1 236 2030 0.0 0.0 -de 01_solar 1 237 2030 1.0 0.0 -de 02_wind_on 1 237 2030 1.0 0.0 -de 03_wind_off 1 237 2030 1.0 0.0 -de 04_res 1 237 2030 1.0 0.0 -de 05_nuclear 1 237 2030 0.0 0.0 -de 06_coal 1 237 2030 0.0 0.0 -de 07_gas 1 237 2030 0.0 0.0 -de 08_non-res 1 237 2030 0.0 0.0 -de 09_hydro_pump 1 237 2030 0.0 0.0 -de 01_solar 1 238 2030 1.0 0.0 -de 02_wind_on 1 238 2030 1.0 0.0 -de 03_wind_off 1 238 2030 1.0 0.0 -de 04_res 1 238 2030 1.0 0.0 -de 05_nuclear 1 238 2030 0.0 0.0 -de 06_coal 1 238 2030 0.0 0.0 -de 07_gas 1 238 2030 0.0 0.0 -de 08_non-res 1 238 2030 0.0 0.0 -de 09_hydro_pump 1 238 2030 0.0 0.0 -de 01_solar 1 239 2030 1.0 0.0 -de 02_wind_on 1 239 2030 1.0 0.0 -de 03_wind_off 1 239 2030 1.0 0.0 -de 04_res 1 239 2030 1.0 0.0 -de 05_nuclear 1 239 2030 0.0 0.0 -de 06_coal 1 239 2030 0.0 0.0 -de 07_gas 1 239 2030 0.0 0.0 -de 08_non-res 1 239 2030 0.0 0.0 -de 09_hydro_pump 1 239 2030 0.0 0.0 -de 01_solar 1 240 2030 1.0 0.0 -de 02_wind_on 1 240 2030 1.0 0.0 -de 03_wind_off 1 240 2030 1.0 0.0 -de 04_res 1 240 2030 1.0 0.0 -de 05_nuclear 1 240 2030 0.0 0.0 -de 06_coal 1 240 2030 0.0 0.0 -de 07_gas 1 240 2030 0.0 0.0 -de 08_non-res 1 240 2030 0.0 0.0 -de 09_hydro_pump 1 240 2030 0.0 0.0 -de 01_solar 1 241 2030 1.0 0.0 -de 02_wind_on 1 241 2030 1.0 0.0 -de 03_wind_off 1 241 2030 1.0 0.0 -de 04_res 1 241 2030 1.0 0.0 -de 05_nuclear 1 241 2030 0.0 0.0 -de 06_coal 1 241 2030 0.0 0.0 -de 07_gas 1 241 2030 0.0 0.0 -de 08_non-res 1 241 2030 0.0 0.0 -de 09_hydro_pump 1 241 2030 0.0 0.0 -de 01_solar 1 242 2030 1.0 0.0 -de 02_wind_on 1 242 2030 1.0 0.0 -de 03_wind_off 1 242 2030 1.0 0.0 -de 04_res 1 242 2030 1.0 0.0 -de 05_nuclear 1 242 2030 0.0 0.0 -de 06_coal 1 242 2030 0.0 0.0 -de 07_gas 1 242 2030 0.0 0.0 -de 08_non-res 1 242 2030 0.0 0.0 -de 09_hydro_pump 1 242 2030 0.0 0.0 -de 01_solar 1 243 2030 1.0 0.0 -de 02_wind_on 1 243 2030 1.0 0.0 -de 03_wind_off 1 243 2030 1.0 0.0 -de 04_res 1 243 2030 1.0 0.0 -de 05_nuclear 1 243 2030 0.0 0.0 -de 06_coal 1 243 2030 0.0 0.0 -de 07_gas 1 243 2030 0.0 0.0 -de 08_non-res 1 243 2030 0.0 0.0 -de 09_hydro_pump 1 243 2030 0.0 0.0 -de 01_solar 1 244 2030 1.0 0.0 -de 02_wind_on 1 244 2030 1.0 0.0 -de 03_wind_off 1 244 2030 1.0 0.0 -de 04_res 1 244 2030 1.0 0.0 -de 05_nuclear 1 244 2030 0.0 0.0 -de 06_coal 1 244 2030 0.0 0.0 -de 07_gas 1 244 2030 0.0 0.0 -de 08_non-res 1 244 2030 0.0 0.0 -de 09_hydro_pump 1 244 2030 0.0 0.0 -de 01_solar 1 245 2030 1.0 0.0 -de 02_wind_on 1 245 2030 1.0 0.0 -de 03_wind_off 1 245 2030 1.0 0.0 -de 04_res 1 245 2030 1.0 0.0 -de 05_nuclear 1 245 2030 0.0 0.0 -de 06_coal 1 245 2030 0.0 0.0 -de 07_gas 1 245 2030 0.0 0.0 -de 08_non-res 1 245 2030 0.0 0.0 -de 09_hydro_pump 1 245 2030 0.0 0.0 -de 01_solar 1 246 2030 1.0 0.0 -de 02_wind_on 1 246 2030 1.0 0.0 -de 03_wind_off 1 246 2030 1.0 0.0 -de 04_res 1 246 2030 1.0 0.0 -de 05_nuclear 1 246 2030 0.0 0.0 -de 06_coal 1 246 2030 0.0 0.0 -de 07_gas 1 246 2030 0.0 0.0 -de 08_non-res 1 246 2030 0.0 0.0 -de 09_hydro_pump 1 246 2030 0.0 0.0 -de 01_solar 1 247 2030 1.0 0.0 -de 02_wind_on 1 247 2030 1.0 0.0 -de 03_wind_off 1 247 2030 1.0 0.0 -de 04_res 1 247 2030 1.0 0.0 -de 05_nuclear 1 247 2030 0.0 0.0 -de 06_coal 1 247 2030 0.0 0.0 -de 07_gas 1 247 2030 0.0 0.0 -de 08_non-res 1 247 2030 0.0 0.0 -de 09_hydro_pump 1 247 2030 0.0 0.0 -de 01_solar 1 248 2030 1.0 0.0 -de 02_wind_on 1 248 2030 1.0 0.0 -de 03_wind_off 1 248 2030 1.0 0.0 -de 04_res 1 248 2030 1.0 0.0 -de 05_nuclear 1 248 2030 0.0 0.0 -de 06_coal 1 248 2030 0.0 0.0 -de 07_gas 1 248 2030 0.0 0.0 -de 08_non-res 1 248 2030 0.0 0.0 -de 09_hydro_pump 1 248 2030 0.0 0.0 -de 01_solar 1 249 2030 1.0 0.0 -de 02_wind_on 1 249 2030 1.0 0.0 -de 03_wind_off 1 249 2030 1.0 0.0 -de 04_res 1 249 2030 1.0 0.0 -de 05_nuclear 1 249 2030 0.0 0.0 -de 06_coal 1 249 2030 0.0 0.0 -de 07_gas 1 249 2030 0.0 0.0 -de 08_non-res 1 249 2030 0.0 0.0 -de 09_hydro_pump 1 249 2030 0.0 0.0 -de 01_solar 1 250 2030 1.0 0.0 -de 02_wind_on 1 250 2030 1.0 0.0 -de 03_wind_off 1 250 2030 1.0 0.0 -de 04_res 1 250 2030 1.0 0.0 -de 05_nuclear 1 250 2030 1.0 0.0 -de 06_coal 1 250 2030 0.0 0.0 -de 07_gas 1 250 2030 0.0 0.0 -de 08_non-res 1 250 2030 0.0 0.0 -de 09_hydro_pump 1 250 2030 0.0 0.0 -de 01_solar 1 251 2030 1.0 0.0 -de 02_wind_on 1 251 2030 1.0 0.0 -de 03_wind_off 1 251 2030 1.0 0.0 -de 04_res 1 251 2030 1.0 0.0 -de 05_nuclear 1 251 2030 1.0 0.0 -de 06_coal 1 251 2030 0.0 0.0 -de 07_gas 1 251 2030 0.0 0.0 -de 08_non-res 1 251 2030 0.0 0.0 -de 09_hydro_pump 1 251 2030 0.0 0.0 -de 01_solar 1 252 2030 1.0 0.0 -de 02_wind_on 1 252 2030 1.0 0.0 -de 03_wind_off 1 252 2030 1.0 0.0 -de 04_res 1 252 2030 1.0 0.0 -de 05_nuclear 1 252 2030 1.0 0.0 -de 06_coal 1 252 2030 0.0 0.0 -de 07_gas 1 252 2030 0.0 0.0 -de 08_non-res 1 252 2030 0.0 0.0 -de 09_hydro_pump 1 252 2030 0.0 0.0 -de 01_solar 1 253 2030 1.0 0.0 -de 02_wind_on 1 253 2030 1.0 0.0 -de 03_wind_off 1 253 2030 1.0 0.0 -de 04_res 1 253 2030 1.0 0.0 -de 05_nuclear 1 253 2030 1.0 0.0 -de 06_coal 1 253 2030 0.0 0.0 -de 07_gas 1 253 2030 0.0 0.0 -de 08_non-res 1 253 2030 0.0 0.0 -de 09_hydro_pump 1 253 2030 0.0 0.0 -de 01_solar 1 254 2030 1.0 0.0 -de 02_wind_on 1 254 2030 1.0 0.0 -de 03_wind_off 1 254 2030 1.0 0.0 -de 04_res 1 254 2030 1.0 0.0 -de 05_nuclear 1 254 2030 1.0 0.0 -de 06_coal 1 254 2030 0.0 0.0 -de 07_gas 1 254 2030 0.0 0.0 -de 08_non-res 1 254 2030 0.0 0.0 -de 09_hydro_pump 1 254 2030 0.0 0.0 -de 01_solar 1 255 2030 1.0 0.0 -de 02_wind_on 1 255 2030 1.0 0.0 -de 03_wind_off 1 255 2030 1.0 0.0 -de 04_res 1 255 2030 1.0 0.0 -de 05_nuclear 1 255 2030 1.0 0.0 -de 06_coal 1 255 2030 0.0 0.0 -de 07_gas 1 255 2030 0.0 0.0 -de 08_non-res 1 255 2030 0.0 0.0 -de 09_hydro_pump 1 255 2030 0.0 0.0 -de 01_solar 1 256 2030 1.0 0.0 -de 02_wind_on 1 256 2030 1.0 0.0 -de 03_wind_off 1 256 2030 1.0 0.0 -de 04_res 1 256 2030 1.0 0.0 -de 05_nuclear 1 256 2030 1.0 0.0 -de 06_coal 1 256 2030 0.0 0.0 -de 07_gas 1 256 2030 0.0 0.0 -de 08_non-res 1 256 2030 0.0 0.0 -de 09_hydro_pump 1 256 2030 0.0 0.0 -de 01_solar 1 257 2030 1.0 0.0 -de 02_wind_on 1 257 2030 1.0 0.0 -de 03_wind_off 1 257 2030 1.0 0.0 -de 04_res 1 257 2030 1.0 0.0 -de 05_nuclear 1 257 2030 1.0 0.0 -de 06_coal 1 257 2030 0.0 0.0 -de 07_gas 1 257 2030 0.0 0.0 -de 08_non-res 1 257 2030 0.0 0.0 -de 09_hydro_pump 1 257 2030 0.0 0.0 -de 01_solar 1 258 2030 1.0 0.0 -de 02_wind_on 1 258 2030 1.0 0.0 -de 03_wind_off 1 258 2030 1.0 0.0 -de 04_res 1 258 2030 1.0 0.0 -de 05_nuclear 1 258 2030 1.0 0.0 -de 06_coal 1 258 2030 0.0 0.0 -de 07_gas 1 258 2030 0.0 0.0 -de 08_non-res 1 258 2030 0.0 0.0 -de 09_hydro_pump 1 258 2030 0.0 0.0 -de 01_solar 1 259 2030 1.0 0.0 -de 02_wind_on 1 259 2030 1.0 0.0 -de 03_wind_off 1 259 2030 1.0 0.0 -de 04_res 1 259 2030 1.0 0.0 -de 05_nuclear 1 259 2030 1.0 0.0 -de 06_coal 1 259 2030 0.0 0.0 -de 07_gas 1 259 2030 0.0 0.0 -de 08_non-res 1 259 2030 0.0 0.0 -de 09_hydro_pump 1 259 2030 0.0 0.0 -de 01_solar 1 260 2030 1.0 0.0 -de 02_wind_on 1 260 2030 1.0 0.0 -de 03_wind_off 1 260 2030 1.0 0.0 -de 04_res 1 260 2030 1.0 0.0 -de 05_nuclear 1 260 2030 1.0 0.0 -de 06_coal 1 260 2030 0.0 0.0 -de 07_gas 1 260 2030 0.0 0.0 -de 08_non-res 1 260 2030 0.0 0.0 -de 09_hydro_pump 1 260 2030 0.0 0.0 -de 01_solar 1 261 2030 1.0 0.0 -de 02_wind_on 1 261 2030 1.0 0.0 -de 03_wind_off 1 261 2030 1.0 0.0 -de 04_res 1 261 2030 1.0 0.0 -de 05_nuclear 1 261 2030 1.0 0.0 -de 06_coal 1 261 2030 0.0 0.0 -de 07_gas 1 261 2030 0.0 0.0 -de 08_non-res 1 261 2030 0.0 0.0 -de 09_hydro_pump 1 261 2030 0.0 0.0 -de 01_solar 1 262 2030 1.0 0.0 -de 02_wind_on 1 262 2030 1.0 0.0 -de 03_wind_off 1 262 2030 1.0 0.0 -de 04_res 1 262 2030 1.0 0.0 -de 05_nuclear 1 262 2030 1.0 0.0 -de 06_coal 1 262 2030 0.0 0.0 -de 07_gas 1 262 2030 0.0 0.0 -de 08_non-res 1 262 2030 0.0 0.0 -de 09_hydro_pump 1 262 2030 0.0 0.0 -de 01_solar 1 263 2030 1.0 0.0 -de 02_wind_on 1 263 2030 1.0 0.0 -de 03_wind_off 1 263 2030 1.0 0.0 -de 04_res 1 263 2030 1.0 0.0 -de 05_nuclear 1 263 2030 1.0 0.0 -de 06_coal 1 263 2030 0.0 0.0 -de 07_gas 1 263 2030 0.0 0.0 -de 08_non-res 1 263 2030 0.0 0.0 -de 09_hydro_pump 1 263 2030 0.0 0.0 -de 01_solar 1 264 2030 1.0 0.0 -de 02_wind_on 1 264 2030 1.0 0.0 -de 03_wind_off 1 264 2030 1.0 0.0 -de 04_res 1 264 2030 1.0 0.0 -de 05_nuclear 1 264 2030 1.0 0.0 -de 06_coal 1 264 2030 0.0 0.0 -de 07_gas 1 264 2030 0.0 0.0 -de 08_non-res 1 264 2030 0.0 0.0 -de 09_hydro_pump 1 264 2030 0.0 0.0 -de 01_solar 1 265 2030 1.0 0.0 -de 02_wind_on 1 265 2030 1.0 0.0 -de 03_wind_off 1 265 2030 1.0 0.0 -de 04_res 1 265 2030 1.0 0.0 -de 05_nuclear 1 265 2030 1.0 0.0 -de 06_coal 1 265 2030 0.0 0.0 -de 07_gas 1 265 2030 0.0 0.0 -de 08_non-res 1 265 2030 0.0 0.0 -de 09_hydro_pump 1 265 2030 0.0 0.0 -de 01_solar 1 266 2030 1.0 0.0 -de 02_wind_on 1 266 2030 1.0 0.0 -de 03_wind_off 1 266 2030 1.0 0.0 -de 04_res 1 266 2030 1.0 0.0 -de 05_nuclear 1 266 2030 1.0 0.0 -de 06_coal 1 266 2030 0.0 0.0 -de 07_gas 1 266 2030 0.0 0.0 -de 08_non-res 1 266 2030 0.0 0.0 -de 09_hydro_pump 1 266 2030 0.0 0.0 -de 01_solar 1 267 2030 1.0 0.0 -de 02_wind_on 1 267 2030 1.0 0.0 -de 03_wind_off 1 267 2030 1.0 0.0 -de 04_res 1 267 2030 1.0 0.0 -de 05_nuclear 1 267 2030 1.0 0.0 -de 06_coal 1 267 2030 0.0 0.0 -de 07_gas 1 267 2030 0.0 0.0 -de 08_non-res 1 267 2030 0.0 0.0 -de 09_hydro_pump 1 267 2030 0.0 0.0 -de 01_solar 1 268 2030 1.0 0.0 -de 02_wind_on 1 268 2030 1.0 0.0 -de 03_wind_off 1 268 2030 1.0 0.0 -de 04_res 1 268 2030 1.0 0.0 -de 05_nuclear 1 268 2030 1.0 0.0 -de 06_coal 1 268 2030 0.0 0.0 -de 07_gas 1 268 2030 0.0 0.0 -de 08_non-res 1 268 2030 0.0 0.0 -de 09_hydro_pump 1 268 2030 0.0 0.0 -de 01_solar 1 269 2030 1.0 0.0 -de 02_wind_on 1 269 2030 1.0 0.0 -de 03_wind_off 1 269 2030 1.0 0.0 -de 04_res 1 269 2030 1.0 0.0 -de 05_nuclear 1 269 2030 1.0 0.0 -de 06_coal 1 269 2030 0.0 0.0 -de 07_gas 1 269 2030 0.0 0.0 -de 08_non-res 1 269 2030 0.0 0.0 -de 09_hydro_pump 1 269 2030 0.0 0.0 -de 01_solar 1 270 2030 1.0 0.0 -de 02_wind_on 1 270 2030 1.0 0.0 -de 03_wind_off 1 270 2030 1.0 0.0 -de 04_res 1 270 2030 1.0 0.0 -de 05_nuclear 1 270 2030 1.0 0.0 -de 06_coal 1 270 2030 1.0 0.0 -de 07_gas 1 270 2030 0.0 0.0 -de 08_non-res 1 270 2030 0.0 0.0 -de 09_hydro_pump 1 270 2030 0.0 0.0 -de 01_solar 1 271 2030 1.0 0.0 -de 02_wind_on 1 271 2030 1.0 0.0 -de 03_wind_off 1 271 2030 1.0 0.0 -de 04_res 1 271 2030 1.0 0.0 -de 05_nuclear 1 271 2030 1.0 0.0 -de 06_coal 1 271 2030 1.0 0.0 -de 07_gas 1 271 2030 0.0 0.0 -de 08_non-res 1 271 2030 0.0 0.0 -de 09_hydro_pump 1 271 2030 0.0 0.0 -de 01_solar 1 272 2030 1.0 0.0 -de 02_wind_on 1 272 2030 1.0 0.0 -de 03_wind_off 1 272 2030 1.0 0.0 -de 04_res 1 272 2030 1.0 0.0 -de 05_nuclear 1 272 2030 1.0 0.0 -de 06_coal 1 272 2030 1.0 0.0 -de 07_gas 1 272 2030 0.0 0.0 -de 08_non-res 1 272 2030 0.0 0.0 -de 09_hydro_pump 1 272 2030 0.0 0.0 -de 01_solar 1 273 2030 1.0 0.0 -de 02_wind_on 1 273 2030 1.0 0.0 -de 03_wind_off 1 273 2030 1.0 0.0 -de 04_res 1 273 2030 1.0 0.0 -de 05_nuclear 1 273 2030 1.0 0.0 -de 06_coal 1 273 2030 1.0 0.0 -de 07_gas 1 273 2030 0.0 0.0 -de 08_non-res 1 273 2030 0.0 0.0 -de 09_hydro_pump 1 273 2030 0.0 0.0 -de 01_solar 1 274 2030 1.0 0.0 -de 02_wind_on 1 274 2030 1.0 0.0 -de 03_wind_off 1 274 2030 1.0 0.0 -de 04_res 1 274 2030 1.0 0.0 -de 05_nuclear 1 274 2030 1.0 0.0 -de 06_coal 1 274 2030 1.0 0.0 -de 07_gas 1 274 2030 0.0 0.0 -de 08_non-res 1 274 2030 0.0 0.0 -de 09_hydro_pump 1 274 2030 0.0 0.0 -de 01_solar 1 275 2030 1.0 0.0 -de 02_wind_on 1 275 2030 1.0 0.0 -de 03_wind_off 1 275 2030 1.0 0.0 -de 04_res 1 275 2030 1.0 0.0 -de 05_nuclear 1 275 2030 1.0 0.0 -de 06_coal 1 275 2030 1.0 0.0 -de 07_gas 1 275 2030 0.0 0.0 -de 08_non-res 1 275 2030 0.0 0.0 -de 09_hydro_pump 1 275 2030 0.0 0.0 -de 01_solar 1 276 2030 1.0 0.0 -de 02_wind_on 1 276 2030 1.0 0.0 -de 03_wind_off 1 276 2030 1.0 0.0 -de 04_res 1 276 2030 1.0 0.0 -de 05_nuclear 1 276 2030 1.0 0.0 -de 06_coal 1 276 2030 1.0 0.0 -de 07_gas 1 276 2030 0.0 0.0 -de 08_non-res 1 276 2030 0.0 0.0 -de 09_hydro_pump 1 276 2030 0.0 0.0 -de 01_solar 1 277 2030 1.0 0.0 -de 02_wind_on 1 277 2030 1.0 0.0 -de 03_wind_off 1 277 2030 1.0 0.0 -de 04_res 1 277 2030 1.0 0.0 -de 05_nuclear 1 277 2030 1.0 0.0 -de 06_coal 1 277 2030 1.0 0.0 -de 07_gas 1 277 2030 0.0 0.0 -de 08_non-res 1 277 2030 0.0 0.0 -de 09_hydro_pump 1 277 2030 0.0 0.0 -de 01_solar 1 278 2030 1.0 0.0 -de 02_wind_on 1 278 2030 1.0 0.0 -de 03_wind_off 1 278 2030 1.0 0.0 -de 04_res 1 278 2030 1.0 0.0 -de 05_nuclear 1 278 2030 1.0 0.0 -de 06_coal 1 278 2030 1.0 0.0 -de 07_gas 1 278 2030 0.0 0.0 -de 08_non-res 1 278 2030 0.0 0.0 -de 09_hydro_pump 1 278 2030 0.0 0.0 -de 01_solar 1 279 2030 1.0 0.0 -de 02_wind_on 1 279 2030 1.0 0.0 -de 03_wind_off 1 279 2030 1.0 0.0 -de 04_res 1 279 2030 1.0 0.0 -de 05_nuclear 1 279 2030 1.0 0.0 -de 06_coal 1 279 2030 1.0 0.0 -de 07_gas 1 279 2030 0.0 0.0 -de 08_non-res 1 279 2030 0.0 0.0 -de 09_hydro_pump 1 279 2030 0.0 0.0 -de 01_solar 1 280 2030 1.0 0.0 -de 02_wind_on 1 280 2030 1.0 0.0 -de 03_wind_off 1 280 2030 1.0 0.0 -de 04_res 1 280 2030 1.0 0.0 -de 05_nuclear 1 280 2030 1.0 0.0 -de 06_coal 1 280 2030 1.0 0.0 -de 07_gas 1 280 2030 0.0 0.0 -de 08_non-res 1 280 2030 0.0 0.0 -de 09_hydro_pump 1 280 2030 0.0 0.0 -de 01_solar 1 281 2030 1.0 0.0 -de 02_wind_on 1 281 2030 1.0 0.0 -de 03_wind_off 1 281 2030 1.0 0.0 -de 04_res 1 281 2030 1.0 0.0 -de 05_nuclear 1 281 2030 1.0 0.0 -de 06_coal 1 281 2030 1.0 0.0 -de 07_gas 1 281 2030 0.0 0.0 -de 08_non-res 1 281 2030 0.0 0.0 -de 09_hydro_pump 1 281 2030 0.0 0.0 -de 01_solar 1 282 2030 1.0 0.0 -de 02_wind_on 1 282 2030 1.0 0.0 -de 03_wind_off 1 282 2030 1.0 0.0 -de 04_res 1 282 2030 1.0 0.0 -de 05_nuclear 1 282 2030 1.0 0.0 -de 06_coal 1 282 2030 1.0 0.0 -de 07_gas 1 282 2030 0.0 0.0 -de 08_non-res 1 282 2030 0.0 0.0 -de 09_hydro_pump 1 282 2030 0.0 0.0 -de 01_solar 1 283 2030 1.0 0.0 -de 02_wind_on 1 283 2030 1.0 0.0 -de 03_wind_off 1 283 2030 1.0 0.0 -de 04_res 1 283 2030 1.0 0.0 -de 05_nuclear 1 283 2030 1.0 0.0 -de 06_coal 1 283 2030 1.0 0.0 -de 07_gas 1 283 2030 0.0 0.0 -de 08_non-res 1 283 2030 0.0 0.0 -de 09_hydro_pump 1 283 2030 0.0 0.0 -de 01_solar 1 284 2030 1.0 0.0 -de 02_wind_on 1 284 2030 1.0 0.0 -de 03_wind_off 1 284 2030 1.0 0.0 -de 04_res 1 284 2030 1.0 0.0 -de 05_nuclear 1 284 2030 1.0 0.0 -de 06_coal 1 284 2030 1.0 0.0 -de 07_gas 1 284 2030 0.0 0.0 -de 08_non-res 1 284 2030 0.0 0.0 -de 09_hydro_pump 1 284 2030 0.0 0.0 -de 01_solar 1 285 2030 1.0 0.0 -de 02_wind_on 1 285 2030 1.0 0.0 -de 03_wind_off 1 285 2030 1.0 0.0 -de 04_res 1 285 2030 1.0 0.0 -de 05_nuclear 1 285 2030 1.0 0.0 -de 06_coal 1 285 2030 1.0 0.0 -de 07_gas 1 285 2030 0.0 0.0 -de 08_non-res 1 285 2030 0.0 0.0 -de 09_hydro_pump 1 285 2030 0.0 0.0 -de 01_solar 1 286 2030 1.0 0.0 -de 02_wind_on 1 286 2030 1.0 0.0 -de 03_wind_off 1 286 2030 1.0 0.0 -de 04_res 1 286 2030 1.0 0.0 -de 05_nuclear 1 286 2030 1.0 0.0 -de 06_coal 1 286 2030 1.0 0.0 -de 07_gas 1 286 2030 0.0 0.0 -de 08_non-res 1 286 2030 0.0 0.0 -de 09_hydro_pump 1 286 2030 0.0 0.0 -de 01_solar 1 287 2030 1.0 0.0 -de 02_wind_on 1 287 2030 1.0 0.0 -de 03_wind_off 1 287 2030 1.0 0.0 -de 04_res 1 287 2030 1.0 0.0 -de 05_nuclear 1 287 2030 1.0 0.0 -de 06_coal 1 287 2030 1.0 0.0 -de 07_gas 1 287 2030 0.0 0.0 -de 08_non-res 1 287 2030 0.0 0.0 -de 09_hydro_pump 1 287 2030 0.0 0.0 -de 01_solar 1 288 2030 1.0 0.0 -de 02_wind_on 1 288 2030 1.0 0.0 -de 03_wind_off 1 288 2030 1.0 0.0 -de 04_res 1 288 2030 1.0 0.0 -de 05_nuclear 1 288 2030 1.0 0.0 -de 06_coal 1 288 2030 1.0 0.0 -de 07_gas 1 288 2030 0.0 0.0 -de 08_non-res 1 288 2030 0.0 0.0 -de 09_hydro_pump 1 288 2030 0.0 0.0 -de 01_solar 1 289 2030 1.0 0.0 -de 02_wind_on 1 289 2030 1.0 0.0 -de 03_wind_off 1 289 2030 1.0 0.0 -de 04_res 1 289 2030 1.0 0.0 -de 05_nuclear 1 289 2030 1.0 0.0 -de 06_coal 1 289 2030 1.0 0.0 -de 07_gas 1 289 2030 0.0 0.0 -de 08_non-res 1 289 2030 0.0 0.0 -de 09_hydro_pump 1 289 2030 0.0 0.0 -de 01_solar 1 290 2030 1.0 0.0 -de 02_wind_on 1 290 2030 1.0 0.0 -de 03_wind_off 1 290 2030 1.0 0.0 -de 04_res 1 290 2030 1.0 0.0 -de 05_nuclear 1 290 2030 1.0 0.0 -de 06_coal 1 290 2030 1.0 0.0 -de 07_gas 1 290 2030 1.0 0.0 -de 08_non-res 1 290 2030 0.0 0.0 -de 09_hydro_pump 1 290 2030 0.0 0.0 -de 01_solar 1 291 2030 1.0 0.0 -de 02_wind_on 1 291 2030 1.0 0.0 -de 03_wind_off 1 291 2030 1.0 0.0 -de 04_res 1 291 2030 1.0 0.0 -de 05_nuclear 1 291 2030 1.0 0.0 -de 06_coal 1 291 2030 1.0 0.0 -de 07_gas 1 291 2030 1.0 0.0 -de 08_non-res 1 291 2030 0.0 0.0 -de 09_hydro_pump 1 291 2030 0.0 0.0 -de 01_solar 1 292 2030 1.0 0.0 -de 02_wind_on 1 292 2030 1.0 0.0 -de 03_wind_off 1 292 2030 1.0 0.0 -de 04_res 1 292 2030 1.0 0.0 -de 05_nuclear 1 292 2030 1.0 0.0 -de 06_coal 1 292 2030 1.0 0.0 -de 07_gas 1 292 2030 1.0 0.0 -de 08_non-res 1 292 2030 0.0 0.0 -de 09_hydro_pump 1 292 2030 0.0 0.0 -de 01_solar 1 293 2030 1.0 0.0 -de 02_wind_on 1 293 2030 1.0 0.0 -de 03_wind_off 1 293 2030 1.0 0.0 -de 04_res 1 293 2030 1.0 0.0 -de 05_nuclear 1 293 2030 1.0 0.0 -de 06_coal 1 293 2030 1.0 0.0 -de 07_gas 1 293 2030 1.0 0.0 -de 08_non-res 1 293 2030 0.0 0.0 -de 09_hydro_pump 1 293 2030 0.0 0.0 -de 01_solar 1 294 2030 1.0 0.0 -de 02_wind_on 1 294 2030 1.0 0.0 -de 03_wind_off 1 294 2030 1.0 0.0 -de 04_res 1 294 2030 1.0 0.0 -de 05_nuclear 1 294 2030 1.0 0.0 -de 06_coal 1 294 2030 1.0 0.0 -de 07_gas 1 294 2030 1.0 0.0 -de 08_non-res 1 294 2030 0.0 0.0 -de 09_hydro_pump 1 294 2030 0.0 0.0 -de 01_solar 1 295 2030 1.0 0.0 -de 02_wind_on 1 295 2030 1.0 0.0 -de 03_wind_off 1 295 2030 1.0 0.0 -de 04_res 1 295 2030 1.0 0.0 -de 05_nuclear 1 295 2030 1.0 0.0 -de 06_coal 1 295 2030 1.0 0.0 -de 07_gas 1 295 2030 1.0 0.0 -de 08_non-res 1 295 2030 0.0 0.0 -de 09_hydro_pump 1 295 2030 0.0 0.0 -de 01_solar 1 296 2030 1.0 0.0 -de 02_wind_on 1 296 2030 1.0 0.0 -de 03_wind_off 1 296 2030 1.0 0.0 -de 04_res 1 296 2030 1.0 0.0 -de 05_nuclear 1 296 2030 1.0 0.0 -de 06_coal 1 296 2030 1.0 0.0 -de 07_gas 1 296 2030 1.0 0.0 -de 08_non-res 1 296 2030 0.0 0.0 -de 09_hydro_pump 1 296 2030 0.0 0.0 -de 01_solar 1 297 2030 1.0 0.0 -de 02_wind_on 1 297 2030 1.0 0.0 -de 03_wind_off 1 297 2030 1.0 0.0 -de 04_res 1 297 2030 1.0 0.0 -de 05_nuclear 1 297 2030 1.0 0.0 -de 06_coal 1 297 2030 1.0 0.0 -de 07_gas 1 297 2030 1.0 0.0 -de 08_non-res 1 297 2030 0.0 0.0 -de 09_hydro_pump 1 297 2030 0.0 0.0 -de 01_solar 1 298 2030 1.0 0.0 -de 02_wind_on 1 298 2030 1.0 0.0 -de 03_wind_off 1 298 2030 1.0 0.0 -de 04_res 1 298 2030 1.0 0.0 -de 05_nuclear 1 298 2030 1.0 0.0 -de 06_coal 1 298 2030 1.0 0.0 -de 07_gas 1 298 2030 1.0 0.0 -de 08_non-res 1 298 2030 0.0 0.0 -de 09_hydro_pump 1 298 2030 0.0 0.0 -de 01_solar 1 299 2030 1.0 0.0 -de 02_wind_on 1 299 2030 1.0 0.0 -de 03_wind_off 1 299 2030 1.0 0.0 -de 04_res 1 299 2030 1.0 0.0 -de 05_nuclear 1 299 2030 1.0 0.0 -de 06_coal 1 299 2030 1.0 0.0 -de 07_gas 1 299 2030 1.0 0.0 -de 08_non-res 1 299 2030 0.0 0.0 -de 09_hydro_pump 1 299 2030 0.0 0.0 -de 01_solar 1 300 2030 1.0 0.0 -de 02_wind_on 1 300 2030 1.0 0.0 -de 03_wind_off 1 300 2030 1.0 0.0 -de 04_res 1 300 2030 1.0 0.0 -de 05_nuclear 1 300 2030 1.0 0.0 -de 06_coal 1 300 2030 1.0 0.0 -de 07_gas 1 300 2030 1.0 0.0 -de 08_non-res 1 300 2030 0.0 0.0 -de 09_hydro_pump 1 300 2030 0.0 0.0 -de 01_solar 1 301 2030 1.0 0.0 -de 02_wind_on 1 301 2030 1.0 0.0 -de 03_wind_off 1 301 2030 1.0 0.0 -de 04_res 1 301 2030 1.0 0.0 -de 05_nuclear 1 301 2030 1.0 0.0 -de 06_coal 1 301 2030 1.0 0.0 -de 07_gas 1 301 2030 1.0 0.0 -de 08_non-res 1 301 2030 0.0 0.0 -de 09_hydro_pump 1 301 2030 0.0 0.0 -de 01_solar 1 302 2030 1.0 0.0 -de 02_wind_on 1 302 2030 1.0 0.0 -de 03_wind_off 1 302 2030 1.0 0.0 -de 04_res 1 302 2030 1.0 0.0 -de 05_nuclear 1 302 2030 1.0 0.0 -de 06_coal 1 302 2030 1.0 0.0 -de 07_gas 1 302 2030 1.0 0.0 -de 08_non-res 1 302 2030 0.0 0.0 -de 09_hydro_pump 1 302 2030 0.0 0.0 -de 01_solar 1 303 2030 1.0 0.0 -de 02_wind_on 1 303 2030 1.0 0.0 -de 03_wind_off 1 303 2030 1.0 0.0 -de 04_res 1 303 2030 1.0 0.0 -de 05_nuclear 1 303 2030 1.0 0.0 -de 06_coal 1 303 2030 1.0 0.0 -de 07_gas 1 303 2030 1.0 0.0 -de 08_non-res 1 303 2030 0.0 0.0 -de 09_hydro_pump 1 303 2030 0.0 0.0 -de 01_solar 1 304 2030 1.0 0.0 -de 02_wind_on 1 304 2030 1.0 0.0 -de 03_wind_off 1 304 2030 1.0 0.0 -de 04_res 1 304 2030 1.0 0.0 -de 05_nuclear 1 304 2030 1.0 0.0 -de 06_coal 1 304 2030 1.0 0.0 -de 07_gas 1 304 2030 1.0 0.0 -de 08_non-res 1 304 2030 0.0 0.0 -de 09_hydro_pump 1 304 2030 0.0 0.0 -de 01_solar 1 305 2030 1.0 0.0 -de 02_wind_on 1 305 2030 1.0 0.0 -de 03_wind_off 1 305 2030 1.0 0.0 -de 04_res 1 305 2030 1.0 0.0 -de 05_nuclear 1 305 2030 1.0 0.0 -de 06_coal 1 305 2030 1.0 0.0 -de 07_gas 1 305 2030 1.0 0.0 -de 08_non-res 1 305 2030 0.0 0.0 -de 09_hydro_pump 1 305 2030 0.0 0.0 -de 01_solar 1 306 2030 1.0 0.0 -de 02_wind_on 1 306 2030 1.0 0.0 -de 03_wind_off 1 306 2030 1.0 0.0 -de 04_res 1 306 2030 1.0 0.0 -de 05_nuclear 1 306 2030 1.0 0.0 -de 06_coal 1 306 2030 1.0 0.0 -de 07_gas 1 306 2030 1.0 0.0 -de 08_non-res 1 306 2030 0.0 0.0 -de 09_hydro_pump 1 306 2030 0.0 0.0 -de 01_solar 1 307 2030 1.0 0.0 -de 02_wind_on 1 307 2030 1.0 0.0 -de 03_wind_off 1 307 2030 1.0 0.0 -de 04_res 1 307 2030 1.0 0.0 -de 05_nuclear 1 307 2030 1.0 0.0 -de 06_coal 1 307 2030 1.0 0.0 -de 07_gas 1 307 2030 1.0 0.0 -de 08_non-res 1 307 2030 0.0 0.0 -de 09_hydro_pump 1 307 2030 0.0 0.0 -de 01_solar 1 308 2030 1.0 0.0 -de 02_wind_on 1 308 2030 1.0 0.0 -de 03_wind_off 1 308 2030 1.0 0.0 -de 04_res 1 308 2030 1.0 0.0 -de 05_nuclear 1 308 2030 1.0 0.0 -de 06_coal 1 308 2030 1.0 0.0 -de 07_gas 1 308 2030 1.0 0.0 -de 08_non-res 1 308 2030 0.0 0.0 -de 09_hydro_pump 1 308 2030 0.0 0.0 -de 01_solar 1 309 2030 1.0 0.0 -de 02_wind_on 1 309 2030 1.0 0.0 -de 03_wind_off 1 309 2030 1.0 0.0 -de 04_res 1 309 2030 1.0 0.0 -de 05_nuclear 1 309 2030 1.0 0.0 -de 06_coal 1 309 2030 1.0 0.0 -de 07_gas 1 309 2030 1.0 0.0 -de 08_non-res 1 309 2030 0.0 0.0 -de 09_hydro_pump 1 309 2030 0.0 0.0 -de 01_solar 1 310 2030 1.0 0.0 -de 02_wind_on 1 310 2030 1.0 0.0 -de 03_wind_off 1 310 2030 1.0 0.0 -de 04_res 1 310 2030 1.0 0.0 -de 05_nuclear 1 310 2030 1.0 0.0 -de 06_coal 1 310 2030 1.0 0.0 -de 07_gas 1 310 2030 1.0 0.0 -de 08_non-res 1 310 2030 1.0 0.0 -de 09_hydro_pump 1 310 2030 0.0 0.0 -de 01_solar 1 311 2030 1.0 0.0 -de 02_wind_on 1 311 2030 1.0 0.0 -de 03_wind_off 1 311 2030 1.0 0.0 -de 04_res 1 311 2030 1.0 0.0 -de 05_nuclear 1 311 2030 1.0 0.0 -de 06_coal 1 311 2030 1.0 0.0 -de 07_gas 1 311 2030 1.0 0.0 -de 08_non-res 1 311 2030 1.0 0.0 -de 09_hydro_pump 1 311 2030 0.0 0.0 -de 01_solar 1 312 2030 1.0 0.0 -de 02_wind_on 1 312 2030 1.0 0.0 -de 03_wind_off 1 312 2030 1.0 0.0 -de 04_res 1 312 2030 1.0 0.0 -de 05_nuclear 1 312 2030 1.0 0.0 -de 06_coal 1 312 2030 1.0 0.0 -de 07_gas 1 312 2030 1.0 0.0 -de 08_non-res 1 312 2030 1.0 0.0 -de 09_hydro_pump 1 312 2030 0.0 0.0 -de 01_solar 1 313 2030 1.0 0.0 -de 02_wind_on 1 313 2030 1.0 0.0 -de 03_wind_off 1 313 2030 1.0 0.0 -de 04_res 1 313 2030 1.0 0.0 -de 05_nuclear 1 313 2030 1.0 0.0 -de 06_coal 1 313 2030 1.0 0.0 -de 07_gas 1 313 2030 1.0 0.0 -de 08_non-res 1 313 2030 1.0 0.0 -de 09_hydro_pump 1 313 2030 0.0 0.0 -de 01_solar 1 314 2030 1.0 0.0 -de 02_wind_on 1 314 2030 1.0 0.0 -de 03_wind_off 1 314 2030 1.0 0.0 -de 04_res 1 314 2030 1.0 0.0 -de 05_nuclear 1 314 2030 1.0 0.0 -de 06_coal 1 314 2030 1.0 0.0 -de 07_gas 1 314 2030 1.0 0.0 -de 08_non-res 1 314 2030 1.0 0.0 -de 09_hydro_pump 1 314 2030 0.0 0.0 -de 01_solar 1 315 2030 1.0 0.0 -de 02_wind_on 1 315 2030 1.0 0.0 -de 03_wind_off 1 315 2030 1.0 0.0 -de 04_res 1 315 2030 1.0 0.0 -de 05_nuclear 1 315 2030 1.0 0.0 -de 06_coal 1 315 2030 1.0 0.0 -de 07_gas 1 315 2030 1.0 0.0 -de 08_non-res 1 315 2030 1.0 0.0 -de 09_hydro_pump 1 315 2030 0.0 0.0 -de 01_solar 1 316 2030 1.0 0.0 -de 02_wind_on 1 316 2030 1.0 0.0 -de 03_wind_off 1 316 2030 1.0 0.0 -de 04_res 1 316 2030 1.0 0.0 -de 05_nuclear 1 316 2030 1.0 0.0 -de 06_coal 1 316 2030 1.0 0.0 -de 07_gas 1 316 2030 1.0 0.0 -de 08_non-res 1 316 2030 1.0 0.0 -de 09_hydro_pump 1 316 2030 0.0 0.0 -de 01_solar 1 317 2030 1.0 0.0 -de 02_wind_on 1 317 2030 1.0 0.0 -de 03_wind_off 1 317 2030 1.0 0.0 -de 04_res 1 317 2030 1.0 0.0 -de 05_nuclear 1 317 2030 1.0 0.0 -de 06_coal 1 317 2030 1.0 0.0 -de 07_gas 1 317 2030 1.0 0.0 -de 08_non-res 1 317 2030 1.0 0.0 -de 09_hydro_pump 1 317 2030 0.0 0.0 -de 01_solar 1 318 2030 1.0 0.0 -de 02_wind_on 1 318 2030 1.0 0.0 -de 03_wind_off 1 318 2030 1.0 0.0 -de 04_res 1 318 2030 1.0 0.0 -de 05_nuclear 1 318 2030 1.0 0.0 -de 06_coal 1 318 2030 1.0 0.0 -de 07_gas 1 318 2030 1.0 0.0 -de 08_non-res 1 318 2030 1.0 0.0 -de 09_hydro_pump 1 318 2030 0.0 0.0 -de 01_solar 1 319 2030 1.0 0.0 -de 02_wind_on 1 319 2030 1.0 0.0 -de 03_wind_off 1 319 2030 1.0 0.0 -de 04_res 1 319 2030 1.0 0.0 -de 05_nuclear 1 319 2030 1.0 0.0 -de 06_coal 1 319 2030 1.0 0.0 -de 07_gas 1 319 2030 1.0 0.0 -de 08_non-res 1 319 2030 1.0 0.0 -de 09_hydro_pump 1 319 2030 0.0 0.0 -de 01_solar 1 320 2030 1.0 0.0 -de 02_wind_on 1 320 2030 1.0 0.0 -de 03_wind_off 1 320 2030 1.0 0.0 -de 04_res 1 320 2030 1.0 0.0 -de 05_nuclear 1 320 2030 1.0 0.0 -de 06_coal 1 320 2030 1.0 0.0 -de 07_gas 1 320 2030 1.0 0.0 -de 08_non-res 1 320 2030 1.0 0.0 -de 09_hydro_pump 1 320 2030 0.0 0.0 -de 01_solar 1 321 2030 1.0 0.0 -de 02_wind_on 1 321 2030 1.0 0.0 -de 03_wind_off 1 321 2030 1.0 0.0 -de 04_res 1 321 2030 1.0 0.0 -de 05_nuclear 1 321 2030 1.0 0.0 -de 06_coal 1 321 2030 1.0 0.0 -de 07_gas 1 321 2030 1.0 0.0 -de 08_non-res 1 321 2030 1.0 0.0 -de 09_hydro_pump 1 321 2030 0.0 0.0 -de 01_solar 1 322 2030 1.0 0.0 -de 02_wind_on 1 322 2030 1.0 0.0 -de 03_wind_off 1 322 2030 1.0 0.0 -de 04_res 1 322 2030 1.0 0.0 -de 05_nuclear 1 322 2030 1.0 0.0 -de 06_coal 1 322 2030 1.0 0.0 -de 07_gas 1 322 2030 1.0 0.0 -de 08_non-res 1 322 2030 1.0 0.0 -de 09_hydro_pump 1 322 2030 0.0 0.0 -de 01_solar 1 323 2030 1.0 0.0 -de 02_wind_on 1 323 2030 1.0 0.0 -de 03_wind_off 1 323 2030 1.0 0.0 -de 04_res 1 323 2030 1.0 0.0 -de 05_nuclear 1 323 2030 1.0 0.0 -de 06_coal 1 323 2030 1.0 0.0 -de 07_gas 1 323 2030 1.0 0.0 -de 08_non-res 1 323 2030 1.0 0.0 -de 09_hydro_pump 1 323 2030 0.0 0.0 -de 01_solar 1 324 2030 1.0 0.0 -de 02_wind_on 1 324 2030 1.0 0.0 -de 03_wind_off 1 324 2030 1.0 0.0 -de 04_res 1 324 2030 1.0 0.0 -de 05_nuclear 1 324 2030 1.0 0.0 -de 06_coal 1 324 2030 1.0 0.0 -de 07_gas 1 324 2030 1.0 0.0 -de 08_non-res 1 324 2030 1.0 0.0 -de 09_hydro_pump 1 324 2030 0.0 0.0 -de 01_solar 1 325 2030 1.0 0.0 -de 02_wind_on 1 325 2030 1.0 0.0 -de 03_wind_off 1 325 2030 1.0 0.0 -de 04_res 1 325 2030 1.0 0.0 -de 05_nuclear 1 325 2030 1.0 0.0 -de 06_coal 1 325 2030 1.0 0.0 -de 07_gas 1 325 2030 1.0 0.0 -de 08_non-res 1 325 2030 1.0 0.0 -de 09_hydro_pump 1 325 2030 0.0 0.0 -de 01_solar 1 326 2030 1.0 0.0 -de 02_wind_on 1 326 2030 1.0 0.0 -de 03_wind_off 1 326 2030 1.0 0.0 -de 04_res 1 326 2030 1.0 0.0 -de 05_nuclear 1 326 2030 1.0 0.0 -de 06_coal 1 326 2030 1.0 0.0 -de 07_gas 1 326 2030 1.0 0.0 -de 08_non-res 1 326 2030 1.0 0.0 -de 09_hydro_pump 1 326 2030 0.0 0.0 -de 01_solar 1 327 2030 1.0 0.0 -de 02_wind_on 1 327 2030 1.0 0.0 -de 03_wind_off 1 327 2030 1.0 0.0 -de 04_res 1 327 2030 1.0 0.0 -de 05_nuclear 1 327 2030 1.0 0.0 -de 06_coal 1 327 2030 1.0 0.0 -de 07_gas 1 327 2030 1.0 0.0 -de 08_non-res 1 327 2030 1.0 0.0 -de 09_hydro_pump 1 327 2030 0.0 0.0 -de 01_solar 1 328 2030 1.0 0.0 -de 02_wind_on 1 328 2030 1.0 0.0 -de 03_wind_off 1 328 2030 1.0 0.0 -de 04_res 1 328 2030 1.0 0.0 -de 05_nuclear 1 328 2030 1.0 0.0 -de 06_coal 1 328 2030 1.0 0.0 -de 07_gas 1 328 2030 1.0 0.0 -de 08_non-res 1 328 2030 1.0 0.0 -de 09_hydro_pump 1 328 2030 0.0 0.0 -de 01_solar 1 329 2030 1.0 0.0 -de 02_wind_on 1 329 2030 1.0 0.0 -de 03_wind_off 1 329 2030 1.0 0.0 -de 04_res 1 329 2030 1.0 0.0 -de 05_nuclear 1 329 2030 1.0 0.0 -de 06_coal 1 329 2030 1.0 0.0 -de 07_gas 1 329 2030 1.0 0.0 -de 08_non-res 1 329 2030 1.0 0.0 -de 09_hydro_pump 1 329 2030 0.0 0.0 -de 01_solar 1 330 2030 1.0 0.0 -de 02_wind_on 1 330 2030 1.0 0.0 -de 03_wind_off 1 330 2030 1.0 0.0 -de 04_res 1 330 2030 1.0 0.0 -de 05_nuclear 1 330 2030 1.0 0.0 -de 06_coal 1 330 2030 1.0 0.0 -de 07_gas 1 330 2030 1.0 0.0 -de 08_non-res 1 330 2030 1.0 0.0 -de 09_hydro_pump 1 330 2030 1.0 0.0 -de 01_solar 1 331 2030 1.0 0.0 -de 02_wind_on 1 331 2030 1.0 0.0 -de 03_wind_off 1 331 2030 1.0 0.0 -de 04_res 1 331 2030 1.0 0.0 -de 05_nuclear 1 331 2030 1.0 0.0 -de 06_coal 1 331 2030 1.0 0.0 -de 07_gas 1 331 2030 1.0 0.0 -de 08_non-res 1 331 2030 1.0 0.0 -de 09_hydro_pump 1 331 2030 1.0 0.0 -de 01_solar 1 332 2030 1.0 0.0 -de 02_wind_on 1 332 2030 1.0 0.0 -de 03_wind_off 1 332 2030 1.0 0.0 -de 04_res 1 332 2030 1.0 0.0 -de 05_nuclear 1 332 2030 1.0 0.0 -de 06_coal 1 332 2030 1.0 0.0 -de 07_gas 1 332 2030 1.0 0.0 -de 08_non-res 1 332 2030 1.0 0.0 -de 09_hydro_pump 1 332 2030 1.0 0.0 -de 01_solar 1 333 2030 1.0 0.0 -de 02_wind_on 1 333 2030 1.0 0.0 -de 03_wind_off 1 333 2030 1.0 0.0 -de 04_res 1 333 2030 1.0 0.0 -de 05_nuclear 1 333 2030 1.0 0.0 -de 06_coal 1 333 2030 1.0 0.0 -de 07_gas 1 333 2030 1.0 0.0 -de 08_non-res 1 333 2030 1.0 0.0 -de 09_hydro_pump 1 333 2030 1.0 0.0 -de 01_solar 1 334 2030 1.0 0.0 -de 02_wind_on 1 334 2030 1.0 0.0 -de 03_wind_off 1 334 2030 1.0 0.0 -de 04_res 1 334 2030 1.0 0.0 -de 05_nuclear 1 334 2030 1.0 0.0 -de 06_coal 1 334 2030 1.0 0.0 -de 07_gas 1 334 2030 1.0 0.0 -de 08_non-res 1 334 2030 1.0 0.0 -de 09_hydro_pump 1 334 2030 1.0 0.0 -de 01_solar 1 335 2030 1.0 0.0 -de 02_wind_on 1 335 2030 1.0 0.0 -de 03_wind_off 1 335 2030 1.0 0.0 -de 04_res 1 335 2030 1.0 0.0 -de 05_nuclear 1 335 2030 1.0 0.0 -de 06_coal 1 335 2030 1.0 0.0 -de 07_gas 1 335 2030 1.0 0.0 -de 08_non-res 1 335 2030 1.0 0.0 -de 09_hydro_pump 1 335 2030 1.0 0.0 -de 01_solar 1 336 2030 1.0 0.0 -de 02_wind_on 1 336 2030 1.0 0.0 -de 03_wind_off 1 336 2030 1.0 0.0 -de 04_res 1 336 2030 1.0 0.0 -de 05_nuclear 1 336 2030 1.0 0.0 -de 06_coal 1 336 2030 1.0 0.0 -de 07_gas 1 336 2030 1.0 0.0 -de 08_non-res 1 336 2030 1.0 0.0 -de 09_hydro_pump 1 336 2030 1.0 0.0 -es 01_solar 1 1 2030 0.0 0.0 -es 02_wind_on 1 1 2030 0.0 0.0 -es 03_wind_off 1 1 2030 0.0 0.0 -es 04_res 1 1 2030 0.0 0.0 -es 05_nuclear 1 1 2030 0.0 0.0 -es 06_coal 1 1 2030 0.0 0.0 -es 07_gas 1 1 2030 0.0 0.0 -es 08_non-res 1 1 2030 0.0 0.0 -es 09_hydro_pump 1 1 2030 0.0 0.0 -es 01_solar 1 2 2030 1.0 0.0 -es 02_wind_on 1 2 2030 0.0 0.0 -es 03_wind_off 1 2 2030 0.0 0.0 -es 04_res 1 2 2030 0.0 0.0 -es 05_nuclear 1 2 2030 0.0 0.0 -es 06_coal 1 2 2030 0.0 0.0 -es 07_gas 1 2 2030 0.0 0.0 -es 08_non-res 1 2 2030 0.0 0.0 -es 09_hydro_pump 1 2 2030 0.0 0.0 -es 01_solar 1 3 2030 1.0 0.0 -es 02_wind_on 1 3 2030 0.0 0.0 -es 03_wind_off 1 3 2030 0.0 0.0 -es 04_res 1 3 2030 0.0 0.0 -es 05_nuclear 1 3 2030 0.0 0.0 -es 06_coal 1 3 2030 0.0 0.0 -es 07_gas 1 3 2030 0.0 0.0 -es 08_non-res 1 3 2030 0.0 0.0 -es 09_hydro_pump 1 3 2030 0.0 0.0 -es 01_solar 1 4 2030 1.0 0.0 -es 02_wind_on 1 4 2030 0.0 0.0 -es 03_wind_off 1 4 2030 0.0 0.0 -es 04_res 1 4 2030 0.0 0.0 -es 05_nuclear 1 4 2030 0.0 0.0 -es 06_coal 1 4 2030 0.0 0.0 -es 07_gas 1 4 2030 0.0 0.0 -es 08_non-res 1 4 2030 0.0 0.0 -es 09_hydro_pump 1 4 2030 0.0 0.0 -es 01_solar 1 5 2030 1.0 0.0 -es 02_wind_on 1 5 2030 0.0 0.0 -es 03_wind_off 1 5 2030 0.0 0.0 -es 04_res 1 5 2030 0.0 0.0 -es 05_nuclear 1 5 2030 0.0 0.0 -es 06_coal 1 5 2030 0.0 0.0 -es 07_gas 1 5 2030 0.0 0.0 -es 08_non-res 1 5 2030 0.0 0.0 -es 09_hydro_pump 1 5 2030 0.0 0.0 -es 01_solar 1 6 2030 1.0 0.0 -es 02_wind_on 1 6 2030 0.0 0.0 -es 03_wind_off 1 6 2030 0.0 0.0 -es 04_res 1 6 2030 0.0 0.0 -es 05_nuclear 1 6 2030 0.0 0.0 -es 06_coal 1 6 2030 0.0 0.0 -es 07_gas 1 6 2030 0.0 0.0 -es 08_non-res 1 6 2030 0.0 0.0 -es 09_hydro_pump 1 6 2030 0.0 0.0 -es 01_solar 1 7 2030 1.0 0.0 -es 02_wind_on 1 7 2030 0.0 0.0 -es 03_wind_off 1 7 2030 0.0 0.0 -es 04_res 1 7 2030 0.0 0.0 -es 05_nuclear 1 7 2030 0.0 0.0 -es 06_coal 1 7 2030 0.0 0.0 -es 07_gas 1 7 2030 0.0 0.0 -es 08_non-res 1 7 2030 0.0 0.0 -es 09_hydro_pump 1 7 2030 0.0 0.0 -es 01_solar 1 8 2030 1.0 0.0 -es 02_wind_on 1 8 2030 0.0 0.0 -es 03_wind_off 1 8 2030 0.0 0.0 -es 04_res 1 8 2030 0.0 0.0 -es 05_nuclear 1 8 2030 0.0 0.0 -es 06_coal 1 8 2030 0.0 0.0 -es 07_gas 1 8 2030 0.0 0.0 -es 08_non-res 1 8 2030 0.0 0.0 -es 09_hydro_pump 1 8 2030 0.0 0.0 -es 01_solar 1 9 2030 1.0 0.0 -es 02_wind_on 1 9 2030 0.0 0.0 -es 03_wind_off 1 9 2030 0.0 0.0 -es 04_res 1 9 2030 0.0 0.0 -es 05_nuclear 1 9 2030 0.0 0.0 -es 06_coal 1 9 2030 0.0 0.0 -es 07_gas 1 9 2030 0.0 0.0 -es 08_non-res 1 9 2030 0.0 0.0 -es 09_hydro_pump 1 9 2030 0.0 0.0 -es 01_solar 1 10 2030 1.0 0.0 -es 02_wind_on 1 10 2030 0.0 0.0 -es 03_wind_off 1 10 2030 0.0 0.0 -es 04_res 1 10 2030 0.0 0.0 -es 05_nuclear 1 10 2030 0.0 0.0 -es 06_coal 1 10 2030 0.0 0.0 -es 07_gas 1 10 2030 0.0 0.0 -es 08_non-res 1 10 2030 0.0 0.0 -es 09_hydro_pump 1 10 2030 0.0 0.0 -es 01_solar 1 11 2030 1.0 0.0 -es 02_wind_on 1 11 2030 0.0 0.0 -es 03_wind_off 1 11 2030 0.0 0.0 -es 04_res 1 11 2030 0.0 0.0 -es 05_nuclear 1 11 2030 0.0 0.0 -es 06_coal 1 11 2030 0.0 0.0 -es 07_gas 1 11 2030 0.0 0.0 -es 08_non-res 1 11 2030 0.0 0.0 -es 09_hydro_pump 1 11 2030 0.0 0.0 -es 01_solar 1 12 2030 1.0 0.0 -es 02_wind_on 1 12 2030 0.0 0.0 -es 03_wind_off 1 12 2030 0.0 0.0 -es 04_res 1 12 2030 0.0 0.0 -es 05_nuclear 1 12 2030 0.0 0.0 -es 06_coal 1 12 2030 0.0 0.0 -es 07_gas 1 12 2030 0.0 0.0 -es 08_non-res 1 12 2030 0.0 0.0 -es 09_hydro_pump 1 12 2030 0.0 0.0 -es 01_solar 1 13 2030 1.0 0.0 -es 02_wind_on 1 13 2030 0.0 0.0 -es 03_wind_off 1 13 2030 0.0 0.0 -es 04_res 1 13 2030 0.0 0.0 -es 05_nuclear 1 13 2030 0.0 0.0 -es 06_coal 1 13 2030 0.0 0.0 -es 07_gas 1 13 2030 0.0 0.0 -es 08_non-res 1 13 2030 0.0 0.0 -es 09_hydro_pump 1 13 2030 0.0 0.0 -es 01_solar 1 14 2030 1.0 0.0 -es 02_wind_on 1 14 2030 0.0 0.0 -es 03_wind_off 1 14 2030 0.0 0.0 -es 04_res 1 14 2030 0.0 0.0 -es 05_nuclear 1 14 2030 0.0 0.0 -es 06_coal 1 14 2030 0.0 0.0 -es 07_gas 1 14 2030 0.0 0.0 -es 08_non-res 1 14 2030 0.0 0.0 -es 09_hydro_pump 1 14 2030 0.0 0.0 -es 01_solar 1 15 2030 1.0 0.0 -es 02_wind_on 1 15 2030 0.0 0.0 -es 03_wind_off 1 15 2030 0.0 0.0 -es 04_res 1 15 2030 0.0 0.0 -es 05_nuclear 1 15 2030 0.0 0.0 -es 06_coal 1 15 2030 0.0 0.0 -es 07_gas 1 15 2030 0.0 0.0 -es 08_non-res 1 15 2030 0.0 0.0 -es 09_hydro_pump 1 15 2030 0.0 0.0 -es 01_solar 1 16 2030 1.0 0.0 -es 02_wind_on 1 16 2030 0.0 0.0 -es 03_wind_off 1 16 2030 0.0 0.0 -es 04_res 1 16 2030 0.0 0.0 -es 05_nuclear 1 16 2030 0.0 0.0 -es 06_coal 1 16 2030 0.0 0.0 -es 07_gas 1 16 2030 0.0 0.0 -es 08_non-res 1 16 2030 0.0 0.0 -es 09_hydro_pump 1 16 2030 0.0 0.0 -es 01_solar 1 17 2030 1.0 0.0 -es 02_wind_on 1 17 2030 0.0 0.0 -es 03_wind_off 1 17 2030 0.0 0.0 -es 04_res 1 17 2030 0.0 0.0 -es 05_nuclear 1 17 2030 0.0 0.0 -es 06_coal 1 17 2030 0.0 0.0 -es 07_gas 1 17 2030 0.0 0.0 -es 08_non-res 1 17 2030 0.0 0.0 -es 09_hydro_pump 1 17 2030 0.0 0.0 -es 01_solar 1 18 2030 1.0 0.0 -es 02_wind_on 1 18 2030 0.0 0.0 -es 03_wind_off 1 18 2030 0.0 0.0 -es 04_res 1 18 2030 0.0 0.0 -es 05_nuclear 1 18 2030 0.0 0.0 -es 06_coal 1 18 2030 0.0 0.0 -es 07_gas 1 18 2030 0.0 0.0 -es 08_non-res 1 18 2030 0.0 0.0 -es 09_hydro_pump 1 18 2030 0.0 0.0 -es 01_solar 1 19 2030 1.0 0.0 -es 02_wind_on 1 19 2030 0.0 0.0 -es 03_wind_off 1 19 2030 0.0 0.0 -es 04_res 1 19 2030 0.0 0.0 -es 05_nuclear 1 19 2030 0.0 0.0 -es 06_coal 1 19 2030 0.0 0.0 -es 07_gas 1 19 2030 0.0 0.0 -es 08_non-res 1 19 2030 0.0 0.0 -es 09_hydro_pump 1 19 2030 0.0 0.0 -es 01_solar 1 20 2030 1.0 0.0 -es 02_wind_on 1 20 2030 0.0 0.0 -es 03_wind_off 1 20 2030 0.0 0.0 -es 04_res 1 20 2030 0.0 0.0 -es 05_nuclear 1 20 2030 0.0 0.0 -es 06_coal 1 20 2030 0.0 0.0 -es 07_gas 1 20 2030 0.0 0.0 -es 08_non-res 1 20 2030 0.0 0.0 -es 09_hydro_pump 1 20 2030 0.0 0.0 -es 01_solar 1 21 2030 1.0 0.0 -es 02_wind_on 1 21 2030 0.0 0.0 -es 03_wind_off 1 21 2030 0.0 0.0 -es 04_res 1 21 2030 0.0 0.0 -es 05_nuclear 1 21 2030 0.0 0.0 -es 06_coal 1 21 2030 0.0 0.0 -es 07_gas 1 21 2030 0.0 0.0 -es 08_non-res 1 21 2030 0.0 0.0 -es 09_hydro_pump 1 21 2030 0.0 0.0 -es 01_solar 1 22 2030 1.0 0.0 -es 02_wind_on 1 22 2030 1.0 0.0 -es 03_wind_off 1 22 2030 0.0 0.0 -es 04_res 1 22 2030 0.0 0.0 -es 05_nuclear 1 22 2030 0.0 0.0 -es 06_coal 1 22 2030 0.0 0.0 -es 07_gas 1 22 2030 0.0 0.0 -es 08_non-res 1 22 2030 0.0 0.0 -es 09_hydro_pump 1 22 2030 0.0 0.0 -es 01_solar 1 23 2030 1.0 0.0 -es 02_wind_on 1 23 2030 1.0 0.0 -es 03_wind_off 1 23 2030 0.0 0.0 -es 04_res 1 23 2030 0.0 0.0 -es 05_nuclear 1 23 2030 0.0 0.0 -es 06_coal 1 23 2030 0.0 0.0 -es 07_gas 1 23 2030 0.0 0.0 -es 08_non-res 1 23 2030 0.0 0.0 -es 09_hydro_pump 1 23 2030 0.0 0.0 -es 01_solar 1 24 2030 1.0 0.0 -es 02_wind_on 1 24 2030 1.0 0.0 -es 03_wind_off 1 24 2030 0.0 0.0 -es 04_res 1 24 2030 0.0 0.0 -es 05_nuclear 1 24 2030 0.0 0.0 -es 06_coal 1 24 2030 0.0 0.0 -es 07_gas 1 24 2030 0.0 0.0 -es 08_non-res 1 24 2030 0.0 0.0 -es 09_hydro_pump 1 24 2030 0.0 0.0 -es 01_solar 1 25 2030 1.0 0.0 -es 02_wind_on 1 25 2030 1.0 0.0 -es 03_wind_off 1 25 2030 0.0 0.0 -es 04_res 1 25 2030 0.0 0.0 -es 05_nuclear 1 25 2030 0.0 0.0 -es 06_coal 1 25 2030 0.0 0.0 -es 07_gas 1 25 2030 0.0 0.0 -es 08_non-res 1 25 2030 0.0 0.0 -es 09_hydro_pump 1 25 2030 0.0 0.0 -es 01_solar 1 26 2030 1.0 0.0 -es 02_wind_on 1 26 2030 1.0 0.0 -es 03_wind_off 1 26 2030 0.0 0.0 -es 04_res 1 26 2030 0.0 0.0 -es 05_nuclear 1 26 2030 0.0 0.0 -es 06_coal 1 26 2030 0.0 0.0 -es 07_gas 1 26 2030 0.0 0.0 -es 08_non-res 1 26 2030 0.0 0.0 -es 09_hydro_pump 1 26 2030 0.0 0.0 -es 01_solar 1 27 2030 1.0 0.0 -es 02_wind_on 1 27 2030 1.0 0.0 -es 03_wind_off 1 27 2030 0.0 0.0 -es 04_res 1 27 2030 0.0 0.0 -es 05_nuclear 1 27 2030 0.0 0.0 -es 06_coal 1 27 2030 0.0 0.0 -es 07_gas 1 27 2030 0.0 0.0 -es 08_non-res 1 27 2030 0.0 0.0 -es 09_hydro_pump 1 27 2030 0.0 0.0 -es 01_solar 1 28 2030 1.0 0.0 -es 02_wind_on 1 28 2030 1.0 0.0 -es 03_wind_off 1 28 2030 0.0 0.0 -es 04_res 1 28 2030 0.0 0.0 -es 05_nuclear 1 28 2030 0.0 0.0 -es 06_coal 1 28 2030 0.0 0.0 -es 07_gas 1 28 2030 0.0 0.0 -es 08_non-res 1 28 2030 0.0 0.0 -es 09_hydro_pump 1 28 2030 0.0 0.0 -es 01_solar 1 29 2030 1.0 0.0 -es 02_wind_on 1 29 2030 1.0 0.0 -es 03_wind_off 1 29 2030 0.0 0.0 -es 04_res 1 29 2030 0.0 0.0 -es 05_nuclear 1 29 2030 0.0 0.0 -es 06_coal 1 29 2030 0.0 0.0 -es 07_gas 1 29 2030 0.0 0.0 -es 08_non-res 1 29 2030 0.0 0.0 -es 09_hydro_pump 1 29 2030 0.0 0.0 -es 01_solar 1 30 2030 1.0 0.0 -es 02_wind_on 1 30 2030 1.0 0.0 -es 03_wind_off 1 30 2030 0.0 0.0 -es 04_res 1 30 2030 0.0 0.0 -es 05_nuclear 1 30 2030 0.0 0.0 -es 06_coal 1 30 2030 0.0 0.0 -es 07_gas 1 30 2030 0.0 0.0 -es 08_non-res 1 30 2030 0.0 0.0 -es 09_hydro_pump 1 30 2030 0.0 0.0 -es 01_solar 1 31 2030 1.0 0.0 -es 02_wind_on 1 31 2030 1.0 0.0 -es 03_wind_off 1 31 2030 0.0 0.0 -es 04_res 1 31 2030 0.0 0.0 -es 05_nuclear 1 31 2030 0.0 0.0 -es 06_coal 1 31 2030 0.0 0.0 -es 07_gas 1 31 2030 0.0 0.0 -es 08_non-res 1 31 2030 0.0 0.0 -es 09_hydro_pump 1 31 2030 0.0 0.0 -es 01_solar 1 32 2030 1.0 0.0 -es 02_wind_on 1 32 2030 1.0 0.0 -es 03_wind_off 1 32 2030 0.0 0.0 -es 04_res 1 32 2030 0.0 0.0 -es 05_nuclear 1 32 2030 0.0 0.0 -es 06_coal 1 32 2030 0.0 0.0 -es 07_gas 1 32 2030 0.0 0.0 -es 08_non-res 1 32 2030 0.0 0.0 -es 09_hydro_pump 1 32 2030 0.0 0.0 -es 01_solar 1 33 2030 1.0 0.0 -es 02_wind_on 1 33 2030 1.0 0.0 -es 03_wind_off 1 33 2030 0.0 0.0 -es 04_res 1 33 2030 0.0 0.0 -es 05_nuclear 1 33 2030 0.0 0.0 -es 06_coal 1 33 2030 0.0 0.0 -es 07_gas 1 33 2030 0.0 0.0 -es 08_non-res 1 33 2030 0.0 0.0 -es 09_hydro_pump 1 33 2030 0.0 0.0 -es 01_solar 1 34 2030 1.0 0.0 -es 02_wind_on 1 34 2030 1.0 0.0 -es 03_wind_off 1 34 2030 0.0 0.0 -es 04_res 1 34 2030 0.0 0.0 -es 05_nuclear 1 34 2030 0.0 0.0 -es 06_coal 1 34 2030 0.0 0.0 -es 07_gas 1 34 2030 0.0 0.0 -es 08_non-res 1 34 2030 0.0 0.0 -es 09_hydro_pump 1 34 2030 0.0 0.0 -es 01_solar 1 35 2030 1.0 0.0 -es 02_wind_on 1 35 2030 1.0 0.0 -es 03_wind_off 1 35 2030 0.0 0.0 -es 04_res 1 35 2030 0.0 0.0 -es 05_nuclear 1 35 2030 0.0 0.0 -es 06_coal 1 35 2030 0.0 0.0 -es 07_gas 1 35 2030 0.0 0.0 -es 08_non-res 1 35 2030 0.0 0.0 -es 09_hydro_pump 1 35 2030 0.0 0.0 -es 01_solar 1 36 2030 1.0 0.0 -es 02_wind_on 1 36 2030 1.0 0.0 -es 03_wind_off 1 36 2030 0.0 0.0 -es 04_res 1 36 2030 0.0 0.0 -es 05_nuclear 1 36 2030 0.0 0.0 -es 06_coal 1 36 2030 0.0 0.0 -es 07_gas 1 36 2030 0.0 0.0 -es 08_non-res 1 36 2030 0.0 0.0 -es 09_hydro_pump 1 36 2030 0.0 0.0 -es 01_solar 1 37 2030 1.0 0.0 -es 02_wind_on 1 37 2030 1.0 0.0 -es 03_wind_off 1 37 2030 0.0 0.0 -es 04_res 1 37 2030 0.0 0.0 -es 05_nuclear 1 37 2030 0.0 0.0 -es 06_coal 1 37 2030 0.0 0.0 -es 07_gas 1 37 2030 0.0 0.0 -es 08_non-res 1 37 2030 0.0 0.0 -es 09_hydro_pump 1 37 2030 0.0 0.0 -es 01_solar 1 38 2030 1.0 0.0 -es 02_wind_on 1 38 2030 1.0 0.0 -es 03_wind_off 1 38 2030 0.0 0.0 -es 04_res 1 38 2030 0.0 0.0 -es 05_nuclear 1 38 2030 0.0 0.0 -es 06_coal 1 38 2030 0.0 0.0 -es 07_gas 1 38 2030 0.0 0.0 -es 08_non-res 1 38 2030 0.0 0.0 -es 09_hydro_pump 1 38 2030 0.0 0.0 -es 01_solar 1 39 2030 1.0 0.0 -es 02_wind_on 1 39 2030 1.0 0.0 -es 03_wind_off 1 39 2030 0.0 0.0 -es 04_res 1 39 2030 0.0 0.0 -es 05_nuclear 1 39 2030 0.0 0.0 -es 06_coal 1 39 2030 0.0 0.0 -es 07_gas 1 39 2030 0.0 0.0 -es 08_non-res 1 39 2030 0.0 0.0 -es 09_hydro_pump 1 39 2030 0.0 0.0 -es 01_solar 1 40 2030 1.0 0.0 -es 02_wind_on 1 40 2030 1.0 0.0 -es 03_wind_off 1 40 2030 0.0 0.0 -es 04_res 1 40 2030 0.0 0.0 -es 05_nuclear 1 40 2030 0.0 0.0 -es 06_coal 1 40 2030 0.0 0.0 -es 07_gas 1 40 2030 0.0 0.0 -es 08_non-res 1 40 2030 0.0 0.0 -es 09_hydro_pump 1 40 2030 0.0 0.0 -es 01_solar 1 41 2030 1.0 0.0 -es 02_wind_on 1 41 2030 1.0 0.0 -es 03_wind_off 1 41 2030 0.0 0.0 -es 04_res 1 41 2030 0.0 0.0 -es 05_nuclear 1 41 2030 0.0 0.0 -es 06_coal 1 41 2030 0.0 0.0 -es 07_gas 1 41 2030 0.0 0.0 -es 08_non-res 1 41 2030 0.0 0.0 -es 09_hydro_pump 1 41 2030 0.0 0.0 -es 01_solar 1 42 2030 1.0 0.0 -es 02_wind_on 1 42 2030 1.0 0.0 -es 03_wind_off 1 42 2030 1.0 0.0 -es 04_res 1 42 2030 0.0 0.0 -es 05_nuclear 1 42 2030 0.0 0.0 -es 06_coal 1 42 2030 0.0 0.0 -es 07_gas 1 42 2030 0.0 0.0 -es 08_non-res 1 42 2030 0.0 0.0 -es 09_hydro_pump 1 42 2030 0.0 0.0 -es 01_solar 1 43 2030 1.0 0.0 -es 02_wind_on 1 43 2030 1.0 0.0 -es 03_wind_off 1 43 2030 1.0 0.0 -es 04_res 1 43 2030 0.0 0.0 -es 05_nuclear 1 43 2030 0.0 0.0 -es 06_coal 1 43 2030 0.0 0.0 -es 07_gas 1 43 2030 0.0 0.0 -es 08_non-res 1 43 2030 0.0 0.0 -es 09_hydro_pump 1 43 2030 0.0 0.0 -es 01_solar 1 44 2030 1.0 0.0 -es 02_wind_on 1 44 2030 1.0 0.0 -es 03_wind_off 1 44 2030 1.0 0.0 -es 04_res 1 44 2030 0.0 0.0 -es 05_nuclear 1 44 2030 0.0 0.0 -es 06_coal 1 44 2030 0.0 0.0 -es 07_gas 1 44 2030 0.0 0.0 -es 08_non-res 1 44 2030 0.0 0.0 -es 09_hydro_pump 1 44 2030 0.0 0.0 -es 01_solar 1 45 2030 1.0 0.0 -es 02_wind_on 1 45 2030 1.0 0.0 -es 03_wind_off 1 45 2030 1.0 0.0 -es 04_res 1 45 2030 0.0 0.0 -es 05_nuclear 1 45 2030 0.0 0.0 -es 06_coal 1 45 2030 0.0 0.0 -es 07_gas 1 45 2030 0.0 0.0 -es 08_non-res 1 45 2030 0.0 0.0 -es 09_hydro_pump 1 45 2030 0.0 0.0 -es 01_solar 1 46 2030 1.0 0.0 -es 02_wind_on 1 46 2030 1.0 0.0 -es 03_wind_off 1 46 2030 1.0 0.0 -es 04_res 1 46 2030 0.0 0.0 -es 05_nuclear 1 46 2030 0.0 0.0 -es 06_coal 1 46 2030 0.0 0.0 -es 07_gas 1 46 2030 0.0 0.0 -es 08_non-res 1 46 2030 0.0 0.0 -es 09_hydro_pump 1 46 2030 0.0 0.0 -es 01_solar 1 47 2030 1.0 0.0 -es 02_wind_on 1 47 2030 1.0 0.0 -es 03_wind_off 1 47 2030 1.0 0.0 -es 04_res 1 47 2030 0.0 0.0 -es 05_nuclear 1 47 2030 0.0 0.0 -es 06_coal 1 47 2030 0.0 0.0 -es 07_gas 1 47 2030 0.0 0.0 -es 08_non-res 1 47 2030 0.0 0.0 -es 09_hydro_pump 1 47 2030 0.0 0.0 -es 01_solar 1 48 2030 1.0 0.0 -es 02_wind_on 1 48 2030 1.0 0.0 -es 03_wind_off 1 48 2030 1.0 0.0 -es 04_res 1 48 2030 0.0 0.0 -es 05_nuclear 1 48 2030 0.0 0.0 -es 06_coal 1 48 2030 0.0 0.0 -es 07_gas 1 48 2030 0.0 0.0 -es 08_non-res 1 48 2030 0.0 0.0 -es 09_hydro_pump 1 48 2030 0.0 0.0 -es 01_solar 1 49 2030 1.0 0.0 -es 02_wind_on 1 49 2030 1.0 0.0 -es 03_wind_off 1 49 2030 1.0 0.0 -es 04_res 1 49 2030 0.0 0.0 -es 05_nuclear 1 49 2030 0.0 0.0 -es 06_coal 1 49 2030 0.0 0.0 -es 07_gas 1 49 2030 0.0 0.0 -es 08_non-res 1 49 2030 0.0 0.0 -es 09_hydro_pump 1 49 2030 0.0 0.0 -es 01_solar 1 50 2030 1.0 0.0 -es 02_wind_on 1 50 2030 1.0 0.0 -es 03_wind_off 1 50 2030 1.0 0.0 -es 04_res 1 50 2030 0.0 0.0 -es 05_nuclear 1 50 2030 0.0 0.0 -es 06_coal 1 50 2030 0.0 0.0 -es 07_gas 1 50 2030 0.0 0.0 -es 08_non-res 1 50 2030 0.0 0.0 -es 09_hydro_pump 1 50 2030 0.0 0.0 -es 01_solar 1 51 2030 1.0 0.0 -es 02_wind_on 1 51 2030 1.0 0.0 -es 03_wind_off 1 51 2030 1.0 0.0 -es 04_res 1 51 2030 0.0 0.0 -es 05_nuclear 1 51 2030 0.0 0.0 -es 06_coal 1 51 2030 0.0 0.0 -es 07_gas 1 51 2030 0.0 0.0 -es 08_non-res 1 51 2030 0.0 0.0 -es 09_hydro_pump 1 51 2030 0.0 0.0 -es 01_solar 1 52 2030 1.0 0.0 -es 02_wind_on 1 52 2030 1.0 0.0 -es 03_wind_off 1 52 2030 1.0 0.0 -es 04_res 1 52 2030 0.0 0.0 -es 05_nuclear 1 52 2030 0.0 0.0 -es 06_coal 1 52 2030 0.0 0.0 -es 07_gas 1 52 2030 0.0 0.0 -es 08_non-res 1 52 2030 0.0 0.0 -es 09_hydro_pump 1 52 2030 0.0 0.0 -es 01_solar 1 53 2030 1.0 0.0 -es 02_wind_on 1 53 2030 1.0 0.0 -es 03_wind_off 1 53 2030 1.0 0.0 -es 04_res 1 53 2030 0.0 0.0 -es 05_nuclear 1 53 2030 0.0 0.0 -es 06_coal 1 53 2030 0.0 0.0 -es 07_gas 1 53 2030 0.0 0.0 -es 08_non-res 1 53 2030 0.0 0.0 -es 09_hydro_pump 1 53 2030 0.0 0.0 -es 01_solar 1 54 2030 1.0 0.0 -es 02_wind_on 1 54 2030 1.0 0.0 -es 03_wind_off 1 54 2030 1.0 0.0 -es 04_res 1 54 2030 0.0 0.0 -es 05_nuclear 1 54 2030 0.0 0.0 -es 06_coal 1 54 2030 0.0 0.0 -es 07_gas 1 54 2030 0.0 0.0 -es 08_non-res 1 54 2030 0.0 0.0 -es 09_hydro_pump 1 54 2030 0.0 0.0 -es 01_solar 1 55 2030 1.0 0.0 -es 02_wind_on 1 55 2030 1.0 0.0 -es 03_wind_off 1 55 2030 1.0 0.0 -es 04_res 1 55 2030 0.0 0.0 -es 05_nuclear 1 55 2030 0.0 0.0 -es 06_coal 1 55 2030 0.0 0.0 -es 07_gas 1 55 2030 0.0 0.0 -es 08_non-res 1 55 2030 0.0 0.0 -es 09_hydro_pump 1 55 2030 0.0 0.0 -es 01_solar 1 56 2030 1.0 0.0 -es 02_wind_on 1 56 2030 1.0 0.0 -es 03_wind_off 1 56 2030 1.0 0.0 -es 04_res 1 56 2030 0.0 0.0 -es 05_nuclear 1 56 2030 0.0 0.0 -es 06_coal 1 56 2030 0.0 0.0 -es 07_gas 1 56 2030 0.0 0.0 -es 08_non-res 1 56 2030 0.0 0.0 -es 09_hydro_pump 1 56 2030 0.0 0.0 -es 01_solar 1 57 2030 1.0 0.0 -es 02_wind_on 1 57 2030 1.0 0.0 -es 03_wind_off 1 57 2030 1.0 0.0 -es 04_res 1 57 2030 0.0 0.0 -es 05_nuclear 1 57 2030 0.0 0.0 -es 06_coal 1 57 2030 0.0 0.0 -es 07_gas 1 57 2030 0.0 0.0 -es 08_non-res 1 57 2030 0.0 0.0 -es 09_hydro_pump 1 57 2030 0.0 0.0 -es 01_solar 1 58 2030 1.0 0.0 -es 02_wind_on 1 58 2030 1.0 0.0 -es 03_wind_off 1 58 2030 1.0 0.0 -es 04_res 1 58 2030 0.0 0.0 -es 05_nuclear 1 58 2030 0.0 0.0 -es 06_coal 1 58 2030 0.0 0.0 -es 07_gas 1 58 2030 0.0 0.0 -es 08_non-res 1 58 2030 0.0 0.0 -es 09_hydro_pump 1 58 2030 0.0 0.0 -es 01_solar 1 59 2030 1.0 0.0 -es 02_wind_on 1 59 2030 1.0 0.0 -es 03_wind_off 1 59 2030 1.0 0.0 -es 04_res 1 59 2030 0.0 0.0 -es 05_nuclear 1 59 2030 0.0 0.0 -es 06_coal 1 59 2030 0.0 0.0 -es 07_gas 1 59 2030 0.0 0.0 -es 08_non-res 1 59 2030 0.0 0.0 -es 09_hydro_pump 1 59 2030 0.0 0.0 -es 01_solar 1 60 2030 1.0 0.0 -es 02_wind_on 1 60 2030 1.0 0.0 -es 03_wind_off 1 60 2030 1.0 0.0 -es 04_res 1 60 2030 0.0 0.0 -es 05_nuclear 1 60 2030 0.0 0.0 -es 06_coal 1 60 2030 0.0 0.0 -es 07_gas 1 60 2030 0.0 0.0 -es 08_non-res 1 60 2030 0.0 0.0 -es 09_hydro_pump 1 60 2030 0.0 0.0 -es 01_solar 1 61 2030 1.0 0.0 -es 02_wind_on 1 61 2030 1.0 0.0 -es 03_wind_off 1 61 2030 1.0 0.0 -es 04_res 1 61 2030 0.0 0.0 -es 05_nuclear 1 61 2030 0.0 0.0 -es 06_coal 1 61 2030 0.0 0.0 -es 07_gas 1 61 2030 0.0 0.0 -es 08_non-res 1 61 2030 0.0 0.0 -es 09_hydro_pump 1 61 2030 0.0 0.0 -es 01_solar 1 62 2030 1.0 0.0 -es 02_wind_on 1 62 2030 1.0 0.0 -es 03_wind_off 1 62 2030 1.0 0.0 -es 04_res 1 62 2030 1.0 0.0 -es 05_nuclear 1 62 2030 0.0 0.0 -es 06_coal 1 62 2030 0.0 0.0 -es 07_gas 1 62 2030 0.0 0.0 -es 08_non-res 1 62 2030 0.0 0.0 -es 09_hydro_pump 1 62 2030 0.0 0.0 -es 01_solar 1 63 2030 1.0 0.0 -es 02_wind_on 1 63 2030 1.0 0.0 -es 03_wind_off 1 63 2030 1.0 0.0 -es 04_res 1 63 2030 1.0 0.0 -es 05_nuclear 1 63 2030 0.0 0.0 -es 06_coal 1 63 2030 0.0 0.0 -es 07_gas 1 63 2030 0.0 0.0 -es 08_non-res 1 63 2030 0.0 0.0 -es 09_hydro_pump 1 63 2030 0.0 0.0 -es 01_solar 1 64 2030 1.0 0.0 -es 02_wind_on 1 64 2030 1.0 0.0 -es 03_wind_off 1 64 2030 1.0 0.0 -es 04_res 1 64 2030 1.0 0.0 -es 05_nuclear 1 64 2030 0.0 0.0 -es 06_coal 1 64 2030 0.0 0.0 -es 07_gas 1 64 2030 0.0 0.0 -es 08_non-res 1 64 2030 0.0 0.0 -es 09_hydro_pump 1 64 2030 0.0 0.0 -es 01_solar 1 65 2030 1.0 0.0 -es 02_wind_on 1 65 2030 1.0 0.0 -es 03_wind_off 1 65 2030 1.0 0.0 -es 04_res 1 65 2030 1.0 0.0 -es 05_nuclear 1 65 2030 0.0 0.0 -es 06_coal 1 65 2030 0.0 0.0 -es 07_gas 1 65 2030 0.0 0.0 -es 08_non-res 1 65 2030 0.0 0.0 -es 09_hydro_pump 1 65 2030 0.0 0.0 -es 01_solar 1 66 2030 1.0 0.0 -es 02_wind_on 1 66 2030 1.0 0.0 -es 03_wind_off 1 66 2030 1.0 0.0 -es 04_res 1 66 2030 1.0 0.0 -es 05_nuclear 1 66 2030 0.0 0.0 -es 06_coal 1 66 2030 0.0 0.0 -es 07_gas 1 66 2030 0.0 0.0 -es 08_non-res 1 66 2030 0.0 0.0 -es 09_hydro_pump 1 66 2030 0.0 0.0 -es 01_solar 1 67 2030 1.0 0.0 -es 02_wind_on 1 67 2030 1.0 0.0 -es 03_wind_off 1 67 2030 1.0 0.0 -es 04_res 1 67 2030 1.0 0.0 -es 05_nuclear 1 67 2030 0.0 0.0 -es 06_coal 1 67 2030 0.0 0.0 -es 07_gas 1 67 2030 0.0 0.0 -es 08_non-res 1 67 2030 0.0 0.0 -es 09_hydro_pump 1 67 2030 0.0 0.0 -es 01_solar 1 68 2030 1.0 0.0 -es 02_wind_on 1 68 2030 1.0 0.0 -es 03_wind_off 1 68 2030 1.0 0.0 -es 04_res 1 68 2030 1.0 0.0 -es 05_nuclear 1 68 2030 0.0 0.0 -es 06_coal 1 68 2030 0.0 0.0 -es 07_gas 1 68 2030 0.0 0.0 -es 08_non-res 1 68 2030 0.0 0.0 -es 09_hydro_pump 1 68 2030 0.0 0.0 -es 01_solar 1 69 2030 1.0 0.0 -es 02_wind_on 1 69 2030 1.0 0.0 -es 03_wind_off 1 69 2030 1.0 0.0 -es 04_res 1 69 2030 1.0 0.0 -es 05_nuclear 1 69 2030 0.0 0.0 -es 06_coal 1 69 2030 0.0 0.0 -es 07_gas 1 69 2030 0.0 0.0 -es 08_non-res 1 69 2030 0.0 0.0 -es 09_hydro_pump 1 69 2030 0.0 0.0 -es 01_solar 1 70 2030 1.0 0.0 -es 02_wind_on 1 70 2030 1.0 0.0 -es 03_wind_off 1 70 2030 1.0 0.0 -es 04_res 1 70 2030 1.0 0.0 -es 05_nuclear 1 70 2030 0.0 0.0 -es 06_coal 1 70 2030 0.0 0.0 -es 07_gas 1 70 2030 0.0 0.0 -es 08_non-res 1 70 2030 0.0 0.0 -es 09_hydro_pump 1 70 2030 0.0 0.0 -es 01_solar 1 71 2030 1.0 0.0 -es 02_wind_on 1 71 2030 1.0 0.0 -es 03_wind_off 1 71 2030 1.0 0.0 -es 04_res 1 71 2030 1.0 0.0 -es 05_nuclear 1 71 2030 0.0 0.0 -es 06_coal 1 71 2030 0.0 0.0 -es 07_gas 1 71 2030 0.0 0.0 -es 08_non-res 1 71 2030 0.0 0.0 -es 09_hydro_pump 1 71 2030 0.0 0.0 -es 01_solar 1 72 2030 1.0 0.0 -es 02_wind_on 1 72 2030 1.0 0.0 -es 03_wind_off 1 72 2030 1.0 0.0 -es 04_res 1 72 2030 1.0 0.0 -es 05_nuclear 1 72 2030 0.0 0.0 -es 06_coal 1 72 2030 0.0 0.0 -es 07_gas 1 72 2030 0.0 0.0 -es 08_non-res 1 72 2030 0.0 0.0 -es 09_hydro_pump 1 72 2030 0.0 0.0 -es 01_solar 1 73 2030 1.0 0.0 -es 02_wind_on 1 73 2030 1.0 0.0 -es 03_wind_off 1 73 2030 1.0 0.0 -es 04_res 1 73 2030 1.0 0.0 -es 05_nuclear 1 73 2030 0.0 0.0 -es 06_coal 1 73 2030 0.0 0.0 -es 07_gas 1 73 2030 0.0 0.0 -es 08_non-res 1 73 2030 0.0 0.0 -es 09_hydro_pump 1 73 2030 0.0 0.0 -es 01_solar 1 74 2030 1.0 0.0 -es 02_wind_on 1 74 2030 1.0 0.0 -es 03_wind_off 1 74 2030 1.0 0.0 -es 04_res 1 74 2030 1.0 0.0 -es 05_nuclear 1 74 2030 0.0 0.0 -es 06_coal 1 74 2030 0.0 0.0 -es 07_gas 1 74 2030 0.0 0.0 -es 08_non-res 1 74 2030 0.0 0.0 -es 09_hydro_pump 1 74 2030 0.0 0.0 -es 01_solar 1 75 2030 1.0 0.0 -es 02_wind_on 1 75 2030 1.0 0.0 -es 03_wind_off 1 75 2030 1.0 0.0 -es 04_res 1 75 2030 1.0 0.0 -es 05_nuclear 1 75 2030 0.0 0.0 -es 06_coal 1 75 2030 0.0 0.0 -es 07_gas 1 75 2030 0.0 0.0 -es 08_non-res 1 75 2030 0.0 0.0 -es 09_hydro_pump 1 75 2030 0.0 0.0 -es 01_solar 1 76 2030 1.0 0.0 -es 02_wind_on 1 76 2030 1.0 0.0 -es 03_wind_off 1 76 2030 1.0 0.0 -es 04_res 1 76 2030 1.0 0.0 -es 05_nuclear 1 76 2030 0.0 0.0 -es 06_coal 1 76 2030 0.0 0.0 -es 07_gas 1 76 2030 0.0 0.0 -es 08_non-res 1 76 2030 0.0 0.0 -es 09_hydro_pump 1 76 2030 0.0 0.0 -es 01_solar 1 77 2030 1.0 0.0 -es 02_wind_on 1 77 2030 1.0 0.0 -es 03_wind_off 1 77 2030 1.0 0.0 -es 04_res 1 77 2030 1.0 0.0 -es 05_nuclear 1 77 2030 0.0 0.0 -es 06_coal 1 77 2030 0.0 0.0 -es 07_gas 1 77 2030 0.0 0.0 -es 08_non-res 1 77 2030 0.0 0.0 -es 09_hydro_pump 1 77 2030 0.0 0.0 -es 01_solar 1 78 2030 1.0 0.0 -es 02_wind_on 1 78 2030 1.0 0.0 -es 03_wind_off 1 78 2030 1.0 0.0 -es 04_res 1 78 2030 1.0 0.0 -es 05_nuclear 1 78 2030 0.0 0.0 -es 06_coal 1 78 2030 0.0 0.0 -es 07_gas 1 78 2030 0.0 0.0 -es 08_non-res 1 78 2030 0.0 0.0 -es 09_hydro_pump 1 78 2030 0.0 0.0 -es 01_solar 1 79 2030 1.0 0.0 -es 02_wind_on 1 79 2030 1.0 0.0 -es 03_wind_off 1 79 2030 1.0 0.0 -es 04_res 1 79 2030 1.0 0.0 -es 05_nuclear 1 79 2030 0.0 0.0 -es 06_coal 1 79 2030 0.0 0.0 -es 07_gas 1 79 2030 0.0 0.0 -es 08_non-res 1 79 2030 0.0 0.0 -es 09_hydro_pump 1 79 2030 0.0 0.0 -es 01_solar 1 80 2030 1.0 0.0 -es 02_wind_on 1 80 2030 1.0 0.0 -es 03_wind_off 1 80 2030 1.0 0.0 -es 04_res 1 80 2030 1.0 0.0 -es 05_nuclear 1 80 2030 0.0 0.0 -es 06_coal 1 80 2030 0.0 0.0 -es 07_gas 1 80 2030 0.0 0.0 -es 08_non-res 1 80 2030 0.0 0.0 -es 09_hydro_pump 1 80 2030 0.0 0.0 -es 01_solar 1 81 2030 1.0 0.0 -es 02_wind_on 1 81 2030 1.0 0.0 -es 03_wind_off 1 81 2030 1.0 0.0 -es 04_res 1 81 2030 1.0 0.0 -es 05_nuclear 1 81 2030 0.0 0.0 -es 06_coal 1 81 2030 0.0 0.0 -es 07_gas 1 81 2030 0.0 0.0 -es 08_non-res 1 81 2030 0.0 0.0 -es 09_hydro_pump 1 81 2030 0.0 0.0 -es 01_solar 1 82 2030 1.0 0.0 -es 02_wind_on 1 82 2030 1.0 0.0 -es 03_wind_off 1 82 2030 1.0 0.0 -es 04_res 1 82 2030 1.0 0.0 -es 05_nuclear 1 82 2030 1.0 0.0 -es 06_coal 1 82 2030 0.0 0.0 -es 07_gas 1 82 2030 0.0 0.0 -es 08_non-res 1 82 2030 0.0 0.0 -es 09_hydro_pump 1 82 2030 0.0 0.0 -es 01_solar 1 83 2030 1.0 0.0 -es 02_wind_on 1 83 2030 1.0 0.0 -es 03_wind_off 1 83 2030 1.0 0.0 -es 04_res 1 83 2030 1.0 0.0 -es 05_nuclear 1 83 2030 1.0 0.0 -es 06_coal 1 83 2030 0.0 0.0 -es 07_gas 1 83 2030 0.0 0.0 -es 08_non-res 1 83 2030 0.0 0.0 -es 09_hydro_pump 1 83 2030 0.0 0.0 -es 01_solar 1 84 2030 1.0 0.0 -es 02_wind_on 1 84 2030 1.0 0.0 -es 03_wind_off 1 84 2030 1.0 0.0 -es 04_res 1 84 2030 1.0 0.0 -es 05_nuclear 1 84 2030 1.0 0.0 -es 06_coal 1 84 2030 0.0 0.0 -es 07_gas 1 84 2030 0.0 0.0 -es 08_non-res 1 84 2030 0.0 0.0 -es 09_hydro_pump 1 84 2030 0.0 0.0 -es 01_solar 1 85 2030 1.0 0.0 -es 02_wind_on 1 85 2030 1.0 0.0 -es 03_wind_off 1 85 2030 1.0 0.0 -es 04_res 1 85 2030 1.0 0.0 -es 05_nuclear 1 85 2030 1.0 0.0 -es 06_coal 1 85 2030 0.0 0.0 -es 07_gas 1 85 2030 0.0 0.0 -es 08_non-res 1 85 2030 0.0 0.0 -es 09_hydro_pump 1 85 2030 0.0 0.0 -es 01_solar 1 86 2030 1.0 0.0 -es 02_wind_on 1 86 2030 1.0 0.0 -es 03_wind_off 1 86 2030 1.0 0.0 -es 04_res 1 86 2030 1.0 0.0 -es 05_nuclear 1 86 2030 1.0 0.0 -es 06_coal 1 86 2030 0.0 0.0 -es 07_gas 1 86 2030 0.0 0.0 -es 08_non-res 1 86 2030 0.0 0.0 -es 09_hydro_pump 1 86 2030 0.0 0.0 -es 01_solar 1 87 2030 1.0 0.0 -es 02_wind_on 1 87 2030 1.0 0.0 -es 03_wind_off 1 87 2030 1.0 0.0 -es 04_res 1 87 2030 1.0 0.0 -es 05_nuclear 1 87 2030 1.0 0.0 -es 06_coal 1 87 2030 0.0 0.0 -es 07_gas 1 87 2030 0.0 0.0 -es 08_non-res 1 87 2030 0.0 0.0 -es 09_hydro_pump 1 87 2030 0.0 0.0 -es 01_solar 1 88 2030 1.0 0.0 -es 02_wind_on 1 88 2030 1.0 0.0 -es 03_wind_off 1 88 2030 1.0 0.0 -es 04_res 1 88 2030 1.0 0.0 -es 05_nuclear 1 88 2030 1.0 0.0 -es 06_coal 1 88 2030 0.0 0.0 -es 07_gas 1 88 2030 0.0 0.0 -es 08_non-res 1 88 2030 0.0 0.0 -es 09_hydro_pump 1 88 2030 0.0 0.0 -es 01_solar 1 89 2030 1.0 0.0 -es 02_wind_on 1 89 2030 1.0 0.0 -es 03_wind_off 1 89 2030 1.0 0.0 -es 04_res 1 89 2030 1.0 0.0 -es 05_nuclear 1 89 2030 1.0 0.0 -es 06_coal 1 89 2030 0.0 0.0 -es 07_gas 1 89 2030 0.0 0.0 -es 08_non-res 1 89 2030 0.0 0.0 -es 09_hydro_pump 1 89 2030 0.0 0.0 -es 01_solar 1 90 2030 1.0 0.0 -es 02_wind_on 1 90 2030 1.0 0.0 -es 03_wind_off 1 90 2030 1.0 0.0 -es 04_res 1 90 2030 1.0 0.0 -es 05_nuclear 1 90 2030 1.0 0.0 -es 06_coal 1 90 2030 0.0 0.0 -es 07_gas 1 90 2030 0.0 0.0 -es 08_non-res 1 90 2030 0.0 0.0 -es 09_hydro_pump 1 90 2030 0.0 0.0 -es 01_solar 1 91 2030 1.0 0.0 -es 02_wind_on 1 91 2030 1.0 0.0 -es 03_wind_off 1 91 2030 1.0 0.0 -es 04_res 1 91 2030 1.0 0.0 -es 05_nuclear 1 91 2030 1.0 0.0 -es 06_coal 1 91 2030 0.0 0.0 -es 07_gas 1 91 2030 0.0 0.0 -es 08_non-res 1 91 2030 0.0 0.0 -es 09_hydro_pump 1 91 2030 0.0 0.0 -es 01_solar 1 92 2030 1.0 0.0 -es 02_wind_on 1 92 2030 1.0 0.0 -es 03_wind_off 1 92 2030 1.0 0.0 -es 04_res 1 92 2030 1.0 0.0 -es 05_nuclear 1 92 2030 1.0 0.0 -es 06_coal 1 92 2030 0.0 0.0 -es 07_gas 1 92 2030 0.0 0.0 -es 08_non-res 1 92 2030 0.0 0.0 -es 09_hydro_pump 1 92 2030 0.0 0.0 -es 01_solar 1 93 2030 1.0 0.0 -es 02_wind_on 1 93 2030 1.0 0.0 -es 03_wind_off 1 93 2030 1.0 0.0 -es 04_res 1 93 2030 1.0 0.0 -es 05_nuclear 1 93 2030 1.0 0.0 -es 06_coal 1 93 2030 0.0 0.0 -es 07_gas 1 93 2030 0.0 0.0 -es 08_non-res 1 93 2030 0.0 0.0 -es 09_hydro_pump 1 93 2030 0.0 0.0 -es 01_solar 1 94 2030 1.0 0.0 -es 02_wind_on 1 94 2030 1.0 0.0 -es 03_wind_off 1 94 2030 1.0 0.0 -es 04_res 1 94 2030 1.0 0.0 -es 05_nuclear 1 94 2030 1.0 0.0 -es 06_coal 1 94 2030 0.0 0.0 -es 07_gas 1 94 2030 0.0 0.0 -es 08_non-res 1 94 2030 0.0 0.0 -es 09_hydro_pump 1 94 2030 0.0 0.0 -es 01_solar 1 95 2030 1.0 0.0 -es 02_wind_on 1 95 2030 1.0 0.0 -es 03_wind_off 1 95 2030 1.0 0.0 -es 04_res 1 95 2030 1.0 0.0 -es 05_nuclear 1 95 2030 1.0 0.0 -es 06_coal 1 95 2030 0.0 0.0 -es 07_gas 1 95 2030 0.0 0.0 -es 08_non-res 1 95 2030 0.0 0.0 -es 09_hydro_pump 1 95 2030 0.0 0.0 -es 01_solar 1 96 2030 1.0 0.0 -es 02_wind_on 1 96 2030 1.0 0.0 -es 03_wind_off 1 96 2030 1.0 0.0 -es 04_res 1 96 2030 1.0 0.0 -es 05_nuclear 1 96 2030 1.0 0.0 -es 06_coal 1 96 2030 0.0 0.0 -es 07_gas 1 96 2030 0.0 0.0 -es 08_non-res 1 96 2030 0.0 0.0 -es 09_hydro_pump 1 96 2030 0.0 0.0 -es 01_solar 1 97 2030 1.0 0.0 -es 02_wind_on 1 97 2030 1.0 0.0 -es 03_wind_off 1 97 2030 1.0 0.0 -es 04_res 1 97 2030 1.0 0.0 -es 05_nuclear 1 97 2030 1.0 0.0 -es 06_coal 1 97 2030 0.0 0.0 -es 07_gas 1 97 2030 0.0 0.0 -es 08_non-res 1 97 2030 0.0 0.0 -es 09_hydro_pump 1 97 2030 0.0 0.0 -es 01_solar 1 98 2030 1.0 0.0 -es 02_wind_on 1 98 2030 1.0 0.0 -es 03_wind_off 1 98 2030 1.0 0.0 -es 04_res 1 98 2030 1.0 0.0 -es 05_nuclear 1 98 2030 1.0 0.0 -es 06_coal 1 98 2030 0.0 0.0 -es 07_gas 1 98 2030 0.0 0.0 -es 08_non-res 1 98 2030 0.0 0.0 -es 09_hydro_pump 1 98 2030 0.0 0.0 -es 01_solar 1 99 2030 1.0 0.0 -es 02_wind_on 1 99 2030 1.0 0.0 -es 03_wind_off 1 99 2030 1.0 0.0 -es 04_res 1 99 2030 1.0 0.0 -es 05_nuclear 1 99 2030 1.0 0.0 -es 06_coal 1 99 2030 0.0 0.0 -es 07_gas 1 99 2030 0.0 0.0 -es 08_non-res 1 99 2030 0.0 0.0 -es 09_hydro_pump 1 99 2030 0.0 0.0 -es 01_solar 1 100 2030 1.0 0.0 -es 02_wind_on 1 100 2030 1.0 0.0 -es 03_wind_off 1 100 2030 1.0 0.0 -es 04_res 1 100 2030 1.0 0.0 -es 05_nuclear 1 100 2030 1.0 0.0 -es 06_coal 1 100 2030 0.0 0.0 -es 07_gas 1 100 2030 0.0 0.0 -es 08_non-res 1 100 2030 0.0 0.0 -es 09_hydro_pump 1 100 2030 0.0 0.0 -es 01_solar 1 101 2030 1.0 0.0 -es 02_wind_on 1 101 2030 1.0 0.0 -es 03_wind_off 1 101 2030 1.0 0.0 -es 04_res 1 101 2030 1.0 0.0 -es 05_nuclear 1 101 2030 1.0 0.0 -es 06_coal 1 101 2030 0.0 0.0 -es 07_gas 1 101 2030 0.0 0.0 -es 08_non-res 1 101 2030 0.0 0.0 -es 09_hydro_pump 1 101 2030 0.0 0.0 -es 01_solar 1 102 2030 1.0 0.0 -es 02_wind_on 1 102 2030 1.0 0.0 -es 03_wind_off 1 102 2030 1.0 0.0 -es 04_res 1 102 2030 1.0 0.0 -es 05_nuclear 1 102 2030 1.0 0.0 -es 06_coal 1 102 2030 1.0 0.0 -es 07_gas 1 102 2030 0.0 0.0 -es 08_non-res 1 102 2030 0.0 0.0 -es 09_hydro_pump 1 102 2030 0.0 0.0 -es 01_solar 1 103 2030 1.0 0.0 -es 02_wind_on 1 103 2030 1.0 0.0 -es 03_wind_off 1 103 2030 1.0 0.0 -es 04_res 1 103 2030 1.0 0.0 -es 05_nuclear 1 103 2030 1.0 0.0 -es 06_coal 1 103 2030 1.0 0.0 -es 07_gas 1 103 2030 0.0 0.0 -es 08_non-res 1 103 2030 0.0 0.0 -es 09_hydro_pump 1 103 2030 0.0 0.0 -es 01_solar 1 104 2030 1.0 0.0 -es 02_wind_on 1 104 2030 1.0 0.0 -es 03_wind_off 1 104 2030 1.0 0.0 -es 04_res 1 104 2030 1.0 0.0 -es 05_nuclear 1 104 2030 1.0 0.0 -es 06_coal 1 104 2030 1.0 0.0 -es 07_gas 1 104 2030 0.0 0.0 -es 08_non-res 1 104 2030 0.0 0.0 -es 09_hydro_pump 1 104 2030 0.0 0.0 -es 01_solar 1 105 2030 1.0 0.0 -es 02_wind_on 1 105 2030 1.0 0.0 -es 03_wind_off 1 105 2030 1.0 0.0 -es 04_res 1 105 2030 1.0 0.0 -es 05_nuclear 1 105 2030 1.0 0.0 -es 06_coal 1 105 2030 1.0 0.0 -es 07_gas 1 105 2030 0.0 0.0 -es 08_non-res 1 105 2030 0.0 0.0 -es 09_hydro_pump 1 105 2030 0.0 0.0 -es 01_solar 1 106 2030 1.0 0.0 -es 02_wind_on 1 106 2030 1.0 0.0 -es 03_wind_off 1 106 2030 1.0 0.0 -es 04_res 1 106 2030 1.0 0.0 -es 05_nuclear 1 106 2030 1.0 0.0 -es 06_coal 1 106 2030 1.0 0.0 -es 07_gas 1 106 2030 0.0 0.0 -es 08_non-res 1 106 2030 0.0 0.0 -es 09_hydro_pump 1 106 2030 0.0 0.0 -es 01_solar 1 107 2030 1.0 0.0 -es 02_wind_on 1 107 2030 1.0 0.0 -es 03_wind_off 1 107 2030 1.0 0.0 -es 04_res 1 107 2030 1.0 0.0 -es 05_nuclear 1 107 2030 1.0 0.0 -es 06_coal 1 107 2030 1.0 0.0 -es 07_gas 1 107 2030 0.0 0.0 -es 08_non-res 1 107 2030 0.0 0.0 -es 09_hydro_pump 1 107 2030 0.0 0.0 -es 01_solar 1 108 2030 1.0 0.0 -es 02_wind_on 1 108 2030 1.0 0.0 -es 03_wind_off 1 108 2030 1.0 0.0 -es 04_res 1 108 2030 1.0 0.0 -es 05_nuclear 1 108 2030 1.0 0.0 -es 06_coal 1 108 2030 1.0 0.0 -es 07_gas 1 108 2030 0.0 0.0 -es 08_non-res 1 108 2030 0.0 0.0 -es 09_hydro_pump 1 108 2030 0.0 0.0 -es 01_solar 1 109 2030 1.0 0.0 -es 02_wind_on 1 109 2030 1.0 0.0 -es 03_wind_off 1 109 2030 1.0 0.0 -es 04_res 1 109 2030 1.0 0.0 -es 05_nuclear 1 109 2030 1.0 0.0 -es 06_coal 1 109 2030 1.0 0.0 -es 07_gas 1 109 2030 0.0 0.0 -es 08_non-res 1 109 2030 0.0 0.0 -es 09_hydro_pump 1 109 2030 0.0 0.0 -es 01_solar 1 110 2030 1.0 0.0 -es 02_wind_on 1 110 2030 1.0 0.0 -es 03_wind_off 1 110 2030 1.0 0.0 -es 04_res 1 110 2030 1.0 0.0 -es 05_nuclear 1 110 2030 1.0 0.0 -es 06_coal 1 110 2030 1.0 0.0 -es 07_gas 1 110 2030 0.0 0.0 -es 08_non-res 1 110 2030 0.0 0.0 -es 09_hydro_pump 1 110 2030 0.0 0.0 -es 01_solar 1 111 2030 1.0 0.0 -es 02_wind_on 1 111 2030 1.0 0.0 -es 03_wind_off 1 111 2030 1.0 0.0 -es 04_res 1 111 2030 1.0 0.0 -es 05_nuclear 1 111 2030 1.0 0.0 -es 06_coal 1 111 2030 1.0 0.0 -es 07_gas 1 111 2030 0.0 0.0 -es 08_non-res 1 111 2030 0.0 0.0 -es 09_hydro_pump 1 111 2030 0.0 0.0 -es 01_solar 1 112 2030 1.0 0.0 -es 02_wind_on 1 112 2030 1.0 0.0 -es 03_wind_off 1 112 2030 1.0 0.0 -es 04_res 1 112 2030 1.0 0.0 -es 05_nuclear 1 112 2030 1.0 0.0 -es 06_coal 1 112 2030 1.0 0.0 -es 07_gas 1 112 2030 0.0 0.0 -es 08_non-res 1 112 2030 0.0 0.0 -es 09_hydro_pump 1 112 2030 0.0 0.0 -es 01_solar 1 113 2030 1.0 0.0 -es 02_wind_on 1 113 2030 1.0 0.0 -es 03_wind_off 1 113 2030 1.0 0.0 -es 04_res 1 113 2030 1.0 0.0 -es 05_nuclear 1 113 2030 1.0 0.0 -es 06_coal 1 113 2030 1.0 0.0 -es 07_gas 1 113 2030 0.0 0.0 -es 08_non-res 1 113 2030 0.0 0.0 -es 09_hydro_pump 1 113 2030 0.0 0.0 -es 01_solar 1 114 2030 1.0 0.0 -es 02_wind_on 1 114 2030 1.0 0.0 -es 03_wind_off 1 114 2030 1.0 0.0 -es 04_res 1 114 2030 1.0 0.0 -es 05_nuclear 1 114 2030 1.0 0.0 -es 06_coal 1 114 2030 1.0 0.0 -es 07_gas 1 114 2030 0.0 0.0 -es 08_non-res 1 114 2030 0.0 0.0 -es 09_hydro_pump 1 114 2030 0.0 0.0 -es 01_solar 1 115 2030 1.0 0.0 -es 02_wind_on 1 115 2030 1.0 0.0 -es 03_wind_off 1 115 2030 1.0 0.0 -es 04_res 1 115 2030 1.0 0.0 -es 05_nuclear 1 115 2030 1.0 0.0 -es 06_coal 1 115 2030 1.0 0.0 -es 07_gas 1 115 2030 0.0 0.0 -es 08_non-res 1 115 2030 0.0 0.0 -es 09_hydro_pump 1 115 2030 0.0 0.0 -es 01_solar 1 116 2030 1.0 0.0 -es 02_wind_on 1 116 2030 1.0 0.0 -es 03_wind_off 1 116 2030 1.0 0.0 -es 04_res 1 116 2030 1.0 0.0 -es 05_nuclear 1 116 2030 1.0 0.0 -es 06_coal 1 116 2030 1.0 0.0 -es 07_gas 1 116 2030 0.0 0.0 -es 08_non-res 1 116 2030 0.0 0.0 -es 09_hydro_pump 1 116 2030 0.0 0.0 -es 01_solar 1 117 2030 1.0 0.0 -es 02_wind_on 1 117 2030 1.0 0.0 -es 03_wind_off 1 117 2030 1.0 0.0 -es 04_res 1 117 2030 1.0 0.0 -es 05_nuclear 1 117 2030 1.0 0.0 -es 06_coal 1 117 2030 1.0 0.0 -es 07_gas 1 117 2030 0.0 0.0 -es 08_non-res 1 117 2030 0.0 0.0 -es 09_hydro_pump 1 117 2030 0.0 0.0 -es 01_solar 1 118 2030 1.0 0.0 -es 02_wind_on 1 118 2030 1.0 0.0 -es 03_wind_off 1 118 2030 1.0 0.0 -es 04_res 1 118 2030 1.0 0.0 -es 05_nuclear 1 118 2030 1.0 0.0 -es 06_coal 1 118 2030 1.0 0.0 -es 07_gas 1 118 2030 0.0 0.0 -es 08_non-res 1 118 2030 0.0 0.0 -es 09_hydro_pump 1 118 2030 0.0 0.0 -es 01_solar 1 119 2030 1.0 0.0 -es 02_wind_on 1 119 2030 1.0 0.0 -es 03_wind_off 1 119 2030 1.0 0.0 -es 04_res 1 119 2030 1.0 0.0 -es 05_nuclear 1 119 2030 1.0 0.0 -es 06_coal 1 119 2030 1.0 0.0 -es 07_gas 1 119 2030 0.0 0.0 -es 08_non-res 1 119 2030 0.0 0.0 -es 09_hydro_pump 1 119 2030 0.0 0.0 -es 01_solar 1 120 2030 1.0 0.0 -es 02_wind_on 1 120 2030 1.0 0.0 -es 03_wind_off 1 120 2030 1.0 0.0 -es 04_res 1 120 2030 1.0 0.0 -es 05_nuclear 1 120 2030 1.0 0.0 -es 06_coal 1 120 2030 1.0 0.0 -es 07_gas 1 120 2030 0.0 0.0 -es 08_non-res 1 120 2030 0.0 0.0 -es 09_hydro_pump 1 120 2030 0.0 0.0 -es 01_solar 1 121 2030 1.0 0.0 -es 02_wind_on 1 121 2030 1.0 0.0 -es 03_wind_off 1 121 2030 1.0 0.0 -es 04_res 1 121 2030 1.0 0.0 -es 05_nuclear 1 121 2030 1.0 0.0 -es 06_coal 1 121 2030 1.0 0.0 -es 07_gas 1 121 2030 0.0 0.0 -es 08_non-res 1 121 2030 0.0 0.0 -es 09_hydro_pump 1 121 2030 0.0 0.0 -es 01_solar 1 122 2030 1.0 0.0 -es 02_wind_on 1 122 2030 1.0 0.0 -es 03_wind_off 1 122 2030 1.0 0.0 -es 04_res 1 122 2030 1.0 0.0 -es 05_nuclear 1 122 2030 1.0 0.0 -es 06_coal 1 122 2030 1.0 0.0 -es 07_gas 1 122 2030 1.0 0.0 -es 08_non-res 1 122 2030 0.0 0.0 -es 09_hydro_pump 1 122 2030 0.0 0.0 -es 01_solar 1 123 2030 1.0 0.0 -es 02_wind_on 1 123 2030 1.0 0.0 -es 03_wind_off 1 123 2030 1.0 0.0 -es 04_res 1 123 2030 1.0 0.0 -es 05_nuclear 1 123 2030 1.0 0.0 -es 06_coal 1 123 2030 1.0 0.0 -es 07_gas 1 123 2030 1.0 0.0 -es 08_non-res 1 123 2030 0.0 0.0 -es 09_hydro_pump 1 123 2030 0.0 0.0 -es 01_solar 1 124 2030 1.0 0.0 -es 02_wind_on 1 124 2030 1.0 0.0 -es 03_wind_off 1 124 2030 1.0 0.0 -es 04_res 1 124 2030 1.0 0.0 -es 05_nuclear 1 124 2030 1.0 0.0 -es 06_coal 1 124 2030 1.0 0.0 -es 07_gas 1 124 2030 1.0 0.0 -es 08_non-res 1 124 2030 0.0 0.0 -es 09_hydro_pump 1 124 2030 0.0 0.0 -es 01_solar 1 125 2030 1.0 0.0 -es 02_wind_on 1 125 2030 1.0 0.0 -es 03_wind_off 1 125 2030 1.0 0.0 -es 04_res 1 125 2030 1.0 0.0 -es 05_nuclear 1 125 2030 1.0 0.0 -es 06_coal 1 125 2030 1.0 0.0 -es 07_gas 1 125 2030 1.0 0.0 -es 08_non-res 1 125 2030 0.0 0.0 -es 09_hydro_pump 1 125 2030 0.0 0.0 -es 01_solar 1 126 2030 1.0 0.0 -es 02_wind_on 1 126 2030 1.0 0.0 -es 03_wind_off 1 126 2030 1.0 0.0 -es 04_res 1 126 2030 1.0 0.0 -es 05_nuclear 1 126 2030 1.0 0.0 -es 06_coal 1 126 2030 1.0 0.0 -es 07_gas 1 126 2030 1.0 0.0 -es 08_non-res 1 126 2030 0.0 0.0 -es 09_hydro_pump 1 126 2030 0.0 0.0 -es 01_solar 1 127 2030 1.0 0.0 -es 02_wind_on 1 127 2030 1.0 0.0 -es 03_wind_off 1 127 2030 1.0 0.0 -es 04_res 1 127 2030 1.0 0.0 -es 05_nuclear 1 127 2030 1.0 0.0 -es 06_coal 1 127 2030 1.0 0.0 -es 07_gas 1 127 2030 1.0 0.0 -es 08_non-res 1 127 2030 0.0 0.0 -es 09_hydro_pump 1 127 2030 0.0 0.0 -es 01_solar 1 128 2030 1.0 0.0 -es 02_wind_on 1 128 2030 1.0 0.0 -es 03_wind_off 1 128 2030 1.0 0.0 -es 04_res 1 128 2030 1.0 0.0 -es 05_nuclear 1 128 2030 1.0 0.0 -es 06_coal 1 128 2030 1.0 0.0 -es 07_gas 1 128 2030 1.0 0.0 -es 08_non-res 1 128 2030 0.0 0.0 -es 09_hydro_pump 1 128 2030 0.0 0.0 -es 01_solar 1 129 2030 1.0 0.0 -es 02_wind_on 1 129 2030 1.0 0.0 -es 03_wind_off 1 129 2030 1.0 0.0 -es 04_res 1 129 2030 1.0 0.0 -es 05_nuclear 1 129 2030 1.0 0.0 -es 06_coal 1 129 2030 1.0 0.0 -es 07_gas 1 129 2030 1.0 0.0 -es 08_non-res 1 129 2030 0.0 0.0 -es 09_hydro_pump 1 129 2030 0.0 0.0 -es 01_solar 1 130 2030 1.0 0.0 -es 02_wind_on 1 130 2030 1.0 0.0 -es 03_wind_off 1 130 2030 1.0 0.0 -es 04_res 1 130 2030 1.0 0.0 -es 05_nuclear 1 130 2030 1.0 0.0 -es 06_coal 1 130 2030 1.0 0.0 -es 07_gas 1 130 2030 1.0 0.0 -es 08_non-res 1 130 2030 0.0 0.0 -es 09_hydro_pump 1 130 2030 0.0 0.0 -es 01_solar 1 131 2030 1.0 0.0 -es 02_wind_on 1 131 2030 1.0 0.0 -es 03_wind_off 1 131 2030 1.0 0.0 -es 04_res 1 131 2030 1.0 0.0 -es 05_nuclear 1 131 2030 1.0 0.0 -es 06_coal 1 131 2030 1.0 0.0 -es 07_gas 1 131 2030 1.0 0.0 -es 08_non-res 1 131 2030 0.0 0.0 -es 09_hydro_pump 1 131 2030 0.0 0.0 -es 01_solar 1 132 2030 1.0 0.0 -es 02_wind_on 1 132 2030 1.0 0.0 -es 03_wind_off 1 132 2030 1.0 0.0 -es 04_res 1 132 2030 1.0 0.0 -es 05_nuclear 1 132 2030 1.0 0.0 -es 06_coal 1 132 2030 1.0 0.0 -es 07_gas 1 132 2030 1.0 0.0 -es 08_non-res 1 132 2030 0.0 0.0 -es 09_hydro_pump 1 132 2030 0.0 0.0 -es 01_solar 1 133 2030 1.0 0.0 -es 02_wind_on 1 133 2030 1.0 0.0 -es 03_wind_off 1 133 2030 1.0 0.0 -es 04_res 1 133 2030 1.0 0.0 -es 05_nuclear 1 133 2030 1.0 0.0 -es 06_coal 1 133 2030 1.0 0.0 -es 07_gas 1 133 2030 1.0 0.0 -es 08_non-res 1 133 2030 0.0 0.0 -es 09_hydro_pump 1 133 2030 0.0 0.0 -es 01_solar 1 134 2030 1.0 0.0 -es 02_wind_on 1 134 2030 1.0 0.0 -es 03_wind_off 1 134 2030 1.0 0.0 -es 04_res 1 134 2030 1.0 0.0 -es 05_nuclear 1 134 2030 1.0 0.0 -es 06_coal 1 134 2030 1.0 0.0 -es 07_gas 1 134 2030 1.0 0.0 -es 08_non-res 1 134 2030 0.0 0.0 -es 09_hydro_pump 1 134 2030 0.0 0.0 -es 01_solar 1 135 2030 1.0 0.0 -es 02_wind_on 1 135 2030 1.0 0.0 -es 03_wind_off 1 135 2030 1.0 0.0 -es 04_res 1 135 2030 1.0 0.0 -es 05_nuclear 1 135 2030 1.0 0.0 -es 06_coal 1 135 2030 1.0 0.0 -es 07_gas 1 135 2030 1.0 0.0 -es 08_non-res 1 135 2030 0.0 0.0 -es 09_hydro_pump 1 135 2030 0.0 0.0 -es 01_solar 1 136 2030 1.0 0.0 -es 02_wind_on 1 136 2030 1.0 0.0 -es 03_wind_off 1 136 2030 1.0 0.0 -es 04_res 1 136 2030 1.0 0.0 -es 05_nuclear 1 136 2030 1.0 0.0 -es 06_coal 1 136 2030 1.0 0.0 -es 07_gas 1 136 2030 1.0 0.0 -es 08_non-res 1 136 2030 0.0 0.0 -es 09_hydro_pump 1 136 2030 0.0 0.0 -es 01_solar 1 137 2030 1.0 0.0 -es 02_wind_on 1 137 2030 1.0 0.0 -es 03_wind_off 1 137 2030 1.0 0.0 -es 04_res 1 137 2030 1.0 0.0 -es 05_nuclear 1 137 2030 1.0 0.0 -es 06_coal 1 137 2030 1.0 0.0 -es 07_gas 1 137 2030 1.0 0.0 -es 08_non-res 1 137 2030 0.0 0.0 -es 09_hydro_pump 1 137 2030 0.0 0.0 -es 01_solar 1 138 2030 1.0 0.0 -es 02_wind_on 1 138 2030 1.0 0.0 -es 03_wind_off 1 138 2030 1.0 0.0 -es 04_res 1 138 2030 1.0 0.0 -es 05_nuclear 1 138 2030 1.0 0.0 -es 06_coal 1 138 2030 1.0 0.0 -es 07_gas 1 138 2030 1.0 0.0 -es 08_non-res 1 138 2030 0.0 0.0 -es 09_hydro_pump 1 138 2030 0.0 0.0 -es 01_solar 1 139 2030 1.0 0.0 -es 02_wind_on 1 139 2030 1.0 0.0 -es 03_wind_off 1 139 2030 1.0 0.0 -es 04_res 1 139 2030 1.0 0.0 -es 05_nuclear 1 139 2030 1.0 0.0 -es 06_coal 1 139 2030 1.0 0.0 -es 07_gas 1 139 2030 1.0 0.0 -es 08_non-res 1 139 2030 0.0 0.0 -es 09_hydro_pump 1 139 2030 0.0 0.0 -es 01_solar 1 140 2030 1.0 0.0 -es 02_wind_on 1 140 2030 1.0 0.0 -es 03_wind_off 1 140 2030 1.0 0.0 -es 04_res 1 140 2030 1.0 0.0 -es 05_nuclear 1 140 2030 1.0 0.0 -es 06_coal 1 140 2030 1.0 0.0 -es 07_gas 1 140 2030 1.0 0.0 -es 08_non-res 1 140 2030 0.0 0.0 -es 09_hydro_pump 1 140 2030 0.0 0.0 -es 01_solar 1 141 2030 1.0 0.0 -es 02_wind_on 1 141 2030 1.0 0.0 -es 03_wind_off 1 141 2030 1.0 0.0 -es 04_res 1 141 2030 1.0 0.0 -es 05_nuclear 1 141 2030 1.0 0.0 -es 06_coal 1 141 2030 1.0 0.0 -es 07_gas 1 141 2030 1.0 0.0 -es 08_non-res 1 141 2030 0.0 0.0 -es 09_hydro_pump 1 141 2030 0.0 0.0 -es 01_solar 1 142 2030 1.0 0.0 -es 02_wind_on 1 142 2030 1.0 0.0 -es 03_wind_off 1 142 2030 1.0 0.0 -es 04_res 1 142 2030 1.0 0.0 -es 05_nuclear 1 142 2030 1.0 0.0 -es 06_coal 1 142 2030 1.0 0.0 -es 07_gas 1 142 2030 1.0 0.0 -es 08_non-res 1 142 2030 1.0 0.0 -es 09_hydro_pump 1 142 2030 0.0 0.0 -es 01_solar 1 143 2030 1.0 0.0 -es 02_wind_on 1 143 2030 1.0 0.0 -es 03_wind_off 1 143 2030 1.0 0.0 -es 04_res 1 143 2030 1.0 0.0 -es 05_nuclear 1 143 2030 1.0 0.0 -es 06_coal 1 143 2030 1.0 0.0 -es 07_gas 1 143 2030 1.0 0.0 -es 08_non-res 1 143 2030 1.0 0.0 -es 09_hydro_pump 1 143 2030 0.0 0.0 -es 01_solar 1 144 2030 1.0 0.0 -es 02_wind_on 1 144 2030 1.0 0.0 -es 03_wind_off 1 144 2030 1.0 0.0 -es 04_res 1 144 2030 1.0 0.0 -es 05_nuclear 1 144 2030 1.0 0.0 -es 06_coal 1 144 2030 1.0 0.0 -es 07_gas 1 144 2030 1.0 0.0 -es 08_non-res 1 144 2030 1.0 0.0 -es 09_hydro_pump 1 144 2030 0.0 0.0 -es 01_solar 1 145 2030 1.0 0.0 -es 02_wind_on 1 145 2030 1.0 0.0 -es 03_wind_off 1 145 2030 1.0 0.0 -es 04_res 1 145 2030 1.0 0.0 -es 05_nuclear 1 145 2030 1.0 0.0 -es 06_coal 1 145 2030 1.0 0.0 -es 07_gas 1 145 2030 1.0 0.0 -es 08_non-res 1 145 2030 1.0 0.0 -es 09_hydro_pump 1 145 2030 0.0 0.0 -es 01_solar 1 146 2030 1.0 0.0 -es 02_wind_on 1 146 2030 1.0 0.0 -es 03_wind_off 1 146 2030 1.0 0.0 -es 04_res 1 146 2030 1.0 0.0 -es 05_nuclear 1 146 2030 1.0 0.0 -es 06_coal 1 146 2030 1.0 0.0 -es 07_gas 1 146 2030 1.0 0.0 -es 08_non-res 1 146 2030 1.0 0.0 -es 09_hydro_pump 1 146 2030 0.0 0.0 -es 01_solar 1 147 2030 1.0 0.0 -es 02_wind_on 1 147 2030 1.0 0.0 -es 03_wind_off 1 147 2030 1.0 0.0 -es 04_res 1 147 2030 1.0 0.0 -es 05_nuclear 1 147 2030 1.0 0.0 -es 06_coal 1 147 2030 1.0 0.0 -es 07_gas 1 147 2030 1.0 0.0 -es 08_non-res 1 147 2030 1.0 0.0 -es 09_hydro_pump 1 147 2030 0.0 0.0 -es 01_solar 1 148 2030 1.0 0.0 -es 02_wind_on 1 148 2030 1.0 0.0 -es 03_wind_off 1 148 2030 1.0 0.0 -es 04_res 1 148 2030 1.0 0.0 -es 05_nuclear 1 148 2030 1.0 0.0 -es 06_coal 1 148 2030 1.0 0.0 -es 07_gas 1 148 2030 1.0 0.0 -es 08_non-res 1 148 2030 1.0 0.0 -es 09_hydro_pump 1 148 2030 0.0 0.0 -es 01_solar 1 149 2030 1.0 0.0 -es 02_wind_on 1 149 2030 1.0 0.0 -es 03_wind_off 1 149 2030 1.0 0.0 -es 04_res 1 149 2030 1.0 0.0 -es 05_nuclear 1 149 2030 1.0 0.0 -es 06_coal 1 149 2030 1.0 0.0 -es 07_gas 1 149 2030 1.0 0.0 -es 08_non-res 1 149 2030 1.0 0.0 -es 09_hydro_pump 1 149 2030 0.0 0.0 -es 01_solar 1 150 2030 1.0 0.0 -es 02_wind_on 1 150 2030 1.0 0.0 -es 03_wind_off 1 150 2030 1.0 0.0 -es 04_res 1 150 2030 1.0 0.0 -es 05_nuclear 1 150 2030 1.0 0.0 -es 06_coal 1 150 2030 1.0 0.0 -es 07_gas 1 150 2030 1.0 0.0 -es 08_non-res 1 150 2030 1.0 0.0 -es 09_hydro_pump 1 150 2030 0.0 0.0 -es 01_solar 1 151 2030 1.0 0.0 -es 02_wind_on 1 151 2030 1.0 0.0 -es 03_wind_off 1 151 2030 1.0 0.0 -es 04_res 1 151 2030 1.0 0.0 -es 05_nuclear 1 151 2030 1.0 0.0 -es 06_coal 1 151 2030 1.0 0.0 -es 07_gas 1 151 2030 1.0 0.0 -es 08_non-res 1 151 2030 1.0 0.0 -es 09_hydro_pump 1 151 2030 0.0 0.0 -es 01_solar 1 152 2030 1.0 0.0 -es 02_wind_on 1 152 2030 1.0 0.0 -es 03_wind_off 1 152 2030 1.0 0.0 -es 04_res 1 152 2030 1.0 0.0 -es 05_nuclear 1 152 2030 1.0 0.0 -es 06_coal 1 152 2030 1.0 0.0 -es 07_gas 1 152 2030 1.0 0.0 -es 08_non-res 1 152 2030 1.0 0.0 -es 09_hydro_pump 1 152 2030 0.0 0.0 -es 01_solar 1 153 2030 1.0 0.0 -es 02_wind_on 1 153 2030 1.0 0.0 -es 03_wind_off 1 153 2030 1.0 0.0 -es 04_res 1 153 2030 1.0 0.0 -es 05_nuclear 1 153 2030 1.0 0.0 -es 06_coal 1 153 2030 1.0 0.0 -es 07_gas 1 153 2030 1.0 0.0 -es 08_non-res 1 153 2030 1.0 0.0 -es 09_hydro_pump 1 153 2030 0.0 0.0 -es 01_solar 1 154 2030 1.0 0.0 -es 02_wind_on 1 154 2030 1.0 0.0 -es 03_wind_off 1 154 2030 1.0 0.0 -es 04_res 1 154 2030 1.0 0.0 -es 05_nuclear 1 154 2030 1.0 0.0 -es 06_coal 1 154 2030 1.0 0.0 -es 07_gas 1 154 2030 1.0 0.0 -es 08_non-res 1 154 2030 1.0 0.0 -es 09_hydro_pump 1 154 2030 0.0 0.0 -es 01_solar 1 155 2030 1.0 0.0 -es 02_wind_on 1 155 2030 1.0 0.0 -es 03_wind_off 1 155 2030 1.0 0.0 -es 04_res 1 155 2030 1.0 0.0 -es 05_nuclear 1 155 2030 1.0 0.0 -es 06_coal 1 155 2030 1.0 0.0 -es 07_gas 1 155 2030 1.0 0.0 -es 08_non-res 1 155 2030 1.0 0.0 -es 09_hydro_pump 1 155 2030 0.0 0.0 -es 01_solar 1 156 2030 1.0 0.0 -es 02_wind_on 1 156 2030 1.0 0.0 -es 03_wind_off 1 156 2030 1.0 0.0 -es 04_res 1 156 2030 1.0 0.0 -es 05_nuclear 1 156 2030 1.0 0.0 -es 06_coal 1 156 2030 1.0 0.0 -es 07_gas 1 156 2030 1.0 0.0 -es 08_non-res 1 156 2030 1.0 0.0 -es 09_hydro_pump 1 156 2030 0.0 0.0 -es 01_solar 1 157 2030 1.0 0.0 -es 02_wind_on 1 157 2030 1.0 0.0 -es 03_wind_off 1 157 2030 1.0 0.0 -es 04_res 1 157 2030 1.0 0.0 -es 05_nuclear 1 157 2030 1.0 0.0 -es 06_coal 1 157 2030 1.0 0.0 -es 07_gas 1 157 2030 1.0 0.0 -es 08_non-res 1 157 2030 1.0 0.0 -es 09_hydro_pump 1 157 2030 0.0 0.0 -es 01_solar 1 158 2030 1.0 0.0 -es 02_wind_on 1 158 2030 1.0 0.0 -es 03_wind_off 1 158 2030 1.0 0.0 -es 04_res 1 158 2030 1.0 0.0 -es 05_nuclear 1 158 2030 1.0 0.0 -es 06_coal 1 158 2030 1.0 0.0 -es 07_gas 1 158 2030 1.0 0.0 -es 08_non-res 1 158 2030 1.0 0.0 -es 09_hydro_pump 1 158 2030 0.0 0.0 -es 01_solar 1 159 2030 1.0 0.0 -es 02_wind_on 1 159 2030 1.0 0.0 -es 03_wind_off 1 159 2030 1.0 0.0 -es 04_res 1 159 2030 1.0 0.0 -es 05_nuclear 1 159 2030 1.0 0.0 -es 06_coal 1 159 2030 1.0 0.0 -es 07_gas 1 159 2030 1.0 0.0 -es 08_non-res 1 159 2030 1.0 0.0 -es 09_hydro_pump 1 159 2030 0.0 0.0 -es 01_solar 1 160 2030 1.0 0.0 -es 02_wind_on 1 160 2030 1.0 0.0 -es 03_wind_off 1 160 2030 1.0 0.0 -es 04_res 1 160 2030 1.0 0.0 -es 05_nuclear 1 160 2030 1.0 0.0 -es 06_coal 1 160 2030 1.0 0.0 -es 07_gas 1 160 2030 1.0 0.0 -es 08_non-res 1 160 2030 1.0 0.0 -es 09_hydro_pump 1 160 2030 0.0 0.0 -es 01_solar 1 161 2030 1.0 0.0 -es 02_wind_on 1 161 2030 1.0 0.0 -es 03_wind_off 1 161 2030 1.0 0.0 -es 04_res 1 161 2030 1.0 0.0 -es 05_nuclear 1 161 2030 1.0 0.0 -es 06_coal 1 161 2030 1.0 0.0 -es 07_gas 1 161 2030 1.0 0.0 -es 08_non-res 1 161 2030 1.0 0.0 -es 09_hydro_pump 1 161 2030 0.0 0.0 -es 01_solar 1 162 2030 1.0 0.0 -es 02_wind_on 1 162 2030 1.0 0.0 -es 03_wind_off 1 162 2030 1.0 0.0 -es 04_res 1 162 2030 1.0 0.0 -es 05_nuclear 1 162 2030 1.0 0.0 -es 06_coal 1 162 2030 1.0 0.0 -es 07_gas 1 162 2030 1.0 0.0 -es 08_non-res 1 162 2030 1.0 0.0 -es 09_hydro_pump 1 162 2030 1.0 0.0 -es 01_solar 1 163 2030 1.0 0.0 -es 02_wind_on 1 163 2030 1.0 0.0 -es 03_wind_off 1 163 2030 1.0 0.0 -es 04_res 1 163 2030 1.0 0.0 -es 05_nuclear 1 163 2030 1.0 0.0 -es 06_coal 1 163 2030 1.0 0.0 -es 07_gas 1 163 2030 1.0 0.0 -es 08_non-res 1 163 2030 1.0 0.0 -es 09_hydro_pump 1 163 2030 1.0 0.0 -es 01_solar 1 164 2030 1.0 0.0 -es 02_wind_on 1 164 2030 1.0 0.0 -es 03_wind_off 1 164 2030 1.0 0.0 -es 04_res 1 164 2030 1.0 0.0 -es 05_nuclear 1 164 2030 1.0 0.0 -es 06_coal 1 164 2030 1.0 0.0 -es 07_gas 1 164 2030 1.0 0.0 -es 08_non-res 1 164 2030 1.0 0.0 -es 09_hydro_pump 1 164 2030 1.0 0.0 -es 01_solar 1 165 2030 1.0 0.0 -es 02_wind_on 1 165 2030 1.0 0.0 -es 03_wind_off 1 165 2030 1.0 0.0 -es 04_res 1 165 2030 1.0 0.0 -es 05_nuclear 1 165 2030 1.0 0.0 -es 06_coal 1 165 2030 1.0 0.0 -es 07_gas 1 165 2030 1.0 0.0 -es 08_non-res 1 165 2030 1.0 0.0 -es 09_hydro_pump 1 165 2030 1.0 0.0 -es 01_solar 1 166 2030 1.0 0.0 -es 02_wind_on 1 166 2030 1.0 0.0 -es 03_wind_off 1 166 2030 1.0 0.0 -es 04_res 1 166 2030 1.0 0.0 -es 05_nuclear 1 166 2030 1.0 0.0 -es 06_coal 1 166 2030 1.0 0.0 -es 07_gas 1 166 2030 1.0 0.0 -es 08_non-res 1 166 2030 1.0 0.0 -es 09_hydro_pump 1 166 2030 1.0 0.0 -es 01_solar 1 167 2030 1.0 0.0 -es 02_wind_on 1 167 2030 1.0 0.0 -es 03_wind_off 1 167 2030 1.0 0.0 -es 04_res 1 167 2030 1.0 0.0 -es 05_nuclear 1 167 2030 1.0 0.0 -es 06_coal 1 167 2030 1.0 0.0 -es 07_gas 1 167 2030 1.0 0.0 -es 08_non-res 1 167 2030 1.0 0.0 -es 09_hydro_pump 1 167 2030 1.0 0.0 -es 01_solar 1 168 2030 1.0 0.0 -es 02_wind_on 1 168 2030 1.0 0.0 -es 03_wind_off 1 168 2030 1.0 0.0 -es 04_res 1 168 2030 1.0 0.0 -es 05_nuclear 1 168 2030 1.0 0.0 -es 06_coal 1 168 2030 1.0 0.0 -es 07_gas 1 168 2030 1.0 0.0 -es 08_non-res 1 168 2030 1.0 0.0 -es 09_hydro_pump 1 168 2030 1.0 0.0 -es 01_solar 1 169 2030 0.0 0.0 -es 02_wind_on 1 169 2030 0.0 0.0 -es 03_wind_off 1 169 2030 0.0 0.0 -es 04_res 1 169 2030 0.0 0.0 -es 05_nuclear 1 169 2030 0.0 0.0 -es 06_coal 1 169 2030 0.0 0.0 -es 07_gas 1 169 2030 0.0 0.0 -es 08_non-res 1 169 2030 0.0 0.0 -es 09_hydro_pump 1 169 2030 0.0 0.0 -es 01_solar 1 170 2030 1.0 0.0 -es 02_wind_on 1 170 2030 0.0 0.0 -es 03_wind_off 1 170 2030 0.0 0.0 -es 04_res 1 170 2030 0.0 0.0 -es 05_nuclear 1 170 2030 0.0 0.0 -es 06_coal 1 170 2030 0.0 0.0 -es 07_gas 1 170 2030 0.0 0.0 -es 08_non-res 1 170 2030 0.0 0.0 -es 09_hydro_pump 1 170 2030 0.0 0.0 -es 01_solar 1 171 2030 1.0 0.0 -es 02_wind_on 1 171 2030 0.0 0.0 -es 03_wind_off 1 171 2030 0.0 0.0 -es 04_res 1 171 2030 0.0 0.0 -es 05_nuclear 1 171 2030 0.0 0.0 -es 06_coal 1 171 2030 0.0 0.0 -es 07_gas 1 171 2030 0.0 0.0 -es 08_non-res 1 171 2030 0.0 0.0 -es 09_hydro_pump 1 171 2030 0.0 0.0 -es 01_solar 1 172 2030 1.0 0.0 -es 02_wind_on 1 172 2030 0.0 0.0 -es 03_wind_off 1 172 2030 0.0 0.0 -es 04_res 1 172 2030 0.0 0.0 -es 05_nuclear 1 172 2030 0.0 0.0 -es 06_coal 1 172 2030 0.0 0.0 -es 07_gas 1 172 2030 0.0 0.0 -es 08_non-res 1 172 2030 0.0 0.0 -es 09_hydro_pump 1 172 2030 0.0 0.0 -es 01_solar 1 173 2030 1.0 0.0 -es 02_wind_on 1 173 2030 0.0 0.0 -es 03_wind_off 1 173 2030 0.0 0.0 -es 04_res 1 173 2030 0.0 0.0 -es 05_nuclear 1 173 2030 0.0 0.0 -es 06_coal 1 173 2030 0.0 0.0 -es 07_gas 1 173 2030 0.0 0.0 -es 08_non-res 1 173 2030 0.0 0.0 -es 09_hydro_pump 1 173 2030 0.0 0.0 -es 01_solar 1 174 2030 1.0 0.0 -es 02_wind_on 1 174 2030 0.0 0.0 -es 03_wind_off 1 174 2030 0.0 0.0 -es 04_res 1 174 2030 0.0 0.0 -es 05_nuclear 1 174 2030 0.0 0.0 -es 06_coal 1 174 2030 0.0 0.0 -es 07_gas 1 174 2030 0.0 0.0 -es 08_non-res 1 174 2030 0.0 0.0 -es 09_hydro_pump 1 174 2030 0.0 0.0 -es 01_solar 1 175 2030 1.0 0.0 -es 02_wind_on 1 175 2030 0.0 0.0 -es 03_wind_off 1 175 2030 0.0 0.0 -es 04_res 1 175 2030 0.0 0.0 -es 05_nuclear 1 175 2030 0.0 0.0 -es 06_coal 1 175 2030 0.0 0.0 -es 07_gas 1 175 2030 0.0 0.0 -es 08_non-res 1 175 2030 0.0 0.0 -es 09_hydro_pump 1 175 2030 0.0 0.0 -es 01_solar 1 176 2030 1.0 0.0 -es 02_wind_on 1 176 2030 0.0 0.0 -es 03_wind_off 1 176 2030 0.0 0.0 -es 04_res 1 176 2030 0.0 0.0 -es 05_nuclear 1 176 2030 0.0 0.0 -es 06_coal 1 176 2030 0.0 0.0 -es 07_gas 1 176 2030 0.0 0.0 -es 08_non-res 1 176 2030 0.0 0.0 -es 09_hydro_pump 1 176 2030 0.0 0.0 -es 01_solar 1 177 2030 1.0 0.0 -es 02_wind_on 1 177 2030 0.0 0.0 -es 03_wind_off 1 177 2030 0.0 0.0 -es 04_res 1 177 2030 0.0 0.0 -es 05_nuclear 1 177 2030 0.0 0.0 -es 06_coal 1 177 2030 0.0 0.0 -es 07_gas 1 177 2030 0.0 0.0 -es 08_non-res 1 177 2030 0.0 0.0 -es 09_hydro_pump 1 177 2030 0.0 0.0 -es 01_solar 1 178 2030 1.0 0.0 -es 02_wind_on 1 178 2030 0.0 0.0 -es 03_wind_off 1 178 2030 0.0 0.0 -es 04_res 1 178 2030 0.0 0.0 -es 05_nuclear 1 178 2030 0.0 0.0 -es 06_coal 1 178 2030 0.0 0.0 -es 07_gas 1 178 2030 0.0 0.0 -es 08_non-res 1 178 2030 0.0 0.0 -es 09_hydro_pump 1 178 2030 0.0 0.0 -es 01_solar 1 179 2030 1.0 0.0 -es 02_wind_on 1 179 2030 0.0 0.0 -es 03_wind_off 1 179 2030 0.0 0.0 -es 04_res 1 179 2030 0.0 0.0 -es 05_nuclear 1 179 2030 0.0 0.0 -es 06_coal 1 179 2030 0.0 0.0 -es 07_gas 1 179 2030 0.0 0.0 -es 08_non-res 1 179 2030 0.0 0.0 -es 09_hydro_pump 1 179 2030 0.0 0.0 -es 01_solar 1 180 2030 1.0 0.0 -es 02_wind_on 1 180 2030 0.0 0.0 -es 03_wind_off 1 180 2030 0.0 0.0 -es 04_res 1 180 2030 0.0 0.0 -es 05_nuclear 1 180 2030 0.0 0.0 -es 06_coal 1 180 2030 0.0 0.0 -es 07_gas 1 180 2030 0.0 0.0 -es 08_non-res 1 180 2030 0.0 0.0 -es 09_hydro_pump 1 180 2030 0.0 0.0 -es 01_solar 1 181 2030 1.0 0.0 -es 02_wind_on 1 181 2030 0.0 0.0 -es 03_wind_off 1 181 2030 0.0 0.0 -es 04_res 1 181 2030 0.0 0.0 -es 05_nuclear 1 181 2030 0.0 0.0 -es 06_coal 1 181 2030 0.0 0.0 -es 07_gas 1 181 2030 0.0 0.0 -es 08_non-res 1 181 2030 0.0 0.0 -es 09_hydro_pump 1 181 2030 0.0 0.0 -es 01_solar 1 182 2030 1.0 0.0 -es 02_wind_on 1 182 2030 0.0 0.0 -es 03_wind_off 1 182 2030 0.0 0.0 -es 04_res 1 182 2030 0.0 0.0 -es 05_nuclear 1 182 2030 0.0 0.0 -es 06_coal 1 182 2030 0.0 0.0 -es 07_gas 1 182 2030 0.0 0.0 -es 08_non-res 1 182 2030 0.0 0.0 -es 09_hydro_pump 1 182 2030 0.0 0.0 -es 01_solar 1 183 2030 1.0 0.0 -es 02_wind_on 1 183 2030 0.0 0.0 -es 03_wind_off 1 183 2030 0.0 0.0 -es 04_res 1 183 2030 0.0 0.0 -es 05_nuclear 1 183 2030 0.0 0.0 -es 06_coal 1 183 2030 0.0 0.0 -es 07_gas 1 183 2030 0.0 0.0 -es 08_non-res 1 183 2030 0.0 0.0 -es 09_hydro_pump 1 183 2030 0.0 0.0 -es 01_solar 1 184 2030 1.0 0.0 -es 02_wind_on 1 184 2030 0.0 0.0 -es 03_wind_off 1 184 2030 0.0 0.0 -es 04_res 1 184 2030 0.0 0.0 -es 05_nuclear 1 184 2030 0.0 0.0 -es 06_coal 1 184 2030 0.0 0.0 -es 07_gas 1 184 2030 0.0 0.0 -es 08_non-res 1 184 2030 0.0 0.0 -es 09_hydro_pump 1 184 2030 0.0 0.0 -es 01_solar 1 185 2030 1.0 0.0 -es 02_wind_on 1 185 2030 0.0 0.0 -es 03_wind_off 1 185 2030 0.0 0.0 -es 04_res 1 185 2030 0.0 0.0 -es 05_nuclear 1 185 2030 0.0 0.0 -es 06_coal 1 185 2030 0.0 0.0 -es 07_gas 1 185 2030 0.0 0.0 -es 08_non-res 1 185 2030 0.0 0.0 -es 09_hydro_pump 1 185 2030 0.0 0.0 -es 01_solar 1 186 2030 1.0 0.0 -es 02_wind_on 1 186 2030 0.0 0.0 -es 03_wind_off 1 186 2030 0.0 0.0 -es 04_res 1 186 2030 0.0 0.0 -es 05_nuclear 1 186 2030 0.0 0.0 -es 06_coal 1 186 2030 0.0 0.0 -es 07_gas 1 186 2030 0.0 0.0 -es 08_non-res 1 186 2030 0.0 0.0 -es 09_hydro_pump 1 186 2030 0.0 0.0 -es 01_solar 1 187 2030 1.0 0.0 -es 02_wind_on 1 187 2030 0.0 0.0 -es 03_wind_off 1 187 2030 0.0 0.0 -es 04_res 1 187 2030 0.0 0.0 -es 05_nuclear 1 187 2030 0.0 0.0 -es 06_coal 1 187 2030 0.0 0.0 -es 07_gas 1 187 2030 0.0 0.0 -es 08_non-res 1 187 2030 0.0 0.0 -es 09_hydro_pump 1 187 2030 0.0 0.0 -es 01_solar 1 188 2030 1.0 0.0 -es 02_wind_on 1 188 2030 0.0 0.0 -es 03_wind_off 1 188 2030 0.0 0.0 -es 04_res 1 188 2030 0.0 0.0 -es 05_nuclear 1 188 2030 0.0 0.0 -es 06_coal 1 188 2030 0.0 0.0 -es 07_gas 1 188 2030 0.0 0.0 -es 08_non-res 1 188 2030 0.0 0.0 -es 09_hydro_pump 1 188 2030 0.0 0.0 -es 01_solar 1 189 2030 1.0 0.0 -es 02_wind_on 1 189 2030 0.0 0.0 -es 03_wind_off 1 189 2030 0.0 0.0 -es 04_res 1 189 2030 0.0 0.0 -es 05_nuclear 1 189 2030 0.0 0.0 -es 06_coal 1 189 2030 0.0 0.0 -es 07_gas 1 189 2030 0.0 0.0 -es 08_non-res 1 189 2030 0.0 0.0 -es 09_hydro_pump 1 189 2030 0.0 0.0 -es 01_solar 1 190 2030 1.0 0.0 -es 02_wind_on 1 190 2030 1.0 0.0 -es 03_wind_off 1 190 2030 0.0 0.0 -es 04_res 1 190 2030 0.0 0.0 -es 05_nuclear 1 190 2030 0.0 0.0 -es 06_coal 1 190 2030 0.0 0.0 -es 07_gas 1 190 2030 0.0 0.0 -es 08_non-res 1 190 2030 0.0 0.0 -es 09_hydro_pump 1 190 2030 0.0 0.0 -es 01_solar 1 191 2030 1.0 0.0 -es 02_wind_on 1 191 2030 1.0 0.0 -es 03_wind_off 1 191 2030 0.0 0.0 -es 04_res 1 191 2030 0.0 0.0 -es 05_nuclear 1 191 2030 0.0 0.0 -es 06_coal 1 191 2030 0.0 0.0 -es 07_gas 1 191 2030 0.0 0.0 -es 08_non-res 1 191 2030 0.0 0.0 -es 09_hydro_pump 1 191 2030 0.0 0.0 -es 01_solar 1 192 2030 1.0 0.0 -es 02_wind_on 1 192 2030 1.0 0.0 -es 03_wind_off 1 192 2030 0.0 0.0 -es 04_res 1 192 2030 0.0 0.0 -es 05_nuclear 1 192 2030 0.0 0.0 -es 06_coal 1 192 2030 0.0 0.0 -es 07_gas 1 192 2030 0.0 0.0 -es 08_non-res 1 192 2030 0.0 0.0 -es 09_hydro_pump 1 192 2030 0.0 0.0 -es 01_solar 1 193 2030 1.0 0.0 -es 02_wind_on 1 193 2030 1.0 0.0 -es 03_wind_off 1 193 2030 0.0 0.0 -es 04_res 1 193 2030 0.0 0.0 -es 05_nuclear 1 193 2030 0.0 0.0 -es 06_coal 1 193 2030 0.0 0.0 -es 07_gas 1 193 2030 0.0 0.0 -es 08_non-res 1 193 2030 0.0 0.0 -es 09_hydro_pump 1 193 2030 0.0 0.0 -es 01_solar 1 194 2030 1.0 0.0 -es 02_wind_on 1 194 2030 1.0 0.0 -es 03_wind_off 1 194 2030 0.0 0.0 -es 04_res 1 194 2030 0.0 0.0 -es 05_nuclear 1 194 2030 0.0 0.0 -es 06_coal 1 194 2030 0.0 0.0 -es 07_gas 1 194 2030 0.0 0.0 -es 08_non-res 1 194 2030 0.0 0.0 -es 09_hydro_pump 1 194 2030 0.0 0.0 -es 01_solar 1 195 2030 1.0 0.0 -es 02_wind_on 1 195 2030 1.0 0.0 -es 03_wind_off 1 195 2030 0.0 0.0 -es 04_res 1 195 2030 0.0 0.0 -es 05_nuclear 1 195 2030 0.0 0.0 -es 06_coal 1 195 2030 0.0 0.0 -es 07_gas 1 195 2030 0.0 0.0 -es 08_non-res 1 195 2030 0.0 0.0 -es 09_hydro_pump 1 195 2030 0.0 0.0 -es 01_solar 1 196 2030 1.0 0.0 -es 02_wind_on 1 196 2030 1.0 0.0 -es 03_wind_off 1 196 2030 0.0 0.0 -es 04_res 1 196 2030 0.0 0.0 -es 05_nuclear 1 196 2030 0.0 0.0 -es 06_coal 1 196 2030 0.0 0.0 -es 07_gas 1 196 2030 0.0 0.0 -es 08_non-res 1 196 2030 0.0 0.0 -es 09_hydro_pump 1 196 2030 0.0 0.0 -es 01_solar 1 197 2030 1.0 0.0 -es 02_wind_on 1 197 2030 1.0 0.0 -es 03_wind_off 1 197 2030 0.0 0.0 -es 04_res 1 197 2030 0.0 0.0 -es 05_nuclear 1 197 2030 0.0 0.0 -es 06_coal 1 197 2030 0.0 0.0 -es 07_gas 1 197 2030 0.0 0.0 -es 08_non-res 1 197 2030 0.0 0.0 -es 09_hydro_pump 1 197 2030 0.0 0.0 -es 01_solar 1 198 2030 1.0 0.0 -es 02_wind_on 1 198 2030 1.0 0.0 -es 03_wind_off 1 198 2030 0.0 0.0 -es 04_res 1 198 2030 0.0 0.0 -es 05_nuclear 1 198 2030 0.0 0.0 -es 06_coal 1 198 2030 0.0 0.0 -es 07_gas 1 198 2030 0.0 0.0 -es 08_non-res 1 198 2030 0.0 0.0 -es 09_hydro_pump 1 198 2030 0.0 0.0 -es 01_solar 1 199 2030 1.0 0.0 -es 02_wind_on 1 199 2030 1.0 0.0 -es 03_wind_off 1 199 2030 0.0 0.0 -es 04_res 1 199 2030 0.0 0.0 -es 05_nuclear 1 199 2030 0.0 0.0 -es 06_coal 1 199 2030 0.0 0.0 -es 07_gas 1 199 2030 0.0 0.0 -es 08_non-res 1 199 2030 0.0 0.0 -es 09_hydro_pump 1 199 2030 0.0 0.0 -es 01_solar 1 200 2030 1.0 0.0 -es 02_wind_on 1 200 2030 1.0 0.0 -es 03_wind_off 1 200 2030 0.0 0.0 -es 04_res 1 200 2030 0.0 0.0 -es 05_nuclear 1 200 2030 0.0 0.0 -es 06_coal 1 200 2030 0.0 0.0 -es 07_gas 1 200 2030 0.0 0.0 -es 08_non-res 1 200 2030 0.0 0.0 -es 09_hydro_pump 1 200 2030 0.0 0.0 -es 01_solar 1 201 2030 1.0 0.0 -es 02_wind_on 1 201 2030 1.0 0.0 -es 03_wind_off 1 201 2030 0.0 0.0 -es 04_res 1 201 2030 0.0 0.0 -es 05_nuclear 1 201 2030 0.0 0.0 -es 06_coal 1 201 2030 0.0 0.0 -es 07_gas 1 201 2030 0.0 0.0 -es 08_non-res 1 201 2030 0.0 0.0 -es 09_hydro_pump 1 201 2030 0.0 0.0 -es 01_solar 1 202 2030 1.0 0.0 -es 02_wind_on 1 202 2030 1.0 0.0 -es 03_wind_off 1 202 2030 0.0 0.0 -es 04_res 1 202 2030 0.0 0.0 -es 05_nuclear 1 202 2030 0.0 0.0 -es 06_coal 1 202 2030 0.0 0.0 -es 07_gas 1 202 2030 0.0 0.0 -es 08_non-res 1 202 2030 0.0 0.0 -es 09_hydro_pump 1 202 2030 0.0 0.0 -es 01_solar 1 203 2030 1.0 0.0 -es 02_wind_on 1 203 2030 1.0 0.0 -es 03_wind_off 1 203 2030 0.0 0.0 -es 04_res 1 203 2030 0.0 0.0 -es 05_nuclear 1 203 2030 0.0 0.0 -es 06_coal 1 203 2030 0.0 0.0 -es 07_gas 1 203 2030 0.0 0.0 -es 08_non-res 1 203 2030 0.0 0.0 -es 09_hydro_pump 1 203 2030 0.0 0.0 -es 01_solar 1 204 2030 1.0 0.0 -es 02_wind_on 1 204 2030 1.0 0.0 -es 03_wind_off 1 204 2030 0.0 0.0 -es 04_res 1 204 2030 0.0 0.0 -es 05_nuclear 1 204 2030 0.0 0.0 -es 06_coal 1 204 2030 0.0 0.0 -es 07_gas 1 204 2030 0.0 0.0 -es 08_non-res 1 204 2030 0.0 0.0 -es 09_hydro_pump 1 204 2030 0.0 0.0 -es 01_solar 1 205 2030 1.0 0.0 -es 02_wind_on 1 205 2030 1.0 0.0 -es 03_wind_off 1 205 2030 0.0 0.0 -es 04_res 1 205 2030 0.0 0.0 -es 05_nuclear 1 205 2030 0.0 0.0 -es 06_coal 1 205 2030 0.0 0.0 -es 07_gas 1 205 2030 0.0 0.0 -es 08_non-res 1 205 2030 0.0 0.0 -es 09_hydro_pump 1 205 2030 0.0 0.0 -es 01_solar 1 206 2030 1.0 0.0 -es 02_wind_on 1 206 2030 1.0 0.0 -es 03_wind_off 1 206 2030 0.0 0.0 -es 04_res 1 206 2030 0.0 0.0 -es 05_nuclear 1 206 2030 0.0 0.0 -es 06_coal 1 206 2030 0.0 0.0 -es 07_gas 1 206 2030 0.0 0.0 -es 08_non-res 1 206 2030 0.0 0.0 -es 09_hydro_pump 1 206 2030 0.0 0.0 -es 01_solar 1 207 2030 1.0 0.0 -es 02_wind_on 1 207 2030 1.0 0.0 -es 03_wind_off 1 207 2030 0.0 0.0 -es 04_res 1 207 2030 0.0 0.0 -es 05_nuclear 1 207 2030 0.0 0.0 -es 06_coal 1 207 2030 0.0 0.0 -es 07_gas 1 207 2030 0.0 0.0 -es 08_non-res 1 207 2030 0.0 0.0 -es 09_hydro_pump 1 207 2030 0.0 0.0 -es 01_solar 1 208 2030 1.0 0.0 -es 02_wind_on 1 208 2030 1.0 0.0 -es 03_wind_off 1 208 2030 0.0 0.0 -es 04_res 1 208 2030 0.0 0.0 -es 05_nuclear 1 208 2030 0.0 0.0 -es 06_coal 1 208 2030 0.0 0.0 -es 07_gas 1 208 2030 0.0 0.0 -es 08_non-res 1 208 2030 0.0 0.0 -es 09_hydro_pump 1 208 2030 0.0 0.0 -es 01_solar 1 209 2030 1.0 0.0 -es 02_wind_on 1 209 2030 1.0 0.0 -es 03_wind_off 1 209 2030 0.0 0.0 -es 04_res 1 209 2030 0.0 0.0 -es 05_nuclear 1 209 2030 0.0 0.0 -es 06_coal 1 209 2030 0.0 0.0 -es 07_gas 1 209 2030 0.0 0.0 -es 08_non-res 1 209 2030 0.0 0.0 -es 09_hydro_pump 1 209 2030 0.0 0.0 -es 01_solar 1 210 2030 1.0 0.0 -es 02_wind_on 1 210 2030 1.0 0.0 -es 03_wind_off 1 210 2030 1.0 0.0 -es 04_res 1 210 2030 0.0 0.0 -es 05_nuclear 1 210 2030 0.0 0.0 -es 06_coal 1 210 2030 0.0 0.0 -es 07_gas 1 210 2030 0.0 0.0 -es 08_non-res 1 210 2030 0.0 0.0 -es 09_hydro_pump 1 210 2030 0.0 0.0 -es 01_solar 1 211 2030 1.0 0.0 -es 02_wind_on 1 211 2030 1.0 0.0 -es 03_wind_off 1 211 2030 1.0 0.0 -es 04_res 1 211 2030 0.0 0.0 -es 05_nuclear 1 211 2030 0.0 0.0 -es 06_coal 1 211 2030 0.0 0.0 -es 07_gas 1 211 2030 0.0 0.0 -es 08_non-res 1 211 2030 0.0 0.0 -es 09_hydro_pump 1 211 2030 0.0 0.0 -es 01_solar 1 212 2030 1.0 0.0 -es 02_wind_on 1 212 2030 1.0 0.0 -es 03_wind_off 1 212 2030 1.0 0.0 -es 04_res 1 212 2030 0.0 0.0 -es 05_nuclear 1 212 2030 0.0 0.0 -es 06_coal 1 212 2030 0.0 0.0 -es 07_gas 1 212 2030 0.0 0.0 -es 08_non-res 1 212 2030 0.0 0.0 -es 09_hydro_pump 1 212 2030 0.0 0.0 -es 01_solar 1 213 2030 1.0 0.0 -es 02_wind_on 1 213 2030 1.0 0.0 -es 03_wind_off 1 213 2030 1.0 0.0 -es 04_res 1 213 2030 0.0 0.0 -es 05_nuclear 1 213 2030 0.0 0.0 -es 06_coal 1 213 2030 0.0 0.0 -es 07_gas 1 213 2030 0.0 0.0 -es 08_non-res 1 213 2030 0.0 0.0 -es 09_hydro_pump 1 213 2030 0.0 0.0 -es 01_solar 1 214 2030 1.0 0.0 -es 02_wind_on 1 214 2030 1.0 0.0 -es 03_wind_off 1 214 2030 1.0 0.0 -es 04_res 1 214 2030 0.0 0.0 -es 05_nuclear 1 214 2030 0.0 0.0 -es 06_coal 1 214 2030 0.0 0.0 -es 07_gas 1 214 2030 0.0 0.0 -es 08_non-res 1 214 2030 0.0 0.0 -es 09_hydro_pump 1 214 2030 0.0 0.0 -es 01_solar 1 215 2030 1.0 0.0 -es 02_wind_on 1 215 2030 1.0 0.0 -es 03_wind_off 1 215 2030 1.0 0.0 -es 04_res 1 215 2030 0.0 0.0 -es 05_nuclear 1 215 2030 0.0 0.0 -es 06_coal 1 215 2030 0.0 0.0 -es 07_gas 1 215 2030 0.0 0.0 -es 08_non-res 1 215 2030 0.0 0.0 -es 09_hydro_pump 1 215 2030 0.0 0.0 -es 01_solar 1 216 2030 1.0 0.0 -es 02_wind_on 1 216 2030 1.0 0.0 -es 03_wind_off 1 216 2030 1.0 0.0 -es 04_res 1 216 2030 0.0 0.0 -es 05_nuclear 1 216 2030 0.0 0.0 -es 06_coal 1 216 2030 0.0 0.0 -es 07_gas 1 216 2030 0.0 0.0 -es 08_non-res 1 216 2030 0.0 0.0 -es 09_hydro_pump 1 216 2030 0.0 0.0 -es 01_solar 1 217 2030 1.0 0.0 -es 02_wind_on 1 217 2030 1.0 0.0 -es 03_wind_off 1 217 2030 1.0 0.0 -es 04_res 1 217 2030 0.0 0.0 -es 05_nuclear 1 217 2030 0.0 0.0 -es 06_coal 1 217 2030 0.0 0.0 -es 07_gas 1 217 2030 0.0 0.0 -es 08_non-res 1 217 2030 0.0 0.0 -es 09_hydro_pump 1 217 2030 0.0 0.0 -es 01_solar 1 218 2030 1.0 0.0 -es 02_wind_on 1 218 2030 1.0 0.0 -es 03_wind_off 1 218 2030 1.0 0.0 -es 04_res 1 218 2030 0.0 0.0 -es 05_nuclear 1 218 2030 0.0 0.0 -es 06_coal 1 218 2030 0.0 0.0 -es 07_gas 1 218 2030 0.0 0.0 -es 08_non-res 1 218 2030 0.0 0.0 -es 09_hydro_pump 1 218 2030 0.0 0.0 -es 01_solar 1 219 2030 1.0 0.0 -es 02_wind_on 1 219 2030 1.0 0.0 -es 03_wind_off 1 219 2030 1.0 0.0 -es 04_res 1 219 2030 0.0 0.0 -es 05_nuclear 1 219 2030 0.0 0.0 -es 06_coal 1 219 2030 0.0 0.0 -es 07_gas 1 219 2030 0.0 0.0 -es 08_non-res 1 219 2030 0.0 0.0 -es 09_hydro_pump 1 219 2030 0.0 0.0 -es 01_solar 1 220 2030 1.0 0.0 -es 02_wind_on 1 220 2030 1.0 0.0 -es 03_wind_off 1 220 2030 1.0 0.0 -es 04_res 1 220 2030 0.0 0.0 -es 05_nuclear 1 220 2030 0.0 0.0 -es 06_coal 1 220 2030 0.0 0.0 -es 07_gas 1 220 2030 0.0 0.0 -es 08_non-res 1 220 2030 0.0 0.0 -es 09_hydro_pump 1 220 2030 0.0 0.0 -es 01_solar 1 221 2030 1.0 0.0 -es 02_wind_on 1 221 2030 1.0 0.0 -es 03_wind_off 1 221 2030 1.0 0.0 -es 04_res 1 221 2030 0.0 0.0 -es 05_nuclear 1 221 2030 0.0 0.0 -es 06_coal 1 221 2030 0.0 0.0 -es 07_gas 1 221 2030 0.0 0.0 -es 08_non-res 1 221 2030 0.0 0.0 -es 09_hydro_pump 1 221 2030 0.0 0.0 -es 01_solar 1 222 2030 1.0 0.0 -es 02_wind_on 1 222 2030 1.0 0.0 -es 03_wind_off 1 222 2030 1.0 0.0 -es 04_res 1 222 2030 0.0 0.0 -es 05_nuclear 1 222 2030 0.0 0.0 -es 06_coal 1 222 2030 0.0 0.0 -es 07_gas 1 222 2030 0.0 0.0 -es 08_non-res 1 222 2030 0.0 0.0 -es 09_hydro_pump 1 222 2030 0.0 0.0 -es 01_solar 1 223 2030 1.0 0.0 -es 02_wind_on 1 223 2030 1.0 0.0 -es 03_wind_off 1 223 2030 1.0 0.0 -es 04_res 1 223 2030 0.0 0.0 -es 05_nuclear 1 223 2030 0.0 0.0 -es 06_coal 1 223 2030 0.0 0.0 -es 07_gas 1 223 2030 0.0 0.0 -es 08_non-res 1 223 2030 0.0 0.0 -es 09_hydro_pump 1 223 2030 0.0 0.0 -es 01_solar 1 224 2030 1.0 0.0 -es 02_wind_on 1 224 2030 1.0 0.0 -es 03_wind_off 1 224 2030 1.0 0.0 -es 04_res 1 224 2030 0.0 0.0 -es 05_nuclear 1 224 2030 0.0 0.0 -es 06_coal 1 224 2030 0.0 0.0 -es 07_gas 1 224 2030 0.0 0.0 -es 08_non-res 1 224 2030 0.0 0.0 -es 09_hydro_pump 1 224 2030 0.0 0.0 -es 01_solar 1 225 2030 1.0 0.0 -es 02_wind_on 1 225 2030 1.0 0.0 -es 03_wind_off 1 225 2030 1.0 0.0 -es 04_res 1 225 2030 0.0 0.0 -es 05_nuclear 1 225 2030 0.0 0.0 -es 06_coal 1 225 2030 0.0 0.0 -es 07_gas 1 225 2030 0.0 0.0 -es 08_non-res 1 225 2030 0.0 0.0 -es 09_hydro_pump 1 225 2030 0.0 0.0 -es 01_solar 1 226 2030 1.0 0.0 -es 02_wind_on 1 226 2030 1.0 0.0 -es 03_wind_off 1 226 2030 1.0 0.0 -es 04_res 1 226 2030 0.0 0.0 -es 05_nuclear 1 226 2030 0.0 0.0 -es 06_coal 1 226 2030 0.0 0.0 -es 07_gas 1 226 2030 0.0 0.0 -es 08_non-res 1 226 2030 0.0 0.0 -es 09_hydro_pump 1 226 2030 0.0 0.0 -es 01_solar 1 227 2030 1.0 0.0 -es 02_wind_on 1 227 2030 1.0 0.0 -es 03_wind_off 1 227 2030 1.0 0.0 -es 04_res 1 227 2030 0.0 0.0 -es 05_nuclear 1 227 2030 0.0 0.0 -es 06_coal 1 227 2030 0.0 0.0 -es 07_gas 1 227 2030 0.0 0.0 -es 08_non-res 1 227 2030 0.0 0.0 -es 09_hydro_pump 1 227 2030 0.0 0.0 -es 01_solar 1 228 2030 1.0 0.0 -es 02_wind_on 1 228 2030 1.0 0.0 -es 03_wind_off 1 228 2030 1.0 0.0 -es 04_res 1 228 2030 0.0 0.0 -es 05_nuclear 1 228 2030 0.0 0.0 -es 06_coal 1 228 2030 0.0 0.0 -es 07_gas 1 228 2030 0.0 0.0 -es 08_non-res 1 228 2030 0.0 0.0 -es 09_hydro_pump 1 228 2030 0.0 0.0 -es 01_solar 1 229 2030 1.0 0.0 -es 02_wind_on 1 229 2030 1.0 0.0 -es 03_wind_off 1 229 2030 1.0 0.0 -es 04_res 1 229 2030 0.0 0.0 -es 05_nuclear 1 229 2030 0.0 0.0 -es 06_coal 1 229 2030 0.0 0.0 -es 07_gas 1 229 2030 0.0 0.0 -es 08_non-res 1 229 2030 0.0 0.0 -es 09_hydro_pump 1 229 2030 0.0 0.0 -es 01_solar 1 230 2030 1.0 0.0 -es 02_wind_on 1 230 2030 1.0 0.0 -es 03_wind_off 1 230 2030 1.0 0.0 -es 04_res 1 230 2030 1.0 0.0 -es 05_nuclear 1 230 2030 0.0 0.0 -es 06_coal 1 230 2030 0.0 0.0 -es 07_gas 1 230 2030 0.0 0.0 -es 08_non-res 1 230 2030 0.0 0.0 -es 09_hydro_pump 1 230 2030 0.0 0.0 -es 01_solar 1 231 2030 1.0 0.0 -es 02_wind_on 1 231 2030 1.0 0.0 -es 03_wind_off 1 231 2030 1.0 0.0 -es 04_res 1 231 2030 1.0 0.0 -es 05_nuclear 1 231 2030 0.0 0.0 -es 06_coal 1 231 2030 0.0 0.0 -es 07_gas 1 231 2030 0.0 0.0 -es 08_non-res 1 231 2030 0.0 0.0 -es 09_hydro_pump 1 231 2030 0.0 0.0 -es 01_solar 1 232 2030 1.0 0.0 -es 02_wind_on 1 232 2030 1.0 0.0 -es 03_wind_off 1 232 2030 1.0 0.0 -es 04_res 1 232 2030 1.0 0.0 -es 05_nuclear 1 232 2030 0.0 0.0 -es 06_coal 1 232 2030 0.0 0.0 -es 07_gas 1 232 2030 0.0 0.0 -es 08_non-res 1 232 2030 0.0 0.0 -es 09_hydro_pump 1 232 2030 0.0 0.0 -es 01_solar 1 233 2030 1.0 0.0 -es 02_wind_on 1 233 2030 1.0 0.0 -es 03_wind_off 1 233 2030 1.0 0.0 -es 04_res 1 233 2030 1.0 0.0 -es 05_nuclear 1 233 2030 0.0 0.0 -es 06_coal 1 233 2030 0.0 0.0 -es 07_gas 1 233 2030 0.0 0.0 -es 08_non-res 1 233 2030 0.0 0.0 -es 09_hydro_pump 1 233 2030 0.0 0.0 -es 01_solar 1 234 2030 1.0 0.0 -es 02_wind_on 1 234 2030 1.0 0.0 -es 03_wind_off 1 234 2030 1.0 0.0 -es 04_res 1 234 2030 1.0 0.0 -es 05_nuclear 1 234 2030 0.0 0.0 -es 06_coal 1 234 2030 0.0 0.0 -es 07_gas 1 234 2030 0.0 0.0 -es 08_non-res 1 234 2030 0.0 0.0 -es 09_hydro_pump 1 234 2030 0.0 0.0 -es 01_solar 1 235 2030 1.0 0.0 -es 02_wind_on 1 235 2030 1.0 0.0 -es 03_wind_off 1 235 2030 1.0 0.0 -es 04_res 1 235 2030 1.0 0.0 -es 05_nuclear 1 235 2030 0.0 0.0 -es 06_coal 1 235 2030 0.0 0.0 -es 07_gas 1 235 2030 0.0 0.0 -es 08_non-res 1 235 2030 0.0 0.0 -es 09_hydro_pump 1 235 2030 0.0 0.0 -es 01_solar 1 236 2030 1.0 0.0 -es 02_wind_on 1 236 2030 1.0 0.0 -es 03_wind_off 1 236 2030 1.0 0.0 -es 04_res 1 236 2030 1.0 0.0 -es 05_nuclear 1 236 2030 0.0 0.0 -es 06_coal 1 236 2030 0.0 0.0 -es 07_gas 1 236 2030 0.0 0.0 -es 08_non-res 1 236 2030 0.0 0.0 -es 09_hydro_pump 1 236 2030 0.0 0.0 -es 01_solar 1 237 2030 1.0 0.0 -es 02_wind_on 1 237 2030 1.0 0.0 -es 03_wind_off 1 237 2030 1.0 0.0 -es 04_res 1 237 2030 1.0 0.0 -es 05_nuclear 1 237 2030 0.0 0.0 -es 06_coal 1 237 2030 0.0 0.0 -es 07_gas 1 237 2030 0.0 0.0 -es 08_non-res 1 237 2030 0.0 0.0 -es 09_hydro_pump 1 237 2030 0.0 0.0 -es 01_solar 1 238 2030 1.0 0.0 -es 02_wind_on 1 238 2030 1.0 0.0 -es 03_wind_off 1 238 2030 1.0 0.0 -es 04_res 1 238 2030 1.0 0.0 -es 05_nuclear 1 238 2030 0.0 0.0 -es 06_coal 1 238 2030 0.0 0.0 -es 07_gas 1 238 2030 0.0 0.0 -es 08_non-res 1 238 2030 0.0 0.0 -es 09_hydro_pump 1 238 2030 0.0 0.0 -es 01_solar 1 239 2030 1.0 0.0 -es 02_wind_on 1 239 2030 1.0 0.0 -es 03_wind_off 1 239 2030 1.0 0.0 -es 04_res 1 239 2030 1.0 0.0 -es 05_nuclear 1 239 2030 0.0 0.0 -es 06_coal 1 239 2030 0.0 0.0 -es 07_gas 1 239 2030 0.0 0.0 -es 08_non-res 1 239 2030 0.0 0.0 -es 09_hydro_pump 1 239 2030 0.0 0.0 -es 01_solar 1 240 2030 1.0 0.0 -es 02_wind_on 1 240 2030 1.0 0.0 -es 03_wind_off 1 240 2030 1.0 0.0 -es 04_res 1 240 2030 1.0 0.0 -es 05_nuclear 1 240 2030 0.0 0.0 -es 06_coal 1 240 2030 0.0 0.0 -es 07_gas 1 240 2030 0.0 0.0 -es 08_non-res 1 240 2030 0.0 0.0 -es 09_hydro_pump 1 240 2030 0.0 0.0 -es 01_solar 1 241 2030 1.0 0.0 -es 02_wind_on 1 241 2030 1.0 0.0 -es 03_wind_off 1 241 2030 1.0 0.0 -es 04_res 1 241 2030 1.0 0.0 -es 05_nuclear 1 241 2030 0.0 0.0 -es 06_coal 1 241 2030 0.0 0.0 -es 07_gas 1 241 2030 0.0 0.0 -es 08_non-res 1 241 2030 0.0 0.0 -es 09_hydro_pump 1 241 2030 0.0 0.0 -es 01_solar 1 242 2030 1.0 0.0 -es 02_wind_on 1 242 2030 1.0 0.0 -es 03_wind_off 1 242 2030 1.0 0.0 -es 04_res 1 242 2030 1.0 0.0 -es 05_nuclear 1 242 2030 0.0 0.0 -es 06_coal 1 242 2030 0.0 0.0 -es 07_gas 1 242 2030 0.0 0.0 -es 08_non-res 1 242 2030 0.0 0.0 -es 09_hydro_pump 1 242 2030 0.0 0.0 -es 01_solar 1 243 2030 1.0 0.0 -es 02_wind_on 1 243 2030 1.0 0.0 -es 03_wind_off 1 243 2030 1.0 0.0 -es 04_res 1 243 2030 1.0 0.0 -es 05_nuclear 1 243 2030 0.0 0.0 -es 06_coal 1 243 2030 0.0 0.0 -es 07_gas 1 243 2030 0.0 0.0 -es 08_non-res 1 243 2030 0.0 0.0 -es 09_hydro_pump 1 243 2030 0.0 0.0 -es 01_solar 1 244 2030 1.0 0.0 -es 02_wind_on 1 244 2030 1.0 0.0 -es 03_wind_off 1 244 2030 1.0 0.0 -es 04_res 1 244 2030 1.0 0.0 -es 05_nuclear 1 244 2030 0.0 0.0 -es 06_coal 1 244 2030 0.0 0.0 -es 07_gas 1 244 2030 0.0 0.0 -es 08_non-res 1 244 2030 0.0 0.0 -es 09_hydro_pump 1 244 2030 0.0 0.0 -es 01_solar 1 245 2030 1.0 0.0 -es 02_wind_on 1 245 2030 1.0 0.0 -es 03_wind_off 1 245 2030 1.0 0.0 -es 04_res 1 245 2030 1.0 0.0 -es 05_nuclear 1 245 2030 0.0 0.0 -es 06_coal 1 245 2030 0.0 0.0 -es 07_gas 1 245 2030 0.0 0.0 -es 08_non-res 1 245 2030 0.0 0.0 -es 09_hydro_pump 1 245 2030 0.0 0.0 -es 01_solar 1 246 2030 1.0 0.0 -es 02_wind_on 1 246 2030 1.0 0.0 -es 03_wind_off 1 246 2030 1.0 0.0 -es 04_res 1 246 2030 1.0 0.0 -es 05_nuclear 1 246 2030 0.0 0.0 -es 06_coal 1 246 2030 0.0 0.0 -es 07_gas 1 246 2030 0.0 0.0 -es 08_non-res 1 246 2030 0.0 0.0 -es 09_hydro_pump 1 246 2030 0.0 0.0 -es 01_solar 1 247 2030 1.0 0.0 -es 02_wind_on 1 247 2030 1.0 0.0 -es 03_wind_off 1 247 2030 1.0 0.0 -es 04_res 1 247 2030 1.0 0.0 -es 05_nuclear 1 247 2030 0.0 0.0 -es 06_coal 1 247 2030 0.0 0.0 -es 07_gas 1 247 2030 0.0 0.0 -es 08_non-res 1 247 2030 0.0 0.0 -es 09_hydro_pump 1 247 2030 0.0 0.0 -es 01_solar 1 248 2030 1.0 0.0 -es 02_wind_on 1 248 2030 1.0 0.0 -es 03_wind_off 1 248 2030 1.0 0.0 -es 04_res 1 248 2030 1.0 0.0 -es 05_nuclear 1 248 2030 0.0 0.0 -es 06_coal 1 248 2030 0.0 0.0 -es 07_gas 1 248 2030 0.0 0.0 -es 08_non-res 1 248 2030 0.0 0.0 -es 09_hydro_pump 1 248 2030 0.0 0.0 -es 01_solar 1 249 2030 1.0 0.0 -es 02_wind_on 1 249 2030 1.0 0.0 -es 03_wind_off 1 249 2030 1.0 0.0 -es 04_res 1 249 2030 1.0 0.0 -es 05_nuclear 1 249 2030 0.0 0.0 -es 06_coal 1 249 2030 0.0 0.0 -es 07_gas 1 249 2030 0.0 0.0 -es 08_non-res 1 249 2030 0.0 0.0 -es 09_hydro_pump 1 249 2030 0.0 0.0 -es 01_solar 1 250 2030 1.0 0.0 -es 02_wind_on 1 250 2030 1.0 0.0 -es 03_wind_off 1 250 2030 1.0 0.0 -es 04_res 1 250 2030 1.0 0.0 -es 05_nuclear 1 250 2030 1.0 0.0 -es 06_coal 1 250 2030 0.0 0.0 -es 07_gas 1 250 2030 0.0 0.0 -es 08_non-res 1 250 2030 0.0 0.0 -es 09_hydro_pump 1 250 2030 0.0 0.0 -es 01_solar 1 251 2030 1.0 0.0 -es 02_wind_on 1 251 2030 1.0 0.0 -es 03_wind_off 1 251 2030 1.0 0.0 -es 04_res 1 251 2030 1.0 0.0 -es 05_nuclear 1 251 2030 1.0 0.0 -es 06_coal 1 251 2030 0.0 0.0 -es 07_gas 1 251 2030 0.0 0.0 -es 08_non-res 1 251 2030 0.0 0.0 -es 09_hydro_pump 1 251 2030 0.0 0.0 -es 01_solar 1 252 2030 1.0 0.0 -es 02_wind_on 1 252 2030 1.0 0.0 -es 03_wind_off 1 252 2030 1.0 0.0 -es 04_res 1 252 2030 1.0 0.0 -es 05_nuclear 1 252 2030 1.0 0.0 -es 06_coal 1 252 2030 0.0 0.0 -es 07_gas 1 252 2030 0.0 0.0 -es 08_non-res 1 252 2030 0.0 0.0 -es 09_hydro_pump 1 252 2030 0.0 0.0 -es 01_solar 1 253 2030 1.0 0.0 -es 02_wind_on 1 253 2030 1.0 0.0 -es 03_wind_off 1 253 2030 1.0 0.0 -es 04_res 1 253 2030 1.0 0.0 -es 05_nuclear 1 253 2030 1.0 0.0 -es 06_coal 1 253 2030 0.0 0.0 -es 07_gas 1 253 2030 0.0 0.0 -es 08_non-res 1 253 2030 0.0 0.0 -es 09_hydro_pump 1 253 2030 0.0 0.0 -es 01_solar 1 254 2030 1.0 0.0 -es 02_wind_on 1 254 2030 1.0 0.0 -es 03_wind_off 1 254 2030 1.0 0.0 -es 04_res 1 254 2030 1.0 0.0 -es 05_nuclear 1 254 2030 1.0 0.0 -es 06_coal 1 254 2030 0.0 0.0 -es 07_gas 1 254 2030 0.0 0.0 -es 08_non-res 1 254 2030 0.0 0.0 -es 09_hydro_pump 1 254 2030 0.0 0.0 -es 01_solar 1 255 2030 1.0 0.0 -es 02_wind_on 1 255 2030 1.0 0.0 -es 03_wind_off 1 255 2030 1.0 0.0 -es 04_res 1 255 2030 1.0 0.0 -es 05_nuclear 1 255 2030 1.0 0.0 -es 06_coal 1 255 2030 0.0 0.0 -es 07_gas 1 255 2030 0.0 0.0 -es 08_non-res 1 255 2030 0.0 0.0 -es 09_hydro_pump 1 255 2030 0.0 0.0 -es 01_solar 1 256 2030 1.0 0.0 -es 02_wind_on 1 256 2030 1.0 0.0 -es 03_wind_off 1 256 2030 1.0 0.0 -es 04_res 1 256 2030 1.0 0.0 -es 05_nuclear 1 256 2030 1.0 0.0 -es 06_coal 1 256 2030 0.0 0.0 -es 07_gas 1 256 2030 0.0 0.0 -es 08_non-res 1 256 2030 0.0 0.0 -es 09_hydro_pump 1 256 2030 0.0 0.0 -es 01_solar 1 257 2030 1.0 0.0 -es 02_wind_on 1 257 2030 1.0 0.0 -es 03_wind_off 1 257 2030 1.0 0.0 -es 04_res 1 257 2030 1.0 0.0 -es 05_nuclear 1 257 2030 1.0 0.0 -es 06_coal 1 257 2030 0.0 0.0 -es 07_gas 1 257 2030 0.0 0.0 -es 08_non-res 1 257 2030 0.0 0.0 -es 09_hydro_pump 1 257 2030 0.0 0.0 -es 01_solar 1 258 2030 1.0 0.0 -es 02_wind_on 1 258 2030 1.0 0.0 -es 03_wind_off 1 258 2030 1.0 0.0 -es 04_res 1 258 2030 1.0 0.0 -es 05_nuclear 1 258 2030 1.0 0.0 -es 06_coal 1 258 2030 0.0 0.0 -es 07_gas 1 258 2030 0.0 0.0 -es 08_non-res 1 258 2030 0.0 0.0 -es 09_hydro_pump 1 258 2030 0.0 0.0 -es 01_solar 1 259 2030 1.0 0.0 -es 02_wind_on 1 259 2030 1.0 0.0 -es 03_wind_off 1 259 2030 1.0 0.0 -es 04_res 1 259 2030 1.0 0.0 -es 05_nuclear 1 259 2030 1.0 0.0 -es 06_coal 1 259 2030 0.0 0.0 -es 07_gas 1 259 2030 0.0 0.0 -es 08_non-res 1 259 2030 0.0 0.0 -es 09_hydro_pump 1 259 2030 0.0 0.0 -es 01_solar 1 260 2030 1.0 0.0 -es 02_wind_on 1 260 2030 1.0 0.0 -es 03_wind_off 1 260 2030 1.0 0.0 -es 04_res 1 260 2030 1.0 0.0 -es 05_nuclear 1 260 2030 1.0 0.0 -es 06_coal 1 260 2030 0.0 0.0 -es 07_gas 1 260 2030 0.0 0.0 -es 08_non-res 1 260 2030 0.0 0.0 -es 09_hydro_pump 1 260 2030 0.0 0.0 -es 01_solar 1 261 2030 1.0 0.0 -es 02_wind_on 1 261 2030 1.0 0.0 -es 03_wind_off 1 261 2030 1.0 0.0 -es 04_res 1 261 2030 1.0 0.0 -es 05_nuclear 1 261 2030 1.0 0.0 -es 06_coal 1 261 2030 0.0 0.0 -es 07_gas 1 261 2030 0.0 0.0 -es 08_non-res 1 261 2030 0.0 0.0 -es 09_hydro_pump 1 261 2030 0.0 0.0 -es 01_solar 1 262 2030 1.0 0.0 -es 02_wind_on 1 262 2030 1.0 0.0 -es 03_wind_off 1 262 2030 1.0 0.0 -es 04_res 1 262 2030 1.0 0.0 -es 05_nuclear 1 262 2030 1.0 0.0 -es 06_coal 1 262 2030 0.0 0.0 -es 07_gas 1 262 2030 0.0 0.0 -es 08_non-res 1 262 2030 0.0 0.0 -es 09_hydro_pump 1 262 2030 0.0 0.0 -es 01_solar 1 263 2030 1.0 0.0 -es 02_wind_on 1 263 2030 1.0 0.0 -es 03_wind_off 1 263 2030 1.0 0.0 -es 04_res 1 263 2030 1.0 0.0 -es 05_nuclear 1 263 2030 1.0 0.0 -es 06_coal 1 263 2030 0.0 0.0 -es 07_gas 1 263 2030 0.0 0.0 -es 08_non-res 1 263 2030 0.0 0.0 -es 09_hydro_pump 1 263 2030 0.0 0.0 -es 01_solar 1 264 2030 1.0 0.0 -es 02_wind_on 1 264 2030 1.0 0.0 -es 03_wind_off 1 264 2030 1.0 0.0 -es 04_res 1 264 2030 1.0 0.0 -es 05_nuclear 1 264 2030 1.0 0.0 -es 06_coal 1 264 2030 0.0 0.0 -es 07_gas 1 264 2030 0.0 0.0 -es 08_non-res 1 264 2030 0.0 0.0 -es 09_hydro_pump 1 264 2030 0.0 0.0 -es 01_solar 1 265 2030 1.0 0.0 -es 02_wind_on 1 265 2030 1.0 0.0 -es 03_wind_off 1 265 2030 1.0 0.0 -es 04_res 1 265 2030 1.0 0.0 -es 05_nuclear 1 265 2030 1.0 0.0 -es 06_coal 1 265 2030 0.0 0.0 -es 07_gas 1 265 2030 0.0 0.0 -es 08_non-res 1 265 2030 0.0 0.0 -es 09_hydro_pump 1 265 2030 0.0 0.0 -es 01_solar 1 266 2030 1.0 0.0 -es 02_wind_on 1 266 2030 1.0 0.0 -es 03_wind_off 1 266 2030 1.0 0.0 -es 04_res 1 266 2030 1.0 0.0 -es 05_nuclear 1 266 2030 1.0 0.0 -es 06_coal 1 266 2030 0.0 0.0 -es 07_gas 1 266 2030 0.0 0.0 -es 08_non-res 1 266 2030 0.0 0.0 -es 09_hydro_pump 1 266 2030 0.0 0.0 -es 01_solar 1 267 2030 1.0 0.0 -es 02_wind_on 1 267 2030 1.0 0.0 -es 03_wind_off 1 267 2030 1.0 0.0 -es 04_res 1 267 2030 1.0 0.0 -es 05_nuclear 1 267 2030 1.0 0.0 -es 06_coal 1 267 2030 0.0 0.0 -es 07_gas 1 267 2030 0.0 0.0 -es 08_non-res 1 267 2030 0.0 0.0 -es 09_hydro_pump 1 267 2030 0.0 0.0 -es 01_solar 1 268 2030 1.0 0.0 -es 02_wind_on 1 268 2030 1.0 0.0 -es 03_wind_off 1 268 2030 1.0 0.0 -es 04_res 1 268 2030 1.0 0.0 -es 05_nuclear 1 268 2030 1.0 0.0 -es 06_coal 1 268 2030 0.0 0.0 -es 07_gas 1 268 2030 0.0 0.0 -es 08_non-res 1 268 2030 0.0 0.0 -es 09_hydro_pump 1 268 2030 0.0 0.0 -es 01_solar 1 269 2030 1.0 0.0 -es 02_wind_on 1 269 2030 1.0 0.0 -es 03_wind_off 1 269 2030 1.0 0.0 -es 04_res 1 269 2030 1.0 0.0 -es 05_nuclear 1 269 2030 1.0 0.0 -es 06_coal 1 269 2030 0.0 0.0 -es 07_gas 1 269 2030 0.0 0.0 -es 08_non-res 1 269 2030 0.0 0.0 -es 09_hydro_pump 1 269 2030 0.0 0.0 -es 01_solar 1 270 2030 1.0 0.0 -es 02_wind_on 1 270 2030 1.0 0.0 -es 03_wind_off 1 270 2030 1.0 0.0 -es 04_res 1 270 2030 1.0 0.0 -es 05_nuclear 1 270 2030 1.0 0.0 -es 06_coal 1 270 2030 1.0 0.0 -es 07_gas 1 270 2030 0.0 0.0 -es 08_non-res 1 270 2030 0.0 0.0 -es 09_hydro_pump 1 270 2030 0.0 0.0 -es 01_solar 1 271 2030 1.0 0.0 -es 02_wind_on 1 271 2030 1.0 0.0 -es 03_wind_off 1 271 2030 1.0 0.0 -es 04_res 1 271 2030 1.0 0.0 -es 05_nuclear 1 271 2030 1.0 0.0 -es 06_coal 1 271 2030 1.0 0.0 -es 07_gas 1 271 2030 0.0 0.0 -es 08_non-res 1 271 2030 0.0 0.0 -es 09_hydro_pump 1 271 2030 0.0 0.0 -es 01_solar 1 272 2030 1.0 0.0 -es 02_wind_on 1 272 2030 1.0 0.0 -es 03_wind_off 1 272 2030 1.0 0.0 -es 04_res 1 272 2030 1.0 0.0 -es 05_nuclear 1 272 2030 1.0 0.0 -es 06_coal 1 272 2030 1.0 0.0 -es 07_gas 1 272 2030 0.0 0.0 -es 08_non-res 1 272 2030 0.0 0.0 -es 09_hydro_pump 1 272 2030 0.0 0.0 -es 01_solar 1 273 2030 1.0 0.0 -es 02_wind_on 1 273 2030 1.0 0.0 -es 03_wind_off 1 273 2030 1.0 0.0 -es 04_res 1 273 2030 1.0 0.0 -es 05_nuclear 1 273 2030 1.0 0.0 -es 06_coal 1 273 2030 1.0 0.0 -es 07_gas 1 273 2030 0.0 0.0 -es 08_non-res 1 273 2030 0.0 0.0 -es 09_hydro_pump 1 273 2030 0.0 0.0 -es 01_solar 1 274 2030 1.0 0.0 -es 02_wind_on 1 274 2030 1.0 0.0 -es 03_wind_off 1 274 2030 1.0 0.0 -es 04_res 1 274 2030 1.0 0.0 -es 05_nuclear 1 274 2030 1.0 0.0 -es 06_coal 1 274 2030 1.0 0.0 -es 07_gas 1 274 2030 0.0 0.0 -es 08_non-res 1 274 2030 0.0 0.0 -es 09_hydro_pump 1 274 2030 0.0 0.0 -es 01_solar 1 275 2030 1.0 0.0 -es 02_wind_on 1 275 2030 1.0 0.0 -es 03_wind_off 1 275 2030 1.0 0.0 -es 04_res 1 275 2030 1.0 0.0 -es 05_nuclear 1 275 2030 1.0 0.0 -es 06_coal 1 275 2030 1.0 0.0 -es 07_gas 1 275 2030 0.0 0.0 -es 08_non-res 1 275 2030 0.0 0.0 -es 09_hydro_pump 1 275 2030 0.0 0.0 -es 01_solar 1 276 2030 1.0 0.0 -es 02_wind_on 1 276 2030 1.0 0.0 -es 03_wind_off 1 276 2030 1.0 0.0 -es 04_res 1 276 2030 1.0 0.0 -es 05_nuclear 1 276 2030 1.0 0.0 -es 06_coal 1 276 2030 1.0 0.0 -es 07_gas 1 276 2030 0.0 0.0 -es 08_non-res 1 276 2030 0.0 0.0 -es 09_hydro_pump 1 276 2030 0.0 0.0 -es 01_solar 1 277 2030 1.0 0.0 -es 02_wind_on 1 277 2030 1.0 0.0 -es 03_wind_off 1 277 2030 1.0 0.0 -es 04_res 1 277 2030 1.0 0.0 -es 05_nuclear 1 277 2030 1.0 0.0 -es 06_coal 1 277 2030 1.0 0.0 -es 07_gas 1 277 2030 0.0 0.0 -es 08_non-res 1 277 2030 0.0 0.0 -es 09_hydro_pump 1 277 2030 0.0 0.0 -es 01_solar 1 278 2030 1.0 0.0 -es 02_wind_on 1 278 2030 1.0 0.0 -es 03_wind_off 1 278 2030 1.0 0.0 -es 04_res 1 278 2030 1.0 0.0 -es 05_nuclear 1 278 2030 1.0 0.0 -es 06_coal 1 278 2030 1.0 0.0 -es 07_gas 1 278 2030 0.0 0.0 -es 08_non-res 1 278 2030 0.0 0.0 -es 09_hydro_pump 1 278 2030 0.0 0.0 -es 01_solar 1 279 2030 1.0 0.0 -es 02_wind_on 1 279 2030 1.0 0.0 -es 03_wind_off 1 279 2030 1.0 0.0 -es 04_res 1 279 2030 1.0 0.0 -es 05_nuclear 1 279 2030 1.0 0.0 -es 06_coal 1 279 2030 1.0 0.0 -es 07_gas 1 279 2030 0.0 0.0 -es 08_non-res 1 279 2030 0.0 0.0 -es 09_hydro_pump 1 279 2030 0.0 0.0 -es 01_solar 1 280 2030 1.0 0.0 -es 02_wind_on 1 280 2030 1.0 0.0 -es 03_wind_off 1 280 2030 1.0 0.0 -es 04_res 1 280 2030 1.0 0.0 -es 05_nuclear 1 280 2030 1.0 0.0 -es 06_coal 1 280 2030 1.0 0.0 -es 07_gas 1 280 2030 0.0 0.0 -es 08_non-res 1 280 2030 0.0 0.0 -es 09_hydro_pump 1 280 2030 0.0 0.0 -es 01_solar 1 281 2030 1.0 0.0 -es 02_wind_on 1 281 2030 1.0 0.0 -es 03_wind_off 1 281 2030 1.0 0.0 -es 04_res 1 281 2030 1.0 0.0 -es 05_nuclear 1 281 2030 1.0 0.0 -es 06_coal 1 281 2030 1.0 0.0 -es 07_gas 1 281 2030 0.0 0.0 -es 08_non-res 1 281 2030 0.0 0.0 -es 09_hydro_pump 1 281 2030 0.0 0.0 -es 01_solar 1 282 2030 1.0 0.0 -es 02_wind_on 1 282 2030 1.0 0.0 -es 03_wind_off 1 282 2030 1.0 0.0 -es 04_res 1 282 2030 1.0 0.0 -es 05_nuclear 1 282 2030 1.0 0.0 -es 06_coal 1 282 2030 1.0 0.0 -es 07_gas 1 282 2030 0.0 0.0 -es 08_non-res 1 282 2030 0.0 0.0 -es 09_hydro_pump 1 282 2030 0.0 0.0 -es 01_solar 1 283 2030 1.0 0.0 -es 02_wind_on 1 283 2030 1.0 0.0 -es 03_wind_off 1 283 2030 1.0 0.0 -es 04_res 1 283 2030 1.0 0.0 -es 05_nuclear 1 283 2030 1.0 0.0 -es 06_coal 1 283 2030 1.0 0.0 -es 07_gas 1 283 2030 0.0 0.0 -es 08_non-res 1 283 2030 0.0 0.0 -es 09_hydro_pump 1 283 2030 0.0 0.0 -es 01_solar 1 284 2030 1.0 0.0 -es 02_wind_on 1 284 2030 1.0 0.0 -es 03_wind_off 1 284 2030 1.0 0.0 -es 04_res 1 284 2030 1.0 0.0 -es 05_nuclear 1 284 2030 1.0 0.0 -es 06_coal 1 284 2030 1.0 0.0 -es 07_gas 1 284 2030 0.0 0.0 -es 08_non-res 1 284 2030 0.0 0.0 -es 09_hydro_pump 1 284 2030 0.0 0.0 -es 01_solar 1 285 2030 1.0 0.0 -es 02_wind_on 1 285 2030 1.0 0.0 -es 03_wind_off 1 285 2030 1.0 0.0 -es 04_res 1 285 2030 1.0 0.0 -es 05_nuclear 1 285 2030 1.0 0.0 -es 06_coal 1 285 2030 1.0 0.0 -es 07_gas 1 285 2030 0.0 0.0 -es 08_non-res 1 285 2030 0.0 0.0 -es 09_hydro_pump 1 285 2030 0.0 0.0 -es 01_solar 1 286 2030 1.0 0.0 -es 02_wind_on 1 286 2030 1.0 0.0 -es 03_wind_off 1 286 2030 1.0 0.0 -es 04_res 1 286 2030 1.0 0.0 -es 05_nuclear 1 286 2030 1.0 0.0 -es 06_coal 1 286 2030 1.0 0.0 -es 07_gas 1 286 2030 0.0 0.0 -es 08_non-res 1 286 2030 0.0 0.0 -es 09_hydro_pump 1 286 2030 0.0 0.0 -es 01_solar 1 287 2030 1.0 0.0 -es 02_wind_on 1 287 2030 1.0 0.0 -es 03_wind_off 1 287 2030 1.0 0.0 -es 04_res 1 287 2030 1.0 0.0 -es 05_nuclear 1 287 2030 1.0 0.0 -es 06_coal 1 287 2030 1.0 0.0 -es 07_gas 1 287 2030 0.0 0.0 -es 08_non-res 1 287 2030 0.0 0.0 -es 09_hydro_pump 1 287 2030 0.0 0.0 -es 01_solar 1 288 2030 1.0 0.0 -es 02_wind_on 1 288 2030 1.0 0.0 -es 03_wind_off 1 288 2030 1.0 0.0 -es 04_res 1 288 2030 1.0 0.0 -es 05_nuclear 1 288 2030 1.0 0.0 -es 06_coal 1 288 2030 1.0 0.0 -es 07_gas 1 288 2030 0.0 0.0 -es 08_non-res 1 288 2030 0.0 0.0 -es 09_hydro_pump 1 288 2030 0.0 0.0 -es 01_solar 1 289 2030 1.0 0.0 -es 02_wind_on 1 289 2030 1.0 0.0 -es 03_wind_off 1 289 2030 1.0 0.0 -es 04_res 1 289 2030 1.0 0.0 -es 05_nuclear 1 289 2030 1.0 0.0 -es 06_coal 1 289 2030 1.0 0.0 -es 07_gas 1 289 2030 0.0 0.0 -es 08_non-res 1 289 2030 0.0 0.0 -es 09_hydro_pump 1 289 2030 0.0 0.0 -es 01_solar 1 290 2030 1.0 0.0 -es 02_wind_on 1 290 2030 1.0 0.0 -es 03_wind_off 1 290 2030 1.0 0.0 -es 04_res 1 290 2030 1.0 0.0 -es 05_nuclear 1 290 2030 1.0 0.0 -es 06_coal 1 290 2030 1.0 0.0 -es 07_gas 1 290 2030 1.0 0.0 -es 08_non-res 1 290 2030 0.0 0.0 -es 09_hydro_pump 1 290 2030 0.0 0.0 -es 01_solar 1 291 2030 1.0 0.0 -es 02_wind_on 1 291 2030 1.0 0.0 -es 03_wind_off 1 291 2030 1.0 0.0 -es 04_res 1 291 2030 1.0 0.0 -es 05_nuclear 1 291 2030 1.0 0.0 -es 06_coal 1 291 2030 1.0 0.0 -es 07_gas 1 291 2030 1.0 0.0 -es 08_non-res 1 291 2030 0.0 0.0 -es 09_hydro_pump 1 291 2030 0.0 0.0 -es 01_solar 1 292 2030 1.0 0.0 -es 02_wind_on 1 292 2030 1.0 0.0 -es 03_wind_off 1 292 2030 1.0 0.0 -es 04_res 1 292 2030 1.0 0.0 -es 05_nuclear 1 292 2030 1.0 0.0 -es 06_coal 1 292 2030 1.0 0.0 -es 07_gas 1 292 2030 1.0 0.0 -es 08_non-res 1 292 2030 0.0 0.0 -es 09_hydro_pump 1 292 2030 0.0 0.0 -es 01_solar 1 293 2030 1.0 0.0 -es 02_wind_on 1 293 2030 1.0 0.0 -es 03_wind_off 1 293 2030 1.0 0.0 -es 04_res 1 293 2030 1.0 0.0 -es 05_nuclear 1 293 2030 1.0 0.0 -es 06_coal 1 293 2030 1.0 0.0 -es 07_gas 1 293 2030 1.0 0.0 -es 08_non-res 1 293 2030 0.0 0.0 -es 09_hydro_pump 1 293 2030 0.0 0.0 -es 01_solar 1 294 2030 1.0 0.0 -es 02_wind_on 1 294 2030 1.0 0.0 -es 03_wind_off 1 294 2030 1.0 0.0 -es 04_res 1 294 2030 1.0 0.0 -es 05_nuclear 1 294 2030 1.0 0.0 -es 06_coal 1 294 2030 1.0 0.0 -es 07_gas 1 294 2030 1.0 0.0 -es 08_non-res 1 294 2030 0.0 0.0 -es 09_hydro_pump 1 294 2030 0.0 0.0 -es 01_solar 1 295 2030 1.0 0.0 -es 02_wind_on 1 295 2030 1.0 0.0 -es 03_wind_off 1 295 2030 1.0 0.0 -es 04_res 1 295 2030 1.0 0.0 -es 05_nuclear 1 295 2030 1.0 0.0 -es 06_coal 1 295 2030 1.0 0.0 -es 07_gas 1 295 2030 1.0 0.0 -es 08_non-res 1 295 2030 0.0 0.0 -es 09_hydro_pump 1 295 2030 0.0 0.0 -es 01_solar 1 296 2030 1.0 0.0 -es 02_wind_on 1 296 2030 1.0 0.0 -es 03_wind_off 1 296 2030 1.0 0.0 -es 04_res 1 296 2030 1.0 0.0 -es 05_nuclear 1 296 2030 1.0 0.0 -es 06_coal 1 296 2030 1.0 0.0 -es 07_gas 1 296 2030 1.0 0.0 -es 08_non-res 1 296 2030 0.0 0.0 -es 09_hydro_pump 1 296 2030 0.0 0.0 -es 01_solar 1 297 2030 1.0 0.0 -es 02_wind_on 1 297 2030 1.0 0.0 -es 03_wind_off 1 297 2030 1.0 0.0 -es 04_res 1 297 2030 1.0 0.0 -es 05_nuclear 1 297 2030 1.0 0.0 -es 06_coal 1 297 2030 1.0 0.0 -es 07_gas 1 297 2030 1.0 0.0 -es 08_non-res 1 297 2030 0.0 0.0 -es 09_hydro_pump 1 297 2030 0.0 0.0 -es 01_solar 1 298 2030 1.0 0.0 -es 02_wind_on 1 298 2030 1.0 0.0 -es 03_wind_off 1 298 2030 1.0 0.0 -es 04_res 1 298 2030 1.0 0.0 -es 05_nuclear 1 298 2030 1.0 0.0 -es 06_coal 1 298 2030 1.0 0.0 -es 07_gas 1 298 2030 1.0 0.0 -es 08_non-res 1 298 2030 0.0 0.0 -es 09_hydro_pump 1 298 2030 0.0 0.0 -es 01_solar 1 299 2030 1.0 0.0 -es 02_wind_on 1 299 2030 1.0 0.0 -es 03_wind_off 1 299 2030 1.0 0.0 -es 04_res 1 299 2030 1.0 0.0 -es 05_nuclear 1 299 2030 1.0 0.0 -es 06_coal 1 299 2030 1.0 0.0 -es 07_gas 1 299 2030 1.0 0.0 -es 08_non-res 1 299 2030 0.0 0.0 -es 09_hydro_pump 1 299 2030 0.0 0.0 -es 01_solar 1 300 2030 1.0 0.0 -es 02_wind_on 1 300 2030 1.0 0.0 -es 03_wind_off 1 300 2030 1.0 0.0 -es 04_res 1 300 2030 1.0 0.0 -es 05_nuclear 1 300 2030 1.0 0.0 -es 06_coal 1 300 2030 1.0 0.0 -es 07_gas 1 300 2030 1.0 0.0 -es 08_non-res 1 300 2030 0.0 0.0 -es 09_hydro_pump 1 300 2030 0.0 0.0 -es 01_solar 1 301 2030 1.0 0.0 -es 02_wind_on 1 301 2030 1.0 0.0 -es 03_wind_off 1 301 2030 1.0 0.0 -es 04_res 1 301 2030 1.0 0.0 -es 05_nuclear 1 301 2030 1.0 0.0 -es 06_coal 1 301 2030 1.0 0.0 -es 07_gas 1 301 2030 1.0 0.0 -es 08_non-res 1 301 2030 0.0 0.0 -es 09_hydro_pump 1 301 2030 0.0 0.0 -es 01_solar 1 302 2030 1.0 0.0 -es 02_wind_on 1 302 2030 1.0 0.0 -es 03_wind_off 1 302 2030 1.0 0.0 -es 04_res 1 302 2030 1.0 0.0 -es 05_nuclear 1 302 2030 1.0 0.0 -es 06_coal 1 302 2030 1.0 0.0 -es 07_gas 1 302 2030 1.0 0.0 -es 08_non-res 1 302 2030 0.0 0.0 -es 09_hydro_pump 1 302 2030 0.0 0.0 -es 01_solar 1 303 2030 1.0 0.0 -es 02_wind_on 1 303 2030 1.0 0.0 -es 03_wind_off 1 303 2030 1.0 0.0 -es 04_res 1 303 2030 1.0 0.0 -es 05_nuclear 1 303 2030 1.0 0.0 -es 06_coal 1 303 2030 1.0 0.0 -es 07_gas 1 303 2030 1.0 0.0 -es 08_non-res 1 303 2030 0.0 0.0 -es 09_hydro_pump 1 303 2030 0.0 0.0 -es 01_solar 1 304 2030 1.0 0.0 -es 02_wind_on 1 304 2030 1.0 0.0 -es 03_wind_off 1 304 2030 1.0 0.0 -es 04_res 1 304 2030 1.0 0.0 -es 05_nuclear 1 304 2030 1.0 0.0 -es 06_coal 1 304 2030 1.0 0.0 -es 07_gas 1 304 2030 1.0 0.0 -es 08_non-res 1 304 2030 0.0 0.0 -es 09_hydro_pump 1 304 2030 0.0 0.0 -es 01_solar 1 305 2030 1.0 0.0 -es 02_wind_on 1 305 2030 1.0 0.0 -es 03_wind_off 1 305 2030 1.0 0.0 -es 04_res 1 305 2030 1.0 0.0 -es 05_nuclear 1 305 2030 1.0 0.0 -es 06_coal 1 305 2030 1.0 0.0 -es 07_gas 1 305 2030 1.0 0.0 -es 08_non-res 1 305 2030 0.0 0.0 -es 09_hydro_pump 1 305 2030 0.0 0.0 -es 01_solar 1 306 2030 1.0 0.0 -es 02_wind_on 1 306 2030 1.0 0.0 -es 03_wind_off 1 306 2030 1.0 0.0 -es 04_res 1 306 2030 1.0 0.0 -es 05_nuclear 1 306 2030 1.0 0.0 -es 06_coal 1 306 2030 1.0 0.0 -es 07_gas 1 306 2030 1.0 0.0 -es 08_non-res 1 306 2030 0.0 0.0 -es 09_hydro_pump 1 306 2030 0.0 0.0 -es 01_solar 1 307 2030 1.0 0.0 -es 02_wind_on 1 307 2030 1.0 0.0 -es 03_wind_off 1 307 2030 1.0 0.0 -es 04_res 1 307 2030 1.0 0.0 -es 05_nuclear 1 307 2030 1.0 0.0 -es 06_coal 1 307 2030 1.0 0.0 -es 07_gas 1 307 2030 1.0 0.0 -es 08_non-res 1 307 2030 0.0 0.0 -es 09_hydro_pump 1 307 2030 0.0 0.0 -es 01_solar 1 308 2030 1.0 0.0 -es 02_wind_on 1 308 2030 1.0 0.0 -es 03_wind_off 1 308 2030 1.0 0.0 -es 04_res 1 308 2030 1.0 0.0 -es 05_nuclear 1 308 2030 1.0 0.0 -es 06_coal 1 308 2030 1.0 0.0 -es 07_gas 1 308 2030 1.0 0.0 -es 08_non-res 1 308 2030 0.0 0.0 -es 09_hydro_pump 1 308 2030 0.0 0.0 -es 01_solar 1 309 2030 1.0 0.0 -es 02_wind_on 1 309 2030 1.0 0.0 -es 03_wind_off 1 309 2030 1.0 0.0 -es 04_res 1 309 2030 1.0 0.0 -es 05_nuclear 1 309 2030 1.0 0.0 -es 06_coal 1 309 2030 1.0 0.0 -es 07_gas 1 309 2030 1.0 0.0 -es 08_non-res 1 309 2030 0.0 0.0 -es 09_hydro_pump 1 309 2030 0.0 0.0 -es 01_solar 1 310 2030 1.0 0.0 -es 02_wind_on 1 310 2030 1.0 0.0 -es 03_wind_off 1 310 2030 1.0 0.0 -es 04_res 1 310 2030 1.0 0.0 -es 05_nuclear 1 310 2030 1.0 0.0 -es 06_coal 1 310 2030 1.0 0.0 -es 07_gas 1 310 2030 1.0 0.0 -es 08_non-res 1 310 2030 1.0 0.0 -es 09_hydro_pump 1 310 2030 0.0 0.0 -es 01_solar 1 311 2030 1.0 0.0 -es 02_wind_on 1 311 2030 1.0 0.0 -es 03_wind_off 1 311 2030 1.0 0.0 -es 04_res 1 311 2030 1.0 0.0 -es 05_nuclear 1 311 2030 1.0 0.0 -es 06_coal 1 311 2030 1.0 0.0 -es 07_gas 1 311 2030 1.0 0.0 -es 08_non-res 1 311 2030 1.0 0.0 -es 09_hydro_pump 1 311 2030 0.0 0.0 -es 01_solar 1 312 2030 1.0 0.0 -es 02_wind_on 1 312 2030 1.0 0.0 -es 03_wind_off 1 312 2030 1.0 0.0 -es 04_res 1 312 2030 1.0 0.0 -es 05_nuclear 1 312 2030 1.0 0.0 -es 06_coal 1 312 2030 1.0 0.0 -es 07_gas 1 312 2030 1.0 0.0 -es 08_non-res 1 312 2030 1.0 0.0 -es 09_hydro_pump 1 312 2030 0.0 0.0 -es 01_solar 1 313 2030 1.0 0.0 -es 02_wind_on 1 313 2030 1.0 0.0 -es 03_wind_off 1 313 2030 1.0 0.0 -es 04_res 1 313 2030 1.0 0.0 -es 05_nuclear 1 313 2030 1.0 0.0 -es 06_coal 1 313 2030 1.0 0.0 -es 07_gas 1 313 2030 1.0 0.0 -es 08_non-res 1 313 2030 1.0 0.0 -es 09_hydro_pump 1 313 2030 0.0 0.0 -es 01_solar 1 314 2030 1.0 0.0 -es 02_wind_on 1 314 2030 1.0 0.0 -es 03_wind_off 1 314 2030 1.0 0.0 -es 04_res 1 314 2030 1.0 0.0 -es 05_nuclear 1 314 2030 1.0 0.0 -es 06_coal 1 314 2030 1.0 0.0 -es 07_gas 1 314 2030 1.0 0.0 -es 08_non-res 1 314 2030 1.0 0.0 -es 09_hydro_pump 1 314 2030 0.0 0.0 -es 01_solar 1 315 2030 1.0 0.0 -es 02_wind_on 1 315 2030 1.0 0.0 -es 03_wind_off 1 315 2030 1.0 0.0 -es 04_res 1 315 2030 1.0 0.0 -es 05_nuclear 1 315 2030 1.0 0.0 -es 06_coal 1 315 2030 1.0 0.0 -es 07_gas 1 315 2030 1.0 0.0 -es 08_non-res 1 315 2030 1.0 0.0 -es 09_hydro_pump 1 315 2030 0.0 0.0 -es 01_solar 1 316 2030 1.0 0.0 -es 02_wind_on 1 316 2030 1.0 0.0 -es 03_wind_off 1 316 2030 1.0 0.0 -es 04_res 1 316 2030 1.0 0.0 -es 05_nuclear 1 316 2030 1.0 0.0 -es 06_coal 1 316 2030 1.0 0.0 -es 07_gas 1 316 2030 1.0 0.0 -es 08_non-res 1 316 2030 1.0 0.0 -es 09_hydro_pump 1 316 2030 0.0 0.0 -es 01_solar 1 317 2030 1.0 0.0 -es 02_wind_on 1 317 2030 1.0 0.0 -es 03_wind_off 1 317 2030 1.0 0.0 -es 04_res 1 317 2030 1.0 0.0 -es 05_nuclear 1 317 2030 1.0 0.0 -es 06_coal 1 317 2030 1.0 0.0 -es 07_gas 1 317 2030 1.0 0.0 -es 08_non-res 1 317 2030 1.0 0.0 -es 09_hydro_pump 1 317 2030 0.0 0.0 -es 01_solar 1 318 2030 1.0 0.0 -es 02_wind_on 1 318 2030 1.0 0.0 -es 03_wind_off 1 318 2030 1.0 0.0 -es 04_res 1 318 2030 1.0 0.0 -es 05_nuclear 1 318 2030 1.0 0.0 -es 06_coal 1 318 2030 1.0 0.0 -es 07_gas 1 318 2030 1.0 0.0 -es 08_non-res 1 318 2030 1.0 0.0 -es 09_hydro_pump 1 318 2030 0.0 0.0 -es 01_solar 1 319 2030 1.0 0.0 -es 02_wind_on 1 319 2030 1.0 0.0 -es 03_wind_off 1 319 2030 1.0 0.0 -es 04_res 1 319 2030 1.0 0.0 -es 05_nuclear 1 319 2030 1.0 0.0 -es 06_coal 1 319 2030 1.0 0.0 -es 07_gas 1 319 2030 1.0 0.0 -es 08_non-res 1 319 2030 1.0 0.0 -es 09_hydro_pump 1 319 2030 0.0 0.0 -es 01_solar 1 320 2030 1.0 0.0 -es 02_wind_on 1 320 2030 1.0 0.0 -es 03_wind_off 1 320 2030 1.0 0.0 -es 04_res 1 320 2030 1.0 0.0 -es 05_nuclear 1 320 2030 1.0 0.0 -es 06_coal 1 320 2030 1.0 0.0 -es 07_gas 1 320 2030 1.0 0.0 -es 08_non-res 1 320 2030 1.0 0.0 -es 09_hydro_pump 1 320 2030 0.0 0.0 -es 01_solar 1 321 2030 1.0 0.0 -es 02_wind_on 1 321 2030 1.0 0.0 -es 03_wind_off 1 321 2030 1.0 0.0 -es 04_res 1 321 2030 1.0 0.0 -es 05_nuclear 1 321 2030 1.0 0.0 -es 06_coal 1 321 2030 1.0 0.0 -es 07_gas 1 321 2030 1.0 0.0 -es 08_non-res 1 321 2030 1.0 0.0 -es 09_hydro_pump 1 321 2030 0.0 0.0 -es 01_solar 1 322 2030 1.0 0.0 -es 02_wind_on 1 322 2030 1.0 0.0 -es 03_wind_off 1 322 2030 1.0 0.0 -es 04_res 1 322 2030 1.0 0.0 -es 05_nuclear 1 322 2030 1.0 0.0 -es 06_coal 1 322 2030 1.0 0.0 -es 07_gas 1 322 2030 1.0 0.0 -es 08_non-res 1 322 2030 1.0 0.0 -es 09_hydro_pump 1 322 2030 0.0 0.0 -es 01_solar 1 323 2030 1.0 0.0 -es 02_wind_on 1 323 2030 1.0 0.0 -es 03_wind_off 1 323 2030 1.0 0.0 -es 04_res 1 323 2030 1.0 0.0 -es 05_nuclear 1 323 2030 1.0 0.0 -es 06_coal 1 323 2030 1.0 0.0 -es 07_gas 1 323 2030 1.0 0.0 -es 08_non-res 1 323 2030 1.0 0.0 -es 09_hydro_pump 1 323 2030 0.0 0.0 -es 01_solar 1 324 2030 1.0 0.0 -es 02_wind_on 1 324 2030 1.0 0.0 -es 03_wind_off 1 324 2030 1.0 0.0 -es 04_res 1 324 2030 1.0 0.0 -es 05_nuclear 1 324 2030 1.0 0.0 -es 06_coal 1 324 2030 1.0 0.0 -es 07_gas 1 324 2030 1.0 0.0 -es 08_non-res 1 324 2030 1.0 0.0 -es 09_hydro_pump 1 324 2030 0.0 0.0 -es 01_solar 1 325 2030 1.0 0.0 -es 02_wind_on 1 325 2030 1.0 0.0 -es 03_wind_off 1 325 2030 1.0 0.0 -es 04_res 1 325 2030 1.0 0.0 -es 05_nuclear 1 325 2030 1.0 0.0 -es 06_coal 1 325 2030 1.0 0.0 -es 07_gas 1 325 2030 1.0 0.0 -es 08_non-res 1 325 2030 1.0 0.0 -es 09_hydro_pump 1 325 2030 0.0 0.0 -es 01_solar 1 326 2030 1.0 0.0 -es 02_wind_on 1 326 2030 1.0 0.0 -es 03_wind_off 1 326 2030 1.0 0.0 -es 04_res 1 326 2030 1.0 0.0 -es 05_nuclear 1 326 2030 1.0 0.0 -es 06_coal 1 326 2030 1.0 0.0 -es 07_gas 1 326 2030 1.0 0.0 -es 08_non-res 1 326 2030 1.0 0.0 -es 09_hydro_pump 1 326 2030 0.0 0.0 -es 01_solar 1 327 2030 1.0 0.0 -es 02_wind_on 1 327 2030 1.0 0.0 -es 03_wind_off 1 327 2030 1.0 0.0 -es 04_res 1 327 2030 1.0 0.0 -es 05_nuclear 1 327 2030 1.0 0.0 -es 06_coal 1 327 2030 1.0 0.0 -es 07_gas 1 327 2030 1.0 0.0 -es 08_non-res 1 327 2030 1.0 0.0 -es 09_hydro_pump 1 327 2030 0.0 0.0 -es 01_solar 1 328 2030 1.0 0.0 -es 02_wind_on 1 328 2030 1.0 0.0 -es 03_wind_off 1 328 2030 1.0 0.0 -es 04_res 1 328 2030 1.0 0.0 -es 05_nuclear 1 328 2030 1.0 0.0 -es 06_coal 1 328 2030 1.0 0.0 -es 07_gas 1 328 2030 1.0 0.0 -es 08_non-res 1 328 2030 1.0 0.0 -es 09_hydro_pump 1 328 2030 0.0 0.0 -es 01_solar 1 329 2030 1.0 0.0 -es 02_wind_on 1 329 2030 1.0 0.0 -es 03_wind_off 1 329 2030 1.0 0.0 -es 04_res 1 329 2030 1.0 0.0 -es 05_nuclear 1 329 2030 1.0 0.0 -es 06_coal 1 329 2030 1.0 0.0 -es 07_gas 1 329 2030 1.0 0.0 -es 08_non-res 1 329 2030 1.0 0.0 -es 09_hydro_pump 1 329 2030 0.0 0.0 -es 01_solar 1 330 2030 1.0 0.0 -es 02_wind_on 1 330 2030 1.0 0.0 -es 03_wind_off 1 330 2030 1.0 0.0 -es 04_res 1 330 2030 1.0 0.0 -es 05_nuclear 1 330 2030 1.0 0.0 -es 06_coal 1 330 2030 1.0 0.0 -es 07_gas 1 330 2030 1.0 0.0 -es 08_non-res 1 330 2030 1.0 0.0 -es 09_hydro_pump 1 330 2030 1.0 0.0 -es 01_solar 1 331 2030 1.0 0.0 -es 02_wind_on 1 331 2030 1.0 0.0 -es 03_wind_off 1 331 2030 1.0 0.0 -es 04_res 1 331 2030 1.0 0.0 -es 05_nuclear 1 331 2030 1.0 0.0 -es 06_coal 1 331 2030 1.0 0.0 -es 07_gas 1 331 2030 1.0 0.0 -es 08_non-res 1 331 2030 1.0 0.0 -es 09_hydro_pump 1 331 2030 1.0 0.0 -es 01_solar 1 332 2030 1.0 0.0 -es 02_wind_on 1 332 2030 1.0 0.0 -es 03_wind_off 1 332 2030 1.0 0.0 -es 04_res 1 332 2030 1.0 0.0 -es 05_nuclear 1 332 2030 1.0 0.0 -es 06_coal 1 332 2030 1.0 0.0 -es 07_gas 1 332 2030 1.0 0.0 -es 08_non-res 1 332 2030 1.0 0.0 -es 09_hydro_pump 1 332 2030 1.0 0.0 -es 01_solar 1 333 2030 1.0 0.0 -es 02_wind_on 1 333 2030 1.0 0.0 -es 03_wind_off 1 333 2030 1.0 0.0 -es 04_res 1 333 2030 1.0 0.0 -es 05_nuclear 1 333 2030 1.0 0.0 -es 06_coal 1 333 2030 1.0 0.0 -es 07_gas 1 333 2030 1.0 0.0 -es 08_non-res 1 333 2030 1.0 0.0 -es 09_hydro_pump 1 333 2030 1.0 0.0 -es 01_solar 1 334 2030 1.0 0.0 -es 02_wind_on 1 334 2030 1.0 0.0 -es 03_wind_off 1 334 2030 1.0 0.0 -es 04_res 1 334 2030 1.0 0.0 -es 05_nuclear 1 334 2030 1.0 0.0 -es 06_coal 1 334 2030 1.0 0.0 -es 07_gas 1 334 2030 1.0 0.0 -es 08_non-res 1 334 2030 1.0 0.0 -es 09_hydro_pump 1 334 2030 1.0 0.0 -es 01_solar 1 335 2030 1.0 0.0 -es 02_wind_on 1 335 2030 1.0 0.0 -es 03_wind_off 1 335 2030 1.0 0.0 -es 04_res 1 335 2030 1.0 0.0 -es 05_nuclear 1 335 2030 1.0 0.0 -es 06_coal 1 335 2030 1.0 0.0 -es 07_gas 1 335 2030 1.0 0.0 -es 08_non-res 1 335 2030 1.0 0.0 -es 09_hydro_pump 1 335 2030 1.0 0.0 -es 01_solar 1 336 2030 1.0 0.0 -es 02_wind_on 1 336 2030 1.0 0.0 -es 03_wind_off 1 336 2030 1.0 0.0 -es 04_res 1 336 2030 1.0 0.0 -es 05_nuclear 1 336 2030 1.0 0.0 -es 06_coal 1 336 2030 1.0 0.0 -es 07_gas 1 336 2030 1.0 0.0 -es 08_non-res 1 336 2030 1.0 0.0 -es 09_hydro_pump 1 336 2030 1.0 0.0 -fr 01_solar 1 1 2030 0.0 0.0 -fr 02_wind_on 1 1 2030 0.0 0.0 -fr 03_wind_off 1 1 2030 0.0 0.0 -fr 04_res 1 1 2030 0.0 0.0 -fr 05_nuclear 1 1 2030 0.0 0.0 -fr 06_coal 1 1 2030 0.0 0.0 -fr 07_gas 1 1 2030 0.0 0.0 -fr 08_non-res 1 1 2030 0.0 0.0 -fr 09_hydro_pump 1 1 2030 0.0 0.0 -fr 01_solar 1 2 2030 1.0 0.0 -fr 02_wind_on 1 2 2030 0.0 0.0 -fr 03_wind_off 1 2 2030 0.0 0.0 -fr 04_res 1 2 2030 0.0 0.0 -fr 05_nuclear 1 2 2030 0.0 0.0 -fr 06_coal 1 2 2030 0.0 0.0 -fr 07_gas 1 2 2030 0.0 0.0 -fr 08_non-res 1 2 2030 0.0 0.0 -fr 09_hydro_pump 1 2 2030 0.0 0.0 -fr 01_solar 1 3 2030 1.0 0.0 -fr 02_wind_on 1 3 2030 0.0 0.0 -fr 03_wind_off 1 3 2030 0.0 0.0 -fr 04_res 1 3 2030 0.0 0.0 -fr 05_nuclear 1 3 2030 0.0 0.0 -fr 06_coal 1 3 2030 0.0 0.0 -fr 07_gas 1 3 2030 0.0 0.0 -fr 08_non-res 1 3 2030 0.0 0.0 -fr 09_hydro_pump 1 3 2030 0.0 0.0 -fr 01_solar 1 4 2030 1.0 0.0 -fr 02_wind_on 1 4 2030 0.0 0.0 -fr 03_wind_off 1 4 2030 0.0 0.0 -fr 04_res 1 4 2030 0.0 0.0 -fr 05_nuclear 1 4 2030 0.0 0.0 -fr 06_coal 1 4 2030 0.0 0.0 -fr 07_gas 1 4 2030 0.0 0.0 -fr 08_non-res 1 4 2030 0.0 0.0 -fr 09_hydro_pump 1 4 2030 0.0 0.0 -fr 01_solar 1 5 2030 1.0 0.0 -fr 02_wind_on 1 5 2030 0.0 0.0 -fr 03_wind_off 1 5 2030 0.0 0.0 -fr 04_res 1 5 2030 0.0 0.0 -fr 05_nuclear 1 5 2030 0.0 0.0 -fr 06_coal 1 5 2030 0.0 0.0 -fr 07_gas 1 5 2030 0.0 0.0 -fr 08_non-res 1 5 2030 0.0 0.0 -fr 09_hydro_pump 1 5 2030 0.0 0.0 -fr 01_solar 1 6 2030 1.0 0.0 -fr 02_wind_on 1 6 2030 0.0 0.0 -fr 03_wind_off 1 6 2030 0.0 0.0 -fr 04_res 1 6 2030 0.0 0.0 -fr 05_nuclear 1 6 2030 0.0 0.0 -fr 06_coal 1 6 2030 0.0 0.0 -fr 07_gas 1 6 2030 0.0 0.0 -fr 08_non-res 1 6 2030 0.0 0.0 -fr 09_hydro_pump 1 6 2030 0.0 0.0 -fr 01_solar 1 7 2030 1.0 0.0 -fr 02_wind_on 1 7 2030 0.0 0.0 -fr 03_wind_off 1 7 2030 0.0 0.0 -fr 04_res 1 7 2030 0.0 0.0 -fr 05_nuclear 1 7 2030 0.0 0.0 -fr 06_coal 1 7 2030 0.0 0.0 -fr 07_gas 1 7 2030 0.0 0.0 -fr 08_non-res 1 7 2030 0.0 0.0 -fr 09_hydro_pump 1 7 2030 0.0 0.0 -fr 01_solar 1 8 2030 1.0 0.0 -fr 02_wind_on 1 8 2030 0.0 0.0 -fr 03_wind_off 1 8 2030 0.0 0.0 -fr 04_res 1 8 2030 0.0 0.0 -fr 05_nuclear 1 8 2030 0.0 0.0 -fr 06_coal 1 8 2030 0.0 0.0 -fr 07_gas 1 8 2030 0.0 0.0 -fr 08_non-res 1 8 2030 0.0 0.0 -fr 09_hydro_pump 1 8 2030 0.0 0.0 -fr 01_solar 1 9 2030 1.0 0.0 -fr 02_wind_on 1 9 2030 0.0 0.0 -fr 03_wind_off 1 9 2030 0.0 0.0 -fr 04_res 1 9 2030 0.0 0.0 -fr 05_nuclear 1 9 2030 0.0 0.0 -fr 06_coal 1 9 2030 0.0 0.0 -fr 07_gas 1 9 2030 0.0 0.0 -fr 08_non-res 1 9 2030 0.0 0.0 -fr 09_hydro_pump 1 9 2030 0.0 0.0 -fr 01_solar 1 10 2030 1.0 0.0 -fr 02_wind_on 1 10 2030 0.0 0.0 -fr 03_wind_off 1 10 2030 0.0 0.0 -fr 04_res 1 10 2030 0.0 0.0 -fr 05_nuclear 1 10 2030 0.0 0.0 -fr 06_coal 1 10 2030 0.0 0.0 -fr 07_gas 1 10 2030 0.0 0.0 -fr 08_non-res 1 10 2030 0.0 0.0 -fr 09_hydro_pump 1 10 2030 0.0 0.0 -fr 01_solar 1 11 2030 1.0 0.0 -fr 02_wind_on 1 11 2030 0.0 0.0 -fr 03_wind_off 1 11 2030 0.0 0.0 -fr 04_res 1 11 2030 0.0 0.0 -fr 05_nuclear 1 11 2030 0.0 0.0 -fr 06_coal 1 11 2030 0.0 0.0 -fr 07_gas 1 11 2030 0.0 0.0 -fr 08_non-res 1 11 2030 0.0 0.0 -fr 09_hydro_pump 1 11 2030 0.0 0.0 -fr 01_solar 1 12 2030 1.0 0.0 -fr 02_wind_on 1 12 2030 0.0 0.0 -fr 03_wind_off 1 12 2030 0.0 0.0 -fr 04_res 1 12 2030 0.0 0.0 -fr 05_nuclear 1 12 2030 0.0 0.0 -fr 06_coal 1 12 2030 0.0 0.0 -fr 07_gas 1 12 2030 0.0 0.0 -fr 08_non-res 1 12 2030 0.0 0.0 -fr 09_hydro_pump 1 12 2030 0.0 0.0 -fr 01_solar 1 13 2030 1.0 0.0 -fr 02_wind_on 1 13 2030 0.0 0.0 -fr 03_wind_off 1 13 2030 0.0 0.0 -fr 04_res 1 13 2030 0.0 0.0 -fr 05_nuclear 1 13 2030 0.0 0.0 -fr 06_coal 1 13 2030 0.0 0.0 -fr 07_gas 1 13 2030 0.0 0.0 -fr 08_non-res 1 13 2030 0.0 0.0 -fr 09_hydro_pump 1 13 2030 0.0 0.0 -fr 01_solar 1 14 2030 1.0 0.0 -fr 02_wind_on 1 14 2030 0.0 0.0 -fr 03_wind_off 1 14 2030 0.0 0.0 -fr 04_res 1 14 2030 0.0 0.0 -fr 05_nuclear 1 14 2030 0.0 0.0 -fr 06_coal 1 14 2030 0.0 0.0 -fr 07_gas 1 14 2030 0.0 0.0 -fr 08_non-res 1 14 2030 0.0 0.0 -fr 09_hydro_pump 1 14 2030 0.0 0.0 -fr 01_solar 1 15 2030 1.0 0.0 -fr 02_wind_on 1 15 2030 0.0 0.0 -fr 03_wind_off 1 15 2030 0.0 0.0 -fr 04_res 1 15 2030 0.0 0.0 -fr 05_nuclear 1 15 2030 0.0 0.0 -fr 06_coal 1 15 2030 0.0 0.0 -fr 07_gas 1 15 2030 0.0 0.0 -fr 08_non-res 1 15 2030 0.0 0.0 -fr 09_hydro_pump 1 15 2030 0.0 0.0 -fr 01_solar 1 16 2030 1.0 0.0 -fr 02_wind_on 1 16 2030 0.0 0.0 -fr 03_wind_off 1 16 2030 0.0 0.0 -fr 04_res 1 16 2030 0.0 0.0 -fr 05_nuclear 1 16 2030 0.0 0.0 -fr 06_coal 1 16 2030 0.0 0.0 -fr 07_gas 1 16 2030 0.0 0.0 -fr 08_non-res 1 16 2030 0.0 0.0 -fr 09_hydro_pump 1 16 2030 0.0 0.0 -fr 01_solar 1 17 2030 1.0 0.0 -fr 02_wind_on 1 17 2030 0.0 0.0 -fr 03_wind_off 1 17 2030 0.0 0.0 -fr 04_res 1 17 2030 0.0 0.0 -fr 05_nuclear 1 17 2030 0.0 0.0 -fr 06_coal 1 17 2030 0.0 0.0 -fr 07_gas 1 17 2030 0.0 0.0 -fr 08_non-res 1 17 2030 0.0 0.0 -fr 09_hydro_pump 1 17 2030 0.0 0.0 -fr 01_solar 1 18 2030 1.0 0.0 -fr 02_wind_on 1 18 2030 0.0 0.0 -fr 03_wind_off 1 18 2030 0.0 0.0 -fr 04_res 1 18 2030 0.0 0.0 -fr 05_nuclear 1 18 2030 0.0 0.0 -fr 06_coal 1 18 2030 0.0 0.0 -fr 07_gas 1 18 2030 0.0 0.0 -fr 08_non-res 1 18 2030 0.0 0.0 -fr 09_hydro_pump 1 18 2030 0.0 0.0 -fr 01_solar 1 19 2030 1.0 0.0 -fr 02_wind_on 1 19 2030 0.0 0.0 -fr 03_wind_off 1 19 2030 0.0 0.0 -fr 04_res 1 19 2030 0.0 0.0 -fr 05_nuclear 1 19 2030 0.0 0.0 -fr 06_coal 1 19 2030 0.0 0.0 -fr 07_gas 1 19 2030 0.0 0.0 -fr 08_non-res 1 19 2030 0.0 0.0 -fr 09_hydro_pump 1 19 2030 0.0 0.0 -fr 01_solar 1 20 2030 1.0 0.0 -fr 02_wind_on 1 20 2030 0.0 0.0 -fr 03_wind_off 1 20 2030 0.0 0.0 -fr 04_res 1 20 2030 0.0 0.0 -fr 05_nuclear 1 20 2030 0.0 0.0 -fr 06_coal 1 20 2030 0.0 0.0 -fr 07_gas 1 20 2030 0.0 0.0 -fr 08_non-res 1 20 2030 0.0 0.0 -fr 09_hydro_pump 1 20 2030 0.0 0.0 -fr 01_solar 1 21 2030 1.0 0.0 -fr 02_wind_on 1 21 2030 0.0 0.0 -fr 03_wind_off 1 21 2030 0.0 0.0 -fr 04_res 1 21 2030 0.0 0.0 -fr 05_nuclear 1 21 2030 0.0 0.0 -fr 06_coal 1 21 2030 0.0 0.0 -fr 07_gas 1 21 2030 0.0 0.0 -fr 08_non-res 1 21 2030 0.0 0.0 -fr 09_hydro_pump 1 21 2030 0.0 0.0 -fr 01_solar 1 22 2030 1.0 0.0 -fr 02_wind_on 1 22 2030 1.0 0.0 -fr 03_wind_off 1 22 2030 0.0 0.0 -fr 04_res 1 22 2030 0.0 0.0 -fr 05_nuclear 1 22 2030 0.0 0.0 -fr 06_coal 1 22 2030 0.0 0.0 -fr 07_gas 1 22 2030 0.0 0.0 -fr 08_non-res 1 22 2030 0.0 0.0 -fr 09_hydro_pump 1 22 2030 0.0 0.0 -fr 01_solar 1 23 2030 1.0 0.0 -fr 02_wind_on 1 23 2030 1.0 0.0 -fr 03_wind_off 1 23 2030 0.0 0.0 -fr 04_res 1 23 2030 0.0 0.0 -fr 05_nuclear 1 23 2030 0.0 0.0 -fr 06_coal 1 23 2030 0.0 0.0 -fr 07_gas 1 23 2030 0.0 0.0 -fr 08_non-res 1 23 2030 0.0 0.0 -fr 09_hydro_pump 1 23 2030 0.0 0.0 -fr 01_solar 1 24 2030 1.0 0.0 -fr 02_wind_on 1 24 2030 1.0 0.0 -fr 03_wind_off 1 24 2030 0.0 0.0 -fr 04_res 1 24 2030 0.0 0.0 -fr 05_nuclear 1 24 2030 0.0 0.0 -fr 06_coal 1 24 2030 0.0 0.0 -fr 07_gas 1 24 2030 0.0 0.0 -fr 08_non-res 1 24 2030 0.0 0.0 -fr 09_hydro_pump 1 24 2030 0.0 0.0 -fr 01_solar 1 25 2030 1.0 0.0 -fr 02_wind_on 1 25 2030 1.0 0.0 -fr 03_wind_off 1 25 2030 0.0 0.0 -fr 04_res 1 25 2030 0.0 0.0 -fr 05_nuclear 1 25 2030 0.0 0.0 -fr 06_coal 1 25 2030 0.0 0.0 -fr 07_gas 1 25 2030 0.0 0.0 -fr 08_non-res 1 25 2030 0.0 0.0 -fr 09_hydro_pump 1 25 2030 0.0 0.0 -fr 01_solar 1 26 2030 1.0 0.0 -fr 02_wind_on 1 26 2030 1.0 0.0 -fr 03_wind_off 1 26 2030 0.0 0.0 -fr 04_res 1 26 2030 0.0 0.0 -fr 05_nuclear 1 26 2030 0.0 0.0 -fr 06_coal 1 26 2030 0.0 0.0 -fr 07_gas 1 26 2030 0.0 0.0 -fr 08_non-res 1 26 2030 0.0 0.0 -fr 09_hydro_pump 1 26 2030 0.0 0.0 -fr 01_solar 1 27 2030 1.0 0.0 -fr 02_wind_on 1 27 2030 1.0 0.0 -fr 03_wind_off 1 27 2030 0.0 0.0 -fr 04_res 1 27 2030 0.0 0.0 -fr 05_nuclear 1 27 2030 0.0 0.0 -fr 06_coal 1 27 2030 0.0 0.0 -fr 07_gas 1 27 2030 0.0 0.0 -fr 08_non-res 1 27 2030 0.0 0.0 -fr 09_hydro_pump 1 27 2030 0.0 0.0 -fr 01_solar 1 28 2030 1.0 0.0 -fr 02_wind_on 1 28 2030 1.0 0.0 -fr 03_wind_off 1 28 2030 0.0 0.0 -fr 04_res 1 28 2030 0.0 0.0 -fr 05_nuclear 1 28 2030 0.0 0.0 -fr 06_coal 1 28 2030 0.0 0.0 -fr 07_gas 1 28 2030 0.0 0.0 -fr 08_non-res 1 28 2030 0.0 0.0 -fr 09_hydro_pump 1 28 2030 0.0 0.0 -fr 01_solar 1 29 2030 1.0 0.0 -fr 02_wind_on 1 29 2030 1.0 0.0 -fr 03_wind_off 1 29 2030 0.0 0.0 -fr 04_res 1 29 2030 0.0 0.0 -fr 05_nuclear 1 29 2030 0.0 0.0 -fr 06_coal 1 29 2030 0.0 0.0 -fr 07_gas 1 29 2030 0.0 0.0 -fr 08_non-res 1 29 2030 0.0 0.0 -fr 09_hydro_pump 1 29 2030 0.0 0.0 -fr 01_solar 1 30 2030 1.0 0.0 -fr 02_wind_on 1 30 2030 1.0 0.0 -fr 03_wind_off 1 30 2030 0.0 0.0 -fr 04_res 1 30 2030 0.0 0.0 -fr 05_nuclear 1 30 2030 0.0 0.0 -fr 06_coal 1 30 2030 0.0 0.0 -fr 07_gas 1 30 2030 0.0 0.0 -fr 08_non-res 1 30 2030 0.0 0.0 -fr 09_hydro_pump 1 30 2030 0.0 0.0 -fr 01_solar 1 31 2030 1.0 0.0 -fr 02_wind_on 1 31 2030 1.0 0.0 -fr 03_wind_off 1 31 2030 0.0 0.0 -fr 04_res 1 31 2030 0.0 0.0 -fr 05_nuclear 1 31 2030 0.0 0.0 -fr 06_coal 1 31 2030 0.0 0.0 -fr 07_gas 1 31 2030 0.0 0.0 -fr 08_non-res 1 31 2030 0.0 0.0 -fr 09_hydro_pump 1 31 2030 0.0 0.0 -fr 01_solar 1 32 2030 1.0 0.0 -fr 02_wind_on 1 32 2030 1.0 0.0 -fr 03_wind_off 1 32 2030 0.0 0.0 -fr 04_res 1 32 2030 0.0 0.0 -fr 05_nuclear 1 32 2030 0.0 0.0 -fr 06_coal 1 32 2030 0.0 0.0 -fr 07_gas 1 32 2030 0.0 0.0 -fr 08_non-res 1 32 2030 0.0 0.0 -fr 09_hydro_pump 1 32 2030 0.0 0.0 -fr 01_solar 1 33 2030 1.0 0.0 -fr 02_wind_on 1 33 2030 1.0 0.0 -fr 03_wind_off 1 33 2030 0.0 0.0 -fr 04_res 1 33 2030 0.0 0.0 -fr 05_nuclear 1 33 2030 0.0 0.0 -fr 06_coal 1 33 2030 0.0 0.0 -fr 07_gas 1 33 2030 0.0 0.0 -fr 08_non-res 1 33 2030 0.0 0.0 -fr 09_hydro_pump 1 33 2030 0.0 0.0 -fr 01_solar 1 34 2030 1.0 0.0 -fr 02_wind_on 1 34 2030 1.0 0.0 -fr 03_wind_off 1 34 2030 0.0 0.0 -fr 04_res 1 34 2030 0.0 0.0 -fr 05_nuclear 1 34 2030 0.0 0.0 -fr 06_coal 1 34 2030 0.0 0.0 -fr 07_gas 1 34 2030 0.0 0.0 -fr 08_non-res 1 34 2030 0.0 0.0 -fr 09_hydro_pump 1 34 2030 0.0 0.0 -fr 01_solar 1 35 2030 1.0 0.0 -fr 02_wind_on 1 35 2030 1.0 0.0 -fr 03_wind_off 1 35 2030 0.0 0.0 -fr 04_res 1 35 2030 0.0 0.0 -fr 05_nuclear 1 35 2030 0.0 0.0 -fr 06_coal 1 35 2030 0.0 0.0 -fr 07_gas 1 35 2030 0.0 0.0 -fr 08_non-res 1 35 2030 0.0 0.0 -fr 09_hydro_pump 1 35 2030 0.0 0.0 -fr 01_solar 1 36 2030 1.0 0.0 -fr 02_wind_on 1 36 2030 1.0 0.0 -fr 03_wind_off 1 36 2030 0.0 0.0 -fr 04_res 1 36 2030 0.0 0.0 -fr 05_nuclear 1 36 2030 0.0 0.0 -fr 06_coal 1 36 2030 0.0 0.0 -fr 07_gas 1 36 2030 0.0 0.0 -fr 08_non-res 1 36 2030 0.0 0.0 -fr 09_hydro_pump 1 36 2030 0.0 0.0 -fr 01_solar 1 37 2030 1.0 0.0 -fr 02_wind_on 1 37 2030 1.0 0.0 -fr 03_wind_off 1 37 2030 0.0 0.0 -fr 04_res 1 37 2030 0.0 0.0 -fr 05_nuclear 1 37 2030 0.0 0.0 -fr 06_coal 1 37 2030 0.0 0.0 -fr 07_gas 1 37 2030 0.0 0.0 -fr 08_non-res 1 37 2030 0.0 0.0 -fr 09_hydro_pump 1 37 2030 0.0 0.0 -fr 01_solar 1 38 2030 1.0 0.0 -fr 02_wind_on 1 38 2030 1.0 0.0 -fr 03_wind_off 1 38 2030 0.0 0.0 -fr 04_res 1 38 2030 0.0 0.0 -fr 05_nuclear 1 38 2030 0.0 0.0 -fr 06_coal 1 38 2030 0.0 0.0 -fr 07_gas 1 38 2030 0.0 0.0 -fr 08_non-res 1 38 2030 0.0 0.0 -fr 09_hydro_pump 1 38 2030 0.0 0.0 -fr 01_solar 1 39 2030 1.0 0.0 -fr 02_wind_on 1 39 2030 1.0 0.0 -fr 03_wind_off 1 39 2030 0.0 0.0 -fr 04_res 1 39 2030 0.0 0.0 -fr 05_nuclear 1 39 2030 0.0 0.0 -fr 06_coal 1 39 2030 0.0 0.0 -fr 07_gas 1 39 2030 0.0 0.0 -fr 08_non-res 1 39 2030 0.0 0.0 -fr 09_hydro_pump 1 39 2030 0.0 0.0 -fr 01_solar 1 40 2030 1.0 0.0 -fr 02_wind_on 1 40 2030 1.0 0.0 -fr 03_wind_off 1 40 2030 0.0 0.0 -fr 04_res 1 40 2030 0.0 0.0 -fr 05_nuclear 1 40 2030 0.0 0.0 -fr 06_coal 1 40 2030 0.0 0.0 -fr 07_gas 1 40 2030 0.0 0.0 -fr 08_non-res 1 40 2030 0.0 0.0 -fr 09_hydro_pump 1 40 2030 0.0 0.0 -fr 01_solar 1 41 2030 1.0 0.0 -fr 02_wind_on 1 41 2030 1.0 0.0 -fr 03_wind_off 1 41 2030 0.0 0.0 -fr 04_res 1 41 2030 0.0 0.0 -fr 05_nuclear 1 41 2030 0.0 0.0 -fr 06_coal 1 41 2030 0.0 0.0 -fr 07_gas 1 41 2030 0.0 0.0 -fr 08_non-res 1 41 2030 0.0 0.0 -fr 09_hydro_pump 1 41 2030 0.0 0.0 -fr 01_solar 1 42 2030 1.0 0.0 -fr 02_wind_on 1 42 2030 1.0 0.0 -fr 03_wind_off 1 42 2030 1.0 0.0 -fr 04_res 1 42 2030 0.0 0.0 -fr 05_nuclear 1 42 2030 0.0 0.0 -fr 06_coal 1 42 2030 0.0 0.0 -fr 07_gas 1 42 2030 0.0 0.0 -fr 08_non-res 1 42 2030 0.0 0.0 -fr 09_hydro_pump 1 42 2030 0.0 0.0 -fr 01_solar 1 43 2030 1.0 0.0 -fr 02_wind_on 1 43 2030 1.0 0.0 -fr 03_wind_off 1 43 2030 1.0 0.0 -fr 04_res 1 43 2030 0.0 0.0 -fr 05_nuclear 1 43 2030 0.0 0.0 -fr 06_coal 1 43 2030 0.0 0.0 -fr 07_gas 1 43 2030 0.0 0.0 -fr 08_non-res 1 43 2030 0.0 0.0 -fr 09_hydro_pump 1 43 2030 0.0 0.0 -fr 01_solar 1 44 2030 1.0 0.0 -fr 02_wind_on 1 44 2030 1.0 0.0 -fr 03_wind_off 1 44 2030 1.0 0.0 -fr 04_res 1 44 2030 0.0 0.0 -fr 05_nuclear 1 44 2030 0.0 0.0 -fr 06_coal 1 44 2030 0.0 0.0 -fr 07_gas 1 44 2030 0.0 0.0 -fr 08_non-res 1 44 2030 0.0 0.0 -fr 09_hydro_pump 1 44 2030 0.0 0.0 -fr 01_solar 1 45 2030 1.0 0.0 -fr 02_wind_on 1 45 2030 1.0 0.0 -fr 03_wind_off 1 45 2030 1.0 0.0 -fr 04_res 1 45 2030 0.0 0.0 -fr 05_nuclear 1 45 2030 0.0 0.0 -fr 06_coal 1 45 2030 0.0 0.0 -fr 07_gas 1 45 2030 0.0 0.0 -fr 08_non-res 1 45 2030 0.0 0.0 -fr 09_hydro_pump 1 45 2030 0.0 0.0 -fr 01_solar 1 46 2030 1.0 0.0 -fr 02_wind_on 1 46 2030 1.0 0.0 -fr 03_wind_off 1 46 2030 1.0 0.0 -fr 04_res 1 46 2030 0.0 0.0 -fr 05_nuclear 1 46 2030 0.0 0.0 -fr 06_coal 1 46 2030 0.0 0.0 -fr 07_gas 1 46 2030 0.0 0.0 -fr 08_non-res 1 46 2030 0.0 0.0 -fr 09_hydro_pump 1 46 2030 0.0 0.0 -fr 01_solar 1 47 2030 1.0 0.0 -fr 02_wind_on 1 47 2030 1.0 0.0 -fr 03_wind_off 1 47 2030 1.0 0.0 -fr 04_res 1 47 2030 0.0 0.0 -fr 05_nuclear 1 47 2030 0.0 0.0 -fr 06_coal 1 47 2030 0.0 0.0 -fr 07_gas 1 47 2030 0.0 0.0 -fr 08_non-res 1 47 2030 0.0 0.0 -fr 09_hydro_pump 1 47 2030 0.0 0.0 -fr 01_solar 1 48 2030 1.0 0.0 -fr 02_wind_on 1 48 2030 1.0 0.0 -fr 03_wind_off 1 48 2030 1.0 0.0 -fr 04_res 1 48 2030 0.0 0.0 -fr 05_nuclear 1 48 2030 0.0 0.0 -fr 06_coal 1 48 2030 0.0 0.0 -fr 07_gas 1 48 2030 0.0 0.0 -fr 08_non-res 1 48 2030 0.0 0.0 -fr 09_hydro_pump 1 48 2030 0.0 0.0 -fr 01_solar 1 49 2030 1.0 0.0 -fr 02_wind_on 1 49 2030 1.0 0.0 -fr 03_wind_off 1 49 2030 1.0 0.0 -fr 04_res 1 49 2030 0.0 0.0 -fr 05_nuclear 1 49 2030 0.0 0.0 -fr 06_coal 1 49 2030 0.0 0.0 -fr 07_gas 1 49 2030 0.0 0.0 -fr 08_non-res 1 49 2030 0.0 0.0 -fr 09_hydro_pump 1 49 2030 0.0 0.0 -fr 01_solar 1 50 2030 1.0 0.0 -fr 02_wind_on 1 50 2030 1.0 0.0 -fr 03_wind_off 1 50 2030 1.0 0.0 -fr 04_res 1 50 2030 0.0 0.0 -fr 05_nuclear 1 50 2030 0.0 0.0 -fr 06_coal 1 50 2030 0.0 0.0 -fr 07_gas 1 50 2030 0.0 0.0 -fr 08_non-res 1 50 2030 0.0 0.0 -fr 09_hydro_pump 1 50 2030 0.0 0.0 -fr 01_solar 1 51 2030 1.0 0.0 -fr 02_wind_on 1 51 2030 1.0 0.0 -fr 03_wind_off 1 51 2030 1.0 0.0 -fr 04_res 1 51 2030 0.0 0.0 -fr 05_nuclear 1 51 2030 0.0 0.0 -fr 06_coal 1 51 2030 0.0 0.0 -fr 07_gas 1 51 2030 0.0 0.0 -fr 08_non-res 1 51 2030 0.0 0.0 -fr 09_hydro_pump 1 51 2030 0.0 0.0 -fr 01_solar 1 52 2030 1.0 0.0 -fr 02_wind_on 1 52 2030 1.0 0.0 -fr 03_wind_off 1 52 2030 1.0 0.0 -fr 04_res 1 52 2030 0.0 0.0 -fr 05_nuclear 1 52 2030 0.0 0.0 -fr 06_coal 1 52 2030 0.0 0.0 -fr 07_gas 1 52 2030 0.0 0.0 -fr 08_non-res 1 52 2030 0.0 0.0 -fr 09_hydro_pump 1 52 2030 0.0 0.0 -fr 01_solar 1 53 2030 1.0 0.0 -fr 02_wind_on 1 53 2030 1.0 0.0 -fr 03_wind_off 1 53 2030 1.0 0.0 -fr 04_res 1 53 2030 0.0 0.0 -fr 05_nuclear 1 53 2030 0.0 0.0 -fr 06_coal 1 53 2030 0.0 0.0 -fr 07_gas 1 53 2030 0.0 0.0 -fr 08_non-res 1 53 2030 0.0 0.0 -fr 09_hydro_pump 1 53 2030 0.0 0.0 -fr 01_solar 1 54 2030 1.0 0.0 -fr 02_wind_on 1 54 2030 1.0 0.0 -fr 03_wind_off 1 54 2030 1.0 0.0 -fr 04_res 1 54 2030 0.0 0.0 -fr 05_nuclear 1 54 2030 0.0 0.0 -fr 06_coal 1 54 2030 0.0 0.0 -fr 07_gas 1 54 2030 0.0 0.0 -fr 08_non-res 1 54 2030 0.0 0.0 -fr 09_hydro_pump 1 54 2030 0.0 0.0 -fr 01_solar 1 55 2030 1.0 0.0 -fr 02_wind_on 1 55 2030 1.0 0.0 -fr 03_wind_off 1 55 2030 1.0 0.0 -fr 04_res 1 55 2030 0.0 0.0 -fr 05_nuclear 1 55 2030 0.0 0.0 -fr 06_coal 1 55 2030 0.0 0.0 -fr 07_gas 1 55 2030 0.0 0.0 -fr 08_non-res 1 55 2030 0.0 0.0 -fr 09_hydro_pump 1 55 2030 0.0 0.0 -fr 01_solar 1 56 2030 1.0 0.0 -fr 02_wind_on 1 56 2030 1.0 0.0 -fr 03_wind_off 1 56 2030 1.0 0.0 -fr 04_res 1 56 2030 0.0 0.0 -fr 05_nuclear 1 56 2030 0.0 0.0 -fr 06_coal 1 56 2030 0.0 0.0 -fr 07_gas 1 56 2030 0.0 0.0 -fr 08_non-res 1 56 2030 0.0 0.0 -fr 09_hydro_pump 1 56 2030 0.0 0.0 -fr 01_solar 1 57 2030 1.0 0.0 -fr 02_wind_on 1 57 2030 1.0 0.0 -fr 03_wind_off 1 57 2030 1.0 0.0 -fr 04_res 1 57 2030 0.0 0.0 -fr 05_nuclear 1 57 2030 0.0 0.0 -fr 06_coal 1 57 2030 0.0 0.0 -fr 07_gas 1 57 2030 0.0 0.0 -fr 08_non-res 1 57 2030 0.0 0.0 -fr 09_hydro_pump 1 57 2030 0.0 0.0 -fr 01_solar 1 58 2030 1.0 0.0 -fr 02_wind_on 1 58 2030 1.0 0.0 -fr 03_wind_off 1 58 2030 1.0 0.0 -fr 04_res 1 58 2030 0.0 0.0 -fr 05_nuclear 1 58 2030 0.0 0.0 -fr 06_coal 1 58 2030 0.0 0.0 -fr 07_gas 1 58 2030 0.0 0.0 -fr 08_non-res 1 58 2030 0.0 0.0 -fr 09_hydro_pump 1 58 2030 0.0 0.0 -fr 01_solar 1 59 2030 1.0 0.0 -fr 02_wind_on 1 59 2030 1.0 0.0 -fr 03_wind_off 1 59 2030 1.0 0.0 -fr 04_res 1 59 2030 0.0 0.0 -fr 05_nuclear 1 59 2030 0.0 0.0 -fr 06_coal 1 59 2030 0.0 0.0 -fr 07_gas 1 59 2030 0.0 0.0 -fr 08_non-res 1 59 2030 0.0 0.0 -fr 09_hydro_pump 1 59 2030 0.0 0.0 -fr 01_solar 1 60 2030 1.0 0.0 -fr 02_wind_on 1 60 2030 1.0 0.0 -fr 03_wind_off 1 60 2030 1.0 0.0 -fr 04_res 1 60 2030 0.0 0.0 -fr 05_nuclear 1 60 2030 0.0 0.0 -fr 06_coal 1 60 2030 0.0 0.0 -fr 07_gas 1 60 2030 0.0 0.0 -fr 08_non-res 1 60 2030 0.0 0.0 -fr 09_hydro_pump 1 60 2030 0.0 0.0 -fr 01_solar 1 61 2030 1.0 0.0 -fr 02_wind_on 1 61 2030 1.0 0.0 -fr 03_wind_off 1 61 2030 1.0 0.0 -fr 04_res 1 61 2030 0.0 0.0 -fr 05_nuclear 1 61 2030 0.0 0.0 -fr 06_coal 1 61 2030 0.0 0.0 -fr 07_gas 1 61 2030 0.0 0.0 -fr 08_non-res 1 61 2030 0.0 0.0 -fr 09_hydro_pump 1 61 2030 0.0 0.0 -fr 01_solar 1 62 2030 1.0 0.0 -fr 02_wind_on 1 62 2030 1.0 0.0 -fr 03_wind_off 1 62 2030 1.0 0.0 -fr 04_res 1 62 2030 1.0 0.0 -fr 05_nuclear 1 62 2030 0.0 0.0 -fr 06_coal 1 62 2030 0.0 0.0 -fr 07_gas 1 62 2030 0.0 0.0 -fr 08_non-res 1 62 2030 0.0 0.0 -fr 09_hydro_pump 1 62 2030 0.0 0.0 -fr 01_solar 1 63 2030 1.0 0.0 -fr 02_wind_on 1 63 2030 1.0 0.0 -fr 03_wind_off 1 63 2030 1.0 0.0 -fr 04_res 1 63 2030 1.0 0.0 -fr 05_nuclear 1 63 2030 0.0 0.0 -fr 06_coal 1 63 2030 0.0 0.0 -fr 07_gas 1 63 2030 0.0 0.0 -fr 08_non-res 1 63 2030 0.0 0.0 -fr 09_hydro_pump 1 63 2030 0.0 0.0 -fr 01_solar 1 64 2030 1.0 0.0 -fr 02_wind_on 1 64 2030 1.0 0.0 -fr 03_wind_off 1 64 2030 1.0 0.0 -fr 04_res 1 64 2030 1.0 0.0 -fr 05_nuclear 1 64 2030 0.0 0.0 -fr 06_coal 1 64 2030 0.0 0.0 -fr 07_gas 1 64 2030 0.0 0.0 -fr 08_non-res 1 64 2030 0.0 0.0 -fr 09_hydro_pump 1 64 2030 0.0 0.0 -fr 01_solar 1 65 2030 1.0 0.0 -fr 02_wind_on 1 65 2030 1.0 0.0 -fr 03_wind_off 1 65 2030 1.0 0.0 -fr 04_res 1 65 2030 1.0 0.0 -fr 05_nuclear 1 65 2030 0.0 0.0 -fr 06_coal 1 65 2030 0.0 0.0 -fr 07_gas 1 65 2030 0.0 0.0 -fr 08_non-res 1 65 2030 0.0 0.0 -fr 09_hydro_pump 1 65 2030 0.0 0.0 -fr 01_solar 1 66 2030 1.0 0.0 -fr 02_wind_on 1 66 2030 1.0 0.0 -fr 03_wind_off 1 66 2030 1.0 0.0 -fr 04_res 1 66 2030 1.0 0.0 -fr 05_nuclear 1 66 2030 0.0 0.0 -fr 06_coal 1 66 2030 0.0 0.0 -fr 07_gas 1 66 2030 0.0 0.0 -fr 08_non-res 1 66 2030 0.0 0.0 -fr 09_hydro_pump 1 66 2030 0.0 0.0 -fr 01_solar 1 67 2030 1.0 0.0 -fr 02_wind_on 1 67 2030 1.0 0.0 -fr 03_wind_off 1 67 2030 1.0 0.0 -fr 04_res 1 67 2030 1.0 0.0 -fr 05_nuclear 1 67 2030 0.0 0.0 -fr 06_coal 1 67 2030 0.0 0.0 -fr 07_gas 1 67 2030 0.0 0.0 -fr 08_non-res 1 67 2030 0.0 0.0 -fr 09_hydro_pump 1 67 2030 0.0 0.0 -fr 01_solar 1 68 2030 1.0 0.0 -fr 02_wind_on 1 68 2030 1.0 0.0 -fr 03_wind_off 1 68 2030 1.0 0.0 -fr 04_res 1 68 2030 1.0 0.0 -fr 05_nuclear 1 68 2030 0.0 0.0 -fr 06_coal 1 68 2030 0.0 0.0 -fr 07_gas 1 68 2030 0.0 0.0 -fr 08_non-res 1 68 2030 0.0 0.0 -fr 09_hydro_pump 1 68 2030 0.0 0.0 -fr 01_solar 1 69 2030 1.0 0.0 -fr 02_wind_on 1 69 2030 1.0 0.0 -fr 03_wind_off 1 69 2030 1.0 0.0 -fr 04_res 1 69 2030 1.0 0.0 -fr 05_nuclear 1 69 2030 0.0 0.0 -fr 06_coal 1 69 2030 0.0 0.0 -fr 07_gas 1 69 2030 0.0 0.0 -fr 08_non-res 1 69 2030 0.0 0.0 -fr 09_hydro_pump 1 69 2030 0.0 0.0 -fr 01_solar 1 70 2030 1.0 0.0 -fr 02_wind_on 1 70 2030 1.0 0.0 -fr 03_wind_off 1 70 2030 1.0 0.0 -fr 04_res 1 70 2030 1.0 0.0 -fr 05_nuclear 1 70 2030 0.0 0.0 -fr 06_coal 1 70 2030 0.0 0.0 -fr 07_gas 1 70 2030 0.0 0.0 -fr 08_non-res 1 70 2030 0.0 0.0 -fr 09_hydro_pump 1 70 2030 0.0 0.0 -fr 01_solar 1 71 2030 1.0 0.0 -fr 02_wind_on 1 71 2030 1.0 0.0 -fr 03_wind_off 1 71 2030 1.0 0.0 -fr 04_res 1 71 2030 1.0 0.0 -fr 05_nuclear 1 71 2030 0.0 0.0 -fr 06_coal 1 71 2030 0.0 0.0 -fr 07_gas 1 71 2030 0.0 0.0 -fr 08_non-res 1 71 2030 0.0 0.0 -fr 09_hydro_pump 1 71 2030 0.0 0.0 -fr 01_solar 1 72 2030 1.0 0.0 -fr 02_wind_on 1 72 2030 1.0 0.0 -fr 03_wind_off 1 72 2030 1.0 0.0 -fr 04_res 1 72 2030 1.0 0.0 -fr 05_nuclear 1 72 2030 0.0 0.0 -fr 06_coal 1 72 2030 0.0 0.0 -fr 07_gas 1 72 2030 0.0 0.0 -fr 08_non-res 1 72 2030 0.0 0.0 -fr 09_hydro_pump 1 72 2030 0.0 0.0 -fr 01_solar 1 73 2030 1.0 0.0 -fr 02_wind_on 1 73 2030 1.0 0.0 -fr 03_wind_off 1 73 2030 1.0 0.0 -fr 04_res 1 73 2030 1.0 0.0 -fr 05_nuclear 1 73 2030 0.0 0.0 -fr 06_coal 1 73 2030 0.0 0.0 -fr 07_gas 1 73 2030 0.0 0.0 -fr 08_non-res 1 73 2030 0.0 0.0 -fr 09_hydro_pump 1 73 2030 0.0 0.0 -fr 01_solar 1 74 2030 1.0 0.0 -fr 02_wind_on 1 74 2030 1.0 0.0 -fr 03_wind_off 1 74 2030 1.0 0.0 -fr 04_res 1 74 2030 1.0 0.0 -fr 05_nuclear 1 74 2030 0.0 0.0 -fr 06_coal 1 74 2030 0.0 0.0 -fr 07_gas 1 74 2030 0.0 0.0 -fr 08_non-res 1 74 2030 0.0 0.0 -fr 09_hydro_pump 1 74 2030 0.0 0.0 -fr 01_solar 1 75 2030 1.0 0.0 -fr 02_wind_on 1 75 2030 1.0 0.0 -fr 03_wind_off 1 75 2030 1.0 0.0 -fr 04_res 1 75 2030 1.0 0.0 -fr 05_nuclear 1 75 2030 0.0 0.0 -fr 06_coal 1 75 2030 0.0 0.0 -fr 07_gas 1 75 2030 0.0 0.0 -fr 08_non-res 1 75 2030 0.0 0.0 -fr 09_hydro_pump 1 75 2030 0.0 0.0 -fr 01_solar 1 76 2030 1.0 0.0 -fr 02_wind_on 1 76 2030 1.0 0.0 -fr 03_wind_off 1 76 2030 1.0 0.0 -fr 04_res 1 76 2030 1.0 0.0 -fr 05_nuclear 1 76 2030 0.0 0.0 -fr 06_coal 1 76 2030 0.0 0.0 -fr 07_gas 1 76 2030 0.0 0.0 -fr 08_non-res 1 76 2030 0.0 0.0 -fr 09_hydro_pump 1 76 2030 0.0 0.0 -fr 01_solar 1 77 2030 1.0 0.0 -fr 02_wind_on 1 77 2030 1.0 0.0 -fr 03_wind_off 1 77 2030 1.0 0.0 -fr 04_res 1 77 2030 1.0 0.0 -fr 05_nuclear 1 77 2030 0.0 0.0 -fr 06_coal 1 77 2030 0.0 0.0 -fr 07_gas 1 77 2030 0.0 0.0 -fr 08_non-res 1 77 2030 0.0 0.0 -fr 09_hydro_pump 1 77 2030 0.0 0.0 -fr 01_solar 1 78 2030 1.0 0.0 -fr 02_wind_on 1 78 2030 1.0 0.0 -fr 03_wind_off 1 78 2030 1.0 0.0 -fr 04_res 1 78 2030 1.0 0.0 -fr 05_nuclear 1 78 2030 0.0 0.0 -fr 06_coal 1 78 2030 0.0 0.0 -fr 07_gas 1 78 2030 0.0 0.0 -fr 08_non-res 1 78 2030 0.0 0.0 -fr 09_hydro_pump 1 78 2030 0.0 0.0 -fr 01_solar 1 79 2030 1.0 0.0 -fr 02_wind_on 1 79 2030 1.0 0.0 -fr 03_wind_off 1 79 2030 1.0 0.0 -fr 04_res 1 79 2030 1.0 0.0 -fr 05_nuclear 1 79 2030 0.0 0.0 -fr 06_coal 1 79 2030 0.0 0.0 -fr 07_gas 1 79 2030 0.0 0.0 -fr 08_non-res 1 79 2030 0.0 0.0 -fr 09_hydro_pump 1 79 2030 0.0 0.0 -fr 01_solar 1 80 2030 1.0 0.0 -fr 02_wind_on 1 80 2030 1.0 0.0 -fr 03_wind_off 1 80 2030 1.0 0.0 -fr 04_res 1 80 2030 1.0 0.0 -fr 05_nuclear 1 80 2030 0.0 0.0 -fr 06_coal 1 80 2030 0.0 0.0 -fr 07_gas 1 80 2030 0.0 0.0 -fr 08_non-res 1 80 2030 0.0 0.0 -fr 09_hydro_pump 1 80 2030 0.0 0.0 -fr 01_solar 1 81 2030 1.0 0.0 -fr 02_wind_on 1 81 2030 1.0 0.0 -fr 03_wind_off 1 81 2030 1.0 0.0 -fr 04_res 1 81 2030 1.0 0.0 -fr 05_nuclear 1 81 2030 0.0 0.0 -fr 06_coal 1 81 2030 0.0 0.0 -fr 07_gas 1 81 2030 0.0 0.0 -fr 08_non-res 1 81 2030 0.0 0.0 -fr 09_hydro_pump 1 81 2030 0.0 0.0 -fr 01_solar 1 82 2030 1.0 0.0 -fr 02_wind_on 1 82 2030 1.0 0.0 -fr 03_wind_off 1 82 2030 1.0 0.0 -fr 04_res 1 82 2030 1.0 0.0 -fr 05_nuclear 1 82 2030 1.0 0.0 -fr 06_coal 1 82 2030 0.0 0.0 -fr 07_gas 1 82 2030 0.0 0.0 -fr 08_non-res 1 82 2030 0.0 0.0 -fr 09_hydro_pump 1 82 2030 0.0 0.0 -fr 01_solar 1 83 2030 1.0 0.0 -fr 02_wind_on 1 83 2030 1.0 0.0 -fr 03_wind_off 1 83 2030 1.0 0.0 -fr 04_res 1 83 2030 1.0 0.0 -fr 05_nuclear 1 83 2030 1.0 0.0 -fr 06_coal 1 83 2030 0.0 0.0 -fr 07_gas 1 83 2030 0.0 0.0 -fr 08_non-res 1 83 2030 0.0 0.0 -fr 09_hydro_pump 1 83 2030 0.0 0.0 -fr 01_solar 1 84 2030 1.0 0.0 -fr 02_wind_on 1 84 2030 1.0 0.0 -fr 03_wind_off 1 84 2030 1.0 0.0 -fr 04_res 1 84 2030 1.0 0.0 -fr 05_nuclear 1 84 2030 1.0 0.0 -fr 06_coal 1 84 2030 0.0 0.0 -fr 07_gas 1 84 2030 0.0 0.0 -fr 08_non-res 1 84 2030 0.0 0.0 -fr 09_hydro_pump 1 84 2030 0.0 0.0 -fr 01_solar 1 85 2030 1.0 0.0 -fr 02_wind_on 1 85 2030 1.0 0.0 -fr 03_wind_off 1 85 2030 1.0 0.0 -fr 04_res 1 85 2030 1.0 0.0 -fr 05_nuclear 1 85 2030 1.0 0.0 -fr 06_coal 1 85 2030 0.0 0.0 -fr 07_gas 1 85 2030 0.0 0.0 -fr 08_non-res 1 85 2030 0.0 0.0 -fr 09_hydro_pump 1 85 2030 0.0 0.0 -fr 01_solar 1 86 2030 1.0 0.0 -fr 02_wind_on 1 86 2030 1.0 0.0 -fr 03_wind_off 1 86 2030 1.0 0.0 -fr 04_res 1 86 2030 1.0 0.0 -fr 05_nuclear 1 86 2030 1.0 0.0 -fr 06_coal 1 86 2030 0.0 0.0 -fr 07_gas 1 86 2030 0.0 0.0 -fr 08_non-res 1 86 2030 0.0 0.0 -fr 09_hydro_pump 1 86 2030 0.0 0.0 -fr 01_solar 1 87 2030 1.0 0.0 -fr 02_wind_on 1 87 2030 1.0 0.0 -fr 03_wind_off 1 87 2030 1.0 0.0 -fr 04_res 1 87 2030 1.0 0.0 -fr 05_nuclear 1 87 2030 1.0 0.0 -fr 06_coal 1 87 2030 0.0 0.0 -fr 07_gas 1 87 2030 0.0 0.0 -fr 08_non-res 1 87 2030 0.0 0.0 -fr 09_hydro_pump 1 87 2030 0.0 0.0 -fr 01_solar 1 88 2030 1.0 0.0 -fr 02_wind_on 1 88 2030 1.0 0.0 -fr 03_wind_off 1 88 2030 1.0 0.0 -fr 04_res 1 88 2030 1.0 0.0 -fr 05_nuclear 1 88 2030 1.0 0.0 -fr 06_coal 1 88 2030 0.0 0.0 -fr 07_gas 1 88 2030 0.0 0.0 -fr 08_non-res 1 88 2030 0.0 0.0 -fr 09_hydro_pump 1 88 2030 0.0 0.0 -fr 01_solar 1 89 2030 1.0 0.0 -fr 02_wind_on 1 89 2030 1.0 0.0 -fr 03_wind_off 1 89 2030 1.0 0.0 -fr 04_res 1 89 2030 1.0 0.0 -fr 05_nuclear 1 89 2030 1.0 0.0 -fr 06_coal 1 89 2030 0.0 0.0 -fr 07_gas 1 89 2030 0.0 0.0 -fr 08_non-res 1 89 2030 0.0 0.0 -fr 09_hydro_pump 1 89 2030 0.0 0.0 -fr 01_solar 1 90 2030 1.0 0.0 -fr 02_wind_on 1 90 2030 1.0 0.0 -fr 03_wind_off 1 90 2030 1.0 0.0 -fr 04_res 1 90 2030 1.0 0.0 -fr 05_nuclear 1 90 2030 1.0 0.0 -fr 06_coal 1 90 2030 0.0 0.0 -fr 07_gas 1 90 2030 0.0 0.0 -fr 08_non-res 1 90 2030 0.0 0.0 -fr 09_hydro_pump 1 90 2030 0.0 0.0 -fr 01_solar 1 91 2030 1.0 0.0 -fr 02_wind_on 1 91 2030 1.0 0.0 -fr 03_wind_off 1 91 2030 1.0 0.0 -fr 04_res 1 91 2030 1.0 0.0 -fr 05_nuclear 1 91 2030 1.0 0.0 -fr 06_coal 1 91 2030 0.0 0.0 -fr 07_gas 1 91 2030 0.0 0.0 -fr 08_non-res 1 91 2030 0.0 0.0 -fr 09_hydro_pump 1 91 2030 0.0 0.0 -fr 01_solar 1 92 2030 1.0 0.0 -fr 02_wind_on 1 92 2030 1.0 0.0 -fr 03_wind_off 1 92 2030 1.0 0.0 -fr 04_res 1 92 2030 1.0 0.0 -fr 05_nuclear 1 92 2030 1.0 0.0 -fr 06_coal 1 92 2030 0.0 0.0 -fr 07_gas 1 92 2030 0.0 0.0 -fr 08_non-res 1 92 2030 0.0 0.0 -fr 09_hydro_pump 1 92 2030 0.0 0.0 -fr 01_solar 1 93 2030 1.0 0.0 -fr 02_wind_on 1 93 2030 1.0 0.0 -fr 03_wind_off 1 93 2030 1.0 0.0 -fr 04_res 1 93 2030 1.0 0.0 -fr 05_nuclear 1 93 2030 1.0 0.0 -fr 06_coal 1 93 2030 0.0 0.0 -fr 07_gas 1 93 2030 0.0 0.0 -fr 08_non-res 1 93 2030 0.0 0.0 -fr 09_hydro_pump 1 93 2030 0.0 0.0 -fr 01_solar 1 94 2030 1.0 0.0 -fr 02_wind_on 1 94 2030 1.0 0.0 -fr 03_wind_off 1 94 2030 1.0 0.0 -fr 04_res 1 94 2030 1.0 0.0 -fr 05_nuclear 1 94 2030 1.0 0.0 -fr 06_coal 1 94 2030 0.0 0.0 -fr 07_gas 1 94 2030 0.0 0.0 -fr 08_non-res 1 94 2030 0.0 0.0 -fr 09_hydro_pump 1 94 2030 0.0 0.0 -fr 01_solar 1 95 2030 1.0 0.0 -fr 02_wind_on 1 95 2030 1.0 0.0 -fr 03_wind_off 1 95 2030 1.0 0.0 -fr 04_res 1 95 2030 1.0 0.0 -fr 05_nuclear 1 95 2030 1.0 0.0 -fr 06_coal 1 95 2030 0.0 0.0 -fr 07_gas 1 95 2030 0.0 0.0 -fr 08_non-res 1 95 2030 0.0 0.0 -fr 09_hydro_pump 1 95 2030 0.0 0.0 -fr 01_solar 1 96 2030 1.0 0.0 -fr 02_wind_on 1 96 2030 1.0 0.0 -fr 03_wind_off 1 96 2030 1.0 0.0 -fr 04_res 1 96 2030 1.0 0.0 -fr 05_nuclear 1 96 2030 1.0 0.0 -fr 06_coal 1 96 2030 0.0 0.0 -fr 07_gas 1 96 2030 0.0 0.0 -fr 08_non-res 1 96 2030 0.0 0.0 -fr 09_hydro_pump 1 96 2030 0.0 0.0 -fr 01_solar 1 97 2030 1.0 0.0 -fr 02_wind_on 1 97 2030 1.0 0.0 -fr 03_wind_off 1 97 2030 1.0 0.0 -fr 04_res 1 97 2030 1.0 0.0 -fr 05_nuclear 1 97 2030 1.0 0.0 -fr 06_coal 1 97 2030 0.0 0.0 -fr 07_gas 1 97 2030 0.0 0.0 -fr 08_non-res 1 97 2030 0.0 0.0 -fr 09_hydro_pump 1 97 2030 0.0 0.0 -fr 01_solar 1 98 2030 1.0 0.0 -fr 02_wind_on 1 98 2030 1.0 0.0 -fr 03_wind_off 1 98 2030 1.0 0.0 -fr 04_res 1 98 2030 1.0 0.0 -fr 05_nuclear 1 98 2030 1.0 0.0 -fr 06_coal 1 98 2030 0.0 0.0 -fr 07_gas 1 98 2030 0.0 0.0 -fr 08_non-res 1 98 2030 0.0 0.0 -fr 09_hydro_pump 1 98 2030 0.0 0.0 -fr 01_solar 1 99 2030 1.0 0.0 -fr 02_wind_on 1 99 2030 1.0 0.0 -fr 03_wind_off 1 99 2030 1.0 0.0 -fr 04_res 1 99 2030 1.0 0.0 -fr 05_nuclear 1 99 2030 1.0 0.0 -fr 06_coal 1 99 2030 0.0 0.0 -fr 07_gas 1 99 2030 0.0 0.0 -fr 08_non-res 1 99 2030 0.0 0.0 -fr 09_hydro_pump 1 99 2030 0.0 0.0 -fr 01_solar 1 100 2030 1.0 0.0 -fr 02_wind_on 1 100 2030 1.0 0.0 -fr 03_wind_off 1 100 2030 1.0 0.0 -fr 04_res 1 100 2030 1.0 0.0 -fr 05_nuclear 1 100 2030 1.0 0.0 -fr 06_coal 1 100 2030 0.0 0.0 -fr 07_gas 1 100 2030 0.0 0.0 -fr 08_non-res 1 100 2030 0.0 0.0 -fr 09_hydro_pump 1 100 2030 0.0 0.0 -fr 01_solar 1 101 2030 1.0 0.0 -fr 02_wind_on 1 101 2030 1.0 0.0 -fr 03_wind_off 1 101 2030 1.0 0.0 -fr 04_res 1 101 2030 1.0 0.0 -fr 05_nuclear 1 101 2030 1.0 0.0 -fr 06_coal 1 101 2030 0.0 0.0 -fr 07_gas 1 101 2030 0.0 0.0 -fr 08_non-res 1 101 2030 0.0 0.0 -fr 09_hydro_pump 1 101 2030 0.0 0.0 -fr 01_solar 1 102 2030 1.0 0.0 -fr 02_wind_on 1 102 2030 1.0 0.0 -fr 03_wind_off 1 102 2030 1.0 0.0 -fr 04_res 1 102 2030 1.0 0.0 -fr 05_nuclear 1 102 2030 1.0 0.0 -fr 06_coal 1 102 2030 1.0 0.0 -fr 07_gas 1 102 2030 0.0 0.0 -fr 08_non-res 1 102 2030 0.0 0.0 -fr 09_hydro_pump 1 102 2030 0.0 0.0 -fr 01_solar 1 103 2030 1.0 0.0 -fr 02_wind_on 1 103 2030 1.0 0.0 -fr 03_wind_off 1 103 2030 1.0 0.0 -fr 04_res 1 103 2030 1.0 0.0 -fr 05_nuclear 1 103 2030 1.0 0.0 -fr 06_coal 1 103 2030 1.0 0.0 -fr 07_gas 1 103 2030 0.0 0.0 -fr 08_non-res 1 103 2030 0.0 0.0 -fr 09_hydro_pump 1 103 2030 0.0 0.0 -fr 01_solar 1 104 2030 1.0 0.0 -fr 02_wind_on 1 104 2030 1.0 0.0 -fr 03_wind_off 1 104 2030 1.0 0.0 -fr 04_res 1 104 2030 1.0 0.0 -fr 05_nuclear 1 104 2030 1.0 0.0 -fr 06_coal 1 104 2030 1.0 0.0 -fr 07_gas 1 104 2030 0.0 0.0 -fr 08_non-res 1 104 2030 0.0 0.0 -fr 09_hydro_pump 1 104 2030 0.0 0.0 -fr 01_solar 1 105 2030 1.0 0.0 -fr 02_wind_on 1 105 2030 1.0 0.0 -fr 03_wind_off 1 105 2030 1.0 0.0 -fr 04_res 1 105 2030 1.0 0.0 -fr 05_nuclear 1 105 2030 1.0 0.0 -fr 06_coal 1 105 2030 1.0 0.0 -fr 07_gas 1 105 2030 0.0 0.0 -fr 08_non-res 1 105 2030 0.0 0.0 -fr 09_hydro_pump 1 105 2030 0.0 0.0 -fr 01_solar 1 106 2030 1.0 0.0 -fr 02_wind_on 1 106 2030 1.0 0.0 -fr 03_wind_off 1 106 2030 1.0 0.0 -fr 04_res 1 106 2030 1.0 0.0 -fr 05_nuclear 1 106 2030 1.0 0.0 -fr 06_coal 1 106 2030 1.0 0.0 -fr 07_gas 1 106 2030 0.0 0.0 -fr 08_non-res 1 106 2030 0.0 0.0 -fr 09_hydro_pump 1 106 2030 0.0 0.0 -fr 01_solar 1 107 2030 1.0 0.0 -fr 02_wind_on 1 107 2030 1.0 0.0 -fr 03_wind_off 1 107 2030 1.0 0.0 -fr 04_res 1 107 2030 1.0 0.0 -fr 05_nuclear 1 107 2030 1.0 0.0 -fr 06_coal 1 107 2030 1.0 0.0 -fr 07_gas 1 107 2030 0.0 0.0 -fr 08_non-res 1 107 2030 0.0 0.0 -fr 09_hydro_pump 1 107 2030 0.0 0.0 -fr 01_solar 1 108 2030 1.0 0.0 -fr 02_wind_on 1 108 2030 1.0 0.0 -fr 03_wind_off 1 108 2030 1.0 0.0 -fr 04_res 1 108 2030 1.0 0.0 -fr 05_nuclear 1 108 2030 1.0 0.0 -fr 06_coal 1 108 2030 1.0 0.0 -fr 07_gas 1 108 2030 0.0 0.0 -fr 08_non-res 1 108 2030 0.0 0.0 -fr 09_hydro_pump 1 108 2030 0.0 0.0 -fr 01_solar 1 109 2030 1.0 0.0 -fr 02_wind_on 1 109 2030 1.0 0.0 -fr 03_wind_off 1 109 2030 1.0 0.0 -fr 04_res 1 109 2030 1.0 0.0 -fr 05_nuclear 1 109 2030 1.0 0.0 -fr 06_coal 1 109 2030 1.0 0.0 -fr 07_gas 1 109 2030 0.0 0.0 -fr 08_non-res 1 109 2030 0.0 0.0 -fr 09_hydro_pump 1 109 2030 0.0 0.0 -fr 01_solar 1 110 2030 1.0 0.0 -fr 02_wind_on 1 110 2030 1.0 0.0 -fr 03_wind_off 1 110 2030 1.0 0.0 -fr 04_res 1 110 2030 1.0 0.0 -fr 05_nuclear 1 110 2030 1.0 0.0 -fr 06_coal 1 110 2030 1.0 0.0 -fr 07_gas 1 110 2030 0.0 0.0 -fr 08_non-res 1 110 2030 0.0 0.0 -fr 09_hydro_pump 1 110 2030 0.0 0.0 -fr 01_solar 1 111 2030 1.0 0.0 -fr 02_wind_on 1 111 2030 1.0 0.0 -fr 03_wind_off 1 111 2030 1.0 0.0 -fr 04_res 1 111 2030 1.0 0.0 -fr 05_nuclear 1 111 2030 1.0 0.0 -fr 06_coal 1 111 2030 1.0 0.0 -fr 07_gas 1 111 2030 0.0 0.0 -fr 08_non-res 1 111 2030 0.0 0.0 -fr 09_hydro_pump 1 111 2030 0.0 0.0 -fr 01_solar 1 112 2030 1.0 0.0 -fr 02_wind_on 1 112 2030 1.0 0.0 -fr 03_wind_off 1 112 2030 1.0 0.0 -fr 04_res 1 112 2030 1.0 0.0 -fr 05_nuclear 1 112 2030 1.0 0.0 -fr 06_coal 1 112 2030 1.0 0.0 -fr 07_gas 1 112 2030 0.0 0.0 -fr 08_non-res 1 112 2030 0.0 0.0 -fr 09_hydro_pump 1 112 2030 0.0 0.0 -fr 01_solar 1 113 2030 1.0 0.0 -fr 02_wind_on 1 113 2030 1.0 0.0 -fr 03_wind_off 1 113 2030 1.0 0.0 -fr 04_res 1 113 2030 1.0 0.0 -fr 05_nuclear 1 113 2030 1.0 0.0 -fr 06_coal 1 113 2030 1.0 0.0 -fr 07_gas 1 113 2030 0.0 0.0 -fr 08_non-res 1 113 2030 0.0 0.0 -fr 09_hydro_pump 1 113 2030 0.0 0.0 -fr 01_solar 1 114 2030 1.0 0.0 -fr 02_wind_on 1 114 2030 1.0 0.0 -fr 03_wind_off 1 114 2030 1.0 0.0 -fr 04_res 1 114 2030 1.0 0.0 -fr 05_nuclear 1 114 2030 1.0 0.0 -fr 06_coal 1 114 2030 1.0 0.0 -fr 07_gas 1 114 2030 0.0 0.0 -fr 08_non-res 1 114 2030 0.0 0.0 -fr 09_hydro_pump 1 114 2030 0.0 0.0 -fr 01_solar 1 115 2030 1.0 0.0 -fr 02_wind_on 1 115 2030 1.0 0.0 -fr 03_wind_off 1 115 2030 1.0 0.0 -fr 04_res 1 115 2030 1.0 0.0 -fr 05_nuclear 1 115 2030 1.0 0.0 -fr 06_coal 1 115 2030 1.0 0.0 -fr 07_gas 1 115 2030 0.0 0.0 -fr 08_non-res 1 115 2030 0.0 0.0 -fr 09_hydro_pump 1 115 2030 0.0 0.0 -fr 01_solar 1 116 2030 1.0 0.0 -fr 02_wind_on 1 116 2030 1.0 0.0 -fr 03_wind_off 1 116 2030 1.0 0.0 -fr 04_res 1 116 2030 1.0 0.0 -fr 05_nuclear 1 116 2030 1.0 0.0 -fr 06_coal 1 116 2030 1.0 0.0 -fr 07_gas 1 116 2030 0.0 0.0 -fr 08_non-res 1 116 2030 0.0 0.0 -fr 09_hydro_pump 1 116 2030 0.0 0.0 -fr 01_solar 1 117 2030 1.0 0.0 -fr 02_wind_on 1 117 2030 1.0 0.0 -fr 03_wind_off 1 117 2030 1.0 0.0 -fr 04_res 1 117 2030 1.0 0.0 -fr 05_nuclear 1 117 2030 1.0 0.0 -fr 06_coal 1 117 2030 1.0 0.0 -fr 07_gas 1 117 2030 0.0 0.0 -fr 08_non-res 1 117 2030 0.0 0.0 -fr 09_hydro_pump 1 117 2030 0.0 0.0 -fr 01_solar 1 118 2030 1.0 0.0 -fr 02_wind_on 1 118 2030 1.0 0.0 -fr 03_wind_off 1 118 2030 1.0 0.0 -fr 04_res 1 118 2030 1.0 0.0 -fr 05_nuclear 1 118 2030 1.0 0.0 -fr 06_coal 1 118 2030 1.0 0.0 -fr 07_gas 1 118 2030 0.0 0.0 -fr 08_non-res 1 118 2030 0.0 0.0 -fr 09_hydro_pump 1 118 2030 0.0 0.0 -fr 01_solar 1 119 2030 1.0 0.0 -fr 02_wind_on 1 119 2030 1.0 0.0 -fr 03_wind_off 1 119 2030 1.0 0.0 -fr 04_res 1 119 2030 1.0 0.0 -fr 05_nuclear 1 119 2030 1.0 0.0 -fr 06_coal 1 119 2030 1.0 0.0 -fr 07_gas 1 119 2030 0.0 0.0 -fr 08_non-res 1 119 2030 0.0 0.0 -fr 09_hydro_pump 1 119 2030 0.0 0.0 -fr 01_solar 1 120 2030 1.0 0.0 -fr 02_wind_on 1 120 2030 1.0 0.0 -fr 03_wind_off 1 120 2030 1.0 0.0 -fr 04_res 1 120 2030 1.0 0.0 -fr 05_nuclear 1 120 2030 1.0 0.0 -fr 06_coal 1 120 2030 1.0 0.0 -fr 07_gas 1 120 2030 0.0 0.0 -fr 08_non-res 1 120 2030 0.0 0.0 -fr 09_hydro_pump 1 120 2030 0.0 0.0 -fr 01_solar 1 121 2030 1.0 0.0 -fr 02_wind_on 1 121 2030 1.0 0.0 -fr 03_wind_off 1 121 2030 1.0 0.0 -fr 04_res 1 121 2030 1.0 0.0 -fr 05_nuclear 1 121 2030 1.0 0.0 -fr 06_coal 1 121 2030 1.0 0.0 -fr 07_gas 1 121 2030 0.0 0.0 -fr 08_non-res 1 121 2030 0.0 0.0 -fr 09_hydro_pump 1 121 2030 0.0 0.0 -fr 01_solar 1 122 2030 1.0 0.0 -fr 02_wind_on 1 122 2030 1.0 0.0 -fr 03_wind_off 1 122 2030 1.0 0.0 -fr 04_res 1 122 2030 1.0 0.0 -fr 05_nuclear 1 122 2030 1.0 0.0 -fr 06_coal 1 122 2030 1.0 0.0 -fr 07_gas 1 122 2030 1.0 0.0 -fr 08_non-res 1 122 2030 0.0 0.0 -fr 09_hydro_pump 1 122 2030 0.0 0.0 -fr 01_solar 1 123 2030 1.0 0.0 -fr 02_wind_on 1 123 2030 1.0 0.0 -fr 03_wind_off 1 123 2030 1.0 0.0 -fr 04_res 1 123 2030 1.0 0.0 -fr 05_nuclear 1 123 2030 1.0 0.0 -fr 06_coal 1 123 2030 1.0 0.0 -fr 07_gas 1 123 2030 1.0 0.0 -fr 08_non-res 1 123 2030 0.0 0.0 -fr 09_hydro_pump 1 123 2030 0.0 0.0 -fr 01_solar 1 124 2030 1.0 0.0 -fr 02_wind_on 1 124 2030 1.0 0.0 -fr 03_wind_off 1 124 2030 1.0 0.0 -fr 04_res 1 124 2030 1.0 0.0 -fr 05_nuclear 1 124 2030 1.0 0.0 -fr 06_coal 1 124 2030 1.0 0.0 -fr 07_gas 1 124 2030 1.0 0.0 -fr 08_non-res 1 124 2030 0.0 0.0 -fr 09_hydro_pump 1 124 2030 0.0 0.0 -fr 01_solar 1 125 2030 1.0 0.0 -fr 02_wind_on 1 125 2030 1.0 0.0 -fr 03_wind_off 1 125 2030 1.0 0.0 -fr 04_res 1 125 2030 1.0 0.0 -fr 05_nuclear 1 125 2030 1.0 0.0 -fr 06_coal 1 125 2030 1.0 0.0 -fr 07_gas 1 125 2030 1.0 0.0 -fr 08_non-res 1 125 2030 0.0 0.0 -fr 09_hydro_pump 1 125 2030 0.0 0.0 -fr 01_solar 1 126 2030 1.0 0.0 -fr 02_wind_on 1 126 2030 1.0 0.0 -fr 03_wind_off 1 126 2030 1.0 0.0 -fr 04_res 1 126 2030 1.0 0.0 -fr 05_nuclear 1 126 2030 1.0 0.0 -fr 06_coal 1 126 2030 1.0 0.0 -fr 07_gas 1 126 2030 1.0 0.0 -fr 08_non-res 1 126 2030 0.0 0.0 -fr 09_hydro_pump 1 126 2030 0.0 0.0 -fr 01_solar 1 127 2030 1.0 0.0 -fr 02_wind_on 1 127 2030 1.0 0.0 -fr 03_wind_off 1 127 2030 1.0 0.0 -fr 04_res 1 127 2030 1.0 0.0 -fr 05_nuclear 1 127 2030 1.0 0.0 -fr 06_coal 1 127 2030 1.0 0.0 -fr 07_gas 1 127 2030 1.0 0.0 -fr 08_non-res 1 127 2030 0.0 0.0 -fr 09_hydro_pump 1 127 2030 0.0 0.0 -fr 01_solar 1 128 2030 1.0 0.0 -fr 02_wind_on 1 128 2030 1.0 0.0 -fr 03_wind_off 1 128 2030 1.0 0.0 -fr 04_res 1 128 2030 1.0 0.0 -fr 05_nuclear 1 128 2030 1.0 0.0 -fr 06_coal 1 128 2030 1.0 0.0 -fr 07_gas 1 128 2030 1.0 0.0 -fr 08_non-res 1 128 2030 0.0 0.0 -fr 09_hydro_pump 1 128 2030 0.0 0.0 -fr 01_solar 1 129 2030 1.0 0.0 -fr 02_wind_on 1 129 2030 1.0 0.0 -fr 03_wind_off 1 129 2030 1.0 0.0 -fr 04_res 1 129 2030 1.0 0.0 -fr 05_nuclear 1 129 2030 1.0 0.0 -fr 06_coal 1 129 2030 1.0 0.0 -fr 07_gas 1 129 2030 1.0 0.0 -fr 08_non-res 1 129 2030 0.0 0.0 -fr 09_hydro_pump 1 129 2030 0.0 0.0 -fr 01_solar 1 130 2030 1.0 0.0 -fr 02_wind_on 1 130 2030 1.0 0.0 -fr 03_wind_off 1 130 2030 1.0 0.0 -fr 04_res 1 130 2030 1.0 0.0 -fr 05_nuclear 1 130 2030 1.0 0.0 -fr 06_coal 1 130 2030 1.0 0.0 -fr 07_gas 1 130 2030 1.0 0.0 -fr 08_non-res 1 130 2030 0.0 0.0 -fr 09_hydro_pump 1 130 2030 0.0 0.0 -fr 01_solar 1 131 2030 1.0 0.0 -fr 02_wind_on 1 131 2030 1.0 0.0 -fr 03_wind_off 1 131 2030 1.0 0.0 -fr 04_res 1 131 2030 1.0 0.0 -fr 05_nuclear 1 131 2030 1.0 0.0 -fr 06_coal 1 131 2030 1.0 0.0 -fr 07_gas 1 131 2030 1.0 0.0 -fr 08_non-res 1 131 2030 0.0 0.0 -fr 09_hydro_pump 1 131 2030 0.0 0.0 -fr 01_solar 1 132 2030 1.0 0.0 -fr 02_wind_on 1 132 2030 1.0 0.0 -fr 03_wind_off 1 132 2030 1.0 0.0 -fr 04_res 1 132 2030 1.0 0.0 -fr 05_nuclear 1 132 2030 1.0 0.0 -fr 06_coal 1 132 2030 1.0 0.0 -fr 07_gas 1 132 2030 1.0 0.0 -fr 08_non-res 1 132 2030 0.0 0.0 -fr 09_hydro_pump 1 132 2030 0.0 0.0 -fr 01_solar 1 133 2030 1.0 0.0 -fr 02_wind_on 1 133 2030 1.0 0.0 -fr 03_wind_off 1 133 2030 1.0 0.0 -fr 04_res 1 133 2030 1.0 0.0 -fr 05_nuclear 1 133 2030 1.0 0.0 -fr 06_coal 1 133 2030 1.0 0.0 -fr 07_gas 1 133 2030 1.0 0.0 -fr 08_non-res 1 133 2030 0.0 0.0 -fr 09_hydro_pump 1 133 2030 0.0 0.0 -fr 01_solar 1 134 2030 1.0 0.0 -fr 02_wind_on 1 134 2030 1.0 0.0 -fr 03_wind_off 1 134 2030 1.0 0.0 -fr 04_res 1 134 2030 1.0 0.0 -fr 05_nuclear 1 134 2030 1.0 0.0 -fr 06_coal 1 134 2030 1.0 0.0 -fr 07_gas 1 134 2030 1.0 0.0 -fr 08_non-res 1 134 2030 0.0 0.0 -fr 09_hydro_pump 1 134 2030 0.0 0.0 -fr 01_solar 1 135 2030 1.0 0.0 -fr 02_wind_on 1 135 2030 1.0 0.0 -fr 03_wind_off 1 135 2030 1.0 0.0 -fr 04_res 1 135 2030 1.0 0.0 -fr 05_nuclear 1 135 2030 1.0 0.0 -fr 06_coal 1 135 2030 1.0 0.0 -fr 07_gas 1 135 2030 1.0 0.0 -fr 08_non-res 1 135 2030 0.0 0.0 -fr 09_hydro_pump 1 135 2030 0.0 0.0 -fr 01_solar 1 136 2030 1.0 0.0 -fr 02_wind_on 1 136 2030 1.0 0.0 -fr 03_wind_off 1 136 2030 1.0 0.0 -fr 04_res 1 136 2030 1.0 0.0 -fr 05_nuclear 1 136 2030 1.0 0.0 -fr 06_coal 1 136 2030 1.0 0.0 -fr 07_gas 1 136 2030 1.0 0.0 -fr 08_non-res 1 136 2030 0.0 0.0 -fr 09_hydro_pump 1 136 2030 0.0 0.0 -fr 01_solar 1 137 2030 1.0 0.0 -fr 02_wind_on 1 137 2030 1.0 0.0 -fr 03_wind_off 1 137 2030 1.0 0.0 -fr 04_res 1 137 2030 1.0 0.0 -fr 05_nuclear 1 137 2030 1.0 0.0 -fr 06_coal 1 137 2030 1.0 0.0 -fr 07_gas 1 137 2030 1.0 0.0 -fr 08_non-res 1 137 2030 0.0 0.0 -fr 09_hydro_pump 1 137 2030 0.0 0.0 -fr 01_solar 1 138 2030 1.0 0.0 -fr 02_wind_on 1 138 2030 1.0 0.0 -fr 03_wind_off 1 138 2030 1.0 0.0 -fr 04_res 1 138 2030 1.0 0.0 -fr 05_nuclear 1 138 2030 1.0 0.0 -fr 06_coal 1 138 2030 1.0 0.0 -fr 07_gas 1 138 2030 1.0 0.0 -fr 08_non-res 1 138 2030 0.0 0.0 -fr 09_hydro_pump 1 138 2030 0.0 0.0 -fr 01_solar 1 139 2030 1.0 0.0 -fr 02_wind_on 1 139 2030 1.0 0.0 -fr 03_wind_off 1 139 2030 1.0 0.0 -fr 04_res 1 139 2030 1.0 0.0 -fr 05_nuclear 1 139 2030 1.0 0.0 -fr 06_coal 1 139 2030 1.0 0.0 -fr 07_gas 1 139 2030 1.0 0.0 -fr 08_non-res 1 139 2030 0.0 0.0 -fr 09_hydro_pump 1 139 2030 0.0 0.0 -fr 01_solar 1 140 2030 1.0 0.0 -fr 02_wind_on 1 140 2030 1.0 0.0 -fr 03_wind_off 1 140 2030 1.0 0.0 -fr 04_res 1 140 2030 1.0 0.0 -fr 05_nuclear 1 140 2030 1.0 0.0 -fr 06_coal 1 140 2030 1.0 0.0 -fr 07_gas 1 140 2030 1.0 0.0 -fr 08_non-res 1 140 2030 0.0 0.0 -fr 09_hydro_pump 1 140 2030 0.0 0.0 -fr 01_solar 1 141 2030 1.0 0.0 -fr 02_wind_on 1 141 2030 1.0 0.0 -fr 03_wind_off 1 141 2030 1.0 0.0 -fr 04_res 1 141 2030 1.0 0.0 -fr 05_nuclear 1 141 2030 1.0 0.0 -fr 06_coal 1 141 2030 1.0 0.0 -fr 07_gas 1 141 2030 1.0 0.0 -fr 08_non-res 1 141 2030 0.0 0.0 -fr 09_hydro_pump 1 141 2030 0.0 0.0 -fr 01_solar 1 142 2030 1.0 0.0 -fr 02_wind_on 1 142 2030 1.0 0.0 -fr 03_wind_off 1 142 2030 1.0 0.0 -fr 04_res 1 142 2030 1.0 0.0 -fr 05_nuclear 1 142 2030 1.0 0.0 -fr 06_coal 1 142 2030 1.0 0.0 -fr 07_gas 1 142 2030 1.0 0.0 -fr 08_non-res 1 142 2030 1.0 0.0 -fr 09_hydro_pump 1 142 2030 0.0 0.0 -fr 01_solar 1 143 2030 1.0 0.0 -fr 02_wind_on 1 143 2030 1.0 0.0 -fr 03_wind_off 1 143 2030 1.0 0.0 -fr 04_res 1 143 2030 1.0 0.0 -fr 05_nuclear 1 143 2030 1.0 0.0 -fr 06_coal 1 143 2030 1.0 0.0 -fr 07_gas 1 143 2030 1.0 0.0 -fr 08_non-res 1 143 2030 1.0 0.0 -fr 09_hydro_pump 1 143 2030 0.0 0.0 -fr 01_solar 1 144 2030 1.0 0.0 -fr 02_wind_on 1 144 2030 1.0 0.0 -fr 03_wind_off 1 144 2030 1.0 0.0 -fr 04_res 1 144 2030 1.0 0.0 -fr 05_nuclear 1 144 2030 1.0 0.0 -fr 06_coal 1 144 2030 1.0 0.0 -fr 07_gas 1 144 2030 1.0 0.0 -fr 08_non-res 1 144 2030 1.0 0.0 -fr 09_hydro_pump 1 144 2030 0.0 0.0 -fr 01_solar 1 145 2030 1.0 0.0 -fr 02_wind_on 1 145 2030 1.0 0.0 -fr 03_wind_off 1 145 2030 1.0 0.0 -fr 04_res 1 145 2030 1.0 0.0 -fr 05_nuclear 1 145 2030 1.0 0.0 -fr 06_coal 1 145 2030 1.0 0.0 -fr 07_gas 1 145 2030 1.0 0.0 -fr 08_non-res 1 145 2030 1.0 0.0 -fr 09_hydro_pump 1 145 2030 0.0 0.0 -fr 01_solar 1 146 2030 1.0 0.0 -fr 02_wind_on 1 146 2030 1.0 0.0 -fr 03_wind_off 1 146 2030 1.0 0.0 -fr 04_res 1 146 2030 1.0 0.0 -fr 05_nuclear 1 146 2030 1.0 0.0 -fr 06_coal 1 146 2030 1.0 0.0 -fr 07_gas 1 146 2030 1.0 0.0 -fr 08_non-res 1 146 2030 1.0 0.0 -fr 09_hydro_pump 1 146 2030 0.0 0.0 -fr 01_solar 1 147 2030 1.0 0.0 -fr 02_wind_on 1 147 2030 1.0 0.0 -fr 03_wind_off 1 147 2030 1.0 0.0 -fr 04_res 1 147 2030 1.0 0.0 -fr 05_nuclear 1 147 2030 1.0 0.0 -fr 06_coal 1 147 2030 1.0 0.0 -fr 07_gas 1 147 2030 1.0 0.0 -fr 08_non-res 1 147 2030 1.0 0.0 -fr 09_hydro_pump 1 147 2030 0.0 0.0 -fr 01_solar 1 148 2030 1.0 0.0 -fr 02_wind_on 1 148 2030 1.0 0.0 -fr 03_wind_off 1 148 2030 1.0 0.0 -fr 04_res 1 148 2030 1.0 0.0 -fr 05_nuclear 1 148 2030 1.0 0.0 -fr 06_coal 1 148 2030 1.0 0.0 -fr 07_gas 1 148 2030 1.0 0.0 -fr 08_non-res 1 148 2030 1.0 0.0 -fr 09_hydro_pump 1 148 2030 0.0 0.0 -fr 01_solar 1 149 2030 1.0 0.0 -fr 02_wind_on 1 149 2030 1.0 0.0 -fr 03_wind_off 1 149 2030 1.0 0.0 -fr 04_res 1 149 2030 1.0 0.0 -fr 05_nuclear 1 149 2030 1.0 0.0 -fr 06_coal 1 149 2030 1.0 0.0 -fr 07_gas 1 149 2030 1.0 0.0 -fr 08_non-res 1 149 2030 1.0 0.0 -fr 09_hydro_pump 1 149 2030 0.0 0.0 -fr 01_solar 1 150 2030 1.0 0.0 -fr 02_wind_on 1 150 2030 1.0 0.0 -fr 03_wind_off 1 150 2030 1.0 0.0 -fr 04_res 1 150 2030 1.0 0.0 -fr 05_nuclear 1 150 2030 1.0 0.0 -fr 06_coal 1 150 2030 1.0 0.0 -fr 07_gas 1 150 2030 1.0 0.0 -fr 08_non-res 1 150 2030 1.0 0.0 -fr 09_hydro_pump 1 150 2030 0.0 0.0 -fr 01_solar 1 151 2030 1.0 0.0 -fr 02_wind_on 1 151 2030 1.0 0.0 -fr 03_wind_off 1 151 2030 1.0 0.0 -fr 04_res 1 151 2030 1.0 0.0 -fr 05_nuclear 1 151 2030 1.0 0.0 -fr 06_coal 1 151 2030 1.0 0.0 -fr 07_gas 1 151 2030 1.0 0.0 -fr 08_non-res 1 151 2030 1.0 0.0 -fr 09_hydro_pump 1 151 2030 0.0 0.0 -fr 01_solar 1 152 2030 1.0 0.0 -fr 02_wind_on 1 152 2030 1.0 0.0 -fr 03_wind_off 1 152 2030 1.0 0.0 -fr 04_res 1 152 2030 1.0 0.0 -fr 05_nuclear 1 152 2030 1.0 0.0 -fr 06_coal 1 152 2030 1.0 0.0 -fr 07_gas 1 152 2030 1.0 0.0 -fr 08_non-res 1 152 2030 1.0 0.0 -fr 09_hydro_pump 1 152 2030 0.0 0.0 -fr 01_solar 1 153 2030 1.0 0.0 -fr 02_wind_on 1 153 2030 1.0 0.0 -fr 03_wind_off 1 153 2030 1.0 0.0 -fr 04_res 1 153 2030 1.0 0.0 -fr 05_nuclear 1 153 2030 1.0 0.0 -fr 06_coal 1 153 2030 1.0 0.0 -fr 07_gas 1 153 2030 1.0 0.0 -fr 08_non-res 1 153 2030 1.0 0.0 -fr 09_hydro_pump 1 153 2030 0.0 0.0 -fr 01_solar 1 154 2030 1.0 0.0 -fr 02_wind_on 1 154 2030 1.0 0.0 -fr 03_wind_off 1 154 2030 1.0 0.0 -fr 04_res 1 154 2030 1.0 0.0 -fr 05_nuclear 1 154 2030 1.0 0.0 -fr 06_coal 1 154 2030 1.0 0.0 -fr 07_gas 1 154 2030 1.0 0.0 -fr 08_non-res 1 154 2030 1.0 0.0 -fr 09_hydro_pump 1 154 2030 0.0 0.0 -fr 01_solar 1 155 2030 1.0 0.0 -fr 02_wind_on 1 155 2030 1.0 0.0 -fr 03_wind_off 1 155 2030 1.0 0.0 -fr 04_res 1 155 2030 1.0 0.0 -fr 05_nuclear 1 155 2030 1.0 0.0 -fr 06_coal 1 155 2030 1.0 0.0 -fr 07_gas 1 155 2030 1.0 0.0 -fr 08_non-res 1 155 2030 1.0 0.0 -fr 09_hydro_pump 1 155 2030 0.0 0.0 -fr 01_solar 1 156 2030 1.0 0.0 -fr 02_wind_on 1 156 2030 1.0 0.0 -fr 03_wind_off 1 156 2030 1.0 0.0 -fr 04_res 1 156 2030 1.0 0.0 -fr 05_nuclear 1 156 2030 1.0 0.0 -fr 06_coal 1 156 2030 1.0 0.0 -fr 07_gas 1 156 2030 1.0 0.0 -fr 08_non-res 1 156 2030 1.0 0.0 -fr 09_hydro_pump 1 156 2030 0.0 0.0 -fr 01_solar 1 157 2030 1.0 0.0 -fr 02_wind_on 1 157 2030 1.0 0.0 -fr 03_wind_off 1 157 2030 1.0 0.0 -fr 04_res 1 157 2030 1.0 0.0 -fr 05_nuclear 1 157 2030 1.0 0.0 -fr 06_coal 1 157 2030 1.0 0.0 -fr 07_gas 1 157 2030 1.0 0.0 -fr 08_non-res 1 157 2030 1.0 0.0 -fr 09_hydro_pump 1 157 2030 0.0 0.0 -fr 01_solar 1 158 2030 1.0 0.0 -fr 02_wind_on 1 158 2030 1.0 0.0 -fr 03_wind_off 1 158 2030 1.0 0.0 -fr 04_res 1 158 2030 1.0 0.0 -fr 05_nuclear 1 158 2030 1.0 0.0 -fr 06_coal 1 158 2030 1.0 0.0 -fr 07_gas 1 158 2030 1.0 0.0 -fr 08_non-res 1 158 2030 1.0 0.0 -fr 09_hydro_pump 1 158 2030 0.0 0.0 -fr 01_solar 1 159 2030 1.0 0.0 -fr 02_wind_on 1 159 2030 1.0 0.0 -fr 03_wind_off 1 159 2030 1.0 0.0 -fr 04_res 1 159 2030 1.0 0.0 -fr 05_nuclear 1 159 2030 1.0 0.0 -fr 06_coal 1 159 2030 1.0 0.0 -fr 07_gas 1 159 2030 1.0 0.0 -fr 08_non-res 1 159 2030 1.0 0.0 -fr 09_hydro_pump 1 159 2030 0.0 0.0 -fr 01_solar 1 160 2030 1.0 0.0 -fr 02_wind_on 1 160 2030 1.0 0.0 -fr 03_wind_off 1 160 2030 1.0 0.0 -fr 04_res 1 160 2030 1.0 0.0 -fr 05_nuclear 1 160 2030 1.0 0.0 -fr 06_coal 1 160 2030 1.0 0.0 -fr 07_gas 1 160 2030 1.0 0.0 -fr 08_non-res 1 160 2030 1.0 0.0 -fr 09_hydro_pump 1 160 2030 0.0 0.0 -fr 01_solar 1 161 2030 1.0 0.0 -fr 02_wind_on 1 161 2030 1.0 0.0 -fr 03_wind_off 1 161 2030 1.0 0.0 -fr 04_res 1 161 2030 1.0 0.0 -fr 05_nuclear 1 161 2030 1.0 0.0 -fr 06_coal 1 161 2030 1.0 0.0 -fr 07_gas 1 161 2030 1.0 0.0 -fr 08_non-res 1 161 2030 1.0 0.0 -fr 09_hydro_pump 1 161 2030 0.0 0.0 -fr 01_solar 1 162 2030 1.0 0.0 -fr 02_wind_on 1 162 2030 1.0 0.0 -fr 03_wind_off 1 162 2030 1.0 0.0 -fr 04_res 1 162 2030 1.0 0.0 -fr 05_nuclear 1 162 2030 1.0 0.0 -fr 06_coal 1 162 2030 1.0 0.0 -fr 07_gas 1 162 2030 1.0 0.0 -fr 08_non-res 1 162 2030 1.0 0.0 -fr 09_hydro_pump 1 162 2030 1.0 0.0 -fr 01_solar 1 163 2030 1.0 0.0 -fr 02_wind_on 1 163 2030 1.0 0.0 -fr 03_wind_off 1 163 2030 1.0 0.0 -fr 04_res 1 163 2030 1.0 0.0 -fr 05_nuclear 1 163 2030 1.0 0.0 -fr 06_coal 1 163 2030 1.0 0.0 -fr 07_gas 1 163 2030 1.0 0.0 -fr 08_non-res 1 163 2030 1.0 0.0 -fr 09_hydro_pump 1 163 2030 1.0 0.0 -fr 01_solar 1 164 2030 1.0 0.0 -fr 02_wind_on 1 164 2030 1.0 0.0 -fr 03_wind_off 1 164 2030 1.0 0.0 -fr 04_res 1 164 2030 1.0 0.0 -fr 05_nuclear 1 164 2030 1.0 0.0 -fr 06_coal 1 164 2030 1.0 0.0 -fr 07_gas 1 164 2030 1.0 0.0 -fr 08_non-res 1 164 2030 1.0 0.0 -fr 09_hydro_pump 1 164 2030 1.0 0.0 -fr 01_solar 1 165 2030 1.0 0.0 -fr 02_wind_on 1 165 2030 1.0 0.0 -fr 03_wind_off 1 165 2030 1.0 0.0 -fr 04_res 1 165 2030 1.0 0.0 -fr 05_nuclear 1 165 2030 1.0 0.0 -fr 06_coal 1 165 2030 1.0 0.0 -fr 07_gas 1 165 2030 1.0 0.0 -fr 08_non-res 1 165 2030 1.0 0.0 -fr 09_hydro_pump 1 165 2030 1.0 0.0 -fr 01_solar 1 166 2030 1.0 0.0 -fr 02_wind_on 1 166 2030 1.0 0.0 -fr 03_wind_off 1 166 2030 1.0 0.0 -fr 04_res 1 166 2030 1.0 0.0 -fr 05_nuclear 1 166 2030 1.0 0.0 -fr 06_coal 1 166 2030 1.0 0.0 -fr 07_gas 1 166 2030 1.0 0.0 -fr 08_non-res 1 166 2030 1.0 0.0 -fr 09_hydro_pump 1 166 2030 1.0 0.0 -fr 01_solar 1 167 2030 1.0 0.0 -fr 02_wind_on 1 167 2030 1.0 0.0 -fr 03_wind_off 1 167 2030 1.0 0.0 -fr 04_res 1 167 2030 1.0 0.0 -fr 05_nuclear 1 167 2030 1.0 0.0 -fr 06_coal 1 167 2030 1.0 0.0 -fr 07_gas 1 167 2030 1.0 0.0 -fr 08_non-res 1 167 2030 1.0 0.0 -fr 09_hydro_pump 1 167 2030 1.0 0.0 -fr 01_solar 1 168 2030 1.0 0.0 -fr 02_wind_on 1 168 2030 1.0 0.0 -fr 03_wind_off 1 168 2030 1.0 0.0 -fr 04_res 1 168 2030 1.0 0.0 -fr 05_nuclear 1 168 2030 1.0 0.0 -fr 06_coal 1 168 2030 1.0 0.0 -fr 07_gas 1 168 2030 1.0 0.0 -fr 08_non-res 1 168 2030 1.0 0.0 -fr 09_hydro_pump 1 168 2030 1.0 0.0 -fr 01_solar 1 169 2030 0.0 0.0 -fr 02_wind_on 1 169 2030 0.0 0.0 -fr 03_wind_off 1 169 2030 0.0 0.0 -fr 04_res 1 169 2030 0.0 0.0 -fr 05_nuclear 1 169 2030 0.0 0.0 -fr 06_coal 1 169 2030 0.0 0.0 -fr 07_gas 1 169 2030 0.0 0.0 -fr 08_non-res 1 169 2030 0.0 0.0 -fr 09_hydro_pump 1 169 2030 0.0 0.0 -fr 01_solar 1 170 2030 1.0 0.0 -fr 02_wind_on 1 170 2030 0.0 0.0 -fr 03_wind_off 1 170 2030 0.0 0.0 -fr 04_res 1 170 2030 0.0 0.0 -fr 05_nuclear 1 170 2030 0.0 0.0 -fr 06_coal 1 170 2030 0.0 0.0 -fr 07_gas 1 170 2030 0.0 0.0 -fr 08_non-res 1 170 2030 0.0 0.0 -fr 09_hydro_pump 1 170 2030 0.0 0.0 -fr 01_solar 1 171 2030 1.0 0.0 -fr 02_wind_on 1 171 2030 0.0 0.0 -fr 03_wind_off 1 171 2030 0.0 0.0 -fr 04_res 1 171 2030 0.0 0.0 -fr 05_nuclear 1 171 2030 0.0 0.0 -fr 06_coal 1 171 2030 0.0 0.0 -fr 07_gas 1 171 2030 0.0 0.0 -fr 08_non-res 1 171 2030 0.0 0.0 -fr 09_hydro_pump 1 171 2030 0.0 0.0 -fr 01_solar 1 172 2030 1.0 0.0 -fr 02_wind_on 1 172 2030 0.0 0.0 -fr 03_wind_off 1 172 2030 0.0 0.0 -fr 04_res 1 172 2030 0.0 0.0 -fr 05_nuclear 1 172 2030 0.0 0.0 -fr 06_coal 1 172 2030 0.0 0.0 -fr 07_gas 1 172 2030 0.0 0.0 -fr 08_non-res 1 172 2030 0.0 0.0 -fr 09_hydro_pump 1 172 2030 0.0 0.0 -fr 01_solar 1 173 2030 1.0 0.0 -fr 02_wind_on 1 173 2030 0.0 0.0 -fr 03_wind_off 1 173 2030 0.0 0.0 -fr 04_res 1 173 2030 0.0 0.0 -fr 05_nuclear 1 173 2030 0.0 0.0 -fr 06_coal 1 173 2030 0.0 0.0 -fr 07_gas 1 173 2030 0.0 0.0 -fr 08_non-res 1 173 2030 0.0 0.0 -fr 09_hydro_pump 1 173 2030 0.0 0.0 -fr 01_solar 1 174 2030 1.0 0.0 -fr 02_wind_on 1 174 2030 0.0 0.0 -fr 03_wind_off 1 174 2030 0.0 0.0 -fr 04_res 1 174 2030 0.0 0.0 -fr 05_nuclear 1 174 2030 0.0 0.0 -fr 06_coal 1 174 2030 0.0 0.0 -fr 07_gas 1 174 2030 0.0 0.0 -fr 08_non-res 1 174 2030 0.0 0.0 -fr 09_hydro_pump 1 174 2030 0.0 0.0 -fr 01_solar 1 175 2030 1.0 0.0 -fr 02_wind_on 1 175 2030 0.0 0.0 -fr 03_wind_off 1 175 2030 0.0 0.0 -fr 04_res 1 175 2030 0.0 0.0 -fr 05_nuclear 1 175 2030 0.0 0.0 -fr 06_coal 1 175 2030 0.0 0.0 -fr 07_gas 1 175 2030 0.0 0.0 -fr 08_non-res 1 175 2030 0.0 0.0 -fr 09_hydro_pump 1 175 2030 0.0 0.0 -fr 01_solar 1 176 2030 1.0 0.0 -fr 02_wind_on 1 176 2030 0.0 0.0 -fr 03_wind_off 1 176 2030 0.0 0.0 -fr 04_res 1 176 2030 0.0 0.0 -fr 05_nuclear 1 176 2030 0.0 0.0 -fr 06_coal 1 176 2030 0.0 0.0 -fr 07_gas 1 176 2030 0.0 0.0 -fr 08_non-res 1 176 2030 0.0 0.0 -fr 09_hydro_pump 1 176 2030 0.0 0.0 -fr 01_solar 1 177 2030 1.0 0.0 -fr 02_wind_on 1 177 2030 0.0 0.0 -fr 03_wind_off 1 177 2030 0.0 0.0 -fr 04_res 1 177 2030 0.0 0.0 -fr 05_nuclear 1 177 2030 0.0 0.0 -fr 06_coal 1 177 2030 0.0 0.0 -fr 07_gas 1 177 2030 0.0 0.0 -fr 08_non-res 1 177 2030 0.0 0.0 -fr 09_hydro_pump 1 177 2030 0.0 0.0 -fr 01_solar 1 178 2030 1.0 0.0 -fr 02_wind_on 1 178 2030 0.0 0.0 -fr 03_wind_off 1 178 2030 0.0 0.0 -fr 04_res 1 178 2030 0.0 0.0 -fr 05_nuclear 1 178 2030 0.0 0.0 -fr 06_coal 1 178 2030 0.0 0.0 -fr 07_gas 1 178 2030 0.0 0.0 -fr 08_non-res 1 178 2030 0.0 0.0 -fr 09_hydro_pump 1 178 2030 0.0 0.0 -fr 01_solar 1 179 2030 1.0 0.0 -fr 02_wind_on 1 179 2030 0.0 0.0 -fr 03_wind_off 1 179 2030 0.0 0.0 -fr 04_res 1 179 2030 0.0 0.0 -fr 05_nuclear 1 179 2030 0.0 0.0 -fr 06_coal 1 179 2030 0.0 0.0 -fr 07_gas 1 179 2030 0.0 0.0 -fr 08_non-res 1 179 2030 0.0 0.0 -fr 09_hydro_pump 1 179 2030 0.0 0.0 -fr 01_solar 1 180 2030 1.0 0.0 -fr 02_wind_on 1 180 2030 0.0 0.0 -fr 03_wind_off 1 180 2030 0.0 0.0 -fr 04_res 1 180 2030 0.0 0.0 -fr 05_nuclear 1 180 2030 0.0 0.0 -fr 06_coal 1 180 2030 0.0 0.0 -fr 07_gas 1 180 2030 0.0 0.0 -fr 08_non-res 1 180 2030 0.0 0.0 -fr 09_hydro_pump 1 180 2030 0.0 0.0 -fr 01_solar 1 181 2030 1.0 0.0 -fr 02_wind_on 1 181 2030 0.0 0.0 -fr 03_wind_off 1 181 2030 0.0 0.0 -fr 04_res 1 181 2030 0.0 0.0 -fr 05_nuclear 1 181 2030 0.0 0.0 -fr 06_coal 1 181 2030 0.0 0.0 -fr 07_gas 1 181 2030 0.0 0.0 -fr 08_non-res 1 181 2030 0.0 0.0 -fr 09_hydro_pump 1 181 2030 0.0 0.0 -fr 01_solar 1 182 2030 1.0 0.0 -fr 02_wind_on 1 182 2030 0.0 0.0 -fr 03_wind_off 1 182 2030 0.0 0.0 -fr 04_res 1 182 2030 0.0 0.0 -fr 05_nuclear 1 182 2030 0.0 0.0 -fr 06_coal 1 182 2030 0.0 0.0 -fr 07_gas 1 182 2030 0.0 0.0 -fr 08_non-res 1 182 2030 0.0 0.0 -fr 09_hydro_pump 1 182 2030 0.0 0.0 -fr 01_solar 1 183 2030 1.0 0.0 -fr 02_wind_on 1 183 2030 0.0 0.0 -fr 03_wind_off 1 183 2030 0.0 0.0 -fr 04_res 1 183 2030 0.0 0.0 -fr 05_nuclear 1 183 2030 0.0 0.0 -fr 06_coal 1 183 2030 0.0 0.0 -fr 07_gas 1 183 2030 0.0 0.0 -fr 08_non-res 1 183 2030 0.0 0.0 -fr 09_hydro_pump 1 183 2030 0.0 0.0 -fr 01_solar 1 184 2030 1.0 0.0 -fr 02_wind_on 1 184 2030 0.0 0.0 -fr 03_wind_off 1 184 2030 0.0 0.0 -fr 04_res 1 184 2030 0.0 0.0 -fr 05_nuclear 1 184 2030 0.0 0.0 -fr 06_coal 1 184 2030 0.0 0.0 -fr 07_gas 1 184 2030 0.0 0.0 -fr 08_non-res 1 184 2030 0.0 0.0 -fr 09_hydro_pump 1 184 2030 0.0 0.0 -fr 01_solar 1 185 2030 1.0 0.0 -fr 02_wind_on 1 185 2030 0.0 0.0 -fr 03_wind_off 1 185 2030 0.0 0.0 -fr 04_res 1 185 2030 0.0 0.0 -fr 05_nuclear 1 185 2030 0.0 0.0 -fr 06_coal 1 185 2030 0.0 0.0 -fr 07_gas 1 185 2030 0.0 0.0 -fr 08_non-res 1 185 2030 0.0 0.0 -fr 09_hydro_pump 1 185 2030 0.0 0.0 -fr 01_solar 1 186 2030 1.0 0.0 -fr 02_wind_on 1 186 2030 0.0 0.0 -fr 03_wind_off 1 186 2030 0.0 0.0 -fr 04_res 1 186 2030 0.0 0.0 -fr 05_nuclear 1 186 2030 0.0 0.0 -fr 06_coal 1 186 2030 0.0 0.0 -fr 07_gas 1 186 2030 0.0 0.0 -fr 08_non-res 1 186 2030 0.0 0.0 -fr 09_hydro_pump 1 186 2030 0.0 0.0 -fr 01_solar 1 187 2030 1.0 0.0 -fr 02_wind_on 1 187 2030 0.0 0.0 -fr 03_wind_off 1 187 2030 0.0 0.0 -fr 04_res 1 187 2030 0.0 0.0 -fr 05_nuclear 1 187 2030 0.0 0.0 -fr 06_coal 1 187 2030 0.0 0.0 -fr 07_gas 1 187 2030 0.0 0.0 -fr 08_non-res 1 187 2030 0.0 0.0 -fr 09_hydro_pump 1 187 2030 0.0 0.0 -fr 01_solar 1 188 2030 1.0 0.0 -fr 02_wind_on 1 188 2030 0.0 0.0 -fr 03_wind_off 1 188 2030 0.0 0.0 -fr 04_res 1 188 2030 0.0 0.0 -fr 05_nuclear 1 188 2030 0.0 0.0 -fr 06_coal 1 188 2030 0.0 0.0 -fr 07_gas 1 188 2030 0.0 0.0 -fr 08_non-res 1 188 2030 0.0 0.0 -fr 09_hydro_pump 1 188 2030 0.0 0.0 -fr 01_solar 1 189 2030 1.0 0.0 -fr 02_wind_on 1 189 2030 0.0 0.0 -fr 03_wind_off 1 189 2030 0.0 0.0 -fr 04_res 1 189 2030 0.0 0.0 -fr 05_nuclear 1 189 2030 0.0 0.0 -fr 06_coal 1 189 2030 0.0 0.0 -fr 07_gas 1 189 2030 0.0 0.0 -fr 08_non-res 1 189 2030 0.0 0.0 -fr 09_hydro_pump 1 189 2030 0.0 0.0 -fr 01_solar 1 190 2030 1.0 0.0 -fr 02_wind_on 1 190 2030 1.0 0.0 -fr 03_wind_off 1 190 2030 0.0 0.0 -fr 04_res 1 190 2030 0.0 0.0 -fr 05_nuclear 1 190 2030 0.0 0.0 -fr 06_coal 1 190 2030 0.0 0.0 -fr 07_gas 1 190 2030 0.0 0.0 -fr 08_non-res 1 190 2030 0.0 0.0 -fr 09_hydro_pump 1 190 2030 0.0 0.0 -fr 01_solar 1 191 2030 1.0 0.0 -fr 02_wind_on 1 191 2030 1.0 0.0 -fr 03_wind_off 1 191 2030 0.0 0.0 -fr 04_res 1 191 2030 0.0 0.0 -fr 05_nuclear 1 191 2030 0.0 0.0 -fr 06_coal 1 191 2030 0.0 0.0 -fr 07_gas 1 191 2030 0.0 0.0 -fr 08_non-res 1 191 2030 0.0 0.0 -fr 09_hydro_pump 1 191 2030 0.0 0.0 -fr 01_solar 1 192 2030 1.0 0.0 -fr 02_wind_on 1 192 2030 1.0 0.0 -fr 03_wind_off 1 192 2030 0.0 0.0 -fr 04_res 1 192 2030 0.0 0.0 -fr 05_nuclear 1 192 2030 0.0 0.0 -fr 06_coal 1 192 2030 0.0 0.0 -fr 07_gas 1 192 2030 0.0 0.0 -fr 08_non-res 1 192 2030 0.0 0.0 -fr 09_hydro_pump 1 192 2030 0.0 0.0 -fr 01_solar 1 193 2030 1.0 0.0 -fr 02_wind_on 1 193 2030 1.0 0.0 -fr 03_wind_off 1 193 2030 0.0 0.0 -fr 04_res 1 193 2030 0.0 0.0 -fr 05_nuclear 1 193 2030 0.0 0.0 -fr 06_coal 1 193 2030 0.0 0.0 -fr 07_gas 1 193 2030 0.0 0.0 -fr 08_non-res 1 193 2030 0.0 0.0 -fr 09_hydro_pump 1 193 2030 0.0 0.0 -fr 01_solar 1 194 2030 1.0 0.0 -fr 02_wind_on 1 194 2030 1.0 0.0 -fr 03_wind_off 1 194 2030 0.0 0.0 -fr 04_res 1 194 2030 0.0 0.0 -fr 05_nuclear 1 194 2030 0.0 0.0 -fr 06_coal 1 194 2030 0.0 0.0 -fr 07_gas 1 194 2030 0.0 0.0 -fr 08_non-res 1 194 2030 0.0 0.0 -fr 09_hydro_pump 1 194 2030 0.0 0.0 -fr 01_solar 1 195 2030 1.0 0.0 -fr 02_wind_on 1 195 2030 1.0 0.0 -fr 03_wind_off 1 195 2030 0.0 0.0 -fr 04_res 1 195 2030 0.0 0.0 -fr 05_nuclear 1 195 2030 0.0 0.0 -fr 06_coal 1 195 2030 0.0 0.0 -fr 07_gas 1 195 2030 0.0 0.0 -fr 08_non-res 1 195 2030 0.0 0.0 -fr 09_hydro_pump 1 195 2030 0.0 0.0 -fr 01_solar 1 196 2030 1.0 0.0 -fr 02_wind_on 1 196 2030 1.0 0.0 -fr 03_wind_off 1 196 2030 0.0 0.0 -fr 04_res 1 196 2030 0.0 0.0 -fr 05_nuclear 1 196 2030 0.0 0.0 -fr 06_coal 1 196 2030 0.0 0.0 -fr 07_gas 1 196 2030 0.0 0.0 -fr 08_non-res 1 196 2030 0.0 0.0 -fr 09_hydro_pump 1 196 2030 0.0 0.0 -fr 01_solar 1 197 2030 1.0 0.0 -fr 02_wind_on 1 197 2030 1.0 0.0 -fr 03_wind_off 1 197 2030 0.0 0.0 -fr 04_res 1 197 2030 0.0 0.0 -fr 05_nuclear 1 197 2030 0.0 0.0 -fr 06_coal 1 197 2030 0.0 0.0 -fr 07_gas 1 197 2030 0.0 0.0 -fr 08_non-res 1 197 2030 0.0 0.0 -fr 09_hydro_pump 1 197 2030 0.0 0.0 -fr 01_solar 1 198 2030 1.0 0.0 -fr 02_wind_on 1 198 2030 1.0 0.0 -fr 03_wind_off 1 198 2030 0.0 0.0 -fr 04_res 1 198 2030 0.0 0.0 -fr 05_nuclear 1 198 2030 0.0 0.0 -fr 06_coal 1 198 2030 0.0 0.0 -fr 07_gas 1 198 2030 0.0 0.0 -fr 08_non-res 1 198 2030 0.0 0.0 -fr 09_hydro_pump 1 198 2030 0.0 0.0 -fr 01_solar 1 199 2030 1.0 0.0 -fr 02_wind_on 1 199 2030 1.0 0.0 -fr 03_wind_off 1 199 2030 0.0 0.0 -fr 04_res 1 199 2030 0.0 0.0 -fr 05_nuclear 1 199 2030 0.0 0.0 -fr 06_coal 1 199 2030 0.0 0.0 -fr 07_gas 1 199 2030 0.0 0.0 -fr 08_non-res 1 199 2030 0.0 0.0 -fr 09_hydro_pump 1 199 2030 0.0 0.0 -fr 01_solar 1 200 2030 1.0 0.0 -fr 02_wind_on 1 200 2030 1.0 0.0 -fr 03_wind_off 1 200 2030 0.0 0.0 -fr 04_res 1 200 2030 0.0 0.0 -fr 05_nuclear 1 200 2030 0.0 0.0 -fr 06_coal 1 200 2030 0.0 0.0 -fr 07_gas 1 200 2030 0.0 0.0 -fr 08_non-res 1 200 2030 0.0 0.0 -fr 09_hydro_pump 1 200 2030 0.0 0.0 -fr 01_solar 1 201 2030 1.0 0.0 -fr 02_wind_on 1 201 2030 1.0 0.0 -fr 03_wind_off 1 201 2030 0.0 0.0 -fr 04_res 1 201 2030 0.0 0.0 -fr 05_nuclear 1 201 2030 0.0 0.0 -fr 06_coal 1 201 2030 0.0 0.0 -fr 07_gas 1 201 2030 0.0 0.0 -fr 08_non-res 1 201 2030 0.0 0.0 -fr 09_hydro_pump 1 201 2030 0.0 0.0 -fr 01_solar 1 202 2030 1.0 0.0 -fr 02_wind_on 1 202 2030 1.0 0.0 -fr 03_wind_off 1 202 2030 0.0 0.0 -fr 04_res 1 202 2030 0.0 0.0 -fr 05_nuclear 1 202 2030 0.0 0.0 -fr 06_coal 1 202 2030 0.0 0.0 -fr 07_gas 1 202 2030 0.0 0.0 -fr 08_non-res 1 202 2030 0.0 0.0 -fr 09_hydro_pump 1 202 2030 0.0 0.0 -fr 01_solar 1 203 2030 1.0 0.0 -fr 02_wind_on 1 203 2030 1.0 0.0 -fr 03_wind_off 1 203 2030 0.0 0.0 -fr 04_res 1 203 2030 0.0 0.0 -fr 05_nuclear 1 203 2030 0.0 0.0 -fr 06_coal 1 203 2030 0.0 0.0 -fr 07_gas 1 203 2030 0.0 0.0 -fr 08_non-res 1 203 2030 0.0 0.0 -fr 09_hydro_pump 1 203 2030 0.0 0.0 -fr 01_solar 1 204 2030 1.0 0.0 -fr 02_wind_on 1 204 2030 1.0 0.0 -fr 03_wind_off 1 204 2030 0.0 0.0 -fr 04_res 1 204 2030 0.0 0.0 -fr 05_nuclear 1 204 2030 0.0 0.0 -fr 06_coal 1 204 2030 0.0 0.0 -fr 07_gas 1 204 2030 0.0 0.0 -fr 08_non-res 1 204 2030 0.0 0.0 -fr 09_hydro_pump 1 204 2030 0.0 0.0 -fr 01_solar 1 205 2030 1.0 0.0 -fr 02_wind_on 1 205 2030 1.0 0.0 -fr 03_wind_off 1 205 2030 0.0 0.0 -fr 04_res 1 205 2030 0.0 0.0 -fr 05_nuclear 1 205 2030 0.0 0.0 -fr 06_coal 1 205 2030 0.0 0.0 -fr 07_gas 1 205 2030 0.0 0.0 -fr 08_non-res 1 205 2030 0.0 0.0 -fr 09_hydro_pump 1 205 2030 0.0 0.0 -fr 01_solar 1 206 2030 1.0 0.0 -fr 02_wind_on 1 206 2030 1.0 0.0 -fr 03_wind_off 1 206 2030 0.0 0.0 -fr 04_res 1 206 2030 0.0 0.0 -fr 05_nuclear 1 206 2030 0.0 0.0 -fr 06_coal 1 206 2030 0.0 0.0 -fr 07_gas 1 206 2030 0.0 0.0 -fr 08_non-res 1 206 2030 0.0 0.0 -fr 09_hydro_pump 1 206 2030 0.0 0.0 -fr 01_solar 1 207 2030 1.0 0.0 -fr 02_wind_on 1 207 2030 1.0 0.0 -fr 03_wind_off 1 207 2030 0.0 0.0 -fr 04_res 1 207 2030 0.0 0.0 -fr 05_nuclear 1 207 2030 0.0 0.0 -fr 06_coal 1 207 2030 0.0 0.0 -fr 07_gas 1 207 2030 0.0 0.0 -fr 08_non-res 1 207 2030 0.0 0.0 -fr 09_hydro_pump 1 207 2030 0.0 0.0 -fr 01_solar 1 208 2030 1.0 0.0 -fr 02_wind_on 1 208 2030 1.0 0.0 -fr 03_wind_off 1 208 2030 0.0 0.0 -fr 04_res 1 208 2030 0.0 0.0 -fr 05_nuclear 1 208 2030 0.0 0.0 -fr 06_coal 1 208 2030 0.0 0.0 -fr 07_gas 1 208 2030 0.0 0.0 -fr 08_non-res 1 208 2030 0.0 0.0 -fr 09_hydro_pump 1 208 2030 0.0 0.0 -fr 01_solar 1 209 2030 1.0 0.0 -fr 02_wind_on 1 209 2030 1.0 0.0 -fr 03_wind_off 1 209 2030 0.0 0.0 -fr 04_res 1 209 2030 0.0 0.0 -fr 05_nuclear 1 209 2030 0.0 0.0 -fr 06_coal 1 209 2030 0.0 0.0 -fr 07_gas 1 209 2030 0.0 0.0 -fr 08_non-res 1 209 2030 0.0 0.0 -fr 09_hydro_pump 1 209 2030 0.0 0.0 -fr 01_solar 1 210 2030 1.0 0.0 -fr 02_wind_on 1 210 2030 1.0 0.0 -fr 03_wind_off 1 210 2030 1.0 0.0 -fr 04_res 1 210 2030 0.0 0.0 -fr 05_nuclear 1 210 2030 0.0 0.0 -fr 06_coal 1 210 2030 0.0 0.0 -fr 07_gas 1 210 2030 0.0 0.0 -fr 08_non-res 1 210 2030 0.0 0.0 -fr 09_hydro_pump 1 210 2030 0.0 0.0 -fr 01_solar 1 211 2030 1.0 0.0 -fr 02_wind_on 1 211 2030 1.0 0.0 -fr 03_wind_off 1 211 2030 1.0 0.0 -fr 04_res 1 211 2030 0.0 0.0 -fr 05_nuclear 1 211 2030 0.0 0.0 -fr 06_coal 1 211 2030 0.0 0.0 -fr 07_gas 1 211 2030 0.0 0.0 -fr 08_non-res 1 211 2030 0.0 0.0 -fr 09_hydro_pump 1 211 2030 0.0 0.0 -fr 01_solar 1 212 2030 1.0 0.0 -fr 02_wind_on 1 212 2030 1.0 0.0 -fr 03_wind_off 1 212 2030 1.0 0.0 -fr 04_res 1 212 2030 0.0 0.0 -fr 05_nuclear 1 212 2030 0.0 0.0 -fr 06_coal 1 212 2030 0.0 0.0 -fr 07_gas 1 212 2030 0.0 0.0 -fr 08_non-res 1 212 2030 0.0 0.0 -fr 09_hydro_pump 1 212 2030 0.0 0.0 -fr 01_solar 1 213 2030 1.0 0.0 -fr 02_wind_on 1 213 2030 1.0 0.0 -fr 03_wind_off 1 213 2030 1.0 0.0 -fr 04_res 1 213 2030 0.0 0.0 -fr 05_nuclear 1 213 2030 0.0 0.0 -fr 06_coal 1 213 2030 0.0 0.0 -fr 07_gas 1 213 2030 0.0 0.0 -fr 08_non-res 1 213 2030 0.0 0.0 -fr 09_hydro_pump 1 213 2030 0.0 0.0 -fr 01_solar 1 214 2030 1.0 0.0 -fr 02_wind_on 1 214 2030 1.0 0.0 -fr 03_wind_off 1 214 2030 1.0 0.0 -fr 04_res 1 214 2030 0.0 0.0 -fr 05_nuclear 1 214 2030 0.0 0.0 -fr 06_coal 1 214 2030 0.0 0.0 -fr 07_gas 1 214 2030 0.0 0.0 -fr 08_non-res 1 214 2030 0.0 0.0 -fr 09_hydro_pump 1 214 2030 0.0 0.0 -fr 01_solar 1 215 2030 1.0 0.0 -fr 02_wind_on 1 215 2030 1.0 0.0 -fr 03_wind_off 1 215 2030 1.0 0.0 -fr 04_res 1 215 2030 0.0 0.0 -fr 05_nuclear 1 215 2030 0.0 0.0 -fr 06_coal 1 215 2030 0.0 0.0 -fr 07_gas 1 215 2030 0.0 0.0 -fr 08_non-res 1 215 2030 0.0 0.0 -fr 09_hydro_pump 1 215 2030 0.0 0.0 -fr 01_solar 1 216 2030 1.0 0.0 -fr 02_wind_on 1 216 2030 1.0 0.0 -fr 03_wind_off 1 216 2030 1.0 0.0 -fr 04_res 1 216 2030 0.0 0.0 -fr 05_nuclear 1 216 2030 0.0 0.0 -fr 06_coal 1 216 2030 0.0 0.0 -fr 07_gas 1 216 2030 0.0 0.0 -fr 08_non-res 1 216 2030 0.0 0.0 -fr 09_hydro_pump 1 216 2030 0.0 0.0 -fr 01_solar 1 217 2030 1.0 0.0 -fr 02_wind_on 1 217 2030 1.0 0.0 -fr 03_wind_off 1 217 2030 1.0 0.0 -fr 04_res 1 217 2030 0.0 0.0 -fr 05_nuclear 1 217 2030 0.0 0.0 -fr 06_coal 1 217 2030 0.0 0.0 -fr 07_gas 1 217 2030 0.0 0.0 -fr 08_non-res 1 217 2030 0.0 0.0 -fr 09_hydro_pump 1 217 2030 0.0 0.0 -fr 01_solar 1 218 2030 1.0 0.0 -fr 02_wind_on 1 218 2030 1.0 0.0 -fr 03_wind_off 1 218 2030 1.0 0.0 -fr 04_res 1 218 2030 0.0 0.0 -fr 05_nuclear 1 218 2030 0.0 0.0 -fr 06_coal 1 218 2030 0.0 0.0 -fr 07_gas 1 218 2030 0.0 0.0 -fr 08_non-res 1 218 2030 0.0 0.0 -fr 09_hydro_pump 1 218 2030 0.0 0.0 -fr 01_solar 1 219 2030 1.0 0.0 -fr 02_wind_on 1 219 2030 1.0 0.0 -fr 03_wind_off 1 219 2030 1.0 0.0 -fr 04_res 1 219 2030 0.0 0.0 -fr 05_nuclear 1 219 2030 0.0 0.0 -fr 06_coal 1 219 2030 0.0 0.0 -fr 07_gas 1 219 2030 0.0 0.0 -fr 08_non-res 1 219 2030 0.0 0.0 -fr 09_hydro_pump 1 219 2030 0.0 0.0 -fr 01_solar 1 220 2030 1.0 0.0 -fr 02_wind_on 1 220 2030 1.0 0.0 -fr 03_wind_off 1 220 2030 1.0 0.0 -fr 04_res 1 220 2030 0.0 0.0 -fr 05_nuclear 1 220 2030 0.0 0.0 -fr 06_coal 1 220 2030 0.0 0.0 -fr 07_gas 1 220 2030 0.0 0.0 -fr 08_non-res 1 220 2030 0.0 0.0 -fr 09_hydro_pump 1 220 2030 0.0 0.0 -fr 01_solar 1 221 2030 1.0 0.0 -fr 02_wind_on 1 221 2030 1.0 0.0 -fr 03_wind_off 1 221 2030 1.0 0.0 -fr 04_res 1 221 2030 0.0 0.0 -fr 05_nuclear 1 221 2030 0.0 0.0 -fr 06_coal 1 221 2030 0.0 0.0 -fr 07_gas 1 221 2030 0.0 0.0 -fr 08_non-res 1 221 2030 0.0 0.0 -fr 09_hydro_pump 1 221 2030 0.0 0.0 -fr 01_solar 1 222 2030 1.0 0.0 -fr 02_wind_on 1 222 2030 1.0 0.0 -fr 03_wind_off 1 222 2030 1.0 0.0 -fr 04_res 1 222 2030 0.0 0.0 -fr 05_nuclear 1 222 2030 0.0 0.0 -fr 06_coal 1 222 2030 0.0 0.0 -fr 07_gas 1 222 2030 0.0 0.0 -fr 08_non-res 1 222 2030 0.0 0.0 -fr 09_hydro_pump 1 222 2030 0.0 0.0 -fr 01_solar 1 223 2030 1.0 0.0 -fr 02_wind_on 1 223 2030 1.0 0.0 -fr 03_wind_off 1 223 2030 1.0 0.0 -fr 04_res 1 223 2030 0.0 0.0 -fr 05_nuclear 1 223 2030 0.0 0.0 -fr 06_coal 1 223 2030 0.0 0.0 -fr 07_gas 1 223 2030 0.0 0.0 -fr 08_non-res 1 223 2030 0.0 0.0 -fr 09_hydro_pump 1 223 2030 0.0 0.0 -fr 01_solar 1 224 2030 1.0 0.0 -fr 02_wind_on 1 224 2030 1.0 0.0 -fr 03_wind_off 1 224 2030 1.0 0.0 -fr 04_res 1 224 2030 0.0 0.0 -fr 05_nuclear 1 224 2030 0.0 0.0 -fr 06_coal 1 224 2030 0.0 0.0 -fr 07_gas 1 224 2030 0.0 0.0 -fr 08_non-res 1 224 2030 0.0 0.0 -fr 09_hydro_pump 1 224 2030 0.0 0.0 -fr 01_solar 1 225 2030 1.0 0.0 -fr 02_wind_on 1 225 2030 1.0 0.0 -fr 03_wind_off 1 225 2030 1.0 0.0 -fr 04_res 1 225 2030 0.0 0.0 -fr 05_nuclear 1 225 2030 0.0 0.0 -fr 06_coal 1 225 2030 0.0 0.0 -fr 07_gas 1 225 2030 0.0 0.0 -fr 08_non-res 1 225 2030 0.0 0.0 -fr 09_hydro_pump 1 225 2030 0.0 0.0 -fr 01_solar 1 226 2030 1.0 0.0 -fr 02_wind_on 1 226 2030 1.0 0.0 -fr 03_wind_off 1 226 2030 1.0 0.0 -fr 04_res 1 226 2030 0.0 0.0 -fr 05_nuclear 1 226 2030 0.0 0.0 -fr 06_coal 1 226 2030 0.0 0.0 -fr 07_gas 1 226 2030 0.0 0.0 -fr 08_non-res 1 226 2030 0.0 0.0 -fr 09_hydro_pump 1 226 2030 0.0 0.0 -fr 01_solar 1 227 2030 1.0 0.0 -fr 02_wind_on 1 227 2030 1.0 0.0 -fr 03_wind_off 1 227 2030 1.0 0.0 -fr 04_res 1 227 2030 0.0 0.0 -fr 05_nuclear 1 227 2030 0.0 0.0 -fr 06_coal 1 227 2030 0.0 0.0 -fr 07_gas 1 227 2030 0.0 0.0 -fr 08_non-res 1 227 2030 0.0 0.0 -fr 09_hydro_pump 1 227 2030 0.0 0.0 -fr 01_solar 1 228 2030 1.0 0.0 -fr 02_wind_on 1 228 2030 1.0 0.0 -fr 03_wind_off 1 228 2030 1.0 0.0 -fr 04_res 1 228 2030 0.0 0.0 -fr 05_nuclear 1 228 2030 0.0 0.0 -fr 06_coal 1 228 2030 0.0 0.0 -fr 07_gas 1 228 2030 0.0 0.0 -fr 08_non-res 1 228 2030 0.0 0.0 -fr 09_hydro_pump 1 228 2030 0.0 0.0 -fr 01_solar 1 229 2030 1.0 0.0 -fr 02_wind_on 1 229 2030 1.0 0.0 -fr 03_wind_off 1 229 2030 1.0 0.0 -fr 04_res 1 229 2030 0.0 0.0 -fr 05_nuclear 1 229 2030 0.0 0.0 -fr 06_coal 1 229 2030 0.0 0.0 -fr 07_gas 1 229 2030 0.0 0.0 -fr 08_non-res 1 229 2030 0.0 0.0 -fr 09_hydro_pump 1 229 2030 0.0 0.0 -fr 01_solar 1 230 2030 1.0 0.0 -fr 02_wind_on 1 230 2030 1.0 0.0 -fr 03_wind_off 1 230 2030 1.0 0.0 -fr 04_res 1 230 2030 1.0 0.0 -fr 05_nuclear 1 230 2030 0.0 0.0 -fr 06_coal 1 230 2030 0.0 0.0 -fr 07_gas 1 230 2030 0.0 0.0 -fr 08_non-res 1 230 2030 0.0 0.0 -fr 09_hydro_pump 1 230 2030 0.0 0.0 -fr 01_solar 1 231 2030 1.0 0.0 -fr 02_wind_on 1 231 2030 1.0 0.0 -fr 03_wind_off 1 231 2030 1.0 0.0 -fr 04_res 1 231 2030 1.0 0.0 -fr 05_nuclear 1 231 2030 0.0 0.0 -fr 06_coal 1 231 2030 0.0 0.0 -fr 07_gas 1 231 2030 0.0 0.0 -fr 08_non-res 1 231 2030 0.0 0.0 -fr 09_hydro_pump 1 231 2030 0.0 0.0 -fr 01_solar 1 232 2030 1.0 0.0 -fr 02_wind_on 1 232 2030 1.0 0.0 -fr 03_wind_off 1 232 2030 1.0 0.0 -fr 04_res 1 232 2030 1.0 0.0 -fr 05_nuclear 1 232 2030 0.0 0.0 -fr 06_coal 1 232 2030 0.0 0.0 -fr 07_gas 1 232 2030 0.0 0.0 -fr 08_non-res 1 232 2030 0.0 0.0 -fr 09_hydro_pump 1 232 2030 0.0 0.0 -fr 01_solar 1 233 2030 1.0 0.0 -fr 02_wind_on 1 233 2030 1.0 0.0 -fr 03_wind_off 1 233 2030 1.0 0.0 -fr 04_res 1 233 2030 1.0 0.0 -fr 05_nuclear 1 233 2030 0.0 0.0 -fr 06_coal 1 233 2030 0.0 0.0 -fr 07_gas 1 233 2030 0.0 0.0 -fr 08_non-res 1 233 2030 0.0 0.0 -fr 09_hydro_pump 1 233 2030 0.0 0.0 -fr 01_solar 1 234 2030 1.0 0.0 -fr 02_wind_on 1 234 2030 1.0 0.0 -fr 03_wind_off 1 234 2030 1.0 0.0 -fr 04_res 1 234 2030 1.0 0.0 -fr 05_nuclear 1 234 2030 0.0 0.0 -fr 06_coal 1 234 2030 0.0 0.0 -fr 07_gas 1 234 2030 0.0 0.0 -fr 08_non-res 1 234 2030 0.0 0.0 -fr 09_hydro_pump 1 234 2030 0.0 0.0 -fr 01_solar 1 235 2030 1.0 0.0 -fr 02_wind_on 1 235 2030 1.0 0.0 -fr 03_wind_off 1 235 2030 1.0 0.0 -fr 04_res 1 235 2030 1.0 0.0 -fr 05_nuclear 1 235 2030 0.0 0.0 -fr 06_coal 1 235 2030 0.0 0.0 -fr 07_gas 1 235 2030 0.0 0.0 -fr 08_non-res 1 235 2030 0.0 0.0 -fr 09_hydro_pump 1 235 2030 0.0 0.0 -fr 01_solar 1 236 2030 1.0 0.0 -fr 02_wind_on 1 236 2030 1.0 0.0 -fr 03_wind_off 1 236 2030 1.0 0.0 -fr 04_res 1 236 2030 1.0 0.0 -fr 05_nuclear 1 236 2030 0.0 0.0 -fr 06_coal 1 236 2030 0.0 0.0 -fr 07_gas 1 236 2030 0.0 0.0 -fr 08_non-res 1 236 2030 0.0 0.0 -fr 09_hydro_pump 1 236 2030 0.0 0.0 -fr 01_solar 1 237 2030 1.0 0.0 -fr 02_wind_on 1 237 2030 1.0 0.0 -fr 03_wind_off 1 237 2030 1.0 0.0 -fr 04_res 1 237 2030 1.0 0.0 -fr 05_nuclear 1 237 2030 0.0 0.0 -fr 06_coal 1 237 2030 0.0 0.0 -fr 07_gas 1 237 2030 0.0 0.0 -fr 08_non-res 1 237 2030 0.0 0.0 -fr 09_hydro_pump 1 237 2030 0.0 0.0 -fr 01_solar 1 238 2030 1.0 0.0 -fr 02_wind_on 1 238 2030 1.0 0.0 -fr 03_wind_off 1 238 2030 1.0 0.0 -fr 04_res 1 238 2030 1.0 0.0 -fr 05_nuclear 1 238 2030 0.0 0.0 -fr 06_coal 1 238 2030 0.0 0.0 -fr 07_gas 1 238 2030 0.0 0.0 -fr 08_non-res 1 238 2030 0.0 0.0 -fr 09_hydro_pump 1 238 2030 0.0 0.0 -fr 01_solar 1 239 2030 1.0 0.0 -fr 02_wind_on 1 239 2030 1.0 0.0 -fr 03_wind_off 1 239 2030 1.0 0.0 -fr 04_res 1 239 2030 1.0 0.0 -fr 05_nuclear 1 239 2030 0.0 0.0 -fr 06_coal 1 239 2030 0.0 0.0 -fr 07_gas 1 239 2030 0.0 0.0 -fr 08_non-res 1 239 2030 0.0 0.0 -fr 09_hydro_pump 1 239 2030 0.0 0.0 -fr 01_solar 1 240 2030 1.0 0.0 -fr 02_wind_on 1 240 2030 1.0 0.0 -fr 03_wind_off 1 240 2030 1.0 0.0 -fr 04_res 1 240 2030 1.0 0.0 -fr 05_nuclear 1 240 2030 0.0 0.0 -fr 06_coal 1 240 2030 0.0 0.0 -fr 07_gas 1 240 2030 0.0 0.0 -fr 08_non-res 1 240 2030 0.0 0.0 -fr 09_hydro_pump 1 240 2030 0.0 0.0 -fr 01_solar 1 241 2030 1.0 0.0 -fr 02_wind_on 1 241 2030 1.0 0.0 -fr 03_wind_off 1 241 2030 1.0 0.0 -fr 04_res 1 241 2030 1.0 0.0 -fr 05_nuclear 1 241 2030 0.0 0.0 -fr 06_coal 1 241 2030 0.0 0.0 -fr 07_gas 1 241 2030 0.0 0.0 -fr 08_non-res 1 241 2030 0.0 0.0 -fr 09_hydro_pump 1 241 2030 0.0 0.0 -fr 01_solar 1 242 2030 1.0 0.0 -fr 02_wind_on 1 242 2030 1.0 0.0 -fr 03_wind_off 1 242 2030 1.0 0.0 -fr 04_res 1 242 2030 1.0 0.0 -fr 05_nuclear 1 242 2030 0.0 0.0 -fr 06_coal 1 242 2030 0.0 0.0 -fr 07_gas 1 242 2030 0.0 0.0 -fr 08_non-res 1 242 2030 0.0 0.0 -fr 09_hydro_pump 1 242 2030 0.0 0.0 -fr 01_solar 1 243 2030 1.0 0.0 -fr 02_wind_on 1 243 2030 1.0 0.0 -fr 03_wind_off 1 243 2030 1.0 0.0 -fr 04_res 1 243 2030 1.0 0.0 -fr 05_nuclear 1 243 2030 0.0 0.0 -fr 06_coal 1 243 2030 0.0 0.0 -fr 07_gas 1 243 2030 0.0 0.0 -fr 08_non-res 1 243 2030 0.0 0.0 -fr 09_hydro_pump 1 243 2030 0.0 0.0 -fr 01_solar 1 244 2030 1.0 0.0 -fr 02_wind_on 1 244 2030 1.0 0.0 -fr 03_wind_off 1 244 2030 1.0 0.0 -fr 04_res 1 244 2030 1.0 0.0 -fr 05_nuclear 1 244 2030 0.0 0.0 -fr 06_coal 1 244 2030 0.0 0.0 -fr 07_gas 1 244 2030 0.0 0.0 -fr 08_non-res 1 244 2030 0.0 0.0 -fr 09_hydro_pump 1 244 2030 0.0 0.0 -fr 01_solar 1 245 2030 1.0 0.0 -fr 02_wind_on 1 245 2030 1.0 0.0 -fr 03_wind_off 1 245 2030 1.0 0.0 -fr 04_res 1 245 2030 1.0 0.0 -fr 05_nuclear 1 245 2030 0.0 0.0 -fr 06_coal 1 245 2030 0.0 0.0 -fr 07_gas 1 245 2030 0.0 0.0 -fr 08_non-res 1 245 2030 0.0 0.0 -fr 09_hydro_pump 1 245 2030 0.0 0.0 -fr 01_solar 1 246 2030 1.0 0.0 -fr 02_wind_on 1 246 2030 1.0 0.0 -fr 03_wind_off 1 246 2030 1.0 0.0 -fr 04_res 1 246 2030 1.0 0.0 -fr 05_nuclear 1 246 2030 0.0 0.0 -fr 06_coal 1 246 2030 0.0 0.0 -fr 07_gas 1 246 2030 0.0 0.0 -fr 08_non-res 1 246 2030 0.0 0.0 -fr 09_hydro_pump 1 246 2030 0.0 0.0 -fr 01_solar 1 247 2030 1.0 0.0 -fr 02_wind_on 1 247 2030 1.0 0.0 -fr 03_wind_off 1 247 2030 1.0 0.0 -fr 04_res 1 247 2030 1.0 0.0 -fr 05_nuclear 1 247 2030 0.0 0.0 -fr 06_coal 1 247 2030 0.0 0.0 -fr 07_gas 1 247 2030 0.0 0.0 -fr 08_non-res 1 247 2030 0.0 0.0 -fr 09_hydro_pump 1 247 2030 0.0 0.0 -fr 01_solar 1 248 2030 1.0 0.0 -fr 02_wind_on 1 248 2030 1.0 0.0 -fr 03_wind_off 1 248 2030 1.0 0.0 -fr 04_res 1 248 2030 1.0 0.0 -fr 05_nuclear 1 248 2030 0.0 0.0 -fr 06_coal 1 248 2030 0.0 0.0 -fr 07_gas 1 248 2030 0.0 0.0 -fr 08_non-res 1 248 2030 0.0 0.0 -fr 09_hydro_pump 1 248 2030 0.0 0.0 -fr 01_solar 1 249 2030 1.0 0.0 -fr 02_wind_on 1 249 2030 1.0 0.0 -fr 03_wind_off 1 249 2030 1.0 0.0 -fr 04_res 1 249 2030 1.0 0.0 -fr 05_nuclear 1 249 2030 0.0 0.0 -fr 06_coal 1 249 2030 0.0 0.0 -fr 07_gas 1 249 2030 0.0 0.0 -fr 08_non-res 1 249 2030 0.0 0.0 -fr 09_hydro_pump 1 249 2030 0.0 0.0 -fr 01_solar 1 250 2030 1.0 0.0 -fr 02_wind_on 1 250 2030 1.0 0.0 -fr 03_wind_off 1 250 2030 1.0 0.0 -fr 04_res 1 250 2030 1.0 0.0 -fr 05_nuclear 1 250 2030 1.0 0.0 -fr 06_coal 1 250 2030 0.0 0.0 -fr 07_gas 1 250 2030 0.0 0.0 -fr 08_non-res 1 250 2030 0.0 0.0 -fr 09_hydro_pump 1 250 2030 0.0 0.0 -fr 01_solar 1 251 2030 1.0 0.0 -fr 02_wind_on 1 251 2030 1.0 0.0 -fr 03_wind_off 1 251 2030 1.0 0.0 -fr 04_res 1 251 2030 1.0 0.0 -fr 05_nuclear 1 251 2030 1.0 0.0 -fr 06_coal 1 251 2030 0.0 0.0 -fr 07_gas 1 251 2030 0.0 0.0 -fr 08_non-res 1 251 2030 0.0 0.0 -fr 09_hydro_pump 1 251 2030 0.0 0.0 -fr 01_solar 1 252 2030 1.0 0.0 -fr 02_wind_on 1 252 2030 1.0 0.0 -fr 03_wind_off 1 252 2030 1.0 0.0 -fr 04_res 1 252 2030 1.0 0.0 -fr 05_nuclear 1 252 2030 1.0 0.0 -fr 06_coal 1 252 2030 0.0 0.0 -fr 07_gas 1 252 2030 0.0 0.0 -fr 08_non-res 1 252 2030 0.0 0.0 -fr 09_hydro_pump 1 252 2030 0.0 0.0 -fr 01_solar 1 253 2030 1.0 0.0 -fr 02_wind_on 1 253 2030 1.0 0.0 -fr 03_wind_off 1 253 2030 1.0 0.0 -fr 04_res 1 253 2030 1.0 0.0 -fr 05_nuclear 1 253 2030 1.0 0.0 -fr 06_coal 1 253 2030 0.0 0.0 -fr 07_gas 1 253 2030 0.0 0.0 -fr 08_non-res 1 253 2030 0.0 0.0 -fr 09_hydro_pump 1 253 2030 0.0 0.0 -fr 01_solar 1 254 2030 1.0 0.0 -fr 02_wind_on 1 254 2030 1.0 0.0 -fr 03_wind_off 1 254 2030 1.0 0.0 -fr 04_res 1 254 2030 1.0 0.0 -fr 05_nuclear 1 254 2030 1.0 0.0 -fr 06_coal 1 254 2030 0.0 0.0 -fr 07_gas 1 254 2030 0.0 0.0 -fr 08_non-res 1 254 2030 0.0 0.0 -fr 09_hydro_pump 1 254 2030 0.0 0.0 -fr 01_solar 1 255 2030 1.0 0.0 -fr 02_wind_on 1 255 2030 1.0 0.0 -fr 03_wind_off 1 255 2030 1.0 0.0 -fr 04_res 1 255 2030 1.0 0.0 -fr 05_nuclear 1 255 2030 1.0 0.0 -fr 06_coal 1 255 2030 0.0 0.0 -fr 07_gas 1 255 2030 0.0 0.0 -fr 08_non-res 1 255 2030 0.0 0.0 -fr 09_hydro_pump 1 255 2030 0.0 0.0 -fr 01_solar 1 256 2030 1.0 0.0 -fr 02_wind_on 1 256 2030 1.0 0.0 -fr 03_wind_off 1 256 2030 1.0 0.0 -fr 04_res 1 256 2030 1.0 0.0 -fr 05_nuclear 1 256 2030 1.0 0.0 -fr 06_coal 1 256 2030 0.0 0.0 -fr 07_gas 1 256 2030 0.0 0.0 -fr 08_non-res 1 256 2030 0.0 0.0 -fr 09_hydro_pump 1 256 2030 0.0 0.0 -fr 01_solar 1 257 2030 1.0 0.0 -fr 02_wind_on 1 257 2030 1.0 0.0 -fr 03_wind_off 1 257 2030 1.0 0.0 -fr 04_res 1 257 2030 1.0 0.0 -fr 05_nuclear 1 257 2030 1.0 0.0 -fr 06_coal 1 257 2030 0.0 0.0 -fr 07_gas 1 257 2030 0.0 0.0 -fr 08_non-res 1 257 2030 0.0 0.0 -fr 09_hydro_pump 1 257 2030 0.0 0.0 -fr 01_solar 1 258 2030 1.0 0.0 -fr 02_wind_on 1 258 2030 1.0 0.0 -fr 03_wind_off 1 258 2030 1.0 0.0 -fr 04_res 1 258 2030 1.0 0.0 -fr 05_nuclear 1 258 2030 1.0 0.0 -fr 06_coal 1 258 2030 0.0 0.0 -fr 07_gas 1 258 2030 0.0 0.0 -fr 08_non-res 1 258 2030 0.0 0.0 -fr 09_hydro_pump 1 258 2030 0.0 0.0 -fr 01_solar 1 259 2030 1.0 0.0 -fr 02_wind_on 1 259 2030 1.0 0.0 -fr 03_wind_off 1 259 2030 1.0 0.0 -fr 04_res 1 259 2030 1.0 0.0 -fr 05_nuclear 1 259 2030 1.0 0.0 -fr 06_coal 1 259 2030 0.0 0.0 -fr 07_gas 1 259 2030 0.0 0.0 -fr 08_non-res 1 259 2030 0.0 0.0 -fr 09_hydro_pump 1 259 2030 0.0 0.0 -fr 01_solar 1 260 2030 1.0 0.0 -fr 02_wind_on 1 260 2030 1.0 0.0 -fr 03_wind_off 1 260 2030 1.0 0.0 -fr 04_res 1 260 2030 1.0 0.0 -fr 05_nuclear 1 260 2030 1.0 0.0 -fr 06_coal 1 260 2030 0.0 0.0 -fr 07_gas 1 260 2030 0.0 0.0 -fr 08_non-res 1 260 2030 0.0 0.0 -fr 09_hydro_pump 1 260 2030 0.0 0.0 -fr 01_solar 1 261 2030 1.0 0.0 -fr 02_wind_on 1 261 2030 1.0 0.0 -fr 03_wind_off 1 261 2030 1.0 0.0 -fr 04_res 1 261 2030 1.0 0.0 -fr 05_nuclear 1 261 2030 1.0 0.0 -fr 06_coal 1 261 2030 0.0 0.0 -fr 07_gas 1 261 2030 0.0 0.0 -fr 08_non-res 1 261 2030 0.0 0.0 -fr 09_hydro_pump 1 261 2030 0.0 0.0 -fr 01_solar 1 262 2030 1.0 0.0 -fr 02_wind_on 1 262 2030 1.0 0.0 -fr 03_wind_off 1 262 2030 1.0 0.0 -fr 04_res 1 262 2030 1.0 0.0 -fr 05_nuclear 1 262 2030 1.0 0.0 -fr 06_coal 1 262 2030 0.0 0.0 -fr 07_gas 1 262 2030 0.0 0.0 -fr 08_non-res 1 262 2030 0.0 0.0 -fr 09_hydro_pump 1 262 2030 0.0 0.0 -fr 01_solar 1 263 2030 1.0 0.0 -fr 02_wind_on 1 263 2030 1.0 0.0 -fr 03_wind_off 1 263 2030 1.0 0.0 -fr 04_res 1 263 2030 1.0 0.0 -fr 05_nuclear 1 263 2030 1.0 0.0 -fr 06_coal 1 263 2030 0.0 0.0 -fr 07_gas 1 263 2030 0.0 0.0 -fr 08_non-res 1 263 2030 0.0 0.0 -fr 09_hydro_pump 1 263 2030 0.0 0.0 -fr 01_solar 1 264 2030 1.0 0.0 -fr 02_wind_on 1 264 2030 1.0 0.0 -fr 03_wind_off 1 264 2030 1.0 0.0 -fr 04_res 1 264 2030 1.0 0.0 -fr 05_nuclear 1 264 2030 1.0 0.0 -fr 06_coal 1 264 2030 0.0 0.0 -fr 07_gas 1 264 2030 0.0 0.0 -fr 08_non-res 1 264 2030 0.0 0.0 -fr 09_hydro_pump 1 264 2030 0.0 0.0 -fr 01_solar 1 265 2030 1.0 0.0 -fr 02_wind_on 1 265 2030 1.0 0.0 -fr 03_wind_off 1 265 2030 1.0 0.0 -fr 04_res 1 265 2030 1.0 0.0 -fr 05_nuclear 1 265 2030 1.0 0.0 -fr 06_coal 1 265 2030 0.0 0.0 -fr 07_gas 1 265 2030 0.0 0.0 -fr 08_non-res 1 265 2030 0.0 0.0 -fr 09_hydro_pump 1 265 2030 0.0 0.0 -fr 01_solar 1 266 2030 1.0 0.0 -fr 02_wind_on 1 266 2030 1.0 0.0 -fr 03_wind_off 1 266 2030 1.0 0.0 -fr 04_res 1 266 2030 1.0 0.0 -fr 05_nuclear 1 266 2030 1.0 0.0 -fr 06_coal 1 266 2030 0.0 0.0 -fr 07_gas 1 266 2030 0.0 0.0 -fr 08_non-res 1 266 2030 0.0 0.0 -fr 09_hydro_pump 1 266 2030 0.0 0.0 -fr 01_solar 1 267 2030 1.0 0.0 -fr 02_wind_on 1 267 2030 1.0 0.0 -fr 03_wind_off 1 267 2030 1.0 0.0 -fr 04_res 1 267 2030 1.0 0.0 -fr 05_nuclear 1 267 2030 1.0 0.0 -fr 06_coal 1 267 2030 0.0 0.0 -fr 07_gas 1 267 2030 0.0 0.0 -fr 08_non-res 1 267 2030 0.0 0.0 -fr 09_hydro_pump 1 267 2030 0.0 0.0 -fr 01_solar 1 268 2030 1.0 0.0 -fr 02_wind_on 1 268 2030 1.0 0.0 -fr 03_wind_off 1 268 2030 1.0 0.0 -fr 04_res 1 268 2030 1.0 0.0 -fr 05_nuclear 1 268 2030 1.0 0.0 -fr 06_coal 1 268 2030 0.0 0.0 -fr 07_gas 1 268 2030 0.0 0.0 -fr 08_non-res 1 268 2030 0.0 0.0 -fr 09_hydro_pump 1 268 2030 0.0 0.0 -fr 01_solar 1 269 2030 1.0 0.0 -fr 02_wind_on 1 269 2030 1.0 0.0 -fr 03_wind_off 1 269 2030 1.0 0.0 -fr 04_res 1 269 2030 1.0 0.0 -fr 05_nuclear 1 269 2030 1.0 0.0 -fr 06_coal 1 269 2030 0.0 0.0 -fr 07_gas 1 269 2030 0.0 0.0 -fr 08_non-res 1 269 2030 0.0 0.0 -fr 09_hydro_pump 1 269 2030 0.0 0.0 -fr 01_solar 1 270 2030 1.0 0.0 -fr 02_wind_on 1 270 2030 1.0 0.0 -fr 03_wind_off 1 270 2030 1.0 0.0 -fr 04_res 1 270 2030 1.0 0.0 -fr 05_nuclear 1 270 2030 1.0 0.0 -fr 06_coal 1 270 2030 1.0 0.0 -fr 07_gas 1 270 2030 0.0 0.0 -fr 08_non-res 1 270 2030 0.0 0.0 -fr 09_hydro_pump 1 270 2030 0.0 0.0 -fr 01_solar 1 271 2030 1.0 0.0 -fr 02_wind_on 1 271 2030 1.0 0.0 -fr 03_wind_off 1 271 2030 1.0 0.0 -fr 04_res 1 271 2030 1.0 0.0 -fr 05_nuclear 1 271 2030 1.0 0.0 -fr 06_coal 1 271 2030 1.0 0.0 -fr 07_gas 1 271 2030 0.0 0.0 -fr 08_non-res 1 271 2030 0.0 0.0 -fr 09_hydro_pump 1 271 2030 0.0 0.0 -fr 01_solar 1 272 2030 1.0 0.0 -fr 02_wind_on 1 272 2030 1.0 0.0 -fr 03_wind_off 1 272 2030 1.0 0.0 -fr 04_res 1 272 2030 1.0 0.0 -fr 05_nuclear 1 272 2030 1.0 0.0 -fr 06_coal 1 272 2030 1.0 0.0 -fr 07_gas 1 272 2030 0.0 0.0 -fr 08_non-res 1 272 2030 0.0 0.0 -fr 09_hydro_pump 1 272 2030 0.0 0.0 -fr 01_solar 1 273 2030 1.0 0.0 -fr 02_wind_on 1 273 2030 1.0 0.0 -fr 03_wind_off 1 273 2030 1.0 0.0 -fr 04_res 1 273 2030 1.0 0.0 -fr 05_nuclear 1 273 2030 1.0 0.0 -fr 06_coal 1 273 2030 1.0 0.0 -fr 07_gas 1 273 2030 0.0 0.0 -fr 08_non-res 1 273 2030 0.0 0.0 -fr 09_hydro_pump 1 273 2030 0.0 0.0 -fr 01_solar 1 274 2030 1.0 0.0 -fr 02_wind_on 1 274 2030 1.0 0.0 -fr 03_wind_off 1 274 2030 1.0 0.0 -fr 04_res 1 274 2030 1.0 0.0 -fr 05_nuclear 1 274 2030 1.0 0.0 -fr 06_coal 1 274 2030 1.0 0.0 -fr 07_gas 1 274 2030 0.0 0.0 -fr 08_non-res 1 274 2030 0.0 0.0 -fr 09_hydro_pump 1 274 2030 0.0 0.0 -fr 01_solar 1 275 2030 1.0 0.0 -fr 02_wind_on 1 275 2030 1.0 0.0 -fr 03_wind_off 1 275 2030 1.0 0.0 -fr 04_res 1 275 2030 1.0 0.0 -fr 05_nuclear 1 275 2030 1.0 0.0 -fr 06_coal 1 275 2030 1.0 0.0 -fr 07_gas 1 275 2030 0.0 0.0 -fr 08_non-res 1 275 2030 0.0 0.0 -fr 09_hydro_pump 1 275 2030 0.0 0.0 -fr 01_solar 1 276 2030 1.0 0.0 -fr 02_wind_on 1 276 2030 1.0 0.0 -fr 03_wind_off 1 276 2030 1.0 0.0 -fr 04_res 1 276 2030 1.0 0.0 -fr 05_nuclear 1 276 2030 1.0 0.0 -fr 06_coal 1 276 2030 1.0 0.0 -fr 07_gas 1 276 2030 0.0 0.0 -fr 08_non-res 1 276 2030 0.0 0.0 -fr 09_hydro_pump 1 276 2030 0.0 0.0 -fr 01_solar 1 277 2030 1.0 0.0 -fr 02_wind_on 1 277 2030 1.0 0.0 -fr 03_wind_off 1 277 2030 1.0 0.0 -fr 04_res 1 277 2030 1.0 0.0 -fr 05_nuclear 1 277 2030 1.0 0.0 -fr 06_coal 1 277 2030 1.0 0.0 -fr 07_gas 1 277 2030 0.0 0.0 -fr 08_non-res 1 277 2030 0.0 0.0 -fr 09_hydro_pump 1 277 2030 0.0 0.0 -fr 01_solar 1 278 2030 1.0 0.0 -fr 02_wind_on 1 278 2030 1.0 0.0 -fr 03_wind_off 1 278 2030 1.0 0.0 -fr 04_res 1 278 2030 1.0 0.0 -fr 05_nuclear 1 278 2030 1.0 0.0 -fr 06_coal 1 278 2030 1.0 0.0 -fr 07_gas 1 278 2030 0.0 0.0 -fr 08_non-res 1 278 2030 0.0 0.0 -fr 09_hydro_pump 1 278 2030 0.0 0.0 -fr 01_solar 1 279 2030 1.0 0.0 -fr 02_wind_on 1 279 2030 1.0 0.0 -fr 03_wind_off 1 279 2030 1.0 0.0 -fr 04_res 1 279 2030 1.0 0.0 -fr 05_nuclear 1 279 2030 1.0 0.0 -fr 06_coal 1 279 2030 1.0 0.0 -fr 07_gas 1 279 2030 0.0 0.0 -fr 08_non-res 1 279 2030 0.0 0.0 -fr 09_hydro_pump 1 279 2030 0.0 0.0 -fr 01_solar 1 280 2030 1.0 0.0 -fr 02_wind_on 1 280 2030 1.0 0.0 -fr 03_wind_off 1 280 2030 1.0 0.0 -fr 04_res 1 280 2030 1.0 0.0 -fr 05_nuclear 1 280 2030 1.0 0.0 -fr 06_coal 1 280 2030 1.0 0.0 -fr 07_gas 1 280 2030 0.0 0.0 -fr 08_non-res 1 280 2030 0.0 0.0 -fr 09_hydro_pump 1 280 2030 0.0 0.0 -fr 01_solar 1 281 2030 1.0 0.0 -fr 02_wind_on 1 281 2030 1.0 0.0 -fr 03_wind_off 1 281 2030 1.0 0.0 -fr 04_res 1 281 2030 1.0 0.0 -fr 05_nuclear 1 281 2030 1.0 0.0 -fr 06_coal 1 281 2030 1.0 0.0 -fr 07_gas 1 281 2030 0.0 0.0 -fr 08_non-res 1 281 2030 0.0 0.0 -fr 09_hydro_pump 1 281 2030 0.0 0.0 -fr 01_solar 1 282 2030 1.0 0.0 -fr 02_wind_on 1 282 2030 1.0 0.0 -fr 03_wind_off 1 282 2030 1.0 0.0 -fr 04_res 1 282 2030 1.0 0.0 -fr 05_nuclear 1 282 2030 1.0 0.0 -fr 06_coal 1 282 2030 1.0 0.0 -fr 07_gas 1 282 2030 0.0 0.0 -fr 08_non-res 1 282 2030 0.0 0.0 -fr 09_hydro_pump 1 282 2030 0.0 0.0 -fr 01_solar 1 283 2030 1.0 0.0 -fr 02_wind_on 1 283 2030 1.0 0.0 -fr 03_wind_off 1 283 2030 1.0 0.0 -fr 04_res 1 283 2030 1.0 0.0 -fr 05_nuclear 1 283 2030 1.0 0.0 -fr 06_coal 1 283 2030 1.0 0.0 -fr 07_gas 1 283 2030 0.0 0.0 -fr 08_non-res 1 283 2030 0.0 0.0 -fr 09_hydro_pump 1 283 2030 0.0 0.0 -fr 01_solar 1 284 2030 1.0 0.0 -fr 02_wind_on 1 284 2030 1.0 0.0 -fr 03_wind_off 1 284 2030 1.0 0.0 -fr 04_res 1 284 2030 1.0 0.0 -fr 05_nuclear 1 284 2030 1.0 0.0 -fr 06_coal 1 284 2030 1.0 0.0 -fr 07_gas 1 284 2030 0.0 0.0 -fr 08_non-res 1 284 2030 0.0 0.0 -fr 09_hydro_pump 1 284 2030 0.0 0.0 -fr 01_solar 1 285 2030 1.0 0.0 -fr 02_wind_on 1 285 2030 1.0 0.0 -fr 03_wind_off 1 285 2030 1.0 0.0 -fr 04_res 1 285 2030 1.0 0.0 -fr 05_nuclear 1 285 2030 1.0 0.0 -fr 06_coal 1 285 2030 1.0 0.0 -fr 07_gas 1 285 2030 0.0 0.0 -fr 08_non-res 1 285 2030 0.0 0.0 -fr 09_hydro_pump 1 285 2030 0.0 0.0 -fr 01_solar 1 286 2030 1.0 0.0 -fr 02_wind_on 1 286 2030 1.0 0.0 -fr 03_wind_off 1 286 2030 1.0 0.0 -fr 04_res 1 286 2030 1.0 0.0 -fr 05_nuclear 1 286 2030 1.0 0.0 -fr 06_coal 1 286 2030 1.0 0.0 -fr 07_gas 1 286 2030 0.0 0.0 -fr 08_non-res 1 286 2030 0.0 0.0 -fr 09_hydro_pump 1 286 2030 0.0 0.0 -fr 01_solar 1 287 2030 1.0 0.0 -fr 02_wind_on 1 287 2030 1.0 0.0 -fr 03_wind_off 1 287 2030 1.0 0.0 -fr 04_res 1 287 2030 1.0 0.0 -fr 05_nuclear 1 287 2030 1.0 0.0 -fr 06_coal 1 287 2030 1.0 0.0 -fr 07_gas 1 287 2030 0.0 0.0 -fr 08_non-res 1 287 2030 0.0 0.0 -fr 09_hydro_pump 1 287 2030 0.0 0.0 -fr 01_solar 1 288 2030 1.0 0.0 -fr 02_wind_on 1 288 2030 1.0 0.0 -fr 03_wind_off 1 288 2030 1.0 0.0 -fr 04_res 1 288 2030 1.0 0.0 -fr 05_nuclear 1 288 2030 1.0 0.0 -fr 06_coal 1 288 2030 1.0 0.0 -fr 07_gas 1 288 2030 0.0 0.0 -fr 08_non-res 1 288 2030 0.0 0.0 -fr 09_hydro_pump 1 288 2030 0.0 0.0 -fr 01_solar 1 289 2030 1.0 0.0 -fr 02_wind_on 1 289 2030 1.0 0.0 -fr 03_wind_off 1 289 2030 1.0 0.0 -fr 04_res 1 289 2030 1.0 0.0 -fr 05_nuclear 1 289 2030 1.0 0.0 -fr 06_coal 1 289 2030 1.0 0.0 -fr 07_gas 1 289 2030 0.0 0.0 -fr 08_non-res 1 289 2030 0.0 0.0 -fr 09_hydro_pump 1 289 2030 0.0 0.0 -fr 01_solar 1 290 2030 1.0 0.0 -fr 02_wind_on 1 290 2030 1.0 0.0 -fr 03_wind_off 1 290 2030 1.0 0.0 -fr 04_res 1 290 2030 1.0 0.0 -fr 05_nuclear 1 290 2030 1.0 0.0 -fr 06_coal 1 290 2030 1.0 0.0 -fr 07_gas 1 290 2030 1.0 0.0 -fr 08_non-res 1 290 2030 0.0 0.0 -fr 09_hydro_pump 1 290 2030 0.0 0.0 -fr 01_solar 1 291 2030 1.0 0.0 -fr 02_wind_on 1 291 2030 1.0 0.0 -fr 03_wind_off 1 291 2030 1.0 0.0 -fr 04_res 1 291 2030 1.0 0.0 -fr 05_nuclear 1 291 2030 1.0 0.0 -fr 06_coal 1 291 2030 1.0 0.0 -fr 07_gas 1 291 2030 1.0 0.0 -fr 08_non-res 1 291 2030 0.0 0.0 -fr 09_hydro_pump 1 291 2030 0.0 0.0 -fr 01_solar 1 292 2030 1.0 0.0 -fr 02_wind_on 1 292 2030 1.0 0.0 -fr 03_wind_off 1 292 2030 1.0 0.0 -fr 04_res 1 292 2030 1.0 0.0 -fr 05_nuclear 1 292 2030 1.0 0.0 -fr 06_coal 1 292 2030 1.0 0.0 -fr 07_gas 1 292 2030 1.0 0.0 -fr 08_non-res 1 292 2030 0.0 0.0 -fr 09_hydro_pump 1 292 2030 0.0 0.0 -fr 01_solar 1 293 2030 1.0 0.0 -fr 02_wind_on 1 293 2030 1.0 0.0 -fr 03_wind_off 1 293 2030 1.0 0.0 -fr 04_res 1 293 2030 1.0 0.0 -fr 05_nuclear 1 293 2030 1.0 0.0 -fr 06_coal 1 293 2030 1.0 0.0 -fr 07_gas 1 293 2030 1.0 0.0 -fr 08_non-res 1 293 2030 0.0 0.0 -fr 09_hydro_pump 1 293 2030 0.0 0.0 -fr 01_solar 1 294 2030 1.0 0.0 -fr 02_wind_on 1 294 2030 1.0 0.0 -fr 03_wind_off 1 294 2030 1.0 0.0 -fr 04_res 1 294 2030 1.0 0.0 -fr 05_nuclear 1 294 2030 1.0 0.0 -fr 06_coal 1 294 2030 1.0 0.0 -fr 07_gas 1 294 2030 1.0 0.0 -fr 08_non-res 1 294 2030 0.0 0.0 -fr 09_hydro_pump 1 294 2030 0.0 0.0 -fr 01_solar 1 295 2030 1.0 0.0 -fr 02_wind_on 1 295 2030 1.0 0.0 -fr 03_wind_off 1 295 2030 1.0 0.0 -fr 04_res 1 295 2030 1.0 0.0 -fr 05_nuclear 1 295 2030 1.0 0.0 -fr 06_coal 1 295 2030 1.0 0.0 -fr 07_gas 1 295 2030 1.0 0.0 -fr 08_non-res 1 295 2030 0.0 0.0 -fr 09_hydro_pump 1 295 2030 0.0 0.0 -fr 01_solar 1 296 2030 1.0 0.0 -fr 02_wind_on 1 296 2030 1.0 0.0 -fr 03_wind_off 1 296 2030 1.0 0.0 -fr 04_res 1 296 2030 1.0 0.0 -fr 05_nuclear 1 296 2030 1.0 0.0 -fr 06_coal 1 296 2030 1.0 0.0 -fr 07_gas 1 296 2030 1.0 0.0 -fr 08_non-res 1 296 2030 0.0 0.0 -fr 09_hydro_pump 1 296 2030 0.0 0.0 -fr 01_solar 1 297 2030 1.0 0.0 -fr 02_wind_on 1 297 2030 1.0 0.0 -fr 03_wind_off 1 297 2030 1.0 0.0 -fr 04_res 1 297 2030 1.0 0.0 -fr 05_nuclear 1 297 2030 1.0 0.0 -fr 06_coal 1 297 2030 1.0 0.0 -fr 07_gas 1 297 2030 1.0 0.0 -fr 08_non-res 1 297 2030 0.0 0.0 -fr 09_hydro_pump 1 297 2030 0.0 0.0 -fr 01_solar 1 298 2030 1.0 0.0 -fr 02_wind_on 1 298 2030 1.0 0.0 -fr 03_wind_off 1 298 2030 1.0 0.0 -fr 04_res 1 298 2030 1.0 0.0 -fr 05_nuclear 1 298 2030 1.0 0.0 -fr 06_coal 1 298 2030 1.0 0.0 -fr 07_gas 1 298 2030 1.0 0.0 -fr 08_non-res 1 298 2030 0.0 0.0 -fr 09_hydro_pump 1 298 2030 0.0 0.0 -fr 01_solar 1 299 2030 1.0 0.0 -fr 02_wind_on 1 299 2030 1.0 0.0 -fr 03_wind_off 1 299 2030 1.0 0.0 -fr 04_res 1 299 2030 1.0 0.0 -fr 05_nuclear 1 299 2030 1.0 0.0 -fr 06_coal 1 299 2030 1.0 0.0 -fr 07_gas 1 299 2030 1.0 0.0 -fr 08_non-res 1 299 2030 0.0 0.0 -fr 09_hydro_pump 1 299 2030 0.0 0.0 -fr 01_solar 1 300 2030 1.0 0.0 -fr 02_wind_on 1 300 2030 1.0 0.0 -fr 03_wind_off 1 300 2030 1.0 0.0 -fr 04_res 1 300 2030 1.0 0.0 -fr 05_nuclear 1 300 2030 1.0 0.0 -fr 06_coal 1 300 2030 1.0 0.0 -fr 07_gas 1 300 2030 1.0 0.0 -fr 08_non-res 1 300 2030 0.0 0.0 -fr 09_hydro_pump 1 300 2030 0.0 0.0 -fr 01_solar 1 301 2030 1.0 0.0 -fr 02_wind_on 1 301 2030 1.0 0.0 -fr 03_wind_off 1 301 2030 1.0 0.0 -fr 04_res 1 301 2030 1.0 0.0 -fr 05_nuclear 1 301 2030 1.0 0.0 -fr 06_coal 1 301 2030 1.0 0.0 -fr 07_gas 1 301 2030 1.0 0.0 -fr 08_non-res 1 301 2030 0.0 0.0 -fr 09_hydro_pump 1 301 2030 0.0 0.0 -fr 01_solar 1 302 2030 1.0 0.0 -fr 02_wind_on 1 302 2030 1.0 0.0 -fr 03_wind_off 1 302 2030 1.0 0.0 -fr 04_res 1 302 2030 1.0 0.0 -fr 05_nuclear 1 302 2030 1.0 0.0 -fr 06_coal 1 302 2030 1.0 0.0 -fr 07_gas 1 302 2030 1.0 0.0 -fr 08_non-res 1 302 2030 0.0 0.0 -fr 09_hydro_pump 1 302 2030 0.0 0.0 -fr 01_solar 1 303 2030 1.0 0.0 -fr 02_wind_on 1 303 2030 1.0 0.0 -fr 03_wind_off 1 303 2030 1.0 0.0 -fr 04_res 1 303 2030 1.0 0.0 -fr 05_nuclear 1 303 2030 1.0 0.0 -fr 06_coal 1 303 2030 1.0 0.0 -fr 07_gas 1 303 2030 1.0 0.0 -fr 08_non-res 1 303 2030 0.0 0.0 -fr 09_hydro_pump 1 303 2030 0.0 0.0 -fr 01_solar 1 304 2030 1.0 0.0 -fr 02_wind_on 1 304 2030 1.0 0.0 -fr 03_wind_off 1 304 2030 1.0 0.0 -fr 04_res 1 304 2030 1.0 0.0 -fr 05_nuclear 1 304 2030 1.0 0.0 -fr 06_coal 1 304 2030 1.0 0.0 -fr 07_gas 1 304 2030 1.0 0.0 -fr 08_non-res 1 304 2030 0.0 0.0 -fr 09_hydro_pump 1 304 2030 0.0 0.0 -fr 01_solar 1 305 2030 1.0 0.0 -fr 02_wind_on 1 305 2030 1.0 0.0 -fr 03_wind_off 1 305 2030 1.0 0.0 -fr 04_res 1 305 2030 1.0 0.0 -fr 05_nuclear 1 305 2030 1.0 0.0 -fr 06_coal 1 305 2030 1.0 0.0 -fr 07_gas 1 305 2030 1.0 0.0 -fr 08_non-res 1 305 2030 0.0 0.0 -fr 09_hydro_pump 1 305 2030 0.0 0.0 -fr 01_solar 1 306 2030 1.0 0.0 -fr 02_wind_on 1 306 2030 1.0 0.0 -fr 03_wind_off 1 306 2030 1.0 0.0 -fr 04_res 1 306 2030 1.0 0.0 -fr 05_nuclear 1 306 2030 1.0 0.0 -fr 06_coal 1 306 2030 1.0 0.0 -fr 07_gas 1 306 2030 1.0 0.0 -fr 08_non-res 1 306 2030 0.0 0.0 -fr 09_hydro_pump 1 306 2030 0.0 0.0 -fr 01_solar 1 307 2030 1.0 0.0 -fr 02_wind_on 1 307 2030 1.0 0.0 -fr 03_wind_off 1 307 2030 1.0 0.0 -fr 04_res 1 307 2030 1.0 0.0 -fr 05_nuclear 1 307 2030 1.0 0.0 -fr 06_coal 1 307 2030 1.0 0.0 -fr 07_gas 1 307 2030 1.0 0.0 -fr 08_non-res 1 307 2030 0.0 0.0 -fr 09_hydro_pump 1 307 2030 0.0 0.0 -fr 01_solar 1 308 2030 1.0 0.0 -fr 02_wind_on 1 308 2030 1.0 0.0 -fr 03_wind_off 1 308 2030 1.0 0.0 -fr 04_res 1 308 2030 1.0 0.0 -fr 05_nuclear 1 308 2030 1.0 0.0 -fr 06_coal 1 308 2030 1.0 0.0 -fr 07_gas 1 308 2030 1.0 0.0 -fr 08_non-res 1 308 2030 0.0 0.0 -fr 09_hydro_pump 1 308 2030 0.0 0.0 -fr 01_solar 1 309 2030 1.0 0.0 -fr 02_wind_on 1 309 2030 1.0 0.0 -fr 03_wind_off 1 309 2030 1.0 0.0 -fr 04_res 1 309 2030 1.0 0.0 -fr 05_nuclear 1 309 2030 1.0 0.0 -fr 06_coal 1 309 2030 1.0 0.0 -fr 07_gas 1 309 2030 1.0 0.0 -fr 08_non-res 1 309 2030 0.0 0.0 -fr 09_hydro_pump 1 309 2030 0.0 0.0 -fr 01_solar 1 310 2030 1.0 0.0 -fr 02_wind_on 1 310 2030 1.0 0.0 -fr 03_wind_off 1 310 2030 1.0 0.0 -fr 04_res 1 310 2030 1.0 0.0 -fr 05_nuclear 1 310 2030 1.0 0.0 -fr 06_coal 1 310 2030 1.0 0.0 -fr 07_gas 1 310 2030 1.0 0.0 -fr 08_non-res 1 310 2030 1.0 0.0 -fr 09_hydro_pump 1 310 2030 0.0 0.0 -fr 01_solar 1 311 2030 1.0 0.0 -fr 02_wind_on 1 311 2030 1.0 0.0 -fr 03_wind_off 1 311 2030 1.0 0.0 -fr 04_res 1 311 2030 1.0 0.0 -fr 05_nuclear 1 311 2030 1.0 0.0 -fr 06_coal 1 311 2030 1.0 0.0 -fr 07_gas 1 311 2030 1.0 0.0 -fr 08_non-res 1 311 2030 1.0 0.0 -fr 09_hydro_pump 1 311 2030 0.0 0.0 -fr 01_solar 1 312 2030 1.0 0.0 -fr 02_wind_on 1 312 2030 1.0 0.0 -fr 03_wind_off 1 312 2030 1.0 0.0 -fr 04_res 1 312 2030 1.0 0.0 -fr 05_nuclear 1 312 2030 1.0 0.0 -fr 06_coal 1 312 2030 1.0 0.0 -fr 07_gas 1 312 2030 1.0 0.0 -fr 08_non-res 1 312 2030 1.0 0.0 -fr 09_hydro_pump 1 312 2030 0.0 0.0 -fr 01_solar 1 313 2030 1.0 0.0 -fr 02_wind_on 1 313 2030 1.0 0.0 -fr 03_wind_off 1 313 2030 1.0 0.0 -fr 04_res 1 313 2030 1.0 0.0 -fr 05_nuclear 1 313 2030 1.0 0.0 -fr 06_coal 1 313 2030 1.0 0.0 -fr 07_gas 1 313 2030 1.0 0.0 -fr 08_non-res 1 313 2030 1.0 0.0 -fr 09_hydro_pump 1 313 2030 0.0 0.0 -fr 01_solar 1 314 2030 1.0 0.0 -fr 02_wind_on 1 314 2030 1.0 0.0 -fr 03_wind_off 1 314 2030 1.0 0.0 -fr 04_res 1 314 2030 1.0 0.0 -fr 05_nuclear 1 314 2030 1.0 0.0 -fr 06_coal 1 314 2030 1.0 0.0 -fr 07_gas 1 314 2030 1.0 0.0 -fr 08_non-res 1 314 2030 1.0 0.0 -fr 09_hydro_pump 1 314 2030 0.0 0.0 -fr 01_solar 1 315 2030 1.0 0.0 -fr 02_wind_on 1 315 2030 1.0 0.0 -fr 03_wind_off 1 315 2030 1.0 0.0 -fr 04_res 1 315 2030 1.0 0.0 -fr 05_nuclear 1 315 2030 1.0 0.0 -fr 06_coal 1 315 2030 1.0 0.0 -fr 07_gas 1 315 2030 1.0 0.0 -fr 08_non-res 1 315 2030 1.0 0.0 -fr 09_hydro_pump 1 315 2030 0.0 0.0 -fr 01_solar 1 316 2030 1.0 0.0 -fr 02_wind_on 1 316 2030 1.0 0.0 -fr 03_wind_off 1 316 2030 1.0 0.0 -fr 04_res 1 316 2030 1.0 0.0 -fr 05_nuclear 1 316 2030 1.0 0.0 -fr 06_coal 1 316 2030 1.0 0.0 -fr 07_gas 1 316 2030 1.0 0.0 -fr 08_non-res 1 316 2030 1.0 0.0 -fr 09_hydro_pump 1 316 2030 0.0 0.0 -fr 01_solar 1 317 2030 1.0 0.0 -fr 02_wind_on 1 317 2030 1.0 0.0 -fr 03_wind_off 1 317 2030 1.0 0.0 -fr 04_res 1 317 2030 1.0 0.0 -fr 05_nuclear 1 317 2030 1.0 0.0 -fr 06_coal 1 317 2030 1.0 0.0 -fr 07_gas 1 317 2030 1.0 0.0 -fr 08_non-res 1 317 2030 1.0 0.0 -fr 09_hydro_pump 1 317 2030 0.0 0.0 -fr 01_solar 1 318 2030 1.0 0.0 -fr 02_wind_on 1 318 2030 1.0 0.0 -fr 03_wind_off 1 318 2030 1.0 0.0 -fr 04_res 1 318 2030 1.0 0.0 -fr 05_nuclear 1 318 2030 1.0 0.0 -fr 06_coal 1 318 2030 1.0 0.0 -fr 07_gas 1 318 2030 1.0 0.0 -fr 08_non-res 1 318 2030 1.0 0.0 -fr 09_hydro_pump 1 318 2030 0.0 0.0 -fr 01_solar 1 319 2030 1.0 0.0 -fr 02_wind_on 1 319 2030 1.0 0.0 -fr 03_wind_off 1 319 2030 1.0 0.0 -fr 04_res 1 319 2030 1.0 0.0 -fr 05_nuclear 1 319 2030 1.0 0.0 -fr 06_coal 1 319 2030 1.0 0.0 -fr 07_gas 1 319 2030 1.0 0.0 -fr 08_non-res 1 319 2030 1.0 0.0 -fr 09_hydro_pump 1 319 2030 0.0 0.0 -fr 01_solar 1 320 2030 1.0 0.0 -fr 02_wind_on 1 320 2030 1.0 0.0 -fr 03_wind_off 1 320 2030 1.0 0.0 -fr 04_res 1 320 2030 1.0 0.0 -fr 05_nuclear 1 320 2030 1.0 0.0 -fr 06_coal 1 320 2030 1.0 0.0 -fr 07_gas 1 320 2030 1.0 0.0 -fr 08_non-res 1 320 2030 1.0 0.0 -fr 09_hydro_pump 1 320 2030 0.0 0.0 -fr 01_solar 1 321 2030 1.0 0.0 -fr 02_wind_on 1 321 2030 1.0 0.0 -fr 03_wind_off 1 321 2030 1.0 0.0 -fr 04_res 1 321 2030 1.0 0.0 -fr 05_nuclear 1 321 2030 1.0 0.0 -fr 06_coal 1 321 2030 1.0 0.0 -fr 07_gas 1 321 2030 1.0 0.0 -fr 08_non-res 1 321 2030 1.0 0.0 -fr 09_hydro_pump 1 321 2030 0.0 0.0 -fr 01_solar 1 322 2030 1.0 0.0 -fr 02_wind_on 1 322 2030 1.0 0.0 -fr 03_wind_off 1 322 2030 1.0 0.0 -fr 04_res 1 322 2030 1.0 0.0 -fr 05_nuclear 1 322 2030 1.0 0.0 -fr 06_coal 1 322 2030 1.0 0.0 -fr 07_gas 1 322 2030 1.0 0.0 -fr 08_non-res 1 322 2030 1.0 0.0 -fr 09_hydro_pump 1 322 2030 0.0 0.0 -fr 01_solar 1 323 2030 1.0 0.0 -fr 02_wind_on 1 323 2030 1.0 0.0 -fr 03_wind_off 1 323 2030 1.0 0.0 -fr 04_res 1 323 2030 1.0 0.0 -fr 05_nuclear 1 323 2030 1.0 0.0 -fr 06_coal 1 323 2030 1.0 0.0 -fr 07_gas 1 323 2030 1.0 0.0 -fr 08_non-res 1 323 2030 1.0 0.0 -fr 09_hydro_pump 1 323 2030 0.0 0.0 -fr 01_solar 1 324 2030 1.0 0.0 -fr 02_wind_on 1 324 2030 1.0 0.0 -fr 03_wind_off 1 324 2030 1.0 0.0 -fr 04_res 1 324 2030 1.0 0.0 -fr 05_nuclear 1 324 2030 1.0 0.0 -fr 06_coal 1 324 2030 1.0 0.0 -fr 07_gas 1 324 2030 1.0 0.0 -fr 08_non-res 1 324 2030 1.0 0.0 -fr 09_hydro_pump 1 324 2030 0.0 0.0 -fr 01_solar 1 325 2030 1.0 0.0 -fr 02_wind_on 1 325 2030 1.0 0.0 -fr 03_wind_off 1 325 2030 1.0 0.0 -fr 04_res 1 325 2030 1.0 0.0 -fr 05_nuclear 1 325 2030 1.0 0.0 -fr 06_coal 1 325 2030 1.0 0.0 -fr 07_gas 1 325 2030 1.0 0.0 -fr 08_non-res 1 325 2030 1.0 0.0 -fr 09_hydro_pump 1 325 2030 0.0 0.0 -fr 01_solar 1 326 2030 1.0 0.0 -fr 02_wind_on 1 326 2030 1.0 0.0 -fr 03_wind_off 1 326 2030 1.0 0.0 -fr 04_res 1 326 2030 1.0 0.0 -fr 05_nuclear 1 326 2030 1.0 0.0 -fr 06_coal 1 326 2030 1.0 0.0 -fr 07_gas 1 326 2030 1.0 0.0 -fr 08_non-res 1 326 2030 1.0 0.0 -fr 09_hydro_pump 1 326 2030 0.0 0.0 -fr 01_solar 1 327 2030 1.0 0.0 -fr 02_wind_on 1 327 2030 1.0 0.0 -fr 03_wind_off 1 327 2030 1.0 0.0 -fr 04_res 1 327 2030 1.0 0.0 -fr 05_nuclear 1 327 2030 1.0 0.0 -fr 06_coal 1 327 2030 1.0 0.0 -fr 07_gas 1 327 2030 1.0 0.0 -fr 08_non-res 1 327 2030 1.0 0.0 -fr 09_hydro_pump 1 327 2030 0.0 0.0 -fr 01_solar 1 328 2030 1.0 0.0 -fr 02_wind_on 1 328 2030 1.0 0.0 -fr 03_wind_off 1 328 2030 1.0 0.0 -fr 04_res 1 328 2030 1.0 0.0 -fr 05_nuclear 1 328 2030 1.0 0.0 -fr 06_coal 1 328 2030 1.0 0.0 -fr 07_gas 1 328 2030 1.0 0.0 -fr 08_non-res 1 328 2030 1.0 0.0 -fr 09_hydro_pump 1 328 2030 0.0 0.0 -fr 01_solar 1 329 2030 1.0 0.0 -fr 02_wind_on 1 329 2030 1.0 0.0 -fr 03_wind_off 1 329 2030 1.0 0.0 -fr 04_res 1 329 2030 1.0 0.0 -fr 05_nuclear 1 329 2030 1.0 0.0 -fr 06_coal 1 329 2030 1.0 0.0 -fr 07_gas 1 329 2030 1.0 0.0 -fr 08_non-res 1 329 2030 1.0 0.0 -fr 09_hydro_pump 1 329 2030 0.0 0.0 -fr 01_solar 1 330 2030 1.0 0.0 -fr 02_wind_on 1 330 2030 1.0 0.0 -fr 03_wind_off 1 330 2030 1.0 0.0 -fr 04_res 1 330 2030 1.0 0.0 -fr 05_nuclear 1 330 2030 1.0 0.0 -fr 06_coal 1 330 2030 1.0 0.0 -fr 07_gas 1 330 2030 1.0 0.0 -fr 08_non-res 1 330 2030 1.0 0.0 -fr 09_hydro_pump 1 330 2030 1.0 0.0 -fr 01_solar 1 331 2030 1.0 0.0 -fr 02_wind_on 1 331 2030 1.0 0.0 -fr 03_wind_off 1 331 2030 1.0 0.0 -fr 04_res 1 331 2030 1.0 0.0 -fr 05_nuclear 1 331 2030 1.0 0.0 -fr 06_coal 1 331 2030 1.0 0.0 -fr 07_gas 1 331 2030 1.0 0.0 -fr 08_non-res 1 331 2030 1.0 0.0 -fr 09_hydro_pump 1 331 2030 1.0 0.0 -fr 01_solar 1 332 2030 1.0 0.0 -fr 02_wind_on 1 332 2030 1.0 0.0 -fr 03_wind_off 1 332 2030 1.0 0.0 -fr 04_res 1 332 2030 1.0 0.0 -fr 05_nuclear 1 332 2030 1.0 0.0 -fr 06_coal 1 332 2030 1.0 0.0 -fr 07_gas 1 332 2030 1.0 0.0 -fr 08_non-res 1 332 2030 1.0 0.0 -fr 09_hydro_pump 1 332 2030 1.0 0.0 -fr 01_solar 1 333 2030 1.0 0.0 -fr 02_wind_on 1 333 2030 1.0 0.0 -fr 03_wind_off 1 333 2030 1.0 0.0 -fr 04_res 1 333 2030 1.0 0.0 -fr 05_nuclear 1 333 2030 1.0 0.0 -fr 06_coal 1 333 2030 1.0 0.0 -fr 07_gas 1 333 2030 1.0 0.0 -fr 08_non-res 1 333 2030 1.0 0.0 -fr 09_hydro_pump 1 333 2030 1.0 0.0 -fr 01_solar 1 334 2030 1.0 0.0 -fr 02_wind_on 1 334 2030 1.0 0.0 -fr 03_wind_off 1 334 2030 1.0 0.0 -fr 04_res 1 334 2030 1.0 0.0 -fr 05_nuclear 1 334 2030 1.0 0.0 -fr 06_coal 1 334 2030 1.0 0.0 -fr 07_gas 1 334 2030 1.0 0.0 -fr 08_non-res 1 334 2030 1.0 0.0 -fr 09_hydro_pump 1 334 2030 1.0 0.0 -fr 01_solar 1 335 2030 1.0 0.0 -fr 02_wind_on 1 335 2030 1.0 0.0 -fr 03_wind_off 1 335 2030 1.0 0.0 -fr 04_res 1 335 2030 1.0 0.0 -fr 05_nuclear 1 335 2030 1.0 0.0 -fr 06_coal 1 335 2030 1.0 0.0 -fr 07_gas 1 335 2030 1.0 0.0 -fr 08_non-res 1 335 2030 1.0 0.0 -fr 09_hydro_pump 1 335 2030 1.0 0.0 -fr 01_solar 1 336 2030 1.0 0.0 -fr 02_wind_on 1 336 2030 1.0 0.0 -fr 03_wind_off 1 336 2030 1.0 0.0 -fr 04_res 1 336 2030 1.0 0.0 -fr 05_nuclear 1 336 2030 1.0 0.0 -fr 06_coal 1 336 2030 1.0 0.0 -fr 07_gas 1 336 2030 1.0 0.0 -fr 08_non-res 1 336 2030 1.0 0.0 -fr 09_hydro_pump 1 336 2030 1.0 0.0 -it 01_solar 1 1 2030 0.0 0.0 -it 02_wind_on 1 1 2030 0.0 0.0 -it 03_wind_off 1 1 2030 0.0 0.0 -it 04_res 1 1 2030 0.0 0.0 -it 05_nuclear 1 1 2030 0.0 0.0 -it 06_coal 1 1 2030 0.0 0.0 -it 07_gas 1 1 2030 0.0 0.0 -it 08_non-res 1 1 2030 0.0 0.0 -it 09_hydro_pump 1 1 2030 0.0 0.0 -it 01_solar 1 2 2030 1.0 0.0 -it 02_wind_on 1 2 2030 0.0 0.0 -it 03_wind_off 1 2 2030 0.0 0.0 -it 04_res 1 2 2030 0.0 0.0 -it 05_nuclear 1 2 2030 0.0 0.0 -it 06_coal 1 2 2030 0.0 0.0 -it 07_gas 1 2 2030 0.0 0.0 -it 08_non-res 1 2 2030 0.0 0.0 -it 09_hydro_pump 1 2 2030 0.0 0.0 -it 01_solar 1 3 2030 1.0 0.0 -it 02_wind_on 1 3 2030 0.0 0.0 -it 03_wind_off 1 3 2030 0.0 0.0 -it 04_res 1 3 2030 0.0 0.0 -it 05_nuclear 1 3 2030 0.0 0.0 -it 06_coal 1 3 2030 0.0 0.0 -it 07_gas 1 3 2030 0.0 0.0 -it 08_non-res 1 3 2030 0.0 0.0 -it 09_hydro_pump 1 3 2030 0.0 0.0 -it 01_solar 1 4 2030 1.0 0.0 -it 02_wind_on 1 4 2030 0.0 0.0 -it 03_wind_off 1 4 2030 0.0 0.0 -it 04_res 1 4 2030 0.0 0.0 -it 05_nuclear 1 4 2030 0.0 0.0 -it 06_coal 1 4 2030 0.0 0.0 -it 07_gas 1 4 2030 0.0 0.0 -it 08_non-res 1 4 2030 0.0 0.0 -it 09_hydro_pump 1 4 2030 0.0 0.0 -it 01_solar 1 5 2030 1.0 0.0 -it 02_wind_on 1 5 2030 0.0 0.0 -it 03_wind_off 1 5 2030 0.0 0.0 -it 04_res 1 5 2030 0.0 0.0 -it 05_nuclear 1 5 2030 0.0 0.0 -it 06_coal 1 5 2030 0.0 0.0 -it 07_gas 1 5 2030 0.0 0.0 -it 08_non-res 1 5 2030 0.0 0.0 -it 09_hydro_pump 1 5 2030 0.0 0.0 -it 01_solar 1 6 2030 1.0 0.0 -it 02_wind_on 1 6 2030 0.0 0.0 -it 03_wind_off 1 6 2030 0.0 0.0 -it 04_res 1 6 2030 0.0 0.0 -it 05_nuclear 1 6 2030 0.0 0.0 -it 06_coal 1 6 2030 0.0 0.0 -it 07_gas 1 6 2030 0.0 0.0 -it 08_non-res 1 6 2030 0.0 0.0 -it 09_hydro_pump 1 6 2030 0.0 0.0 -it 01_solar 1 7 2030 1.0 0.0 -it 02_wind_on 1 7 2030 0.0 0.0 -it 03_wind_off 1 7 2030 0.0 0.0 -it 04_res 1 7 2030 0.0 0.0 -it 05_nuclear 1 7 2030 0.0 0.0 -it 06_coal 1 7 2030 0.0 0.0 -it 07_gas 1 7 2030 0.0 0.0 -it 08_non-res 1 7 2030 0.0 0.0 -it 09_hydro_pump 1 7 2030 0.0 0.0 -it 01_solar 1 8 2030 1.0 0.0 -it 02_wind_on 1 8 2030 0.0 0.0 -it 03_wind_off 1 8 2030 0.0 0.0 -it 04_res 1 8 2030 0.0 0.0 -it 05_nuclear 1 8 2030 0.0 0.0 -it 06_coal 1 8 2030 0.0 0.0 -it 07_gas 1 8 2030 0.0 0.0 -it 08_non-res 1 8 2030 0.0 0.0 -it 09_hydro_pump 1 8 2030 0.0 0.0 -it 01_solar 1 9 2030 1.0 0.0 -it 02_wind_on 1 9 2030 0.0 0.0 -it 03_wind_off 1 9 2030 0.0 0.0 -it 04_res 1 9 2030 0.0 0.0 -it 05_nuclear 1 9 2030 0.0 0.0 -it 06_coal 1 9 2030 0.0 0.0 -it 07_gas 1 9 2030 0.0 0.0 -it 08_non-res 1 9 2030 0.0 0.0 -it 09_hydro_pump 1 9 2030 0.0 0.0 -it 01_solar 1 10 2030 1.0 0.0 -it 02_wind_on 1 10 2030 0.0 0.0 -it 03_wind_off 1 10 2030 0.0 0.0 -it 04_res 1 10 2030 0.0 0.0 -it 05_nuclear 1 10 2030 0.0 0.0 -it 06_coal 1 10 2030 0.0 0.0 -it 07_gas 1 10 2030 0.0 0.0 -it 08_non-res 1 10 2030 0.0 0.0 -it 09_hydro_pump 1 10 2030 0.0 0.0 -it 01_solar 1 11 2030 1.0 0.0 -it 02_wind_on 1 11 2030 0.0 0.0 -it 03_wind_off 1 11 2030 0.0 0.0 -it 04_res 1 11 2030 0.0 0.0 -it 05_nuclear 1 11 2030 0.0 0.0 -it 06_coal 1 11 2030 0.0 0.0 -it 07_gas 1 11 2030 0.0 0.0 -it 08_non-res 1 11 2030 0.0 0.0 -it 09_hydro_pump 1 11 2030 0.0 0.0 -it 01_solar 1 12 2030 1.0 0.0 -it 02_wind_on 1 12 2030 0.0 0.0 -it 03_wind_off 1 12 2030 0.0 0.0 -it 04_res 1 12 2030 0.0 0.0 -it 05_nuclear 1 12 2030 0.0 0.0 -it 06_coal 1 12 2030 0.0 0.0 -it 07_gas 1 12 2030 0.0 0.0 -it 08_non-res 1 12 2030 0.0 0.0 -it 09_hydro_pump 1 12 2030 0.0 0.0 -it 01_solar 1 13 2030 1.0 0.0 -it 02_wind_on 1 13 2030 0.0 0.0 -it 03_wind_off 1 13 2030 0.0 0.0 -it 04_res 1 13 2030 0.0 0.0 -it 05_nuclear 1 13 2030 0.0 0.0 -it 06_coal 1 13 2030 0.0 0.0 -it 07_gas 1 13 2030 0.0 0.0 -it 08_non-res 1 13 2030 0.0 0.0 -it 09_hydro_pump 1 13 2030 0.0 0.0 -it 01_solar 1 14 2030 1.0 0.0 -it 02_wind_on 1 14 2030 0.0 0.0 -it 03_wind_off 1 14 2030 0.0 0.0 -it 04_res 1 14 2030 0.0 0.0 -it 05_nuclear 1 14 2030 0.0 0.0 -it 06_coal 1 14 2030 0.0 0.0 -it 07_gas 1 14 2030 0.0 0.0 -it 08_non-res 1 14 2030 0.0 0.0 -it 09_hydro_pump 1 14 2030 0.0 0.0 -it 01_solar 1 15 2030 1.0 0.0 -it 02_wind_on 1 15 2030 0.0 0.0 -it 03_wind_off 1 15 2030 0.0 0.0 -it 04_res 1 15 2030 0.0 0.0 -it 05_nuclear 1 15 2030 0.0 0.0 -it 06_coal 1 15 2030 0.0 0.0 -it 07_gas 1 15 2030 0.0 0.0 -it 08_non-res 1 15 2030 0.0 0.0 -it 09_hydro_pump 1 15 2030 0.0 0.0 -it 01_solar 1 16 2030 1.0 0.0 -it 02_wind_on 1 16 2030 0.0 0.0 -it 03_wind_off 1 16 2030 0.0 0.0 -it 04_res 1 16 2030 0.0 0.0 -it 05_nuclear 1 16 2030 0.0 0.0 -it 06_coal 1 16 2030 0.0 0.0 -it 07_gas 1 16 2030 0.0 0.0 -it 08_non-res 1 16 2030 0.0 0.0 -it 09_hydro_pump 1 16 2030 0.0 0.0 -it 01_solar 1 17 2030 1.0 0.0 -it 02_wind_on 1 17 2030 0.0 0.0 -it 03_wind_off 1 17 2030 0.0 0.0 -it 04_res 1 17 2030 0.0 0.0 -it 05_nuclear 1 17 2030 0.0 0.0 -it 06_coal 1 17 2030 0.0 0.0 -it 07_gas 1 17 2030 0.0 0.0 -it 08_non-res 1 17 2030 0.0 0.0 -it 09_hydro_pump 1 17 2030 0.0 0.0 -it 01_solar 1 18 2030 1.0 0.0 -it 02_wind_on 1 18 2030 0.0 0.0 -it 03_wind_off 1 18 2030 0.0 0.0 -it 04_res 1 18 2030 0.0 0.0 -it 05_nuclear 1 18 2030 0.0 0.0 -it 06_coal 1 18 2030 0.0 0.0 -it 07_gas 1 18 2030 0.0 0.0 -it 08_non-res 1 18 2030 0.0 0.0 -it 09_hydro_pump 1 18 2030 0.0 0.0 -it 01_solar 1 19 2030 1.0 0.0 -it 02_wind_on 1 19 2030 0.0 0.0 -it 03_wind_off 1 19 2030 0.0 0.0 -it 04_res 1 19 2030 0.0 0.0 -it 05_nuclear 1 19 2030 0.0 0.0 -it 06_coal 1 19 2030 0.0 0.0 -it 07_gas 1 19 2030 0.0 0.0 -it 08_non-res 1 19 2030 0.0 0.0 -it 09_hydro_pump 1 19 2030 0.0 0.0 -it 01_solar 1 20 2030 1.0 0.0 -it 02_wind_on 1 20 2030 0.0 0.0 -it 03_wind_off 1 20 2030 0.0 0.0 -it 04_res 1 20 2030 0.0 0.0 -it 05_nuclear 1 20 2030 0.0 0.0 -it 06_coal 1 20 2030 0.0 0.0 -it 07_gas 1 20 2030 0.0 0.0 -it 08_non-res 1 20 2030 0.0 0.0 -it 09_hydro_pump 1 20 2030 0.0 0.0 -it 01_solar 1 21 2030 1.0 0.0 -it 02_wind_on 1 21 2030 0.0 0.0 -it 03_wind_off 1 21 2030 0.0 0.0 -it 04_res 1 21 2030 0.0 0.0 -it 05_nuclear 1 21 2030 0.0 0.0 -it 06_coal 1 21 2030 0.0 0.0 -it 07_gas 1 21 2030 0.0 0.0 -it 08_non-res 1 21 2030 0.0 0.0 -it 09_hydro_pump 1 21 2030 0.0 0.0 -it 01_solar 1 22 2030 1.0 0.0 -it 02_wind_on 1 22 2030 1.0 0.0 -it 03_wind_off 1 22 2030 0.0 0.0 -it 04_res 1 22 2030 0.0 0.0 -it 05_nuclear 1 22 2030 0.0 0.0 -it 06_coal 1 22 2030 0.0 0.0 -it 07_gas 1 22 2030 0.0 0.0 -it 08_non-res 1 22 2030 0.0 0.0 -it 09_hydro_pump 1 22 2030 0.0 0.0 -it 01_solar 1 23 2030 1.0 0.0 -it 02_wind_on 1 23 2030 1.0 0.0 -it 03_wind_off 1 23 2030 0.0 0.0 -it 04_res 1 23 2030 0.0 0.0 -it 05_nuclear 1 23 2030 0.0 0.0 -it 06_coal 1 23 2030 0.0 0.0 -it 07_gas 1 23 2030 0.0 0.0 -it 08_non-res 1 23 2030 0.0 0.0 -it 09_hydro_pump 1 23 2030 0.0 0.0 -it 01_solar 1 24 2030 1.0 0.0 -it 02_wind_on 1 24 2030 1.0 0.0 -it 03_wind_off 1 24 2030 0.0 0.0 -it 04_res 1 24 2030 0.0 0.0 -it 05_nuclear 1 24 2030 0.0 0.0 -it 06_coal 1 24 2030 0.0 0.0 -it 07_gas 1 24 2030 0.0 0.0 -it 08_non-res 1 24 2030 0.0 0.0 -it 09_hydro_pump 1 24 2030 0.0 0.0 -it 01_solar 1 25 2030 1.0 0.0 -it 02_wind_on 1 25 2030 1.0 0.0 -it 03_wind_off 1 25 2030 0.0 0.0 -it 04_res 1 25 2030 0.0 0.0 -it 05_nuclear 1 25 2030 0.0 0.0 -it 06_coal 1 25 2030 0.0 0.0 -it 07_gas 1 25 2030 0.0 0.0 -it 08_non-res 1 25 2030 0.0 0.0 -it 09_hydro_pump 1 25 2030 0.0 0.0 -it 01_solar 1 26 2030 1.0 0.0 -it 02_wind_on 1 26 2030 1.0 0.0 -it 03_wind_off 1 26 2030 0.0 0.0 -it 04_res 1 26 2030 0.0 0.0 -it 05_nuclear 1 26 2030 0.0 0.0 -it 06_coal 1 26 2030 0.0 0.0 -it 07_gas 1 26 2030 0.0 0.0 -it 08_non-res 1 26 2030 0.0 0.0 -it 09_hydro_pump 1 26 2030 0.0 0.0 -it 01_solar 1 27 2030 1.0 0.0 -it 02_wind_on 1 27 2030 1.0 0.0 -it 03_wind_off 1 27 2030 0.0 0.0 -it 04_res 1 27 2030 0.0 0.0 -it 05_nuclear 1 27 2030 0.0 0.0 -it 06_coal 1 27 2030 0.0 0.0 -it 07_gas 1 27 2030 0.0 0.0 -it 08_non-res 1 27 2030 0.0 0.0 -it 09_hydro_pump 1 27 2030 0.0 0.0 -it 01_solar 1 28 2030 1.0 0.0 -it 02_wind_on 1 28 2030 1.0 0.0 -it 03_wind_off 1 28 2030 0.0 0.0 -it 04_res 1 28 2030 0.0 0.0 -it 05_nuclear 1 28 2030 0.0 0.0 -it 06_coal 1 28 2030 0.0 0.0 -it 07_gas 1 28 2030 0.0 0.0 -it 08_non-res 1 28 2030 0.0 0.0 -it 09_hydro_pump 1 28 2030 0.0 0.0 -it 01_solar 1 29 2030 1.0 0.0 -it 02_wind_on 1 29 2030 1.0 0.0 -it 03_wind_off 1 29 2030 0.0 0.0 -it 04_res 1 29 2030 0.0 0.0 -it 05_nuclear 1 29 2030 0.0 0.0 -it 06_coal 1 29 2030 0.0 0.0 -it 07_gas 1 29 2030 0.0 0.0 -it 08_non-res 1 29 2030 0.0 0.0 -it 09_hydro_pump 1 29 2030 0.0 0.0 -it 01_solar 1 30 2030 1.0 0.0 -it 02_wind_on 1 30 2030 1.0 0.0 -it 03_wind_off 1 30 2030 0.0 0.0 -it 04_res 1 30 2030 0.0 0.0 -it 05_nuclear 1 30 2030 0.0 0.0 -it 06_coal 1 30 2030 0.0 0.0 -it 07_gas 1 30 2030 0.0 0.0 -it 08_non-res 1 30 2030 0.0 0.0 -it 09_hydro_pump 1 30 2030 0.0 0.0 -it 01_solar 1 31 2030 1.0 0.0 -it 02_wind_on 1 31 2030 1.0 0.0 -it 03_wind_off 1 31 2030 0.0 0.0 -it 04_res 1 31 2030 0.0 0.0 -it 05_nuclear 1 31 2030 0.0 0.0 -it 06_coal 1 31 2030 0.0 0.0 -it 07_gas 1 31 2030 0.0 0.0 -it 08_non-res 1 31 2030 0.0 0.0 -it 09_hydro_pump 1 31 2030 0.0 0.0 -it 01_solar 1 32 2030 1.0 0.0 -it 02_wind_on 1 32 2030 1.0 0.0 -it 03_wind_off 1 32 2030 0.0 0.0 -it 04_res 1 32 2030 0.0 0.0 -it 05_nuclear 1 32 2030 0.0 0.0 -it 06_coal 1 32 2030 0.0 0.0 -it 07_gas 1 32 2030 0.0 0.0 -it 08_non-res 1 32 2030 0.0 0.0 -it 09_hydro_pump 1 32 2030 0.0 0.0 -it 01_solar 1 33 2030 1.0 0.0 -it 02_wind_on 1 33 2030 1.0 0.0 -it 03_wind_off 1 33 2030 0.0 0.0 -it 04_res 1 33 2030 0.0 0.0 -it 05_nuclear 1 33 2030 0.0 0.0 -it 06_coal 1 33 2030 0.0 0.0 -it 07_gas 1 33 2030 0.0 0.0 -it 08_non-res 1 33 2030 0.0 0.0 -it 09_hydro_pump 1 33 2030 0.0 0.0 -it 01_solar 1 34 2030 1.0 0.0 -it 02_wind_on 1 34 2030 1.0 0.0 -it 03_wind_off 1 34 2030 0.0 0.0 -it 04_res 1 34 2030 0.0 0.0 -it 05_nuclear 1 34 2030 0.0 0.0 -it 06_coal 1 34 2030 0.0 0.0 -it 07_gas 1 34 2030 0.0 0.0 -it 08_non-res 1 34 2030 0.0 0.0 -it 09_hydro_pump 1 34 2030 0.0 0.0 -it 01_solar 1 35 2030 1.0 0.0 -it 02_wind_on 1 35 2030 1.0 0.0 -it 03_wind_off 1 35 2030 0.0 0.0 -it 04_res 1 35 2030 0.0 0.0 -it 05_nuclear 1 35 2030 0.0 0.0 -it 06_coal 1 35 2030 0.0 0.0 -it 07_gas 1 35 2030 0.0 0.0 -it 08_non-res 1 35 2030 0.0 0.0 -it 09_hydro_pump 1 35 2030 0.0 0.0 -it 01_solar 1 36 2030 1.0 0.0 -it 02_wind_on 1 36 2030 1.0 0.0 -it 03_wind_off 1 36 2030 0.0 0.0 -it 04_res 1 36 2030 0.0 0.0 -it 05_nuclear 1 36 2030 0.0 0.0 -it 06_coal 1 36 2030 0.0 0.0 -it 07_gas 1 36 2030 0.0 0.0 -it 08_non-res 1 36 2030 0.0 0.0 -it 09_hydro_pump 1 36 2030 0.0 0.0 -it 01_solar 1 37 2030 1.0 0.0 -it 02_wind_on 1 37 2030 1.0 0.0 -it 03_wind_off 1 37 2030 0.0 0.0 -it 04_res 1 37 2030 0.0 0.0 -it 05_nuclear 1 37 2030 0.0 0.0 -it 06_coal 1 37 2030 0.0 0.0 -it 07_gas 1 37 2030 0.0 0.0 -it 08_non-res 1 37 2030 0.0 0.0 -it 09_hydro_pump 1 37 2030 0.0 0.0 -it 01_solar 1 38 2030 1.0 0.0 -it 02_wind_on 1 38 2030 1.0 0.0 -it 03_wind_off 1 38 2030 0.0 0.0 -it 04_res 1 38 2030 0.0 0.0 -it 05_nuclear 1 38 2030 0.0 0.0 -it 06_coal 1 38 2030 0.0 0.0 -it 07_gas 1 38 2030 0.0 0.0 -it 08_non-res 1 38 2030 0.0 0.0 -it 09_hydro_pump 1 38 2030 0.0 0.0 -it 01_solar 1 39 2030 1.0 0.0 -it 02_wind_on 1 39 2030 1.0 0.0 -it 03_wind_off 1 39 2030 0.0 0.0 -it 04_res 1 39 2030 0.0 0.0 -it 05_nuclear 1 39 2030 0.0 0.0 -it 06_coal 1 39 2030 0.0 0.0 -it 07_gas 1 39 2030 0.0 0.0 -it 08_non-res 1 39 2030 0.0 0.0 -it 09_hydro_pump 1 39 2030 0.0 0.0 -it 01_solar 1 40 2030 1.0 0.0 -it 02_wind_on 1 40 2030 1.0 0.0 -it 03_wind_off 1 40 2030 0.0 0.0 -it 04_res 1 40 2030 0.0 0.0 -it 05_nuclear 1 40 2030 0.0 0.0 -it 06_coal 1 40 2030 0.0 0.0 -it 07_gas 1 40 2030 0.0 0.0 -it 08_non-res 1 40 2030 0.0 0.0 -it 09_hydro_pump 1 40 2030 0.0 0.0 -it 01_solar 1 41 2030 1.0 0.0 -it 02_wind_on 1 41 2030 1.0 0.0 -it 03_wind_off 1 41 2030 0.0 0.0 -it 04_res 1 41 2030 0.0 0.0 -it 05_nuclear 1 41 2030 0.0 0.0 -it 06_coal 1 41 2030 0.0 0.0 -it 07_gas 1 41 2030 0.0 0.0 -it 08_non-res 1 41 2030 0.0 0.0 -it 09_hydro_pump 1 41 2030 0.0 0.0 -it 01_solar 1 42 2030 1.0 0.0 -it 02_wind_on 1 42 2030 1.0 0.0 -it 03_wind_off 1 42 2030 1.0 0.0 -it 04_res 1 42 2030 0.0 0.0 -it 05_nuclear 1 42 2030 0.0 0.0 -it 06_coal 1 42 2030 0.0 0.0 -it 07_gas 1 42 2030 0.0 0.0 -it 08_non-res 1 42 2030 0.0 0.0 -it 09_hydro_pump 1 42 2030 0.0 0.0 -it 01_solar 1 43 2030 1.0 0.0 -it 02_wind_on 1 43 2030 1.0 0.0 -it 03_wind_off 1 43 2030 1.0 0.0 -it 04_res 1 43 2030 0.0 0.0 -it 05_nuclear 1 43 2030 0.0 0.0 -it 06_coal 1 43 2030 0.0 0.0 -it 07_gas 1 43 2030 0.0 0.0 -it 08_non-res 1 43 2030 0.0 0.0 -it 09_hydro_pump 1 43 2030 0.0 0.0 -it 01_solar 1 44 2030 1.0 0.0 -it 02_wind_on 1 44 2030 1.0 0.0 -it 03_wind_off 1 44 2030 1.0 0.0 -it 04_res 1 44 2030 0.0 0.0 -it 05_nuclear 1 44 2030 0.0 0.0 -it 06_coal 1 44 2030 0.0 0.0 -it 07_gas 1 44 2030 0.0 0.0 -it 08_non-res 1 44 2030 0.0 0.0 -it 09_hydro_pump 1 44 2030 0.0 0.0 -it 01_solar 1 45 2030 1.0 0.0 -it 02_wind_on 1 45 2030 1.0 0.0 -it 03_wind_off 1 45 2030 1.0 0.0 -it 04_res 1 45 2030 0.0 0.0 -it 05_nuclear 1 45 2030 0.0 0.0 -it 06_coal 1 45 2030 0.0 0.0 -it 07_gas 1 45 2030 0.0 0.0 -it 08_non-res 1 45 2030 0.0 0.0 -it 09_hydro_pump 1 45 2030 0.0 0.0 -it 01_solar 1 46 2030 1.0 0.0 -it 02_wind_on 1 46 2030 1.0 0.0 -it 03_wind_off 1 46 2030 1.0 0.0 -it 04_res 1 46 2030 0.0 0.0 -it 05_nuclear 1 46 2030 0.0 0.0 -it 06_coal 1 46 2030 0.0 0.0 -it 07_gas 1 46 2030 0.0 0.0 -it 08_non-res 1 46 2030 0.0 0.0 -it 09_hydro_pump 1 46 2030 0.0 0.0 -it 01_solar 1 47 2030 1.0 0.0 -it 02_wind_on 1 47 2030 1.0 0.0 -it 03_wind_off 1 47 2030 1.0 0.0 -it 04_res 1 47 2030 0.0 0.0 -it 05_nuclear 1 47 2030 0.0 0.0 -it 06_coal 1 47 2030 0.0 0.0 -it 07_gas 1 47 2030 0.0 0.0 -it 08_non-res 1 47 2030 0.0 0.0 -it 09_hydro_pump 1 47 2030 0.0 0.0 -it 01_solar 1 48 2030 1.0 0.0 -it 02_wind_on 1 48 2030 1.0 0.0 -it 03_wind_off 1 48 2030 1.0 0.0 -it 04_res 1 48 2030 0.0 0.0 -it 05_nuclear 1 48 2030 0.0 0.0 -it 06_coal 1 48 2030 0.0 0.0 -it 07_gas 1 48 2030 0.0 0.0 -it 08_non-res 1 48 2030 0.0 0.0 -it 09_hydro_pump 1 48 2030 0.0 0.0 -it 01_solar 1 49 2030 1.0 0.0 -it 02_wind_on 1 49 2030 1.0 0.0 -it 03_wind_off 1 49 2030 1.0 0.0 -it 04_res 1 49 2030 0.0 0.0 -it 05_nuclear 1 49 2030 0.0 0.0 -it 06_coal 1 49 2030 0.0 0.0 -it 07_gas 1 49 2030 0.0 0.0 -it 08_non-res 1 49 2030 0.0 0.0 -it 09_hydro_pump 1 49 2030 0.0 0.0 -it 01_solar 1 50 2030 1.0 0.0 -it 02_wind_on 1 50 2030 1.0 0.0 -it 03_wind_off 1 50 2030 1.0 0.0 -it 04_res 1 50 2030 0.0 0.0 -it 05_nuclear 1 50 2030 0.0 0.0 -it 06_coal 1 50 2030 0.0 0.0 -it 07_gas 1 50 2030 0.0 0.0 -it 08_non-res 1 50 2030 0.0 0.0 -it 09_hydro_pump 1 50 2030 0.0 0.0 -it 01_solar 1 51 2030 1.0 0.0 -it 02_wind_on 1 51 2030 1.0 0.0 -it 03_wind_off 1 51 2030 1.0 0.0 -it 04_res 1 51 2030 0.0 0.0 -it 05_nuclear 1 51 2030 0.0 0.0 -it 06_coal 1 51 2030 0.0 0.0 -it 07_gas 1 51 2030 0.0 0.0 -it 08_non-res 1 51 2030 0.0 0.0 -it 09_hydro_pump 1 51 2030 0.0 0.0 -it 01_solar 1 52 2030 1.0 0.0 -it 02_wind_on 1 52 2030 1.0 0.0 -it 03_wind_off 1 52 2030 1.0 0.0 -it 04_res 1 52 2030 0.0 0.0 -it 05_nuclear 1 52 2030 0.0 0.0 -it 06_coal 1 52 2030 0.0 0.0 -it 07_gas 1 52 2030 0.0 0.0 -it 08_non-res 1 52 2030 0.0 0.0 -it 09_hydro_pump 1 52 2030 0.0 0.0 -it 01_solar 1 53 2030 1.0 0.0 -it 02_wind_on 1 53 2030 1.0 0.0 -it 03_wind_off 1 53 2030 1.0 0.0 -it 04_res 1 53 2030 0.0 0.0 -it 05_nuclear 1 53 2030 0.0 0.0 -it 06_coal 1 53 2030 0.0 0.0 -it 07_gas 1 53 2030 0.0 0.0 -it 08_non-res 1 53 2030 0.0 0.0 -it 09_hydro_pump 1 53 2030 0.0 0.0 -it 01_solar 1 54 2030 1.0 0.0 -it 02_wind_on 1 54 2030 1.0 0.0 -it 03_wind_off 1 54 2030 1.0 0.0 -it 04_res 1 54 2030 0.0 0.0 -it 05_nuclear 1 54 2030 0.0 0.0 -it 06_coal 1 54 2030 0.0 0.0 -it 07_gas 1 54 2030 0.0 0.0 -it 08_non-res 1 54 2030 0.0 0.0 -it 09_hydro_pump 1 54 2030 0.0 0.0 -it 01_solar 1 55 2030 1.0 0.0 -it 02_wind_on 1 55 2030 1.0 0.0 -it 03_wind_off 1 55 2030 1.0 0.0 -it 04_res 1 55 2030 0.0 0.0 -it 05_nuclear 1 55 2030 0.0 0.0 -it 06_coal 1 55 2030 0.0 0.0 -it 07_gas 1 55 2030 0.0 0.0 -it 08_non-res 1 55 2030 0.0 0.0 -it 09_hydro_pump 1 55 2030 0.0 0.0 -it 01_solar 1 56 2030 1.0 0.0 -it 02_wind_on 1 56 2030 1.0 0.0 -it 03_wind_off 1 56 2030 1.0 0.0 -it 04_res 1 56 2030 0.0 0.0 -it 05_nuclear 1 56 2030 0.0 0.0 -it 06_coal 1 56 2030 0.0 0.0 -it 07_gas 1 56 2030 0.0 0.0 -it 08_non-res 1 56 2030 0.0 0.0 -it 09_hydro_pump 1 56 2030 0.0 0.0 -it 01_solar 1 57 2030 1.0 0.0 -it 02_wind_on 1 57 2030 1.0 0.0 -it 03_wind_off 1 57 2030 1.0 0.0 -it 04_res 1 57 2030 0.0 0.0 -it 05_nuclear 1 57 2030 0.0 0.0 -it 06_coal 1 57 2030 0.0 0.0 -it 07_gas 1 57 2030 0.0 0.0 -it 08_non-res 1 57 2030 0.0 0.0 -it 09_hydro_pump 1 57 2030 0.0 0.0 -it 01_solar 1 58 2030 1.0 0.0 -it 02_wind_on 1 58 2030 1.0 0.0 -it 03_wind_off 1 58 2030 1.0 0.0 -it 04_res 1 58 2030 0.0 0.0 -it 05_nuclear 1 58 2030 0.0 0.0 -it 06_coal 1 58 2030 0.0 0.0 -it 07_gas 1 58 2030 0.0 0.0 -it 08_non-res 1 58 2030 0.0 0.0 -it 09_hydro_pump 1 58 2030 0.0 0.0 -it 01_solar 1 59 2030 1.0 0.0 -it 02_wind_on 1 59 2030 1.0 0.0 -it 03_wind_off 1 59 2030 1.0 0.0 -it 04_res 1 59 2030 0.0 0.0 -it 05_nuclear 1 59 2030 0.0 0.0 -it 06_coal 1 59 2030 0.0 0.0 -it 07_gas 1 59 2030 0.0 0.0 -it 08_non-res 1 59 2030 0.0 0.0 -it 09_hydro_pump 1 59 2030 0.0 0.0 -it 01_solar 1 60 2030 1.0 0.0 -it 02_wind_on 1 60 2030 1.0 0.0 -it 03_wind_off 1 60 2030 1.0 0.0 -it 04_res 1 60 2030 0.0 0.0 -it 05_nuclear 1 60 2030 0.0 0.0 -it 06_coal 1 60 2030 0.0 0.0 -it 07_gas 1 60 2030 0.0 0.0 -it 08_non-res 1 60 2030 0.0 0.0 -it 09_hydro_pump 1 60 2030 0.0 0.0 -it 01_solar 1 61 2030 1.0 0.0 -it 02_wind_on 1 61 2030 1.0 0.0 -it 03_wind_off 1 61 2030 1.0 0.0 -it 04_res 1 61 2030 0.0 0.0 -it 05_nuclear 1 61 2030 0.0 0.0 -it 06_coal 1 61 2030 0.0 0.0 -it 07_gas 1 61 2030 0.0 0.0 -it 08_non-res 1 61 2030 0.0 0.0 -it 09_hydro_pump 1 61 2030 0.0 0.0 -it 01_solar 1 62 2030 1.0 0.0 -it 02_wind_on 1 62 2030 1.0 0.0 -it 03_wind_off 1 62 2030 1.0 0.0 -it 04_res 1 62 2030 1.0 0.0 -it 05_nuclear 1 62 2030 0.0 0.0 -it 06_coal 1 62 2030 0.0 0.0 -it 07_gas 1 62 2030 0.0 0.0 -it 08_non-res 1 62 2030 0.0 0.0 -it 09_hydro_pump 1 62 2030 0.0 0.0 -it 01_solar 1 63 2030 1.0 0.0 -it 02_wind_on 1 63 2030 1.0 0.0 -it 03_wind_off 1 63 2030 1.0 0.0 -it 04_res 1 63 2030 1.0 0.0 -it 05_nuclear 1 63 2030 0.0 0.0 -it 06_coal 1 63 2030 0.0 0.0 -it 07_gas 1 63 2030 0.0 0.0 -it 08_non-res 1 63 2030 0.0 0.0 -it 09_hydro_pump 1 63 2030 0.0 0.0 -it 01_solar 1 64 2030 1.0 0.0 -it 02_wind_on 1 64 2030 1.0 0.0 -it 03_wind_off 1 64 2030 1.0 0.0 -it 04_res 1 64 2030 1.0 0.0 -it 05_nuclear 1 64 2030 0.0 0.0 -it 06_coal 1 64 2030 0.0 0.0 -it 07_gas 1 64 2030 0.0 0.0 -it 08_non-res 1 64 2030 0.0 0.0 -it 09_hydro_pump 1 64 2030 0.0 0.0 -it 01_solar 1 65 2030 1.0 0.0 -it 02_wind_on 1 65 2030 1.0 0.0 -it 03_wind_off 1 65 2030 1.0 0.0 -it 04_res 1 65 2030 1.0 0.0 -it 05_nuclear 1 65 2030 0.0 0.0 -it 06_coal 1 65 2030 0.0 0.0 -it 07_gas 1 65 2030 0.0 0.0 -it 08_non-res 1 65 2030 0.0 0.0 -it 09_hydro_pump 1 65 2030 0.0 0.0 -it 01_solar 1 66 2030 1.0 0.0 -it 02_wind_on 1 66 2030 1.0 0.0 -it 03_wind_off 1 66 2030 1.0 0.0 -it 04_res 1 66 2030 1.0 0.0 -it 05_nuclear 1 66 2030 0.0 0.0 -it 06_coal 1 66 2030 0.0 0.0 -it 07_gas 1 66 2030 0.0 0.0 -it 08_non-res 1 66 2030 0.0 0.0 -it 09_hydro_pump 1 66 2030 0.0 0.0 -it 01_solar 1 67 2030 1.0 0.0 -it 02_wind_on 1 67 2030 1.0 0.0 -it 03_wind_off 1 67 2030 1.0 0.0 -it 04_res 1 67 2030 1.0 0.0 -it 05_nuclear 1 67 2030 0.0 0.0 -it 06_coal 1 67 2030 0.0 0.0 -it 07_gas 1 67 2030 0.0 0.0 -it 08_non-res 1 67 2030 0.0 0.0 -it 09_hydro_pump 1 67 2030 0.0 0.0 -it 01_solar 1 68 2030 1.0 0.0 -it 02_wind_on 1 68 2030 1.0 0.0 -it 03_wind_off 1 68 2030 1.0 0.0 -it 04_res 1 68 2030 1.0 0.0 -it 05_nuclear 1 68 2030 0.0 0.0 -it 06_coal 1 68 2030 0.0 0.0 -it 07_gas 1 68 2030 0.0 0.0 -it 08_non-res 1 68 2030 0.0 0.0 -it 09_hydro_pump 1 68 2030 0.0 0.0 -it 01_solar 1 69 2030 1.0 0.0 -it 02_wind_on 1 69 2030 1.0 0.0 -it 03_wind_off 1 69 2030 1.0 0.0 -it 04_res 1 69 2030 1.0 0.0 -it 05_nuclear 1 69 2030 0.0 0.0 -it 06_coal 1 69 2030 0.0 0.0 -it 07_gas 1 69 2030 0.0 0.0 -it 08_non-res 1 69 2030 0.0 0.0 -it 09_hydro_pump 1 69 2030 0.0 0.0 -it 01_solar 1 70 2030 1.0 0.0 -it 02_wind_on 1 70 2030 1.0 0.0 -it 03_wind_off 1 70 2030 1.0 0.0 -it 04_res 1 70 2030 1.0 0.0 -it 05_nuclear 1 70 2030 0.0 0.0 -it 06_coal 1 70 2030 0.0 0.0 -it 07_gas 1 70 2030 0.0 0.0 -it 08_non-res 1 70 2030 0.0 0.0 -it 09_hydro_pump 1 70 2030 0.0 0.0 -it 01_solar 1 71 2030 1.0 0.0 -it 02_wind_on 1 71 2030 1.0 0.0 -it 03_wind_off 1 71 2030 1.0 0.0 -it 04_res 1 71 2030 1.0 0.0 -it 05_nuclear 1 71 2030 0.0 0.0 -it 06_coal 1 71 2030 0.0 0.0 -it 07_gas 1 71 2030 0.0 0.0 -it 08_non-res 1 71 2030 0.0 0.0 -it 09_hydro_pump 1 71 2030 0.0 0.0 -it 01_solar 1 72 2030 1.0 0.0 -it 02_wind_on 1 72 2030 1.0 0.0 -it 03_wind_off 1 72 2030 1.0 0.0 -it 04_res 1 72 2030 1.0 0.0 -it 05_nuclear 1 72 2030 0.0 0.0 -it 06_coal 1 72 2030 0.0 0.0 -it 07_gas 1 72 2030 0.0 0.0 -it 08_non-res 1 72 2030 0.0 0.0 -it 09_hydro_pump 1 72 2030 0.0 0.0 -it 01_solar 1 73 2030 1.0 0.0 -it 02_wind_on 1 73 2030 1.0 0.0 -it 03_wind_off 1 73 2030 1.0 0.0 -it 04_res 1 73 2030 1.0 0.0 -it 05_nuclear 1 73 2030 0.0 0.0 -it 06_coal 1 73 2030 0.0 0.0 -it 07_gas 1 73 2030 0.0 0.0 -it 08_non-res 1 73 2030 0.0 0.0 -it 09_hydro_pump 1 73 2030 0.0 0.0 -it 01_solar 1 74 2030 1.0 0.0 -it 02_wind_on 1 74 2030 1.0 0.0 -it 03_wind_off 1 74 2030 1.0 0.0 -it 04_res 1 74 2030 1.0 0.0 -it 05_nuclear 1 74 2030 0.0 0.0 -it 06_coal 1 74 2030 0.0 0.0 -it 07_gas 1 74 2030 0.0 0.0 -it 08_non-res 1 74 2030 0.0 0.0 -it 09_hydro_pump 1 74 2030 0.0 0.0 -it 01_solar 1 75 2030 1.0 0.0 -it 02_wind_on 1 75 2030 1.0 0.0 -it 03_wind_off 1 75 2030 1.0 0.0 -it 04_res 1 75 2030 1.0 0.0 -it 05_nuclear 1 75 2030 0.0 0.0 -it 06_coal 1 75 2030 0.0 0.0 -it 07_gas 1 75 2030 0.0 0.0 -it 08_non-res 1 75 2030 0.0 0.0 -it 09_hydro_pump 1 75 2030 0.0 0.0 -it 01_solar 1 76 2030 1.0 0.0 -it 02_wind_on 1 76 2030 1.0 0.0 -it 03_wind_off 1 76 2030 1.0 0.0 -it 04_res 1 76 2030 1.0 0.0 -it 05_nuclear 1 76 2030 0.0 0.0 -it 06_coal 1 76 2030 0.0 0.0 -it 07_gas 1 76 2030 0.0 0.0 -it 08_non-res 1 76 2030 0.0 0.0 -it 09_hydro_pump 1 76 2030 0.0 0.0 -it 01_solar 1 77 2030 1.0 0.0 -it 02_wind_on 1 77 2030 1.0 0.0 -it 03_wind_off 1 77 2030 1.0 0.0 -it 04_res 1 77 2030 1.0 0.0 -it 05_nuclear 1 77 2030 0.0 0.0 -it 06_coal 1 77 2030 0.0 0.0 -it 07_gas 1 77 2030 0.0 0.0 -it 08_non-res 1 77 2030 0.0 0.0 -it 09_hydro_pump 1 77 2030 0.0 0.0 -it 01_solar 1 78 2030 1.0 0.0 -it 02_wind_on 1 78 2030 1.0 0.0 -it 03_wind_off 1 78 2030 1.0 0.0 -it 04_res 1 78 2030 1.0 0.0 -it 05_nuclear 1 78 2030 0.0 0.0 -it 06_coal 1 78 2030 0.0 0.0 -it 07_gas 1 78 2030 0.0 0.0 -it 08_non-res 1 78 2030 0.0 0.0 -it 09_hydro_pump 1 78 2030 0.0 0.0 -it 01_solar 1 79 2030 1.0 0.0 -it 02_wind_on 1 79 2030 1.0 0.0 -it 03_wind_off 1 79 2030 1.0 0.0 -it 04_res 1 79 2030 1.0 0.0 -it 05_nuclear 1 79 2030 0.0 0.0 -it 06_coal 1 79 2030 0.0 0.0 -it 07_gas 1 79 2030 0.0 0.0 -it 08_non-res 1 79 2030 0.0 0.0 -it 09_hydro_pump 1 79 2030 0.0 0.0 -it 01_solar 1 80 2030 1.0 0.0 -it 02_wind_on 1 80 2030 1.0 0.0 -it 03_wind_off 1 80 2030 1.0 0.0 -it 04_res 1 80 2030 1.0 0.0 -it 05_nuclear 1 80 2030 0.0 0.0 -it 06_coal 1 80 2030 0.0 0.0 -it 07_gas 1 80 2030 0.0 0.0 -it 08_non-res 1 80 2030 0.0 0.0 -it 09_hydro_pump 1 80 2030 0.0 0.0 -it 01_solar 1 81 2030 1.0 0.0 -it 02_wind_on 1 81 2030 1.0 0.0 -it 03_wind_off 1 81 2030 1.0 0.0 -it 04_res 1 81 2030 1.0 0.0 -it 05_nuclear 1 81 2030 0.0 0.0 -it 06_coal 1 81 2030 0.0 0.0 -it 07_gas 1 81 2030 0.0 0.0 -it 08_non-res 1 81 2030 0.0 0.0 -it 09_hydro_pump 1 81 2030 0.0 0.0 -it 01_solar 1 82 2030 1.0 0.0 -it 02_wind_on 1 82 2030 1.0 0.0 -it 03_wind_off 1 82 2030 1.0 0.0 -it 04_res 1 82 2030 1.0 0.0 -it 05_nuclear 1 82 2030 1.0 0.0 -it 06_coal 1 82 2030 0.0 0.0 -it 07_gas 1 82 2030 0.0 0.0 -it 08_non-res 1 82 2030 0.0 0.0 -it 09_hydro_pump 1 82 2030 0.0 0.0 -it 01_solar 1 83 2030 1.0 0.0 -it 02_wind_on 1 83 2030 1.0 0.0 -it 03_wind_off 1 83 2030 1.0 0.0 -it 04_res 1 83 2030 1.0 0.0 -it 05_nuclear 1 83 2030 1.0 0.0 -it 06_coal 1 83 2030 0.0 0.0 -it 07_gas 1 83 2030 0.0 0.0 -it 08_non-res 1 83 2030 0.0 0.0 -it 09_hydro_pump 1 83 2030 0.0 0.0 -it 01_solar 1 84 2030 1.0 0.0 -it 02_wind_on 1 84 2030 1.0 0.0 -it 03_wind_off 1 84 2030 1.0 0.0 -it 04_res 1 84 2030 1.0 0.0 -it 05_nuclear 1 84 2030 1.0 0.0 -it 06_coal 1 84 2030 0.0 0.0 -it 07_gas 1 84 2030 0.0 0.0 -it 08_non-res 1 84 2030 0.0 0.0 -it 09_hydro_pump 1 84 2030 0.0 0.0 -it 01_solar 1 85 2030 1.0 0.0 -it 02_wind_on 1 85 2030 1.0 0.0 -it 03_wind_off 1 85 2030 1.0 0.0 -it 04_res 1 85 2030 1.0 0.0 -it 05_nuclear 1 85 2030 1.0 0.0 -it 06_coal 1 85 2030 0.0 0.0 -it 07_gas 1 85 2030 0.0 0.0 -it 08_non-res 1 85 2030 0.0 0.0 -it 09_hydro_pump 1 85 2030 0.0 0.0 -it 01_solar 1 86 2030 1.0 0.0 -it 02_wind_on 1 86 2030 1.0 0.0 -it 03_wind_off 1 86 2030 1.0 0.0 -it 04_res 1 86 2030 1.0 0.0 -it 05_nuclear 1 86 2030 1.0 0.0 -it 06_coal 1 86 2030 0.0 0.0 -it 07_gas 1 86 2030 0.0 0.0 -it 08_non-res 1 86 2030 0.0 0.0 -it 09_hydro_pump 1 86 2030 0.0 0.0 -it 01_solar 1 87 2030 1.0 0.0 -it 02_wind_on 1 87 2030 1.0 0.0 -it 03_wind_off 1 87 2030 1.0 0.0 -it 04_res 1 87 2030 1.0 0.0 -it 05_nuclear 1 87 2030 1.0 0.0 -it 06_coal 1 87 2030 0.0 0.0 -it 07_gas 1 87 2030 0.0 0.0 -it 08_non-res 1 87 2030 0.0 0.0 -it 09_hydro_pump 1 87 2030 0.0 0.0 -it 01_solar 1 88 2030 1.0 0.0 -it 02_wind_on 1 88 2030 1.0 0.0 -it 03_wind_off 1 88 2030 1.0 0.0 -it 04_res 1 88 2030 1.0 0.0 -it 05_nuclear 1 88 2030 1.0 0.0 -it 06_coal 1 88 2030 0.0 0.0 -it 07_gas 1 88 2030 0.0 0.0 -it 08_non-res 1 88 2030 0.0 0.0 -it 09_hydro_pump 1 88 2030 0.0 0.0 -it 01_solar 1 89 2030 1.0 0.0 -it 02_wind_on 1 89 2030 1.0 0.0 -it 03_wind_off 1 89 2030 1.0 0.0 -it 04_res 1 89 2030 1.0 0.0 -it 05_nuclear 1 89 2030 1.0 0.0 -it 06_coal 1 89 2030 0.0 0.0 -it 07_gas 1 89 2030 0.0 0.0 -it 08_non-res 1 89 2030 0.0 0.0 -it 09_hydro_pump 1 89 2030 0.0 0.0 -it 01_solar 1 90 2030 1.0 0.0 -it 02_wind_on 1 90 2030 1.0 0.0 -it 03_wind_off 1 90 2030 1.0 0.0 -it 04_res 1 90 2030 1.0 0.0 -it 05_nuclear 1 90 2030 1.0 0.0 -it 06_coal 1 90 2030 0.0 0.0 -it 07_gas 1 90 2030 0.0 0.0 -it 08_non-res 1 90 2030 0.0 0.0 -it 09_hydro_pump 1 90 2030 0.0 0.0 -it 01_solar 1 91 2030 1.0 0.0 -it 02_wind_on 1 91 2030 1.0 0.0 -it 03_wind_off 1 91 2030 1.0 0.0 -it 04_res 1 91 2030 1.0 0.0 -it 05_nuclear 1 91 2030 1.0 0.0 -it 06_coal 1 91 2030 0.0 0.0 -it 07_gas 1 91 2030 0.0 0.0 -it 08_non-res 1 91 2030 0.0 0.0 -it 09_hydro_pump 1 91 2030 0.0 0.0 -it 01_solar 1 92 2030 1.0 0.0 -it 02_wind_on 1 92 2030 1.0 0.0 -it 03_wind_off 1 92 2030 1.0 0.0 -it 04_res 1 92 2030 1.0 0.0 -it 05_nuclear 1 92 2030 1.0 0.0 -it 06_coal 1 92 2030 0.0 0.0 -it 07_gas 1 92 2030 0.0 0.0 -it 08_non-res 1 92 2030 0.0 0.0 -it 09_hydro_pump 1 92 2030 0.0 0.0 -it 01_solar 1 93 2030 1.0 0.0 -it 02_wind_on 1 93 2030 1.0 0.0 -it 03_wind_off 1 93 2030 1.0 0.0 -it 04_res 1 93 2030 1.0 0.0 -it 05_nuclear 1 93 2030 1.0 0.0 -it 06_coal 1 93 2030 0.0 0.0 -it 07_gas 1 93 2030 0.0 0.0 -it 08_non-res 1 93 2030 0.0 0.0 -it 09_hydro_pump 1 93 2030 0.0 0.0 -it 01_solar 1 94 2030 1.0 0.0 -it 02_wind_on 1 94 2030 1.0 0.0 -it 03_wind_off 1 94 2030 1.0 0.0 -it 04_res 1 94 2030 1.0 0.0 -it 05_nuclear 1 94 2030 1.0 0.0 -it 06_coal 1 94 2030 0.0 0.0 -it 07_gas 1 94 2030 0.0 0.0 -it 08_non-res 1 94 2030 0.0 0.0 -it 09_hydro_pump 1 94 2030 0.0 0.0 -it 01_solar 1 95 2030 1.0 0.0 -it 02_wind_on 1 95 2030 1.0 0.0 -it 03_wind_off 1 95 2030 1.0 0.0 -it 04_res 1 95 2030 1.0 0.0 -it 05_nuclear 1 95 2030 1.0 0.0 -it 06_coal 1 95 2030 0.0 0.0 -it 07_gas 1 95 2030 0.0 0.0 -it 08_non-res 1 95 2030 0.0 0.0 -it 09_hydro_pump 1 95 2030 0.0 0.0 -it 01_solar 1 96 2030 1.0 0.0 -it 02_wind_on 1 96 2030 1.0 0.0 -it 03_wind_off 1 96 2030 1.0 0.0 -it 04_res 1 96 2030 1.0 0.0 -it 05_nuclear 1 96 2030 1.0 0.0 -it 06_coal 1 96 2030 0.0 0.0 -it 07_gas 1 96 2030 0.0 0.0 -it 08_non-res 1 96 2030 0.0 0.0 -it 09_hydro_pump 1 96 2030 0.0 0.0 -it 01_solar 1 97 2030 1.0 0.0 -it 02_wind_on 1 97 2030 1.0 0.0 -it 03_wind_off 1 97 2030 1.0 0.0 -it 04_res 1 97 2030 1.0 0.0 -it 05_nuclear 1 97 2030 1.0 0.0 -it 06_coal 1 97 2030 0.0 0.0 -it 07_gas 1 97 2030 0.0 0.0 -it 08_non-res 1 97 2030 0.0 0.0 -it 09_hydro_pump 1 97 2030 0.0 0.0 -it 01_solar 1 98 2030 1.0 0.0 -it 02_wind_on 1 98 2030 1.0 0.0 -it 03_wind_off 1 98 2030 1.0 0.0 -it 04_res 1 98 2030 1.0 0.0 -it 05_nuclear 1 98 2030 1.0 0.0 -it 06_coal 1 98 2030 0.0 0.0 -it 07_gas 1 98 2030 0.0 0.0 -it 08_non-res 1 98 2030 0.0 0.0 -it 09_hydro_pump 1 98 2030 0.0 0.0 -it 01_solar 1 99 2030 1.0 0.0 -it 02_wind_on 1 99 2030 1.0 0.0 -it 03_wind_off 1 99 2030 1.0 0.0 -it 04_res 1 99 2030 1.0 0.0 -it 05_nuclear 1 99 2030 1.0 0.0 -it 06_coal 1 99 2030 0.0 0.0 -it 07_gas 1 99 2030 0.0 0.0 -it 08_non-res 1 99 2030 0.0 0.0 -it 09_hydro_pump 1 99 2030 0.0 0.0 -it 01_solar 1 100 2030 1.0 0.0 -it 02_wind_on 1 100 2030 1.0 0.0 -it 03_wind_off 1 100 2030 1.0 0.0 -it 04_res 1 100 2030 1.0 0.0 -it 05_nuclear 1 100 2030 1.0 0.0 -it 06_coal 1 100 2030 0.0 0.0 -it 07_gas 1 100 2030 0.0 0.0 -it 08_non-res 1 100 2030 0.0 0.0 -it 09_hydro_pump 1 100 2030 0.0 0.0 -it 01_solar 1 101 2030 1.0 0.0 -it 02_wind_on 1 101 2030 1.0 0.0 -it 03_wind_off 1 101 2030 1.0 0.0 -it 04_res 1 101 2030 1.0 0.0 -it 05_nuclear 1 101 2030 1.0 0.0 -it 06_coal 1 101 2030 0.0 0.0 -it 07_gas 1 101 2030 0.0 0.0 -it 08_non-res 1 101 2030 0.0 0.0 -it 09_hydro_pump 1 101 2030 0.0 0.0 -it 01_solar 1 102 2030 1.0 0.0 -it 02_wind_on 1 102 2030 1.0 0.0 -it 03_wind_off 1 102 2030 1.0 0.0 -it 04_res 1 102 2030 1.0 0.0 -it 05_nuclear 1 102 2030 1.0 0.0 -it 06_coal 1 102 2030 1.0 0.0 -it 07_gas 1 102 2030 0.0 0.0 -it 08_non-res 1 102 2030 0.0 0.0 -it 09_hydro_pump 1 102 2030 0.0 0.0 -it 01_solar 1 103 2030 1.0 0.0 -it 02_wind_on 1 103 2030 1.0 0.0 -it 03_wind_off 1 103 2030 1.0 0.0 -it 04_res 1 103 2030 1.0 0.0 -it 05_nuclear 1 103 2030 1.0 0.0 -it 06_coal 1 103 2030 1.0 0.0 -it 07_gas 1 103 2030 0.0 0.0 -it 08_non-res 1 103 2030 0.0 0.0 -it 09_hydro_pump 1 103 2030 0.0 0.0 -it 01_solar 1 104 2030 1.0 0.0 -it 02_wind_on 1 104 2030 1.0 0.0 -it 03_wind_off 1 104 2030 1.0 0.0 -it 04_res 1 104 2030 1.0 0.0 -it 05_nuclear 1 104 2030 1.0 0.0 -it 06_coal 1 104 2030 1.0 0.0 -it 07_gas 1 104 2030 0.0 0.0 -it 08_non-res 1 104 2030 0.0 0.0 -it 09_hydro_pump 1 104 2030 0.0 0.0 -it 01_solar 1 105 2030 1.0 0.0 -it 02_wind_on 1 105 2030 1.0 0.0 -it 03_wind_off 1 105 2030 1.0 0.0 -it 04_res 1 105 2030 1.0 0.0 -it 05_nuclear 1 105 2030 1.0 0.0 -it 06_coal 1 105 2030 1.0 0.0 -it 07_gas 1 105 2030 0.0 0.0 -it 08_non-res 1 105 2030 0.0 0.0 -it 09_hydro_pump 1 105 2030 0.0 0.0 -it 01_solar 1 106 2030 1.0 0.0 -it 02_wind_on 1 106 2030 1.0 0.0 -it 03_wind_off 1 106 2030 1.0 0.0 -it 04_res 1 106 2030 1.0 0.0 -it 05_nuclear 1 106 2030 1.0 0.0 -it 06_coal 1 106 2030 1.0 0.0 -it 07_gas 1 106 2030 0.0 0.0 -it 08_non-res 1 106 2030 0.0 0.0 -it 09_hydro_pump 1 106 2030 0.0 0.0 -it 01_solar 1 107 2030 1.0 0.0 -it 02_wind_on 1 107 2030 1.0 0.0 -it 03_wind_off 1 107 2030 1.0 0.0 -it 04_res 1 107 2030 1.0 0.0 -it 05_nuclear 1 107 2030 1.0 0.0 -it 06_coal 1 107 2030 1.0 0.0 -it 07_gas 1 107 2030 0.0 0.0 -it 08_non-res 1 107 2030 0.0 0.0 -it 09_hydro_pump 1 107 2030 0.0 0.0 -it 01_solar 1 108 2030 1.0 0.0 -it 02_wind_on 1 108 2030 1.0 0.0 -it 03_wind_off 1 108 2030 1.0 0.0 -it 04_res 1 108 2030 1.0 0.0 -it 05_nuclear 1 108 2030 1.0 0.0 -it 06_coal 1 108 2030 1.0 0.0 -it 07_gas 1 108 2030 0.0 0.0 -it 08_non-res 1 108 2030 0.0 0.0 -it 09_hydro_pump 1 108 2030 0.0 0.0 -it 01_solar 1 109 2030 1.0 0.0 -it 02_wind_on 1 109 2030 1.0 0.0 -it 03_wind_off 1 109 2030 1.0 0.0 -it 04_res 1 109 2030 1.0 0.0 -it 05_nuclear 1 109 2030 1.0 0.0 -it 06_coal 1 109 2030 1.0 0.0 -it 07_gas 1 109 2030 0.0 0.0 -it 08_non-res 1 109 2030 0.0 0.0 -it 09_hydro_pump 1 109 2030 0.0 0.0 -it 01_solar 1 110 2030 1.0 0.0 -it 02_wind_on 1 110 2030 1.0 0.0 -it 03_wind_off 1 110 2030 1.0 0.0 -it 04_res 1 110 2030 1.0 0.0 -it 05_nuclear 1 110 2030 1.0 0.0 -it 06_coal 1 110 2030 1.0 0.0 -it 07_gas 1 110 2030 0.0 0.0 -it 08_non-res 1 110 2030 0.0 0.0 -it 09_hydro_pump 1 110 2030 0.0 0.0 -it 01_solar 1 111 2030 1.0 0.0 -it 02_wind_on 1 111 2030 1.0 0.0 -it 03_wind_off 1 111 2030 1.0 0.0 -it 04_res 1 111 2030 1.0 0.0 -it 05_nuclear 1 111 2030 1.0 0.0 -it 06_coal 1 111 2030 1.0 0.0 -it 07_gas 1 111 2030 0.0 0.0 -it 08_non-res 1 111 2030 0.0 0.0 -it 09_hydro_pump 1 111 2030 0.0 0.0 -it 01_solar 1 112 2030 1.0 0.0 -it 02_wind_on 1 112 2030 1.0 0.0 -it 03_wind_off 1 112 2030 1.0 0.0 -it 04_res 1 112 2030 1.0 0.0 -it 05_nuclear 1 112 2030 1.0 0.0 -it 06_coal 1 112 2030 1.0 0.0 -it 07_gas 1 112 2030 0.0 0.0 -it 08_non-res 1 112 2030 0.0 0.0 -it 09_hydro_pump 1 112 2030 0.0 0.0 -it 01_solar 1 113 2030 1.0 0.0 -it 02_wind_on 1 113 2030 1.0 0.0 -it 03_wind_off 1 113 2030 1.0 0.0 -it 04_res 1 113 2030 1.0 0.0 -it 05_nuclear 1 113 2030 1.0 0.0 -it 06_coal 1 113 2030 1.0 0.0 -it 07_gas 1 113 2030 0.0 0.0 -it 08_non-res 1 113 2030 0.0 0.0 -it 09_hydro_pump 1 113 2030 0.0 0.0 -it 01_solar 1 114 2030 1.0 0.0 -it 02_wind_on 1 114 2030 1.0 0.0 -it 03_wind_off 1 114 2030 1.0 0.0 -it 04_res 1 114 2030 1.0 0.0 -it 05_nuclear 1 114 2030 1.0 0.0 -it 06_coal 1 114 2030 1.0 0.0 -it 07_gas 1 114 2030 0.0 0.0 -it 08_non-res 1 114 2030 0.0 0.0 -it 09_hydro_pump 1 114 2030 0.0 0.0 -it 01_solar 1 115 2030 1.0 0.0 -it 02_wind_on 1 115 2030 1.0 0.0 -it 03_wind_off 1 115 2030 1.0 0.0 -it 04_res 1 115 2030 1.0 0.0 -it 05_nuclear 1 115 2030 1.0 0.0 -it 06_coal 1 115 2030 1.0 0.0 -it 07_gas 1 115 2030 0.0 0.0 -it 08_non-res 1 115 2030 0.0 0.0 -it 09_hydro_pump 1 115 2030 0.0 0.0 -it 01_solar 1 116 2030 1.0 0.0 -it 02_wind_on 1 116 2030 1.0 0.0 -it 03_wind_off 1 116 2030 1.0 0.0 -it 04_res 1 116 2030 1.0 0.0 -it 05_nuclear 1 116 2030 1.0 0.0 -it 06_coal 1 116 2030 1.0 0.0 -it 07_gas 1 116 2030 0.0 0.0 -it 08_non-res 1 116 2030 0.0 0.0 -it 09_hydro_pump 1 116 2030 0.0 0.0 -it 01_solar 1 117 2030 1.0 0.0 -it 02_wind_on 1 117 2030 1.0 0.0 -it 03_wind_off 1 117 2030 1.0 0.0 -it 04_res 1 117 2030 1.0 0.0 -it 05_nuclear 1 117 2030 1.0 0.0 -it 06_coal 1 117 2030 1.0 0.0 -it 07_gas 1 117 2030 0.0 0.0 -it 08_non-res 1 117 2030 0.0 0.0 -it 09_hydro_pump 1 117 2030 0.0 0.0 -it 01_solar 1 118 2030 1.0 0.0 -it 02_wind_on 1 118 2030 1.0 0.0 -it 03_wind_off 1 118 2030 1.0 0.0 -it 04_res 1 118 2030 1.0 0.0 -it 05_nuclear 1 118 2030 1.0 0.0 -it 06_coal 1 118 2030 1.0 0.0 -it 07_gas 1 118 2030 0.0 0.0 -it 08_non-res 1 118 2030 0.0 0.0 -it 09_hydro_pump 1 118 2030 0.0 0.0 -it 01_solar 1 119 2030 1.0 0.0 -it 02_wind_on 1 119 2030 1.0 0.0 -it 03_wind_off 1 119 2030 1.0 0.0 -it 04_res 1 119 2030 1.0 0.0 -it 05_nuclear 1 119 2030 1.0 0.0 -it 06_coal 1 119 2030 1.0 0.0 -it 07_gas 1 119 2030 0.0 0.0 -it 08_non-res 1 119 2030 0.0 0.0 -it 09_hydro_pump 1 119 2030 0.0 0.0 -it 01_solar 1 120 2030 1.0 0.0 -it 02_wind_on 1 120 2030 1.0 0.0 -it 03_wind_off 1 120 2030 1.0 0.0 -it 04_res 1 120 2030 1.0 0.0 -it 05_nuclear 1 120 2030 1.0 0.0 -it 06_coal 1 120 2030 1.0 0.0 -it 07_gas 1 120 2030 0.0 0.0 -it 08_non-res 1 120 2030 0.0 0.0 -it 09_hydro_pump 1 120 2030 0.0 0.0 -it 01_solar 1 121 2030 1.0 0.0 -it 02_wind_on 1 121 2030 1.0 0.0 -it 03_wind_off 1 121 2030 1.0 0.0 -it 04_res 1 121 2030 1.0 0.0 -it 05_nuclear 1 121 2030 1.0 0.0 -it 06_coal 1 121 2030 1.0 0.0 -it 07_gas 1 121 2030 0.0 0.0 -it 08_non-res 1 121 2030 0.0 0.0 -it 09_hydro_pump 1 121 2030 0.0 0.0 -it 01_solar 1 122 2030 1.0 0.0 -it 02_wind_on 1 122 2030 1.0 0.0 -it 03_wind_off 1 122 2030 1.0 0.0 -it 04_res 1 122 2030 1.0 0.0 -it 05_nuclear 1 122 2030 1.0 0.0 -it 06_coal 1 122 2030 1.0 0.0 -it 07_gas 1 122 2030 1.0 0.0 -it 08_non-res 1 122 2030 0.0 0.0 -it 09_hydro_pump 1 122 2030 0.0 0.0 -it 01_solar 1 123 2030 1.0 0.0 -it 02_wind_on 1 123 2030 1.0 0.0 -it 03_wind_off 1 123 2030 1.0 0.0 -it 04_res 1 123 2030 1.0 0.0 -it 05_nuclear 1 123 2030 1.0 0.0 -it 06_coal 1 123 2030 1.0 0.0 -it 07_gas 1 123 2030 1.0 0.0 -it 08_non-res 1 123 2030 0.0 0.0 -it 09_hydro_pump 1 123 2030 0.0 0.0 -it 01_solar 1 124 2030 1.0 0.0 -it 02_wind_on 1 124 2030 1.0 0.0 -it 03_wind_off 1 124 2030 1.0 0.0 -it 04_res 1 124 2030 1.0 0.0 -it 05_nuclear 1 124 2030 1.0 0.0 -it 06_coal 1 124 2030 1.0 0.0 -it 07_gas 1 124 2030 1.0 0.0 -it 08_non-res 1 124 2030 0.0 0.0 -it 09_hydro_pump 1 124 2030 0.0 0.0 -it 01_solar 1 125 2030 1.0 0.0 -it 02_wind_on 1 125 2030 1.0 0.0 -it 03_wind_off 1 125 2030 1.0 0.0 -it 04_res 1 125 2030 1.0 0.0 -it 05_nuclear 1 125 2030 1.0 0.0 -it 06_coal 1 125 2030 1.0 0.0 -it 07_gas 1 125 2030 1.0 0.0 -it 08_non-res 1 125 2030 0.0 0.0 -it 09_hydro_pump 1 125 2030 0.0 0.0 -it 01_solar 1 126 2030 1.0 0.0 -it 02_wind_on 1 126 2030 1.0 0.0 -it 03_wind_off 1 126 2030 1.0 0.0 -it 04_res 1 126 2030 1.0 0.0 -it 05_nuclear 1 126 2030 1.0 0.0 -it 06_coal 1 126 2030 1.0 0.0 -it 07_gas 1 126 2030 1.0 0.0 -it 08_non-res 1 126 2030 0.0 0.0 -it 09_hydro_pump 1 126 2030 0.0 0.0 -it 01_solar 1 127 2030 1.0 0.0 -it 02_wind_on 1 127 2030 1.0 0.0 -it 03_wind_off 1 127 2030 1.0 0.0 -it 04_res 1 127 2030 1.0 0.0 -it 05_nuclear 1 127 2030 1.0 0.0 -it 06_coal 1 127 2030 1.0 0.0 -it 07_gas 1 127 2030 1.0 0.0 -it 08_non-res 1 127 2030 0.0 0.0 -it 09_hydro_pump 1 127 2030 0.0 0.0 -it 01_solar 1 128 2030 1.0 0.0 -it 02_wind_on 1 128 2030 1.0 0.0 -it 03_wind_off 1 128 2030 1.0 0.0 -it 04_res 1 128 2030 1.0 0.0 -it 05_nuclear 1 128 2030 1.0 0.0 -it 06_coal 1 128 2030 1.0 0.0 -it 07_gas 1 128 2030 1.0 0.0 -it 08_non-res 1 128 2030 0.0 0.0 -it 09_hydro_pump 1 128 2030 0.0 0.0 -it 01_solar 1 129 2030 1.0 0.0 -it 02_wind_on 1 129 2030 1.0 0.0 -it 03_wind_off 1 129 2030 1.0 0.0 -it 04_res 1 129 2030 1.0 0.0 -it 05_nuclear 1 129 2030 1.0 0.0 -it 06_coal 1 129 2030 1.0 0.0 -it 07_gas 1 129 2030 1.0 0.0 -it 08_non-res 1 129 2030 0.0 0.0 -it 09_hydro_pump 1 129 2030 0.0 0.0 -it 01_solar 1 130 2030 1.0 0.0 -it 02_wind_on 1 130 2030 1.0 0.0 -it 03_wind_off 1 130 2030 1.0 0.0 -it 04_res 1 130 2030 1.0 0.0 -it 05_nuclear 1 130 2030 1.0 0.0 -it 06_coal 1 130 2030 1.0 0.0 -it 07_gas 1 130 2030 1.0 0.0 -it 08_non-res 1 130 2030 0.0 0.0 -it 09_hydro_pump 1 130 2030 0.0 0.0 -it 01_solar 1 131 2030 1.0 0.0 -it 02_wind_on 1 131 2030 1.0 0.0 -it 03_wind_off 1 131 2030 1.0 0.0 -it 04_res 1 131 2030 1.0 0.0 -it 05_nuclear 1 131 2030 1.0 0.0 -it 06_coal 1 131 2030 1.0 0.0 -it 07_gas 1 131 2030 1.0 0.0 -it 08_non-res 1 131 2030 0.0 0.0 -it 09_hydro_pump 1 131 2030 0.0 0.0 -it 01_solar 1 132 2030 1.0 0.0 -it 02_wind_on 1 132 2030 1.0 0.0 -it 03_wind_off 1 132 2030 1.0 0.0 -it 04_res 1 132 2030 1.0 0.0 -it 05_nuclear 1 132 2030 1.0 0.0 -it 06_coal 1 132 2030 1.0 0.0 -it 07_gas 1 132 2030 1.0 0.0 -it 08_non-res 1 132 2030 0.0 0.0 -it 09_hydro_pump 1 132 2030 0.0 0.0 -it 01_solar 1 133 2030 1.0 0.0 -it 02_wind_on 1 133 2030 1.0 0.0 -it 03_wind_off 1 133 2030 1.0 0.0 -it 04_res 1 133 2030 1.0 0.0 -it 05_nuclear 1 133 2030 1.0 0.0 -it 06_coal 1 133 2030 1.0 0.0 -it 07_gas 1 133 2030 1.0 0.0 -it 08_non-res 1 133 2030 0.0 0.0 -it 09_hydro_pump 1 133 2030 0.0 0.0 -it 01_solar 1 134 2030 1.0 0.0 -it 02_wind_on 1 134 2030 1.0 0.0 -it 03_wind_off 1 134 2030 1.0 0.0 -it 04_res 1 134 2030 1.0 0.0 -it 05_nuclear 1 134 2030 1.0 0.0 -it 06_coal 1 134 2030 1.0 0.0 -it 07_gas 1 134 2030 1.0 0.0 -it 08_non-res 1 134 2030 0.0 0.0 -it 09_hydro_pump 1 134 2030 0.0 0.0 -it 01_solar 1 135 2030 1.0 0.0 -it 02_wind_on 1 135 2030 1.0 0.0 -it 03_wind_off 1 135 2030 1.0 0.0 -it 04_res 1 135 2030 1.0 0.0 -it 05_nuclear 1 135 2030 1.0 0.0 -it 06_coal 1 135 2030 1.0 0.0 -it 07_gas 1 135 2030 1.0 0.0 -it 08_non-res 1 135 2030 0.0 0.0 -it 09_hydro_pump 1 135 2030 0.0 0.0 -it 01_solar 1 136 2030 1.0 0.0 -it 02_wind_on 1 136 2030 1.0 0.0 -it 03_wind_off 1 136 2030 1.0 0.0 -it 04_res 1 136 2030 1.0 0.0 -it 05_nuclear 1 136 2030 1.0 0.0 -it 06_coal 1 136 2030 1.0 0.0 -it 07_gas 1 136 2030 1.0 0.0 -it 08_non-res 1 136 2030 0.0 0.0 -it 09_hydro_pump 1 136 2030 0.0 0.0 -it 01_solar 1 137 2030 1.0 0.0 -it 02_wind_on 1 137 2030 1.0 0.0 -it 03_wind_off 1 137 2030 1.0 0.0 -it 04_res 1 137 2030 1.0 0.0 -it 05_nuclear 1 137 2030 1.0 0.0 -it 06_coal 1 137 2030 1.0 0.0 -it 07_gas 1 137 2030 1.0 0.0 -it 08_non-res 1 137 2030 0.0 0.0 -it 09_hydro_pump 1 137 2030 0.0 0.0 -it 01_solar 1 138 2030 1.0 0.0 -it 02_wind_on 1 138 2030 1.0 0.0 -it 03_wind_off 1 138 2030 1.0 0.0 -it 04_res 1 138 2030 1.0 0.0 -it 05_nuclear 1 138 2030 1.0 0.0 -it 06_coal 1 138 2030 1.0 0.0 -it 07_gas 1 138 2030 1.0 0.0 -it 08_non-res 1 138 2030 0.0 0.0 -it 09_hydro_pump 1 138 2030 0.0 0.0 -it 01_solar 1 139 2030 1.0 0.0 -it 02_wind_on 1 139 2030 1.0 0.0 -it 03_wind_off 1 139 2030 1.0 0.0 -it 04_res 1 139 2030 1.0 0.0 -it 05_nuclear 1 139 2030 1.0 0.0 -it 06_coal 1 139 2030 1.0 0.0 -it 07_gas 1 139 2030 1.0 0.0 -it 08_non-res 1 139 2030 0.0 0.0 -it 09_hydro_pump 1 139 2030 0.0 0.0 -it 01_solar 1 140 2030 1.0 0.0 -it 02_wind_on 1 140 2030 1.0 0.0 -it 03_wind_off 1 140 2030 1.0 0.0 -it 04_res 1 140 2030 1.0 0.0 -it 05_nuclear 1 140 2030 1.0 0.0 -it 06_coal 1 140 2030 1.0 0.0 -it 07_gas 1 140 2030 1.0 0.0 -it 08_non-res 1 140 2030 0.0 0.0 -it 09_hydro_pump 1 140 2030 0.0 0.0 -it 01_solar 1 141 2030 1.0 0.0 -it 02_wind_on 1 141 2030 1.0 0.0 -it 03_wind_off 1 141 2030 1.0 0.0 -it 04_res 1 141 2030 1.0 0.0 -it 05_nuclear 1 141 2030 1.0 0.0 -it 06_coal 1 141 2030 1.0 0.0 -it 07_gas 1 141 2030 1.0 0.0 -it 08_non-res 1 141 2030 0.0 0.0 -it 09_hydro_pump 1 141 2030 0.0 0.0 -it 01_solar 1 142 2030 1.0 0.0 -it 02_wind_on 1 142 2030 1.0 0.0 -it 03_wind_off 1 142 2030 1.0 0.0 -it 04_res 1 142 2030 1.0 0.0 -it 05_nuclear 1 142 2030 1.0 0.0 -it 06_coal 1 142 2030 1.0 0.0 -it 07_gas 1 142 2030 1.0 0.0 -it 08_non-res 1 142 2030 1.0 0.0 -it 09_hydro_pump 1 142 2030 0.0 0.0 -it 01_solar 1 143 2030 1.0 0.0 -it 02_wind_on 1 143 2030 1.0 0.0 -it 03_wind_off 1 143 2030 1.0 0.0 -it 04_res 1 143 2030 1.0 0.0 -it 05_nuclear 1 143 2030 1.0 0.0 -it 06_coal 1 143 2030 1.0 0.0 -it 07_gas 1 143 2030 1.0 0.0 -it 08_non-res 1 143 2030 1.0 0.0 -it 09_hydro_pump 1 143 2030 0.0 0.0 -it 01_solar 1 144 2030 1.0 0.0 -it 02_wind_on 1 144 2030 1.0 0.0 -it 03_wind_off 1 144 2030 1.0 0.0 -it 04_res 1 144 2030 1.0 0.0 -it 05_nuclear 1 144 2030 1.0 0.0 -it 06_coal 1 144 2030 1.0 0.0 -it 07_gas 1 144 2030 1.0 0.0 -it 08_non-res 1 144 2030 1.0 0.0 -it 09_hydro_pump 1 144 2030 0.0 0.0 -it 01_solar 1 145 2030 1.0 0.0 -it 02_wind_on 1 145 2030 1.0 0.0 -it 03_wind_off 1 145 2030 1.0 0.0 -it 04_res 1 145 2030 1.0 0.0 -it 05_nuclear 1 145 2030 1.0 0.0 -it 06_coal 1 145 2030 1.0 0.0 -it 07_gas 1 145 2030 1.0 0.0 -it 08_non-res 1 145 2030 1.0 0.0 -it 09_hydro_pump 1 145 2030 0.0 0.0 -it 01_solar 1 146 2030 1.0 0.0 -it 02_wind_on 1 146 2030 1.0 0.0 -it 03_wind_off 1 146 2030 1.0 0.0 -it 04_res 1 146 2030 1.0 0.0 -it 05_nuclear 1 146 2030 1.0 0.0 -it 06_coal 1 146 2030 1.0 0.0 -it 07_gas 1 146 2030 1.0 0.0 -it 08_non-res 1 146 2030 1.0 0.0 -it 09_hydro_pump 1 146 2030 0.0 0.0 -it 01_solar 1 147 2030 1.0 0.0 -it 02_wind_on 1 147 2030 1.0 0.0 -it 03_wind_off 1 147 2030 1.0 0.0 -it 04_res 1 147 2030 1.0 0.0 -it 05_nuclear 1 147 2030 1.0 0.0 -it 06_coal 1 147 2030 1.0 0.0 -it 07_gas 1 147 2030 1.0 0.0 -it 08_non-res 1 147 2030 1.0 0.0 -it 09_hydro_pump 1 147 2030 0.0 0.0 -it 01_solar 1 148 2030 1.0 0.0 -it 02_wind_on 1 148 2030 1.0 0.0 -it 03_wind_off 1 148 2030 1.0 0.0 -it 04_res 1 148 2030 1.0 0.0 -it 05_nuclear 1 148 2030 1.0 0.0 -it 06_coal 1 148 2030 1.0 0.0 -it 07_gas 1 148 2030 1.0 0.0 -it 08_non-res 1 148 2030 1.0 0.0 -it 09_hydro_pump 1 148 2030 0.0 0.0 -it 01_solar 1 149 2030 1.0 0.0 -it 02_wind_on 1 149 2030 1.0 0.0 -it 03_wind_off 1 149 2030 1.0 0.0 -it 04_res 1 149 2030 1.0 0.0 -it 05_nuclear 1 149 2030 1.0 0.0 -it 06_coal 1 149 2030 1.0 0.0 -it 07_gas 1 149 2030 1.0 0.0 -it 08_non-res 1 149 2030 1.0 0.0 -it 09_hydro_pump 1 149 2030 0.0 0.0 -it 01_solar 1 150 2030 1.0 0.0 -it 02_wind_on 1 150 2030 1.0 0.0 -it 03_wind_off 1 150 2030 1.0 0.0 -it 04_res 1 150 2030 1.0 0.0 -it 05_nuclear 1 150 2030 1.0 0.0 -it 06_coal 1 150 2030 1.0 0.0 -it 07_gas 1 150 2030 1.0 0.0 -it 08_non-res 1 150 2030 1.0 0.0 -it 09_hydro_pump 1 150 2030 0.0 0.0 -it 01_solar 1 151 2030 1.0 0.0 -it 02_wind_on 1 151 2030 1.0 0.0 -it 03_wind_off 1 151 2030 1.0 0.0 -it 04_res 1 151 2030 1.0 0.0 -it 05_nuclear 1 151 2030 1.0 0.0 -it 06_coal 1 151 2030 1.0 0.0 -it 07_gas 1 151 2030 1.0 0.0 -it 08_non-res 1 151 2030 1.0 0.0 -it 09_hydro_pump 1 151 2030 0.0 0.0 -it 01_solar 1 152 2030 1.0 0.0 -it 02_wind_on 1 152 2030 1.0 0.0 -it 03_wind_off 1 152 2030 1.0 0.0 -it 04_res 1 152 2030 1.0 0.0 -it 05_nuclear 1 152 2030 1.0 0.0 -it 06_coal 1 152 2030 1.0 0.0 -it 07_gas 1 152 2030 1.0 0.0 -it 08_non-res 1 152 2030 1.0 0.0 -it 09_hydro_pump 1 152 2030 0.0 0.0 -it 01_solar 1 153 2030 1.0 0.0 -it 02_wind_on 1 153 2030 1.0 0.0 -it 03_wind_off 1 153 2030 1.0 0.0 -it 04_res 1 153 2030 1.0 0.0 -it 05_nuclear 1 153 2030 1.0 0.0 -it 06_coal 1 153 2030 1.0 0.0 -it 07_gas 1 153 2030 1.0 0.0 -it 08_non-res 1 153 2030 1.0 0.0 -it 09_hydro_pump 1 153 2030 0.0 0.0 -it 01_solar 1 154 2030 1.0 0.0 -it 02_wind_on 1 154 2030 1.0 0.0 -it 03_wind_off 1 154 2030 1.0 0.0 -it 04_res 1 154 2030 1.0 0.0 -it 05_nuclear 1 154 2030 1.0 0.0 -it 06_coal 1 154 2030 1.0 0.0 -it 07_gas 1 154 2030 1.0 0.0 -it 08_non-res 1 154 2030 1.0 0.0 -it 09_hydro_pump 1 154 2030 0.0 0.0 -it 01_solar 1 155 2030 1.0 0.0 -it 02_wind_on 1 155 2030 1.0 0.0 -it 03_wind_off 1 155 2030 1.0 0.0 -it 04_res 1 155 2030 1.0 0.0 -it 05_nuclear 1 155 2030 1.0 0.0 -it 06_coal 1 155 2030 1.0 0.0 -it 07_gas 1 155 2030 1.0 0.0 -it 08_non-res 1 155 2030 1.0 0.0 -it 09_hydro_pump 1 155 2030 0.0 0.0 -it 01_solar 1 156 2030 1.0 0.0 -it 02_wind_on 1 156 2030 1.0 0.0 -it 03_wind_off 1 156 2030 1.0 0.0 -it 04_res 1 156 2030 1.0 0.0 -it 05_nuclear 1 156 2030 1.0 0.0 -it 06_coal 1 156 2030 1.0 0.0 -it 07_gas 1 156 2030 1.0 0.0 -it 08_non-res 1 156 2030 1.0 0.0 -it 09_hydro_pump 1 156 2030 0.0 0.0 -it 01_solar 1 157 2030 1.0 0.0 -it 02_wind_on 1 157 2030 1.0 0.0 -it 03_wind_off 1 157 2030 1.0 0.0 -it 04_res 1 157 2030 1.0 0.0 -it 05_nuclear 1 157 2030 1.0 0.0 -it 06_coal 1 157 2030 1.0 0.0 -it 07_gas 1 157 2030 1.0 0.0 -it 08_non-res 1 157 2030 1.0 0.0 -it 09_hydro_pump 1 157 2030 0.0 0.0 -it 01_solar 1 158 2030 1.0 0.0 -it 02_wind_on 1 158 2030 1.0 0.0 -it 03_wind_off 1 158 2030 1.0 0.0 -it 04_res 1 158 2030 1.0 0.0 -it 05_nuclear 1 158 2030 1.0 0.0 -it 06_coal 1 158 2030 1.0 0.0 -it 07_gas 1 158 2030 1.0 0.0 -it 08_non-res 1 158 2030 1.0 0.0 -it 09_hydro_pump 1 158 2030 0.0 0.0 -it 01_solar 1 159 2030 1.0 0.0 -it 02_wind_on 1 159 2030 1.0 0.0 -it 03_wind_off 1 159 2030 1.0 0.0 -it 04_res 1 159 2030 1.0 0.0 -it 05_nuclear 1 159 2030 1.0 0.0 -it 06_coal 1 159 2030 1.0 0.0 -it 07_gas 1 159 2030 1.0 0.0 -it 08_non-res 1 159 2030 1.0 0.0 -it 09_hydro_pump 1 159 2030 0.0 0.0 -it 01_solar 1 160 2030 1.0 0.0 -it 02_wind_on 1 160 2030 1.0 0.0 -it 03_wind_off 1 160 2030 1.0 0.0 -it 04_res 1 160 2030 1.0 0.0 -it 05_nuclear 1 160 2030 1.0 0.0 -it 06_coal 1 160 2030 1.0 0.0 -it 07_gas 1 160 2030 1.0 0.0 -it 08_non-res 1 160 2030 1.0 0.0 -it 09_hydro_pump 1 160 2030 0.0 0.0 -it 01_solar 1 161 2030 1.0 0.0 -it 02_wind_on 1 161 2030 1.0 0.0 -it 03_wind_off 1 161 2030 1.0 0.0 -it 04_res 1 161 2030 1.0 0.0 -it 05_nuclear 1 161 2030 1.0 0.0 -it 06_coal 1 161 2030 1.0 0.0 -it 07_gas 1 161 2030 1.0 0.0 -it 08_non-res 1 161 2030 1.0 0.0 -it 09_hydro_pump 1 161 2030 0.0 0.0 -it 01_solar 1 162 2030 1.0 0.0 -it 02_wind_on 1 162 2030 1.0 0.0 -it 03_wind_off 1 162 2030 1.0 0.0 -it 04_res 1 162 2030 1.0 0.0 -it 05_nuclear 1 162 2030 1.0 0.0 -it 06_coal 1 162 2030 1.0 0.0 -it 07_gas 1 162 2030 1.0 0.0 -it 08_non-res 1 162 2030 1.0 0.0 -it 09_hydro_pump 1 162 2030 1.0 0.0 -it 01_solar 1 163 2030 1.0 0.0 -it 02_wind_on 1 163 2030 1.0 0.0 -it 03_wind_off 1 163 2030 1.0 0.0 -it 04_res 1 163 2030 1.0 0.0 -it 05_nuclear 1 163 2030 1.0 0.0 -it 06_coal 1 163 2030 1.0 0.0 -it 07_gas 1 163 2030 1.0 0.0 -it 08_non-res 1 163 2030 1.0 0.0 -it 09_hydro_pump 1 163 2030 1.0 0.0 -it 01_solar 1 164 2030 1.0 0.0 -it 02_wind_on 1 164 2030 1.0 0.0 -it 03_wind_off 1 164 2030 1.0 0.0 -it 04_res 1 164 2030 1.0 0.0 -it 05_nuclear 1 164 2030 1.0 0.0 -it 06_coal 1 164 2030 1.0 0.0 -it 07_gas 1 164 2030 1.0 0.0 -it 08_non-res 1 164 2030 1.0 0.0 -it 09_hydro_pump 1 164 2030 1.0 0.0 -it 01_solar 1 165 2030 1.0 0.0 -it 02_wind_on 1 165 2030 1.0 0.0 -it 03_wind_off 1 165 2030 1.0 0.0 -it 04_res 1 165 2030 1.0 0.0 -it 05_nuclear 1 165 2030 1.0 0.0 -it 06_coal 1 165 2030 1.0 0.0 -it 07_gas 1 165 2030 1.0 0.0 -it 08_non-res 1 165 2030 1.0 0.0 -it 09_hydro_pump 1 165 2030 1.0 0.0 -it 01_solar 1 166 2030 1.0 0.0 -it 02_wind_on 1 166 2030 1.0 0.0 -it 03_wind_off 1 166 2030 1.0 0.0 -it 04_res 1 166 2030 1.0 0.0 -it 05_nuclear 1 166 2030 1.0 0.0 -it 06_coal 1 166 2030 1.0 0.0 -it 07_gas 1 166 2030 1.0 0.0 -it 08_non-res 1 166 2030 1.0 0.0 -it 09_hydro_pump 1 166 2030 1.0 0.0 -it 01_solar 1 167 2030 1.0 0.0 -it 02_wind_on 1 167 2030 1.0 0.0 -it 03_wind_off 1 167 2030 1.0 0.0 -it 04_res 1 167 2030 1.0 0.0 -it 05_nuclear 1 167 2030 1.0 0.0 -it 06_coal 1 167 2030 1.0 0.0 -it 07_gas 1 167 2030 1.0 0.0 -it 08_non-res 1 167 2030 1.0 0.0 -it 09_hydro_pump 1 167 2030 1.0 0.0 -it 01_solar 1 168 2030 1.0 0.0 -it 02_wind_on 1 168 2030 1.0 0.0 -it 03_wind_off 1 168 2030 1.0 0.0 -it 04_res 1 168 2030 1.0 0.0 -it 05_nuclear 1 168 2030 1.0 0.0 -it 06_coal 1 168 2030 1.0 0.0 -it 07_gas 1 168 2030 1.0 0.0 -it 08_non-res 1 168 2030 1.0 0.0 -it 09_hydro_pump 1 168 2030 1.0 0.0 -it 01_solar 1 169 2030 0.0 0.0 -it 02_wind_on 1 169 2030 0.0 0.0 -it 03_wind_off 1 169 2030 0.0 0.0 -it 04_res 1 169 2030 0.0 0.0 -it 05_nuclear 1 169 2030 0.0 0.0 -it 06_coal 1 169 2030 0.0 0.0 -it 07_gas 1 169 2030 0.0 0.0 -it 08_non-res 1 169 2030 0.0 0.0 -it 09_hydro_pump 1 169 2030 0.0 0.0 -it 01_solar 1 170 2030 1.0 0.0 -it 02_wind_on 1 170 2030 0.0 0.0 -it 03_wind_off 1 170 2030 0.0 0.0 -it 04_res 1 170 2030 0.0 0.0 -it 05_nuclear 1 170 2030 0.0 0.0 -it 06_coal 1 170 2030 0.0 0.0 -it 07_gas 1 170 2030 0.0 0.0 -it 08_non-res 1 170 2030 0.0 0.0 -it 09_hydro_pump 1 170 2030 0.0 0.0 -it 01_solar 1 171 2030 1.0 0.0 -it 02_wind_on 1 171 2030 0.0 0.0 -it 03_wind_off 1 171 2030 0.0 0.0 -it 04_res 1 171 2030 0.0 0.0 -it 05_nuclear 1 171 2030 0.0 0.0 -it 06_coal 1 171 2030 0.0 0.0 -it 07_gas 1 171 2030 0.0 0.0 -it 08_non-res 1 171 2030 0.0 0.0 -it 09_hydro_pump 1 171 2030 0.0 0.0 -it 01_solar 1 172 2030 1.0 0.0 -it 02_wind_on 1 172 2030 0.0 0.0 -it 03_wind_off 1 172 2030 0.0 0.0 -it 04_res 1 172 2030 0.0 0.0 -it 05_nuclear 1 172 2030 0.0 0.0 -it 06_coal 1 172 2030 0.0 0.0 -it 07_gas 1 172 2030 0.0 0.0 -it 08_non-res 1 172 2030 0.0 0.0 -it 09_hydro_pump 1 172 2030 0.0 0.0 -it 01_solar 1 173 2030 1.0 0.0 -it 02_wind_on 1 173 2030 0.0 0.0 -it 03_wind_off 1 173 2030 0.0 0.0 -it 04_res 1 173 2030 0.0 0.0 -it 05_nuclear 1 173 2030 0.0 0.0 -it 06_coal 1 173 2030 0.0 0.0 -it 07_gas 1 173 2030 0.0 0.0 -it 08_non-res 1 173 2030 0.0 0.0 -it 09_hydro_pump 1 173 2030 0.0 0.0 -it 01_solar 1 174 2030 1.0 0.0 -it 02_wind_on 1 174 2030 0.0 0.0 -it 03_wind_off 1 174 2030 0.0 0.0 -it 04_res 1 174 2030 0.0 0.0 -it 05_nuclear 1 174 2030 0.0 0.0 -it 06_coal 1 174 2030 0.0 0.0 -it 07_gas 1 174 2030 0.0 0.0 -it 08_non-res 1 174 2030 0.0 0.0 -it 09_hydro_pump 1 174 2030 0.0 0.0 -it 01_solar 1 175 2030 1.0 0.0 -it 02_wind_on 1 175 2030 0.0 0.0 -it 03_wind_off 1 175 2030 0.0 0.0 -it 04_res 1 175 2030 0.0 0.0 -it 05_nuclear 1 175 2030 0.0 0.0 -it 06_coal 1 175 2030 0.0 0.0 -it 07_gas 1 175 2030 0.0 0.0 -it 08_non-res 1 175 2030 0.0 0.0 -it 09_hydro_pump 1 175 2030 0.0 0.0 -it 01_solar 1 176 2030 1.0 0.0 -it 02_wind_on 1 176 2030 0.0 0.0 -it 03_wind_off 1 176 2030 0.0 0.0 -it 04_res 1 176 2030 0.0 0.0 -it 05_nuclear 1 176 2030 0.0 0.0 -it 06_coal 1 176 2030 0.0 0.0 -it 07_gas 1 176 2030 0.0 0.0 -it 08_non-res 1 176 2030 0.0 0.0 -it 09_hydro_pump 1 176 2030 0.0 0.0 -it 01_solar 1 177 2030 1.0 0.0 -it 02_wind_on 1 177 2030 0.0 0.0 -it 03_wind_off 1 177 2030 0.0 0.0 -it 04_res 1 177 2030 0.0 0.0 -it 05_nuclear 1 177 2030 0.0 0.0 -it 06_coal 1 177 2030 0.0 0.0 -it 07_gas 1 177 2030 0.0 0.0 -it 08_non-res 1 177 2030 0.0 0.0 -it 09_hydro_pump 1 177 2030 0.0 0.0 -it 01_solar 1 178 2030 1.0 0.0 -it 02_wind_on 1 178 2030 0.0 0.0 -it 03_wind_off 1 178 2030 0.0 0.0 -it 04_res 1 178 2030 0.0 0.0 -it 05_nuclear 1 178 2030 0.0 0.0 -it 06_coal 1 178 2030 0.0 0.0 -it 07_gas 1 178 2030 0.0 0.0 -it 08_non-res 1 178 2030 0.0 0.0 -it 09_hydro_pump 1 178 2030 0.0 0.0 -it 01_solar 1 179 2030 1.0 0.0 -it 02_wind_on 1 179 2030 0.0 0.0 -it 03_wind_off 1 179 2030 0.0 0.0 -it 04_res 1 179 2030 0.0 0.0 -it 05_nuclear 1 179 2030 0.0 0.0 -it 06_coal 1 179 2030 0.0 0.0 -it 07_gas 1 179 2030 0.0 0.0 -it 08_non-res 1 179 2030 0.0 0.0 -it 09_hydro_pump 1 179 2030 0.0 0.0 -it 01_solar 1 180 2030 1.0 0.0 -it 02_wind_on 1 180 2030 0.0 0.0 -it 03_wind_off 1 180 2030 0.0 0.0 -it 04_res 1 180 2030 0.0 0.0 -it 05_nuclear 1 180 2030 0.0 0.0 -it 06_coal 1 180 2030 0.0 0.0 -it 07_gas 1 180 2030 0.0 0.0 -it 08_non-res 1 180 2030 0.0 0.0 -it 09_hydro_pump 1 180 2030 0.0 0.0 -it 01_solar 1 181 2030 1.0 0.0 -it 02_wind_on 1 181 2030 0.0 0.0 -it 03_wind_off 1 181 2030 0.0 0.0 -it 04_res 1 181 2030 0.0 0.0 -it 05_nuclear 1 181 2030 0.0 0.0 -it 06_coal 1 181 2030 0.0 0.0 -it 07_gas 1 181 2030 0.0 0.0 -it 08_non-res 1 181 2030 0.0 0.0 -it 09_hydro_pump 1 181 2030 0.0 0.0 -it 01_solar 1 182 2030 1.0 0.0 -it 02_wind_on 1 182 2030 0.0 0.0 -it 03_wind_off 1 182 2030 0.0 0.0 -it 04_res 1 182 2030 0.0 0.0 -it 05_nuclear 1 182 2030 0.0 0.0 -it 06_coal 1 182 2030 0.0 0.0 -it 07_gas 1 182 2030 0.0 0.0 -it 08_non-res 1 182 2030 0.0 0.0 -it 09_hydro_pump 1 182 2030 0.0 0.0 -it 01_solar 1 183 2030 1.0 0.0 -it 02_wind_on 1 183 2030 0.0 0.0 -it 03_wind_off 1 183 2030 0.0 0.0 -it 04_res 1 183 2030 0.0 0.0 -it 05_nuclear 1 183 2030 0.0 0.0 -it 06_coal 1 183 2030 0.0 0.0 -it 07_gas 1 183 2030 0.0 0.0 -it 08_non-res 1 183 2030 0.0 0.0 -it 09_hydro_pump 1 183 2030 0.0 0.0 -it 01_solar 1 184 2030 1.0 0.0 -it 02_wind_on 1 184 2030 0.0 0.0 -it 03_wind_off 1 184 2030 0.0 0.0 -it 04_res 1 184 2030 0.0 0.0 -it 05_nuclear 1 184 2030 0.0 0.0 -it 06_coal 1 184 2030 0.0 0.0 -it 07_gas 1 184 2030 0.0 0.0 -it 08_non-res 1 184 2030 0.0 0.0 -it 09_hydro_pump 1 184 2030 0.0 0.0 -it 01_solar 1 185 2030 1.0 0.0 -it 02_wind_on 1 185 2030 0.0 0.0 -it 03_wind_off 1 185 2030 0.0 0.0 -it 04_res 1 185 2030 0.0 0.0 -it 05_nuclear 1 185 2030 0.0 0.0 -it 06_coal 1 185 2030 0.0 0.0 -it 07_gas 1 185 2030 0.0 0.0 -it 08_non-res 1 185 2030 0.0 0.0 -it 09_hydro_pump 1 185 2030 0.0 0.0 -it 01_solar 1 186 2030 1.0 0.0 -it 02_wind_on 1 186 2030 0.0 0.0 -it 03_wind_off 1 186 2030 0.0 0.0 -it 04_res 1 186 2030 0.0 0.0 -it 05_nuclear 1 186 2030 0.0 0.0 -it 06_coal 1 186 2030 0.0 0.0 -it 07_gas 1 186 2030 0.0 0.0 -it 08_non-res 1 186 2030 0.0 0.0 -it 09_hydro_pump 1 186 2030 0.0 0.0 -it 01_solar 1 187 2030 1.0 0.0 -it 02_wind_on 1 187 2030 0.0 0.0 -it 03_wind_off 1 187 2030 0.0 0.0 -it 04_res 1 187 2030 0.0 0.0 -it 05_nuclear 1 187 2030 0.0 0.0 -it 06_coal 1 187 2030 0.0 0.0 -it 07_gas 1 187 2030 0.0 0.0 -it 08_non-res 1 187 2030 0.0 0.0 -it 09_hydro_pump 1 187 2030 0.0 0.0 -it 01_solar 1 188 2030 1.0 0.0 -it 02_wind_on 1 188 2030 0.0 0.0 -it 03_wind_off 1 188 2030 0.0 0.0 -it 04_res 1 188 2030 0.0 0.0 -it 05_nuclear 1 188 2030 0.0 0.0 -it 06_coal 1 188 2030 0.0 0.0 -it 07_gas 1 188 2030 0.0 0.0 -it 08_non-res 1 188 2030 0.0 0.0 -it 09_hydro_pump 1 188 2030 0.0 0.0 -it 01_solar 1 189 2030 1.0 0.0 -it 02_wind_on 1 189 2030 0.0 0.0 -it 03_wind_off 1 189 2030 0.0 0.0 -it 04_res 1 189 2030 0.0 0.0 -it 05_nuclear 1 189 2030 0.0 0.0 -it 06_coal 1 189 2030 0.0 0.0 -it 07_gas 1 189 2030 0.0 0.0 -it 08_non-res 1 189 2030 0.0 0.0 -it 09_hydro_pump 1 189 2030 0.0 0.0 -it 01_solar 1 190 2030 1.0 0.0 -it 02_wind_on 1 190 2030 1.0 0.0 -it 03_wind_off 1 190 2030 0.0 0.0 -it 04_res 1 190 2030 0.0 0.0 -it 05_nuclear 1 190 2030 0.0 0.0 -it 06_coal 1 190 2030 0.0 0.0 -it 07_gas 1 190 2030 0.0 0.0 -it 08_non-res 1 190 2030 0.0 0.0 -it 09_hydro_pump 1 190 2030 0.0 0.0 -it 01_solar 1 191 2030 1.0 0.0 -it 02_wind_on 1 191 2030 1.0 0.0 -it 03_wind_off 1 191 2030 0.0 0.0 -it 04_res 1 191 2030 0.0 0.0 -it 05_nuclear 1 191 2030 0.0 0.0 -it 06_coal 1 191 2030 0.0 0.0 -it 07_gas 1 191 2030 0.0 0.0 -it 08_non-res 1 191 2030 0.0 0.0 -it 09_hydro_pump 1 191 2030 0.0 0.0 -it 01_solar 1 192 2030 1.0 0.0 -it 02_wind_on 1 192 2030 1.0 0.0 -it 03_wind_off 1 192 2030 0.0 0.0 -it 04_res 1 192 2030 0.0 0.0 -it 05_nuclear 1 192 2030 0.0 0.0 -it 06_coal 1 192 2030 0.0 0.0 -it 07_gas 1 192 2030 0.0 0.0 -it 08_non-res 1 192 2030 0.0 0.0 -it 09_hydro_pump 1 192 2030 0.0 0.0 -it 01_solar 1 193 2030 1.0 0.0 -it 02_wind_on 1 193 2030 1.0 0.0 -it 03_wind_off 1 193 2030 0.0 0.0 -it 04_res 1 193 2030 0.0 0.0 -it 05_nuclear 1 193 2030 0.0 0.0 -it 06_coal 1 193 2030 0.0 0.0 -it 07_gas 1 193 2030 0.0 0.0 -it 08_non-res 1 193 2030 0.0 0.0 -it 09_hydro_pump 1 193 2030 0.0 0.0 -it 01_solar 1 194 2030 1.0 0.0 -it 02_wind_on 1 194 2030 1.0 0.0 -it 03_wind_off 1 194 2030 0.0 0.0 -it 04_res 1 194 2030 0.0 0.0 -it 05_nuclear 1 194 2030 0.0 0.0 -it 06_coal 1 194 2030 0.0 0.0 -it 07_gas 1 194 2030 0.0 0.0 -it 08_non-res 1 194 2030 0.0 0.0 -it 09_hydro_pump 1 194 2030 0.0 0.0 -it 01_solar 1 195 2030 1.0 0.0 -it 02_wind_on 1 195 2030 1.0 0.0 -it 03_wind_off 1 195 2030 0.0 0.0 -it 04_res 1 195 2030 0.0 0.0 -it 05_nuclear 1 195 2030 0.0 0.0 -it 06_coal 1 195 2030 0.0 0.0 -it 07_gas 1 195 2030 0.0 0.0 -it 08_non-res 1 195 2030 0.0 0.0 -it 09_hydro_pump 1 195 2030 0.0 0.0 -it 01_solar 1 196 2030 1.0 0.0 -it 02_wind_on 1 196 2030 1.0 0.0 -it 03_wind_off 1 196 2030 0.0 0.0 -it 04_res 1 196 2030 0.0 0.0 -it 05_nuclear 1 196 2030 0.0 0.0 -it 06_coal 1 196 2030 0.0 0.0 -it 07_gas 1 196 2030 0.0 0.0 -it 08_non-res 1 196 2030 0.0 0.0 -it 09_hydro_pump 1 196 2030 0.0 0.0 -it 01_solar 1 197 2030 1.0 0.0 -it 02_wind_on 1 197 2030 1.0 0.0 -it 03_wind_off 1 197 2030 0.0 0.0 -it 04_res 1 197 2030 0.0 0.0 -it 05_nuclear 1 197 2030 0.0 0.0 -it 06_coal 1 197 2030 0.0 0.0 -it 07_gas 1 197 2030 0.0 0.0 -it 08_non-res 1 197 2030 0.0 0.0 -it 09_hydro_pump 1 197 2030 0.0 0.0 -it 01_solar 1 198 2030 1.0 0.0 -it 02_wind_on 1 198 2030 1.0 0.0 -it 03_wind_off 1 198 2030 0.0 0.0 -it 04_res 1 198 2030 0.0 0.0 -it 05_nuclear 1 198 2030 0.0 0.0 -it 06_coal 1 198 2030 0.0 0.0 -it 07_gas 1 198 2030 0.0 0.0 -it 08_non-res 1 198 2030 0.0 0.0 -it 09_hydro_pump 1 198 2030 0.0 0.0 -it 01_solar 1 199 2030 1.0 0.0 -it 02_wind_on 1 199 2030 1.0 0.0 -it 03_wind_off 1 199 2030 0.0 0.0 -it 04_res 1 199 2030 0.0 0.0 -it 05_nuclear 1 199 2030 0.0 0.0 -it 06_coal 1 199 2030 0.0 0.0 -it 07_gas 1 199 2030 0.0 0.0 -it 08_non-res 1 199 2030 0.0 0.0 -it 09_hydro_pump 1 199 2030 0.0 0.0 -it 01_solar 1 200 2030 1.0 0.0 -it 02_wind_on 1 200 2030 1.0 0.0 -it 03_wind_off 1 200 2030 0.0 0.0 -it 04_res 1 200 2030 0.0 0.0 -it 05_nuclear 1 200 2030 0.0 0.0 -it 06_coal 1 200 2030 0.0 0.0 -it 07_gas 1 200 2030 0.0 0.0 -it 08_non-res 1 200 2030 0.0 0.0 -it 09_hydro_pump 1 200 2030 0.0 0.0 -it 01_solar 1 201 2030 1.0 0.0 -it 02_wind_on 1 201 2030 1.0 0.0 -it 03_wind_off 1 201 2030 0.0 0.0 -it 04_res 1 201 2030 0.0 0.0 -it 05_nuclear 1 201 2030 0.0 0.0 -it 06_coal 1 201 2030 0.0 0.0 -it 07_gas 1 201 2030 0.0 0.0 -it 08_non-res 1 201 2030 0.0 0.0 -it 09_hydro_pump 1 201 2030 0.0 0.0 -it 01_solar 1 202 2030 1.0 0.0 -it 02_wind_on 1 202 2030 1.0 0.0 -it 03_wind_off 1 202 2030 0.0 0.0 -it 04_res 1 202 2030 0.0 0.0 -it 05_nuclear 1 202 2030 0.0 0.0 -it 06_coal 1 202 2030 0.0 0.0 -it 07_gas 1 202 2030 0.0 0.0 -it 08_non-res 1 202 2030 0.0 0.0 -it 09_hydro_pump 1 202 2030 0.0 0.0 -it 01_solar 1 203 2030 1.0 0.0 -it 02_wind_on 1 203 2030 1.0 0.0 -it 03_wind_off 1 203 2030 0.0 0.0 -it 04_res 1 203 2030 0.0 0.0 -it 05_nuclear 1 203 2030 0.0 0.0 -it 06_coal 1 203 2030 0.0 0.0 -it 07_gas 1 203 2030 0.0 0.0 -it 08_non-res 1 203 2030 0.0 0.0 -it 09_hydro_pump 1 203 2030 0.0 0.0 -it 01_solar 1 204 2030 1.0 0.0 -it 02_wind_on 1 204 2030 1.0 0.0 -it 03_wind_off 1 204 2030 0.0 0.0 -it 04_res 1 204 2030 0.0 0.0 -it 05_nuclear 1 204 2030 0.0 0.0 -it 06_coal 1 204 2030 0.0 0.0 -it 07_gas 1 204 2030 0.0 0.0 -it 08_non-res 1 204 2030 0.0 0.0 -it 09_hydro_pump 1 204 2030 0.0 0.0 -it 01_solar 1 205 2030 1.0 0.0 -it 02_wind_on 1 205 2030 1.0 0.0 -it 03_wind_off 1 205 2030 0.0 0.0 -it 04_res 1 205 2030 0.0 0.0 -it 05_nuclear 1 205 2030 0.0 0.0 -it 06_coal 1 205 2030 0.0 0.0 -it 07_gas 1 205 2030 0.0 0.0 -it 08_non-res 1 205 2030 0.0 0.0 -it 09_hydro_pump 1 205 2030 0.0 0.0 -it 01_solar 1 206 2030 1.0 0.0 -it 02_wind_on 1 206 2030 1.0 0.0 -it 03_wind_off 1 206 2030 0.0 0.0 -it 04_res 1 206 2030 0.0 0.0 -it 05_nuclear 1 206 2030 0.0 0.0 -it 06_coal 1 206 2030 0.0 0.0 -it 07_gas 1 206 2030 0.0 0.0 -it 08_non-res 1 206 2030 0.0 0.0 -it 09_hydro_pump 1 206 2030 0.0 0.0 -it 01_solar 1 207 2030 1.0 0.0 -it 02_wind_on 1 207 2030 1.0 0.0 -it 03_wind_off 1 207 2030 0.0 0.0 -it 04_res 1 207 2030 0.0 0.0 -it 05_nuclear 1 207 2030 0.0 0.0 -it 06_coal 1 207 2030 0.0 0.0 -it 07_gas 1 207 2030 0.0 0.0 -it 08_non-res 1 207 2030 0.0 0.0 -it 09_hydro_pump 1 207 2030 0.0 0.0 -it 01_solar 1 208 2030 1.0 0.0 -it 02_wind_on 1 208 2030 1.0 0.0 -it 03_wind_off 1 208 2030 0.0 0.0 -it 04_res 1 208 2030 0.0 0.0 -it 05_nuclear 1 208 2030 0.0 0.0 -it 06_coal 1 208 2030 0.0 0.0 -it 07_gas 1 208 2030 0.0 0.0 -it 08_non-res 1 208 2030 0.0 0.0 -it 09_hydro_pump 1 208 2030 0.0 0.0 -it 01_solar 1 209 2030 1.0 0.0 -it 02_wind_on 1 209 2030 1.0 0.0 -it 03_wind_off 1 209 2030 0.0 0.0 -it 04_res 1 209 2030 0.0 0.0 -it 05_nuclear 1 209 2030 0.0 0.0 -it 06_coal 1 209 2030 0.0 0.0 -it 07_gas 1 209 2030 0.0 0.0 -it 08_non-res 1 209 2030 0.0 0.0 -it 09_hydro_pump 1 209 2030 0.0 0.0 -it 01_solar 1 210 2030 1.0 0.0 -it 02_wind_on 1 210 2030 1.0 0.0 -it 03_wind_off 1 210 2030 1.0 0.0 -it 04_res 1 210 2030 0.0 0.0 -it 05_nuclear 1 210 2030 0.0 0.0 -it 06_coal 1 210 2030 0.0 0.0 -it 07_gas 1 210 2030 0.0 0.0 -it 08_non-res 1 210 2030 0.0 0.0 -it 09_hydro_pump 1 210 2030 0.0 0.0 -it 01_solar 1 211 2030 1.0 0.0 -it 02_wind_on 1 211 2030 1.0 0.0 -it 03_wind_off 1 211 2030 1.0 0.0 -it 04_res 1 211 2030 0.0 0.0 -it 05_nuclear 1 211 2030 0.0 0.0 -it 06_coal 1 211 2030 0.0 0.0 -it 07_gas 1 211 2030 0.0 0.0 -it 08_non-res 1 211 2030 0.0 0.0 -it 09_hydro_pump 1 211 2030 0.0 0.0 -it 01_solar 1 212 2030 1.0 0.0 -it 02_wind_on 1 212 2030 1.0 0.0 -it 03_wind_off 1 212 2030 1.0 0.0 -it 04_res 1 212 2030 0.0 0.0 -it 05_nuclear 1 212 2030 0.0 0.0 -it 06_coal 1 212 2030 0.0 0.0 -it 07_gas 1 212 2030 0.0 0.0 -it 08_non-res 1 212 2030 0.0 0.0 -it 09_hydro_pump 1 212 2030 0.0 0.0 -it 01_solar 1 213 2030 1.0 0.0 -it 02_wind_on 1 213 2030 1.0 0.0 -it 03_wind_off 1 213 2030 1.0 0.0 -it 04_res 1 213 2030 0.0 0.0 -it 05_nuclear 1 213 2030 0.0 0.0 -it 06_coal 1 213 2030 0.0 0.0 -it 07_gas 1 213 2030 0.0 0.0 -it 08_non-res 1 213 2030 0.0 0.0 -it 09_hydro_pump 1 213 2030 0.0 0.0 -it 01_solar 1 214 2030 1.0 0.0 -it 02_wind_on 1 214 2030 1.0 0.0 -it 03_wind_off 1 214 2030 1.0 0.0 -it 04_res 1 214 2030 0.0 0.0 -it 05_nuclear 1 214 2030 0.0 0.0 -it 06_coal 1 214 2030 0.0 0.0 -it 07_gas 1 214 2030 0.0 0.0 -it 08_non-res 1 214 2030 0.0 0.0 -it 09_hydro_pump 1 214 2030 0.0 0.0 -it 01_solar 1 215 2030 1.0 0.0 -it 02_wind_on 1 215 2030 1.0 0.0 -it 03_wind_off 1 215 2030 1.0 0.0 -it 04_res 1 215 2030 0.0 0.0 -it 05_nuclear 1 215 2030 0.0 0.0 -it 06_coal 1 215 2030 0.0 0.0 -it 07_gas 1 215 2030 0.0 0.0 -it 08_non-res 1 215 2030 0.0 0.0 -it 09_hydro_pump 1 215 2030 0.0 0.0 -it 01_solar 1 216 2030 1.0 0.0 -it 02_wind_on 1 216 2030 1.0 0.0 -it 03_wind_off 1 216 2030 1.0 0.0 -it 04_res 1 216 2030 0.0 0.0 -it 05_nuclear 1 216 2030 0.0 0.0 -it 06_coal 1 216 2030 0.0 0.0 -it 07_gas 1 216 2030 0.0 0.0 -it 08_non-res 1 216 2030 0.0 0.0 -it 09_hydro_pump 1 216 2030 0.0 0.0 -it 01_solar 1 217 2030 1.0 0.0 -it 02_wind_on 1 217 2030 1.0 0.0 -it 03_wind_off 1 217 2030 1.0 0.0 -it 04_res 1 217 2030 0.0 0.0 -it 05_nuclear 1 217 2030 0.0 0.0 -it 06_coal 1 217 2030 0.0 0.0 -it 07_gas 1 217 2030 0.0 0.0 -it 08_non-res 1 217 2030 0.0 0.0 -it 09_hydro_pump 1 217 2030 0.0 0.0 -it 01_solar 1 218 2030 1.0 0.0 -it 02_wind_on 1 218 2030 1.0 0.0 -it 03_wind_off 1 218 2030 1.0 0.0 -it 04_res 1 218 2030 0.0 0.0 -it 05_nuclear 1 218 2030 0.0 0.0 -it 06_coal 1 218 2030 0.0 0.0 -it 07_gas 1 218 2030 0.0 0.0 -it 08_non-res 1 218 2030 0.0 0.0 -it 09_hydro_pump 1 218 2030 0.0 0.0 -it 01_solar 1 219 2030 1.0 0.0 -it 02_wind_on 1 219 2030 1.0 0.0 -it 03_wind_off 1 219 2030 1.0 0.0 -it 04_res 1 219 2030 0.0 0.0 -it 05_nuclear 1 219 2030 0.0 0.0 -it 06_coal 1 219 2030 0.0 0.0 -it 07_gas 1 219 2030 0.0 0.0 -it 08_non-res 1 219 2030 0.0 0.0 -it 09_hydro_pump 1 219 2030 0.0 0.0 -it 01_solar 1 220 2030 1.0 0.0 -it 02_wind_on 1 220 2030 1.0 0.0 -it 03_wind_off 1 220 2030 1.0 0.0 -it 04_res 1 220 2030 0.0 0.0 -it 05_nuclear 1 220 2030 0.0 0.0 -it 06_coal 1 220 2030 0.0 0.0 -it 07_gas 1 220 2030 0.0 0.0 -it 08_non-res 1 220 2030 0.0 0.0 -it 09_hydro_pump 1 220 2030 0.0 0.0 -it 01_solar 1 221 2030 1.0 0.0 -it 02_wind_on 1 221 2030 1.0 0.0 -it 03_wind_off 1 221 2030 1.0 0.0 -it 04_res 1 221 2030 0.0 0.0 -it 05_nuclear 1 221 2030 0.0 0.0 -it 06_coal 1 221 2030 0.0 0.0 -it 07_gas 1 221 2030 0.0 0.0 -it 08_non-res 1 221 2030 0.0 0.0 -it 09_hydro_pump 1 221 2030 0.0 0.0 -it 01_solar 1 222 2030 1.0 0.0 -it 02_wind_on 1 222 2030 1.0 0.0 -it 03_wind_off 1 222 2030 1.0 0.0 -it 04_res 1 222 2030 0.0 0.0 -it 05_nuclear 1 222 2030 0.0 0.0 -it 06_coal 1 222 2030 0.0 0.0 -it 07_gas 1 222 2030 0.0 0.0 -it 08_non-res 1 222 2030 0.0 0.0 -it 09_hydro_pump 1 222 2030 0.0 0.0 -it 01_solar 1 223 2030 1.0 0.0 -it 02_wind_on 1 223 2030 1.0 0.0 -it 03_wind_off 1 223 2030 1.0 0.0 -it 04_res 1 223 2030 0.0 0.0 -it 05_nuclear 1 223 2030 0.0 0.0 -it 06_coal 1 223 2030 0.0 0.0 -it 07_gas 1 223 2030 0.0 0.0 -it 08_non-res 1 223 2030 0.0 0.0 -it 09_hydro_pump 1 223 2030 0.0 0.0 -it 01_solar 1 224 2030 1.0 0.0 -it 02_wind_on 1 224 2030 1.0 0.0 -it 03_wind_off 1 224 2030 1.0 0.0 -it 04_res 1 224 2030 0.0 0.0 -it 05_nuclear 1 224 2030 0.0 0.0 -it 06_coal 1 224 2030 0.0 0.0 -it 07_gas 1 224 2030 0.0 0.0 -it 08_non-res 1 224 2030 0.0 0.0 -it 09_hydro_pump 1 224 2030 0.0 0.0 -it 01_solar 1 225 2030 1.0 0.0 -it 02_wind_on 1 225 2030 1.0 0.0 -it 03_wind_off 1 225 2030 1.0 0.0 -it 04_res 1 225 2030 0.0 0.0 -it 05_nuclear 1 225 2030 0.0 0.0 -it 06_coal 1 225 2030 0.0 0.0 -it 07_gas 1 225 2030 0.0 0.0 -it 08_non-res 1 225 2030 0.0 0.0 -it 09_hydro_pump 1 225 2030 0.0 0.0 -it 01_solar 1 226 2030 1.0 0.0 -it 02_wind_on 1 226 2030 1.0 0.0 -it 03_wind_off 1 226 2030 1.0 0.0 -it 04_res 1 226 2030 0.0 0.0 -it 05_nuclear 1 226 2030 0.0 0.0 -it 06_coal 1 226 2030 0.0 0.0 -it 07_gas 1 226 2030 0.0 0.0 -it 08_non-res 1 226 2030 0.0 0.0 -it 09_hydro_pump 1 226 2030 0.0 0.0 -it 01_solar 1 227 2030 1.0 0.0 -it 02_wind_on 1 227 2030 1.0 0.0 -it 03_wind_off 1 227 2030 1.0 0.0 -it 04_res 1 227 2030 0.0 0.0 -it 05_nuclear 1 227 2030 0.0 0.0 -it 06_coal 1 227 2030 0.0 0.0 -it 07_gas 1 227 2030 0.0 0.0 -it 08_non-res 1 227 2030 0.0 0.0 -it 09_hydro_pump 1 227 2030 0.0 0.0 -it 01_solar 1 228 2030 1.0 0.0 -it 02_wind_on 1 228 2030 1.0 0.0 -it 03_wind_off 1 228 2030 1.0 0.0 -it 04_res 1 228 2030 0.0 0.0 -it 05_nuclear 1 228 2030 0.0 0.0 -it 06_coal 1 228 2030 0.0 0.0 -it 07_gas 1 228 2030 0.0 0.0 -it 08_non-res 1 228 2030 0.0 0.0 -it 09_hydro_pump 1 228 2030 0.0 0.0 -it 01_solar 1 229 2030 1.0 0.0 -it 02_wind_on 1 229 2030 1.0 0.0 -it 03_wind_off 1 229 2030 1.0 0.0 -it 04_res 1 229 2030 0.0 0.0 -it 05_nuclear 1 229 2030 0.0 0.0 -it 06_coal 1 229 2030 0.0 0.0 -it 07_gas 1 229 2030 0.0 0.0 -it 08_non-res 1 229 2030 0.0 0.0 -it 09_hydro_pump 1 229 2030 0.0 0.0 -it 01_solar 1 230 2030 1.0 0.0 -it 02_wind_on 1 230 2030 1.0 0.0 -it 03_wind_off 1 230 2030 1.0 0.0 -it 04_res 1 230 2030 1.0 0.0 -it 05_nuclear 1 230 2030 0.0 0.0 -it 06_coal 1 230 2030 0.0 0.0 -it 07_gas 1 230 2030 0.0 0.0 -it 08_non-res 1 230 2030 0.0 0.0 -it 09_hydro_pump 1 230 2030 0.0 0.0 -it 01_solar 1 231 2030 1.0 0.0 -it 02_wind_on 1 231 2030 1.0 0.0 -it 03_wind_off 1 231 2030 1.0 0.0 -it 04_res 1 231 2030 1.0 0.0 -it 05_nuclear 1 231 2030 0.0 0.0 -it 06_coal 1 231 2030 0.0 0.0 -it 07_gas 1 231 2030 0.0 0.0 -it 08_non-res 1 231 2030 0.0 0.0 -it 09_hydro_pump 1 231 2030 0.0 0.0 -it 01_solar 1 232 2030 1.0 0.0 -it 02_wind_on 1 232 2030 1.0 0.0 -it 03_wind_off 1 232 2030 1.0 0.0 -it 04_res 1 232 2030 1.0 0.0 -it 05_nuclear 1 232 2030 0.0 0.0 -it 06_coal 1 232 2030 0.0 0.0 -it 07_gas 1 232 2030 0.0 0.0 -it 08_non-res 1 232 2030 0.0 0.0 -it 09_hydro_pump 1 232 2030 0.0 0.0 -it 01_solar 1 233 2030 1.0 0.0 -it 02_wind_on 1 233 2030 1.0 0.0 -it 03_wind_off 1 233 2030 1.0 0.0 -it 04_res 1 233 2030 1.0 0.0 -it 05_nuclear 1 233 2030 0.0 0.0 -it 06_coal 1 233 2030 0.0 0.0 -it 07_gas 1 233 2030 0.0 0.0 -it 08_non-res 1 233 2030 0.0 0.0 -it 09_hydro_pump 1 233 2030 0.0 0.0 -it 01_solar 1 234 2030 1.0 0.0 -it 02_wind_on 1 234 2030 1.0 0.0 -it 03_wind_off 1 234 2030 1.0 0.0 -it 04_res 1 234 2030 1.0 0.0 -it 05_nuclear 1 234 2030 0.0 0.0 -it 06_coal 1 234 2030 0.0 0.0 -it 07_gas 1 234 2030 0.0 0.0 -it 08_non-res 1 234 2030 0.0 0.0 -it 09_hydro_pump 1 234 2030 0.0 0.0 -it 01_solar 1 235 2030 1.0 0.0 -it 02_wind_on 1 235 2030 1.0 0.0 -it 03_wind_off 1 235 2030 1.0 0.0 -it 04_res 1 235 2030 1.0 0.0 -it 05_nuclear 1 235 2030 0.0 0.0 -it 06_coal 1 235 2030 0.0 0.0 -it 07_gas 1 235 2030 0.0 0.0 -it 08_non-res 1 235 2030 0.0 0.0 -it 09_hydro_pump 1 235 2030 0.0 0.0 -it 01_solar 1 236 2030 1.0 0.0 -it 02_wind_on 1 236 2030 1.0 0.0 -it 03_wind_off 1 236 2030 1.0 0.0 -it 04_res 1 236 2030 1.0 0.0 -it 05_nuclear 1 236 2030 0.0 0.0 -it 06_coal 1 236 2030 0.0 0.0 -it 07_gas 1 236 2030 0.0 0.0 -it 08_non-res 1 236 2030 0.0 0.0 -it 09_hydro_pump 1 236 2030 0.0 0.0 -it 01_solar 1 237 2030 1.0 0.0 -it 02_wind_on 1 237 2030 1.0 0.0 -it 03_wind_off 1 237 2030 1.0 0.0 -it 04_res 1 237 2030 1.0 0.0 -it 05_nuclear 1 237 2030 0.0 0.0 -it 06_coal 1 237 2030 0.0 0.0 -it 07_gas 1 237 2030 0.0 0.0 -it 08_non-res 1 237 2030 0.0 0.0 -it 09_hydro_pump 1 237 2030 0.0 0.0 -it 01_solar 1 238 2030 1.0 0.0 -it 02_wind_on 1 238 2030 1.0 0.0 -it 03_wind_off 1 238 2030 1.0 0.0 -it 04_res 1 238 2030 1.0 0.0 -it 05_nuclear 1 238 2030 0.0 0.0 -it 06_coal 1 238 2030 0.0 0.0 -it 07_gas 1 238 2030 0.0 0.0 -it 08_non-res 1 238 2030 0.0 0.0 -it 09_hydro_pump 1 238 2030 0.0 0.0 -it 01_solar 1 239 2030 1.0 0.0 -it 02_wind_on 1 239 2030 1.0 0.0 -it 03_wind_off 1 239 2030 1.0 0.0 -it 04_res 1 239 2030 1.0 0.0 -it 05_nuclear 1 239 2030 0.0 0.0 -it 06_coal 1 239 2030 0.0 0.0 -it 07_gas 1 239 2030 0.0 0.0 -it 08_non-res 1 239 2030 0.0 0.0 -it 09_hydro_pump 1 239 2030 0.0 0.0 -it 01_solar 1 240 2030 1.0 0.0 -it 02_wind_on 1 240 2030 1.0 0.0 -it 03_wind_off 1 240 2030 1.0 0.0 -it 04_res 1 240 2030 1.0 0.0 -it 05_nuclear 1 240 2030 0.0 0.0 -it 06_coal 1 240 2030 0.0 0.0 -it 07_gas 1 240 2030 0.0 0.0 -it 08_non-res 1 240 2030 0.0 0.0 -it 09_hydro_pump 1 240 2030 0.0 0.0 -it 01_solar 1 241 2030 1.0 0.0 -it 02_wind_on 1 241 2030 1.0 0.0 -it 03_wind_off 1 241 2030 1.0 0.0 -it 04_res 1 241 2030 1.0 0.0 -it 05_nuclear 1 241 2030 0.0 0.0 -it 06_coal 1 241 2030 0.0 0.0 -it 07_gas 1 241 2030 0.0 0.0 -it 08_non-res 1 241 2030 0.0 0.0 -it 09_hydro_pump 1 241 2030 0.0 0.0 -it 01_solar 1 242 2030 1.0 0.0 -it 02_wind_on 1 242 2030 1.0 0.0 -it 03_wind_off 1 242 2030 1.0 0.0 -it 04_res 1 242 2030 1.0 0.0 -it 05_nuclear 1 242 2030 0.0 0.0 -it 06_coal 1 242 2030 0.0 0.0 -it 07_gas 1 242 2030 0.0 0.0 -it 08_non-res 1 242 2030 0.0 0.0 -it 09_hydro_pump 1 242 2030 0.0 0.0 -it 01_solar 1 243 2030 1.0 0.0 -it 02_wind_on 1 243 2030 1.0 0.0 -it 03_wind_off 1 243 2030 1.0 0.0 -it 04_res 1 243 2030 1.0 0.0 -it 05_nuclear 1 243 2030 0.0 0.0 -it 06_coal 1 243 2030 0.0 0.0 -it 07_gas 1 243 2030 0.0 0.0 -it 08_non-res 1 243 2030 0.0 0.0 -it 09_hydro_pump 1 243 2030 0.0 0.0 -it 01_solar 1 244 2030 1.0 0.0 -it 02_wind_on 1 244 2030 1.0 0.0 -it 03_wind_off 1 244 2030 1.0 0.0 -it 04_res 1 244 2030 1.0 0.0 -it 05_nuclear 1 244 2030 0.0 0.0 -it 06_coal 1 244 2030 0.0 0.0 -it 07_gas 1 244 2030 0.0 0.0 -it 08_non-res 1 244 2030 0.0 0.0 -it 09_hydro_pump 1 244 2030 0.0 0.0 -it 01_solar 1 245 2030 1.0 0.0 -it 02_wind_on 1 245 2030 1.0 0.0 -it 03_wind_off 1 245 2030 1.0 0.0 -it 04_res 1 245 2030 1.0 0.0 -it 05_nuclear 1 245 2030 0.0 0.0 -it 06_coal 1 245 2030 0.0 0.0 -it 07_gas 1 245 2030 0.0 0.0 -it 08_non-res 1 245 2030 0.0 0.0 -it 09_hydro_pump 1 245 2030 0.0 0.0 -it 01_solar 1 246 2030 1.0 0.0 -it 02_wind_on 1 246 2030 1.0 0.0 -it 03_wind_off 1 246 2030 1.0 0.0 -it 04_res 1 246 2030 1.0 0.0 -it 05_nuclear 1 246 2030 0.0 0.0 -it 06_coal 1 246 2030 0.0 0.0 -it 07_gas 1 246 2030 0.0 0.0 -it 08_non-res 1 246 2030 0.0 0.0 -it 09_hydro_pump 1 246 2030 0.0 0.0 -it 01_solar 1 247 2030 1.0 0.0 -it 02_wind_on 1 247 2030 1.0 0.0 -it 03_wind_off 1 247 2030 1.0 0.0 -it 04_res 1 247 2030 1.0 0.0 -it 05_nuclear 1 247 2030 0.0 0.0 -it 06_coal 1 247 2030 0.0 0.0 -it 07_gas 1 247 2030 0.0 0.0 -it 08_non-res 1 247 2030 0.0 0.0 -it 09_hydro_pump 1 247 2030 0.0 0.0 -it 01_solar 1 248 2030 1.0 0.0 -it 02_wind_on 1 248 2030 1.0 0.0 -it 03_wind_off 1 248 2030 1.0 0.0 -it 04_res 1 248 2030 1.0 0.0 -it 05_nuclear 1 248 2030 0.0 0.0 -it 06_coal 1 248 2030 0.0 0.0 -it 07_gas 1 248 2030 0.0 0.0 -it 08_non-res 1 248 2030 0.0 0.0 -it 09_hydro_pump 1 248 2030 0.0 0.0 -it 01_solar 1 249 2030 1.0 0.0 -it 02_wind_on 1 249 2030 1.0 0.0 -it 03_wind_off 1 249 2030 1.0 0.0 -it 04_res 1 249 2030 1.0 0.0 -it 05_nuclear 1 249 2030 0.0 0.0 -it 06_coal 1 249 2030 0.0 0.0 -it 07_gas 1 249 2030 0.0 0.0 -it 08_non-res 1 249 2030 0.0 0.0 -it 09_hydro_pump 1 249 2030 0.0 0.0 -it 01_solar 1 250 2030 1.0 0.0 -it 02_wind_on 1 250 2030 1.0 0.0 -it 03_wind_off 1 250 2030 1.0 0.0 -it 04_res 1 250 2030 1.0 0.0 -it 05_nuclear 1 250 2030 1.0 0.0 -it 06_coal 1 250 2030 0.0 0.0 -it 07_gas 1 250 2030 0.0 0.0 -it 08_non-res 1 250 2030 0.0 0.0 -it 09_hydro_pump 1 250 2030 0.0 0.0 -it 01_solar 1 251 2030 1.0 0.0 -it 02_wind_on 1 251 2030 1.0 0.0 -it 03_wind_off 1 251 2030 1.0 0.0 -it 04_res 1 251 2030 1.0 0.0 -it 05_nuclear 1 251 2030 1.0 0.0 -it 06_coal 1 251 2030 0.0 0.0 -it 07_gas 1 251 2030 0.0 0.0 -it 08_non-res 1 251 2030 0.0 0.0 -it 09_hydro_pump 1 251 2030 0.0 0.0 -it 01_solar 1 252 2030 1.0 0.0 -it 02_wind_on 1 252 2030 1.0 0.0 -it 03_wind_off 1 252 2030 1.0 0.0 -it 04_res 1 252 2030 1.0 0.0 -it 05_nuclear 1 252 2030 1.0 0.0 -it 06_coal 1 252 2030 0.0 0.0 -it 07_gas 1 252 2030 0.0 0.0 -it 08_non-res 1 252 2030 0.0 0.0 -it 09_hydro_pump 1 252 2030 0.0 0.0 -it 01_solar 1 253 2030 1.0 0.0 -it 02_wind_on 1 253 2030 1.0 0.0 -it 03_wind_off 1 253 2030 1.0 0.0 -it 04_res 1 253 2030 1.0 0.0 -it 05_nuclear 1 253 2030 1.0 0.0 -it 06_coal 1 253 2030 0.0 0.0 -it 07_gas 1 253 2030 0.0 0.0 -it 08_non-res 1 253 2030 0.0 0.0 -it 09_hydro_pump 1 253 2030 0.0 0.0 -it 01_solar 1 254 2030 1.0 0.0 -it 02_wind_on 1 254 2030 1.0 0.0 -it 03_wind_off 1 254 2030 1.0 0.0 -it 04_res 1 254 2030 1.0 0.0 -it 05_nuclear 1 254 2030 1.0 0.0 -it 06_coal 1 254 2030 0.0 0.0 -it 07_gas 1 254 2030 0.0 0.0 -it 08_non-res 1 254 2030 0.0 0.0 -it 09_hydro_pump 1 254 2030 0.0 0.0 -it 01_solar 1 255 2030 1.0 0.0 -it 02_wind_on 1 255 2030 1.0 0.0 -it 03_wind_off 1 255 2030 1.0 0.0 -it 04_res 1 255 2030 1.0 0.0 -it 05_nuclear 1 255 2030 1.0 0.0 -it 06_coal 1 255 2030 0.0 0.0 -it 07_gas 1 255 2030 0.0 0.0 -it 08_non-res 1 255 2030 0.0 0.0 -it 09_hydro_pump 1 255 2030 0.0 0.0 -it 01_solar 1 256 2030 1.0 0.0 -it 02_wind_on 1 256 2030 1.0 0.0 -it 03_wind_off 1 256 2030 1.0 0.0 -it 04_res 1 256 2030 1.0 0.0 -it 05_nuclear 1 256 2030 1.0 0.0 -it 06_coal 1 256 2030 0.0 0.0 -it 07_gas 1 256 2030 0.0 0.0 -it 08_non-res 1 256 2030 0.0 0.0 -it 09_hydro_pump 1 256 2030 0.0 0.0 -it 01_solar 1 257 2030 1.0 0.0 -it 02_wind_on 1 257 2030 1.0 0.0 -it 03_wind_off 1 257 2030 1.0 0.0 -it 04_res 1 257 2030 1.0 0.0 -it 05_nuclear 1 257 2030 1.0 0.0 -it 06_coal 1 257 2030 0.0 0.0 -it 07_gas 1 257 2030 0.0 0.0 -it 08_non-res 1 257 2030 0.0 0.0 -it 09_hydro_pump 1 257 2030 0.0 0.0 -it 01_solar 1 258 2030 1.0 0.0 -it 02_wind_on 1 258 2030 1.0 0.0 -it 03_wind_off 1 258 2030 1.0 0.0 -it 04_res 1 258 2030 1.0 0.0 -it 05_nuclear 1 258 2030 1.0 0.0 -it 06_coal 1 258 2030 0.0 0.0 -it 07_gas 1 258 2030 0.0 0.0 -it 08_non-res 1 258 2030 0.0 0.0 -it 09_hydro_pump 1 258 2030 0.0 0.0 -it 01_solar 1 259 2030 1.0 0.0 -it 02_wind_on 1 259 2030 1.0 0.0 -it 03_wind_off 1 259 2030 1.0 0.0 -it 04_res 1 259 2030 1.0 0.0 -it 05_nuclear 1 259 2030 1.0 0.0 -it 06_coal 1 259 2030 0.0 0.0 -it 07_gas 1 259 2030 0.0 0.0 -it 08_non-res 1 259 2030 0.0 0.0 -it 09_hydro_pump 1 259 2030 0.0 0.0 -it 01_solar 1 260 2030 1.0 0.0 -it 02_wind_on 1 260 2030 1.0 0.0 -it 03_wind_off 1 260 2030 1.0 0.0 -it 04_res 1 260 2030 1.0 0.0 -it 05_nuclear 1 260 2030 1.0 0.0 -it 06_coal 1 260 2030 0.0 0.0 -it 07_gas 1 260 2030 0.0 0.0 -it 08_non-res 1 260 2030 0.0 0.0 -it 09_hydro_pump 1 260 2030 0.0 0.0 -it 01_solar 1 261 2030 1.0 0.0 -it 02_wind_on 1 261 2030 1.0 0.0 -it 03_wind_off 1 261 2030 1.0 0.0 -it 04_res 1 261 2030 1.0 0.0 -it 05_nuclear 1 261 2030 1.0 0.0 -it 06_coal 1 261 2030 0.0 0.0 -it 07_gas 1 261 2030 0.0 0.0 -it 08_non-res 1 261 2030 0.0 0.0 -it 09_hydro_pump 1 261 2030 0.0 0.0 -it 01_solar 1 262 2030 1.0 0.0 -it 02_wind_on 1 262 2030 1.0 0.0 -it 03_wind_off 1 262 2030 1.0 0.0 -it 04_res 1 262 2030 1.0 0.0 -it 05_nuclear 1 262 2030 1.0 0.0 -it 06_coal 1 262 2030 0.0 0.0 -it 07_gas 1 262 2030 0.0 0.0 -it 08_non-res 1 262 2030 0.0 0.0 -it 09_hydro_pump 1 262 2030 0.0 0.0 -it 01_solar 1 263 2030 1.0 0.0 -it 02_wind_on 1 263 2030 1.0 0.0 -it 03_wind_off 1 263 2030 1.0 0.0 -it 04_res 1 263 2030 1.0 0.0 -it 05_nuclear 1 263 2030 1.0 0.0 -it 06_coal 1 263 2030 0.0 0.0 -it 07_gas 1 263 2030 0.0 0.0 -it 08_non-res 1 263 2030 0.0 0.0 -it 09_hydro_pump 1 263 2030 0.0 0.0 -it 01_solar 1 264 2030 1.0 0.0 -it 02_wind_on 1 264 2030 1.0 0.0 -it 03_wind_off 1 264 2030 1.0 0.0 -it 04_res 1 264 2030 1.0 0.0 -it 05_nuclear 1 264 2030 1.0 0.0 -it 06_coal 1 264 2030 0.0 0.0 -it 07_gas 1 264 2030 0.0 0.0 -it 08_non-res 1 264 2030 0.0 0.0 -it 09_hydro_pump 1 264 2030 0.0 0.0 -it 01_solar 1 265 2030 1.0 0.0 -it 02_wind_on 1 265 2030 1.0 0.0 -it 03_wind_off 1 265 2030 1.0 0.0 -it 04_res 1 265 2030 1.0 0.0 -it 05_nuclear 1 265 2030 1.0 0.0 -it 06_coal 1 265 2030 0.0 0.0 -it 07_gas 1 265 2030 0.0 0.0 -it 08_non-res 1 265 2030 0.0 0.0 -it 09_hydro_pump 1 265 2030 0.0 0.0 -it 01_solar 1 266 2030 1.0 0.0 -it 02_wind_on 1 266 2030 1.0 0.0 -it 03_wind_off 1 266 2030 1.0 0.0 -it 04_res 1 266 2030 1.0 0.0 -it 05_nuclear 1 266 2030 1.0 0.0 -it 06_coal 1 266 2030 0.0 0.0 -it 07_gas 1 266 2030 0.0 0.0 -it 08_non-res 1 266 2030 0.0 0.0 -it 09_hydro_pump 1 266 2030 0.0 0.0 -it 01_solar 1 267 2030 1.0 0.0 -it 02_wind_on 1 267 2030 1.0 0.0 -it 03_wind_off 1 267 2030 1.0 0.0 -it 04_res 1 267 2030 1.0 0.0 -it 05_nuclear 1 267 2030 1.0 0.0 -it 06_coal 1 267 2030 0.0 0.0 -it 07_gas 1 267 2030 0.0 0.0 -it 08_non-res 1 267 2030 0.0 0.0 -it 09_hydro_pump 1 267 2030 0.0 0.0 -it 01_solar 1 268 2030 1.0 0.0 -it 02_wind_on 1 268 2030 1.0 0.0 -it 03_wind_off 1 268 2030 1.0 0.0 -it 04_res 1 268 2030 1.0 0.0 -it 05_nuclear 1 268 2030 1.0 0.0 -it 06_coal 1 268 2030 0.0 0.0 -it 07_gas 1 268 2030 0.0 0.0 -it 08_non-res 1 268 2030 0.0 0.0 -it 09_hydro_pump 1 268 2030 0.0 0.0 -it 01_solar 1 269 2030 1.0 0.0 -it 02_wind_on 1 269 2030 1.0 0.0 -it 03_wind_off 1 269 2030 1.0 0.0 -it 04_res 1 269 2030 1.0 0.0 -it 05_nuclear 1 269 2030 1.0 0.0 -it 06_coal 1 269 2030 0.0 0.0 -it 07_gas 1 269 2030 0.0 0.0 -it 08_non-res 1 269 2030 0.0 0.0 -it 09_hydro_pump 1 269 2030 0.0 0.0 -it 01_solar 1 270 2030 1.0 0.0 -it 02_wind_on 1 270 2030 1.0 0.0 -it 03_wind_off 1 270 2030 1.0 0.0 -it 04_res 1 270 2030 1.0 0.0 -it 05_nuclear 1 270 2030 1.0 0.0 -it 06_coal 1 270 2030 1.0 0.0 -it 07_gas 1 270 2030 0.0 0.0 -it 08_non-res 1 270 2030 0.0 0.0 -it 09_hydro_pump 1 270 2030 0.0 0.0 -it 01_solar 1 271 2030 1.0 0.0 -it 02_wind_on 1 271 2030 1.0 0.0 -it 03_wind_off 1 271 2030 1.0 0.0 -it 04_res 1 271 2030 1.0 0.0 -it 05_nuclear 1 271 2030 1.0 0.0 -it 06_coal 1 271 2030 1.0 0.0 -it 07_gas 1 271 2030 0.0 0.0 -it 08_non-res 1 271 2030 0.0 0.0 -it 09_hydro_pump 1 271 2030 0.0 0.0 -it 01_solar 1 272 2030 1.0 0.0 -it 02_wind_on 1 272 2030 1.0 0.0 -it 03_wind_off 1 272 2030 1.0 0.0 -it 04_res 1 272 2030 1.0 0.0 -it 05_nuclear 1 272 2030 1.0 0.0 -it 06_coal 1 272 2030 1.0 0.0 -it 07_gas 1 272 2030 0.0 0.0 -it 08_non-res 1 272 2030 0.0 0.0 -it 09_hydro_pump 1 272 2030 0.0 0.0 -it 01_solar 1 273 2030 1.0 0.0 -it 02_wind_on 1 273 2030 1.0 0.0 -it 03_wind_off 1 273 2030 1.0 0.0 -it 04_res 1 273 2030 1.0 0.0 -it 05_nuclear 1 273 2030 1.0 0.0 -it 06_coal 1 273 2030 1.0 0.0 -it 07_gas 1 273 2030 0.0 0.0 -it 08_non-res 1 273 2030 0.0 0.0 -it 09_hydro_pump 1 273 2030 0.0 0.0 -it 01_solar 1 274 2030 1.0 0.0 -it 02_wind_on 1 274 2030 1.0 0.0 -it 03_wind_off 1 274 2030 1.0 0.0 -it 04_res 1 274 2030 1.0 0.0 -it 05_nuclear 1 274 2030 1.0 0.0 -it 06_coal 1 274 2030 1.0 0.0 -it 07_gas 1 274 2030 0.0 0.0 -it 08_non-res 1 274 2030 0.0 0.0 -it 09_hydro_pump 1 274 2030 0.0 0.0 -it 01_solar 1 275 2030 1.0 0.0 -it 02_wind_on 1 275 2030 1.0 0.0 -it 03_wind_off 1 275 2030 1.0 0.0 -it 04_res 1 275 2030 1.0 0.0 -it 05_nuclear 1 275 2030 1.0 0.0 -it 06_coal 1 275 2030 1.0 0.0 -it 07_gas 1 275 2030 0.0 0.0 -it 08_non-res 1 275 2030 0.0 0.0 -it 09_hydro_pump 1 275 2030 0.0 0.0 -it 01_solar 1 276 2030 1.0 0.0 -it 02_wind_on 1 276 2030 1.0 0.0 -it 03_wind_off 1 276 2030 1.0 0.0 -it 04_res 1 276 2030 1.0 0.0 -it 05_nuclear 1 276 2030 1.0 0.0 -it 06_coal 1 276 2030 1.0 0.0 -it 07_gas 1 276 2030 0.0 0.0 -it 08_non-res 1 276 2030 0.0 0.0 -it 09_hydro_pump 1 276 2030 0.0 0.0 -it 01_solar 1 277 2030 1.0 0.0 -it 02_wind_on 1 277 2030 1.0 0.0 -it 03_wind_off 1 277 2030 1.0 0.0 -it 04_res 1 277 2030 1.0 0.0 -it 05_nuclear 1 277 2030 1.0 0.0 -it 06_coal 1 277 2030 1.0 0.0 -it 07_gas 1 277 2030 0.0 0.0 -it 08_non-res 1 277 2030 0.0 0.0 -it 09_hydro_pump 1 277 2030 0.0 0.0 -it 01_solar 1 278 2030 1.0 0.0 -it 02_wind_on 1 278 2030 1.0 0.0 -it 03_wind_off 1 278 2030 1.0 0.0 -it 04_res 1 278 2030 1.0 0.0 -it 05_nuclear 1 278 2030 1.0 0.0 -it 06_coal 1 278 2030 1.0 0.0 -it 07_gas 1 278 2030 0.0 0.0 -it 08_non-res 1 278 2030 0.0 0.0 -it 09_hydro_pump 1 278 2030 0.0 0.0 -it 01_solar 1 279 2030 1.0 0.0 -it 02_wind_on 1 279 2030 1.0 0.0 -it 03_wind_off 1 279 2030 1.0 0.0 -it 04_res 1 279 2030 1.0 0.0 -it 05_nuclear 1 279 2030 1.0 0.0 -it 06_coal 1 279 2030 1.0 0.0 -it 07_gas 1 279 2030 0.0 0.0 -it 08_non-res 1 279 2030 0.0 0.0 -it 09_hydro_pump 1 279 2030 0.0 0.0 -it 01_solar 1 280 2030 1.0 0.0 -it 02_wind_on 1 280 2030 1.0 0.0 -it 03_wind_off 1 280 2030 1.0 0.0 -it 04_res 1 280 2030 1.0 0.0 -it 05_nuclear 1 280 2030 1.0 0.0 -it 06_coal 1 280 2030 1.0 0.0 -it 07_gas 1 280 2030 0.0 0.0 -it 08_non-res 1 280 2030 0.0 0.0 -it 09_hydro_pump 1 280 2030 0.0 0.0 -it 01_solar 1 281 2030 1.0 0.0 -it 02_wind_on 1 281 2030 1.0 0.0 -it 03_wind_off 1 281 2030 1.0 0.0 -it 04_res 1 281 2030 1.0 0.0 -it 05_nuclear 1 281 2030 1.0 0.0 -it 06_coal 1 281 2030 1.0 0.0 -it 07_gas 1 281 2030 0.0 0.0 -it 08_non-res 1 281 2030 0.0 0.0 -it 09_hydro_pump 1 281 2030 0.0 0.0 -it 01_solar 1 282 2030 1.0 0.0 -it 02_wind_on 1 282 2030 1.0 0.0 -it 03_wind_off 1 282 2030 1.0 0.0 -it 04_res 1 282 2030 1.0 0.0 -it 05_nuclear 1 282 2030 1.0 0.0 -it 06_coal 1 282 2030 1.0 0.0 -it 07_gas 1 282 2030 0.0 0.0 -it 08_non-res 1 282 2030 0.0 0.0 -it 09_hydro_pump 1 282 2030 0.0 0.0 -it 01_solar 1 283 2030 1.0 0.0 -it 02_wind_on 1 283 2030 1.0 0.0 -it 03_wind_off 1 283 2030 1.0 0.0 -it 04_res 1 283 2030 1.0 0.0 -it 05_nuclear 1 283 2030 1.0 0.0 -it 06_coal 1 283 2030 1.0 0.0 -it 07_gas 1 283 2030 0.0 0.0 -it 08_non-res 1 283 2030 0.0 0.0 -it 09_hydro_pump 1 283 2030 0.0 0.0 -it 01_solar 1 284 2030 1.0 0.0 -it 02_wind_on 1 284 2030 1.0 0.0 -it 03_wind_off 1 284 2030 1.0 0.0 -it 04_res 1 284 2030 1.0 0.0 -it 05_nuclear 1 284 2030 1.0 0.0 -it 06_coal 1 284 2030 1.0 0.0 -it 07_gas 1 284 2030 0.0 0.0 -it 08_non-res 1 284 2030 0.0 0.0 -it 09_hydro_pump 1 284 2030 0.0 0.0 -it 01_solar 1 285 2030 1.0 0.0 -it 02_wind_on 1 285 2030 1.0 0.0 -it 03_wind_off 1 285 2030 1.0 0.0 -it 04_res 1 285 2030 1.0 0.0 -it 05_nuclear 1 285 2030 1.0 0.0 -it 06_coal 1 285 2030 1.0 0.0 -it 07_gas 1 285 2030 0.0 0.0 -it 08_non-res 1 285 2030 0.0 0.0 -it 09_hydro_pump 1 285 2030 0.0 0.0 -it 01_solar 1 286 2030 1.0 0.0 -it 02_wind_on 1 286 2030 1.0 0.0 -it 03_wind_off 1 286 2030 1.0 0.0 -it 04_res 1 286 2030 1.0 0.0 -it 05_nuclear 1 286 2030 1.0 0.0 -it 06_coal 1 286 2030 1.0 0.0 -it 07_gas 1 286 2030 0.0 0.0 -it 08_non-res 1 286 2030 0.0 0.0 -it 09_hydro_pump 1 286 2030 0.0 0.0 -it 01_solar 1 287 2030 1.0 0.0 -it 02_wind_on 1 287 2030 1.0 0.0 -it 03_wind_off 1 287 2030 1.0 0.0 -it 04_res 1 287 2030 1.0 0.0 -it 05_nuclear 1 287 2030 1.0 0.0 -it 06_coal 1 287 2030 1.0 0.0 -it 07_gas 1 287 2030 0.0 0.0 -it 08_non-res 1 287 2030 0.0 0.0 -it 09_hydro_pump 1 287 2030 0.0 0.0 -it 01_solar 1 288 2030 1.0 0.0 -it 02_wind_on 1 288 2030 1.0 0.0 -it 03_wind_off 1 288 2030 1.0 0.0 -it 04_res 1 288 2030 1.0 0.0 -it 05_nuclear 1 288 2030 1.0 0.0 -it 06_coal 1 288 2030 1.0 0.0 -it 07_gas 1 288 2030 0.0 0.0 -it 08_non-res 1 288 2030 0.0 0.0 -it 09_hydro_pump 1 288 2030 0.0 0.0 -it 01_solar 1 289 2030 1.0 0.0 -it 02_wind_on 1 289 2030 1.0 0.0 -it 03_wind_off 1 289 2030 1.0 0.0 -it 04_res 1 289 2030 1.0 0.0 -it 05_nuclear 1 289 2030 1.0 0.0 -it 06_coal 1 289 2030 1.0 0.0 -it 07_gas 1 289 2030 0.0 0.0 -it 08_non-res 1 289 2030 0.0 0.0 -it 09_hydro_pump 1 289 2030 0.0 0.0 -it 01_solar 1 290 2030 1.0 0.0 -it 02_wind_on 1 290 2030 1.0 0.0 -it 03_wind_off 1 290 2030 1.0 0.0 -it 04_res 1 290 2030 1.0 0.0 -it 05_nuclear 1 290 2030 1.0 0.0 -it 06_coal 1 290 2030 1.0 0.0 -it 07_gas 1 290 2030 1.0 0.0 -it 08_non-res 1 290 2030 0.0 0.0 -it 09_hydro_pump 1 290 2030 0.0 0.0 -it 01_solar 1 291 2030 1.0 0.0 -it 02_wind_on 1 291 2030 1.0 0.0 -it 03_wind_off 1 291 2030 1.0 0.0 -it 04_res 1 291 2030 1.0 0.0 -it 05_nuclear 1 291 2030 1.0 0.0 -it 06_coal 1 291 2030 1.0 0.0 -it 07_gas 1 291 2030 1.0 0.0 -it 08_non-res 1 291 2030 0.0 0.0 -it 09_hydro_pump 1 291 2030 0.0 0.0 -it 01_solar 1 292 2030 1.0 0.0 -it 02_wind_on 1 292 2030 1.0 0.0 -it 03_wind_off 1 292 2030 1.0 0.0 -it 04_res 1 292 2030 1.0 0.0 -it 05_nuclear 1 292 2030 1.0 0.0 -it 06_coal 1 292 2030 1.0 0.0 -it 07_gas 1 292 2030 1.0 0.0 -it 08_non-res 1 292 2030 0.0 0.0 -it 09_hydro_pump 1 292 2030 0.0 0.0 -it 01_solar 1 293 2030 1.0 0.0 -it 02_wind_on 1 293 2030 1.0 0.0 -it 03_wind_off 1 293 2030 1.0 0.0 -it 04_res 1 293 2030 1.0 0.0 -it 05_nuclear 1 293 2030 1.0 0.0 -it 06_coal 1 293 2030 1.0 0.0 -it 07_gas 1 293 2030 1.0 0.0 -it 08_non-res 1 293 2030 0.0 0.0 -it 09_hydro_pump 1 293 2030 0.0 0.0 -it 01_solar 1 294 2030 1.0 0.0 -it 02_wind_on 1 294 2030 1.0 0.0 -it 03_wind_off 1 294 2030 1.0 0.0 -it 04_res 1 294 2030 1.0 0.0 -it 05_nuclear 1 294 2030 1.0 0.0 -it 06_coal 1 294 2030 1.0 0.0 -it 07_gas 1 294 2030 1.0 0.0 -it 08_non-res 1 294 2030 0.0 0.0 -it 09_hydro_pump 1 294 2030 0.0 0.0 -it 01_solar 1 295 2030 1.0 0.0 -it 02_wind_on 1 295 2030 1.0 0.0 -it 03_wind_off 1 295 2030 1.0 0.0 -it 04_res 1 295 2030 1.0 0.0 -it 05_nuclear 1 295 2030 1.0 0.0 -it 06_coal 1 295 2030 1.0 0.0 -it 07_gas 1 295 2030 1.0 0.0 -it 08_non-res 1 295 2030 0.0 0.0 -it 09_hydro_pump 1 295 2030 0.0 0.0 -it 01_solar 1 296 2030 1.0 0.0 -it 02_wind_on 1 296 2030 1.0 0.0 -it 03_wind_off 1 296 2030 1.0 0.0 -it 04_res 1 296 2030 1.0 0.0 -it 05_nuclear 1 296 2030 1.0 0.0 -it 06_coal 1 296 2030 1.0 0.0 -it 07_gas 1 296 2030 1.0 0.0 -it 08_non-res 1 296 2030 0.0 0.0 -it 09_hydro_pump 1 296 2030 0.0 0.0 -it 01_solar 1 297 2030 1.0 0.0 -it 02_wind_on 1 297 2030 1.0 0.0 -it 03_wind_off 1 297 2030 1.0 0.0 -it 04_res 1 297 2030 1.0 0.0 -it 05_nuclear 1 297 2030 1.0 0.0 -it 06_coal 1 297 2030 1.0 0.0 -it 07_gas 1 297 2030 1.0 0.0 -it 08_non-res 1 297 2030 0.0 0.0 -it 09_hydro_pump 1 297 2030 0.0 0.0 -it 01_solar 1 298 2030 1.0 0.0 -it 02_wind_on 1 298 2030 1.0 0.0 -it 03_wind_off 1 298 2030 1.0 0.0 -it 04_res 1 298 2030 1.0 0.0 -it 05_nuclear 1 298 2030 1.0 0.0 -it 06_coal 1 298 2030 1.0 0.0 -it 07_gas 1 298 2030 1.0 0.0 -it 08_non-res 1 298 2030 0.0 0.0 -it 09_hydro_pump 1 298 2030 0.0 0.0 -it 01_solar 1 299 2030 1.0 0.0 -it 02_wind_on 1 299 2030 1.0 0.0 -it 03_wind_off 1 299 2030 1.0 0.0 -it 04_res 1 299 2030 1.0 0.0 -it 05_nuclear 1 299 2030 1.0 0.0 -it 06_coal 1 299 2030 1.0 0.0 -it 07_gas 1 299 2030 1.0 0.0 -it 08_non-res 1 299 2030 0.0 0.0 -it 09_hydro_pump 1 299 2030 0.0 0.0 -it 01_solar 1 300 2030 1.0 0.0 -it 02_wind_on 1 300 2030 1.0 0.0 -it 03_wind_off 1 300 2030 1.0 0.0 -it 04_res 1 300 2030 1.0 0.0 -it 05_nuclear 1 300 2030 1.0 0.0 -it 06_coal 1 300 2030 1.0 0.0 -it 07_gas 1 300 2030 1.0 0.0 -it 08_non-res 1 300 2030 0.0 0.0 -it 09_hydro_pump 1 300 2030 0.0 0.0 -it 01_solar 1 301 2030 1.0 0.0 -it 02_wind_on 1 301 2030 1.0 0.0 -it 03_wind_off 1 301 2030 1.0 0.0 -it 04_res 1 301 2030 1.0 0.0 -it 05_nuclear 1 301 2030 1.0 0.0 -it 06_coal 1 301 2030 1.0 0.0 -it 07_gas 1 301 2030 1.0 0.0 -it 08_non-res 1 301 2030 0.0 0.0 -it 09_hydro_pump 1 301 2030 0.0 0.0 -it 01_solar 1 302 2030 1.0 0.0 -it 02_wind_on 1 302 2030 1.0 0.0 -it 03_wind_off 1 302 2030 1.0 0.0 -it 04_res 1 302 2030 1.0 0.0 -it 05_nuclear 1 302 2030 1.0 0.0 -it 06_coal 1 302 2030 1.0 0.0 -it 07_gas 1 302 2030 1.0 0.0 -it 08_non-res 1 302 2030 0.0 0.0 -it 09_hydro_pump 1 302 2030 0.0 0.0 -it 01_solar 1 303 2030 1.0 0.0 -it 02_wind_on 1 303 2030 1.0 0.0 -it 03_wind_off 1 303 2030 1.0 0.0 -it 04_res 1 303 2030 1.0 0.0 -it 05_nuclear 1 303 2030 1.0 0.0 -it 06_coal 1 303 2030 1.0 0.0 -it 07_gas 1 303 2030 1.0 0.0 -it 08_non-res 1 303 2030 0.0 0.0 -it 09_hydro_pump 1 303 2030 0.0 0.0 -it 01_solar 1 304 2030 1.0 0.0 -it 02_wind_on 1 304 2030 1.0 0.0 -it 03_wind_off 1 304 2030 1.0 0.0 -it 04_res 1 304 2030 1.0 0.0 -it 05_nuclear 1 304 2030 1.0 0.0 -it 06_coal 1 304 2030 1.0 0.0 -it 07_gas 1 304 2030 1.0 0.0 -it 08_non-res 1 304 2030 0.0 0.0 -it 09_hydro_pump 1 304 2030 0.0 0.0 -it 01_solar 1 305 2030 1.0 0.0 -it 02_wind_on 1 305 2030 1.0 0.0 -it 03_wind_off 1 305 2030 1.0 0.0 -it 04_res 1 305 2030 1.0 0.0 -it 05_nuclear 1 305 2030 1.0 0.0 -it 06_coal 1 305 2030 1.0 0.0 -it 07_gas 1 305 2030 1.0 0.0 -it 08_non-res 1 305 2030 0.0 0.0 -it 09_hydro_pump 1 305 2030 0.0 0.0 -it 01_solar 1 306 2030 1.0 0.0 -it 02_wind_on 1 306 2030 1.0 0.0 -it 03_wind_off 1 306 2030 1.0 0.0 -it 04_res 1 306 2030 1.0 0.0 -it 05_nuclear 1 306 2030 1.0 0.0 -it 06_coal 1 306 2030 1.0 0.0 -it 07_gas 1 306 2030 1.0 0.0 -it 08_non-res 1 306 2030 0.0 0.0 -it 09_hydro_pump 1 306 2030 0.0 0.0 -it 01_solar 1 307 2030 1.0 0.0 -it 02_wind_on 1 307 2030 1.0 0.0 -it 03_wind_off 1 307 2030 1.0 0.0 -it 04_res 1 307 2030 1.0 0.0 -it 05_nuclear 1 307 2030 1.0 0.0 -it 06_coal 1 307 2030 1.0 0.0 -it 07_gas 1 307 2030 1.0 0.0 -it 08_non-res 1 307 2030 0.0 0.0 -it 09_hydro_pump 1 307 2030 0.0 0.0 -it 01_solar 1 308 2030 1.0 0.0 -it 02_wind_on 1 308 2030 1.0 0.0 -it 03_wind_off 1 308 2030 1.0 0.0 -it 04_res 1 308 2030 1.0 0.0 -it 05_nuclear 1 308 2030 1.0 0.0 -it 06_coal 1 308 2030 1.0 0.0 -it 07_gas 1 308 2030 1.0 0.0 -it 08_non-res 1 308 2030 0.0 0.0 -it 09_hydro_pump 1 308 2030 0.0 0.0 -it 01_solar 1 309 2030 1.0 0.0 -it 02_wind_on 1 309 2030 1.0 0.0 -it 03_wind_off 1 309 2030 1.0 0.0 -it 04_res 1 309 2030 1.0 0.0 -it 05_nuclear 1 309 2030 1.0 0.0 -it 06_coal 1 309 2030 1.0 0.0 -it 07_gas 1 309 2030 1.0 0.0 -it 08_non-res 1 309 2030 0.0 0.0 -it 09_hydro_pump 1 309 2030 0.0 0.0 -it 01_solar 1 310 2030 1.0 0.0 -it 02_wind_on 1 310 2030 1.0 0.0 -it 03_wind_off 1 310 2030 1.0 0.0 -it 04_res 1 310 2030 1.0 0.0 -it 05_nuclear 1 310 2030 1.0 0.0 -it 06_coal 1 310 2030 1.0 0.0 -it 07_gas 1 310 2030 1.0 0.0 -it 08_non-res 1 310 2030 1.0 0.0 -it 09_hydro_pump 1 310 2030 0.0 0.0 -it 01_solar 1 311 2030 1.0 0.0 -it 02_wind_on 1 311 2030 1.0 0.0 -it 03_wind_off 1 311 2030 1.0 0.0 -it 04_res 1 311 2030 1.0 0.0 -it 05_nuclear 1 311 2030 1.0 0.0 -it 06_coal 1 311 2030 1.0 0.0 -it 07_gas 1 311 2030 1.0 0.0 -it 08_non-res 1 311 2030 1.0 0.0 -it 09_hydro_pump 1 311 2030 0.0 0.0 -it 01_solar 1 312 2030 1.0 0.0 -it 02_wind_on 1 312 2030 1.0 0.0 -it 03_wind_off 1 312 2030 1.0 0.0 -it 04_res 1 312 2030 1.0 0.0 -it 05_nuclear 1 312 2030 1.0 0.0 -it 06_coal 1 312 2030 1.0 0.0 -it 07_gas 1 312 2030 1.0 0.0 -it 08_non-res 1 312 2030 1.0 0.0 -it 09_hydro_pump 1 312 2030 0.0 0.0 -it 01_solar 1 313 2030 1.0 0.0 -it 02_wind_on 1 313 2030 1.0 0.0 -it 03_wind_off 1 313 2030 1.0 0.0 -it 04_res 1 313 2030 1.0 0.0 -it 05_nuclear 1 313 2030 1.0 0.0 -it 06_coal 1 313 2030 1.0 0.0 -it 07_gas 1 313 2030 1.0 0.0 -it 08_non-res 1 313 2030 1.0 0.0 -it 09_hydro_pump 1 313 2030 0.0 0.0 -it 01_solar 1 314 2030 1.0 0.0 -it 02_wind_on 1 314 2030 1.0 0.0 -it 03_wind_off 1 314 2030 1.0 0.0 -it 04_res 1 314 2030 1.0 0.0 -it 05_nuclear 1 314 2030 1.0 0.0 -it 06_coal 1 314 2030 1.0 0.0 -it 07_gas 1 314 2030 1.0 0.0 -it 08_non-res 1 314 2030 1.0 0.0 -it 09_hydro_pump 1 314 2030 0.0 0.0 -it 01_solar 1 315 2030 1.0 0.0 -it 02_wind_on 1 315 2030 1.0 0.0 -it 03_wind_off 1 315 2030 1.0 0.0 -it 04_res 1 315 2030 1.0 0.0 -it 05_nuclear 1 315 2030 1.0 0.0 -it 06_coal 1 315 2030 1.0 0.0 -it 07_gas 1 315 2030 1.0 0.0 -it 08_non-res 1 315 2030 1.0 0.0 -it 09_hydro_pump 1 315 2030 0.0 0.0 -it 01_solar 1 316 2030 1.0 0.0 -it 02_wind_on 1 316 2030 1.0 0.0 -it 03_wind_off 1 316 2030 1.0 0.0 -it 04_res 1 316 2030 1.0 0.0 -it 05_nuclear 1 316 2030 1.0 0.0 -it 06_coal 1 316 2030 1.0 0.0 -it 07_gas 1 316 2030 1.0 0.0 -it 08_non-res 1 316 2030 1.0 0.0 -it 09_hydro_pump 1 316 2030 0.0 0.0 -it 01_solar 1 317 2030 1.0 0.0 -it 02_wind_on 1 317 2030 1.0 0.0 -it 03_wind_off 1 317 2030 1.0 0.0 -it 04_res 1 317 2030 1.0 0.0 -it 05_nuclear 1 317 2030 1.0 0.0 -it 06_coal 1 317 2030 1.0 0.0 -it 07_gas 1 317 2030 1.0 0.0 -it 08_non-res 1 317 2030 1.0 0.0 -it 09_hydro_pump 1 317 2030 0.0 0.0 -it 01_solar 1 318 2030 1.0 0.0 -it 02_wind_on 1 318 2030 1.0 0.0 -it 03_wind_off 1 318 2030 1.0 0.0 -it 04_res 1 318 2030 1.0 0.0 -it 05_nuclear 1 318 2030 1.0 0.0 -it 06_coal 1 318 2030 1.0 0.0 -it 07_gas 1 318 2030 1.0 0.0 -it 08_non-res 1 318 2030 1.0 0.0 -it 09_hydro_pump 1 318 2030 0.0 0.0 -it 01_solar 1 319 2030 1.0 0.0 -it 02_wind_on 1 319 2030 1.0 0.0 -it 03_wind_off 1 319 2030 1.0 0.0 -it 04_res 1 319 2030 1.0 0.0 -it 05_nuclear 1 319 2030 1.0 0.0 -it 06_coal 1 319 2030 1.0 0.0 -it 07_gas 1 319 2030 1.0 0.0 -it 08_non-res 1 319 2030 1.0 0.0 -it 09_hydro_pump 1 319 2030 0.0 0.0 -it 01_solar 1 320 2030 1.0 0.0 -it 02_wind_on 1 320 2030 1.0 0.0 -it 03_wind_off 1 320 2030 1.0 0.0 -it 04_res 1 320 2030 1.0 0.0 -it 05_nuclear 1 320 2030 1.0 0.0 -it 06_coal 1 320 2030 1.0 0.0 -it 07_gas 1 320 2030 1.0 0.0 -it 08_non-res 1 320 2030 1.0 0.0 -it 09_hydro_pump 1 320 2030 0.0 0.0 -it 01_solar 1 321 2030 1.0 0.0 -it 02_wind_on 1 321 2030 1.0 0.0 -it 03_wind_off 1 321 2030 1.0 0.0 -it 04_res 1 321 2030 1.0 0.0 -it 05_nuclear 1 321 2030 1.0 0.0 -it 06_coal 1 321 2030 1.0 0.0 -it 07_gas 1 321 2030 1.0 0.0 -it 08_non-res 1 321 2030 1.0 0.0 -it 09_hydro_pump 1 321 2030 0.0 0.0 -it 01_solar 1 322 2030 1.0 0.0 -it 02_wind_on 1 322 2030 1.0 0.0 -it 03_wind_off 1 322 2030 1.0 0.0 -it 04_res 1 322 2030 1.0 0.0 -it 05_nuclear 1 322 2030 1.0 0.0 -it 06_coal 1 322 2030 1.0 0.0 -it 07_gas 1 322 2030 1.0 0.0 -it 08_non-res 1 322 2030 1.0 0.0 -it 09_hydro_pump 1 322 2030 0.0 0.0 -it 01_solar 1 323 2030 1.0 0.0 -it 02_wind_on 1 323 2030 1.0 0.0 -it 03_wind_off 1 323 2030 1.0 0.0 -it 04_res 1 323 2030 1.0 0.0 -it 05_nuclear 1 323 2030 1.0 0.0 -it 06_coal 1 323 2030 1.0 0.0 -it 07_gas 1 323 2030 1.0 0.0 -it 08_non-res 1 323 2030 1.0 0.0 -it 09_hydro_pump 1 323 2030 0.0 0.0 -it 01_solar 1 324 2030 1.0 0.0 -it 02_wind_on 1 324 2030 1.0 0.0 -it 03_wind_off 1 324 2030 1.0 0.0 -it 04_res 1 324 2030 1.0 0.0 -it 05_nuclear 1 324 2030 1.0 0.0 -it 06_coal 1 324 2030 1.0 0.0 -it 07_gas 1 324 2030 1.0 0.0 -it 08_non-res 1 324 2030 1.0 0.0 -it 09_hydro_pump 1 324 2030 0.0 0.0 -it 01_solar 1 325 2030 1.0 0.0 -it 02_wind_on 1 325 2030 1.0 0.0 -it 03_wind_off 1 325 2030 1.0 0.0 -it 04_res 1 325 2030 1.0 0.0 -it 05_nuclear 1 325 2030 1.0 0.0 -it 06_coal 1 325 2030 1.0 0.0 -it 07_gas 1 325 2030 1.0 0.0 -it 08_non-res 1 325 2030 1.0 0.0 -it 09_hydro_pump 1 325 2030 0.0 0.0 -it 01_solar 1 326 2030 1.0 0.0 -it 02_wind_on 1 326 2030 1.0 0.0 -it 03_wind_off 1 326 2030 1.0 0.0 -it 04_res 1 326 2030 1.0 0.0 -it 05_nuclear 1 326 2030 1.0 0.0 -it 06_coal 1 326 2030 1.0 0.0 -it 07_gas 1 326 2030 1.0 0.0 -it 08_non-res 1 326 2030 1.0 0.0 -it 09_hydro_pump 1 326 2030 0.0 0.0 -it 01_solar 1 327 2030 1.0 0.0 -it 02_wind_on 1 327 2030 1.0 0.0 -it 03_wind_off 1 327 2030 1.0 0.0 -it 04_res 1 327 2030 1.0 0.0 -it 05_nuclear 1 327 2030 1.0 0.0 -it 06_coal 1 327 2030 1.0 0.0 -it 07_gas 1 327 2030 1.0 0.0 -it 08_non-res 1 327 2030 1.0 0.0 -it 09_hydro_pump 1 327 2030 0.0 0.0 -it 01_solar 1 328 2030 1.0 0.0 -it 02_wind_on 1 328 2030 1.0 0.0 -it 03_wind_off 1 328 2030 1.0 0.0 -it 04_res 1 328 2030 1.0 0.0 -it 05_nuclear 1 328 2030 1.0 0.0 -it 06_coal 1 328 2030 1.0 0.0 -it 07_gas 1 328 2030 1.0 0.0 -it 08_non-res 1 328 2030 1.0 0.0 -it 09_hydro_pump 1 328 2030 0.0 0.0 -it 01_solar 1 329 2030 1.0 0.0 -it 02_wind_on 1 329 2030 1.0 0.0 -it 03_wind_off 1 329 2030 1.0 0.0 -it 04_res 1 329 2030 1.0 0.0 -it 05_nuclear 1 329 2030 1.0 0.0 -it 06_coal 1 329 2030 1.0 0.0 -it 07_gas 1 329 2030 1.0 0.0 -it 08_non-res 1 329 2030 1.0 0.0 -it 09_hydro_pump 1 329 2030 0.0 0.0 -it 01_solar 1 330 2030 1.0 0.0 -it 02_wind_on 1 330 2030 1.0 0.0 -it 03_wind_off 1 330 2030 1.0 0.0 -it 04_res 1 330 2030 1.0 0.0 -it 05_nuclear 1 330 2030 1.0 0.0 -it 06_coal 1 330 2030 1.0 0.0 -it 07_gas 1 330 2030 1.0 0.0 -it 08_non-res 1 330 2030 1.0 0.0 -it 09_hydro_pump 1 330 2030 1.0 0.0 -it 01_solar 1 331 2030 1.0 0.0 -it 02_wind_on 1 331 2030 1.0 0.0 -it 03_wind_off 1 331 2030 1.0 0.0 -it 04_res 1 331 2030 1.0 0.0 -it 05_nuclear 1 331 2030 1.0 0.0 -it 06_coal 1 331 2030 1.0 0.0 -it 07_gas 1 331 2030 1.0 0.0 -it 08_non-res 1 331 2030 1.0 0.0 -it 09_hydro_pump 1 331 2030 1.0 0.0 -it 01_solar 1 332 2030 1.0 0.0 -it 02_wind_on 1 332 2030 1.0 0.0 -it 03_wind_off 1 332 2030 1.0 0.0 -it 04_res 1 332 2030 1.0 0.0 -it 05_nuclear 1 332 2030 1.0 0.0 -it 06_coal 1 332 2030 1.0 0.0 -it 07_gas 1 332 2030 1.0 0.0 -it 08_non-res 1 332 2030 1.0 0.0 -it 09_hydro_pump 1 332 2030 1.0 0.0 -it 01_solar 1 333 2030 1.0 0.0 -it 02_wind_on 1 333 2030 1.0 0.0 -it 03_wind_off 1 333 2030 1.0 0.0 -it 04_res 1 333 2030 1.0 0.0 -it 05_nuclear 1 333 2030 1.0 0.0 -it 06_coal 1 333 2030 1.0 0.0 -it 07_gas 1 333 2030 1.0 0.0 -it 08_non-res 1 333 2030 1.0 0.0 -it 09_hydro_pump 1 333 2030 1.0 0.0 -it 01_solar 1 334 2030 1.0 0.0 -it 02_wind_on 1 334 2030 1.0 0.0 -it 03_wind_off 1 334 2030 1.0 0.0 -it 04_res 1 334 2030 1.0 0.0 -it 05_nuclear 1 334 2030 1.0 0.0 -it 06_coal 1 334 2030 1.0 0.0 -it 07_gas 1 334 2030 1.0 0.0 -it 08_non-res 1 334 2030 1.0 0.0 -it 09_hydro_pump 1 334 2030 1.0 0.0 -it 01_solar 1 335 2030 1.0 0.0 -it 02_wind_on 1 335 2030 1.0 0.0 -it 03_wind_off 1 335 2030 1.0 0.0 -it 04_res 1 335 2030 1.0 0.0 -it 05_nuclear 1 335 2030 1.0 0.0 -it 06_coal 1 335 2030 1.0 0.0 -it 07_gas 1 335 2030 1.0 0.0 -it 08_non-res 1 335 2030 1.0 0.0 -it 09_hydro_pump 1 335 2030 1.0 0.0 -it 01_solar 1 336 2030 1.0 0.0 -it 02_wind_on 1 336 2030 1.0 0.0 -it 03_wind_off 1 336 2030 1.0 0.0 -it 04_res 1 336 2030 1.0 0.0 -it 05_nuclear 1 336 2030 1.0 0.0 -it 06_coal 1 336 2030 1.0 0.0 -it 07_gas 1 336 2030 1.0 0.0 -it 08_non-res 1 336 2030 1.0 0.0 -it 09_hydro_pump 1 336 2030 1.0 0.0 -de 01_solar 2 1 2030 0.0 0.0 -de 02_wind_on 2 1 2030 0.0 0.0 -de 03_wind_off 2 1 2030 0.0 0.0 -de 04_res 2 1 2030 0.0 0.0 -de 05_nuclear 2 1 2030 0.0 0.0 -de 06_coal 2 1 2030 0.0 0.0 -de 07_gas 2 1 2030 0.0 0.0 -de 08_non-res 2 1 2030 0.0 0.0 -de 09_hydro_pump 2 1 2030 0.0 0.0 -de 01_solar 2 2 2030 1.0 0.0 -de 02_wind_on 2 2 2030 0.0 0.0 -de 03_wind_off 2 2 2030 0.0 0.0 -de 04_res 2 2 2030 0.0 0.0 -de 05_nuclear 2 2 2030 0.0 0.0 -de 06_coal 2 2 2030 0.0 0.0 -de 07_gas 2 2 2030 0.0 0.0 -de 08_non-res 2 2 2030 0.0 0.0 -de 09_hydro_pump 2 2 2030 0.0 0.0 -de 01_solar 2 3 2030 1.0 0.0 -de 02_wind_on 2 3 2030 0.0 0.0 -de 03_wind_off 2 3 2030 0.0 0.0 -de 04_res 2 3 2030 0.0 0.0 -de 05_nuclear 2 3 2030 0.0 0.0 -de 06_coal 2 3 2030 0.0 0.0 -de 07_gas 2 3 2030 0.0 0.0 -de 08_non-res 2 3 2030 0.0 0.0 -de 09_hydro_pump 2 3 2030 0.0 0.0 -de 01_solar 2 4 2030 1.0 0.0 -de 02_wind_on 2 4 2030 0.0 0.0 -de 03_wind_off 2 4 2030 0.0 0.0 -de 04_res 2 4 2030 0.0 0.0 -de 05_nuclear 2 4 2030 0.0 0.0 -de 06_coal 2 4 2030 0.0 0.0 -de 07_gas 2 4 2030 0.0 0.0 -de 08_non-res 2 4 2030 0.0 0.0 -de 09_hydro_pump 2 4 2030 0.0 0.0 -de 01_solar 2 5 2030 1.0 0.0 -de 02_wind_on 2 5 2030 0.0 0.0 -de 03_wind_off 2 5 2030 0.0 0.0 -de 04_res 2 5 2030 0.0 0.0 -de 05_nuclear 2 5 2030 0.0 0.0 -de 06_coal 2 5 2030 0.0 0.0 -de 07_gas 2 5 2030 0.0 0.0 -de 08_non-res 2 5 2030 0.0 0.0 -de 09_hydro_pump 2 5 2030 0.0 0.0 -de 01_solar 2 6 2030 1.0 0.0 -de 02_wind_on 2 6 2030 0.0 0.0 -de 03_wind_off 2 6 2030 0.0 0.0 -de 04_res 2 6 2030 0.0 0.0 -de 05_nuclear 2 6 2030 0.0 0.0 -de 06_coal 2 6 2030 0.0 0.0 -de 07_gas 2 6 2030 0.0 0.0 -de 08_non-res 2 6 2030 0.0 0.0 -de 09_hydro_pump 2 6 2030 0.0 0.0 -de 01_solar 2 7 2030 1.0 0.0 -de 02_wind_on 2 7 2030 0.0 0.0 -de 03_wind_off 2 7 2030 0.0 0.0 -de 04_res 2 7 2030 0.0 0.0 -de 05_nuclear 2 7 2030 0.0 0.0 -de 06_coal 2 7 2030 0.0 0.0 -de 07_gas 2 7 2030 0.0 0.0 -de 08_non-res 2 7 2030 0.0 0.0 -de 09_hydro_pump 2 7 2030 0.0 0.0 -de 01_solar 2 8 2030 1.0 0.0 -de 02_wind_on 2 8 2030 0.0 0.0 -de 03_wind_off 2 8 2030 0.0 0.0 -de 04_res 2 8 2030 0.0 0.0 -de 05_nuclear 2 8 2030 0.0 0.0 -de 06_coal 2 8 2030 0.0 0.0 -de 07_gas 2 8 2030 0.0 0.0 -de 08_non-res 2 8 2030 0.0 0.0 -de 09_hydro_pump 2 8 2030 0.0 0.0 -de 01_solar 2 9 2030 1.0 0.0 -de 02_wind_on 2 9 2030 0.0 0.0 -de 03_wind_off 2 9 2030 0.0 0.0 -de 04_res 2 9 2030 0.0 0.0 -de 05_nuclear 2 9 2030 0.0 0.0 -de 06_coal 2 9 2030 0.0 0.0 -de 07_gas 2 9 2030 0.0 0.0 -de 08_non-res 2 9 2030 0.0 0.0 -de 09_hydro_pump 2 9 2030 0.0 0.0 -de 01_solar 2 10 2030 1.0 0.0 -de 02_wind_on 2 10 2030 0.0 0.0 -de 03_wind_off 2 10 2030 0.0 0.0 -de 04_res 2 10 2030 0.0 0.0 -de 05_nuclear 2 10 2030 0.0 0.0 -de 06_coal 2 10 2030 0.0 0.0 -de 07_gas 2 10 2030 0.0 0.0 -de 08_non-res 2 10 2030 0.0 0.0 -de 09_hydro_pump 2 10 2030 0.0 0.0 -de 01_solar 2 11 2030 1.0 0.0 -de 02_wind_on 2 11 2030 0.0 0.0 -de 03_wind_off 2 11 2030 0.0 0.0 -de 04_res 2 11 2030 0.0 0.0 -de 05_nuclear 2 11 2030 0.0 0.0 -de 06_coal 2 11 2030 0.0 0.0 -de 07_gas 2 11 2030 0.0 0.0 -de 08_non-res 2 11 2030 0.0 0.0 -de 09_hydro_pump 2 11 2030 0.0 0.0 -de 01_solar 2 12 2030 1.0 0.0 -de 02_wind_on 2 12 2030 0.0 0.0 -de 03_wind_off 2 12 2030 0.0 0.0 -de 04_res 2 12 2030 0.0 0.0 -de 05_nuclear 2 12 2030 0.0 0.0 -de 06_coal 2 12 2030 0.0 0.0 -de 07_gas 2 12 2030 0.0 0.0 -de 08_non-res 2 12 2030 0.0 0.0 -de 09_hydro_pump 2 12 2030 0.0 0.0 -de 01_solar 2 13 2030 1.0 0.0 -de 02_wind_on 2 13 2030 0.0 0.0 -de 03_wind_off 2 13 2030 0.0 0.0 -de 04_res 2 13 2030 0.0 0.0 -de 05_nuclear 2 13 2030 0.0 0.0 -de 06_coal 2 13 2030 0.0 0.0 -de 07_gas 2 13 2030 0.0 0.0 -de 08_non-res 2 13 2030 0.0 0.0 -de 09_hydro_pump 2 13 2030 0.0 0.0 -de 01_solar 2 14 2030 1.0 0.0 -de 02_wind_on 2 14 2030 0.0 0.0 -de 03_wind_off 2 14 2030 0.0 0.0 -de 04_res 2 14 2030 0.0 0.0 -de 05_nuclear 2 14 2030 0.0 0.0 -de 06_coal 2 14 2030 0.0 0.0 -de 07_gas 2 14 2030 0.0 0.0 -de 08_non-res 2 14 2030 0.0 0.0 -de 09_hydro_pump 2 14 2030 0.0 0.0 -de 01_solar 2 15 2030 1.0 0.0 -de 02_wind_on 2 15 2030 0.0 0.0 -de 03_wind_off 2 15 2030 0.0 0.0 -de 04_res 2 15 2030 0.0 0.0 -de 05_nuclear 2 15 2030 0.0 0.0 -de 06_coal 2 15 2030 0.0 0.0 -de 07_gas 2 15 2030 0.0 0.0 -de 08_non-res 2 15 2030 0.0 0.0 -de 09_hydro_pump 2 15 2030 0.0 0.0 -de 01_solar 2 16 2030 1.0 0.0 -de 02_wind_on 2 16 2030 0.0 0.0 -de 03_wind_off 2 16 2030 0.0 0.0 -de 04_res 2 16 2030 0.0 0.0 -de 05_nuclear 2 16 2030 0.0 0.0 -de 06_coal 2 16 2030 0.0 0.0 -de 07_gas 2 16 2030 0.0 0.0 -de 08_non-res 2 16 2030 0.0 0.0 -de 09_hydro_pump 2 16 2030 0.0 0.0 -de 01_solar 2 17 2030 1.0 0.0 -de 02_wind_on 2 17 2030 0.0 0.0 -de 03_wind_off 2 17 2030 0.0 0.0 -de 04_res 2 17 2030 0.0 0.0 -de 05_nuclear 2 17 2030 0.0 0.0 -de 06_coal 2 17 2030 0.0 0.0 -de 07_gas 2 17 2030 0.0 0.0 -de 08_non-res 2 17 2030 0.0 0.0 -de 09_hydro_pump 2 17 2030 0.0 0.0 -de 01_solar 2 18 2030 1.0 0.0 -de 02_wind_on 2 18 2030 0.0 0.0 -de 03_wind_off 2 18 2030 0.0 0.0 -de 04_res 2 18 2030 0.0 0.0 -de 05_nuclear 2 18 2030 0.0 0.0 -de 06_coal 2 18 2030 0.0 0.0 -de 07_gas 2 18 2030 0.0 0.0 -de 08_non-res 2 18 2030 0.0 0.0 -de 09_hydro_pump 2 18 2030 0.0 0.0 -de 01_solar 2 19 2030 1.0 0.0 -de 02_wind_on 2 19 2030 0.0 0.0 -de 03_wind_off 2 19 2030 0.0 0.0 -de 04_res 2 19 2030 0.0 0.0 -de 05_nuclear 2 19 2030 0.0 0.0 -de 06_coal 2 19 2030 0.0 0.0 -de 07_gas 2 19 2030 0.0 0.0 -de 08_non-res 2 19 2030 0.0 0.0 -de 09_hydro_pump 2 19 2030 0.0 0.0 -de 01_solar 2 20 2030 1.0 0.0 -de 02_wind_on 2 20 2030 0.0 0.0 -de 03_wind_off 2 20 2030 0.0 0.0 -de 04_res 2 20 2030 0.0 0.0 -de 05_nuclear 2 20 2030 0.0 0.0 -de 06_coal 2 20 2030 0.0 0.0 -de 07_gas 2 20 2030 0.0 0.0 -de 08_non-res 2 20 2030 0.0 0.0 -de 09_hydro_pump 2 20 2030 0.0 0.0 -de 01_solar 2 21 2030 1.0 0.0 -de 02_wind_on 2 21 2030 0.0 0.0 -de 03_wind_off 2 21 2030 0.0 0.0 -de 04_res 2 21 2030 0.0 0.0 -de 05_nuclear 2 21 2030 0.0 0.0 -de 06_coal 2 21 2030 0.0 0.0 -de 07_gas 2 21 2030 0.0 0.0 -de 08_non-res 2 21 2030 0.0 0.0 -de 09_hydro_pump 2 21 2030 0.0 0.0 -de 01_solar 2 22 2030 1.0 0.0 -de 02_wind_on 2 22 2030 1.0 0.0 -de 03_wind_off 2 22 2030 0.0 0.0 -de 04_res 2 22 2030 0.0 0.0 -de 05_nuclear 2 22 2030 0.0 0.0 -de 06_coal 2 22 2030 0.0 0.0 -de 07_gas 2 22 2030 0.0 0.0 -de 08_non-res 2 22 2030 0.0 0.0 -de 09_hydro_pump 2 22 2030 0.0 0.0 -de 01_solar 2 23 2030 1.0 0.0 -de 02_wind_on 2 23 2030 1.0 0.0 -de 03_wind_off 2 23 2030 0.0 0.0 -de 04_res 2 23 2030 0.0 0.0 -de 05_nuclear 2 23 2030 0.0 0.0 -de 06_coal 2 23 2030 0.0 0.0 -de 07_gas 2 23 2030 0.0 0.0 -de 08_non-res 2 23 2030 0.0 0.0 -de 09_hydro_pump 2 23 2030 0.0 0.0 -de 01_solar 2 24 2030 1.0 0.0 -de 02_wind_on 2 24 2030 1.0 0.0 -de 03_wind_off 2 24 2030 0.0 0.0 -de 04_res 2 24 2030 0.0 0.0 -de 05_nuclear 2 24 2030 0.0 0.0 -de 06_coal 2 24 2030 0.0 0.0 -de 07_gas 2 24 2030 0.0 0.0 -de 08_non-res 2 24 2030 0.0 0.0 -de 09_hydro_pump 2 24 2030 0.0 0.0 -de 01_solar 2 25 2030 1.0 0.0 -de 02_wind_on 2 25 2030 1.0 0.0 -de 03_wind_off 2 25 2030 0.0 0.0 -de 04_res 2 25 2030 0.0 0.0 -de 05_nuclear 2 25 2030 0.0 0.0 -de 06_coal 2 25 2030 0.0 0.0 -de 07_gas 2 25 2030 0.0 0.0 -de 08_non-res 2 25 2030 0.0 0.0 -de 09_hydro_pump 2 25 2030 0.0 0.0 -de 01_solar 2 26 2030 1.0 0.0 -de 02_wind_on 2 26 2030 1.0 0.0 -de 03_wind_off 2 26 2030 0.0 0.0 -de 04_res 2 26 2030 0.0 0.0 -de 05_nuclear 2 26 2030 0.0 0.0 -de 06_coal 2 26 2030 0.0 0.0 -de 07_gas 2 26 2030 0.0 0.0 -de 08_non-res 2 26 2030 0.0 0.0 -de 09_hydro_pump 2 26 2030 0.0 0.0 -de 01_solar 2 27 2030 1.0 0.0 -de 02_wind_on 2 27 2030 1.0 0.0 -de 03_wind_off 2 27 2030 0.0 0.0 -de 04_res 2 27 2030 0.0 0.0 -de 05_nuclear 2 27 2030 0.0 0.0 -de 06_coal 2 27 2030 0.0 0.0 -de 07_gas 2 27 2030 0.0 0.0 -de 08_non-res 2 27 2030 0.0 0.0 -de 09_hydro_pump 2 27 2030 0.0 0.0 -de 01_solar 2 28 2030 1.0 0.0 -de 02_wind_on 2 28 2030 1.0 0.0 -de 03_wind_off 2 28 2030 0.0 0.0 -de 04_res 2 28 2030 0.0 0.0 -de 05_nuclear 2 28 2030 0.0 0.0 -de 06_coal 2 28 2030 0.0 0.0 -de 07_gas 2 28 2030 0.0 0.0 -de 08_non-res 2 28 2030 0.0 0.0 -de 09_hydro_pump 2 28 2030 0.0 0.0 -de 01_solar 2 29 2030 1.0 0.0 -de 02_wind_on 2 29 2030 1.0 0.0 -de 03_wind_off 2 29 2030 0.0 0.0 -de 04_res 2 29 2030 0.0 0.0 -de 05_nuclear 2 29 2030 0.0 0.0 -de 06_coal 2 29 2030 0.0 0.0 -de 07_gas 2 29 2030 0.0 0.0 -de 08_non-res 2 29 2030 0.0 0.0 -de 09_hydro_pump 2 29 2030 0.0 0.0 -de 01_solar 2 30 2030 1.0 0.0 -de 02_wind_on 2 30 2030 1.0 0.0 -de 03_wind_off 2 30 2030 0.0 0.0 -de 04_res 2 30 2030 0.0 0.0 -de 05_nuclear 2 30 2030 0.0 0.0 -de 06_coal 2 30 2030 0.0 0.0 -de 07_gas 2 30 2030 0.0 0.0 -de 08_non-res 2 30 2030 0.0 0.0 -de 09_hydro_pump 2 30 2030 0.0 0.0 -de 01_solar 2 31 2030 1.0 0.0 -de 02_wind_on 2 31 2030 1.0 0.0 -de 03_wind_off 2 31 2030 0.0 0.0 -de 04_res 2 31 2030 0.0 0.0 -de 05_nuclear 2 31 2030 0.0 0.0 -de 06_coal 2 31 2030 0.0 0.0 -de 07_gas 2 31 2030 0.0 0.0 -de 08_non-res 2 31 2030 0.0 0.0 -de 09_hydro_pump 2 31 2030 0.0 0.0 -de 01_solar 2 32 2030 1.0 0.0 -de 02_wind_on 2 32 2030 1.0 0.0 -de 03_wind_off 2 32 2030 0.0 0.0 -de 04_res 2 32 2030 0.0 0.0 -de 05_nuclear 2 32 2030 0.0 0.0 -de 06_coal 2 32 2030 0.0 0.0 -de 07_gas 2 32 2030 0.0 0.0 -de 08_non-res 2 32 2030 0.0 0.0 -de 09_hydro_pump 2 32 2030 0.0 0.0 -de 01_solar 2 33 2030 1.0 0.0 -de 02_wind_on 2 33 2030 1.0 0.0 -de 03_wind_off 2 33 2030 0.0 0.0 -de 04_res 2 33 2030 0.0 0.0 -de 05_nuclear 2 33 2030 0.0 0.0 -de 06_coal 2 33 2030 0.0 0.0 -de 07_gas 2 33 2030 0.0 0.0 -de 08_non-res 2 33 2030 0.0 0.0 -de 09_hydro_pump 2 33 2030 0.0 0.0 -de 01_solar 2 34 2030 1.0 0.0 -de 02_wind_on 2 34 2030 1.0 0.0 -de 03_wind_off 2 34 2030 0.0 0.0 -de 04_res 2 34 2030 0.0 0.0 -de 05_nuclear 2 34 2030 0.0 0.0 -de 06_coal 2 34 2030 0.0 0.0 -de 07_gas 2 34 2030 0.0 0.0 -de 08_non-res 2 34 2030 0.0 0.0 -de 09_hydro_pump 2 34 2030 0.0 0.0 -de 01_solar 2 35 2030 1.0 0.0 -de 02_wind_on 2 35 2030 1.0 0.0 -de 03_wind_off 2 35 2030 0.0 0.0 -de 04_res 2 35 2030 0.0 0.0 -de 05_nuclear 2 35 2030 0.0 0.0 -de 06_coal 2 35 2030 0.0 0.0 -de 07_gas 2 35 2030 0.0 0.0 -de 08_non-res 2 35 2030 0.0 0.0 -de 09_hydro_pump 2 35 2030 0.0 0.0 -de 01_solar 2 36 2030 1.0 0.0 -de 02_wind_on 2 36 2030 1.0 0.0 -de 03_wind_off 2 36 2030 0.0 0.0 -de 04_res 2 36 2030 0.0 0.0 -de 05_nuclear 2 36 2030 0.0 0.0 -de 06_coal 2 36 2030 0.0 0.0 -de 07_gas 2 36 2030 0.0 0.0 -de 08_non-res 2 36 2030 0.0 0.0 -de 09_hydro_pump 2 36 2030 0.0 0.0 -de 01_solar 2 37 2030 1.0 0.0 -de 02_wind_on 2 37 2030 1.0 0.0 -de 03_wind_off 2 37 2030 0.0 0.0 -de 04_res 2 37 2030 0.0 0.0 -de 05_nuclear 2 37 2030 0.0 0.0 -de 06_coal 2 37 2030 0.0 0.0 -de 07_gas 2 37 2030 0.0 0.0 -de 08_non-res 2 37 2030 0.0 0.0 -de 09_hydro_pump 2 37 2030 0.0 0.0 -de 01_solar 2 38 2030 1.0 0.0 -de 02_wind_on 2 38 2030 1.0 0.0 -de 03_wind_off 2 38 2030 0.0 0.0 -de 04_res 2 38 2030 0.0 0.0 -de 05_nuclear 2 38 2030 0.0 0.0 -de 06_coal 2 38 2030 0.0 0.0 -de 07_gas 2 38 2030 0.0 0.0 -de 08_non-res 2 38 2030 0.0 0.0 -de 09_hydro_pump 2 38 2030 0.0 0.0 -de 01_solar 2 39 2030 1.0 0.0 -de 02_wind_on 2 39 2030 1.0 0.0 -de 03_wind_off 2 39 2030 0.0 0.0 -de 04_res 2 39 2030 0.0 0.0 -de 05_nuclear 2 39 2030 0.0 0.0 -de 06_coal 2 39 2030 0.0 0.0 -de 07_gas 2 39 2030 0.0 0.0 -de 08_non-res 2 39 2030 0.0 0.0 -de 09_hydro_pump 2 39 2030 0.0 0.0 -de 01_solar 2 40 2030 1.0 0.0 -de 02_wind_on 2 40 2030 1.0 0.0 -de 03_wind_off 2 40 2030 0.0 0.0 -de 04_res 2 40 2030 0.0 0.0 -de 05_nuclear 2 40 2030 0.0 0.0 -de 06_coal 2 40 2030 0.0 0.0 -de 07_gas 2 40 2030 0.0 0.0 -de 08_non-res 2 40 2030 0.0 0.0 -de 09_hydro_pump 2 40 2030 0.0 0.0 -de 01_solar 2 41 2030 1.0 0.0 -de 02_wind_on 2 41 2030 1.0 0.0 -de 03_wind_off 2 41 2030 0.0 0.0 -de 04_res 2 41 2030 0.0 0.0 -de 05_nuclear 2 41 2030 0.0 0.0 -de 06_coal 2 41 2030 0.0 0.0 -de 07_gas 2 41 2030 0.0 0.0 -de 08_non-res 2 41 2030 0.0 0.0 -de 09_hydro_pump 2 41 2030 0.0 0.0 -de 01_solar 2 42 2030 1.0 0.0 -de 02_wind_on 2 42 2030 1.0 0.0 -de 03_wind_off 2 42 2030 1.0 0.0 -de 04_res 2 42 2030 0.0 0.0 -de 05_nuclear 2 42 2030 0.0 0.0 -de 06_coal 2 42 2030 0.0 0.0 -de 07_gas 2 42 2030 0.0 0.0 -de 08_non-res 2 42 2030 0.0 0.0 -de 09_hydro_pump 2 42 2030 0.0 0.0 -de 01_solar 2 43 2030 1.0 0.0 -de 02_wind_on 2 43 2030 1.0 0.0 -de 03_wind_off 2 43 2030 1.0 0.0 -de 04_res 2 43 2030 0.0 0.0 -de 05_nuclear 2 43 2030 0.0 0.0 -de 06_coal 2 43 2030 0.0 0.0 -de 07_gas 2 43 2030 0.0 0.0 -de 08_non-res 2 43 2030 0.0 0.0 -de 09_hydro_pump 2 43 2030 0.0 0.0 -de 01_solar 2 44 2030 1.0 0.0 -de 02_wind_on 2 44 2030 1.0 0.0 -de 03_wind_off 2 44 2030 1.0 0.0 -de 04_res 2 44 2030 0.0 0.0 -de 05_nuclear 2 44 2030 0.0 0.0 -de 06_coal 2 44 2030 0.0 0.0 -de 07_gas 2 44 2030 0.0 0.0 -de 08_non-res 2 44 2030 0.0 0.0 -de 09_hydro_pump 2 44 2030 0.0 0.0 -de 01_solar 2 45 2030 1.0 0.0 -de 02_wind_on 2 45 2030 1.0 0.0 -de 03_wind_off 2 45 2030 1.0 0.0 -de 04_res 2 45 2030 0.0 0.0 -de 05_nuclear 2 45 2030 0.0 0.0 -de 06_coal 2 45 2030 0.0 0.0 -de 07_gas 2 45 2030 0.0 0.0 -de 08_non-res 2 45 2030 0.0 0.0 -de 09_hydro_pump 2 45 2030 0.0 0.0 -de 01_solar 2 46 2030 1.0 0.0 -de 02_wind_on 2 46 2030 1.0 0.0 -de 03_wind_off 2 46 2030 1.0 0.0 -de 04_res 2 46 2030 0.0 0.0 -de 05_nuclear 2 46 2030 0.0 0.0 -de 06_coal 2 46 2030 0.0 0.0 -de 07_gas 2 46 2030 0.0 0.0 -de 08_non-res 2 46 2030 0.0 0.0 -de 09_hydro_pump 2 46 2030 0.0 0.0 -de 01_solar 2 47 2030 1.0 0.0 -de 02_wind_on 2 47 2030 1.0 0.0 -de 03_wind_off 2 47 2030 1.0 0.0 -de 04_res 2 47 2030 0.0 0.0 -de 05_nuclear 2 47 2030 0.0 0.0 -de 06_coal 2 47 2030 0.0 0.0 -de 07_gas 2 47 2030 0.0 0.0 -de 08_non-res 2 47 2030 0.0 0.0 -de 09_hydro_pump 2 47 2030 0.0 0.0 -de 01_solar 2 48 2030 1.0 0.0 -de 02_wind_on 2 48 2030 1.0 0.0 -de 03_wind_off 2 48 2030 1.0 0.0 -de 04_res 2 48 2030 0.0 0.0 -de 05_nuclear 2 48 2030 0.0 0.0 -de 06_coal 2 48 2030 0.0 0.0 -de 07_gas 2 48 2030 0.0 0.0 -de 08_non-res 2 48 2030 0.0 0.0 -de 09_hydro_pump 2 48 2030 0.0 0.0 -de 01_solar 2 49 2030 1.0 0.0 -de 02_wind_on 2 49 2030 1.0 0.0 -de 03_wind_off 2 49 2030 1.0 0.0 -de 04_res 2 49 2030 0.0 0.0 -de 05_nuclear 2 49 2030 0.0 0.0 -de 06_coal 2 49 2030 0.0 0.0 -de 07_gas 2 49 2030 0.0 0.0 -de 08_non-res 2 49 2030 0.0 0.0 -de 09_hydro_pump 2 49 2030 0.0 0.0 -de 01_solar 2 50 2030 1.0 0.0 -de 02_wind_on 2 50 2030 1.0 0.0 -de 03_wind_off 2 50 2030 1.0 0.0 -de 04_res 2 50 2030 0.0 0.0 -de 05_nuclear 2 50 2030 0.0 0.0 -de 06_coal 2 50 2030 0.0 0.0 -de 07_gas 2 50 2030 0.0 0.0 -de 08_non-res 2 50 2030 0.0 0.0 -de 09_hydro_pump 2 50 2030 0.0 0.0 -de 01_solar 2 51 2030 1.0 0.0 -de 02_wind_on 2 51 2030 1.0 0.0 -de 03_wind_off 2 51 2030 1.0 0.0 -de 04_res 2 51 2030 0.0 0.0 -de 05_nuclear 2 51 2030 0.0 0.0 -de 06_coal 2 51 2030 0.0 0.0 -de 07_gas 2 51 2030 0.0 0.0 -de 08_non-res 2 51 2030 0.0 0.0 -de 09_hydro_pump 2 51 2030 0.0 0.0 -de 01_solar 2 52 2030 1.0 0.0 -de 02_wind_on 2 52 2030 1.0 0.0 -de 03_wind_off 2 52 2030 1.0 0.0 -de 04_res 2 52 2030 0.0 0.0 -de 05_nuclear 2 52 2030 0.0 0.0 -de 06_coal 2 52 2030 0.0 0.0 -de 07_gas 2 52 2030 0.0 0.0 -de 08_non-res 2 52 2030 0.0 0.0 -de 09_hydro_pump 2 52 2030 0.0 0.0 -de 01_solar 2 53 2030 1.0 0.0 -de 02_wind_on 2 53 2030 1.0 0.0 -de 03_wind_off 2 53 2030 1.0 0.0 -de 04_res 2 53 2030 0.0 0.0 -de 05_nuclear 2 53 2030 0.0 0.0 -de 06_coal 2 53 2030 0.0 0.0 -de 07_gas 2 53 2030 0.0 0.0 -de 08_non-res 2 53 2030 0.0 0.0 -de 09_hydro_pump 2 53 2030 0.0 0.0 -de 01_solar 2 54 2030 1.0 0.0 -de 02_wind_on 2 54 2030 1.0 0.0 -de 03_wind_off 2 54 2030 1.0 0.0 -de 04_res 2 54 2030 0.0 0.0 -de 05_nuclear 2 54 2030 0.0 0.0 -de 06_coal 2 54 2030 0.0 0.0 -de 07_gas 2 54 2030 0.0 0.0 -de 08_non-res 2 54 2030 0.0 0.0 -de 09_hydro_pump 2 54 2030 0.0 0.0 -de 01_solar 2 55 2030 1.0 0.0 -de 02_wind_on 2 55 2030 1.0 0.0 -de 03_wind_off 2 55 2030 1.0 0.0 -de 04_res 2 55 2030 0.0 0.0 -de 05_nuclear 2 55 2030 0.0 0.0 -de 06_coal 2 55 2030 0.0 0.0 -de 07_gas 2 55 2030 0.0 0.0 -de 08_non-res 2 55 2030 0.0 0.0 -de 09_hydro_pump 2 55 2030 0.0 0.0 -de 01_solar 2 56 2030 1.0 0.0 -de 02_wind_on 2 56 2030 1.0 0.0 -de 03_wind_off 2 56 2030 1.0 0.0 -de 04_res 2 56 2030 0.0 0.0 -de 05_nuclear 2 56 2030 0.0 0.0 -de 06_coal 2 56 2030 0.0 0.0 -de 07_gas 2 56 2030 0.0 0.0 -de 08_non-res 2 56 2030 0.0 0.0 -de 09_hydro_pump 2 56 2030 0.0 0.0 -de 01_solar 2 57 2030 1.0 0.0 -de 02_wind_on 2 57 2030 1.0 0.0 -de 03_wind_off 2 57 2030 1.0 0.0 -de 04_res 2 57 2030 0.0 0.0 -de 05_nuclear 2 57 2030 0.0 0.0 -de 06_coal 2 57 2030 0.0 0.0 -de 07_gas 2 57 2030 0.0 0.0 -de 08_non-res 2 57 2030 0.0 0.0 -de 09_hydro_pump 2 57 2030 0.0 0.0 -de 01_solar 2 58 2030 1.0 0.0 -de 02_wind_on 2 58 2030 1.0 0.0 -de 03_wind_off 2 58 2030 1.0 0.0 -de 04_res 2 58 2030 0.0 0.0 -de 05_nuclear 2 58 2030 0.0 0.0 -de 06_coal 2 58 2030 0.0 0.0 -de 07_gas 2 58 2030 0.0 0.0 -de 08_non-res 2 58 2030 0.0 0.0 -de 09_hydro_pump 2 58 2030 0.0 0.0 -de 01_solar 2 59 2030 1.0 0.0 -de 02_wind_on 2 59 2030 1.0 0.0 -de 03_wind_off 2 59 2030 1.0 0.0 -de 04_res 2 59 2030 0.0 0.0 -de 05_nuclear 2 59 2030 0.0 0.0 -de 06_coal 2 59 2030 0.0 0.0 -de 07_gas 2 59 2030 0.0 0.0 -de 08_non-res 2 59 2030 0.0 0.0 -de 09_hydro_pump 2 59 2030 0.0 0.0 -de 01_solar 2 60 2030 1.0 0.0 -de 02_wind_on 2 60 2030 1.0 0.0 -de 03_wind_off 2 60 2030 1.0 0.0 -de 04_res 2 60 2030 0.0 0.0 -de 05_nuclear 2 60 2030 0.0 0.0 -de 06_coal 2 60 2030 0.0 0.0 -de 07_gas 2 60 2030 0.0 0.0 -de 08_non-res 2 60 2030 0.0 0.0 -de 09_hydro_pump 2 60 2030 0.0 0.0 -de 01_solar 2 61 2030 1.0 0.0 -de 02_wind_on 2 61 2030 1.0 0.0 -de 03_wind_off 2 61 2030 1.0 0.0 -de 04_res 2 61 2030 0.0 0.0 -de 05_nuclear 2 61 2030 0.0 0.0 -de 06_coal 2 61 2030 0.0 0.0 -de 07_gas 2 61 2030 0.0 0.0 -de 08_non-res 2 61 2030 0.0 0.0 -de 09_hydro_pump 2 61 2030 0.0 0.0 -de 01_solar 2 62 2030 1.0 0.0 -de 02_wind_on 2 62 2030 1.0 0.0 -de 03_wind_off 2 62 2030 1.0 0.0 -de 04_res 2 62 2030 1.0 0.0 -de 05_nuclear 2 62 2030 0.0 0.0 -de 06_coal 2 62 2030 0.0 0.0 -de 07_gas 2 62 2030 0.0 0.0 -de 08_non-res 2 62 2030 0.0 0.0 -de 09_hydro_pump 2 62 2030 0.0 0.0 -de 01_solar 2 63 2030 1.0 0.0 -de 02_wind_on 2 63 2030 1.0 0.0 -de 03_wind_off 2 63 2030 1.0 0.0 -de 04_res 2 63 2030 1.0 0.0 -de 05_nuclear 2 63 2030 0.0 0.0 -de 06_coal 2 63 2030 0.0 0.0 -de 07_gas 2 63 2030 0.0 0.0 -de 08_non-res 2 63 2030 0.0 0.0 -de 09_hydro_pump 2 63 2030 0.0 0.0 -de 01_solar 2 64 2030 1.0 0.0 -de 02_wind_on 2 64 2030 1.0 0.0 -de 03_wind_off 2 64 2030 1.0 0.0 -de 04_res 2 64 2030 1.0 0.0 -de 05_nuclear 2 64 2030 0.0 0.0 -de 06_coal 2 64 2030 0.0 0.0 -de 07_gas 2 64 2030 0.0 0.0 -de 08_non-res 2 64 2030 0.0 0.0 -de 09_hydro_pump 2 64 2030 0.0 0.0 -de 01_solar 2 65 2030 1.0 0.0 -de 02_wind_on 2 65 2030 1.0 0.0 -de 03_wind_off 2 65 2030 1.0 0.0 -de 04_res 2 65 2030 1.0 0.0 -de 05_nuclear 2 65 2030 0.0 0.0 -de 06_coal 2 65 2030 0.0 0.0 -de 07_gas 2 65 2030 0.0 0.0 -de 08_non-res 2 65 2030 0.0 0.0 -de 09_hydro_pump 2 65 2030 0.0 0.0 -de 01_solar 2 66 2030 1.0 0.0 -de 02_wind_on 2 66 2030 1.0 0.0 -de 03_wind_off 2 66 2030 1.0 0.0 -de 04_res 2 66 2030 1.0 0.0 -de 05_nuclear 2 66 2030 0.0 0.0 -de 06_coal 2 66 2030 0.0 0.0 -de 07_gas 2 66 2030 0.0 0.0 -de 08_non-res 2 66 2030 0.0 0.0 -de 09_hydro_pump 2 66 2030 0.0 0.0 -de 01_solar 2 67 2030 1.0 0.0 -de 02_wind_on 2 67 2030 1.0 0.0 -de 03_wind_off 2 67 2030 1.0 0.0 -de 04_res 2 67 2030 1.0 0.0 -de 05_nuclear 2 67 2030 0.0 0.0 -de 06_coal 2 67 2030 0.0 0.0 -de 07_gas 2 67 2030 0.0 0.0 -de 08_non-res 2 67 2030 0.0 0.0 -de 09_hydro_pump 2 67 2030 0.0 0.0 -de 01_solar 2 68 2030 1.0 0.0 -de 02_wind_on 2 68 2030 1.0 0.0 -de 03_wind_off 2 68 2030 1.0 0.0 -de 04_res 2 68 2030 1.0 0.0 -de 05_nuclear 2 68 2030 0.0 0.0 -de 06_coal 2 68 2030 0.0 0.0 -de 07_gas 2 68 2030 0.0 0.0 -de 08_non-res 2 68 2030 0.0 0.0 -de 09_hydro_pump 2 68 2030 0.0 0.0 -de 01_solar 2 69 2030 1.0 0.0 -de 02_wind_on 2 69 2030 1.0 0.0 -de 03_wind_off 2 69 2030 1.0 0.0 -de 04_res 2 69 2030 1.0 0.0 -de 05_nuclear 2 69 2030 0.0 0.0 -de 06_coal 2 69 2030 0.0 0.0 -de 07_gas 2 69 2030 0.0 0.0 -de 08_non-res 2 69 2030 0.0 0.0 -de 09_hydro_pump 2 69 2030 0.0 0.0 -de 01_solar 2 70 2030 1.0 0.0 -de 02_wind_on 2 70 2030 1.0 0.0 -de 03_wind_off 2 70 2030 1.0 0.0 -de 04_res 2 70 2030 1.0 0.0 -de 05_nuclear 2 70 2030 0.0 0.0 -de 06_coal 2 70 2030 0.0 0.0 -de 07_gas 2 70 2030 0.0 0.0 -de 08_non-res 2 70 2030 0.0 0.0 -de 09_hydro_pump 2 70 2030 0.0 0.0 -de 01_solar 2 71 2030 1.0 0.0 -de 02_wind_on 2 71 2030 1.0 0.0 -de 03_wind_off 2 71 2030 1.0 0.0 -de 04_res 2 71 2030 1.0 0.0 -de 05_nuclear 2 71 2030 0.0 0.0 -de 06_coal 2 71 2030 0.0 0.0 -de 07_gas 2 71 2030 0.0 0.0 -de 08_non-res 2 71 2030 0.0 0.0 -de 09_hydro_pump 2 71 2030 0.0 0.0 -de 01_solar 2 72 2030 1.0 0.0 -de 02_wind_on 2 72 2030 1.0 0.0 -de 03_wind_off 2 72 2030 1.0 0.0 -de 04_res 2 72 2030 1.0 0.0 -de 05_nuclear 2 72 2030 0.0 0.0 -de 06_coal 2 72 2030 0.0 0.0 -de 07_gas 2 72 2030 0.0 0.0 -de 08_non-res 2 72 2030 0.0 0.0 -de 09_hydro_pump 2 72 2030 0.0 0.0 -de 01_solar 2 73 2030 1.0 0.0 -de 02_wind_on 2 73 2030 1.0 0.0 -de 03_wind_off 2 73 2030 1.0 0.0 -de 04_res 2 73 2030 1.0 0.0 -de 05_nuclear 2 73 2030 0.0 0.0 -de 06_coal 2 73 2030 0.0 0.0 -de 07_gas 2 73 2030 0.0 0.0 -de 08_non-res 2 73 2030 0.0 0.0 -de 09_hydro_pump 2 73 2030 0.0 0.0 -de 01_solar 2 74 2030 1.0 0.0 -de 02_wind_on 2 74 2030 1.0 0.0 -de 03_wind_off 2 74 2030 1.0 0.0 -de 04_res 2 74 2030 1.0 0.0 -de 05_nuclear 2 74 2030 0.0 0.0 -de 06_coal 2 74 2030 0.0 0.0 -de 07_gas 2 74 2030 0.0 0.0 -de 08_non-res 2 74 2030 0.0 0.0 -de 09_hydro_pump 2 74 2030 0.0 0.0 -de 01_solar 2 75 2030 1.0 0.0 -de 02_wind_on 2 75 2030 1.0 0.0 -de 03_wind_off 2 75 2030 1.0 0.0 -de 04_res 2 75 2030 1.0 0.0 -de 05_nuclear 2 75 2030 0.0 0.0 -de 06_coal 2 75 2030 0.0 0.0 -de 07_gas 2 75 2030 0.0 0.0 -de 08_non-res 2 75 2030 0.0 0.0 -de 09_hydro_pump 2 75 2030 0.0 0.0 -de 01_solar 2 76 2030 1.0 0.0 -de 02_wind_on 2 76 2030 1.0 0.0 -de 03_wind_off 2 76 2030 1.0 0.0 -de 04_res 2 76 2030 1.0 0.0 -de 05_nuclear 2 76 2030 0.0 0.0 -de 06_coal 2 76 2030 0.0 0.0 -de 07_gas 2 76 2030 0.0 0.0 -de 08_non-res 2 76 2030 0.0 0.0 -de 09_hydro_pump 2 76 2030 0.0 0.0 -de 01_solar 2 77 2030 1.0 0.0 -de 02_wind_on 2 77 2030 1.0 0.0 -de 03_wind_off 2 77 2030 1.0 0.0 -de 04_res 2 77 2030 1.0 0.0 -de 05_nuclear 2 77 2030 0.0 0.0 -de 06_coal 2 77 2030 0.0 0.0 -de 07_gas 2 77 2030 0.0 0.0 -de 08_non-res 2 77 2030 0.0 0.0 -de 09_hydro_pump 2 77 2030 0.0 0.0 -de 01_solar 2 78 2030 1.0 0.0 -de 02_wind_on 2 78 2030 1.0 0.0 -de 03_wind_off 2 78 2030 1.0 0.0 -de 04_res 2 78 2030 1.0 0.0 -de 05_nuclear 2 78 2030 0.0 0.0 -de 06_coal 2 78 2030 0.0 0.0 -de 07_gas 2 78 2030 0.0 0.0 -de 08_non-res 2 78 2030 0.0 0.0 -de 09_hydro_pump 2 78 2030 0.0 0.0 -de 01_solar 2 79 2030 1.0 0.0 -de 02_wind_on 2 79 2030 1.0 0.0 -de 03_wind_off 2 79 2030 1.0 0.0 -de 04_res 2 79 2030 1.0 0.0 -de 05_nuclear 2 79 2030 0.0 0.0 -de 06_coal 2 79 2030 0.0 0.0 -de 07_gas 2 79 2030 0.0 0.0 -de 08_non-res 2 79 2030 0.0 0.0 -de 09_hydro_pump 2 79 2030 0.0 0.0 -de 01_solar 2 80 2030 1.0 0.0 -de 02_wind_on 2 80 2030 1.0 0.0 -de 03_wind_off 2 80 2030 1.0 0.0 -de 04_res 2 80 2030 1.0 0.0 -de 05_nuclear 2 80 2030 0.0 0.0 -de 06_coal 2 80 2030 0.0 0.0 -de 07_gas 2 80 2030 0.0 0.0 -de 08_non-res 2 80 2030 0.0 0.0 -de 09_hydro_pump 2 80 2030 0.0 0.0 -de 01_solar 2 81 2030 1.0 0.0 -de 02_wind_on 2 81 2030 1.0 0.0 -de 03_wind_off 2 81 2030 1.0 0.0 -de 04_res 2 81 2030 1.0 0.0 -de 05_nuclear 2 81 2030 0.0 0.0 -de 06_coal 2 81 2030 0.0 0.0 -de 07_gas 2 81 2030 0.0 0.0 -de 08_non-res 2 81 2030 0.0 0.0 -de 09_hydro_pump 2 81 2030 0.0 0.0 -de 01_solar 2 82 2030 1.0 0.0 -de 02_wind_on 2 82 2030 1.0 0.0 -de 03_wind_off 2 82 2030 1.0 0.0 -de 04_res 2 82 2030 1.0 0.0 -de 05_nuclear 2 82 2030 1.0 0.0 -de 06_coal 2 82 2030 0.0 0.0 -de 07_gas 2 82 2030 0.0 0.0 -de 08_non-res 2 82 2030 0.0 0.0 -de 09_hydro_pump 2 82 2030 0.0 0.0 -de 01_solar 2 83 2030 1.0 0.0 -de 02_wind_on 2 83 2030 1.0 0.0 -de 03_wind_off 2 83 2030 1.0 0.0 -de 04_res 2 83 2030 1.0 0.0 -de 05_nuclear 2 83 2030 1.0 0.0 -de 06_coal 2 83 2030 0.0 0.0 -de 07_gas 2 83 2030 0.0 0.0 -de 08_non-res 2 83 2030 0.0 0.0 -de 09_hydro_pump 2 83 2030 0.0 0.0 -de 01_solar 2 84 2030 1.0 0.0 -de 02_wind_on 2 84 2030 1.0 0.0 -de 03_wind_off 2 84 2030 1.0 0.0 -de 04_res 2 84 2030 1.0 0.0 -de 05_nuclear 2 84 2030 1.0 0.0 -de 06_coal 2 84 2030 0.0 0.0 -de 07_gas 2 84 2030 0.0 0.0 -de 08_non-res 2 84 2030 0.0 0.0 -de 09_hydro_pump 2 84 2030 0.0 0.0 -de 01_solar 2 85 2030 1.0 0.0 -de 02_wind_on 2 85 2030 1.0 0.0 -de 03_wind_off 2 85 2030 1.0 0.0 -de 04_res 2 85 2030 1.0 0.0 -de 05_nuclear 2 85 2030 1.0 0.0 -de 06_coal 2 85 2030 0.0 0.0 -de 07_gas 2 85 2030 0.0 0.0 -de 08_non-res 2 85 2030 0.0 0.0 -de 09_hydro_pump 2 85 2030 0.0 0.0 -de 01_solar 2 86 2030 1.0 0.0 -de 02_wind_on 2 86 2030 1.0 0.0 -de 03_wind_off 2 86 2030 1.0 0.0 -de 04_res 2 86 2030 1.0 0.0 -de 05_nuclear 2 86 2030 1.0 0.0 -de 06_coal 2 86 2030 0.0 0.0 -de 07_gas 2 86 2030 0.0 0.0 -de 08_non-res 2 86 2030 0.0 0.0 -de 09_hydro_pump 2 86 2030 0.0 0.0 -de 01_solar 2 87 2030 1.0 0.0 -de 02_wind_on 2 87 2030 1.0 0.0 -de 03_wind_off 2 87 2030 1.0 0.0 -de 04_res 2 87 2030 1.0 0.0 -de 05_nuclear 2 87 2030 1.0 0.0 -de 06_coal 2 87 2030 0.0 0.0 -de 07_gas 2 87 2030 0.0 0.0 -de 08_non-res 2 87 2030 0.0 0.0 -de 09_hydro_pump 2 87 2030 0.0 0.0 -de 01_solar 2 88 2030 1.0 0.0 -de 02_wind_on 2 88 2030 1.0 0.0 -de 03_wind_off 2 88 2030 1.0 0.0 -de 04_res 2 88 2030 1.0 0.0 -de 05_nuclear 2 88 2030 1.0 0.0 -de 06_coal 2 88 2030 0.0 0.0 -de 07_gas 2 88 2030 0.0 0.0 -de 08_non-res 2 88 2030 0.0 0.0 -de 09_hydro_pump 2 88 2030 0.0 0.0 -de 01_solar 2 89 2030 1.0 0.0 -de 02_wind_on 2 89 2030 1.0 0.0 -de 03_wind_off 2 89 2030 1.0 0.0 -de 04_res 2 89 2030 1.0 0.0 -de 05_nuclear 2 89 2030 1.0 0.0 -de 06_coal 2 89 2030 0.0 0.0 -de 07_gas 2 89 2030 0.0 0.0 -de 08_non-res 2 89 2030 0.0 0.0 -de 09_hydro_pump 2 89 2030 0.0 0.0 -de 01_solar 2 90 2030 1.0 0.0 -de 02_wind_on 2 90 2030 1.0 0.0 -de 03_wind_off 2 90 2030 1.0 0.0 -de 04_res 2 90 2030 1.0 0.0 -de 05_nuclear 2 90 2030 1.0 0.0 -de 06_coal 2 90 2030 0.0 0.0 -de 07_gas 2 90 2030 0.0 0.0 -de 08_non-res 2 90 2030 0.0 0.0 -de 09_hydro_pump 2 90 2030 0.0 0.0 -de 01_solar 2 91 2030 1.0 0.0 -de 02_wind_on 2 91 2030 1.0 0.0 -de 03_wind_off 2 91 2030 1.0 0.0 -de 04_res 2 91 2030 1.0 0.0 -de 05_nuclear 2 91 2030 1.0 0.0 -de 06_coal 2 91 2030 0.0 0.0 -de 07_gas 2 91 2030 0.0 0.0 -de 08_non-res 2 91 2030 0.0 0.0 -de 09_hydro_pump 2 91 2030 0.0 0.0 -de 01_solar 2 92 2030 1.0 0.0 -de 02_wind_on 2 92 2030 1.0 0.0 -de 03_wind_off 2 92 2030 1.0 0.0 -de 04_res 2 92 2030 1.0 0.0 -de 05_nuclear 2 92 2030 1.0 0.0 -de 06_coal 2 92 2030 0.0 0.0 -de 07_gas 2 92 2030 0.0 0.0 -de 08_non-res 2 92 2030 0.0 0.0 -de 09_hydro_pump 2 92 2030 0.0 0.0 -de 01_solar 2 93 2030 1.0 0.0 -de 02_wind_on 2 93 2030 1.0 0.0 -de 03_wind_off 2 93 2030 1.0 0.0 -de 04_res 2 93 2030 1.0 0.0 -de 05_nuclear 2 93 2030 1.0 0.0 -de 06_coal 2 93 2030 0.0 0.0 -de 07_gas 2 93 2030 0.0 0.0 -de 08_non-res 2 93 2030 0.0 0.0 -de 09_hydro_pump 2 93 2030 0.0 0.0 -de 01_solar 2 94 2030 1.0 0.0 -de 02_wind_on 2 94 2030 1.0 0.0 -de 03_wind_off 2 94 2030 1.0 0.0 -de 04_res 2 94 2030 1.0 0.0 -de 05_nuclear 2 94 2030 1.0 0.0 -de 06_coal 2 94 2030 0.0 0.0 -de 07_gas 2 94 2030 0.0 0.0 -de 08_non-res 2 94 2030 0.0 0.0 -de 09_hydro_pump 2 94 2030 0.0 0.0 -de 01_solar 2 95 2030 1.0 0.0 -de 02_wind_on 2 95 2030 1.0 0.0 -de 03_wind_off 2 95 2030 1.0 0.0 -de 04_res 2 95 2030 1.0 0.0 -de 05_nuclear 2 95 2030 1.0 0.0 -de 06_coal 2 95 2030 0.0 0.0 -de 07_gas 2 95 2030 0.0 0.0 -de 08_non-res 2 95 2030 0.0 0.0 -de 09_hydro_pump 2 95 2030 0.0 0.0 -de 01_solar 2 96 2030 1.0 0.0 -de 02_wind_on 2 96 2030 1.0 0.0 -de 03_wind_off 2 96 2030 1.0 0.0 -de 04_res 2 96 2030 1.0 0.0 -de 05_nuclear 2 96 2030 1.0 0.0 -de 06_coal 2 96 2030 0.0 0.0 -de 07_gas 2 96 2030 0.0 0.0 -de 08_non-res 2 96 2030 0.0 0.0 -de 09_hydro_pump 2 96 2030 0.0 0.0 -de 01_solar 2 97 2030 1.0 0.0 -de 02_wind_on 2 97 2030 1.0 0.0 -de 03_wind_off 2 97 2030 1.0 0.0 -de 04_res 2 97 2030 1.0 0.0 -de 05_nuclear 2 97 2030 1.0 0.0 -de 06_coal 2 97 2030 0.0 0.0 -de 07_gas 2 97 2030 0.0 0.0 -de 08_non-res 2 97 2030 0.0 0.0 -de 09_hydro_pump 2 97 2030 0.0 0.0 -de 01_solar 2 98 2030 1.0 0.0 -de 02_wind_on 2 98 2030 1.0 0.0 -de 03_wind_off 2 98 2030 1.0 0.0 -de 04_res 2 98 2030 1.0 0.0 -de 05_nuclear 2 98 2030 1.0 0.0 -de 06_coal 2 98 2030 0.0 0.0 -de 07_gas 2 98 2030 0.0 0.0 -de 08_non-res 2 98 2030 0.0 0.0 -de 09_hydro_pump 2 98 2030 0.0 0.0 -de 01_solar 2 99 2030 1.0 0.0 -de 02_wind_on 2 99 2030 1.0 0.0 -de 03_wind_off 2 99 2030 1.0 0.0 -de 04_res 2 99 2030 1.0 0.0 -de 05_nuclear 2 99 2030 1.0 0.0 -de 06_coal 2 99 2030 0.0 0.0 -de 07_gas 2 99 2030 0.0 0.0 -de 08_non-res 2 99 2030 0.0 0.0 -de 09_hydro_pump 2 99 2030 0.0 0.0 -de 01_solar 2 100 2030 1.0 0.0 -de 02_wind_on 2 100 2030 1.0 0.0 -de 03_wind_off 2 100 2030 1.0 0.0 -de 04_res 2 100 2030 1.0 0.0 -de 05_nuclear 2 100 2030 1.0 0.0 -de 06_coal 2 100 2030 0.0 0.0 -de 07_gas 2 100 2030 0.0 0.0 -de 08_non-res 2 100 2030 0.0 0.0 -de 09_hydro_pump 2 100 2030 0.0 0.0 -de 01_solar 2 101 2030 1.0 0.0 -de 02_wind_on 2 101 2030 1.0 0.0 -de 03_wind_off 2 101 2030 1.0 0.0 -de 04_res 2 101 2030 1.0 0.0 -de 05_nuclear 2 101 2030 1.0 0.0 -de 06_coal 2 101 2030 0.0 0.0 -de 07_gas 2 101 2030 0.0 0.0 -de 08_non-res 2 101 2030 0.0 0.0 -de 09_hydro_pump 2 101 2030 0.0 0.0 -de 01_solar 2 102 2030 1.0 0.0 -de 02_wind_on 2 102 2030 1.0 0.0 -de 03_wind_off 2 102 2030 1.0 0.0 -de 04_res 2 102 2030 1.0 0.0 -de 05_nuclear 2 102 2030 1.0 0.0 -de 06_coal 2 102 2030 1.0 0.0 -de 07_gas 2 102 2030 0.0 0.0 -de 08_non-res 2 102 2030 0.0 0.0 -de 09_hydro_pump 2 102 2030 0.0 0.0 -de 01_solar 2 103 2030 1.0 0.0 -de 02_wind_on 2 103 2030 1.0 0.0 -de 03_wind_off 2 103 2030 1.0 0.0 -de 04_res 2 103 2030 1.0 0.0 -de 05_nuclear 2 103 2030 1.0 0.0 -de 06_coal 2 103 2030 1.0 0.0 -de 07_gas 2 103 2030 0.0 0.0 -de 08_non-res 2 103 2030 0.0 0.0 -de 09_hydro_pump 2 103 2030 0.0 0.0 -de 01_solar 2 104 2030 1.0 0.0 -de 02_wind_on 2 104 2030 1.0 0.0 -de 03_wind_off 2 104 2030 1.0 0.0 -de 04_res 2 104 2030 1.0 0.0 -de 05_nuclear 2 104 2030 1.0 0.0 -de 06_coal 2 104 2030 1.0 0.0 -de 07_gas 2 104 2030 0.0 0.0 -de 08_non-res 2 104 2030 0.0 0.0 -de 09_hydro_pump 2 104 2030 0.0 0.0 -de 01_solar 2 105 2030 1.0 0.0 -de 02_wind_on 2 105 2030 1.0 0.0 -de 03_wind_off 2 105 2030 1.0 0.0 -de 04_res 2 105 2030 1.0 0.0 -de 05_nuclear 2 105 2030 1.0 0.0 -de 06_coal 2 105 2030 1.0 0.0 -de 07_gas 2 105 2030 0.0 0.0 -de 08_non-res 2 105 2030 0.0 0.0 -de 09_hydro_pump 2 105 2030 0.0 0.0 -de 01_solar 2 106 2030 1.0 0.0 -de 02_wind_on 2 106 2030 1.0 0.0 -de 03_wind_off 2 106 2030 1.0 0.0 -de 04_res 2 106 2030 1.0 0.0 -de 05_nuclear 2 106 2030 1.0 0.0 -de 06_coal 2 106 2030 1.0 0.0 -de 07_gas 2 106 2030 0.0 0.0 -de 08_non-res 2 106 2030 0.0 0.0 -de 09_hydro_pump 2 106 2030 0.0 0.0 -de 01_solar 2 107 2030 1.0 0.0 -de 02_wind_on 2 107 2030 1.0 0.0 -de 03_wind_off 2 107 2030 1.0 0.0 -de 04_res 2 107 2030 1.0 0.0 -de 05_nuclear 2 107 2030 1.0 0.0 -de 06_coal 2 107 2030 1.0 0.0 -de 07_gas 2 107 2030 0.0 0.0 -de 08_non-res 2 107 2030 0.0 0.0 -de 09_hydro_pump 2 107 2030 0.0 0.0 -de 01_solar 2 108 2030 1.0 0.0 -de 02_wind_on 2 108 2030 1.0 0.0 -de 03_wind_off 2 108 2030 1.0 0.0 -de 04_res 2 108 2030 1.0 0.0 -de 05_nuclear 2 108 2030 1.0 0.0 -de 06_coal 2 108 2030 1.0 0.0 -de 07_gas 2 108 2030 0.0 0.0 -de 08_non-res 2 108 2030 0.0 0.0 -de 09_hydro_pump 2 108 2030 0.0 0.0 -de 01_solar 2 109 2030 1.0 0.0 -de 02_wind_on 2 109 2030 1.0 0.0 -de 03_wind_off 2 109 2030 1.0 0.0 -de 04_res 2 109 2030 1.0 0.0 -de 05_nuclear 2 109 2030 1.0 0.0 -de 06_coal 2 109 2030 1.0 0.0 -de 07_gas 2 109 2030 0.0 0.0 -de 08_non-res 2 109 2030 0.0 0.0 -de 09_hydro_pump 2 109 2030 0.0 0.0 -de 01_solar 2 110 2030 1.0 0.0 -de 02_wind_on 2 110 2030 1.0 0.0 -de 03_wind_off 2 110 2030 1.0 0.0 -de 04_res 2 110 2030 1.0 0.0 -de 05_nuclear 2 110 2030 1.0 0.0 -de 06_coal 2 110 2030 1.0 0.0 -de 07_gas 2 110 2030 0.0 0.0 -de 08_non-res 2 110 2030 0.0 0.0 -de 09_hydro_pump 2 110 2030 0.0 0.0 -de 01_solar 2 111 2030 1.0 0.0 -de 02_wind_on 2 111 2030 1.0 0.0 -de 03_wind_off 2 111 2030 1.0 0.0 -de 04_res 2 111 2030 1.0 0.0 -de 05_nuclear 2 111 2030 1.0 0.0 -de 06_coal 2 111 2030 1.0 0.0 -de 07_gas 2 111 2030 0.0 0.0 -de 08_non-res 2 111 2030 0.0 0.0 -de 09_hydro_pump 2 111 2030 0.0 0.0 -de 01_solar 2 112 2030 1.0 0.0 -de 02_wind_on 2 112 2030 1.0 0.0 -de 03_wind_off 2 112 2030 1.0 0.0 -de 04_res 2 112 2030 1.0 0.0 -de 05_nuclear 2 112 2030 1.0 0.0 -de 06_coal 2 112 2030 1.0 0.0 -de 07_gas 2 112 2030 0.0 0.0 -de 08_non-res 2 112 2030 0.0 0.0 -de 09_hydro_pump 2 112 2030 0.0 0.0 -de 01_solar 2 113 2030 1.0 0.0 -de 02_wind_on 2 113 2030 1.0 0.0 -de 03_wind_off 2 113 2030 1.0 0.0 -de 04_res 2 113 2030 1.0 0.0 -de 05_nuclear 2 113 2030 1.0 0.0 -de 06_coal 2 113 2030 1.0 0.0 -de 07_gas 2 113 2030 0.0 0.0 -de 08_non-res 2 113 2030 0.0 0.0 -de 09_hydro_pump 2 113 2030 0.0 0.0 -de 01_solar 2 114 2030 1.0 0.0 -de 02_wind_on 2 114 2030 1.0 0.0 -de 03_wind_off 2 114 2030 1.0 0.0 -de 04_res 2 114 2030 1.0 0.0 -de 05_nuclear 2 114 2030 1.0 0.0 -de 06_coal 2 114 2030 1.0 0.0 -de 07_gas 2 114 2030 0.0 0.0 -de 08_non-res 2 114 2030 0.0 0.0 -de 09_hydro_pump 2 114 2030 0.0 0.0 -de 01_solar 2 115 2030 1.0 0.0 -de 02_wind_on 2 115 2030 1.0 0.0 -de 03_wind_off 2 115 2030 1.0 0.0 -de 04_res 2 115 2030 1.0 0.0 -de 05_nuclear 2 115 2030 1.0 0.0 -de 06_coal 2 115 2030 1.0 0.0 -de 07_gas 2 115 2030 0.0 0.0 -de 08_non-res 2 115 2030 0.0 0.0 -de 09_hydro_pump 2 115 2030 0.0 0.0 -de 01_solar 2 116 2030 1.0 0.0 -de 02_wind_on 2 116 2030 1.0 0.0 -de 03_wind_off 2 116 2030 1.0 0.0 -de 04_res 2 116 2030 1.0 0.0 -de 05_nuclear 2 116 2030 1.0 0.0 -de 06_coal 2 116 2030 1.0 0.0 -de 07_gas 2 116 2030 0.0 0.0 -de 08_non-res 2 116 2030 0.0 0.0 -de 09_hydro_pump 2 116 2030 0.0 0.0 -de 01_solar 2 117 2030 1.0 0.0 -de 02_wind_on 2 117 2030 1.0 0.0 -de 03_wind_off 2 117 2030 1.0 0.0 -de 04_res 2 117 2030 1.0 0.0 -de 05_nuclear 2 117 2030 1.0 0.0 -de 06_coal 2 117 2030 1.0 0.0 -de 07_gas 2 117 2030 0.0 0.0 -de 08_non-res 2 117 2030 0.0 0.0 -de 09_hydro_pump 2 117 2030 0.0 0.0 -de 01_solar 2 118 2030 1.0 0.0 -de 02_wind_on 2 118 2030 1.0 0.0 -de 03_wind_off 2 118 2030 1.0 0.0 -de 04_res 2 118 2030 1.0 0.0 -de 05_nuclear 2 118 2030 1.0 0.0 -de 06_coal 2 118 2030 1.0 0.0 -de 07_gas 2 118 2030 0.0 0.0 -de 08_non-res 2 118 2030 0.0 0.0 -de 09_hydro_pump 2 118 2030 0.0 0.0 -de 01_solar 2 119 2030 1.0 0.0 -de 02_wind_on 2 119 2030 1.0 0.0 -de 03_wind_off 2 119 2030 1.0 0.0 -de 04_res 2 119 2030 1.0 0.0 -de 05_nuclear 2 119 2030 1.0 0.0 -de 06_coal 2 119 2030 1.0 0.0 -de 07_gas 2 119 2030 0.0 0.0 -de 08_non-res 2 119 2030 0.0 0.0 -de 09_hydro_pump 2 119 2030 0.0 0.0 -de 01_solar 2 120 2030 1.0 0.0 -de 02_wind_on 2 120 2030 1.0 0.0 -de 03_wind_off 2 120 2030 1.0 0.0 -de 04_res 2 120 2030 1.0 0.0 -de 05_nuclear 2 120 2030 1.0 0.0 -de 06_coal 2 120 2030 1.0 0.0 -de 07_gas 2 120 2030 0.0 0.0 -de 08_non-res 2 120 2030 0.0 0.0 -de 09_hydro_pump 2 120 2030 0.0 0.0 -de 01_solar 2 121 2030 1.0 0.0 -de 02_wind_on 2 121 2030 1.0 0.0 -de 03_wind_off 2 121 2030 1.0 0.0 -de 04_res 2 121 2030 1.0 0.0 -de 05_nuclear 2 121 2030 1.0 0.0 -de 06_coal 2 121 2030 1.0 0.0 -de 07_gas 2 121 2030 0.0 0.0 -de 08_non-res 2 121 2030 0.0 0.0 -de 09_hydro_pump 2 121 2030 0.0 0.0 -de 01_solar 2 122 2030 1.0 0.0 -de 02_wind_on 2 122 2030 1.0 0.0 -de 03_wind_off 2 122 2030 1.0 0.0 -de 04_res 2 122 2030 1.0 0.0 -de 05_nuclear 2 122 2030 1.0 0.0 -de 06_coal 2 122 2030 1.0 0.0 -de 07_gas 2 122 2030 1.0 0.0 -de 08_non-res 2 122 2030 0.0 0.0 -de 09_hydro_pump 2 122 2030 0.0 0.0 -de 01_solar 2 123 2030 1.0 0.0 -de 02_wind_on 2 123 2030 1.0 0.0 -de 03_wind_off 2 123 2030 1.0 0.0 -de 04_res 2 123 2030 1.0 0.0 -de 05_nuclear 2 123 2030 1.0 0.0 -de 06_coal 2 123 2030 1.0 0.0 -de 07_gas 2 123 2030 1.0 0.0 -de 08_non-res 2 123 2030 0.0 0.0 -de 09_hydro_pump 2 123 2030 0.0 0.0 -de 01_solar 2 124 2030 1.0 0.0 -de 02_wind_on 2 124 2030 1.0 0.0 -de 03_wind_off 2 124 2030 1.0 0.0 -de 04_res 2 124 2030 1.0 0.0 -de 05_nuclear 2 124 2030 1.0 0.0 -de 06_coal 2 124 2030 1.0 0.0 -de 07_gas 2 124 2030 1.0 0.0 -de 08_non-res 2 124 2030 0.0 0.0 -de 09_hydro_pump 2 124 2030 0.0 0.0 -de 01_solar 2 125 2030 1.0 0.0 -de 02_wind_on 2 125 2030 1.0 0.0 -de 03_wind_off 2 125 2030 1.0 0.0 -de 04_res 2 125 2030 1.0 0.0 -de 05_nuclear 2 125 2030 1.0 0.0 -de 06_coal 2 125 2030 1.0 0.0 -de 07_gas 2 125 2030 1.0 0.0 -de 08_non-res 2 125 2030 0.0 0.0 -de 09_hydro_pump 2 125 2030 0.0 0.0 -de 01_solar 2 126 2030 1.0 0.0 -de 02_wind_on 2 126 2030 1.0 0.0 -de 03_wind_off 2 126 2030 1.0 0.0 -de 04_res 2 126 2030 1.0 0.0 -de 05_nuclear 2 126 2030 1.0 0.0 -de 06_coal 2 126 2030 1.0 0.0 -de 07_gas 2 126 2030 1.0 0.0 -de 08_non-res 2 126 2030 0.0 0.0 -de 09_hydro_pump 2 126 2030 0.0 0.0 -de 01_solar 2 127 2030 1.0 0.0 -de 02_wind_on 2 127 2030 1.0 0.0 -de 03_wind_off 2 127 2030 1.0 0.0 -de 04_res 2 127 2030 1.0 0.0 -de 05_nuclear 2 127 2030 1.0 0.0 -de 06_coal 2 127 2030 1.0 0.0 -de 07_gas 2 127 2030 1.0 0.0 -de 08_non-res 2 127 2030 0.0 0.0 -de 09_hydro_pump 2 127 2030 0.0 0.0 -de 01_solar 2 128 2030 1.0 0.0 -de 02_wind_on 2 128 2030 1.0 0.0 -de 03_wind_off 2 128 2030 1.0 0.0 -de 04_res 2 128 2030 1.0 0.0 -de 05_nuclear 2 128 2030 1.0 0.0 -de 06_coal 2 128 2030 1.0 0.0 -de 07_gas 2 128 2030 1.0 0.0 -de 08_non-res 2 128 2030 0.0 0.0 -de 09_hydro_pump 2 128 2030 0.0 0.0 -de 01_solar 2 129 2030 1.0 0.0 -de 02_wind_on 2 129 2030 1.0 0.0 -de 03_wind_off 2 129 2030 1.0 0.0 -de 04_res 2 129 2030 1.0 0.0 -de 05_nuclear 2 129 2030 1.0 0.0 -de 06_coal 2 129 2030 1.0 0.0 -de 07_gas 2 129 2030 1.0 0.0 -de 08_non-res 2 129 2030 0.0 0.0 -de 09_hydro_pump 2 129 2030 0.0 0.0 -de 01_solar 2 130 2030 1.0 0.0 -de 02_wind_on 2 130 2030 1.0 0.0 -de 03_wind_off 2 130 2030 1.0 0.0 -de 04_res 2 130 2030 1.0 0.0 -de 05_nuclear 2 130 2030 1.0 0.0 -de 06_coal 2 130 2030 1.0 0.0 -de 07_gas 2 130 2030 1.0 0.0 -de 08_non-res 2 130 2030 0.0 0.0 -de 09_hydro_pump 2 130 2030 0.0 0.0 -de 01_solar 2 131 2030 1.0 0.0 -de 02_wind_on 2 131 2030 1.0 0.0 -de 03_wind_off 2 131 2030 1.0 0.0 -de 04_res 2 131 2030 1.0 0.0 -de 05_nuclear 2 131 2030 1.0 0.0 -de 06_coal 2 131 2030 1.0 0.0 -de 07_gas 2 131 2030 1.0 0.0 -de 08_non-res 2 131 2030 0.0 0.0 -de 09_hydro_pump 2 131 2030 0.0 0.0 -de 01_solar 2 132 2030 1.0 0.0 -de 02_wind_on 2 132 2030 1.0 0.0 -de 03_wind_off 2 132 2030 1.0 0.0 -de 04_res 2 132 2030 1.0 0.0 -de 05_nuclear 2 132 2030 1.0 0.0 -de 06_coal 2 132 2030 1.0 0.0 -de 07_gas 2 132 2030 1.0 0.0 -de 08_non-res 2 132 2030 0.0 0.0 -de 09_hydro_pump 2 132 2030 0.0 0.0 -de 01_solar 2 133 2030 1.0 0.0 -de 02_wind_on 2 133 2030 1.0 0.0 -de 03_wind_off 2 133 2030 1.0 0.0 -de 04_res 2 133 2030 1.0 0.0 -de 05_nuclear 2 133 2030 1.0 0.0 -de 06_coal 2 133 2030 1.0 0.0 -de 07_gas 2 133 2030 1.0 0.0 -de 08_non-res 2 133 2030 0.0 0.0 -de 09_hydro_pump 2 133 2030 0.0 0.0 -de 01_solar 2 134 2030 1.0 0.0 -de 02_wind_on 2 134 2030 1.0 0.0 -de 03_wind_off 2 134 2030 1.0 0.0 -de 04_res 2 134 2030 1.0 0.0 -de 05_nuclear 2 134 2030 1.0 0.0 -de 06_coal 2 134 2030 1.0 0.0 -de 07_gas 2 134 2030 1.0 0.0 -de 08_non-res 2 134 2030 0.0 0.0 -de 09_hydro_pump 2 134 2030 0.0 0.0 -de 01_solar 2 135 2030 1.0 0.0 -de 02_wind_on 2 135 2030 1.0 0.0 -de 03_wind_off 2 135 2030 1.0 0.0 -de 04_res 2 135 2030 1.0 0.0 -de 05_nuclear 2 135 2030 1.0 0.0 -de 06_coal 2 135 2030 1.0 0.0 -de 07_gas 2 135 2030 1.0 0.0 -de 08_non-res 2 135 2030 0.0 0.0 -de 09_hydro_pump 2 135 2030 0.0 0.0 -de 01_solar 2 136 2030 1.0 0.0 -de 02_wind_on 2 136 2030 1.0 0.0 -de 03_wind_off 2 136 2030 1.0 0.0 -de 04_res 2 136 2030 1.0 0.0 -de 05_nuclear 2 136 2030 1.0 0.0 -de 06_coal 2 136 2030 1.0 0.0 -de 07_gas 2 136 2030 1.0 0.0 -de 08_non-res 2 136 2030 0.0 0.0 -de 09_hydro_pump 2 136 2030 0.0 0.0 -de 01_solar 2 137 2030 1.0 0.0 -de 02_wind_on 2 137 2030 1.0 0.0 -de 03_wind_off 2 137 2030 1.0 0.0 -de 04_res 2 137 2030 1.0 0.0 -de 05_nuclear 2 137 2030 1.0 0.0 -de 06_coal 2 137 2030 1.0 0.0 -de 07_gas 2 137 2030 1.0 0.0 -de 08_non-res 2 137 2030 0.0 0.0 -de 09_hydro_pump 2 137 2030 0.0 0.0 -de 01_solar 2 138 2030 1.0 0.0 -de 02_wind_on 2 138 2030 1.0 0.0 -de 03_wind_off 2 138 2030 1.0 0.0 -de 04_res 2 138 2030 1.0 0.0 -de 05_nuclear 2 138 2030 1.0 0.0 -de 06_coal 2 138 2030 1.0 0.0 -de 07_gas 2 138 2030 1.0 0.0 -de 08_non-res 2 138 2030 0.0 0.0 -de 09_hydro_pump 2 138 2030 0.0 0.0 -de 01_solar 2 139 2030 1.0 0.0 -de 02_wind_on 2 139 2030 1.0 0.0 -de 03_wind_off 2 139 2030 1.0 0.0 -de 04_res 2 139 2030 1.0 0.0 -de 05_nuclear 2 139 2030 1.0 0.0 -de 06_coal 2 139 2030 1.0 0.0 -de 07_gas 2 139 2030 1.0 0.0 -de 08_non-res 2 139 2030 0.0 0.0 -de 09_hydro_pump 2 139 2030 0.0 0.0 -de 01_solar 2 140 2030 1.0 0.0 -de 02_wind_on 2 140 2030 1.0 0.0 -de 03_wind_off 2 140 2030 1.0 0.0 -de 04_res 2 140 2030 1.0 0.0 -de 05_nuclear 2 140 2030 1.0 0.0 -de 06_coal 2 140 2030 1.0 0.0 -de 07_gas 2 140 2030 1.0 0.0 -de 08_non-res 2 140 2030 0.0 0.0 -de 09_hydro_pump 2 140 2030 0.0 0.0 -de 01_solar 2 141 2030 1.0 0.0 -de 02_wind_on 2 141 2030 1.0 0.0 -de 03_wind_off 2 141 2030 1.0 0.0 -de 04_res 2 141 2030 1.0 0.0 -de 05_nuclear 2 141 2030 1.0 0.0 -de 06_coal 2 141 2030 1.0 0.0 -de 07_gas 2 141 2030 1.0 0.0 -de 08_non-res 2 141 2030 0.0 0.0 -de 09_hydro_pump 2 141 2030 0.0 0.0 -de 01_solar 2 142 2030 1.0 0.0 -de 02_wind_on 2 142 2030 1.0 0.0 -de 03_wind_off 2 142 2030 1.0 0.0 -de 04_res 2 142 2030 1.0 0.0 -de 05_nuclear 2 142 2030 1.0 0.0 -de 06_coal 2 142 2030 1.0 0.0 -de 07_gas 2 142 2030 1.0 0.0 -de 08_non-res 2 142 2030 1.0 0.0 -de 09_hydro_pump 2 142 2030 0.0 0.0 -de 01_solar 2 143 2030 1.0 0.0 -de 02_wind_on 2 143 2030 1.0 0.0 -de 03_wind_off 2 143 2030 1.0 0.0 -de 04_res 2 143 2030 1.0 0.0 -de 05_nuclear 2 143 2030 1.0 0.0 -de 06_coal 2 143 2030 1.0 0.0 -de 07_gas 2 143 2030 1.0 0.0 -de 08_non-res 2 143 2030 1.0 0.0 -de 09_hydro_pump 2 143 2030 0.0 0.0 -de 01_solar 2 144 2030 1.0 0.0 -de 02_wind_on 2 144 2030 1.0 0.0 -de 03_wind_off 2 144 2030 1.0 0.0 -de 04_res 2 144 2030 1.0 0.0 -de 05_nuclear 2 144 2030 1.0 0.0 -de 06_coal 2 144 2030 1.0 0.0 -de 07_gas 2 144 2030 1.0 0.0 -de 08_non-res 2 144 2030 1.0 0.0 -de 09_hydro_pump 2 144 2030 0.0 0.0 -de 01_solar 2 145 2030 1.0 0.0 -de 02_wind_on 2 145 2030 1.0 0.0 -de 03_wind_off 2 145 2030 1.0 0.0 -de 04_res 2 145 2030 1.0 0.0 -de 05_nuclear 2 145 2030 1.0 0.0 -de 06_coal 2 145 2030 1.0 0.0 -de 07_gas 2 145 2030 1.0 0.0 -de 08_non-res 2 145 2030 1.0 0.0 -de 09_hydro_pump 2 145 2030 0.0 0.0 -de 01_solar 2 146 2030 1.0 0.0 -de 02_wind_on 2 146 2030 1.0 0.0 -de 03_wind_off 2 146 2030 1.0 0.0 -de 04_res 2 146 2030 1.0 0.0 -de 05_nuclear 2 146 2030 1.0 0.0 -de 06_coal 2 146 2030 1.0 0.0 -de 07_gas 2 146 2030 1.0 0.0 -de 08_non-res 2 146 2030 1.0 0.0 -de 09_hydro_pump 2 146 2030 0.0 0.0 -de 01_solar 2 147 2030 1.0 0.0 -de 02_wind_on 2 147 2030 1.0 0.0 -de 03_wind_off 2 147 2030 1.0 0.0 -de 04_res 2 147 2030 1.0 0.0 -de 05_nuclear 2 147 2030 1.0 0.0 -de 06_coal 2 147 2030 1.0 0.0 -de 07_gas 2 147 2030 1.0 0.0 -de 08_non-res 2 147 2030 1.0 0.0 -de 09_hydro_pump 2 147 2030 0.0 0.0 -de 01_solar 2 148 2030 1.0 0.0 -de 02_wind_on 2 148 2030 1.0 0.0 -de 03_wind_off 2 148 2030 1.0 0.0 -de 04_res 2 148 2030 1.0 0.0 -de 05_nuclear 2 148 2030 1.0 0.0 -de 06_coal 2 148 2030 1.0 0.0 -de 07_gas 2 148 2030 1.0 0.0 -de 08_non-res 2 148 2030 1.0 0.0 -de 09_hydro_pump 2 148 2030 0.0 0.0 -de 01_solar 2 149 2030 1.0 0.0 -de 02_wind_on 2 149 2030 1.0 0.0 -de 03_wind_off 2 149 2030 1.0 0.0 -de 04_res 2 149 2030 1.0 0.0 -de 05_nuclear 2 149 2030 1.0 0.0 -de 06_coal 2 149 2030 1.0 0.0 -de 07_gas 2 149 2030 1.0 0.0 -de 08_non-res 2 149 2030 1.0 0.0 -de 09_hydro_pump 2 149 2030 0.0 0.0 -de 01_solar 2 150 2030 1.0 0.0 -de 02_wind_on 2 150 2030 1.0 0.0 -de 03_wind_off 2 150 2030 1.0 0.0 -de 04_res 2 150 2030 1.0 0.0 -de 05_nuclear 2 150 2030 1.0 0.0 -de 06_coal 2 150 2030 1.0 0.0 -de 07_gas 2 150 2030 1.0 0.0 -de 08_non-res 2 150 2030 1.0 0.0 -de 09_hydro_pump 2 150 2030 0.0 0.0 -de 01_solar 2 151 2030 1.0 0.0 -de 02_wind_on 2 151 2030 1.0 0.0 -de 03_wind_off 2 151 2030 1.0 0.0 -de 04_res 2 151 2030 1.0 0.0 -de 05_nuclear 2 151 2030 1.0 0.0 -de 06_coal 2 151 2030 1.0 0.0 -de 07_gas 2 151 2030 1.0 0.0 -de 08_non-res 2 151 2030 1.0 0.0 -de 09_hydro_pump 2 151 2030 0.0 0.0 -de 01_solar 2 152 2030 1.0 0.0 -de 02_wind_on 2 152 2030 1.0 0.0 -de 03_wind_off 2 152 2030 1.0 0.0 -de 04_res 2 152 2030 1.0 0.0 -de 05_nuclear 2 152 2030 1.0 0.0 -de 06_coal 2 152 2030 1.0 0.0 -de 07_gas 2 152 2030 1.0 0.0 -de 08_non-res 2 152 2030 1.0 0.0 -de 09_hydro_pump 2 152 2030 0.0 0.0 -de 01_solar 2 153 2030 1.0 0.0 -de 02_wind_on 2 153 2030 1.0 0.0 -de 03_wind_off 2 153 2030 1.0 0.0 -de 04_res 2 153 2030 1.0 0.0 -de 05_nuclear 2 153 2030 1.0 0.0 -de 06_coal 2 153 2030 1.0 0.0 -de 07_gas 2 153 2030 1.0 0.0 -de 08_non-res 2 153 2030 1.0 0.0 -de 09_hydro_pump 2 153 2030 0.0 0.0 -de 01_solar 2 154 2030 1.0 0.0 -de 02_wind_on 2 154 2030 1.0 0.0 -de 03_wind_off 2 154 2030 1.0 0.0 -de 04_res 2 154 2030 1.0 0.0 -de 05_nuclear 2 154 2030 1.0 0.0 -de 06_coal 2 154 2030 1.0 0.0 -de 07_gas 2 154 2030 1.0 0.0 -de 08_non-res 2 154 2030 1.0 0.0 -de 09_hydro_pump 2 154 2030 0.0 0.0 -de 01_solar 2 155 2030 1.0 0.0 -de 02_wind_on 2 155 2030 1.0 0.0 -de 03_wind_off 2 155 2030 1.0 0.0 -de 04_res 2 155 2030 1.0 0.0 -de 05_nuclear 2 155 2030 1.0 0.0 -de 06_coal 2 155 2030 1.0 0.0 -de 07_gas 2 155 2030 1.0 0.0 -de 08_non-res 2 155 2030 1.0 0.0 -de 09_hydro_pump 2 155 2030 0.0 0.0 -de 01_solar 2 156 2030 1.0 0.0 -de 02_wind_on 2 156 2030 1.0 0.0 -de 03_wind_off 2 156 2030 1.0 0.0 -de 04_res 2 156 2030 1.0 0.0 -de 05_nuclear 2 156 2030 1.0 0.0 -de 06_coal 2 156 2030 1.0 0.0 -de 07_gas 2 156 2030 1.0 0.0 -de 08_non-res 2 156 2030 1.0 0.0 -de 09_hydro_pump 2 156 2030 0.0 0.0 -de 01_solar 2 157 2030 1.0 0.0 -de 02_wind_on 2 157 2030 1.0 0.0 -de 03_wind_off 2 157 2030 1.0 0.0 -de 04_res 2 157 2030 1.0 0.0 -de 05_nuclear 2 157 2030 1.0 0.0 -de 06_coal 2 157 2030 1.0 0.0 -de 07_gas 2 157 2030 1.0 0.0 -de 08_non-res 2 157 2030 1.0 0.0 -de 09_hydro_pump 2 157 2030 0.0 0.0 -de 01_solar 2 158 2030 1.0 0.0 -de 02_wind_on 2 158 2030 1.0 0.0 -de 03_wind_off 2 158 2030 1.0 0.0 -de 04_res 2 158 2030 1.0 0.0 -de 05_nuclear 2 158 2030 1.0 0.0 -de 06_coal 2 158 2030 1.0 0.0 -de 07_gas 2 158 2030 1.0 0.0 -de 08_non-res 2 158 2030 1.0 0.0 -de 09_hydro_pump 2 158 2030 0.0 0.0 -de 01_solar 2 159 2030 1.0 0.0 -de 02_wind_on 2 159 2030 1.0 0.0 -de 03_wind_off 2 159 2030 1.0 0.0 -de 04_res 2 159 2030 1.0 0.0 -de 05_nuclear 2 159 2030 1.0 0.0 -de 06_coal 2 159 2030 1.0 0.0 -de 07_gas 2 159 2030 1.0 0.0 -de 08_non-res 2 159 2030 1.0 0.0 -de 09_hydro_pump 2 159 2030 0.0 0.0 -de 01_solar 2 160 2030 1.0 0.0 -de 02_wind_on 2 160 2030 1.0 0.0 -de 03_wind_off 2 160 2030 1.0 0.0 -de 04_res 2 160 2030 1.0 0.0 -de 05_nuclear 2 160 2030 1.0 0.0 -de 06_coal 2 160 2030 1.0 0.0 -de 07_gas 2 160 2030 1.0 0.0 -de 08_non-res 2 160 2030 1.0 0.0 -de 09_hydro_pump 2 160 2030 0.0 0.0 -de 01_solar 2 161 2030 1.0 0.0 -de 02_wind_on 2 161 2030 1.0 0.0 -de 03_wind_off 2 161 2030 1.0 0.0 -de 04_res 2 161 2030 1.0 0.0 -de 05_nuclear 2 161 2030 1.0 0.0 -de 06_coal 2 161 2030 1.0 0.0 -de 07_gas 2 161 2030 1.0 0.0 -de 08_non-res 2 161 2030 1.0 0.0 -de 09_hydro_pump 2 161 2030 0.0 0.0 -de 01_solar 2 162 2030 1.0 0.0 -de 02_wind_on 2 162 2030 1.0 0.0 -de 03_wind_off 2 162 2030 1.0 0.0 -de 04_res 2 162 2030 1.0 0.0 -de 05_nuclear 2 162 2030 1.0 0.0 -de 06_coal 2 162 2030 1.0 0.0 -de 07_gas 2 162 2030 1.0 0.0 -de 08_non-res 2 162 2030 1.0 0.0 -de 09_hydro_pump 2 162 2030 1.0 0.0 -de 01_solar 2 163 2030 1.0 0.0 -de 02_wind_on 2 163 2030 1.0 0.0 -de 03_wind_off 2 163 2030 1.0 0.0 -de 04_res 2 163 2030 1.0 0.0 -de 05_nuclear 2 163 2030 1.0 0.0 -de 06_coal 2 163 2030 1.0 0.0 -de 07_gas 2 163 2030 1.0 0.0 -de 08_non-res 2 163 2030 1.0 0.0 -de 09_hydro_pump 2 163 2030 1.0 0.0 -de 01_solar 2 164 2030 1.0 0.0 -de 02_wind_on 2 164 2030 1.0 0.0 -de 03_wind_off 2 164 2030 1.0 0.0 -de 04_res 2 164 2030 1.0 0.0 -de 05_nuclear 2 164 2030 1.0 0.0 -de 06_coal 2 164 2030 1.0 0.0 -de 07_gas 2 164 2030 1.0 0.0 -de 08_non-res 2 164 2030 1.0 0.0 -de 09_hydro_pump 2 164 2030 1.0 0.0 -de 01_solar 2 165 2030 1.0 0.0 -de 02_wind_on 2 165 2030 1.0 0.0 -de 03_wind_off 2 165 2030 1.0 0.0 -de 04_res 2 165 2030 1.0 0.0 -de 05_nuclear 2 165 2030 1.0 0.0 -de 06_coal 2 165 2030 1.0 0.0 -de 07_gas 2 165 2030 1.0 0.0 -de 08_non-res 2 165 2030 1.0 0.0 -de 09_hydro_pump 2 165 2030 1.0 0.0 -de 01_solar 2 166 2030 1.0 0.0 -de 02_wind_on 2 166 2030 1.0 0.0 -de 03_wind_off 2 166 2030 1.0 0.0 -de 04_res 2 166 2030 1.0 0.0 -de 05_nuclear 2 166 2030 1.0 0.0 -de 06_coal 2 166 2030 1.0 0.0 -de 07_gas 2 166 2030 1.0 0.0 -de 08_non-res 2 166 2030 1.0 0.0 -de 09_hydro_pump 2 166 2030 1.0 0.0 -de 01_solar 2 167 2030 1.0 0.0 -de 02_wind_on 2 167 2030 1.0 0.0 -de 03_wind_off 2 167 2030 1.0 0.0 -de 04_res 2 167 2030 1.0 0.0 -de 05_nuclear 2 167 2030 1.0 0.0 -de 06_coal 2 167 2030 1.0 0.0 -de 07_gas 2 167 2030 1.0 0.0 -de 08_non-res 2 167 2030 1.0 0.0 -de 09_hydro_pump 2 167 2030 1.0 0.0 -de 01_solar 2 168 2030 1.0 0.0 -de 02_wind_on 2 168 2030 1.0 0.0 -de 03_wind_off 2 168 2030 1.0 0.0 -de 04_res 2 168 2030 1.0 0.0 -de 05_nuclear 2 168 2030 1.0 0.0 -de 06_coal 2 168 2030 1.0 0.0 -de 07_gas 2 168 2030 1.0 0.0 -de 08_non-res 2 168 2030 1.0 0.0 -de 09_hydro_pump 2 168 2030 1.0 0.0 -de 01_solar 2 169 2030 0.0 0.0 -de 02_wind_on 2 169 2030 0.0 0.0 -de 03_wind_off 2 169 2030 0.0 0.0 -de 04_res 2 169 2030 0.0 0.0 -de 05_nuclear 2 169 2030 0.0 0.0 -de 06_coal 2 169 2030 0.0 0.0 -de 07_gas 2 169 2030 0.0 0.0 -de 08_non-res 2 169 2030 0.0 0.0 -de 09_hydro_pump 2 169 2030 0.0 0.0 -de 01_solar 2 170 2030 1.0 0.0 -de 02_wind_on 2 170 2030 0.0 0.0 -de 03_wind_off 2 170 2030 0.0 0.0 -de 04_res 2 170 2030 0.0 0.0 -de 05_nuclear 2 170 2030 0.0 0.0 -de 06_coal 2 170 2030 0.0 0.0 -de 07_gas 2 170 2030 0.0 0.0 -de 08_non-res 2 170 2030 0.0 0.0 -de 09_hydro_pump 2 170 2030 0.0 0.0 -de 01_solar 2 171 2030 1.0 0.0 -de 02_wind_on 2 171 2030 0.0 0.0 -de 03_wind_off 2 171 2030 0.0 0.0 -de 04_res 2 171 2030 0.0 0.0 -de 05_nuclear 2 171 2030 0.0 0.0 -de 06_coal 2 171 2030 0.0 0.0 -de 07_gas 2 171 2030 0.0 0.0 -de 08_non-res 2 171 2030 0.0 0.0 -de 09_hydro_pump 2 171 2030 0.0 0.0 -de 01_solar 2 172 2030 1.0 0.0 -de 02_wind_on 2 172 2030 0.0 0.0 -de 03_wind_off 2 172 2030 0.0 0.0 -de 04_res 2 172 2030 0.0 0.0 -de 05_nuclear 2 172 2030 0.0 0.0 -de 06_coal 2 172 2030 0.0 0.0 -de 07_gas 2 172 2030 0.0 0.0 -de 08_non-res 2 172 2030 0.0 0.0 -de 09_hydro_pump 2 172 2030 0.0 0.0 -de 01_solar 2 173 2030 1.0 0.0 -de 02_wind_on 2 173 2030 0.0 0.0 -de 03_wind_off 2 173 2030 0.0 0.0 -de 04_res 2 173 2030 0.0 0.0 -de 05_nuclear 2 173 2030 0.0 0.0 -de 06_coal 2 173 2030 0.0 0.0 -de 07_gas 2 173 2030 0.0 0.0 -de 08_non-res 2 173 2030 0.0 0.0 -de 09_hydro_pump 2 173 2030 0.0 0.0 -de 01_solar 2 174 2030 1.0 0.0 -de 02_wind_on 2 174 2030 0.0 0.0 -de 03_wind_off 2 174 2030 0.0 0.0 -de 04_res 2 174 2030 0.0 0.0 -de 05_nuclear 2 174 2030 0.0 0.0 -de 06_coal 2 174 2030 0.0 0.0 -de 07_gas 2 174 2030 0.0 0.0 -de 08_non-res 2 174 2030 0.0 0.0 -de 09_hydro_pump 2 174 2030 0.0 0.0 -de 01_solar 2 175 2030 1.0 0.0 -de 02_wind_on 2 175 2030 0.0 0.0 -de 03_wind_off 2 175 2030 0.0 0.0 -de 04_res 2 175 2030 0.0 0.0 -de 05_nuclear 2 175 2030 0.0 0.0 -de 06_coal 2 175 2030 0.0 0.0 -de 07_gas 2 175 2030 0.0 0.0 -de 08_non-res 2 175 2030 0.0 0.0 -de 09_hydro_pump 2 175 2030 0.0 0.0 -de 01_solar 2 176 2030 1.0 0.0 -de 02_wind_on 2 176 2030 0.0 0.0 -de 03_wind_off 2 176 2030 0.0 0.0 -de 04_res 2 176 2030 0.0 0.0 -de 05_nuclear 2 176 2030 0.0 0.0 -de 06_coal 2 176 2030 0.0 0.0 -de 07_gas 2 176 2030 0.0 0.0 -de 08_non-res 2 176 2030 0.0 0.0 -de 09_hydro_pump 2 176 2030 0.0 0.0 -de 01_solar 2 177 2030 1.0 0.0 -de 02_wind_on 2 177 2030 0.0 0.0 -de 03_wind_off 2 177 2030 0.0 0.0 -de 04_res 2 177 2030 0.0 0.0 -de 05_nuclear 2 177 2030 0.0 0.0 -de 06_coal 2 177 2030 0.0 0.0 -de 07_gas 2 177 2030 0.0 0.0 -de 08_non-res 2 177 2030 0.0 0.0 -de 09_hydro_pump 2 177 2030 0.0 0.0 -de 01_solar 2 178 2030 1.0 0.0 -de 02_wind_on 2 178 2030 0.0 0.0 -de 03_wind_off 2 178 2030 0.0 0.0 -de 04_res 2 178 2030 0.0 0.0 -de 05_nuclear 2 178 2030 0.0 0.0 -de 06_coal 2 178 2030 0.0 0.0 -de 07_gas 2 178 2030 0.0 0.0 -de 08_non-res 2 178 2030 0.0 0.0 -de 09_hydro_pump 2 178 2030 0.0 0.0 -de 01_solar 2 179 2030 1.0 0.0 -de 02_wind_on 2 179 2030 0.0 0.0 -de 03_wind_off 2 179 2030 0.0 0.0 -de 04_res 2 179 2030 0.0 0.0 -de 05_nuclear 2 179 2030 0.0 0.0 -de 06_coal 2 179 2030 0.0 0.0 -de 07_gas 2 179 2030 0.0 0.0 -de 08_non-res 2 179 2030 0.0 0.0 -de 09_hydro_pump 2 179 2030 0.0 0.0 -de 01_solar 2 180 2030 1.0 0.0 -de 02_wind_on 2 180 2030 0.0 0.0 -de 03_wind_off 2 180 2030 0.0 0.0 -de 04_res 2 180 2030 0.0 0.0 -de 05_nuclear 2 180 2030 0.0 0.0 -de 06_coal 2 180 2030 0.0 0.0 -de 07_gas 2 180 2030 0.0 0.0 -de 08_non-res 2 180 2030 0.0 0.0 -de 09_hydro_pump 2 180 2030 0.0 0.0 -de 01_solar 2 181 2030 1.0 0.0 -de 02_wind_on 2 181 2030 0.0 0.0 -de 03_wind_off 2 181 2030 0.0 0.0 -de 04_res 2 181 2030 0.0 0.0 -de 05_nuclear 2 181 2030 0.0 0.0 -de 06_coal 2 181 2030 0.0 0.0 -de 07_gas 2 181 2030 0.0 0.0 -de 08_non-res 2 181 2030 0.0 0.0 -de 09_hydro_pump 2 181 2030 0.0 0.0 -de 01_solar 2 182 2030 1.0 0.0 -de 02_wind_on 2 182 2030 0.0 0.0 -de 03_wind_off 2 182 2030 0.0 0.0 -de 04_res 2 182 2030 0.0 0.0 -de 05_nuclear 2 182 2030 0.0 0.0 -de 06_coal 2 182 2030 0.0 0.0 -de 07_gas 2 182 2030 0.0 0.0 -de 08_non-res 2 182 2030 0.0 0.0 -de 09_hydro_pump 2 182 2030 0.0 0.0 -de 01_solar 2 183 2030 1.0 0.0 -de 02_wind_on 2 183 2030 0.0 0.0 -de 03_wind_off 2 183 2030 0.0 0.0 -de 04_res 2 183 2030 0.0 0.0 -de 05_nuclear 2 183 2030 0.0 0.0 -de 06_coal 2 183 2030 0.0 0.0 -de 07_gas 2 183 2030 0.0 0.0 -de 08_non-res 2 183 2030 0.0 0.0 -de 09_hydro_pump 2 183 2030 0.0 0.0 -de 01_solar 2 184 2030 1.0 0.0 -de 02_wind_on 2 184 2030 0.0 0.0 -de 03_wind_off 2 184 2030 0.0 0.0 -de 04_res 2 184 2030 0.0 0.0 -de 05_nuclear 2 184 2030 0.0 0.0 -de 06_coal 2 184 2030 0.0 0.0 -de 07_gas 2 184 2030 0.0 0.0 -de 08_non-res 2 184 2030 0.0 0.0 -de 09_hydro_pump 2 184 2030 0.0 0.0 -de 01_solar 2 185 2030 1.0 0.0 -de 02_wind_on 2 185 2030 0.0 0.0 -de 03_wind_off 2 185 2030 0.0 0.0 -de 04_res 2 185 2030 0.0 0.0 -de 05_nuclear 2 185 2030 0.0 0.0 -de 06_coal 2 185 2030 0.0 0.0 -de 07_gas 2 185 2030 0.0 0.0 -de 08_non-res 2 185 2030 0.0 0.0 -de 09_hydro_pump 2 185 2030 0.0 0.0 -de 01_solar 2 186 2030 1.0 0.0 -de 02_wind_on 2 186 2030 0.0 0.0 -de 03_wind_off 2 186 2030 0.0 0.0 -de 04_res 2 186 2030 0.0 0.0 -de 05_nuclear 2 186 2030 0.0 0.0 -de 06_coal 2 186 2030 0.0 0.0 -de 07_gas 2 186 2030 0.0 0.0 -de 08_non-res 2 186 2030 0.0 0.0 -de 09_hydro_pump 2 186 2030 0.0 0.0 -de 01_solar 2 187 2030 1.0 0.0 -de 02_wind_on 2 187 2030 0.0 0.0 -de 03_wind_off 2 187 2030 0.0 0.0 -de 04_res 2 187 2030 0.0 0.0 -de 05_nuclear 2 187 2030 0.0 0.0 -de 06_coal 2 187 2030 0.0 0.0 -de 07_gas 2 187 2030 0.0 0.0 -de 08_non-res 2 187 2030 0.0 0.0 -de 09_hydro_pump 2 187 2030 0.0 0.0 -de 01_solar 2 188 2030 1.0 0.0 -de 02_wind_on 2 188 2030 0.0 0.0 -de 03_wind_off 2 188 2030 0.0 0.0 -de 04_res 2 188 2030 0.0 0.0 -de 05_nuclear 2 188 2030 0.0 0.0 -de 06_coal 2 188 2030 0.0 0.0 -de 07_gas 2 188 2030 0.0 0.0 -de 08_non-res 2 188 2030 0.0 0.0 -de 09_hydro_pump 2 188 2030 0.0 0.0 -de 01_solar 2 189 2030 1.0 0.0 -de 02_wind_on 2 189 2030 0.0 0.0 -de 03_wind_off 2 189 2030 0.0 0.0 -de 04_res 2 189 2030 0.0 0.0 -de 05_nuclear 2 189 2030 0.0 0.0 -de 06_coal 2 189 2030 0.0 0.0 -de 07_gas 2 189 2030 0.0 0.0 -de 08_non-res 2 189 2030 0.0 0.0 -de 09_hydro_pump 2 189 2030 0.0 0.0 -de 01_solar 2 190 2030 1.0 0.0 -de 02_wind_on 2 190 2030 1.0 0.0 -de 03_wind_off 2 190 2030 0.0 0.0 -de 04_res 2 190 2030 0.0 0.0 -de 05_nuclear 2 190 2030 0.0 0.0 -de 06_coal 2 190 2030 0.0 0.0 -de 07_gas 2 190 2030 0.0 0.0 -de 08_non-res 2 190 2030 0.0 0.0 -de 09_hydro_pump 2 190 2030 0.0 0.0 -de 01_solar 2 191 2030 1.0 0.0 -de 02_wind_on 2 191 2030 1.0 0.0 -de 03_wind_off 2 191 2030 0.0 0.0 -de 04_res 2 191 2030 0.0 0.0 -de 05_nuclear 2 191 2030 0.0 0.0 -de 06_coal 2 191 2030 0.0 0.0 -de 07_gas 2 191 2030 0.0 0.0 -de 08_non-res 2 191 2030 0.0 0.0 -de 09_hydro_pump 2 191 2030 0.0 0.0 -de 01_solar 2 192 2030 1.0 0.0 -de 02_wind_on 2 192 2030 1.0 0.0 -de 03_wind_off 2 192 2030 0.0 0.0 -de 04_res 2 192 2030 0.0 0.0 -de 05_nuclear 2 192 2030 0.0 0.0 -de 06_coal 2 192 2030 0.0 0.0 -de 07_gas 2 192 2030 0.0 0.0 -de 08_non-res 2 192 2030 0.0 0.0 -de 09_hydro_pump 2 192 2030 0.0 0.0 -de 01_solar 2 193 2030 1.0 0.0 -de 02_wind_on 2 193 2030 1.0 0.0 -de 03_wind_off 2 193 2030 0.0 0.0 -de 04_res 2 193 2030 0.0 0.0 -de 05_nuclear 2 193 2030 0.0 0.0 -de 06_coal 2 193 2030 0.0 0.0 -de 07_gas 2 193 2030 0.0 0.0 -de 08_non-res 2 193 2030 0.0 0.0 -de 09_hydro_pump 2 193 2030 0.0 0.0 -de 01_solar 2 194 2030 1.0 0.0 -de 02_wind_on 2 194 2030 1.0 0.0 -de 03_wind_off 2 194 2030 0.0 0.0 -de 04_res 2 194 2030 0.0 0.0 -de 05_nuclear 2 194 2030 0.0 0.0 -de 06_coal 2 194 2030 0.0 0.0 -de 07_gas 2 194 2030 0.0 0.0 -de 08_non-res 2 194 2030 0.0 0.0 -de 09_hydro_pump 2 194 2030 0.0 0.0 -de 01_solar 2 195 2030 1.0 0.0 -de 02_wind_on 2 195 2030 1.0 0.0 -de 03_wind_off 2 195 2030 0.0 0.0 -de 04_res 2 195 2030 0.0 0.0 -de 05_nuclear 2 195 2030 0.0 0.0 -de 06_coal 2 195 2030 0.0 0.0 -de 07_gas 2 195 2030 0.0 0.0 -de 08_non-res 2 195 2030 0.0 0.0 -de 09_hydro_pump 2 195 2030 0.0 0.0 -de 01_solar 2 196 2030 1.0 0.0 -de 02_wind_on 2 196 2030 1.0 0.0 -de 03_wind_off 2 196 2030 0.0 0.0 -de 04_res 2 196 2030 0.0 0.0 -de 05_nuclear 2 196 2030 0.0 0.0 -de 06_coal 2 196 2030 0.0 0.0 -de 07_gas 2 196 2030 0.0 0.0 -de 08_non-res 2 196 2030 0.0 0.0 -de 09_hydro_pump 2 196 2030 0.0 0.0 -de 01_solar 2 197 2030 1.0 0.0 -de 02_wind_on 2 197 2030 1.0 0.0 -de 03_wind_off 2 197 2030 0.0 0.0 -de 04_res 2 197 2030 0.0 0.0 -de 05_nuclear 2 197 2030 0.0 0.0 -de 06_coal 2 197 2030 0.0 0.0 -de 07_gas 2 197 2030 0.0 0.0 -de 08_non-res 2 197 2030 0.0 0.0 -de 09_hydro_pump 2 197 2030 0.0 0.0 -de 01_solar 2 198 2030 1.0 0.0 -de 02_wind_on 2 198 2030 1.0 0.0 -de 03_wind_off 2 198 2030 0.0 0.0 -de 04_res 2 198 2030 0.0 0.0 -de 05_nuclear 2 198 2030 0.0 0.0 -de 06_coal 2 198 2030 0.0 0.0 -de 07_gas 2 198 2030 0.0 0.0 -de 08_non-res 2 198 2030 0.0 0.0 -de 09_hydro_pump 2 198 2030 0.0 0.0 -de 01_solar 2 199 2030 1.0 0.0 -de 02_wind_on 2 199 2030 1.0 0.0 -de 03_wind_off 2 199 2030 0.0 0.0 -de 04_res 2 199 2030 0.0 0.0 -de 05_nuclear 2 199 2030 0.0 0.0 -de 06_coal 2 199 2030 0.0 0.0 -de 07_gas 2 199 2030 0.0 0.0 -de 08_non-res 2 199 2030 0.0 0.0 -de 09_hydro_pump 2 199 2030 0.0 0.0 -de 01_solar 2 200 2030 1.0 0.0 -de 02_wind_on 2 200 2030 1.0 0.0 -de 03_wind_off 2 200 2030 0.0 0.0 -de 04_res 2 200 2030 0.0 0.0 -de 05_nuclear 2 200 2030 0.0 0.0 -de 06_coal 2 200 2030 0.0 0.0 -de 07_gas 2 200 2030 0.0 0.0 -de 08_non-res 2 200 2030 0.0 0.0 -de 09_hydro_pump 2 200 2030 0.0 0.0 -de 01_solar 2 201 2030 1.0 0.0 -de 02_wind_on 2 201 2030 1.0 0.0 -de 03_wind_off 2 201 2030 0.0 0.0 -de 04_res 2 201 2030 0.0 0.0 -de 05_nuclear 2 201 2030 0.0 0.0 -de 06_coal 2 201 2030 0.0 0.0 -de 07_gas 2 201 2030 0.0 0.0 -de 08_non-res 2 201 2030 0.0 0.0 -de 09_hydro_pump 2 201 2030 0.0 0.0 -de 01_solar 2 202 2030 1.0 0.0 -de 02_wind_on 2 202 2030 1.0 0.0 -de 03_wind_off 2 202 2030 0.0 0.0 -de 04_res 2 202 2030 0.0 0.0 -de 05_nuclear 2 202 2030 0.0 0.0 -de 06_coal 2 202 2030 0.0 0.0 -de 07_gas 2 202 2030 0.0 0.0 -de 08_non-res 2 202 2030 0.0 0.0 -de 09_hydro_pump 2 202 2030 0.0 0.0 -de 01_solar 2 203 2030 1.0 0.0 -de 02_wind_on 2 203 2030 1.0 0.0 -de 03_wind_off 2 203 2030 0.0 0.0 -de 04_res 2 203 2030 0.0 0.0 -de 05_nuclear 2 203 2030 0.0 0.0 -de 06_coal 2 203 2030 0.0 0.0 -de 07_gas 2 203 2030 0.0 0.0 -de 08_non-res 2 203 2030 0.0 0.0 -de 09_hydro_pump 2 203 2030 0.0 0.0 -de 01_solar 2 204 2030 1.0 0.0 -de 02_wind_on 2 204 2030 1.0 0.0 -de 03_wind_off 2 204 2030 0.0 0.0 -de 04_res 2 204 2030 0.0 0.0 -de 05_nuclear 2 204 2030 0.0 0.0 -de 06_coal 2 204 2030 0.0 0.0 -de 07_gas 2 204 2030 0.0 0.0 -de 08_non-res 2 204 2030 0.0 0.0 -de 09_hydro_pump 2 204 2030 0.0 0.0 -de 01_solar 2 205 2030 1.0 0.0 -de 02_wind_on 2 205 2030 1.0 0.0 -de 03_wind_off 2 205 2030 0.0 0.0 -de 04_res 2 205 2030 0.0 0.0 -de 05_nuclear 2 205 2030 0.0 0.0 -de 06_coal 2 205 2030 0.0 0.0 -de 07_gas 2 205 2030 0.0 0.0 -de 08_non-res 2 205 2030 0.0 0.0 -de 09_hydro_pump 2 205 2030 0.0 0.0 -de 01_solar 2 206 2030 1.0 0.0 -de 02_wind_on 2 206 2030 1.0 0.0 -de 03_wind_off 2 206 2030 0.0 0.0 -de 04_res 2 206 2030 0.0 0.0 -de 05_nuclear 2 206 2030 0.0 0.0 -de 06_coal 2 206 2030 0.0 0.0 -de 07_gas 2 206 2030 0.0 0.0 -de 08_non-res 2 206 2030 0.0 0.0 -de 09_hydro_pump 2 206 2030 0.0 0.0 -de 01_solar 2 207 2030 1.0 0.0 -de 02_wind_on 2 207 2030 1.0 0.0 -de 03_wind_off 2 207 2030 0.0 0.0 -de 04_res 2 207 2030 0.0 0.0 -de 05_nuclear 2 207 2030 0.0 0.0 -de 06_coal 2 207 2030 0.0 0.0 -de 07_gas 2 207 2030 0.0 0.0 -de 08_non-res 2 207 2030 0.0 0.0 -de 09_hydro_pump 2 207 2030 0.0 0.0 -de 01_solar 2 208 2030 1.0 0.0 -de 02_wind_on 2 208 2030 1.0 0.0 -de 03_wind_off 2 208 2030 0.0 0.0 -de 04_res 2 208 2030 0.0 0.0 -de 05_nuclear 2 208 2030 0.0 0.0 -de 06_coal 2 208 2030 0.0 0.0 -de 07_gas 2 208 2030 0.0 0.0 -de 08_non-res 2 208 2030 0.0 0.0 -de 09_hydro_pump 2 208 2030 0.0 0.0 -de 01_solar 2 209 2030 1.0 0.0 -de 02_wind_on 2 209 2030 1.0 0.0 -de 03_wind_off 2 209 2030 0.0 0.0 -de 04_res 2 209 2030 0.0 0.0 -de 05_nuclear 2 209 2030 0.0 0.0 -de 06_coal 2 209 2030 0.0 0.0 -de 07_gas 2 209 2030 0.0 0.0 -de 08_non-res 2 209 2030 0.0 0.0 -de 09_hydro_pump 2 209 2030 0.0 0.0 -de 01_solar 2 210 2030 1.0 0.0 -de 02_wind_on 2 210 2030 1.0 0.0 -de 03_wind_off 2 210 2030 1.0 0.0 -de 04_res 2 210 2030 0.0 0.0 -de 05_nuclear 2 210 2030 0.0 0.0 -de 06_coal 2 210 2030 0.0 0.0 -de 07_gas 2 210 2030 0.0 0.0 -de 08_non-res 2 210 2030 0.0 0.0 -de 09_hydro_pump 2 210 2030 0.0 0.0 -de 01_solar 2 211 2030 1.0 0.0 -de 02_wind_on 2 211 2030 1.0 0.0 -de 03_wind_off 2 211 2030 1.0 0.0 -de 04_res 2 211 2030 0.0 0.0 -de 05_nuclear 2 211 2030 0.0 0.0 -de 06_coal 2 211 2030 0.0 0.0 -de 07_gas 2 211 2030 0.0 0.0 -de 08_non-res 2 211 2030 0.0 0.0 -de 09_hydro_pump 2 211 2030 0.0 0.0 -de 01_solar 2 212 2030 1.0 0.0 -de 02_wind_on 2 212 2030 1.0 0.0 -de 03_wind_off 2 212 2030 1.0 0.0 -de 04_res 2 212 2030 0.0 0.0 -de 05_nuclear 2 212 2030 0.0 0.0 -de 06_coal 2 212 2030 0.0 0.0 -de 07_gas 2 212 2030 0.0 0.0 -de 08_non-res 2 212 2030 0.0 0.0 -de 09_hydro_pump 2 212 2030 0.0 0.0 -de 01_solar 2 213 2030 1.0 0.0 -de 02_wind_on 2 213 2030 1.0 0.0 -de 03_wind_off 2 213 2030 1.0 0.0 -de 04_res 2 213 2030 0.0 0.0 -de 05_nuclear 2 213 2030 0.0 0.0 -de 06_coal 2 213 2030 0.0 0.0 -de 07_gas 2 213 2030 0.0 0.0 -de 08_non-res 2 213 2030 0.0 0.0 -de 09_hydro_pump 2 213 2030 0.0 0.0 -de 01_solar 2 214 2030 1.0 0.0 -de 02_wind_on 2 214 2030 1.0 0.0 -de 03_wind_off 2 214 2030 1.0 0.0 -de 04_res 2 214 2030 0.0 0.0 -de 05_nuclear 2 214 2030 0.0 0.0 -de 06_coal 2 214 2030 0.0 0.0 -de 07_gas 2 214 2030 0.0 0.0 -de 08_non-res 2 214 2030 0.0 0.0 -de 09_hydro_pump 2 214 2030 0.0 0.0 -de 01_solar 2 215 2030 1.0 0.0 -de 02_wind_on 2 215 2030 1.0 0.0 -de 03_wind_off 2 215 2030 1.0 0.0 -de 04_res 2 215 2030 0.0 0.0 -de 05_nuclear 2 215 2030 0.0 0.0 -de 06_coal 2 215 2030 0.0 0.0 -de 07_gas 2 215 2030 0.0 0.0 -de 08_non-res 2 215 2030 0.0 0.0 -de 09_hydro_pump 2 215 2030 0.0 0.0 -de 01_solar 2 216 2030 1.0 0.0 -de 02_wind_on 2 216 2030 1.0 0.0 -de 03_wind_off 2 216 2030 1.0 0.0 -de 04_res 2 216 2030 0.0 0.0 -de 05_nuclear 2 216 2030 0.0 0.0 -de 06_coal 2 216 2030 0.0 0.0 -de 07_gas 2 216 2030 0.0 0.0 -de 08_non-res 2 216 2030 0.0 0.0 -de 09_hydro_pump 2 216 2030 0.0 0.0 -de 01_solar 2 217 2030 1.0 0.0 -de 02_wind_on 2 217 2030 1.0 0.0 -de 03_wind_off 2 217 2030 1.0 0.0 -de 04_res 2 217 2030 0.0 0.0 -de 05_nuclear 2 217 2030 0.0 0.0 -de 06_coal 2 217 2030 0.0 0.0 -de 07_gas 2 217 2030 0.0 0.0 -de 08_non-res 2 217 2030 0.0 0.0 -de 09_hydro_pump 2 217 2030 0.0 0.0 -de 01_solar 2 218 2030 1.0 0.0 -de 02_wind_on 2 218 2030 1.0 0.0 -de 03_wind_off 2 218 2030 1.0 0.0 -de 04_res 2 218 2030 0.0 0.0 -de 05_nuclear 2 218 2030 0.0 0.0 -de 06_coal 2 218 2030 0.0 0.0 -de 07_gas 2 218 2030 0.0 0.0 -de 08_non-res 2 218 2030 0.0 0.0 -de 09_hydro_pump 2 218 2030 0.0 0.0 -de 01_solar 2 219 2030 1.0 0.0 -de 02_wind_on 2 219 2030 1.0 0.0 -de 03_wind_off 2 219 2030 1.0 0.0 -de 04_res 2 219 2030 0.0 0.0 -de 05_nuclear 2 219 2030 0.0 0.0 -de 06_coal 2 219 2030 0.0 0.0 -de 07_gas 2 219 2030 0.0 0.0 -de 08_non-res 2 219 2030 0.0 0.0 -de 09_hydro_pump 2 219 2030 0.0 0.0 -de 01_solar 2 220 2030 1.0 0.0 -de 02_wind_on 2 220 2030 1.0 0.0 -de 03_wind_off 2 220 2030 1.0 0.0 -de 04_res 2 220 2030 0.0 0.0 -de 05_nuclear 2 220 2030 0.0 0.0 -de 06_coal 2 220 2030 0.0 0.0 -de 07_gas 2 220 2030 0.0 0.0 -de 08_non-res 2 220 2030 0.0 0.0 -de 09_hydro_pump 2 220 2030 0.0 0.0 -de 01_solar 2 221 2030 1.0 0.0 -de 02_wind_on 2 221 2030 1.0 0.0 -de 03_wind_off 2 221 2030 1.0 0.0 -de 04_res 2 221 2030 0.0 0.0 -de 05_nuclear 2 221 2030 0.0 0.0 -de 06_coal 2 221 2030 0.0 0.0 -de 07_gas 2 221 2030 0.0 0.0 -de 08_non-res 2 221 2030 0.0 0.0 -de 09_hydro_pump 2 221 2030 0.0 0.0 -de 01_solar 2 222 2030 1.0 0.0 -de 02_wind_on 2 222 2030 1.0 0.0 -de 03_wind_off 2 222 2030 1.0 0.0 -de 04_res 2 222 2030 0.0 0.0 -de 05_nuclear 2 222 2030 0.0 0.0 -de 06_coal 2 222 2030 0.0 0.0 -de 07_gas 2 222 2030 0.0 0.0 -de 08_non-res 2 222 2030 0.0 0.0 -de 09_hydro_pump 2 222 2030 0.0 0.0 -de 01_solar 2 223 2030 1.0 0.0 -de 02_wind_on 2 223 2030 1.0 0.0 -de 03_wind_off 2 223 2030 1.0 0.0 -de 04_res 2 223 2030 0.0 0.0 -de 05_nuclear 2 223 2030 0.0 0.0 -de 06_coal 2 223 2030 0.0 0.0 -de 07_gas 2 223 2030 0.0 0.0 -de 08_non-res 2 223 2030 0.0 0.0 -de 09_hydro_pump 2 223 2030 0.0 0.0 -de 01_solar 2 224 2030 1.0 0.0 -de 02_wind_on 2 224 2030 1.0 0.0 -de 03_wind_off 2 224 2030 1.0 0.0 -de 04_res 2 224 2030 0.0 0.0 -de 05_nuclear 2 224 2030 0.0 0.0 -de 06_coal 2 224 2030 0.0 0.0 -de 07_gas 2 224 2030 0.0 0.0 -de 08_non-res 2 224 2030 0.0 0.0 -de 09_hydro_pump 2 224 2030 0.0 0.0 -de 01_solar 2 225 2030 1.0 0.0 -de 02_wind_on 2 225 2030 1.0 0.0 -de 03_wind_off 2 225 2030 1.0 0.0 -de 04_res 2 225 2030 0.0 0.0 -de 05_nuclear 2 225 2030 0.0 0.0 -de 06_coal 2 225 2030 0.0 0.0 -de 07_gas 2 225 2030 0.0 0.0 -de 08_non-res 2 225 2030 0.0 0.0 -de 09_hydro_pump 2 225 2030 0.0 0.0 -de 01_solar 2 226 2030 1.0 0.0 -de 02_wind_on 2 226 2030 1.0 0.0 -de 03_wind_off 2 226 2030 1.0 0.0 -de 04_res 2 226 2030 0.0 0.0 -de 05_nuclear 2 226 2030 0.0 0.0 -de 06_coal 2 226 2030 0.0 0.0 -de 07_gas 2 226 2030 0.0 0.0 -de 08_non-res 2 226 2030 0.0 0.0 -de 09_hydro_pump 2 226 2030 0.0 0.0 -de 01_solar 2 227 2030 1.0 0.0 -de 02_wind_on 2 227 2030 1.0 0.0 -de 03_wind_off 2 227 2030 1.0 0.0 -de 04_res 2 227 2030 0.0 0.0 -de 05_nuclear 2 227 2030 0.0 0.0 -de 06_coal 2 227 2030 0.0 0.0 -de 07_gas 2 227 2030 0.0 0.0 -de 08_non-res 2 227 2030 0.0 0.0 -de 09_hydro_pump 2 227 2030 0.0 0.0 -de 01_solar 2 228 2030 1.0 0.0 -de 02_wind_on 2 228 2030 1.0 0.0 -de 03_wind_off 2 228 2030 1.0 0.0 -de 04_res 2 228 2030 0.0 0.0 -de 05_nuclear 2 228 2030 0.0 0.0 -de 06_coal 2 228 2030 0.0 0.0 -de 07_gas 2 228 2030 0.0 0.0 -de 08_non-res 2 228 2030 0.0 0.0 -de 09_hydro_pump 2 228 2030 0.0 0.0 -de 01_solar 2 229 2030 1.0 0.0 -de 02_wind_on 2 229 2030 1.0 0.0 -de 03_wind_off 2 229 2030 1.0 0.0 -de 04_res 2 229 2030 0.0 0.0 -de 05_nuclear 2 229 2030 0.0 0.0 -de 06_coal 2 229 2030 0.0 0.0 -de 07_gas 2 229 2030 0.0 0.0 -de 08_non-res 2 229 2030 0.0 0.0 -de 09_hydro_pump 2 229 2030 0.0 0.0 -de 01_solar 2 230 2030 1.0 0.0 -de 02_wind_on 2 230 2030 1.0 0.0 -de 03_wind_off 2 230 2030 1.0 0.0 -de 04_res 2 230 2030 1.0 0.0 -de 05_nuclear 2 230 2030 0.0 0.0 -de 06_coal 2 230 2030 0.0 0.0 -de 07_gas 2 230 2030 0.0 0.0 -de 08_non-res 2 230 2030 0.0 0.0 -de 09_hydro_pump 2 230 2030 0.0 0.0 -de 01_solar 2 231 2030 1.0 0.0 -de 02_wind_on 2 231 2030 1.0 0.0 -de 03_wind_off 2 231 2030 1.0 0.0 -de 04_res 2 231 2030 1.0 0.0 -de 05_nuclear 2 231 2030 0.0 0.0 -de 06_coal 2 231 2030 0.0 0.0 -de 07_gas 2 231 2030 0.0 0.0 -de 08_non-res 2 231 2030 0.0 0.0 -de 09_hydro_pump 2 231 2030 0.0 0.0 -de 01_solar 2 232 2030 1.0 0.0 -de 02_wind_on 2 232 2030 1.0 0.0 -de 03_wind_off 2 232 2030 1.0 0.0 -de 04_res 2 232 2030 1.0 0.0 -de 05_nuclear 2 232 2030 0.0 0.0 -de 06_coal 2 232 2030 0.0 0.0 -de 07_gas 2 232 2030 0.0 0.0 -de 08_non-res 2 232 2030 0.0 0.0 -de 09_hydro_pump 2 232 2030 0.0 0.0 -de 01_solar 2 233 2030 1.0 0.0 -de 02_wind_on 2 233 2030 1.0 0.0 -de 03_wind_off 2 233 2030 1.0 0.0 -de 04_res 2 233 2030 1.0 0.0 -de 05_nuclear 2 233 2030 0.0 0.0 -de 06_coal 2 233 2030 0.0 0.0 -de 07_gas 2 233 2030 0.0 0.0 -de 08_non-res 2 233 2030 0.0 0.0 -de 09_hydro_pump 2 233 2030 0.0 0.0 -de 01_solar 2 234 2030 1.0 0.0 -de 02_wind_on 2 234 2030 1.0 0.0 -de 03_wind_off 2 234 2030 1.0 0.0 -de 04_res 2 234 2030 1.0 0.0 -de 05_nuclear 2 234 2030 0.0 0.0 -de 06_coal 2 234 2030 0.0 0.0 -de 07_gas 2 234 2030 0.0 0.0 -de 08_non-res 2 234 2030 0.0 0.0 -de 09_hydro_pump 2 234 2030 0.0 0.0 -de 01_solar 2 235 2030 1.0 0.0 -de 02_wind_on 2 235 2030 1.0 0.0 -de 03_wind_off 2 235 2030 1.0 0.0 -de 04_res 2 235 2030 1.0 0.0 -de 05_nuclear 2 235 2030 0.0 0.0 -de 06_coal 2 235 2030 0.0 0.0 -de 07_gas 2 235 2030 0.0 0.0 -de 08_non-res 2 235 2030 0.0 0.0 -de 09_hydro_pump 2 235 2030 0.0 0.0 -de 01_solar 2 236 2030 1.0 0.0 -de 02_wind_on 2 236 2030 1.0 0.0 -de 03_wind_off 2 236 2030 1.0 0.0 -de 04_res 2 236 2030 1.0 0.0 -de 05_nuclear 2 236 2030 0.0 0.0 -de 06_coal 2 236 2030 0.0 0.0 -de 07_gas 2 236 2030 0.0 0.0 -de 08_non-res 2 236 2030 0.0 0.0 -de 09_hydro_pump 2 236 2030 0.0 0.0 -de 01_solar 2 237 2030 1.0 0.0 -de 02_wind_on 2 237 2030 1.0 0.0 -de 03_wind_off 2 237 2030 1.0 0.0 -de 04_res 2 237 2030 1.0 0.0 -de 05_nuclear 2 237 2030 0.0 0.0 -de 06_coal 2 237 2030 0.0 0.0 -de 07_gas 2 237 2030 0.0 0.0 -de 08_non-res 2 237 2030 0.0 0.0 -de 09_hydro_pump 2 237 2030 0.0 0.0 -de 01_solar 2 238 2030 1.0 0.0 -de 02_wind_on 2 238 2030 1.0 0.0 -de 03_wind_off 2 238 2030 1.0 0.0 -de 04_res 2 238 2030 1.0 0.0 -de 05_nuclear 2 238 2030 0.0 0.0 -de 06_coal 2 238 2030 0.0 0.0 -de 07_gas 2 238 2030 0.0 0.0 -de 08_non-res 2 238 2030 0.0 0.0 -de 09_hydro_pump 2 238 2030 0.0 0.0 -de 01_solar 2 239 2030 1.0 0.0 -de 02_wind_on 2 239 2030 1.0 0.0 -de 03_wind_off 2 239 2030 1.0 0.0 -de 04_res 2 239 2030 1.0 0.0 -de 05_nuclear 2 239 2030 0.0 0.0 -de 06_coal 2 239 2030 0.0 0.0 -de 07_gas 2 239 2030 0.0 0.0 -de 08_non-res 2 239 2030 0.0 0.0 -de 09_hydro_pump 2 239 2030 0.0 0.0 -de 01_solar 2 240 2030 1.0 0.0 -de 02_wind_on 2 240 2030 1.0 0.0 -de 03_wind_off 2 240 2030 1.0 0.0 -de 04_res 2 240 2030 1.0 0.0 -de 05_nuclear 2 240 2030 0.0 0.0 -de 06_coal 2 240 2030 0.0 0.0 -de 07_gas 2 240 2030 0.0 0.0 -de 08_non-res 2 240 2030 0.0 0.0 -de 09_hydro_pump 2 240 2030 0.0 0.0 -de 01_solar 2 241 2030 1.0 0.0 -de 02_wind_on 2 241 2030 1.0 0.0 -de 03_wind_off 2 241 2030 1.0 0.0 -de 04_res 2 241 2030 1.0 0.0 -de 05_nuclear 2 241 2030 0.0 0.0 -de 06_coal 2 241 2030 0.0 0.0 -de 07_gas 2 241 2030 0.0 0.0 -de 08_non-res 2 241 2030 0.0 0.0 -de 09_hydro_pump 2 241 2030 0.0 0.0 -de 01_solar 2 242 2030 1.0 0.0 -de 02_wind_on 2 242 2030 1.0 0.0 -de 03_wind_off 2 242 2030 1.0 0.0 -de 04_res 2 242 2030 1.0 0.0 -de 05_nuclear 2 242 2030 0.0 0.0 -de 06_coal 2 242 2030 0.0 0.0 -de 07_gas 2 242 2030 0.0 0.0 -de 08_non-res 2 242 2030 0.0 0.0 -de 09_hydro_pump 2 242 2030 0.0 0.0 -de 01_solar 2 243 2030 1.0 0.0 -de 02_wind_on 2 243 2030 1.0 0.0 -de 03_wind_off 2 243 2030 1.0 0.0 -de 04_res 2 243 2030 1.0 0.0 -de 05_nuclear 2 243 2030 0.0 0.0 -de 06_coal 2 243 2030 0.0 0.0 -de 07_gas 2 243 2030 0.0 0.0 -de 08_non-res 2 243 2030 0.0 0.0 -de 09_hydro_pump 2 243 2030 0.0 0.0 -de 01_solar 2 244 2030 1.0 0.0 -de 02_wind_on 2 244 2030 1.0 0.0 -de 03_wind_off 2 244 2030 1.0 0.0 -de 04_res 2 244 2030 1.0 0.0 -de 05_nuclear 2 244 2030 0.0 0.0 -de 06_coal 2 244 2030 0.0 0.0 -de 07_gas 2 244 2030 0.0 0.0 -de 08_non-res 2 244 2030 0.0 0.0 -de 09_hydro_pump 2 244 2030 0.0 0.0 -de 01_solar 2 245 2030 1.0 0.0 -de 02_wind_on 2 245 2030 1.0 0.0 -de 03_wind_off 2 245 2030 1.0 0.0 -de 04_res 2 245 2030 1.0 0.0 -de 05_nuclear 2 245 2030 0.0 0.0 -de 06_coal 2 245 2030 0.0 0.0 -de 07_gas 2 245 2030 0.0 0.0 -de 08_non-res 2 245 2030 0.0 0.0 -de 09_hydro_pump 2 245 2030 0.0 0.0 -de 01_solar 2 246 2030 1.0 0.0 -de 02_wind_on 2 246 2030 1.0 0.0 -de 03_wind_off 2 246 2030 1.0 0.0 -de 04_res 2 246 2030 1.0 0.0 -de 05_nuclear 2 246 2030 0.0 0.0 -de 06_coal 2 246 2030 0.0 0.0 -de 07_gas 2 246 2030 0.0 0.0 -de 08_non-res 2 246 2030 0.0 0.0 -de 09_hydro_pump 2 246 2030 0.0 0.0 -de 01_solar 2 247 2030 1.0 0.0 -de 02_wind_on 2 247 2030 1.0 0.0 -de 03_wind_off 2 247 2030 1.0 0.0 -de 04_res 2 247 2030 1.0 0.0 -de 05_nuclear 2 247 2030 0.0 0.0 -de 06_coal 2 247 2030 0.0 0.0 -de 07_gas 2 247 2030 0.0 0.0 -de 08_non-res 2 247 2030 0.0 0.0 -de 09_hydro_pump 2 247 2030 0.0 0.0 -de 01_solar 2 248 2030 1.0 0.0 -de 02_wind_on 2 248 2030 1.0 0.0 -de 03_wind_off 2 248 2030 1.0 0.0 -de 04_res 2 248 2030 1.0 0.0 -de 05_nuclear 2 248 2030 0.0 0.0 -de 06_coal 2 248 2030 0.0 0.0 -de 07_gas 2 248 2030 0.0 0.0 -de 08_non-res 2 248 2030 0.0 0.0 -de 09_hydro_pump 2 248 2030 0.0 0.0 -de 01_solar 2 249 2030 1.0 0.0 -de 02_wind_on 2 249 2030 1.0 0.0 -de 03_wind_off 2 249 2030 1.0 0.0 -de 04_res 2 249 2030 1.0 0.0 -de 05_nuclear 2 249 2030 0.0 0.0 -de 06_coal 2 249 2030 0.0 0.0 -de 07_gas 2 249 2030 0.0 0.0 -de 08_non-res 2 249 2030 0.0 0.0 -de 09_hydro_pump 2 249 2030 0.0 0.0 -de 01_solar 2 250 2030 1.0 0.0 -de 02_wind_on 2 250 2030 1.0 0.0 -de 03_wind_off 2 250 2030 1.0 0.0 -de 04_res 2 250 2030 1.0 0.0 -de 05_nuclear 2 250 2030 1.0 0.0 -de 06_coal 2 250 2030 0.0 0.0 -de 07_gas 2 250 2030 0.0 0.0 -de 08_non-res 2 250 2030 0.0 0.0 -de 09_hydro_pump 2 250 2030 0.0 0.0 -de 01_solar 2 251 2030 1.0 0.0 -de 02_wind_on 2 251 2030 1.0 0.0 -de 03_wind_off 2 251 2030 1.0 0.0 -de 04_res 2 251 2030 1.0 0.0 -de 05_nuclear 2 251 2030 1.0 0.0 -de 06_coal 2 251 2030 0.0 0.0 -de 07_gas 2 251 2030 0.0 0.0 -de 08_non-res 2 251 2030 0.0 0.0 -de 09_hydro_pump 2 251 2030 0.0 0.0 -de 01_solar 2 252 2030 1.0 0.0 -de 02_wind_on 2 252 2030 1.0 0.0 -de 03_wind_off 2 252 2030 1.0 0.0 -de 04_res 2 252 2030 1.0 0.0 -de 05_nuclear 2 252 2030 1.0 0.0 -de 06_coal 2 252 2030 0.0 0.0 -de 07_gas 2 252 2030 0.0 0.0 -de 08_non-res 2 252 2030 0.0 0.0 -de 09_hydro_pump 2 252 2030 0.0 0.0 -de 01_solar 2 253 2030 1.0 0.0 -de 02_wind_on 2 253 2030 1.0 0.0 -de 03_wind_off 2 253 2030 1.0 0.0 -de 04_res 2 253 2030 1.0 0.0 -de 05_nuclear 2 253 2030 1.0 0.0 -de 06_coal 2 253 2030 0.0 0.0 -de 07_gas 2 253 2030 0.0 0.0 -de 08_non-res 2 253 2030 0.0 0.0 -de 09_hydro_pump 2 253 2030 0.0 0.0 -de 01_solar 2 254 2030 1.0 0.0 -de 02_wind_on 2 254 2030 1.0 0.0 -de 03_wind_off 2 254 2030 1.0 0.0 -de 04_res 2 254 2030 1.0 0.0 -de 05_nuclear 2 254 2030 1.0 0.0 -de 06_coal 2 254 2030 0.0 0.0 -de 07_gas 2 254 2030 0.0 0.0 -de 08_non-res 2 254 2030 0.0 0.0 -de 09_hydro_pump 2 254 2030 0.0 0.0 -de 01_solar 2 255 2030 1.0 0.0 -de 02_wind_on 2 255 2030 1.0 0.0 -de 03_wind_off 2 255 2030 1.0 0.0 -de 04_res 2 255 2030 1.0 0.0 -de 05_nuclear 2 255 2030 1.0 0.0 -de 06_coal 2 255 2030 0.0 0.0 -de 07_gas 2 255 2030 0.0 0.0 -de 08_non-res 2 255 2030 0.0 0.0 -de 09_hydro_pump 2 255 2030 0.0 0.0 -de 01_solar 2 256 2030 1.0 0.0 -de 02_wind_on 2 256 2030 1.0 0.0 -de 03_wind_off 2 256 2030 1.0 0.0 -de 04_res 2 256 2030 1.0 0.0 -de 05_nuclear 2 256 2030 1.0 0.0 -de 06_coal 2 256 2030 0.0 0.0 -de 07_gas 2 256 2030 0.0 0.0 -de 08_non-res 2 256 2030 0.0 0.0 -de 09_hydro_pump 2 256 2030 0.0 0.0 -de 01_solar 2 257 2030 1.0 0.0 -de 02_wind_on 2 257 2030 1.0 0.0 -de 03_wind_off 2 257 2030 1.0 0.0 -de 04_res 2 257 2030 1.0 0.0 -de 05_nuclear 2 257 2030 1.0 0.0 -de 06_coal 2 257 2030 0.0 0.0 -de 07_gas 2 257 2030 0.0 0.0 -de 08_non-res 2 257 2030 0.0 0.0 -de 09_hydro_pump 2 257 2030 0.0 0.0 -de 01_solar 2 258 2030 1.0 0.0 -de 02_wind_on 2 258 2030 1.0 0.0 -de 03_wind_off 2 258 2030 1.0 0.0 -de 04_res 2 258 2030 1.0 0.0 -de 05_nuclear 2 258 2030 1.0 0.0 -de 06_coal 2 258 2030 0.0 0.0 -de 07_gas 2 258 2030 0.0 0.0 -de 08_non-res 2 258 2030 0.0 0.0 -de 09_hydro_pump 2 258 2030 0.0 0.0 -de 01_solar 2 259 2030 1.0 0.0 -de 02_wind_on 2 259 2030 1.0 0.0 -de 03_wind_off 2 259 2030 1.0 0.0 -de 04_res 2 259 2030 1.0 0.0 -de 05_nuclear 2 259 2030 1.0 0.0 -de 06_coal 2 259 2030 0.0 0.0 -de 07_gas 2 259 2030 0.0 0.0 -de 08_non-res 2 259 2030 0.0 0.0 -de 09_hydro_pump 2 259 2030 0.0 0.0 -de 01_solar 2 260 2030 1.0 0.0 -de 02_wind_on 2 260 2030 1.0 0.0 -de 03_wind_off 2 260 2030 1.0 0.0 -de 04_res 2 260 2030 1.0 0.0 -de 05_nuclear 2 260 2030 1.0 0.0 -de 06_coal 2 260 2030 0.0 0.0 -de 07_gas 2 260 2030 0.0 0.0 -de 08_non-res 2 260 2030 0.0 0.0 -de 09_hydro_pump 2 260 2030 0.0 0.0 -de 01_solar 2 261 2030 1.0 0.0 -de 02_wind_on 2 261 2030 1.0 0.0 -de 03_wind_off 2 261 2030 1.0 0.0 -de 04_res 2 261 2030 1.0 0.0 -de 05_nuclear 2 261 2030 1.0 0.0 -de 06_coal 2 261 2030 0.0 0.0 -de 07_gas 2 261 2030 0.0 0.0 -de 08_non-res 2 261 2030 0.0 0.0 -de 09_hydro_pump 2 261 2030 0.0 0.0 -de 01_solar 2 262 2030 1.0 0.0 -de 02_wind_on 2 262 2030 1.0 0.0 -de 03_wind_off 2 262 2030 1.0 0.0 -de 04_res 2 262 2030 1.0 0.0 -de 05_nuclear 2 262 2030 1.0 0.0 -de 06_coal 2 262 2030 0.0 0.0 -de 07_gas 2 262 2030 0.0 0.0 -de 08_non-res 2 262 2030 0.0 0.0 -de 09_hydro_pump 2 262 2030 0.0 0.0 -de 01_solar 2 263 2030 1.0 0.0 -de 02_wind_on 2 263 2030 1.0 0.0 -de 03_wind_off 2 263 2030 1.0 0.0 -de 04_res 2 263 2030 1.0 0.0 -de 05_nuclear 2 263 2030 1.0 0.0 -de 06_coal 2 263 2030 0.0 0.0 -de 07_gas 2 263 2030 0.0 0.0 -de 08_non-res 2 263 2030 0.0 0.0 -de 09_hydro_pump 2 263 2030 0.0 0.0 -de 01_solar 2 264 2030 1.0 0.0 -de 02_wind_on 2 264 2030 1.0 0.0 -de 03_wind_off 2 264 2030 1.0 0.0 -de 04_res 2 264 2030 1.0 0.0 -de 05_nuclear 2 264 2030 1.0 0.0 -de 06_coal 2 264 2030 0.0 0.0 -de 07_gas 2 264 2030 0.0 0.0 -de 08_non-res 2 264 2030 0.0 0.0 -de 09_hydro_pump 2 264 2030 0.0 0.0 -de 01_solar 2 265 2030 1.0 0.0 -de 02_wind_on 2 265 2030 1.0 0.0 -de 03_wind_off 2 265 2030 1.0 0.0 -de 04_res 2 265 2030 1.0 0.0 -de 05_nuclear 2 265 2030 1.0 0.0 -de 06_coal 2 265 2030 0.0 0.0 -de 07_gas 2 265 2030 0.0 0.0 -de 08_non-res 2 265 2030 0.0 0.0 -de 09_hydro_pump 2 265 2030 0.0 0.0 -de 01_solar 2 266 2030 1.0 0.0 -de 02_wind_on 2 266 2030 1.0 0.0 -de 03_wind_off 2 266 2030 1.0 0.0 -de 04_res 2 266 2030 1.0 0.0 -de 05_nuclear 2 266 2030 1.0 0.0 -de 06_coal 2 266 2030 0.0 0.0 -de 07_gas 2 266 2030 0.0 0.0 -de 08_non-res 2 266 2030 0.0 0.0 -de 09_hydro_pump 2 266 2030 0.0 0.0 -de 01_solar 2 267 2030 1.0 0.0 -de 02_wind_on 2 267 2030 1.0 0.0 -de 03_wind_off 2 267 2030 1.0 0.0 -de 04_res 2 267 2030 1.0 0.0 -de 05_nuclear 2 267 2030 1.0 0.0 -de 06_coal 2 267 2030 0.0 0.0 -de 07_gas 2 267 2030 0.0 0.0 -de 08_non-res 2 267 2030 0.0 0.0 -de 09_hydro_pump 2 267 2030 0.0 0.0 -de 01_solar 2 268 2030 1.0 0.0 -de 02_wind_on 2 268 2030 1.0 0.0 -de 03_wind_off 2 268 2030 1.0 0.0 -de 04_res 2 268 2030 1.0 0.0 -de 05_nuclear 2 268 2030 1.0 0.0 -de 06_coal 2 268 2030 0.0 0.0 -de 07_gas 2 268 2030 0.0 0.0 -de 08_non-res 2 268 2030 0.0 0.0 -de 09_hydro_pump 2 268 2030 0.0 0.0 -de 01_solar 2 269 2030 1.0 0.0 -de 02_wind_on 2 269 2030 1.0 0.0 -de 03_wind_off 2 269 2030 1.0 0.0 -de 04_res 2 269 2030 1.0 0.0 -de 05_nuclear 2 269 2030 1.0 0.0 -de 06_coal 2 269 2030 0.0 0.0 -de 07_gas 2 269 2030 0.0 0.0 -de 08_non-res 2 269 2030 0.0 0.0 -de 09_hydro_pump 2 269 2030 0.0 0.0 -de 01_solar 2 270 2030 1.0 0.0 -de 02_wind_on 2 270 2030 1.0 0.0 -de 03_wind_off 2 270 2030 1.0 0.0 -de 04_res 2 270 2030 1.0 0.0 -de 05_nuclear 2 270 2030 1.0 0.0 -de 06_coal 2 270 2030 1.0 0.0 -de 07_gas 2 270 2030 0.0 0.0 -de 08_non-res 2 270 2030 0.0 0.0 -de 09_hydro_pump 2 270 2030 0.0 0.0 -de 01_solar 2 271 2030 1.0 0.0 -de 02_wind_on 2 271 2030 1.0 0.0 -de 03_wind_off 2 271 2030 1.0 0.0 -de 04_res 2 271 2030 1.0 0.0 -de 05_nuclear 2 271 2030 1.0 0.0 -de 06_coal 2 271 2030 1.0 0.0 -de 07_gas 2 271 2030 0.0 0.0 -de 08_non-res 2 271 2030 0.0 0.0 -de 09_hydro_pump 2 271 2030 0.0 0.0 -de 01_solar 2 272 2030 1.0 0.0 -de 02_wind_on 2 272 2030 1.0 0.0 -de 03_wind_off 2 272 2030 1.0 0.0 -de 04_res 2 272 2030 1.0 0.0 -de 05_nuclear 2 272 2030 1.0 0.0 -de 06_coal 2 272 2030 1.0 0.0 -de 07_gas 2 272 2030 0.0 0.0 -de 08_non-res 2 272 2030 0.0 0.0 -de 09_hydro_pump 2 272 2030 0.0 0.0 -de 01_solar 2 273 2030 1.0 0.0 -de 02_wind_on 2 273 2030 1.0 0.0 -de 03_wind_off 2 273 2030 1.0 0.0 -de 04_res 2 273 2030 1.0 0.0 -de 05_nuclear 2 273 2030 1.0 0.0 -de 06_coal 2 273 2030 1.0 0.0 -de 07_gas 2 273 2030 0.0 0.0 -de 08_non-res 2 273 2030 0.0 0.0 -de 09_hydro_pump 2 273 2030 0.0 0.0 -de 01_solar 2 274 2030 1.0 0.0 -de 02_wind_on 2 274 2030 1.0 0.0 -de 03_wind_off 2 274 2030 1.0 0.0 -de 04_res 2 274 2030 1.0 0.0 -de 05_nuclear 2 274 2030 1.0 0.0 -de 06_coal 2 274 2030 1.0 0.0 -de 07_gas 2 274 2030 0.0 0.0 -de 08_non-res 2 274 2030 0.0 0.0 -de 09_hydro_pump 2 274 2030 0.0 0.0 -de 01_solar 2 275 2030 1.0 0.0 -de 02_wind_on 2 275 2030 1.0 0.0 -de 03_wind_off 2 275 2030 1.0 0.0 -de 04_res 2 275 2030 1.0 0.0 -de 05_nuclear 2 275 2030 1.0 0.0 -de 06_coal 2 275 2030 1.0 0.0 -de 07_gas 2 275 2030 0.0 0.0 -de 08_non-res 2 275 2030 0.0 0.0 -de 09_hydro_pump 2 275 2030 0.0 0.0 -de 01_solar 2 276 2030 1.0 0.0 -de 02_wind_on 2 276 2030 1.0 0.0 -de 03_wind_off 2 276 2030 1.0 0.0 -de 04_res 2 276 2030 1.0 0.0 -de 05_nuclear 2 276 2030 1.0 0.0 -de 06_coal 2 276 2030 1.0 0.0 -de 07_gas 2 276 2030 0.0 0.0 -de 08_non-res 2 276 2030 0.0 0.0 -de 09_hydro_pump 2 276 2030 0.0 0.0 -de 01_solar 2 277 2030 1.0 0.0 -de 02_wind_on 2 277 2030 1.0 0.0 -de 03_wind_off 2 277 2030 1.0 0.0 -de 04_res 2 277 2030 1.0 0.0 -de 05_nuclear 2 277 2030 1.0 0.0 -de 06_coal 2 277 2030 1.0 0.0 -de 07_gas 2 277 2030 0.0 0.0 -de 08_non-res 2 277 2030 0.0 0.0 -de 09_hydro_pump 2 277 2030 0.0 0.0 -de 01_solar 2 278 2030 1.0 0.0 -de 02_wind_on 2 278 2030 1.0 0.0 -de 03_wind_off 2 278 2030 1.0 0.0 -de 04_res 2 278 2030 1.0 0.0 -de 05_nuclear 2 278 2030 1.0 0.0 -de 06_coal 2 278 2030 1.0 0.0 -de 07_gas 2 278 2030 0.0 0.0 -de 08_non-res 2 278 2030 0.0 0.0 -de 09_hydro_pump 2 278 2030 0.0 0.0 -de 01_solar 2 279 2030 1.0 0.0 -de 02_wind_on 2 279 2030 1.0 0.0 -de 03_wind_off 2 279 2030 1.0 0.0 -de 04_res 2 279 2030 1.0 0.0 -de 05_nuclear 2 279 2030 1.0 0.0 -de 06_coal 2 279 2030 1.0 0.0 -de 07_gas 2 279 2030 0.0 0.0 -de 08_non-res 2 279 2030 0.0 0.0 -de 09_hydro_pump 2 279 2030 0.0 0.0 -de 01_solar 2 280 2030 1.0 0.0 -de 02_wind_on 2 280 2030 1.0 0.0 -de 03_wind_off 2 280 2030 1.0 0.0 -de 04_res 2 280 2030 1.0 0.0 -de 05_nuclear 2 280 2030 1.0 0.0 -de 06_coal 2 280 2030 1.0 0.0 -de 07_gas 2 280 2030 0.0 0.0 -de 08_non-res 2 280 2030 0.0 0.0 -de 09_hydro_pump 2 280 2030 0.0 0.0 -de 01_solar 2 281 2030 1.0 0.0 -de 02_wind_on 2 281 2030 1.0 0.0 -de 03_wind_off 2 281 2030 1.0 0.0 -de 04_res 2 281 2030 1.0 0.0 -de 05_nuclear 2 281 2030 1.0 0.0 -de 06_coal 2 281 2030 1.0 0.0 -de 07_gas 2 281 2030 0.0 0.0 -de 08_non-res 2 281 2030 0.0 0.0 -de 09_hydro_pump 2 281 2030 0.0 0.0 -de 01_solar 2 282 2030 1.0 0.0 -de 02_wind_on 2 282 2030 1.0 0.0 -de 03_wind_off 2 282 2030 1.0 0.0 -de 04_res 2 282 2030 1.0 0.0 -de 05_nuclear 2 282 2030 1.0 0.0 -de 06_coal 2 282 2030 1.0 0.0 -de 07_gas 2 282 2030 0.0 0.0 -de 08_non-res 2 282 2030 0.0 0.0 -de 09_hydro_pump 2 282 2030 0.0 0.0 -de 01_solar 2 283 2030 1.0 0.0 -de 02_wind_on 2 283 2030 1.0 0.0 -de 03_wind_off 2 283 2030 1.0 0.0 -de 04_res 2 283 2030 1.0 0.0 -de 05_nuclear 2 283 2030 1.0 0.0 -de 06_coal 2 283 2030 1.0 0.0 -de 07_gas 2 283 2030 0.0 0.0 -de 08_non-res 2 283 2030 0.0 0.0 -de 09_hydro_pump 2 283 2030 0.0 0.0 -de 01_solar 2 284 2030 1.0 0.0 -de 02_wind_on 2 284 2030 1.0 0.0 -de 03_wind_off 2 284 2030 1.0 0.0 -de 04_res 2 284 2030 1.0 0.0 -de 05_nuclear 2 284 2030 1.0 0.0 -de 06_coal 2 284 2030 1.0 0.0 -de 07_gas 2 284 2030 0.0 0.0 -de 08_non-res 2 284 2030 0.0 0.0 -de 09_hydro_pump 2 284 2030 0.0 0.0 -de 01_solar 2 285 2030 1.0 0.0 -de 02_wind_on 2 285 2030 1.0 0.0 -de 03_wind_off 2 285 2030 1.0 0.0 -de 04_res 2 285 2030 1.0 0.0 -de 05_nuclear 2 285 2030 1.0 0.0 -de 06_coal 2 285 2030 1.0 0.0 -de 07_gas 2 285 2030 0.0 0.0 -de 08_non-res 2 285 2030 0.0 0.0 -de 09_hydro_pump 2 285 2030 0.0 0.0 -de 01_solar 2 286 2030 1.0 0.0 -de 02_wind_on 2 286 2030 1.0 0.0 -de 03_wind_off 2 286 2030 1.0 0.0 -de 04_res 2 286 2030 1.0 0.0 -de 05_nuclear 2 286 2030 1.0 0.0 -de 06_coal 2 286 2030 1.0 0.0 -de 07_gas 2 286 2030 0.0 0.0 -de 08_non-res 2 286 2030 0.0 0.0 -de 09_hydro_pump 2 286 2030 0.0 0.0 -de 01_solar 2 287 2030 1.0 0.0 -de 02_wind_on 2 287 2030 1.0 0.0 -de 03_wind_off 2 287 2030 1.0 0.0 -de 04_res 2 287 2030 1.0 0.0 -de 05_nuclear 2 287 2030 1.0 0.0 -de 06_coal 2 287 2030 1.0 0.0 -de 07_gas 2 287 2030 0.0 0.0 -de 08_non-res 2 287 2030 0.0 0.0 -de 09_hydro_pump 2 287 2030 0.0 0.0 -de 01_solar 2 288 2030 1.0 0.0 -de 02_wind_on 2 288 2030 1.0 0.0 -de 03_wind_off 2 288 2030 1.0 0.0 -de 04_res 2 288 2030 1.0 0.0 -de 05_nuclear 2 288 2030 1.0 0.0 -de 06_coal 2 288 2030 1.0 0.0 -de 07_gas 2 288 2030 0.0 0.0 -de 08_non-res 2 288 2030 0.0 0.0 -de 09_hydro_pump 2 288 2030 0.0 0.0 -de 01_solar 2 289 2030 1.0 0.0 -de 02_wind_on 2 289 2030 1.0 0.0 -de 03_wind_off 2 289 2030 1.0 0.0 -de 04_res 2 289 2030 1.0 0.0 -de 05_nuclear 2 289 2030 1.0 0.0 -de 06_coal 2 289 2030 1.0 0.0 -de 07_gas 2 289 2030 0.0 0.0 -de 08_non-res 2 289 2030 0.0 0.0 -de 09_hydro_pump 2 289 2030 0.0 0.0 -de 01_solar 2 290 2030 1.0 0.0 -de 02_wind_on 2 290 2030 1.0 0.0 -de 03_wind_off 2 290 2030 1.0 0.0 -de 04_res 2 290 2030 1.0 0.0 -de 05_nuclear 2 290 2030 1.0 0.0 -de 06_coal 2 290 2030 1.0 0.0 -de 07_gas 2 290 2030 1.0 0.0 -de 08_non-res 2 290 2030 0.0 0.0 -de 09_hydro_pump 2 290 2030 0.0 0.0 -de 01_solar 2 291 2030 1.0 0.0 -de 02_wind_on 2 291 2030 1.0 0.0 -de 03_wind_off 2 291 2030 1.0 0.0 -de 04_res 2 291 2030 1.0 0.0 -de 05_nuclear 2 291 2030 1.0 0.0 -de 06_coal 2 291 2030 1.0 0.0 -de 07_gas 2 291 2030 1.0 0.0 -de 08_non-res 2 291 2030 0.0 0.0 -de 09_hydro_pump 2 291 2030 0.0 0.0 -de 01_solar 2 292 2030 1.0 0.0 -de 02_wind_on 2 292 2030 1.0 0.0 -de 03_wind_off 2 292 2030 1.0 0.0 -de 04_res 2 292 2030 1.0 0.0 -de 05_nuclear 2 292 2030 1.0 0.0 -de 06_coal 2 292 2030 1.0 0.0 -de 07_gas 2 292 2030 1.0 0.0 -de 08_non-res 2 292 2030 0.0 0.0 -de 09_hydro_pump 2 292 2030 0.0 0.0 -de 01_solar 2 293 2030 1.0 0.0 -de 02_wind_on 2 293 2030 1.0 0.0 -de 03_wind_off 2 293 2030 1.0 0.0 -de 04_res 2 293 2030 1.0 0.0 -de 05_nuclear 2 293 2030 1.0 0.0 -de 06_coal 2 293 2030 1.0 0.0 -de 07_gas 2 293 2030 1.0 0.0 -de 08_non-res 2 293 2030 0.0 0.0 -de 09_hydro_pump 2 293 2030 0.0 0.0 -de 01_solar 2 294 2030 1.0 0.0 -de 02_wind_on 2 294 2030 1.0 0.0 -de 03_wind_off 2 294 2030 1.0 0.0 -de 04_res 2 294 2030 1.0 0.0 -de 05_nuclear 2 294 2030 1.0 0.0 -de 06_coal 2 294 2030 1.0 0.0 -de 07_gas 2 294 2030 1.0 0.0 -de 08_non-res 2 294 2030 0.0 0.0 -de 09_hydro_pump 2 294 2030 0.0 0.0 -de 01_solar 2 295 2030 1.0 0.0 -de 02_wind_on 2 295 2030 1.0 0.0 -de 03_wind_off 2 295 2030 1.0 0.0 -de 04_res 2 295 2030 1.0 0.0 -de 05_nuclear 2 295 2030 1.0 0.0 -de 06_coal 2 295 2030 1.0 0.0 -de 07_gas 2 295 2030 1.0 0.0 -de 08_non-res 2 295 2030 0.0 0.0 -de 09_hydro_pump 2 295 2030 0.0 0.0 -de 01_solar 2 296 2030 1.0 0.0 -de 02_wind_on 2 296 2030 1.0 0.0 -de 03_wind_off 2 296 2030 1.0 0.0 -de 04_res 2 296 2030 1.0 0.0 -de 05_nuclear 2 296 2030 1.0 0.0 -de 06_coal 2 296 2030 1.0 0.0 -de 07_gas 2 296 2030 1.0 0.0 -de 08_non-res 2 296 2030 0.0 0.0 -de 09_hydro_pump 2 296 2030 0.0 0.0 -de 01_solar 2 297 2030 1.0 0.0 -de 02_wind_on 2 297 2030 1.0 0.0 -de 03_wind_off 2 297 2030 1.0 0.0 -de 04_res 2 297 2030 1.0 0.0 -de 05_nuclear 2 297 2030 1.0 0.0 -de 06_coal 2 297 2030 1.0 0.0 -de 07_gas 2 297 2030 1.0 0.0 -de 08_non-res 2 297 2030 0.0 0.0 -de 09_hydro_pump 2 297 2030 0.0 0.0 -de 01_solar 2 298 2030 1.0 0.0 -de 02_wind_on 2 298 2030 1.0 0.0 -de 03_wind_off 2 298 2030 1.0 0.0 -de 04_res 2 298 2030 1.0 0.0 -de 05_nuclear 2 298 2030 1.0 0.0 -de 06_coal 2 298 2030 1.0 0.0 -de 07_gas 2 298 2030 1.0 0.0 -de 08_non-res 2 298 2030 0.0 0.0 -de 09_hydro_pump 2 298 2030 0.0 0.0 -de 01_solar 2 299 2030 1.0 0.0 -de 02_wind_on 2 299 2030 1.0 0.0 -de 03_wind_off 2 299 2030 1.0 0.0 -de 04_res 2 299 2030 1.0 0.0 -de 05_nuclear 2 299 2030 1.0 0.0 -de 06_coal 2 299 2030 1.0 0.0 -de 07_gas 2 299 2030 1.0 0.0 -de 08_non-res 2 299 2030 0.0 0.0 -de 09_hydro_pump 2 299 2030 0.0 0.0 -de 01_solar 2 300 2030 1.0 0.0 -de 02_wind_on 2 300 2030 1.0 0.0 -de 03_wind_off 2 300 2030 1.0 0.0 -de 04_res 2 300 2030 1.0 0.0 -de 05_nuclear 2 300 2030 1.0 0.0 -de 06_coal 2 300 2030 1.0 0.0 -de 07_gas 2 300 2030 1.0 0.0 -de 08_non-res 2 300 2030 0.0 0.0 -de 09_hydro_pump 2 300 2030 0.0 0.0 -de 01_solar 2 301 2030 1.0 0.0 -de 02_wind_on 2 301 2030 1.0 0.0 -de 03_wind_off 2 301 2030 1.0 0.0 -de 04_res 2 301 2030 1.0 0.0 -de 05_nuclear 2 301 2030 1.0 0.0 -de 06_coal 2 301 2030 1.0 0.0 -de 07_gas 2 301 2030 1.0 0.0 -de 08_non-res 2 301 2030 0.0 0.0 -de 09_hydro_pump 2 301 2030 0.0 0.0 -de 01_solar 2 302 2030 1.0 0.0 -de 02_wind_on 2 302 2030 1.0 0.0 -de 03_wind_off 2 302 2030 1.0 0.0 -de 04_res 2 302 2030 1.0 0.0 -de 05_nuclear 2 302 2030 1.0 0.0 -de 06_coal 2 302 2030 1.0 0.0 -de 07_gas 2 302 2030 1.0 0.0 -de 08_non-res 2 302 2030 0.0 0.0 -de 09_hydro_pump 2 302 2030 0.0 0.0 -de 01_solar 2 303 2030 1.0 0.0 -de 02_wind_on 2 303 2030 1.0 0.0 -de 03_wind_off 2 303 2030 1.0 0.0 -de 04_res 2 303 2030 1.0 0.0 -de 05_nuclear 2 303 2030 1.0 0.0 -de 06_coal 2 303 2030 1.0 0.0 -de 07_gas 2 303 2030 1.0 0.0 -de 08_non-res 2 303 2030 0.0 0.0 -de 09_hydro_pump 2 303 2030 0.0 0.0 -de 01_solar 2 304 2030 1.0 0.0 -de 02_wind_on 2 304 2030 1.0 0.0 -de 03_wind_off 2 304 2030 1.0 0.0 -de 04_res 2 304 2030 1.0 0.0 -de 05_nuclear 2 304 2030 1.0 0.0 -de 06_coal 2 304 2030 1.0 0.0 -de 07_gas 2 304 2030 1.0 0.0 -de 08_non-res 2 304 2030 0.0 0.0 -de 09_hydro_pump 2 304 2030 0.0 0.0 -de 01_solar 2 305 2030 1.0 0.0 -de 02_wind_on 2 305 2030 1.0 0.0 -de 03_wind_off 2 305 2030 1.0 0.0 -de 04_res 2 305 2030 1.0 0.0 -de 05_nuclear 2 305 2030 1.0 0.0 -de 06_coal 2 305 2030 1.0 0.0 -de 07_gas 2 305 2030 1.0 0.0 -de 08_non-res 2 305 2030 0.0 0.0 -de 09_hydro_pump 2 305 2030 0.0 0.0 -de 01_solar 2 306 2030 1.0 0.0 -de 02_wind_on 2 306 2030 1.0 0.0 -de 03_wind_off 2 306 2030 1.0 0.0 -de 04_res 2 306 2030 1.0 0.0 -de 05_nuclear 2 306 2030 1.0 0.0 -de 06_coal 2 306 2030 1.0 0.0 -de 07_gas 2 306 2030 1.0 0.0 -de 08_non-res 2 306 2030 0.0 0.0 -de 09_hydro_pump 2 306 2030 0.0 0.0 -de 01_solar 2 307 2030 1.0 0.0 -de 02_wind_on 2 307 2030 1.0 0.0 -de 03_wind_off 2 307 2030 1.0 0.0 -de 04_res 2 307 2030 1.0 0.0 -de 05_nuclear 2 307 2030 1.0 0.0 -de 06_coal 2 307 2030 1.0 0.0 -de 07_gas 2 307 2030 1.0 0.0 -de 08_non-res 2 307 2030 0.0 0.0 -de 09_hydro_pump 2 307 2030 0.0 0.0 -de 01_solar 2 308 2030 1.0 0.0 -de 02_wind_on 2 308 2030 1.0 0.0 -de 03_wind_off 2 308 2030 1.0 0.0 -de 04_res 2 308 2030 1.0 0.0 -de 05_nuclear 2 308 2030 1.0 0.0 -de 06_coal 2 308 2030 1.0 0.0 -de 07_gas 2 308 2030 1.0 0.0 -de 08_non-res 2 308 2030 0.0 0.0 -de 09_hydro_pump 2 308 2030 0.0 0.0 -de 01_solar 2 309 2030 1.0 0.0 -de 02_wind_on 2 309 2030 1.0 0.0 -de 03_wind_off 2 309 2030 1.0 0.0 -de 04_res 2 309 2030 1.0 0.0 -de 05_nuclear 2 309 2030 1.0 0.0 -de 06_coal 2 309 2030 1.0 0.0 -de 07_gas 2 309 2030 1.0 0.0 -de 08_non-res 2 309 2030 0.0 0.0 -de 09_hydro_pump 2 309 2030 0.0 0.0 -de 01_solar 2 310 2030 1.0 0.0 -de 02_wind_on 2 310 2030 1.0 0.0 -de 03_wind_off 2 310 2030 1.0 0.0 -de 04_res 2 310 2030 1.0 0.0 -de 05_nuclear 2 310 2030 1.0 0.0 -de 06_coal 2 310 2030 1.0 0.0 -de 07_gas 2 310 2030 1.0 0.0 -de 08_non-res 2 310 2030 1.0 0.0 -de 09_hydro_pump 2 310 2030 0.0 0.0 -de 01_solar 2 311 2030 1.0 0.0 -de 02_wind_on 2 311 2030 1.0 0.0 -de 03_wind_off 2 311 2030 1.0 0.0 -de 04_res 2 311 2030 1.0 0.0 -de 05_nuclear 2 311 2030 1.0 0.0 -de 06_coal 2 311 2030 1.0 0.0 -de 07_gas 2 311 2030 1.0 0.0 -de 08_non-res 2 311 2030 1.0 0.0 -de 09_hydro_pump 2 311 2030 0.0 0.0 -de 01_solar 2 312 2030 1.0 0.0 -de 02_wind_on 2 312 2030 1.0 0.0 -de 03_wind_off 2 312 2030 1.0 0.0 -de 04_res 2 312 2030 1.0 0.0 -de 05_nuclear 2 312 2030 1.0 0.0 -de 06_coal 2 312 2030 1.0 0.0 -de 07_gas 2 312 2030 1.0 0.0 -de 08_non-res 2 312 2030 1.0 0.0 -de 09_hydro_pump 2 312 2030 0.0 0.0 -de 01_solar 2 313 2030 1.0 0.0 -de 02_wind_on 2 313 2030 1.0 0.0 -de 03_wind_off 2 313 2030 1.0 0.0 -de 04_res 2 313 2030 1.0 0.0 -de 05_nuclear 2 313 2030 1.0 0.0 -de 06_coal 2 313 2030 1.0 0.0 -de 07_gas 2 313 2030 1.0 0.0 -de 08_non-res 2 313 2030 1.0 0.0 -de 09_hydro_pump 2 313 2030 0.0 0.0 -de 01_solar 2 314 2030 1.0 0.0 -de 02_wind_on 2 314 2030 1.0 0.0 -de 03_wind_off 2 314 2030 1.0 0.0 -de 04_res 2 314 2030 1.0 0.0 -de 05_nuclear 2 314 2030 1.0 0.0 -de 06_coal 2 314 2030 1.0 0.0 -de 07_gas 2 314 2030 1.0 0.0 -de 08_non-res 2 314 2030 1.0 0.0 -de 09_hydro_pump 2 314 2030 0.0 0.0 -de 01_solar 2 315 2030 1.0 0.0 -de 02_wind_on 2 315 2030 1.0 0.0 -de 03_wind_off 2 315 2030 1.0 0.0 -de 04_res 2 315 2030 1.0 0.0 -de 05_nuclear 2 315 2030 1.0 0.0 -de 06_coal 2 315 2030 1.0 0.0 -de 07_gas 2 315 2030 1.0 0.0 -de 08_non-res 2 315 2030 1.0 0.0 -de 09_hydro_pump 2 315 2030 0.0 0.0 -de 01_solar 2 316 2030 1.0 0.0 -de 02_wind_on 2 316 2030 1.0 0.0 -de 03_wind_off 2 316 2030 1.0 0.0 -de 04_res 2 316 2030 1.0 0.0 -de 05_nuclear 2 316 2030 1.0 0.0 -de 06_coal 2 316 2030 1.0 0.0 -de 07_gas 2 316 2030 1.0 0.0 -de 08_non-res 2 316 2030 1.0 0.0 -de 09_hydro_pump 2 316 2030 0.0 0.0 -de 01_solar 2 317 2030 1.0 0.0 -de 02_wind_on 2 317 2030 1.0 0.0 -de 03_wind_off 2 317 2030 1.0 0.0 -de 04_res 2 317 2030 1.0 0.0 -de 05_nuclear 2 317 2030 1.0 0.0 -de 06_coal 2 317 2030 1.0 0.0 -de 07_gas 2 317 2030 1.0 0.0 -de 08_non-res 2 317 2030 1.0 0.0 -de 09_hydro_pump 2 317 2030 0.0 0.0 -de 01_solar 2 318 2030 1.0 0.0 -de 02_wind_on 2 318 2030 1.0 0.0 -de 03_wind_off 2 318 2030 1.0 0.0 -de 04_res 2 318 2030 1.0 0.0 -de 05_nuclear 2 318 2030 1.0 0.0 -de 06_coal 2 318 2030 1.0 0.0 -de 07_gas 2 318 2030 1.0 0.0 -de 08_non-res 2 318 2030 1.0 0.0 -de 09_hydro_pump 2 318 2030 0.0 0.0 -de 01_solar 2 319 2030 1.0 0.0 -de 02_wind_on 2 319 2030 1.0 0.0 -de 03_wind_off 2 319 2030 1.0 0.0 -de 04_res 2 319 2030 1.0 0.0 -de 05_nuclear 2 319 2030 1.0 0.0 -de 06_coal 2 319 2030 1.0 0.0 -de 07_gas 2 319 2030 1.0 0.0 -de 08_non-res 2 319 2030 1.0 0.0 -de 09_hydro_pump 2 319 2030 0.0 0.0 -de 01_solar 2 320 2030 1.0 0.0 -de 02_wind_on 2 320 2030 1.0 0.0 -de 03_wind_off 2 320 2030 1.0 0.0 -de 04_res 2 320 2030 1.0 0.0 -de 05_nuclear 2 320 2030 1.0 0.0 -de 06_coal 2 320 2030 1.0 0.0 -de 07_gas 2 320 2030 1.0 0.0 -de 08_non-res 2 320 2030 1.0 0.0 -de 09_hydro_pump 2 320 2030 0.0 0.0 -de 01_solar 2 321 2030 1.0 0.0 -de 02_wind_on 2 321 2030 1.0 0.0 -de 03_wind_off 2 321 2030 1.0 0.0 -de 04_res 2 321 2030 1.0 0.0 -de 05_nuclear 2 321 2030 1.0 0.0 -de 06_coal 2 321 2030 1.0 0.0 -de 07_gas 2 321 2030 1.0 0.0 -de 08_non-res 2 321 2030 1.0 0.0 -de 09_hydro_pump 2 321 2030 0.0 0.0 -de 01_solar 2 322 2030 1.0 0.0 -de 02_wind_on 2 322 2030 1.0 0.0 -de 03_wind_off 2 322 2030 1.0 0.0 -de 04_res 2 322 2030 1.0 0.0 -de 05_nuclear 2 322 2030 1.0 0.0 -de 06_coal 2 322 2030 1.0 0.0 -de 07_gas 2 322 2030 1.0 0.0 -de 08_non-res 2 322 2030 1.0 0.0 -de 09_hydro_pump 2 322 2030 0.0 0.0 -de 01_solar 2 323 2030 1.0 0.0 -de 02_wind_on 2 323 2030 1.0 0.0 -de 03_wind_off 2 323 2030 1.0 0.0 -de 04_res 2 323 2030 1.0 0.0 -de 05_nuclear 2 323 2030 1.0 0.0 -de 06_coal 2 323 2030 1.0 0.0 -de 07_gas 2 323 2030 1.0 0.0 -de 08_non-res 2 323 2030 1.0 0.0 -de 09_hydro_pump 2 323 2030 0.0 0.0 -de 01_solar 2 324 2030 1.0 0.0 -de 02_wind_on 2 324 2030 1.0 0.0 -de 03_wind_off 2 324 2030 1.0 0.0 -de 04_res 2 324 2030 1.0 0.0 -de 05_nuclear 2 324 2030 1.0 0.0 -de 06_coal 2 324 2030 1.0 0.0 -de 07_gas 2 324 2030 1.0 0.0 -de 08_non-res 2 324 2030 1.0 0.0 -de 09_hydro_pump 2 324 2030 0.0 0.0 -de 01_solar 2 325 2030 1.0 0.0 -de 02_wind_on 2 325 2030 1.0 0.0 -de 03_wind_off 2 325 2030 1.0 0.0 -de 04_res 2 325 2030 1.0 0.0 -de 05_nuclear 2 325 2030 1.0 0.0 -de 06_coal 2 325 2030 1.0 0.0 -de 07_gas 2 325 2030 1.0 0.0 -de 08_non-res 2 325 2030 1.0 0.0 -de 09_hydro_pump 2 325 2030 0.0 0.0 -de 01_solar 2 326 2030 1.0 0.0 -de 02_wind_on 2 326 2030 1.0 0.0 -de 03_wind_off 2 326 2030 1.0 0.0 -de 04_res 2 326 2030 1.0 0.0 -de 05_nuclear 2 326 2030 1.0 0.0 -de 06_coal 2 326 2030 1.0 0.0 -de 07_gas 2 326 2030 1.0 0.0 -de 08_non-res 2 326 2030 1.0 0.0 -de 09_hydro_pump 2 326 2030 0.0 0.0 -de 01_solar 2 327 2030 1.0 0.0 -de 02_wind_on 2 327 2030 1.0 0.0 -de 03_wind_off 2 327 2030 1.0 0.0 -de 04_res 2 327 2030 1.0 0.0 -de 05_nuclear 2 327 2030 1.0 0.0 -de 06_coal 2 327 2030 1.0 0.0 -de 07_gas 2 327 2030 1.0 0.0 -de 08_non-res 2 327 2030 1.0 0.0 -de 09_hydro_pump 2 327 2030 0.0 0.0 -de 01_solar 2 328 2030 1.0 0.0 -de 02_wind_on 2 328 2030 1.0 0.0 -de 03_wind_off 2 328 2030 1.0 0.0 -de 04_res 2 328 2030 1.0 0.0 -de 05_nuclear 2 328 2030 1.0 0.0 -de 06_coal 2 328 2030 1.0 0.0 -de 07_gas 2 328 2030 1.0 0.0 -de 08_non-res 2 328 2030 1.0 0.0 -de 09_hydro_pump 2 328 2030 0.0 0.0 -de 01_solar 2 329 2030 1.0 0.0 -de 02_wind_on 2 329 2030 1.0 0.0 -de 03_wind_off 2 329 2030 1.0 0.0 -de 04_res 2 329 2030 1.0 0.0 -de 05_nuclear 2 329 2030 1.0 0.0 -de 06_coal 2 329 2030 1.0 0.0 -de 07_gas 2 329 2030 1.0 0.0 -de 08_non-res 2 329 2030 1.0 0.0 -de 09_hydro_pump 2 329 2030 0.0 0.0 -de 01_solar 2 330 2030 1.0 0.0 -de 02_wind_on 2 330 2030 1.0 0.0 -de 03_wind_off 2 330 2030 1.0 0.0 -de 04_res 2 330 2030 1.0 0.0 -de 05_nuclear 2 330 2030 1.0 0.0 -de 06_coal 2 330 2030 1.0 0.0 -de 07_gas 2 330 2030 1.0 0.0 -de 08_non-res 2 330 2030 1.0 0.0 -de 09_hydro_pump 2 330 2030 1.0 0.0 -de 01_solar 2 331 2030 1.0 0.0 -de 02_wind_on 2 331 2030 1.0 0.0 -de 03_wind_off 2 331 2030 1.0 0.0 -de 04_res 2 331 2030 1.0 0.0 -de 05_nuclear 2 331 2030 1.0 0.0 -de 06_coal 2 331 2030 1.0 0.0 -de 07_gas 2 331 2030 1.0 0.0 -de 08_non-res 2 331 2030 1.0 0.0 -de 09_hydro_pump 2 331 2030 1.0 0.0 -de 01_solar 2 332 2030 1.0 0.0 -de 02_wind_on 2 332 2030 1.0 0.0 -de 03_wind_off 2 332 2030 1.0 0.0 -de 04_res 2 332 2030 1.0 0.0 -de 05_nuclear 2 332 2030 1.0 0.0 -de 06_coal 2 332 2030 1.0 0.0 -de 07_gas 2 332 2030 1.0 0.0 -de 08_non-res 2 332 2030 1.0 0.0 -de 09_hydro_pump 2 332 2030 1.0 0.0 -de 01_solar 2 333 2030 1.0 0.0 -de 02_wind_on 2 333 2030 1.0 0.0 -de 03_wind_off 2 333 2030 1.0 0.0 -de 04_res 2 333 2030 1.0 0.0 -de 05_nuclear 2 333 2030 1.0 0.0 -de 06_coal 2 333 2030 1.0 0.0 -de 07_gas 2 333 2030 1.0 0.0 -de 08_non-res 2 333 2030 1.0 0.0 -de 09_hydro_pump 2 333 2030 1.0 0.0 -de 01_solar 2 334 2030 1.0 0.0 -de 02_wind_on 2 334 2030 1.0 0.0 -de 03_wind_off 2 334 2030 1.0 0.0 -de 04_res 2 334 2030 1.0 0.0 -de 05_nuclear 2 334 2030 1.0 0.0 -de 06_coal 2 334 2030 1.0 0.0 -de 07_gas 2 334 2030 1.0 0.0 -de 08_non-res 2 334 2030 1.0 0.0 -de 09_hydro_pump 2 334 2030 1.0 0.0 -de 01_solar 2 335 2030 1.0 0.0 -de 02_wind_on 2 335 2030 1.0 0.0 -de 03_wind_off 2 335 2030 1.0 0.0 -de 04_res 2 335 2030 1.0 0.0 -de 05_nuclear 2 335 2030 1.0 0.0 -de 06_coal 2 335 2030 1.0 0.0 -de 07_gas 2 335 2030 1.0 0.0 -de 08_non-res 2 335 2030 1.0 0.0 -de 09_hydro_pump 2 335 2030 1.0 0.0 -de 01_solar 2 336 2030 1.0 0.0 -de 02_wind_on 2 336 2030 1.0 0.0 -de 03_wind_off 2 336 2030 1.0 0.0 -de 04_res 2 336 2030 1.0 0.0 -de 05_nuclear 2 336 2030 1.0 0.0 -de 06_coal 2 336 2030 1.0 0.0 -de 07_gas 2 336 2030 1.0 0.0 -de 08_non-res 2 336 2030 1.0 0.0 -de 09_hydro_pump 2 336 2030 1.0 0.0 -es 01_solar 2 1 2030 0.0 0.0 -es 02_wind_on 2 1 2030 0.0 0.0 -es 03_wind_off 2 1 2030 0.0 0.0 -es 04_res 2 1 2030 0.0 0.0 -es 05_nuclear 2 1 2030 0.0 0.0 -es 06_coal 2 1 2030 0.0 0.0 -es 07_gas 2 1 2030 0.0 0.0 -es 08_non-res 2 1 2030 0.0 0.0 -es 09_hydro_pump 2 1 2030 0.0 0.0 -es 01_solar 2 2 2030 1.0 0.0 -es 02_wind_on 2 2 2030 0.0 0.0 -es 03_wind_off 2 2 2030 0.0 0.0 -es 04_res 2 2 2030 0.0 0.0 -es 05_nuclear 2 2 2030 0.0 0.0 -es 06_coal 2 2 2030 0.0 0.0 -es 07_gas 2 2 2030 0.0 0.0 -es 08_non-res 2 2 2030 0.0 0.0 -es 09_hydro_pump 2 2 2030 0.0 0.0 -es 01_solar 2 3 2030 1.0 0.0 -es 02_wind_on 2 3 2030 0.0 0.0 -es 03_wind_off 2 3 2030 0.0 0.0 -es 04_res 2 3 2030 0.0 0.0 -es 05_nuclear 2 3 2030 0.0 0.0 -es 06_coal 2 3 2030 0.0 0.0 -es 07_gas 2 3 2030 0.0 0.0 -es 08_non-res 2 3 2030 0.0 0.0 -es 09_hydro_pump 2 3 2030 0.0 0.0 -es 01_solar 2 4 2030 1.0 0.0 -es 02_wind_on 2 4 2030 0.0 0.0 -es 03_wind_off 2 4 2030 0.0 0.0 -es 04_res 2 4 2030 0.0 0.0 -es 05_nuclear 2 4 2030 0.0 0.0 -es 06_coal 2 4 2030 0.0 0.0 -es 07_gas 2 4 2030 0.0 0.0 -es 08_non-res 2 4 2030 0.0 0.0 -es 09_hydro_pump 2 4 2030 0.0 0.0 -es 01_solar 2 5 2030 1.0 0.0 -es 02_wind_on 2 5 2030 0.0 0.0 -es 03_wind_off 2 5 2030 0.0 0.0 -es 04_res 2 5 2030 0.0 0.0 -es 05_nuclear 2 5 2030 0.0 0.0 -es 06_coal 2 5 2030 0.0 0.0 -es 07_gas 2 5 2030 0.0 0.0 -es 08_non-res 2 5 2030 0.0 0.0 -es 09_hydro_pump 2 5 2030 0.0 0.0 -es 01_solar 2 6 2030 1.0 0.0 -es 02_wind_on 2 6 2030 0.0 0.0 -es 03_wind_off 2 6 2030 0.0 0.0 -es 04_res 2 6 2030 0.0 0.0 -es 05_nuclear 2 6 2030 0.0 0.0 -es 06_coal 2 6 2030 0.0 0.0 -es 07_gas 2 6 2030 0.0 0.0 -es 08_non-res 2 6 2030 0.0 0.0 -es 09_hydro_pump 2 6 2030 0.0 0.0 -es 01_solar 2 7 2030 1.0 0.0 -es 02_wind_on 2 7 2030 0.0 0.0 -es 03_wind_off 2 7 2030 0.0 0.0 -es 04_res 2 7 2030 0.0 0.0 -es 05_nuclear 2 7 2030 0.0 0.0 -es 06_coal 2 7 2030 0.0 0.0 -es 07_gas 2 7 2030 0.0 0.0 -es 08_non-res 2 7 2030 0.0 0.0 -es 09_hydro_pump 2 7 2030 0.0 0.0 -es 01_solar 2 8 2030 1.0 0.0 -es 02_wind_on 2 8 2030 0.0 0.0 -es 03_wind_off 2 8 2030 0.0 0.0 -es 04_res 2 8 2030 0.0 0.0 -es 05_nuclear 2 8 2030 0.0 0.0 -es 06_coal 2 8 2030 0.0 0.0 -es 07_gas 2 8 2030 0.0 0.0 -es 08_non-res 2 8 2030 0.0 0.0 -es 09_hydro_pump 2 8 2030 0.0 0.0 -es 01_solar 2 9 2030 1.0 0.0 -es 02_wind_on 2 9 2030 0.0 0.0 -es 03_wind_off 2 9 2030 0.0 0.0 -es 04_res 2 9 2030 0.0 0.0 -es 05_nuclear 2 9 2030 0.0 0.0 -es 06_coal 2 9 2030 0.0 0.0 -es 07_gas 2 9 2030 0.0 0.0 -es 08_non-res 2 9 2030 0.0 0.0 -es 09_hydro_pump 2 9 2030 0.0 0.0 -es 01_solar 2 10 2030 1.0 0.0 -es 02_wind_on 2 10 2030 0.0 0.0 -es 03_wind_off 2 10 2030 0.0 0.0 -es 04_res 2 10 2030 0.0 0.0 -es 05_nuclear 2 10 2030 0.0 0.0 -es 06_coal 2 10 2030 0.0 0.0 -es 07_gas 2 10 2030 0.0 0.0 -es 08_non-res 2 10 2030 0.0 0.0 -es 09_hydro_pump 2 10 2030 0.0 0.0 -es 01_solar 2 11 2030 1.0 0.0 -es 02_wind_on 2 11 2030 0.0 0.0 -es 03_wind_off 2 11 2030 0.0 0.0 -es 04_res 2 11 2030 0.0 0.0 -es 05_nuclear 2 11 2030 0.0 0.0 -es 06_coal 2 11 2030 0.0 0.0 -es 07_gas 2 11 2030 0.0 0.0 -es 08_non-res 2 11 2030 0.0 0.0 -es 09_hydro_pump 2 11 2030 0.0 0.0 -es 01_solar 2 12 2030 1.0 0.0 -es 02_wind_on 2 12 2030 0.0 0.0 -es 03_wind_off 2 12 2030 0.0 0.0 -es 04_res 2 12 2030 0.0 0.0 -es 05_nuclear 2 12 2030 0.0 0.0 -es 06_coal 2 12 2030 0.0 0.0 -es 07_gas 2 12 2030 0.0 0.0 -es 08_non-res 2 12 2030 0.0 0.0 -es 09_hydro_pump 2 12 2030 0.0 0.0 -es 01_solar 2 13 2030 1.0 0.0 -es 02_wind_on 2 13 2030 0.0 0.0 -es 03_wind_off 2 13 2030 0.0 0.0 -es 04_res 2 13 2030 0.0 0.0 -es 05_nuclear 2 13 2030 0.0 0.0 -es 06_coal 2 13 2030 0.0 0.0 -es 07_gas 2 13 2030 0.0 0.0 -es 08_non-res 2 13 2030 0.0 0.0 -es 09_hydro_pump 2 13 2030 0.0 0.0 -es 01_solar 2 14 2030 1.0 0.0 -es 02_wind_on 2 14 2030 0.0 0.0 -es 03_wind_off 2 14 2030 0.0 0.0 -es 04_res 2 14 2030 0.0 0.0 -es 05_nuclear 2 14 2030 0.0 0.0 -es 06_coal 2 14 2030 0.0 0.0 -es 07_gas 2 14 2030 0.0 0.0 -es 08_non-res 2 14 2030 0.0 0.0 -es 09_hydro_pump 2 14 2030 0.0 0.0 -es 01_solar 2 15 2030 1.0 0.0 -es 02_wind_on 2 15 2030 0.0 0.0 -es 03_wind_off 2 15 2030 0.0 0.0 -es 04_res 2 15 2030 0.0 0.0 -es 05_nuclear 2 15 2030 0.0 0.0 -es 06_coal 2 15 2030 0.0 0.0 -es 07_gas 2 15 2030 0.0 0.0 -es 08_non-res 2 15 2030 0.0 0.0 -es 09_hydro_pump 2 15 2030 0.0 0.0 -es 01_solar 2 16 2030 1.0 0.0 -es 02_wind_on 2 16 2030 0.0 0.0 -es 03_wind_off 2 16 2030 0.0 0.0 -es 04_res 2 16 2030 0.0 0.0 -es 05_nuclear 2 16 2030 0.0 0.0 -es 06_coal 2 16 2030 0.0 0.0 -es 07_gas 2 16 2030 0.0 0.0 -es 08_non-res 2 16 2030 0.0 0.0 -es 09_hydro_pump 2 16 2030 0.0 0.0 -es 01_solar 2 17 2030 1.0 0.0 -es 02_wind_on 2 17 2030 0.0 0.0 -es 03_wind_off 2 17 2030 0.0 0.0 -es 04_res 2 17 2030 0.0 0.0 -es 05_nuclear 2 17 2030 0.0 0.0 -es 06_coal 2 17 2030 0.0 0.0 -es 07_gas 2 17 2030 0.0 0.0 -es 08_non-res 2 17 2030 0.0 0.0 -es 09_hydro_pump 2 17 2030 0.0 0.0 -es 01_solar 2 18 2030 1.0 0.0 -es 02_wind_on 2 18 2030 0.0 0.0 -es 03_wind_off 2 18 2030 0.0 0.0 -es 04_res 2 18 2030 0.0 0.0 -es 05_nuclear 2 18 2030 0.0 0.0 -es 06_coal 2 18 2030 0.0 0.0 -es 07_gas 2 18 2030 0.0 0.0 -es 08_non-res 2 18 2030 0.0 0.0 -es 09_hydro_pump 2 18 2030 0.0 0.0 -es 01_solar 2 19 2030 1.0 0.0 -es 02_wind_on 2 19 2030 0.0 0.0 -es 03_wind_off 2 19 2030 0.0 0.0 -es 04_res 2 19 2030 0.0 0.0 -es 05_nuclear 2 19 2030 0.0 0.0 -es 06_coal 2 19 2030 0.0 0.0 -es 07_gas 2 19 2030 0.0 0.0 -es 08_non-res 2 19 2030 0.0 0.0 -es 09_hydro_pump 2 19 2030 0.0 0.0 -es 01_solar 2 20 2030 1.0 0.0 -es 02_wind_on 2 20 2030 0.0 0.0 -es 03_wind_off 2 20 2030 0.0 0.0 -es 04_res 2 20 2030 0.0 0.0 -es 05_nuclear 2 20 2030 0.0 0.0 -es 06_coal 2 20 2030 0.0 0.0 -es 07_gas 2 20 2030 0.0 0.0 -es 08_non-res 2 20 2030 0.0 0.0 -es 09_hydro_pump 2 20 2030 0.0 0.0 -es 01_solar 2 21 2030 1.0 0.0 -es 02_wind_on 2 21 2030 0.0 0.0 -es 03_wind_off 2 21 2030 0.0 0.0 -es 04_res 2 21 2030 0.0 0.0 -es 05_nuclear 2 21 2030 0.0 0.0 -es 06_coal 2 21 2030 0.0 0.0 -es 07_gas 2 21 2030 0.0 0.0 -es 08_non-res 2 21 2030 0.0 0.0 -es 09_hydro_pump 2 21 2030 0.0 0.0 -es 01_solar 2 22 2030 1.0 0.0 -es 02_wind_on 2 22 2030 1.0 0.0 -es 03_wind_off 2 22 2030 0.0 0.0 -es 04_res 2 22 2030 0.0 0.0 -es 05_nuclear 2 22 2030 0.0 0.0 -es 06_coal 2 22 2030 0.0 0.0 -es 07_gas 2 22 2030 0.0 0.0 -es 08_non-res 2 22 2030 0.0 0.0 -es 09_hydro_pump 2 22 2030 0.0 0.0 -es 01_solar 2 23 2030 1.0 0.0 -es 02_wind_on 2 23 2030 1.0 0.0 -es 03_wind_off 2 23 2030 0.0 0.0 -es 04_res 2 23 2030 0.0 0.0 -es 05_nuclear 2 23 2030 0.0 0.0 -es 06_coal 2 23 2030 0.0 0.0 -es 07_gas 2 23 2030 0.0 0.0 -es 08_non-res 2 23 2030 0.0 0.0 -es 09_hydro_pump 2 23 2030 0.0 0.0 -es 01_solar 2 24 2030 1.0 0.0 -es 02_wind_on 2 24 2030 1.0 0.0 -es 03_wind_off 2 24 2030 0.0 0.0 -es 04_res 2 24 2030 0.0 0.0 -es 05_nuclear 2 24 2030 0.0 0.0 -es 06_coal 2 24 2030 0.0 0.0 -es 07_gas 2 24 2030 0.0 0.0 -es 08_non-res 2 24 2030 0.0 0.0 -es 09_hydro_pump 2 24 2030 0.0 0.0 -es 01_solar 2 25 2030 1.0 0.0 -es 02_wind_on 2 25 2030 1.0 0.0 -es 03_wind_off 2 25 2030 0.0 0.0 -es 04_res 2 25 2030 0.0 0.0 -es 05_nuclear 2 25 2030 0.0 0.0 -es 06_coal 2 25 2030 0.0 0.0 -es 07_gas 2 25 2030 0.0 0.0 -es 08_non-res 2 25 2030 0.0 0.0 -es 09_hydro_pump 2 25 2030 0.0 0.0 -es 01_solar 2 26 2030 1.0 0.0 -es 02_wind_on 2 26 2030 1.0 0.0 -es 03_wind_off 2 26 2030 0.0 0.0 -es 04_res 2 26 2030 0.0 0.0 -es 05_nuclear 2 26 2030 0.0 0.0 -es 06_coal 2 26 2030 0.0 0.0 -es 07_gas 2 26 2030 0.0 0.0 -es 08_non-res 2 26 2030 0.0 0.0 -es 09_hydro_pump 2 26 2030 0.0 0.0 -es 01_solar 2 27 2030 1.0 0.0 -es 02_wind_on 2 27 2030 1.0 0.0 -es 03_wind_off 2 27 2030 0.0 0.0 -es 04_res 2 27 2030 0.0 0.0 -es 05_nuclear 2 27 2030 0.0 0.0 -es 06_coal 2 27 2030 0.0 0.0 -es 07_gas 2 27 2030 0.0 0.0 -es 08_non-res 2 27 2030 0.0 0.0 -es 09_hydro_pump 2 27 2030 0.0 0.0 -es 01_solar 2 28 2030 1.0 0.0 -es 02_wind_on 2 28 2030 1.0 0.0 -es 03_wind_off 2 28 2030 0.0 0.0 -es 04_res 2 28 2030 0.0 0.0 -es 05_nuclear 2 28 2030 0.0 0.0 -es 06_coal 2 28 2030 0.0 0.0 -es 07_gas 2 28 2030 0.0 0.0 -es 08_non-res 2 28 2030 0.0 0.0 -es 09_hydro_pump 2 28 2030 0.0 0.0 -es 01_solar 2 29 2030 1.0 0.0 -es 02_wind_on 2 29 2030 1.0 0.0 -es 03_wind_off 2 29 2030 0.0 0.0 -es 04_res 2 29 2030 0.0 0.0 -es 05_nuclear 2 29 2030 0.0 0.0 -es 06_coal 2 29 2030 0.0 0.0 -es 07_gas 2 29 2030 0.0 0.0 -es 08_non-res 2 29 2030 0.0 0.0 -es 09_hydro_pump 2 29 2030 0.0 0.0 -es 01_solar 2 30 2030 1.0 0.0 -es 02_wind_on 2 30 2030 1.0 0.0 -es 03_wind_off 2 30 2030 0.0 0.0 -es 04_res 2 30 2030 0.0 0.0 -es 05_nuclear 2 30 2030 0.0 0.0 -es 06_coal 2 30 2030 0.0 0.0 -es 07_gas 2 30 2030 0.0 0.0 -es 08_non-res 2 30 2030 0.0 0.0 -es 09_hydro_pump 2 30 2030 0.0 0.0 -es 01_solar 2 31 2030 1.0 0.0 -es 02_wind_on 2 31 2030 1.0 0.0 -es 03_wind_off 2 31 2030 0.0 0.0 -es 04_res 2 31 2030 0.0 0.0 -es 05_nuclear 2 31 2030 0.0 0.0 -es 06_coal 2 31 2030 0.0 0.0 -es 07_gas 2 31 2030 0.0 0.0 -es 08_non-res 2 31 2030 0.0 0.0 -es 09_hydro_pump 2 31 2030 0.0 0.0 -es 01_solar 2 32 2030 1.0 0.0 -es 02_wind_on 2 32 2030 1.0 0.0 -es 03_wind_off 2 32 2030 0.0 0.0 -es 04_res 2 32 2030 0.0 0.0 -es 05_nuclear 2 32 2030 0.0 0.0 -es 06_coal 2 32 2030 0.0 0.0 -es 07_gas 2 32 2030 0.0 0.0 -es 08_non-res 2 32 2030 0.0 0.0 -es 09_hydro_pump 2 32 2030 0.0 0.0 -es 01_solar 2 33 2030 1.0 0.0 -es 02_wind_on 2 33 2030 1.0 0.0 -es 03_wind_off 2 33 2030 0.0 0.0 -es 04_res 2 33 2030 0.0 0.0 -es 05_nuclear 2 33 2030 0.0 0.0 -es 06_coal 2 33 2030 0.0 0.0 -es 07_gas 2 33 2030 0.0 0.0 -es 08_non-res 2 33 2030 0.0 0.0 -es 09_hydro_pump 2 33 2030 0.0 0.0 -es 01_solar 2 34 2030 1.0 0.0 -es 02_wind_on 2 34 2030 1.0 0.0 -es 03_wind_off 2 34 2030 0.0 0.0 -es 04_res 2 34 2030 0.0 0.0 -es 05_nuclear 2 34 2030 0.0 0.0 -es 06_coal 2 34 2030 0.0 0.0 -es 07_gas 2 34 2030 0.0 0.0 -es 08_non-res 2 34 2030 0.0 0.0 -es 09_hydro_pump 2 34 2030 0.0 0.0 -es 01_solar 2 35 2030 1.0 0.0 -es 02_wind_on 2 35 2030 1.0 0.0 -es 03_wind_off 2 35 2030 0.0 0.0 -es 04_res 2 35 2030 0.0 0.0 -es 05_nuclear 2 35 2030 0.0 0.0 -es 06_coal 2 35 2030 0.0 0.0 -es 07_gas 2 35 2030 0.0 0.0 -es 08_non-res 2 35 2030 0.0 0.0 -es 09_hydro_pump 2 35 2030 0.0 0.0 -es 01_solar 2 36 2030 1.0 0.0 -es 02_wind_on 2 36 2030 1.0 0.0 -es 03_wind_off 2 36 2030 0.0 0.0 -es 04_res 2 36 2030 0.0 0.0 -es 05_nuclear 2 36 2030 0.0 0.0 -es 06_coal 2 36 2030 0.0 0.0 -es 07_gas 2 36 2030 0.0 0.0 -es 08_non-res 2 36 2030 0.0 0.0 -es 09_hydro_pump 2 36 2030 0.0 0.0 -es 01_solar 2 37 2030 1.0 0.0 -es 02_wind_on 2 37 2030 1.0 0.0 -es 03_wind_off 2 37 2030 0.0 0.0 -es 04_res 2 37 2030 0.0 0.0 -es 05_nuclear 2 37 2030 0.0 0.0 -es 06_coal 2 37 2030 0.0 0.0 -es 07_gas 2 37 2030 0.0 0.0 -es 08_non-res 2 37 2030 0.0 0.0 -es 09_hydro_pump 2 37 2030 0.0 0.0 -es 01_solar 2 38 2030 1.0 0.0 -es 02_wind_on 2 38 2030 1.0 0.0 -es 03_wind_off 2 38 2030 0.0 0.0 -es 04_res 2 38 2030 0.0 0.0 -es 05_nuclear 2 38 2030 0.0 0.0 -es 06_coal 2 38 2030 0.0 0.0 -es 07_gas 2 38 2030 0.0 0.0 -es 08_non-res 2 38 2030 0.0 0.0 -es 09_hydro_pump 2 38 2030 0.0 0.0 -es 01_solar 2 39 2030 1.0 0.0 -es 02_wind_on 2 39 2030 1.0 0.0 -es 03_wind_off 2 39 2030 0.0 0.0 -es 04_res 2 39 2030 0.0 0.0 -es 05_nuclear 2 39 2030 0.0 0.0 -es 06_coal 2 39 2030 0.0 0.0 -es 07_gas 2 39 2030 0.0 0.0 -es 08_non-res 2 39 2030 0.0 0.0 -es 09_hydro_pump 2 39 2030 0.0 0.0 -es 01_solar 2 40 2030 1.0 0.0 -es 02_wind_on 2 40 2030 1.0 0.0 -es 03_wind_off 2 40 2030 0.0 0.0 -es 04_res 2 40 2030 0.0 0.0 -es 05_nuclear 2 40 2030 0.0 0.0 -es 06_coal 2 40 2030 0.0 0.0 -es 07_gas 2 40 2030 0.0 0.0 -es 08_non-res 2 40 2030 0.0 0.0 -es 09_hydro_pump 2 40 2030 0.0 0.0 -es 01_solar 2 41 2030 1.0 0.0 -es 02_wind_on 2 41 2030 1.0 0.0 -es 03_wind_off 2 41 2030 0.0 0.0 -es 04_res 2 41 2030 0.0 0.0 -es 05_nuclear 2 41 2030 0.0 0.0 -es 06_coal 2 41 2030 0.0 0.0 -es 07_gas 2 41 2030 0.0 0.0 -es 08_non-res 2 41 2030 0.0 0.0 -es 09_hydro_pump 2 41 2030 0.0 0.0 -es 01_solar 2 42 2030 1.0 0.0 -es 02_wind_on 2 42 2030 1.0 0.0 -es 03_wind_off 2 42 2030 1.0 0.0 -es 04_res 2 42 2030 0.0 0.0 -es 05_nuclear 2 42 2030 0.0 0.0 -es 06_coal 2 42 2030 0.0 0.0 -es 07_gas 2 42 2030 0.0 0.0 -es 08_non-res 2 42 2030 0.0 0.0 -es 09_hydro_pump 2 42 2030 0.0 0.0 -es 01_solar 2 43 2030 1.0 0.0 -es 02_wind_on 2 43 2030 1.0 0.0 -es 03_wind_off 2 43 2030 1.0 0.0 -es 04_res 2 43 2030 0.0 0.0 -es 05_nuclear 2 43 2030 0.0 0.0 -es 06_coal 2 43 2030 0.0 0.0 -es 07_gas 2 43 2030 0.0 0.0 -es 08_non-res 2 43 2030 0.0 0.0 -es 09_hydro_pump 2 43 2030 0.0 0.0 -es 01_solar 2 44 2030 1.0 0.0 -es 02_wind_on 2 44 2030 1.0 0.0 -es 03_wind_off 2 44 2030 1.0 0.0 -es 04_res 2 44 2030 0.0 0.0 -es 05_nuclear 2 44 2030 0.0 0.0 -es 06_coal 2 44 2030 0.0 0.0 -es 07_gas 2 44 2030 0.0 0.0 -es 08_non-res 2 44 2030 0.0 0.0 -es 09_hydro_pump 2 44 2030 0.0 0.0 -es 01_solar 2 45 2030 1.0 0.0 -es 02_wind_on 2 45 2030 1.0 0.0 -es 03_wind_off 2 45 2030 1.0 0.0 -es 04_res 2 45 2030 0.0 0.0 -es 05_nuclear 2 45 2030 0.0 0.0 -es 06_coal 2 45 2030 0.0 0.0 -es 07_gas 2 45 2030 0.0 0.0 -es 08_non-res 2 45 2030 0.0 0.0 -es 09_hydro_pump 2 45 2030 0.0 0.0 -es 01_solar 2 46 2030 1.0 0.0 -es 02_wind_on 2 46 2030 1.0 0.0 -es 03_wind_off 2 46 2030 1.0 0.0 -es 04_res 2 46 2030 0.0 0.0 -es 05_nuclear 2 46 2030 0.0 0.0 -es 06_coal 2 46 2030 0.0 0.0 -es 07_gas 2 46 2030 0.0 0.0 -es 08_non-res 2 46 2030 0.0 0.0 -es 09_hydro_pump 2 46 2030 0.0 0.0 -es 01_solar 2 47 2030 1.0 0.0 -es 02_wind_on 2 47 2030 1.0 0.0 -es 03_wind_off 2 47 2030 1.0 0.0 -es 04_res 2 47 2030 0.0 0.0 -es 05_nuclear 2 47 2030 0.0 0.0 -es 06_coal 2 47 2030 0.0 0.0 -es 07_gas 2 47 2030 0.0 0.0 -es 08_non-res 2 47 2030 0.0 0.0 -es 09_hydro_pump 2 47 2030 0.0 0.0 -es 01_solar 2 48 2030 1.0 0.0 -es 02_wind_on 2 48 2030 1.0 0.0 -es 03_wind_off 2 48 2030 1.0 0.0 -es 04_res 2 48 2030 0.0 0.0 -es 05_nuclear 2 48 2030 0.0 0.0 -es 06_coal 2 48 2030 0.0 0.0 -es 07_gas 2 48 2030 0.0 0.0 -es 08_non-res 2 48 2030 0.0 0.0 -es 09_hydro_pump 2 48 2030 0.0 0.0 -es 01_solar 2 49 2030 1.0 0.0 -es 02_wind_on 2 49 2030 1.0 0.0 -es 03_wind_off 2 49 2030 1.0 0.0 -es 04_res 2 49 2030 0.0 0.0 -es 05_nuclear 2 49 2030 0.0 0.0 -es 06_coal 2 49 2030 0.0 0.0 -es 07_gas 2 49 2030 0.0 0.0 -es 08_non-res 2 49 2030 0.0 0.0 -es 09_hydro_pump 2 49 2030 0.0 0.0 -es 01_solar 2 50 2030 1.0 0.0 -es 02_wind_on 2 50 2030 1.0 0.0 -es 03_wind_off 2 50 2030 1.0 0.0 -es 04_res 2 50 2030 0.0 0.0 -es 05_nuclear 2 50 2030 0.0 0.0 -es 06_coal 2 50 2030 0.0 0.0 -es 07_gas 2 50 2030 0.0 0.0 -es 08_non-res 2 50 2030 0.0 0.0 -es 09_hydro_pump 2 50 2030 0.0 0.0 -es 01_solar 2 51 2030 1.0 0.0 -es 02_wind_on 2 51 2030 1.0 0.0 -es 03_wind_off 2 51 2030 1.0 0.0 -es 04_res 2 51 2030 0.0 0.0 -es 05_nuclear 2 51 2030 0.0 0.0 -es 06_coal 2 51 2030 0.0 0.0 -es 07_gas 2 51 2030 0.0 0.0 -es 08_non-res 2 51 2030 0.0 0.0 -es 09_hydro_pump 2 51 2030 0.0 0.0 -es 01_solar 2 52 2030 1.0 0.0 -es 02_wind_on 2 52 2030 1.0 0.0 -es 03_wind_off 2 52 2030 1.0 0.0 -es 04_res 2 52 2030 0.0 0.0 -es 05_nuclear 2 52 2030 0.0 0.0 -es 06_coal 2 52 2030 0.0 0.0 -es 07_gas 2 52 2030 0.0 0.0 -es 08_non-res 2 52 2030 0.0 0.0 -es 09_hydro_pump 2 52 2030 0.0 0.0 -es 01_solar 2 53 2030 1.0 0.0 -es 02_wind_on 2 53 2030 1.0 0.0 -es 03_wind_off 2 53 2030 1.0 0.0 -es 04_res 2 53 2030 0.0 0.0 -es 05_nuclear 2 53 2030 0.0 0.0 -es 06_coal 2 53 2030 0.0 0.0 -es 07_gas 2 53 2030 0.0 0.0 -es 08_non-res 2 53 2030 0.0 0.0 -es 09_hydro_pump 2 53 2030 0.0 0.0 -es 01_solar 2 54 2030 1.0 0.0 -es 02_wind_on 2 54 2030 1.0 0.0 -es 03_wind_off 2 54 2030 1.0 0.0 -es 04_res 2 54 2030 0.0 0.0 -es 05_nuclear 2 54 2030 0.0 0.0 -es 06_coal 2 54 2030 0.0 0.0 -es 07_gas 2 54 2030 0.0 0.0 -es 08_non-res 2 54 2030 0.0 0.0 -es 09_hydro_pump 2 54 2030 0.0 0.0 -es 01_solar 2 55 2030 1.0 0.0 -es 02_wind_on 2 55 2030 1.0 0.0 -es 03_wind_off 2 55 2030 1.0 0.0 -es 04_res 2 55 2030 0.0 0.0 -es 05_nuclear 2 55 2030 0.0 0.0 -es 06_coal 2 55 2030 0.0 0.0 -es 07_gas 2 55 2030 0.0 0.0 -es 08_non-res 2 55 2030 0.0 0.0 -es 09_hydro_pump 2 55 2030 0.0 0.0 -es 01_solar 2 56 2030 1.0 0.0 -es 02_wind_on 2 56 2030 1.0 0.0 -es 03_wind_off 2 56 2030 1.0 0.0 -es 04_res 2 56 2030 0.0 0.0 -es 05_nuclear 2 56 2030 0.0 0.0 -es 06_coal 2 56 2030 0.0 0.0 -es 07_gas 2 56 2030 0.0 0.0 -es 08_non-res 2 56 2030 0.0 0.0 -es 09_hydro_pump 2 56 2030 0.0 0.0 -es 01_solar 2 57 2030 1.0 0.0 -es 02_wind_on 2 57 2030 1.0 0.0 -es 03_wind_off 2 57 2030 1.0 0.0 -es 04_res 2 57 2030 0.0 0.0 -es 05_nuclear 2 57 2030 0.0 0.0 -es 06_coal 2 57 2030 0.0 0.0 -es 07_gas 2 57 2030 0.0 0.0 -es 08_non-res 2 57 2030 0.0 0.0 -es 09_hydro_pump 2 57 2030 0.0 0.0 -es 01_solar 2 58 2030 1.0 0.0 -es 02_wind_on 2 58 2030 1.0 0.0 -es 03_wind_off 2 58 2030 1.0 0.0 -es 04_res 2 58 2030 0.0 0.0 -es 05_nuclear 2 58 2030 0.0 0.0 -es 06_coal 2 58 2030 0.0 0.0 -es 07_gas 2 58 2030 0.0 0.0 -es 08_non-res 2 58 2030 0.0 0.0 -es 09_hydro_pump 2 58 2030 0.0 0.0 -es 01_solar 2 59 2030 1.0 0.0 -es 02_wind_on 2 59 2030 1.0 0.0 -es 03_wind_off 2 59 2030 1.0 0.0 -es 04_res 2 59 2030 0.0 0.0 -es 05_nuclear 2 59 2030 0.0 0.0 -es 06_coal 2 59 2030 0.0 0.0 -es 07_gas 2 59 2030 0.0 0.0 -es 08_non-res 2 59 2030 0.0 0.0 -es 09_hydro_pump 2 59 2030 0.0 0.0 -es 01_solar 2 60 2030 1.0 0.0 -es 02_wind_on 2 60 2030 1.0 0.0 -es 03_wind_off 2 60 2030 1.0 0.0 -es 04_res 2 60 2030 0.0 0.0 -es 05_nuclear 2 60 2030 0.0 0.0 -es 06_coal 2 60 2030 0.0 0.0 -es 07_gas 2 60 2030 0.0 0.0 -es 08_non-res 2 60 2030 0.0 0.0 -es 09_hydro_pump 2 60 2030 0.0 0.0 -es 01_solar 2 61 2030 1.0 0.0 -es 02_wind_on 2 61 2030 1.0 0.0 -es 03_wind_off 2 61 2030 1.0 0.0 -es 04_res 2 61 2030 0.0 0.0 -es 05_nuclear 2 61 2030 0.0 0.0 -es 06_coal 2 61 2030 0.0 0.0 -es 07_gas 2 61 2030 0.0 0.0 -es 08_non-res 2 61 2030 0.0 0.0 -es 09_hydro_pump 2 61 2030 0.0 0.0 -es 01_solar 2 62 2030 1.0 0.0 -es 02_wind_on 2 62 2030 1.0 0.0 -es 03_wind_off 2 62 2030 1.0 0.0 -es 04_res 2 62 2030 1.0 0.0 -es 05_nuclear 2 62 2030 0.0 0.0 -es 06_coal 2 62 2030 0.0 0.0 -es 07_gas 2 62 2030 0.0 0.0 -es 08_non-res 2 62 2030 0.0 0.0 -es 09_hydro_pump 2 62 2030 0.0 0.0 -es 01_solar 2 63 2030 1.0 0.0 -es 02_wind_on 2 63 2030 1.0 0.0 -es 03_wind_off 2 63 2030 1.0 0.0 -es 04_res 2 63 2030 1.0 0.0 -es 05_nuclear 2 63 2030 0.0 0.0 -es 06_coal 2 63 2030 0.0 0.0 -es 07_gas 2 63 2030 0.0 0.0 -es 08_non-res 2 63 2030 0.0 0.0 -es 09_hydro_pump 2 63 2030 0.0 0.0 -es 01_solar 2 64 2030 1.0 0.0 -es 02_wind_on 2 64 2030 1.0 0.0 -es 03_wind_off 2 64 2030 1.0 0.0 -es 04_res 2 64 2030 1.0 0.0 -es 05_nuclear 2 64 2030 0.0 0.0 -es 06_coal 2 64 2030 0.0 0.0 -es 07_gas 2 64 2030 0.0 0.0 -es 08_non-res 2 64 2030 0.0 0.0 -es 09_hydro_pump 2 64 2030 0.0 0.0 -es 01_solar 2 65 2030 1.0 0.0 -es 02_wind_on 2 65 2030 1.0 0.0 -es 03_wind_off 2 65 2030 1.0 0.0 -es 04_res 2 65 2030 1.0 0.0 -es 05_nuclear 2 65 2030 0.0 0.0 -es 06_coal 2 65 2030 0.0 0.0 -es 07_gas 2 65 2030 0.0 0.0 -es 08_non-res 2 65 2030 0.0 0.0 -es 09_hydro_pump 2 65 2030 0.0 0.0 -es 01_solar 2 66 2030 1.0 0.0 -es 02_wind_on 2 66 2030 1.0 0.0 -es 03_wind_off 2 66 2030 1.0 0.0 -es 04_res 2 66 2030 1.0 0.0 -es 05_nuclear 2 66 2030 0.0 0.0 -es 06_coal 2 66 2030 0.0 0.0 -es 07_gas 2 66 2030 0.0 0.0 -es 08_non-res 2 66 2030 0.0 0.0 -es 09_hydro_pump 2 66 2030 0.0 0.0 -es 01_solar 2 67 2030 1.0 0.0 -es 02_wind_on 2 67 2030 1.0 0.0 -es 03_wind_off 2 67 2030 1.0 0.0 -es 04_res 2 67 2030 1.0 0.0 -es 05_nuclear 2 67 2030 0.0 0.0 -es 06_coal 2 67 2030 0.0 0.0 -es 07_gas 2 67 2030 0.0 0.0 -es 08_non-res 2 67 2030 0.0 0.0 -es 09_hydro_pump 2 67 2030 0.0 0.0 -es 01_solar 2 68 2030 1.0 0.0 -es 02_wind_on 2 68 2030 1.0 0.0 -es 03_wind_off 2 68 2030 1.0 0.0 -es 04_res 2 68 2030 1.0 0.0 -es 05_nuclear 2 68 2030 0.0 0.0 -es 06_coal 2 68 2030 0.0 0.0 -es 07_gas 2 68 2030 0.0 0.0 -es 08_non-res 2 68 2030 0.0 0.0 -es 09_hydro_pump 2 68 2030 0.0 0.0 -es 01_solar 2 69 2030 1.0 0.0 -es 02_wind_on 2 69 2030 1.0 0.0 -es 03_wind_off 2 69 2030 1.0 0.0 -es 04_res 2 69 2030 1.0 0.0 -es 05_nuclear 2 69 2030 0.0 0.0 -es 06_coal 2 69 2030 0.0 0.0 -es 07_gas 2 69 2030 0.0 0.0 -es 08_non-res 2 69 2030 0.0 0.0 -es 09_hydro_pump 2 69 2030 0.0 0.0 -es 01_solar 2 70 2030 1.0 0.0 -es 02_wind_on 2 70 2030 1.0 0.0 -es 03_wind_off 2 70 2030 1.0 0.0 -es 04_res 2 70 2030 1.0 0.0 -es 05_nuclear 2 70 2030 0.0 0.0 -es 06_coal 2 70 2030 0.0 0.0 -es 07_gas 2 70 2030 0.0 0.0 -es 08_non-res 2 70 2030 0.0 0.0 -es 09_hydro_pump 2 70 2030 0.0 0.0 -es 01_solar 2 71 2030 1.0 0.0 -es 02_wind_on 2 71 2030 1.0 0.0 -es 03_wind_off 2 71 2030 1.0 0.0 -es 04_res 2 71 2030 1.0 0.0 -es 05_nuclear 2 71 2030 0.0 0.0 -es 06_coal 2 71 2030 0.0 0.0 -es 07_gas 2 71 2030 0.0 0.0 -es 08_non-res 2 71 2030 0.0 0.0 -es 09_hydro_pump 2 71 2030 0.0 0.0 -es 01_solar 2 72 2030 1.0 0.0 -es 02_wind_on 2 72 2030 1.0 0.0 -es 03_wind_off 2 72 2030 1.0 0.0 -es 04_res 2 72 2030 1.0 0.0 -es 05_nuclear 2 72 2030 0.0 0.0 -es 06_coal 2 72 2030 0.0 0.0 -es 07_gas 2 72 2030 0.0 0.0 -es 08_non-res 2 72 2030 0.0 0.0 -es 09_hydro_pump 2 72 2030 0.0 0.0 -es 01_solar 2 73 2030 1.0 0.0 -es 02_wind_on 2 73 2030 1.0 0.0 -es 03_wind_off 2 73 2030 1.0 0.0 -es 04_res 2 73 2030 1.0 0.0 -es 05_nuclear 2 73 2030 0.0 0.0 -es 06_coal 2 73 2030 0.0 0.0 -es 07_gas 2 73 2030 0.0 0.0 -es 08_non-res 2 73 2030 0.0 0.0 -es 09_hydro_pump 2 73 2030 0.0 0.0 -es 01_solar 2 74 2030 1.0 0.0 -es 02_wind_on 2 74 2030 1.0 0.0 -es 03_wind_off 2 74 2030 1.0 0.0 -es 04_res 2 74 2030 1.0 0.0 -es 05_nuclear 2 74 2030 0.0 0.0 -es 06_coal 2 74 2030 0.0 0.0 -es 07_gas 2 74 2030 0.0 0.0 -es 08_non-res 2 74 2030 0.0 0.0 -es 09_hydro_pump 2 74 2030 0.0 0.0 -es 01_solar 2 75 2030 1.0 0.0 -es 02_wind_on 2 75 2030 1.0 0.0 -es 03_wind_off 2 75 2030 1.0 0.0 -es 04_res 2 75 2030 1.0 0.0 -es 05_nuclear 2 75 2030 0.0 0.0 -es 06_coal 2 75 2030 0.0 0.0 -es 07_gas 2 75 2030 0.0 0.0 -es 08_non-res 2 75 2030 0.0 0.0 -es 09_hydro_pump 2 75 2030 0.0 0.0 -es 01_solar 2 76 2030 1.0 0.0 -es 02_wind_on 2 76 2030 1.0 0.0 -es 03_wind_off 2 76 2030 1.0 0.0 -es 04_res 2 76 2030 1.0 0.0 -es 05_nuclear 2 76 2030 0.0 0.0 -es 06_coal 2 76 2030 0.0 0.0 -es 07_gas 2 76 2030 0.0 0.0 -es 08_non-res 2 76 2030 0.0 0.0 -es 09_hydro_pump 2 76 2030 0.0 0.0 -es 01_solar 2 77 2030 1.0 0.0 -es 02_wind_on 2 77 2030 1.0 0.0 -es 03_wind_off 2 77 2030 1.0 0.0 -es 04_res 2 77 2030 1.0 0.0 -es 05_nuclear 2 77 2030 0.0 0.0 -es 06_coal 2 77 2030 0.0 0.0 -es 07_gas 2 77 2030 0.0 0.0 -es 08_non-res 2 77 2030 0.0 0.0 -es 09_hydro_pump 2 77 2030 0.0 0.0 -es 01_solar 2 78 2030 1.0 0.0 -es 02_wind_on 2 78 2030 1.0 0.0 -es 03_wind_off 2 78 2030 1.0 0.0 -es 04_res 2 78 2030 1.0 0.0 -es 05_nuclear 2 78 2030 0.0 0.0 -es 06_coal 2 78 2030 0.0 0.0 -es 07_gas 2 78 2030 0.0 0.0 -es 08_non-res 2 78 2030 0.0 0.0 -es 09_hydro_pump 2 78 2030 0.0 0.0 -es 01_solar 2 79 2030 1.0 0.0 -es 02_wind_on 2 79 2030 1.0 0.0 -es 03_wind_off 2 79 2030 1.0 0.0 -es 04_res 2 79 2030 1.0 0.0 -es 05_nuclear 2 79 2030 0.0 0.0 -es 06_coal 2 79 2030 0.0 0.0 -es 07_gas 2 79 2030 0.0 0.0 -es 08_non-res 2 79 2030 0.0 0.0 -es 09_hydro_pump 2 79 2030 0.0 0.0 -es 01_solar 2 80 2030 1.0 0.0 -es 02_wind_on 2 80 2030 1.0 0.0 -es 03_wind_off 2 80 2030 1.0 0.0 -es 04_res 2 80 2030 1.0 0.0 -es 05_nuclear 2 80 2030 0.0 0.0 -es 06_coal 2 80 2030 0.0 0.0 -es 07_gas 2 80 2030 0.0 0.0 -es 08_non-res 2 80 2030 0.0 0.0 -es 09_hydro_pump 2 80 2030 0.0 0.0 -es 01_solar 2 81 2030 1.0 0.0 -es 02_wind_on 2 81 2030 1.0 0.0 -es 03_wind_off 2 81 2030 1.0 0.0 -es 04_res 2 81 2030 1.0 0.0 -es 05_nuclear 2 81 2030 0.0 0.0 -es 06_coal 2 81 2030 0.0 0.0 -es 07_gas 2 81 2030 0.0 0.0 -es 08_non-res 2 81 2030 0.0 0.0 -es 09_hydro_pump 2 81 2030 0.0 0.0 -es 01_solar 2 82 2030 1.0 0.0 -es 02_wind_on 2 82 2030 1.0 0.0 -es 03_wind_off 2 82 2030 1.0 0.0 -es 04_res 2 82 2030 1.0 0.0 -es 05_nuclear 2 82 2030 1.0 0.0 -es 06_coal 2 82 2030 0.0 0.0 -es 07_gas 2 82 2030 0.0 0.0 -es 08_non-res 2 82 2030 0.0 0.0 -es 09_hydro_pump 2 82 2030 0.0 0.0 -es 01_solar 2 83 2030 1.0 0.0 -es 02_wind_on 2 83 2030 1.0 0.0 -es 03_wind_off 2 83 2030 1.0 0.0 -es 04_res 2 83 2030 1.0 0.0 -es 05_nuclear 2 83 2030 1.0 0.0 -es 06_coal 2 83 2030 0.0 0.0 -es 07_gas 2 83 2030 0.0 0.0 -es 08_non-res 2 83 2030 0.0 0.0 -es 09_hydro_pump 2 83 2030 0.0 0.0 -es 01_solar 2 84 2030 1.0 0.0 -es 02_wind_on 2 84 2030 1.0 0.0 -es 03_wind_off 2 84 2030 1.0 0.0 -es 04_res 2 84 2030 1.0 0.0 -es 05_nuclear 2 84 2030 1.0 0.0 -es 06_coal 2 84 2030 0.0 0.0 -es 07_gas 2 84 2030 0.0 0.0 -es 08_non-res 2 84 2030 0.0 0.0 -es 09_hydro_pump 2 84 2030 0.0 0.0 -es 01_solar 2 85 2030 1.0 0.0 -es 02_wind_on 2 85 2030 1.0 0.0 -es 03_wind_off 2 85 2030 1.0 0.0 -es 04_res 2 85 2030 1.0 0.0 -es 05_nuclear 2 85 2030 1.0 0.0 -es 06_coal 2 85 2030 0.0 0.0 -es 07_gas 2 85 2030 0.0 0.0 -es 08_non-res 2 85 2030 0.0 0.0 -es 09_hydro_pump 2 85 2030 0.0 0.0 -es 01_solar 2 86 2030 1.0 0.0 -es 02_wind_on 2 86 2030 1.0 0.0 -es 03_wind_off 2 86 2030 1.0 0.0 -es 04_res 2 86 2030 1.0 0.0 -es 05_nuclear 2 86 2030 1.0 0.0 -es 06_coal 2 86 2030 0.0 0.0 -es 07_gas 2 86 2030 0.0 0.0 -es 08_non-res 2 86 2030 0.0 0.0 -es 09_hydro_pump 2 86 2030 0.0 0.0 -es 01_solar 2 87 2030 1.0 0.0 -es 02_wind_on 2 87 2030 1.0 0.0 -es 03_wind_off 2 87 2030 1.0 0.0 -es 04_res 2 87 2030 1.0 0.0 -es 05_nuclear 2 87 2030 1.0 0.0 -es 06_coal 2 87 2030 0.0 0.0 -es 07_gas 2 87 2030 0.0 0.0 -es 08_non-res 2 87 2030 0.0 0.0 -es 09_hydro_pump 2 87 2030 0.0 0.0 -es 01_solar 2 88 2030 1.0 0.0 -es 02_wind_on 2 88 2030 1.0 0.0 -es 03_wind_off 2 88 2030 1.0 0.0 -es 04_res 2 88 2030 1.0 0.0 -es 05_nuclear 2 88 2030 1.0 0.0 -es 06_coal 2 88 2030 0.0 0.0 -es 07_gas 2 88 2030 0.0 0.0 -es 08_non-res 2 88 2030 0.0 0.0 -es 09_hydro_pump 2 88 2030 0.0 0.0 -es 01_solar 2 89 2030 1.0 0.0 -es 02_wind_on 2 89 2030 1.0 0.0 -es 03_wind_off 2 89 2030 1.0 0.0 -es 04_res 2 89 2030 1.0 0.0 -es 05_nuclear 2 89 2030 1.0 0.0 -es 06_coal 2 89 2030 0.0 0.0 -es 07_gas 2 89 2030 0.0 0.0 -es 08_non-res 2 89 2030 0.0 0.0 -es 09_hydro_pump 2 89 2030 0.0 0.0 -es 01_solar 2 90 2030 1.0 0.0 -es 02_wind_on 2 90 2030 1.0 0.0 -es 03_wind_off 2 90 2030 1.0 0.0 -es 04_res 2 90 2030 1.0 0.0 -es 05_nuclear 2 90 2030 1.0 0.0 -es 06_coal 2 90 2030 0.0 0.0 -es 07_gas 2 90 2030 0.0 0.0 -es 08_non-res 2 90 2030 0.0 0.0 -es 09_hydro_pump 2 90 2030 0.0 0.0 -es 01_solar 2 91 2030 1.0 0.0 -es 02_wind_on 2 91 2030 1.0 0.0 -es 03_wind_off 2 91 2030 1.0 0.0 -es 04_res 2 91 2030 1.0 0.0 -es 05_nuclear 2 91 2030 1.0 0.0 -es 06_coal 2 91 2030 0.0 0.0 -es 07_gas 2 91 2030 0.0 0.0 -es 08_non-res 2 91 2030 0.0 0.0 -es 09_hydro_pump 2 91 2030 0.0 0.0 -es 01_solar 2 92 2030 1.0 0.0 -es 02_wind_on 2 92 2030 1.0 0.0 -es 03_wind_off 2 92 2030 1.0 0.0 -es 04_res 2 92 2030 1.0 0.0 -es 05_nuclear 2 92 2030 1.0 0.0 -es 06_coal 2 92 2030 0.0 0.0 -es 07_gas 2 92 2030 0.0 0.0 -es 08_non-res 2 92 2030 0.0 0.0 -es 09_hydro_pump 2 92 2030 0.0 0.0 -es 01_solar 2 93 2030 1.0 0.0 -es 02_wind_on 2 93 2030 1.0 0.0 -es 03_wind_off 2 93 2030 1.0 0.0 -es 04_res 2 93 2030 1.0 0.0 -es 05_nuclear 2 93 2030 1.0 0.0 -es 06_coal 2 93 2030 0.0 0.0 -es 07_gas 2 93 2030 0.0 0.0 -es 08_non-res 2 93 2030 0.0 0.0 -es 09_hydro_pump 2 93 2030 0.0 0.0 -es 01_solar 2 94 2030 1.0 0.0 -es 02_wind_on 2 94 2030 1.0 0.0 -es 03_wind_off 2 94 2030 1.0 0.0 -es 04_res 2 94 2030 1.0 0.0 -es 05_nuclear 2 94 2030 1.0 0.0 -es 06_coal 2 94 2030 0.0 0.0 -es 07_gas 2 94 2030 0.0 0.0 -es 08_non-res 2 94 2030 0.0 0.0 -es 09_hydro_pump 2 94 2030 0.0 0.0 -es 01_solar 2 95 2030 1.0 0.0 -es 02_wind_on 2 95 2030 1.0 0.0 -es 03_wind_off 2 95 2030 1.0 0.0 -es 04_res 2 95 2030 1.0 0.0 -es 05_nuclear 2 95 2030 1.0 0.0 -es 06_coal 2 95 2030 0.0 0.0 -es 07_gas 2 95 2030 0.0 0.0 -es 08_non-res 2 95 2030 0.0 0.0 -es 09_hydro_pump 2 95 2030 0.0 0.0 -es 01_solar 2 96 2030 1.0 0.0 -es 02_wind_on 2 96 2030 1.0 0.0 -es 03_wind_off 2 96 2030 1.0 0.0 -es 04_res 2 96 2030 1.0 0.0 -es 05_nuclear 2 96 2030 1.0 0.0 -es 06_coal 2 96 2030 0.0 0.0 -es 07_gas 2 96 2030 0.0 0.0 -es 08_non-res 2 96 2030 0.0 0.0 -es 09_hydro_pump 2 96 2030 0.0 0.0 -es 01_solar 2 97 2030 1.0 0.0 -es 02_wind_on 2 97 2030 1.0 0.0 -es 03_wind_off 2 97 2030 1.0 0.0 -es 04_res 2 97 2030 1.0 0.0 -es 05_nuclear 2 97 2030 1.0 0.0 -es 06_coal 2 97 2030 0.0 0.0 -es 07_gas 2 97 2030 0.0 0.0 -es 08_non-res 2 97 2030 0.0 0.0 -es 09_hydro_pump 2 97 2030 0.0 0.0 -es 01_solar 2 98 2030 1.0 0.0 -es 02_wind_on 2 98 2030 1.0 0.0 -es 03_wind_off 2 98 2030 1.0 0.0 -es 04_res 2 98 2030 1.0 0.0 -es 05_nuclear 2 98 2030 1.0 0.0 -es 06_coal 2 98 2030 0.0 0.0 -es 07_gas 2 98 2030 0.0 0.0 -es 08_non-res 2 98 2030 0.0 0.0 -es 09_hydro_pump 2 98 2030 0.0 0.0 -es 01_solar 2 99 2030 1.0 0.0 -es 02_wind_on 2 99 2030 1.0 0.0 -es 03_wind_off 2 99 2030 1.0 0.0 -es 04_res 2 99 2030 1.0 0.0 -es 05_nuclear 2 99 2030 1.0 0.0 -es 06_coal 2 99 2030 0.0 0.0 -es 07_gas 2 99 2030 0.0 0.0 -es 08_non-res 2 99 2030 0.0 0.0 -es 09_hydro_pump 2 99 2030 0.0 0.0 -es 01_solar 2 100 2030 1.0 0.0 -es 02_wind_on 2 100 2030 1.0 0.0 -es 03_wind_off 2 100 2030 1.0 0.0 -es 04_res 2 100 2030 1.0 0.0 -es 05_nuclear 2 100 2030 1.0 0.0 -es 06_coal 2 100 2030 0.0 0.0 -es 07_gas 2 100 2030 0.0 0.0 -es 08_non-res 2 100 2030 0.0 0.0 -es 09_hydro_pump 2 100 2030 0.0 0.0 -es 01_solar 2 101 2030 1.0 0.0 -es 02_wind_on 2 101 2030 1.0 0.0 -es 03_wind_off 2 101 2030 1.0 0.0 -es 04_res 2 101 2030 1.0 0.0 -es 05_nuclear 2 101 2030 1.0 0.0 -es 06_coal 2 101 2030 0.0 0.0 -es 07_gas 2 101 2030 0.0 0.0 -es 08_non-res 2 101 2030 0.0 0.0 -es 09_hydro_pump 2 101 2030 0.0 0.0 -es 01_solar 2 102 2030 1.0 0.0 -es 02_wind_on 2 102 2030 1.0 0.0 -es 03_wind_off 2 102 2030 1.0 0.0 -es 04_res 2 102 2030 1.0 0.0 -es 05_nuclear 2 102 2030 1.0 0.0 -es 06_coal 2 102 2030 1.0 0.0 -es 07_gas 2 102 2030 0.0 0.0 -es 08_non-res 2 102 2030 0.0 0.0 -es 09_hydro_pump 2 102 2030 0.0 0.0 -es 01_solar 2 103 2030 1.0 0.0 -es 02_wind_on 2 103 2030 1.0 0.0 -es 03_wind_off 2 103 2030 1.0 0.0 -es 04_res 2 103 2030 1.0 0.0 -es 05_nuclear 2 103 2030 1.0 0.0 -es 06_coal 2 103 2030 1.0 0.0 -es 07_gas 2 103 2030 0.0 0.0 -es 08_non-res 2 103 2030 0.0 0.0 -es 09_hydro_pump 2 103 2030 0.0 0.0 -es 01_solar 2 104 2030 1.0 0.0 -es 02_wind_on 2 104 2030 1.0 0.0 -es 03_wind_off 2 104 2030 1.0 0.0 -es 04_res 2 104 2030 1.0 0.0 -es 05_nuclear 2 104 2030 1.0 0.0 -es 06_coal 2 104 2030 1.0 0.0 -es 07_gas 2 104 2030 0.0 0.0 -es 08_non-res 2 104 2030 0.0 0.0 -es 09_hydro_pump 2 104 2030 0.0 0.0 -es 01_solar 2 105 2030 1.0 0.0 -es 02_wind_on 2 105 2030 1.0 0.0 -es 03_wind_off 2 105 2030 1.0 0.0 -es 04_res 2 105 2030 1.0 0.0 -es 05_nuclear 2 105 2030 1.0 0.0 -es 06_coal 2 105 2030 1.0 0.0 -es 07_gas 2 105 2030 0.0 0.0 -es 08_non-res 2 105 2030 0.0 0.0 -es 09_hydro_pump 2 105 2030 0.0 0.0 -es 01_solar 2 106 2030 1.0 0.0 -es 02_wind_on 2 106 2030 1.0 0.0 -es 03_wind_off 2 106 2030 1.0 0.0 -es 04_res 2 106 2030 1.0 0.0 -es 05_nuclear 2 106 2030 1.0 0.0 -es 06_coal 2 106 2030 1.0 0.0 -es 07_gas 2 106 2030 0.0 0.0 -es 08_non-res 2 106 2030 0.0 0.0 -es 09_hydro_pump 2 106 2030 0.0 0.0 -es 01_solar 2 107 2030 1.0 0.0 -es 02_wind_on 2 107 2030 1.0 0.0 -es 03_wind_off 2 107 2030 1.0 0.0 -es 04_res 2 107 2030 1.0 0.0 -es 05_nuclear 2 107 2030 1.0 0.0 -es 06_coal 2 107 2030 1.0 0.0 -es 07_gas 2 107 2030 0.0 0.0 -es 08_non-res 2 107 2030 0.0 0.0 -es 09_hydro_pump 2 107 2030 0.0 0.0 -es 01_solar 2 108 2030 1.0 0.0 -es 02_wind_on 2 108 2030 1.0 0.0 -es 03_wind_off 2 108 2030 1.0 0.0 -es 04_res 2 108 2030 1.0 0.0 -es 05_nuclear 2 108 2030 1.0 0.0 -es 06_coal 2 108 2030 1.0 0.0 -es 07_gas 2 108 2030 0.0 0.0 -es 08_non-res 2 108 2030 0.0 0.0 -es 09_hydro_pump 2 108 2030 0.0 0.0 -es 01_solar 2 109 2030 1.0 0.0 -es 02_wind_on 2 109 2030 1.0 0.0 -es 03_wind_off 2 109 2030 1.0 0.0 -es 04_res 2 109 2030 1.0 0.0 -es 05_nuclear 2 109 2030 1.0 0.0 -es 06_coal 2 109 2030 1.0 0.0 -es 07_gas 2 109 2030 0.0 0.0 -es 08_non-res 2 109 2030 0.0 0.0 -es 09_hydro_pump 2 109 2030 0.0 0.0 -es 01_solar 2 110 2030 1.0 0.0 -es 02_wind_on 2 110 2030 1.0 0.0 -es 03_wind_off 2 110 2030 1.0 0.0 -es 04_res 2 110 2030 1.0 0.0 -es 05_nuclear 2 110 2030 1.0 0.0 -es 06_coal 2 110 2030 1.0 0.0 -es 07_gas 2 110 2030 0.0 0.0 -es 08_non-res 2 110 2030 0.0 0.0 -es 09_hydro_pump 2 110 2030 0.0 0.0 -es 01_solar 2 111 2030 1.0 0.0 -es 02_wind_on 2 111 2030 1.0 0.0 -es 03_wind_off 2 111 2030 1.0 0.0 -es 04_res 2 111 2030 1.0 0.0 -es 05_nuclear 2 111 2030 1.0 0.0 -es 06_coal 2 111 2030 1.0 0.0 -es 07_gas 2 111 2030 0.0 0.0 -es 08_non-res 2 111 2030 0.0 0.0 -es 09_hydro_pump 2 111 2030 0.0 0.0 -es 01_solar 2 112 2030 1.0 0.0 -es 02_wind_on 2 112 2030 1.0 0.0 -es 03_wind_off 2 112 2030 1.0 0.0 -es 04_res 2 112 2030 1.0 0.0 -es 05_nuclear 2 112 2030 1.0 0.0 -es 06_coal 2 112 2030 1.0 0.0 -es 07_gas 2 112 2030 0.0 0.0 -es 08_non-res 2 112 2030 0.0 0.0 -es 09_hydro_pump 2 112 2030 0.0 0.0 -es 01_solar 2 113 2030 1.0 0.0 -es 02_wind_on 2 113 2030 1.0 0.0 -es 03_wind_off 2 113 2030 1.0 0.0 -es 04_res 2 113 2030 1.0 0.0 -es 05_nuclear 2 113 2030 1.0 0.0 -es 06_coal 2 113 2030 1.0 0.0 -es 07_gas 2 113 2030 0.0 0.0 -es 08_non-res 2 113 2030 0.0 0.0 -es 09_hydro_pump 2 113 2030 0.0 0.0 -es 01_solar 2 114 2030 1.0 0.0 -es 02_wind_on 2 114 2030 1.0 0.0 -es 03_wind_off 2 114 2030 1.0 0.0 -es 04_res 2 114 2030 1.0 0.0 -es 05_nuclear 2 114 2030 1.0 0.0 -es 06_coal 2 114 2030 1.0 0.0 -es 07_gas 2 114 2030 0.0 0.0 -es 08_non-res 2 114 2030 0.0 0.0 -es 09_hydro_pump 2 114 2030 0.0 0.0 -es 01_solar 2 115 2030 1.0 0.0 -es 02_wind_on 2 115 2030 1.0 0.0 -es 03_wind_off 2 115 2030 1.0 0.0 -es 04_res 2 115 2030 1.0 0.0 -es 05_nuclear 2 115 2030 1.0 0.0 -es 06_coal 2 115 2030 1.0 0.0 -es 07_gas 2 115 2030 0.0 0.0 -es 08_non-res 2 115 2030 0.0 0.0 -es 09_hydro_pump 2 115 2030 0.0 0.0 -es 01_solar 2 116 2030 1.0 0.0 -es 02_wind_on 2 116 2030 1.0 0.0 -es 03_wind_off 2 116 2030 1.0 0.0 -es 04_res 2 116 2030 1.0 0.0 -es 05_nuclear 2 116 2030 1.0 0.0 -es 06_coal 2 116 2030 1.0 0.0 -es 07_gas 2 116 2030 0.0 0.0 -es 08_non-res 2 116 2030 0.0 0.0 -es 09_hydro_pump 2 116 2030 0.0 0.0 -es 01_solar 2 117 2030 1.0 0.0 -es 02_wind_on 2 117 2030 1.0 0.0 -es 03_wind_off 2 117 2030 1.0 0.0 -es 04_res 2 117 2030 1.0 0.0 -es 05_nuclear 2 117 2030 1.0 0.0 -es 06_coal 2 117 2030 1.0 0.0 -es 07_gas 2 117 2030 0.0 0.0 -es 08_non-res 2 117 2030 0.0 0.0 -es 09_hydro_pump 2 117 2030 0.0 0.0 -es 01_solar 2 118 2030 1.0 0.0 -es 02_wind_on 2 118 2030 1.0 0.0 -es 03_wind_off 2 118 2030 1.0 0.0 -es 04_res 2 118 2030 1.0 0.0 -es 05_nuclear 2 118 2030 1.0 0.0 -es 06_coal 2 118 2030 1.0 0.0 -es 07_gas 2 118 2030 0.0 0.0 -es 08_non-res 2 118 2030 0.0 0.0 -es 09_hydro_pump 2 118 2030 0.0 0.0 -es 01_solar 2 119 2030 1.0 0.0 -es 02_wind_on 2 119 2030 1.0 0.0 -es 03_wind_off 2 119 2030 1.0 0.0 -es 04_res 2 119 2030 1.0 0.0 -es 05_nuclear 2 119 2030 1.0 0.0 -es 06_coal 2 119 2030 1.0 0.0 -es 07_gas 2 119 2030 0.0 0.0 -es 08_non-res 2 119 2030 0.0 0.0 -es 09_hydro_pump 2 119 2030 0.0 0.0 -es 01_solar 2 120 2030 1.0 0.0 -es 02_wind_on 2 120 2030 1.0 0.0 -es 03_wind_off 2 120 2030 1.0 0.0 -es 04_res 2 120 2030 1.0 0.0 -es 05_nuclear 2 120 2030 1.0 0.0 -es 06_coal 2 120 2030 1.0 0.0 -es 07_gas 2 120 2030 0.0 0.0 -es 08_non-res 2 120 2030 0.0 0.0 -es 09_hydro_pump 2 120 2030 0.0 0.0 -es 01_solar 2 121 2030 1.0 0.0 -es 02_wind_on 2 121 2030 1.0 0.0 -es 03_wind_off 2 121 2030 1.0 0.0 -es 04_res 2 121 2030 1.0 0.0 -es 05_nuclear 2 121 2030 1.0 0.0 -es 06_coal 2 121 2030 1.0 0.0 -es 07_gas 2 121 2030 0.0 0.0 -es 08_non-res 2 121 2030 0.0 0.0 -es 09_hydro_pump 2 121 2030 0.0 0.0 -es 01_solar 2 122 2030 1.0 0.0 -es 02_wind_on 2 122 2030 1.0 0.0 -es 03_wind_off 2 122 2030 1.0 0.0 -es 04_res 2 122 2030 1.0 0.0 -es 05_nuclear 2 122 2030 1.0 0.0 -es 06_coal 2 122 2030 1.0 0.0 -es 07_gas 2 122 2030 1.0 0.0 -es 08_non-res 2 122 2030 0.0 0.0 -es 09_hydro_pump 2 122 2030 0.0 0.0 -es 01_solar 2 123 2030 1.0 0.0 -es 02_wind_on 2 123 2030 1.0 0.0 -es 03_wind_off 2 123 2030 1.0 0.0 -es 04_res 2 123 2030 1.0 0.0 -es 05_nuclear 2 123 2030 1.0 0.0 -es 06_coal 2 123 2030 1.0 0.0 -es 07_gas 2 123 2030 1.0 0.0 -es 08_non-res 2 123 2030 0.0 0.0 -es 09_hydro_pump 2 123 2030 0.0 0.0 -es 01_solar 2 124 2030 1.0 0.0 -es 02_wind_on 2 124 2030 1.0 0.0 -es 03_wind_off 2 124 2030 1.0 0.0 -es 04_res 2 124 2030 1.0 0.0 -es 05_nuclear 2 124 2030 1.0 0.0 -es 06_coal 2 124 2030 1.0 0.0 -es 07_gas 2 124 2030 1.0 0.0 -es 08_non-res 2 124 2030 0.0 0.0 -es 09_hydro_pump 2 124 2030 0.0 0.0 -es 01_solar 2 125 2030 1.0 0.0 -es 02_wind_on 2 125 2030 1.0 0.0 -es 03_wind_off 2 125 2030 1.0 0.0 -es 04_res 2 125 2030 1.0 0.0 -es 05_nuclear 2 125 2030 1.0 0.0 -es 06_coal 2 125 2030 1.0 0.0 -es 07_gas 2 125 2030 1.0 0.0 -es 08_non-res 2 125 2030 0.0 0.0 -es 09_hydro_pump 2 125 2030 0.0 0.0 -es 01_solar 2 126 2030 1.0 0.0 -es 02_wind_on 2 126 2030 1.0 0.0 -es 03_wind_off 2 126 2030 1.0 0.0 -es 04_res 2 126 2030 1.0 0.0 -es 05_nuclear 2 126 2030 1.0 0.0 -es 06_coal 2 126 2030 1.0 0.0 -es 07_gas 2 126 2030 1.0 0.0 -es 08_non-res 2 126 2030 0.0 0.0 -es 09_hydro_pump 2 126 2030 0.0 0.0 -es 01_solar 2 127 2030 1.0 0.0 -es 02_wind_on 2 127 2030 1.0 0.0 -es 03_wind_off 2 127 2030 1.0 0.0 -es 04_res 2 127 2030 1.0 0.0 -es 05_nuclear 2 127 2030 1.0 0.0 -es 06_coal 2 127 2030 1.0 0.0 -es 07_gas 2 127 2030 1.0 0.0 -es 08_non-res 2 127 2030 0.0 0.0 -es 09_hydro_pump 2 127 2030 0.0 0.0 -es 01_solar 2 128 2030 1.0 0.0 -es 02_wind_on 2 128 2030 1.0 0.0 -es 03_wind_off 2 128 2030 1.0 0.0 -es 04_res 2 128 2030 1.0 0.0 -es 05_nuclear 2 128 2030 1.0 0.0 -es 06_coal 2 128 2030 1.0 0.0 -es 07_gas 2 128 2030 1.0 0.0 -es 08_non-res 2 128 2030 0.0 0.0 -es 09_hydro_pump 2 128 2030 0.0 0.0 -es 01_solar 2 129 2030 1.0 0.0 -es 02_wind_on 2 129 2030 1.0 0.0 -es 03_wind_off 2 129 2030 1.0 0.0 -es 04_res 2 129 2030 1.0 0.0 -es 05_nuclear 2 129 2030 1.0 0.0 -es 06_coal 2 129 2030 1.0 0.0 -es 07_gas 2 129 2030 1.0 0.0 -es 08_non-res 2 129 2030 0.0 0.0 -es 09_hydro_pump 2 129 2030 0.0 0.0 -es 01_solar 2 130 2030 1.0 0.0 -es 02_wind_on 2 130 2030 1.0 0.0 -es 03_wind_off 2 130 2030 1.0 0.0 -es 04_res 2 130 2030 1.0 0.0 -es 05_nuclear 2 130 2030 1.0 0.0 -es 06_coal 2 130 2030 1.0 0.0 -es 07_gas 2 130 2030 1.0 0.0 -es 08_non-res 2 130 2030 0.0 0.0 -es 09_hydro_pump 2 130 2030 0.0 0.0 -es 01_solar 2 131 2030 1.0 0.0 -es 02_wind_on 2 131 2030 1.0 0.0 -es 03_wind_off 2 131 2030 1.0 0.0 -es 04_res 2 131 2030 1.0 0.0 -es 05_nuclear 2 131 2030 1.0 0.0 -es 06_coal 2 131 2030 1.0 0.0 -es 07_gas 2 131 2030 1.0 0.0 -es 08_non-res 2 131 2030 0.0 0.0 -es 09_hydro_pump 2 131 2030 0.0 0.0 -es 01_solar 2 132 2030 1.0 0.0 -es 02_wind_on 2 132 2030 1.0 0.0 -es 03_wind_off 2 132 2030 1.0 0.0 -es 04_res 2 132 2030 1.0 0.0 -es 05_nuclear 2 132 2030 1.0 0.0 -es 06_coal 2 132 2030 1.0 0.0 -es 07_gas 2 132 2030 1.0 0.0 -es 08_non-res 2 132 2030 0.0 0.0 -es 09_hydro_pump 2 132 2030 0.0 0.0 -es 01_solar 2 133 2030 1.0 0.0 -es 02_wind_on 2 133 2030 1.0 0.0 -es 03_wind_off 2 133 2030 1.0 0.0 -es 04_res 2 133 2030 1.0 0.0 -es 05_nuclear 2 133 2030 1.0 0.0 -es 06_coal 2 133 2030 1.0 0.0 -es 07_gas 2 133 2030 1.0 0.0 -es 08_non-res 2 133 2030 0.0 0.0 -es 09_hydro_pump 2 133 2030 0.0 0.0 -es 01_solar 2 134 2030 1.0 0.0 -es 02_wind_on 2 134 2030 1.0 0.0 -es 03_wind_off 2 134 2030 1.0 0.0 -es 04_res 2 134 2030 1.0 0.0 -es 05_nuclear 2 134 2030 1.0 0.0 -es 06_coal 2 134 2030 1.0 0.0 -es 07_gas 2 134 2030 1.0 0.0 -es 08_non-res 2 134 2030 0.0 0.0 -es 09_hydro_pump 2 134 2030 0.0 0.0 -es 01_solar 2 135 2030 1.0 0.0 -es 02_wind_on 2 135 2030 1.0 0.0 -es 03_wind_off 2 135 2030 1.0 0.0 -es 04_res 2 135 2030 1.0 0.0 -es 05_nuclear 2 135 2030 1.0 0.0 -es 06_coal 2 135 2030 1.0 0.0 -es 07_gas 2 135 2030 1.0 0.0 -es 08_non-res 2 135 2030 0.0 0.0 -es 09_hydro_pump 2 135 2030 0.0 0.0 -es 01_solar 2 136 2030 1.0 0.0 -es 02_wind_on 2 136 2030 1.0 0.0 -es 03_wind_off 2 136 2030 1.0 0.0 -es 04_res 2 136 2030 1.0 0.0 -es 05_nuclear 2 136 2030 1.0 0.0 -es 06_coal 2 136 2030 1.0 0.0 -es 07_gas 2 136 2030 1.0 0.0 -es 08_non-res 2 136 2030 0.0 0.0 -es 09_hydro_pump 2 136 2030 0.0 0.0 -es 01_solar 2 137 2030 1.0 0.0 -es 02_wind_on 2 137 2030 1.0 0.0 -es 03_wind_off 2 137 2030 1.0 0.0 -es 04_res 2 137 2030 1.0 0.0 -es 05_nuclear 2 137 2030 1.0 0.0 -es 06_coal 2 137 2030 1.0 0.0 -es 07_gas 2 137 2030 1.0 0.0 -es 08_non-res 2 137 2030 0.0 0.0 -es 09_hydro_pump 2 137 2030 0.0 0.0 -es 01_solar 2 138 2030 1.0 0.0 -es 02_wind_on 2 138 2030 1.0 0.0 -es 03_wind_off 2 138 2030 1.0 0.0 -es 04_res 2 138 2030 1.0 0.0 -es 05_nuclear 2 138 2030 1.0 0.0 -es 06_coal 2 138 2030 1.0 0.0 -es 07_gas 2 138 2030 1.0 0.0 -es 08_non-res 2 138 2030 0.0 0.0 -es 09_hydro_pump 2 138 2030 0.0 0.0 -es 01_solar 2 139 2030 1.0 0.0 -es 02_wind_on 2 139 2030 1.0 0.0 -es 03_wind_off 2 139 2030 1.0 0.0 -es 04_res 2 139 2030 1.0 0.0 -es 05_nuclear 2 139 2030 1.0 0.0 -es 06_coal 2 139 2030 1.0 0.0 -es 07_gas 2 139 2030 1.0 0.0 -es 08_non-res 2 139 2030 0.0 0.0 -es 09_hydro_pump 2 139 2030 0.0 0.0 -es 01_solar 2 140 2030 1.0 0.0 -es 02_wind_on 2 140 2030 1.0 0.0 -es 03_wind_off 2 140 2030 1.0 0.0 -es 04_res 2 140 2030 1.0 0.0 -es 05_nuclear 2 140 2030 1.0 0.0 -es 06_coal 2 140 2030 1.0 0.0 -es 07_gas 2 140 2030 1.0 0.0 -es 08_non-res 2 140 2030 0.0 0.0 -es 09_hydro_pump 2 140 2030 0.0 0.0 -es 01_solar 2 141 2030 1.0 0.0 -es 02_wind_on 2 141 2030 1.0 0.0 -es 03_wind_off 2 141 2030 1.0 0.0 -es 04_res 2 141 2030 1.0 0.0 -es 05_nuclear 2 141 2030 1.0 0.0 -es 06_coal 2 141 2030 1.0 0.0 -es 07_gas 2 141 2030 1.0 0.0 -es 08_non-res 2 141 2030 0.0 0.0 -es 09_hydro_pump 2 141 2030 0.0 0.0 -es 01_solar 2 142 2030 1.0 0.0 -es 02_wind_on 2 142 2030 1.0 0.0 -es 03_wind_off 2 142 2030 1.0 0.0 -es 04_res 2 142 2030 1.0 0.0 -es 05_nuclear 2 142 2030 1.0 0.0 -es 06_coal 2 142 2030 1.0 0.0 -es 07_gas 2 142 2030 1.0 0.0 -es 08_non-res 2 142 2030 1.0 0.0 -es 09_hydro_pump 2 142 2030 0.0 0.0 -es 01_solar 2 143 2030 1.0 0.0 -es 02_wind_on 2 143 2030 1.0 0.0 -es 03_wind_off 2 143 2030 1.0 0.0 -es 04_res 2 143 2030 1.0 0.0 -es 05_nuclear 2 143 2030 1.0 0.0 -es 06_coal 2 143 2030 1.0 0.0 -es 07_gas 2 143 2030 1.0 0.0 -es 08_non-res 2 143 2030 1.0 0.0 -es 09_hydro_pump 2 143 2030 0.0 0.0 -es 01_solar 2 144 2030 1.0 0.0 -es 02_wind_on 2 144 2030 1.0 0.0 -es 03_wind_off 2 144 2030 1.0 0.0 -es 04_res 2 144 2030 1.0 0.0 -es 05_nuclear 2 144 2030 1.0 0.0 -es 06_coal 2 144 2030 1.0 0.0 -es 07_gas 2 144 2030 1.0 0.0 -es 08_non-res 2 144 2030 1.0 0.0 -es 09_hydro_pump 2 144 2030 0.0 0.0 -es 01_solar 2 145 2030 1.0 0.0 -es 02_wind_on 2 145 2030 1.0 0.0 -es 03_wind_off 2 145 2030 1.0 0.0 -es 04_res 2 145 2030 1.0 0.0 -es 05_nuclear 2 145 2030 1.0 0.0 -es 06_coal 2 145 2030 1.0 0.0 -es 07_gas 2 145 2030 1.0 0.0 -es 08_non-res 2 145 2030 1.0 0.0 -es 09_hydro_pump 2 145 2030 0.0 0.0 -es 01_solar 2 146 2030 1.0 0.0 -es 02_wind_on 2 146 2030 1.0 0.0 -es 03_wind_off 2 146 2030 1.0 0.0 -es 04_res 2 146 2030 1.0 0.0 -es 05_nuclear 2 146 2030 1.0 0.0 -es 06_coal 2 146 2030 1.0 0.0 -es 07_gas 2 146 2030 1.0 0.0 -es 08_non-res 2 146 2030 1.0 0.0 -es 09_hydro_pump 2 146 2030 0.0 0.0 -es 01_solar 2 147 2030 1.0 0.0 -es 02_wind_on 2 147 2030 1.0 0.0 -es 03_wind_off 2 147 2030 1.0 0.0 -es 04_res 2 147 2030 1.0 0.0 -es 05_nuclear 2 147 2030 1.0 0.0 -es 06_coal 2 147 2030 1.0 0.0 -es 07_gas 2 147 2030 1.0 0.0 -es 08_non-res 2 147 2030 1.0 0.0 -es 09_hydro_pump 2 147 2030 0.0 0.0 -es 01_solar 2 148 2030 1.0 0.0 -es 02_wind_on 2 148 2030 1.0 0.0 -es 03_wind_off 2 148 2030 1.0 0.0 -es 04_res 2 148 2030 1.0 0.0 -es 05_nuclear 2 148 2030 1.0 0.0 -es 06_coal 2 148 2030 1.0 0.0 -es 07_gas 2 148 2030 1.0 0.0 -es 08_non-res 2 148 2030 1.0 0.0 -es 09_hydro_pump 2 148 2030 0.0 0.0 -es 01_solar 2 149 2030 1.0 0.0 -es 02_wind_on 2 149 2030 1.0 0.0 -es 03_wind_off 2 149 2030 1.0 0.0 -es 04_res 2 149 2030 1.0 0.0 -es 05_nuclear 2 149 2030 1.0 0.0 -es 06_coal 2 149 2030 1.0 0.0 -es 07_gas 2 149 2030 1.0 0.0 -es 08_non-res 2 149 2030 1.0 0.0 -es 09_hydro_pump 2 149 2030 0.0 0.0 -es 01_solar 2 150 2030 1.0 0.0 -es 02_wind_on 2 150 2030 1.0 0.0 -es 03_wind_off 2 150 2030 1.0 0.0 -es 04_res 2 150 2030 1.0 0.0 -es 05_nuclear 2 150 2030 1.0 0.0 -es 06_coal 2 150 2030 1.0 0.0 -es 07_gas 2 150 2030 1.0 0.0 -es 08_non-res 2 150 2030 1.0 0.0 -es 09_hydro_pump 2 150 2030 0.0 0.0 -es 01_solar 2 151 2030 1.0 0.0 -es 02_wind_on 2 151 2030 1.0 0.0 -es 03_wind_off 2 151 2030 1.0 0.0 -es 04_res 2 151 2030 1.0 0.0 -es 05_nuclear 2 151 2030 1.0 0.0 -es 06_coal 2 151 2030 1.0 0.0 -es 07_gas 2 151 2030 1.0 0.0 -es 08_non-res 2 151 2030 1.0 0.0 -es 09_hydro_pump 2 151 2030 0.0 0.0 -es 01_solar 2 152 2030 1.0 0.0 -es 02_wind_on 2 152 2030 1.0 0.0 -es 03_wind_off 2 152 2030 1.0 0.0 -es 04_res 2 152 2030 1.0 0.0 -es 05_nuclear 2 152 2030 1.0 0.0 -es 06_coal 2 152 2030 1.0 0.0 -es 07_gas 2 152 2030 1.0 0.0 -es 08_non-res 2 152 2030 1.0 0.0 -es 09_hydro_pump 2 152 2030 0.0 0.0 -es 01_solar 2 153 2030 1.0 0.0 -es 02_wind_on 2 153 2030 1.0 0.0 -es 03_wind_off 2 153 2030 1.0 0.0 -es 04_res 2 153 2030 1.0 0.0 -es 05_nuclear 2 153 2030 1.0 0.0 -es 06_coal 2 153 2030 1.0 0.0 -es 07_gas 2 153 2030 1.0 0.0 -es 08_non-res 2 153 2030 1.0 0.0 -es 09_hydro_pump 2 153 2030 0.0 0.0 -es 01_solar 2 154 2030 1.0 0.0 -es 02_wind_on 2 154 2030 1.0 0.0 -es 03_wind_off 2 154 2030 1.0 0.0 -es 04_res 2 154 2030 1.0 0.0 -es 05_nuclear 2 154 2030 1.0 0.0 -es 06_coal 2 154 2030 1.0 0.0 -es 07_gas 2 154 2030 1.0 0.0 -es 08_non-res 2 154 2030 1.0 0.0 -es 09_hydro_pump 2 154 2030 0.0 0.0 -es 01_solar 2 155 2030 1.0 0.0 -es 02_wind_on 2 155 2030 1.0 0.0 -es 03_wind_off 2 155 2030 1.0 0.0 -es 04_res 2 155 2030 1.0 0.0 -es 05_nuclear 2 155 2030 1.0 0.0 -es 06_coal 2 155 2030 1.0 0.0 -es 07_gas 2 155 2030 1.0 0.0 -es 08_non-res 2 155 2030 1.0 0.0 -es 09_hydro_pump 2 155 2030 0.0 0.0 -es 01_solar 2 156 2030 1.0 0.0 -es 02_wind_on 2 156 2030 1.0 0.0 -es 03_wind_off 2 156 2030 1.0 0.0 -es 04_res 2 156 2030 1.0 0.0 -es 05_nuclear 2 156 2030 1.0 0.0 -es 06_coal 2 156 2030 1.0 0.0 -es 07_gas 2 156 2030 1.0 0.0 -es 08_non-res 2 156 2030 1.0 0.0 -es 09_hydro_pump 2 156 2030 0.0 0.0 -es 01_solar 2 157 2030 1.0 0.0 -es 02_wind_on 2 157 2030 1.0 0.0 -es 03_wind_off 2 157 2030 1.0 0.0 -es 04_res 2 157 2030 1.0 0.0 -es 05_nuclear 2 157 2030 1.0 0.0 -es 06_coal 2 157 2030 1.0 0.0 -es 07_gas 2 157 2030 1.0 0.0 -es 08_non-res 2 157 2030 1.0 0.0 -es 09_hydro_pump 2 157 2030 0.0 0.0 -es 01_solar 2 158 2030 1.0 0.0 -es 02_wind_on 2 158 2030 1.0 0.0 -es 03_wind_off 2 158 2030 1.0 0.0 -es 04_res 2 158 2030 1.0 0.0 -es 05_nuclear 2 158 2030 1.0 0.0 -es 06_coal 2 158 2030 1.0 0.0 -es 07_gas 2 158 2030 1.0 0.0 -es 08_non-res 2 158 2030 1.0 0.0 -es 09_hydro_pump 2 158 2030 0.0 0.0 -es 01_solar 2 159 2030 1.0 0.0 -es 02_wind_on 2 159 2030 1.0 0.0 -es 03_wind_off 2 159 2030 1.0 0.0 -es 04_res 2 159 2030 1.0 0.0 -es 05_nuclear 2 159 2030 1.0 0.0 -es 06_coal 2 159 2030 1.0 0.0 -es 07_gas 2 159 2030 1.0 0.0 -es 08_non-res 2 159 2030 1.0 0.0 -es 09_hydro_pump 2 159 2030 0.0 0.0 -es 01_solar 2 160 2030 1.0 0.0 -es 02_wind_on 2 160 2030 1.0 0.0 -es 03_wind_off 2 160 2030 1.0 0.0 -es 04_res 2 160 2030 1.0 0.0 -es 05_nuclear 2 160 2030 1.0 0.0 -es 06_coal 2 160 2030 1.0 0.0 -es 07_gas 2 160 2030 1.0 0.0 -es 08_non-res 2 160 2030 1.0 0.0 -es 09_hydro_pump 2 160 2030 0.0 0.0 -es 01_solar 2 161 2030 1.0 0.0 -es 02_wind_on 2 161 2030 1.0 0.0 -es 03_wind_off 2 161 2030 1.0 0.0 -es 04_res 2 161 2030 1.0 0.0 -es 05_nuclear 2 161 2030 1.0 0.0 -es 06_coal 2 161 2030 1.0 0.0 -es 07_gas 2 161 2030 1.0 0.0 -es 08_non-res 2 161 2030 1.0 0.0 -es 09_hydro_pump 2 161 2030 0.0 0.0 -es 01_solar 2 162 2030 1.0 0.0 -es 02_wind_on 2 162 2030 1.0 0.0 -es 03_wind_off 2 162 2030 1.0 0.0 -es 04_res 2 162 2030 1.0 0.0 -es 05_nuclear 2 162 2030 1.0 0.0 -es 06_coal 2 162 2030 1.0 0.0 -es 07_gas 2 162 2030 1.0 0.0 -es 08_non-res 2 162 2030 1.0 0.0 -es 09_hydro_pump 2 162 2030 1.0 0.0 -es 01_solar 2 163 2030 1.0 0.0 -es 02_wind_on 2 163 2030 1.0 0.0 -es 03_wind_off 2 163 2030 1.0 0.0 -es 04_res 2 163 2030 1.0 0.0 -es 05_nuclear 2 163 2030 1.0 0.0 -es 06_coal 2 163 2030 1.0 0.0 -es 07_gas 2 163 2030 1.0 0.0 -es 08_non-res 2 163 2030 1.0 0.0 -es 09_hydro_pump 2 163 2030 1.0 0.0 -es 01_solar 2 164 2030 1.0 0.0 -es 02_wind_on 2 164 2030 1.0 0.0 -es 03_wind_off 2 164 2030 1.0 0.0 -es 04_res 2 164 2030 1.0 0.0 -es 05_nuclear 2 164 2030 1.0 0.0 -es 06_coal 2 164 2030 1.0 0.0 -es 07_gas 2 164 2030 1.0 0.0 -es 08_non-res 2 164 2030 1.0 0.0 -es 09_hydro_pump 2 164 2030 1.0 0.0 -es 01_solar 2 165 2030 1.0 0.0 -es 02_wind_on 2 165 2030 1.0 0.0 -es 03_wind_off 2 165 2030 1.0 0.0 -es 04_res 2 165 2030 1.0 0.0 -es 05_nuclear 2 165 2030 1.0 0.0 -es 06_coal 2 165 2030 1.0 0.0 -es 07_gas 2 165 2030 1.0 0.0 -es 08_non-res 2 165 2030 1.0 0.0 -es 09_hydro_pump 2 165 2030 1.0 0.0 -es 01_solar 2 166 2030 1.0 0.0 -es 02_wind_on 2 166 2030 1.0 0.0 -es 03_wind_off 2 166 2030 1.0 0.0 -es 04_res 2 166 2030 1.0 0.0 -es 05_nuclear 2 166 2030 1.0 0.0 -es 06_coal 2 166 2030 1.0 0.0 -es 07_gas 2 166 2030 1.0 0.0 -es 08_non-res 2 166 2030 1.0 0.0 -es 09_hydro_pump 2 166 2030 1.0 0.0 -es 01_solar 2 167 2030 1.0 0.0 -es 02_wind_on 2 167 2030 1.0 0.0 -es 03_wind_off 2 167 2030 1.0 0.0 -es 04_res 2 167 2030 1.0 0.0 -es 05_nuclear 2 167 2030 1.0 0.0 -es 06_coal 2 167 2030 1.0 0.0 -es 07_gas 2 167 2030 1.0 0.0 -es 08_non-res 2 167 2030 1.0 0.0 -es 09_hydro_pump 2 167 2030 1.0 0.0 -es 01_solar 2 168 2030 1.0 0.0 -es 02_wind_on 2 168 2030 1.0 0.0 -es 03_wind_off 2 168 2030 1.0 0.0 -es 04_res 2 168 2030 1.0 0.0 -es 05_nuclear 2 168 2030 1.0 0.0 -es 06_coal 2 168 2030 1.0 0.0 -es 07_gas 2 168 2030 1.0 0.0 -es 08_non-res 2 168 2030 1.0 0.0 -es 09_hydro_pump 2 168 2030 1.0 0.0 -es 01_solar 2 169 2030 0.0 0.0 -es 02_wind_on 2 169 2030 0.0 0.0 -es 03_wind_off 2 169 2030 0.0 0.0 -es 04_res 2 169 2030 0.0 0.0 -es 05_nuclear 2 169 2030 0.0 0.0 -es 06_coal 2 169 2030 0.0 0.0 -es 07_gas 2 169 2030 0.0 0.0 -es 08_non-res 2 169 2030 0.0 0.0 -es 09_hydro_pump 2 169 2030 0.0 0.0 -es 01_solar 2 170 2030 1.0 0.0 -es 02_wind_on 2 170 2030 0.0 0.0 -es 03_wind_off 2 170 2030 0.0 0.0 -es 04_res 2 170 2030 0.0 0.0 -es 05_nuclear 2 170 2030 0.0 0.0 -es 06_coal 2 170 2030 0.0 0.0 -es 07_gas 2 170 2030 0.0 0.0 -es 08_non-res 2 170 2030 0.0 0.0 -es 09_hydro_pump 2 170 2030 0.0 0.0 -es 01_solar 2 171 2030 1.0 0.0 -es 02_wind_on 2 171 2030 0.0 0.0 -es 03_wind_off 2 171 2030 0.0 0.0 -es 04_res 2 171 2030 0.0 0.0 -es 05_nuclear 2 171 2030 0.0 0.0 -es 06_coal 2 171 2030 0.0 0.0 -es 07_gas 2 171 2030 0.0 0.0 -es 08_non-res 2 171 2030 0.0 0.0 -es 09_hydro_pump 2 171 2030 0.0 0.0 -es 01_solar 2 172 2030 1.0 0.0 -es 02_wind_on 2 172 2030 0.0 0.0 -es 03_wind_off 2 172 2030 0.0 0.0 -es 04_res 2 172 2030 0.0 0.0 -es 05_nuclear 2 172 2030 0.0 0.0 -es 06_coal 2 172 2030 0.0 0.0 -es 07_gas 2 172 2030 0.0 0.0 -es 08_non-res 2 172 2030 0.0 0.0 -es 09_hydro_pump 2 172 2030 0.0 0.0 -es 01_solar 2 173 2030 1.0 0.0 -es 02_wind_on 2 173 2030 0.0 0.0 -es 03_wind_off 2 173 2030 0.0 0.0 -es 04_res 2 173 2030 0.0 0.0 -es 05_nuclear 2 173 2030 0.0 0.0 -es 06_coal 2 173 2030 0.0 0.0 -es 07_gas 2 173 2030 0.0 0.0 -es 08_non-res 2 173 2030 0.0 0.0 -es 09_hydro_pump 2 173 2030 0.0 0.0 -es 01_solar 2 174 2030 1.0 0.0 -es 02_wind_on 2 174 2030 0.0 0.0 -es 03_wind_off 2 174 2030 0.0 0.0 -es 04_res 2 174 2030 0.0 0.0 -es 05_nuclear 2 174 2030 0.0 0.0 -es 06_coal 2 174 2030 0.0 0.0 -es 07_gas 2 174 2030 0.0 0.0 -es 08_non-res 2 174 2030 0.0 0.0 -es 09_hydro_pump 2 174 2030 0.0 0.0 -es 01_solar 2 175 2030 1.0 0.0 -es 02_wind_on 2 175 2030 0.0 0.0 -es 03_wind_off 2 175 2030 0.0 0.0 -es 04_res 2 175 2030 0.0 0.0 -es 05_nuclear 2 175 2030 0.0 0.0 -es 06_coal 2 175 2030 0.0 0.0 -es 07_gas 2 175 2030 0.0 0.0 -es 08_non-res 2 175 2030 0.0 0.0 -es 09_hydro_pump 2 175 2030 0.0 0.0 -es 01_solar 2 176 2030 1.0 0.0 -es 02_wind_on 2 176 2030 0.0 0.0 -es 03_wind_off 2 176 2030 0.0 0.0 -es 04_res 2 176 2030 0.0 0.0 -es 05_nuclear 2 176 2030 0.0 0.0 -es 06_coal 2 176 2030 0.0 0.0 -es 07_gas 2 176 2030 0.0 0.0 -es 08_non-res 2 176 2030 0.0 0.0 -es 09_hydro_pump 2 176 2030 0.0 0.0 -es 01_solar 2 177 2030 1.0 0.0 -es 02_wind_on 2 177 2030 0.0 0.0 -es 03_wind_off 2 177 2030 0.0 0.0 -es 04_res 2 177 2030 0.0 0.0 -es 05_nuclear 2 177 2030 0.0 0.0 -es 06_coal 2 177 2030 0.0 0.0 -es 07_gas 2 177 2030 0.0 0.0 -es 08_non-res 2 177 2030 0.0 0.0 -es 09_hydro_pump 2 177 2030 0.0 0.0 -es 01_solar 2 178 2030 1.0 0.0 -es 02_wind_on 2 178 2030 0.0 0.0 -es 03_wind_off 2 178 2030 0.0 0.0 -es 04_res 2 178 2030 0.0 0.0 -es 05_nuclear 2 178 2030 0.0 0.0 -es 06_coal 2 178 2030 0.0 0.0 -es 07_gas 2 178 2030 0.0 0.0 -es 08_non-res 2 178 2030 0.0 0.0 -es 09_hydro_pump 2 178 2030 0.0 0.0 -es 01_solar 2 179 2030 1.0 0.0 -es 02_wind_on 2 179 2030 0.0 0.0 -es 03_wind_off 2 179 2030 0.0 0.0 -es 04_res 2 179 2030 0.0 0.0 -es 05_nuclear 2 179 2030 0.0 0.0 -es 06_coal 2 179 2030 0.0 0.0 -es 07_gas 2 179 2030 0.0 0.0 -es 08_non-res 2 179 2030 0.0 0.0 -es 09_hydro_pump 2 179 2030 0.0 0.0 -es 01_solar 2 180 2030 1.0 0.0 -es 02_wind_on 2 180 2030 0.0 0.0 -es 03_wind_off 2 180 2030 0.0 0.0 -es 04_res 2 180 2030 0.0 0.0 -es 05_nuclear 2 180 2030 0.0 0.0 -es 06_coal 2 180 2030 0.0 0.0 -es 07_gas 2 180 2030 0.0 0.0 -es 08_non-res 2 180 2030 0.0 0.0 -es 09_hydro_pump 2 180 2030 0.0 0.0 -es 01_solar 2 181 2030 1.0 0.0 -es 02_wind_on 2 181 2030 0.0 0.0 -es 03_wind_off 2 181 2030 0.0 0.0 -es 04_res 2 181 2030 0.0 0.0 -es 05_nuclear 2 181 2030 0.0 0.0 -es 06_coal 2 181 2030 0.0 0.0 -es 07_gas 2 181 2030 0.0 0.0 -es 08_non-res 2 181 2030 0.0 0.0 -es 09_hydro_pump 2 181 2030 0.0 0.0 -es 01_solar 2 182 2030 1.0 0.0 -es 02_wind_on 2 182 2030 0.0 0.0 -es 03_wind_off 2 182 2030 0.0 0.0 -es 04_res 2 182 2030 0.0 0.0 -es 05_nuclear 2 182 2030 0.0 0.0 -es 06_coal 2 182 2030 0.0 0.0 -es 07_gas 2 182 2030 0.0 0.0 -es 08_non-res 2 182 2030 0.0 0.0 -es 09_hydro_pump 2 182 2030 0.0 0.0 -es 01_solar 2 183 2030 1.0 0.0 -es 02_wind_on 2 183 2030 0.0 0.0 -es 03_wind_off 2 183 2030 0.0 0.0 -es 04_res 2 183 2030 0.0 0.0 -es 05_nuclear 2 183 2030 0.0 0.0 -es 06_coal 2 183 2030 0.0 0.0 -es 07_gas 2 183 2030 0.0 0.0 -es 08_non-res 2 183 2030 0.0 0.0 -es 09_hydro_pump 2 183 2030 0.0 0.0 -es 01_solar 2 184 2030 1.0 0.0 -es 02_wind_on 2 184 2030 0.0 0.0 -es 03_wind_off 2 184 2030 0.0 0.0 -es 04_res 2 184 2030 0.0 0.0 -es 05_nuclear 2 184 2030 0.0 0.0 -es 06_coal 2 184 2030 0.0 0.0 -es 07_gas 2 184 2030 0.0 0.0 -es 08_non-res 2 184 2030 0.0 0.0 -es 09_hydro_pump 2 184 2030 0.0 0.0 -es 01_solar 2 185 2030 1.0 0.0 -es 02_wind_on 2 185 2030 0.0 0.0 -es 03_wind_off 2 185 2030 0.0 0.0 -es 04_res 2 185 2030 0.0 0.0 -es 05_nuclear 2 185 2030 0.0 0.0 -es 06_coal 2 185 2030 0.0 0.0 -es 07_gas 2 185 2030 0.0 0.0 -es 08_non-res 2 185 2030 0.0 0.0 -es 09_hydro_pump 2 185 2030 0.0 0.0 -es 01_solar 2 186 2030 1.0 0.0 -es 02_wind_on 2 186 2030 0.0 0.0 -es 03_wind_off 2 186 2030 0.0 0.0 -es 04_res 2 186 2030 0.0 0.0 -es 05_nuclear 2 186 2030 0.0 0.0 -es 06_coal 2 186 2030 0.0 0.0 -es 07_gas 2 186 2030 0.0 0.0 -es 08_non-res 2 186 2030 0.0 0.0 -es 09_hydro_pump 2 186 2030 0.0 0.0 -es 01_solar 2 187 2030 1.0 0.0 -es 02_wind_on 2 187 2030 0.0 0.0 -es 03_wind_off 2 187 2030 0.0 0.0 -es 04_res 2 187 2030 0.0 0.0 -es 05_nuclear 2 187 2030 0.0 0.0 -es 06_coal 2 187 2030 0.0 0.0 -es 07_gas 2 187 2030 0.0 0.0 -es 08_non-res 2 187 2030 0.0 0.0 -es 09_hydro_pump 2 187 2030 0.0 0.0 -es 01_solar 2 188 2030 1.0 0.0 -es 02_wind_on 2 188 2030 0.0 0.0 -es 03_wind_off 2 188 2030 0.0 0.0 -es 04_res 2 188 2030 0.0 0.0 -es 05_nuclear 2 188 2030 0.0 0.0 -es 06_coal 2 188 2030 0.0 0.0 -es 07_gas 2 188 2030 0.0 0.0 -es 08_non-res 2 188 2030 0.0 0.0 -es 09_hydro_pump 2 188 2030 0.0 0.0 -es 01_solar 2 189 2030 1.0 0.0 -es 02_wind_on 2 189 2030 0.0 0.0 -es 03_wind_off 2 189 2030 0.0 0.0 -es 04_res 2 189 2030 0.0 0.0 -es 05_nuclear 2 189 2030 0.0 0.0 -es 06_coal 2 189 2030 0.0 0.0 -es 07_gas 2 189 2030 0.0 0.0 -es 08_non-res 2 189 2030 0.0 0.0 -es 09_hydro_pump 2 189 2030 0.0 0.0 -es 01_solar 2 190 2030 1.0 0.0 -es 02_wind_on 2 190 2030 1.0 0.0 -es 03_wind_off 2 190 2030 0.0 0.0 -es 04_res 2 190 2030 0.0 0.0 -es 05_nuclear 2 190 2030 0.0 0.0 -es 06_coal 2 190 2030 0.0 0.0 -es 07_gas 2 190 2030 0.0 0.0 -es 08_non-res 2 190 2030 0.0 0.0 -es 09_hydro_pump 2 190 2030 0.0 0.0 -es 01_solar 2 191 2030 1.0 0.0 -es 02_wind_on 2 191 2030 1.0 0.0 -es 03_wind_off 2 191 2030 0.0 0.0 -es 04_res 2 191 2030 0.0 0.0 -es 05_nuclear 2 191 2030 0.0 0.0 -es 06_coal 2 191 2030 0.0 0.0 -es 07_gas 2 191 2030 0.0 0.0 -es 08_non-res 2 191 2030 0.0 0.0 -es 09_hydro_pump 2 191 2030 0.0 0.0 -es 01_solar 2 192 2030 1.0 0.0 -es 02_wind_on 2 192 2030 1.0 0.0 -es 03_wind_off 2 192 2030 0.0 0.0 -es 04_res 2 192 2030 0.0 0.0 -es 05_nuclear 2 192 2030 0.0 0.0 -es 06_coal 2 192 2030 0.0 0.0 -es 07_gas 2 192 2030 0.0 0.0 -es 08_non-res 2 192 2030 0.0 0.0 -es 09_hydro_pump 2 192 2030 0.0 0.0 -es 01_solar 2 193 2030 1.0 0.0 -es 02_wind_on 2 193 2030 1.0 0.0 -es 03_wind_off 2 193 2030 0.0 0.0 -es 04_res 2 193 2030 0.0 0.0 -es 05_nuclear 2 193 2030 0.0 0.0 -es 06_coal 2 193 2030 0.0 0.0 -es 07_gas 2 193 2030 0.0 0.0 -es 08_non-res 2 193 2030 0.0 0.0 -es 09_hydro_pump 2 193 2030 0.0 0.0 -es 01_solar 2 194 2030 1.0 0.0 -es 02_wind_on 2 194 2030 1.0 0.0 -es 03_wind_off 2 194 2030 0.0 0.0 -es 04_res 2 194 2030 0.0 0.0 -es 05_nuclear 2 194 2030 0.0 0.0 -es 06_coal 2 194 2030 0.0 0.0 -es 07_gas 2 194 2030 0.0 0.0 -es 08_non-res 2 194 2030 0.0 0.0 -es 09_hydro_pump 2 194 2030 0.0 0.0 -es 01_solar 2 195 2030 1.0 0.0 -es 02_wind_on 2 195 2030 1.0 0.0 -es 03_wind_off 2 195 2030 0.0 0.0 -es 04_res 2 195 2030 0.0 0.0 -es 05_nuclear 2 195 2030 0.0 0.0 -es 06_coal 2 195 2030 0.0 0.0 -es 07_gas 2 195 2030 0.0 0.0 -es 08_non-res 2 195 2030 0.0 0.0 -es 09_hydro_pump 2 195 2030 0.0 0.0 -es 01_solar 2 196 2030 1.0 0.0 -es 02_wind_on 2 196 2030 1.0 0.0 -es 03_wind_off 2 196 2030 0.0 0.0 -es 04_res 2 196 2030 0.0 0.0 -es 05_nuclear 2 196 2030 0.0 0.0 -es 06_coal 2 196 2030 0.0 0.0 -es 07_gas 2 196 2030 0.0 0.0 -es 08_non-res 2 196 2030 0.0 0.0 -es 09_hydro_pump 2 196 2030 0.0 0.0 -es 01_solar 2 197 2030 1.0 0.0 -es 02_wind_on 2 197 2030 1.0 0.0 -es 03_wind_off 2 197 2030 0.0 0.0 -es 04_res 2 197 2030 0.0 0.0 -es 05_nuclear 2 197 2030 0.0 0.0 -es 06_coal 2 197 2030 0.0 0.0 -es 07_gas 2 197 2030 0.0 0.0 -es 08_non-res 2 197 2030 0.0 0.0 -es 09_hydro_pump 2 197 2030 0.0 0.0 -es 01_solar 2 198 2030 1.0 0.0 -es 02_wind_on 2 198 2030 1.0 0.0 -es 03_wind_off 2 198 2030 0.0 0.0 -es 04_res 2 198 2030 0.0 0.0 -es 05_nuclear 2 198 2030 0.0 0.0 -es 06_coal 2 198 2030 0.0 0.0 -es 07_gas 2 198 2030 0.0 0.0 -es 08_non-res 2 198 2030 0.0 0.0 -es 09_hydro_pump 2 198 2030 0.0 0.0 -es 01_solar 2 199 2030 1.0 0.0 -es 02_wind_on 2 199 2030 1.0 0.0 -es 03_wind_off 2 199 2030 0.0 0.0 -es 04_res 2 199 2030 0.0 0.0 -es 05_nuclear 2 199 2030 0.0 0.0 -es 06_coal 2 199 2030 0.0 0.0 -es 07_gas 2 199 2030 0.0 0.0 -es 08_non-res 2 199 2030 0.0 0.0 -es 09_hydro_pump 2 199 2030 0.0 0.0 -es 01_solar 2 200 2030 1.0 0.0 -es 02_wind_on 2 200 2030 1.0 0.0 -es 03_wind_off 2 200 2030 0.0 0.0 -es 04_res 2 200 2030 0.0 0.0 -es 05_nuclear 2 200 2030 0.0 0.0 -es 06_coal 2 200 2030 0.0 0.0 -es 07_gas 2 200 2030 0.0 0.0 -es 08_non-res 2 200 2030 0.0 0.0 -es 09_hydro_pump 2 200 2030 0.0 0.0 -es 01_solar 2 201 2030 1.0 0.0 -es 02_wind_on 2 201 2030 1.0 0.0 -es 03_wind_off 2 201 2030 0.0 0.0 -es 04_res 2 201 2030 0.0 0.0 -es 05_nuclear 2 201 2030 0.0 0.0 -es 06_coal 2 201 2030 0.0 0.0 -es 07_gas 2 201 2030 0.0 0.0 -es 08_non-res 2 201 2030 0.0 0.0 -es 09_hydro_pump 2 201 2030 0.0 0.0 -es 01_solar 2 202 2030 1.0 0.0 -es 02_wind_on 2 202 2030 1.0 0.0 -es 03_wind_off 2 202 2030 0.0 0.0 -es 04_res 2 202 2030 0.0 0.0 -es 05_nuclear 2 202 2030 0.0 0.0 -es 06_coal 2 202 2030 0.0 0.0 -es 07_gas 2 202 2030 0.0 0.0 -es 08_non-res 2 202 2030 0.0 0.0 -es 09_hydro_pump 2 202 2030 0.0 0.0 -es 01_solar 2 203 2030 1.0 0.0 -es 02_wind_on 2 203 2030 1.0 0.0 -es 03_wind_off 2 203 2030 0.0 0.0 -es 04_res 2 203 2030 0.0 0.0 -es 05_nuclear 2 203 2030 0.0 0.0 -es 06_coal 2 203 2030 0.0 0.0 -es 07_gas 2 203 2030 0.0 0.0 -es 08_non-res 2 203 2030 0.0 0.0 -es 09_hydro_pump 2 203 2030 0.0 0.0 -es 01_solar 2 204 2030 1.0 0.0 -es 02_wind_on 2 204 2030 1.0 0.0 -es 03_wind_off 2 204 2030 0.0 0.0 -es 04_res 2 204 2030 0.0 0.0 -es 05_nuclear 2 204 2030 0.0 0.0 -es 06_coal 2 204 2030 0.0 0.0 -es 07_gas 2 204 2030 0.0 0.0 -es 08_non-res 2 204 2030 0.0 0.0 -es 09_hydro_pump 2 204 2030 0.0 0.0 -es 01_solar 2 205 2030 1.0 0.0 -es 02_wind_on 2 205 2030 1.0 0.0 -es 03_wind_off 2 205 2030 0.0 0.0 -es 04_res 2 205 2030 0.0 0.0 -es 05_nuclear 2 205 2030 0.0 0.0 -es 06_coal 2 205 2030 0.0 0.0 -es 07_gas 2 205 2030 0.0 0.0 -es 08_non-res 2 205 2030 0.0 0.0 -es 09_hydro_pump 2 205 2030 0.0 0.0 -es 01_solar 2 206 2030 1.0 0.0 -es 02_wind_on 2 206 2030 1.0 0.0 -es 03_wind_off 2 206 2030 0.0 0.0 -es 04_res 2 206 2030 0.0 0.0 -es 05_nuclear 2 206 2030 0.0 0.0 -es 06_coal 2 206 2030 0.0 0.0 -es 07_gas 2 206 2030 0.0 0.0 -es 08_non-res 2 206 2030 0.0 0.0 -es 09_hydro_pump 2 206 2030 0.0 0.0 -es 01_solar 2 207 2030 1.0 0.0 -es 02_wind_on 2 207 2030 1.0 0.0 -es 03_wind_off 2 207 2030 0.0 0.0 -es 04_res 2 207 2030 0.0 0.0 -es 05_nuclear 2 207 2030 0.0 0.0 -es 06_coal 2 207 2030 0.0 0.0 -es 07_gas 2 207 2030 0.0 0.0 -es 08_non-res 2 207 2030 0.0 0.0 -es 09_hydro_pump 2 207 2030 0.0 0.0 -es 01_solar 2 208 2030 1.0 0.0 -es 02_wind_on 2 208 2030 1.0 0.0 -es 03_wind_off 2 208 2030 0.0 0.0 -es 04_res 2 208 2030 0.0 0.0 -es 05_nuclear 2 208 2030 0.0 0.0 -es 06_coal 2 208 2030 0.0 0.0 -es 07_gas 2 208 2030 0.0 0.0 -es 08_non-res 2 208 2030 0.0 0.0 -es 09_hydro_pump 2 208 2030 0.0 0.0 -es 01_solar 2 209 2030 1.0 0.0 -es 02_wind_on 2 209 2030 1.0 0.0 -es 03_wind_off 2 209 2030 0.0 0.0 -es 04_res 2 209 2030 0.0 0.0 -es 05_nuclear 2 209 2030 0.0 0.0 -es 06_coal 2 209 2030 0.0 0.0 -es 07_gas 2 209 2030 0.0 0.0 -es 08_non-res 2 209 2030 0.0 0.0 -es 09_hydro_pump 2 209 2030 0.0 0.0 -es 01_solar 2 210 2030 1.0 0.0 -es 02_wind_on 2 210 2030 1.0 0.0 -es 03_wind_off 2 210 2030 1.0 0.0 -es 04_res 2 210 2030 0.0 0.0 -es 05_nuclear 2 210 2030 0.0 0.0 -es 06_coal 2 210 2030 0.0 0.0 -es 07_gas 2 210 2030 0.0 0.0 -es 08_non-res 2 210 2030 0.0 0.0 -es 09_hydro_pump 2 210 2030 0.0 0.0 -es 01_solar 2 211 2030 1.0 0.0 -es 02_wind_on 2 211 2030 1.0 0.0 -es 03_wind_off 2 211 2030 1.0 0.0 -es 04_res 2 211 2030 0.0 0.0 -es 05_nuclear 2 211 2030 0.0 0.0 -es 06_coal 2 211 2030 0.0 0.0 -es 07_gas 2 211 2030 0.0 0.0 -es 08_non-res 2 211 2030 0.0 0.0 -es 09_hydro_pump 2 211 2030 0.0 0.0 -es 01_solar 2 212 2030 1.0 0.0 -es 02_wind_on 2 212 2030 1.0 0.0 -es 03_wind_off 2 212 2030 1.0 0.0 -es 04_res 2 212 2030 0.0 0.0 -es 05_nuclear 2 212 2030 0.0 0.0 -es 06_coal 2 212 2030 0.0 0.0 -es 07_gas 2 212 2030 0.0 0.0 -es 08_non-res 2 212 2030 0.0 0.0 -es 09_hydro_pump 2 212 2030 0.0 0.0 -es 01_solar 2 213 2030 1.0 0.0 -es 02_wind_on 2 213 2030 1.0 0.0 -es 03_wind_off 2 213 2030 1.0 0.0 -es 04_res 2 213 2030 0.0 0.0 -es 05_nuclear 2 213 2030 0.0 0.0 -es 06_coal 2 213 2030 0.0 0.0 -es 07_gas 2 213 2030 0.0 0.0 -es 08_non-res 2 213 2030 0.0 0.0 -es 09_hydro_pump 2 213 2030 0.0 0.0 -es 01_solar 2 214 2030 1.0 0.0 -es 02_wind_on 2 214 2030 1.0 0.0 -es 03_wind_off 2 214 2030 1.0 0.0 -es 04_res 2 214 2030 0.0 0.0 -es 05_nuclear 2 214 2030 0.0 0.0 -es 06_coal 2 214 2030 0.0 0.0 -es 07_gas 2 214 2030 0.0 0.0 -es 08_non-res 2 214 2030 0.0 0.0 -es 09_hydro_pump 2 214 2030 0.0 0.0 -es 01_solar 2 215 2030 1.0 0.0 -es 02_wind_on 2 215 2030 1.0 0.0 -es 03_wind_off 2 215 2030 1.0 0.0 -es 04_res 2 215 2030 0.0 0.0 -es 05_nuclear 2 215 2030 0.0 0.0 -es 06_coal 2 215 2030 0.0 0.0 -es 07_gas 2 215 2030 0.0 0.0 -es 08_non-res 2 215 2030 0.0 0.0 -es 09_hydro_pump 2 215 2030 0.0 0.0 -es 01_solar 2 216 2030 1.0 0.0 -es 02_wind_on 2 216 2030 1.0 0.0 -es 03_wind_off 2 216 2030 1.0 0.0 -es 04_res 2 216 2030 0.0 0.0 -es 05_nuclear 2 216 2030 0.0 0.0 -es 06_coal 2 216 2030 0.0 0.0 -es 07_gas 2 216 2030 0.0 0.0 -es 08_non-res 2 216 2030 0.0 0.0 -es 09_hydro_pump 2 216 2030 0.0 0.0 -es 01_solar 2 217 2030 1.0 0.0 -es 02_wind_on 2 217 2030 1.0 0.0 -es 03_wind_off 2 217 2030 1.0 0.0 -es 04_res 2 217 2030 0.0 0.0 -es 05_nuclear 2 217 2030 0.0 0.0 -es 06_coal 2 217 2030 0.0 0.0 -es 07_gas 2 217 2030 0.0 0.0 -es 08_non-res 2 217 2030 0.0 0.0 -es 09_hydro_pump 2 217 2030 0.0 0.0 -es 01_solar 2 218 2030 1.0 0.0 -es 02_wind_on 2 218 2030 1.0 0.0 -es 03_wind_off 2 218 2030 1.0 0.0 -es 04_res 2 218 2030 0.0 0.0 -es 05_nuclear 2 218 2030 0.0 0.0 -es 06_coal 2 218 2030 0.0 0.0 -es 07_gas 2 218 2030 0.0 0.0 -es 08_non-res 2 218 2030 0.0 0.0 -es 09_hydro_pump 2 218 2030 0.0 0.0 -es 01_solar 2 219 2030 1.0 0.0 -es 02_wind_on 2 219 2030 1.0 0.0 -es 03_wind_off 2 219 2030 1.0 0.0 -es 04_res 2 219 2030 0.0 0.0 -es 05_nuclear 2 219 2030 0.0 0.0 -es 06_coal 2 219 2030 0.0 0.0 -es 07_gas 2 219 2030 0.0 0.0 -es 08_non-res 2 219 2030 0.0 0.0 -es 09_hydro_pump 2 219 2030 0.0 0.0 -es 01_solar 2 220 2030 1.0 0.0 -es 02_wind_on 2 220 2030 1.0 0.0 -es 03_wind_off 2 220 2030 1.0 0.0 -es 04_res 2 220 2030 0.0 0.0 -es 05_nuclear 2 220 2030 0.0 0.0 -es 06_coal 2 220 2030 0.0 0.0 -es 07_gas 2 220 2030 0.0 0.0 -es 08_non-res 2 220 2030 0.0 0.0 -es 09_hydro_pump 2 220 2030 0.0 0.0 -es 01_solar 2 221 2030 1.0 0.0 -es 02_wind_on 2 221 2030 1.0 0.0 -es 03_wind_off 2 221 2030 1.0 0.0 -es 04_res 2 221 2030 0.0 0.0 -es 05_nuclear 2 221 2030 0.0 0.0 -es 06_coal 2 221 2030 0.0 0.0 -es 07_gas 2 221 2030 0.0 0.0 -es 08_non-res 2 221 2030 0.0 0.0 -es 09_hydro_pump 2 221 2030 0.0 0.0 -es 01_solar 2 222 2030 1.0 0.0 -es 02_wind_on 2 222 2030 1.0 0.0 -es 03_wind_off 2 222 2030 1.0 0.0 -es 04_res 2 222 2030 0.0 0.0 -es 05_nuclear 2 222 2030 0.0 0.0 -es 06_coal 2 222 2030 0.0 0.0 -es 07_gas 2 222 2030 0.0 0.0 -es 08_non-res 2 222 2030 0.0 0.0 -es 09_hydro_pump 2 222 2030 0.0 0.0 -es 01_solar 2 223 2030 1.0 0.0 -es 02_wind_on 2 223 2030 1.0 0.0 -es 03_wind_off 2 223 2030 1.0 0.0 -es 04_res 2 223 2030 0.0 0.0 -es 05_nuclear 2 223 2030 0.0 0.0 -es 06_coal 2 223 2030 0.0 0.0 -es 07_gas 2 223 2030 0.0 0.0 -es 08_non-res 2 223 2030 0.0 0.0 -es 09_hydro_pump 2 223 2030 0.0 0.0 -es 01_solar 2 224 2030 1.0 0.0 -es 02_wind_on 2 224 2030 1.0 0.0 -es 03_wind_off 2 224 2030 1.0 0.0 -es 04_res 2 224 2030 0.0 0.0 -es 05_nuclear 2 224 2030 0.0 0.0 -es 06_coal 2 224 2030 0.0 0.0 -es 07_gas 2 224 2030 0.0 0.0 -es 08_non-res 2 224 2030 0.0 0.0 -es 09_hydro_pump 2 224 2030 0.0 0.0 -es 01_solar 2 225 2030 1.0 0.0 -es 02_wind_on 2 225 2030 1.0 0.0 -es 03_wind_off 2 225 2030 1.0 0.0 -es 04_res 2 225 2030 0.0 0.0 -es 05_nuclear 2 225 2030 0.0 0.0 -es 06_coal 2 225 2030 0.0 0.0 -es 07_gas 2 225 2030 0.0 0.0 -es 08_non-res 2 225 2030 0.0 0.0 -es 09_hydro_pump 2 225 2030 0.0 0.0 -es 01_solar 2 226 2030 1.0 0.0 -es 02_wind_on 2 226 2030 1.0 0.0 -es 03_wind_off 2 226 2030 1.0 0.0 -es 04_res 2 226 2030 0.0 0.0 -es 05_nuclear 2 226 2030 0.0 0.0 -es 06_coal 2 226 2030 0.0 0.0 -es 07_gas 2 226 2030 0.0 0.0 -es 08_non-res 2 226 2030 0.0 0.0 -es 09_hydro_pump 2 226 2030 0.0 0.0 -es 01_solar 2 227 2030 1.0 0.0 -es 02_wind_on 2 227 2030 1.0 0.0 -es 03_wind_off 2 227 2030 1.0 0.0 -es 04_res 2 227 2030 0.0 0.0 -es 05_nuclear 2 227 2030 0.0 0.0 -es 06_coal 2 227 2030 0.0 0.0 -es 07_gas 2 227 2030 0.0 0.0 -es 08_non-res 2 227 2030 0.0 0.0 -es 09_hydro_pump 2 227 2030 0.0 0.0 -es 01_solar 2 228 2030 1.0 0.0 -es 02_wind_on 2 228 2030 1.0 0.0 -es 03_wind_off 2 228 2030 1.0 0.0 -es 04_res 2 228 2030 0.0 0.0 -es 05_nuclear 2 228 2030 0.0 0.0 -es 06_coal 2 228 2030 0.0 0.0 -es 07_gas 2 228 2030 0.0 0.0 -es 08_non-res 2 228 2030 0.0 0.0 -es 09_hydro_pump 2 228 2030 0.0 0.0 -es 01_solar 2 229 2030 1.0 0.0 -es 02_wind_on 2 229 2030 1.0 0.0 -es 03_wind_off 2 229 2030 1.0 0.0 -es 04_res 2 229 2030 0.0 0.0 -es 05_nuclear 2 229 2030 0.0 0.0 -es 06_coal 2 229 2030 0.0 0.0 -es 07_gas 2 229 2030 0.0 0.0 -es 08_non-res 2 229 2030 0.0 0.0 -es 09_hydro_pump 2 229 2030 0.0 0.0 -es 01_solar 2 230 2030 1.0 0.0 -es 02_wind_on 2 230 2030 1.0 0.0 -es 03_wind_off 2 230 2030 1.0 0.0 -es 04_res 2 230 2030 1.0 0.0 -es 05_nuclear 2 230 2030 0.0 0.0 -es 06_coal 2 230 2030 0.0 0.0 -es 07_gas 2 230 2030 0.0 0.0 -es 08_non-res 2 230 2030 0.0 0.0 -es 09_hydro_pump 2 230 2030 0.0 0.0 -es 01_solar 2 231 2030 1.0 0.0 -es 02_wind_on 2 231 2030 1.0 0.0 -es 03_wind_off 2 231 2030 1.0 0.0 -es 04_res 2 231 2030 1.0 0.0 -es 05_nuclear 2 231 2030 0.0 0.0 -es 06_coal 2 231 2030 0.0 0.0 -es 07_gas 2 231 2030 0.0 0.0 -es 08_non-res 2 231 2030 0.0 0.0 -es 09_hydro_pump 2 231 2030 0.0 0.0 -es 01_solar 2 232 2030 1.0 0.0 -es 02_wind_on 2 232 2030 1.0 0.0 -es 03_wind_off 2 232 2030 1.0 0.0 -es 04_res 2 232 2030 1.0 0.0 -es 05_nuclear 2 232 2030 0.0 0.0 -es 06_coal 2 232 2030 0.0 0.0 -es 07_gas 2 232 2030 0.0 0.0 -es 08_non-res 2 232 2030 0.0 0.0 -es 09_hydro_pump 2 232 2030 0.0 0.0 -es 01_solar 2 233 2030 1.0 0.0 -es 02_wind_on 2 233 2030 1.0 0.0 -es 03_wind_off 2 233 2030 1.0 0.0 -es 04_res 2 233 2030 1.0 0.0 -es 05_nuclear 2 233 2030 0.0 0.0 -es 06_coal 2 233 2030 0.0 0.0 -es 07_gas 2 233 2030 0.0 0.0 -es 08_non-res 2 233 2030 0.0 0.0 -es 09_hydro_pump 2 233 2030 0.0 0.0 -es 01_solar 2 234 2030 1.0 0.0 -es 02_wind_on 2 234 2030 1.0 0.0 -es 03_wind_off 2 234 2030 1.0 0.0 -es 04_res 2 234 2030 1.0 0.0 -es 05_nuclear 2 234 2030 0.0 0.0 -es 06_coal 2 234 2030 0.0 0.0 -es 07_gas 2 234 2030 0.0 0.0 -es 08_non-res 2 234 2030 0.0 0.0 -es 09_hydro_pump 2 234 2030 0.0 0.0 -es 01_solar 2 235 2030 1.0 0.0 -es 02_wind_on 2 235 2030 1.0 0.0 -es 03_wind_off 2 235 2030 1.0 0.0 -es 04_res 2 235 2030 1.0 0.0 -es 05_nuclear 2 235 2030 0.0 0.0 -es 06_coal 2 235 2030 0.0 0.0 -es 07_gas 2 235 2030 0.0 0.0 -es 08_non-res 2 235 2030 0.0 0.0 -es 09_hydro_pump 2 235 2030 0.0 0.0 -es 01_solar 2 236 2030 1.0 0.0 -es 02_wind_on 2 236 2030 1.0 0.0 -es 03_wind_off 2 236 2030 1.0 0.0 -es 04_res 2 236 2030 1.0 0.0 -es 05_nuclear 2 236 2030 0.0 0.0 -es 06_coal 2 236 2030 0.0 0.0 -es 07_gas 2 236 2030 0.0 0.0 -es 08_non-res 2 236 2030 0.0 0.0 -es 09_hydro_pump 2 236 2030 0.0 0.0 -es 01_solar 2 237 2030 1.0 0.0 -es 02_wind_on 2 237 2030 1.0 0.0 -es 03_wind_off 2 237 2030 1.0 0.0 -es 04_res 2 237 2030 1.0 0.0 -es 05_nuclear 2 237 2030 0.0 0.0 -es 06_coal 2 237 2030 0.0 0.0 -es 07_gas 2 237 2030 0.0 0.0 -es 08_non-res 2 237 2030 0.0 0.0 -es 09_hydro_pump 2 237 2030 0.0 0.0 -es 01_solar 2 238 2030 1.0 0.0 -es 02_wind_on 2 238 2030 1.0 0.0 -es 03_wind_off 2 238 2030 1.0 0.0 -es 04_res 2 238 2030 1.0 0.0 -es 05_nuclear 2 238 2030 0.0 0.0 -es 06_coal 2 238 2030 0.0 0.0 -es 07_gas 2 238 2030 0.0 0.0 -es 08_non-res 2 238 2030 0.0 0.0 -es 09_hydro_pump 2 238 2030 0.0 0.0 -es 01_solar 2 239 2030 1.0 0.0 -es 02_wind_on 2 239 2030 1.0 0.0 -es 03_wind_off 2 239 2030 1.0 0.0 -es 04_res 2 239 2030 1.0 0.0 -es 05_nuclear 2 239 2030 0.0 0.0 -es 06_coal 2 239 2030 0.0 0.0 -es 07_gas 2 239 2030 0.0 0.0 -es 08_non-res 2 239 2030 0.0 0.0 -es 09_hydro_pump 2 239 2030 0.0 0.0 -es 01_solar 2 240 2030 1.0 0.0 -es 02_wind_on 2 240 2030 1.0 0.0 -es 03_wind_off 2 240 2030 1.0 0.0 -es 04_res 2 240 2030 1.0 0.0 -es 05_nuclear 2 240 2030 0.0 0.0 -es 06_coal 2 240 2030 0.0 0.0 -es 07_gas 2 240 2030 0.0 0.0 -es 08_non-res 2 240 2030 0.0 0.0 -es 09_hydro_pump 2 240 2030 0.0 0.0 -es 01_solar 2 241 2030 1.0 0.0 -es 02_wind_on 2 241 2030 1.0 0.0 -es 03_wind_off 2 241 2030 1.0 0.0 -es 04_res 2 241 2030 1.0 0.0 -es 05_nuclear 2 241 2030 0.0 0.0 -es 06_coal 2 241 2030 0.0 0.0 -es 07_gas 2 241 2030 0.0 0.0 -es 08_non-res 2 241 2030 0.0 0.0 -es 09_hydro_pump 2 241 2030 0.0 0.0 -es 01_solar 2 242 2030 1.0 0.0 -es 02_wind_on 2 242 2030 1.0 0.0 -es 03_wind_off 2 242 2030 1.0 0.0 -es 04_res 2 242 2030 1.0 0.0 -es 05_nuclear 2 242 2030 0.0 0.0 -es 06_coal 2 242 2030 0.0 0.0 -es 07_gas 2 242 2030 0.0 0.0 -es 08_non-res 2 242 2030 0.0 0.0 -es 09_hydro_pump 2 242 2030 0.0 0.0 -es 01_solar 2 243 2030 1.0 0.0 -es 02_wind_on 2 243 2030 1.0 0.0 -es 03_wind_off 2 243 2030 1.0 0.0 -es 04_res 2 243 2030 1.0 0.0 -es 05_nuclear 2 243 2030 0.0 0.0 -es 06_coal 2 243 2030 0.0 0.0 -es 07_gas 2 243 2030 0.0 0.0 -es 08_non-res 2 243 2030 0.0 0.0 -es 09_hydro_pump 2 243 2030 0.0 0.0 -es 01_solar 2 244 2030 1.0 0.0 -es 02_wind_on 2 244 2030 1.0 0.0 -es 03_wind_off 2 244 2030 1.0 0.0 -es 04_res 2 244 2030 1.0 0.0 -es 05_nuclear 2 244 2030 0.0 0.0 -es 06_coal 2 244 2030 0.0 0.0 -es 07_gas 2 244 2030 0.0 0.0 -es 08_non-res 2 244 2030 0.0 0.0 -es 09_hydro_pump 2 244 2030 0.0 0.0 -es 01_solar 2 245 2030 1.0 0.0 -es 02_wind_on 2 245 2030 1.0 0.0 -es 03_wind_off 2 245 2030 1.0 0.0 -es 04_res 2 245 2030 1.0 0.0 -es 05_nuclear 2 245 2030 0.0 0.0 -es 06_coal 2 245 2030 0.0 0.0 -es 07_gas 2 245 2030 0.0 0.0 -es 08_non-res 2 245 2030 0.0 0.0 -es 09_hydro_pump 2 245 2030 0.0 0.0 -es 01_solar 2 246 2030 1.0 0.0 -es 02_wind_on 2 246 2030 1.0 0.0 -es 03_wind_off 2 246 2030 1.0 0.0 -es 04_res 2 246 2030 1.0 0.0 -es 05_nuclear 2 246 2030 0.0 0.0 -es 06_coal 2 246 2030 0.0 0.0 -es 07_gas 2 246 2030 0.0 0.0 -es 08_non-res 2 246 2030 0.0 0.0 -es 09_hydro_pump 2 246 2030 0.0 0.0 -es 01_solar 2 247 2030 1.0 0.0 -es 02_wind_on 2 247 2030 1.0 0.0 -es 03_wind_off 2 247 2030 1.0 0.0 -es 04_res 2 247 2030 1.0 0.0 -es 05_nuclear 2 247 2030 0.0 0.0 -es 06_coal 2 247 2030 0.0 0.0 -es 07_gas 2 247 2030 0.0 0.0 -es 08_non-res 2 247 2030 0.0 0.0 -es 09_hydro_pump 2 247 2030 0.0 0.0 -es 01_solar 2 248 2030 1.0 0.0 -es 02_wind_on 2 248 2030 1.0 0.0 -es 03_wind_off 2 248 2030 1.0 0.0 -es 04_res 2 248 2030 1.0 0.0 -es 05_nuclear 2 248 2030 0.0 0.0 -es 06_coal 2 248 2030 0.0 0.0 -es 07_gas 2 248 2030 0.0 0.0 -es 08_non-res 2 248 2030 0.0 0.0 -es 09_hydro_pump 2 248 2030 0.0 0.0 -es 01_solar 2 249 2030 1.0 0.0 -es 02_wind_on 2 249 2030 1.0 0.0 -es 03_wind_off 2 249 2030 1.0 0.0 -es 04_res 2 249 2030 1.0 0.0 -es 05_nuclear 2 249 2030 0.0 0.0 -es 06_coal 2 249 2030 0.0 0.0 -es 07_gas 2 249 2030 0.0 0.0 -es 08_non-res 2 249 2030 0.0 0.0 -es 09_hydro_pump 2 249 2030 0.0 0.0 -es 01_solar 2 250 2030 1.0 0.0 -es 02_wind_on 2 250 2030 1.0 0.0 -es 03_wind_off 2 250 2030 1.0 0.0 -es 04_res 2 250 2030 1.0 0.0 -es 05_nuclear 2 250 2030 1.0 0.0 -es 06_coal 2 250 2030 0.0 0.0 -es 07_gas 2 250 2030 0.0 0.0 -es 08_non-res 2 250 2030 0.0 0.0 -es 09_hydro_pump 2 250 2030 0.0 0.0 -es 01_solar 2 251 2030 1.0 0.0 -es 02_wind_on 2 251 2030 1.0 0.0 -es 03_wind_off 2 251 2030 1.0 0.0 -es 04_res 2 251 2030 1.0 0.0 -es 05_nuclear 2 251 2030 1.0 0.0 -es 06_coal 2 251 2030 0.0 0.0 -es 07_gas 2 251 2030 0.0 0.0 -es 08_non-res 2 251 2030 0.0 0.0 -es 09_hydro_pump 2 251 2030 0.0 0.0 -es 01_solar 2 252 2030 1.0 0.0 -es 02_wind_on 2 252 2030 1.0 0.0 -es 03_wind_off 2 252 2030 1.0 0.0 -es 04_res 2 252 2030 1.0 0.0 -es 05_nuclear 2 252 2030 1.0 0.0 -es 06_coal 2 252 2030 0.0 0.0 -es 07_gas 2 252 2030 0.0 0.0 -es 08_non-res 2 252 2030 0.0 0.0 -es 09_hydro_pump 2 252 2030 0.0 0.0 -es 01_solar 2 253 2030 1.0 0.0 -es 02_wind_on 2 253 2030 1.0 0.0 -es 03_wind_off 2 253 2030 1.0 0.0 -es 04_res 2 253 2030 1.0 0.0 -es 05_nuclear 2 253 2030 1.0 0.0 -es 06_coal 2 253 2030 0.0 0.0 -es 07_gas 2 253 2030 0.0 0.0 -es 08_non-res 2 253 2030 0.0 0.0 -es 09_hydro_pump 2 253 2030 0.0 0.0 -es 01_solar 2 254 2030 1.0 0.0 -es 02_wind_on 2 254 2030 1.0 0.0 -es 03_wind_off 2 254 2030 1.0 0.0 -es 04_res 2 254 2030 1.0 0.0 -es 05_nuclear 2 254 2030 1.0 0.0 -es 06_coal 2 254 2030 0.0 0.0 -es 07_gas 2 254 2030 0.0 0.0 -es 08_non-res 2 254 2030 0.0 0.0 -es 09_hydro_pump 2 254 2030 0.0 0.0 -es 01_solar 2 255 2030 1.0 0.0 -es 02_wind_on 2 255 2030 1.0 0.0 -es 03_wind_off 2 255 2030 1.0 0.0 -es 04_res 2 255 2030 1.0 0.0 -es 05_nuclear 2 255 2030 1.0 0.0 -es 06_coal 2 255 2030 0.0 0.0 -es 07_gas 2 255 2030 0.0 0.0 -es 08_non-res 2 255 2030 0.0 0.0 -es 09_hydro_pump 2 255 2030 0.0 0.0 -es 01_solar 2 256 2030 1.0 0.0 -es 02_wind_on 2 256 2030 1.0 0.0 -es 03_wind_off 2 256 2030 1.0 0.0 -es 04_res 2 256 2030 1.0 0.0 -es 05_nuclear 2 256 2030 1.0 0.0 -es 06_coal 2 256 2030 0.0 0.0 -es 07_gas 2 256 2030 0.0 0.0 -es 08_non-res 2 256 2030 0.0 0.0 -es 09_hydro_pump 2 256 2030 0.0 0.0 -es 01_solar 2 257 2030 1.0 0.0 -es 02_wind_on 2 257 2030 1.0 0.0 -es 03_wind_off 2 257 2030 1.0 0.0 -es 04_res 2 257 2030 1.0 0.0 -es 05_nuclear 2 257 2030 1.0 0.0 -es 06_coal 2 257 2030 0.0 0.0 -es 07_gas 2 257 2030 0.0 0.0 -es 08_non-res 2 257 2030 0.0 0.0 -es 09_hydro_pump 2 257 2030 0.0 0.0 -es 01_solar 2 258 2030 1.0 0.0 -es 02_wind_on 2 258 2030 1.0 0.0 -es 03_wind_off 2 258 2030 1.0 0.0 -es 04_res 2 258 2030 1.0 0.0 -es 05_nuclear 2 258 2030 1.0 0.0 -es 06_coal 2 258 2030 0.0 0.0 -es 07_gas 2 258 2030 0.0 0.0 -es 08_non-res 2 258 2030 0.0 0.0 -es 09_hydro_pump 2 258 2030 0.0 0.0 -es 01_solar 2 259 2030 1.0 0.0 -es 02_wind_on 2 259 2030 1.0 0.0 -es 03_wind_off 2 259 2030 1.0 0.0 -es 04_res 2 259 2030 1.0 0.0 -es 05_nuclear 2 259 2030 1.0 0.0 -es 06_coal 2 259 2030 0.0 0.0 -es 07_gas 2 259 2030 0.0 0.0 -es 08_non-res 2 259 2030 0.0 0.0 -es 09_hydro_pump 2 259 2030 0.0 0.0 -es 01_solar 2 260 2030 1.0 0.0 -es 02_wind_on 2 260 2030 1.0 0.0 -es 03_wind_off 2 260 2030 1.0 0.0 -es 04_res 2 260 2030 1.0 0.0 -es 05_nuclear 2 260 2030 1.0 0.0 -es 06_coal 2 260 2030 0.0 0.0 -es 07_gas 2 260 2030 0.0 0.0 -es 08_non-res 2 260 2030 0.0 0.0 -es 09_hydro_pump 2 260 2030 0.0 0.0 -es 01_solar 2 261 2030 1.0 0.0 -es 02_wind_on 2 261 2030 1.0 0.0 -es 03_wind_off 2 261 2030 1.0 0.0 -es 04_res 2 261 2030 1.0 0.0 -es 05_nuclear 2 261 2030 1.0 0.0 -es 06_coal 2 261 2030 0.0 0.0 -es 07_gas 2 261 2030 0.0 0.0 -es 08_non-res 2 261 2030 0.0 0.0 -es 09_hydro_pump 2 261 2030 0.0 0.0 -es 01_solar 2 262 2030 1.0 0.0 -es 02_wind_on 2 262 2030 1.0 0.0 -es 03_wind_off 2 262 2030 1.0 0.0 -es 04_res 2 262 2030 1.0 0.0 -es 05_nuclear 2 262 2030 1.0 0.0 -es 06_coal 2 262 2030 0.0 0.0 -es 07_gas 2 262 2030 0.0 0.0 -es 08_non-res 2 262 2030 0.0 0.0 -es 09_hydro_pump 2 262 2030 0.0 0.0 -es 01_solar 2 263 2030 1.0 0.0 -es 02_wind_on 2 263 2030 1.0 0.0 -es 03_wind_off 2 263 2030 1.0 0.0 -es 04_res 2 263 2030 1.0 0.0 -es 05_nuclear 2 263 2030 1.0 0.0 -es 06_coal 2 263 2030 0.0 0.0 -es 07_gas 2 263 2030 0.0 0.0 -es 08_non-res 2 263 2030 0.0 0.0 -es 09_hydro_pump 2 263 2030 0.0 0.0 -es 01_solar 2 264 2030 1.0 0.0 -es 02_wind_on 2 264 2030 1.0 0.0 -es 03_wind_off 2 264 2030 1.0 0.0 -es 04_res 2 264 2030 1.0 0.0 -es 05_nuclear 2 264 2030 1.0 0.0 -es 06_coal 2 264 2030 0.0 0.0 -es 07_gas 2 264 2030 0.0 0.0 -es 08_non-res 2 264 2030 0.0 0.0 -es 09_hydro_pump 2 264 2030 0.0 0.0 -es 01_solar 2 265 2030 1.0 0.0 -es 02_wind_on 2 265 2030 1.0 0.0 -es 03_wind_off 2 265 2030 1.0 0.0 -es 04_res 2 265 2030 1.0 0.0 -es 05_nuclear 2 265 2030 1.0 0.0 -es 06_coal 2 265 2030 0.0 0.0 -es 07_gas 2 265 2030 0.0 0.0 -es 08_non-res 2 265 2030 0.0 0.0 -es 09_hydro_pump 2 265 2030 0.0 0.0 -es 01_solar 2 266 2030 1.0 0.0 -es 02_wind_on 2 266 2030 1.0 0.0 -es 03_wind_off 2 266 2030 1.0 0.0 -es 04_res 2 266 2030 1.0 0.0 -es 05_nuclear 2 266 2030 1.0 0.0 -es 06_coal 2 266 2030 0.0 0.0 -es 07_gas 2 266 2030 0.0 0.0 -es 08_non-res 2 266 2030 0.0 0.0 -es 09_hydro_pump 2 266 2030 0.0 0.0 -es 01_solar 2 267 2030 1.0 0.0 -es 02_wind_on 2 267 2030 1.0 0.0 -es 03_wind_off 2 267 2030 1.0 0.0 -es 04_res 2 267 2030 1.0 0.0 -es 05_nuclear 2 267 2030 1.0 0.0 -es 06_coal 2 267 2030 0.0 0.0 -es 07_gas 2 267 2030 0.0 0.0 -es 08_non-res 2 267 2030 0.0 0.0 -es 09_hydro_pump 2 267 2030 0.0 0.0 -es 01_solar 2 268 2030 1.0 0.0 -es 02_wind_on 2 268 2030 1.0 0.0 -es 03_wind_off 2 268 2030 1.0 0.0 -es 04_res 2 268 2030 1.0 0.0 -es 05_nuclear 2 268 2030 1.0 0.0 -es 06_coal 2 268 2030 0.0 0.0 -es 07_gas 2 268 2030 0.0 0.0 -es 08_non-res 2 268 2030 0.0 0.0 -es 09_hydro_pump 2 268 2030 0.0 0.0 -es 01_solar 2 269 2030 1.0 0.0 -es 02_wind_on 2 269 2030 1.0 0.0 -es 03_wind_off 2 269 2030 1.0 0.0 -es 04_res 2 269 2030 1.0 0.0 -es 05_nuclear 2 269 2030 1.0 0.0 -es 06_coal 2 269 2030 0.0 0.0 -es 07_gas 2 269 2030 0.0 0.0 -es 08_non-res 2 269 2030 0.0 0.0 -es 09_hydro_pump 2 269 2030 0.0 0.0 -es 01_solar 2 270 2030 1.0 0.0 -es 02_wind_on 2 270 2030 1.0 0.0 -es 03_wind_off 2 270 2030 1.0 0.0 -es 04_res 2 270 2030 1.0 0.0 -es 05_nuclear 2 270 2030 1.0 0.0 -es 06_coal 2 270 2030 1.0 0.0 -es 07_gas 2 270 2030 0.0 0.0 -es 08_non-res 2 270 2030 0.0 0.0 -es 09_hydro_pump 2 270 2030 0.0 0.0 -es 01_solar 2 271 2030 1.0 0.0 -es 02_wind_on 2 271 2030 1.0 0.0 -es 03_wind_off 2 271 2030 1.0 0.0 -es 04_res 2 271 2030 1.0 0.0 -es 05_nuclear 2 271 2030 1.0 0.0 -es 06_coal 2 271 2030 1.0 0.0 -es 07_gas 2 271 2030 0.0 0.0 -es 08_non-res 2 271 2030 0.0 0.0 -es 09_hydro_pump 2 271 2030 0.0 0.0 -es 01_solar 2 272 2030 1.0 0.0 -es 02_wind_on 2 272 2030 1.0 0.0 -es 03_wind_off 2 272 2030 1.0 0.0 -es 04_res 2 272 2030 1.0 0.0 -es 05_nuclear 2 272 2030 1.0 0.0 -es 06_coal 2 272 2030 1.0 0.0 -es 07_gas 2 272 2030 0.0 0.0 -es 08_non-res 2 272 2030 0.0 0.0 -es 09_hydro_pump 2 272 2030 0.0 0.0 -es 01_solar 2 273 2030 1.0 0.0 -es 02_wind_on 2 273 2030 1.0 0.0 -es 03_wind_off 2 273 2030 1.0 0.0 -es 04_res 2 273 2030 1.0 0.0 -es 05_nuclear 2 273 2030 1.0 0.0 -es 06_coal 2 273 2030 1.0 0.0 -es 07_gas 2 273 2030 0.0 0.0 -es 08_non-res 2 273 2030 0.0 0.0 -es 09_hydro_pump 2 273 2030 0.0 0.0 -es 01_solar 2 274 2030 1.0 0.0 -es 02_wind_on 2 274 2030 1.0 0.0 -es 03_wind_off 2 274 2030 1.0 0.0 -es 04_res 2 274 2030 1.0 0.0 -es 05_nuclear 2 274 2030 1.0 0.0 -es 06_coal 2 274 2030 1.0 0.0 -es 07_gas 2 274 2030 0.0 0.0 -es 08_non-res 2 274 2030 0.0 0.0 -es 09_hydro_pump 2 274 2030 0.0 0.0 -es 01_solar 2 275 2030 1.0 0.0 -es 02_wind_on 2 275 2030 1.0 0.0 -es 03_wind_off 2 275 2030 1.0 0.0 -es 04_res 2 275 2030 1.0 0.0 -es 05_nuclear 2 275 2030 1.0 0.0 -es 06_coal 2 275 2030 1.0 0.0 -es 07_gas 2 275 2030 0.0 0.0 -es 08_non-res 2 275 2030 0.0 0.0 -es 09_hydro_pump 2 275 2030 0.0 0.0 -es 01_solar 2 276 2030 1.0 0.0 -es 02_wind_on 2 276 2030 1.0 0.0 -es 03_wind_off 2 276 2030 1.0 0.0 -es 04_res 2 276 2030 1.0 0.0 -es 05_nuclear 2 276 2030 1.0 0.0 -es 06_coal 2 276 2030 1.0 0.0 -es 07_gas 2 276 2030 0.0 0.0 -es 08_non-res 2 276 2030 0.0 0.0 -es 09_hydro_pump 2 276 2030 0.0 0.0 -es 01_solar 2 277 2030 1.0 0.0 -es 02_wind_on 2 277 2030 1.0 0.0 -es 03_wind_off 2 277 2030 1.0 0.0 -es 04_res 2 277 2030 1.0 0.0 -es 05_nuclear 2 277 2030 1.0 0.0 -es 06_coal 2 277 2030 1.0 0.0 -es 07_gas 2 277 2030 0.0 0.0 -es 08_non-res 2 277 2030 0.0 0.0 -es 09_hydro_pump 2 277 2030 0.0 0.0 -es 01_solar 2 278 2030 1.0 0.0 -es 02_wind_on 2 278 2030 1.0 0.0 -es 03_wind_off 2 278 2030 1.0 0.0 -es 04_res 2 278 2030 1.0 0.0 -es 05_nuclear 2 278 2030 1.0 0.0 -es 06_coal 2 278 2030 1.0 0.0 -es 07_gas 2 278 2030 0.0 0.0 -es 08_non-res 2 278 2030 0.0 0.0 -es 09_hydro_pump 2 278 2030 0.0 0.0 -es 01_solar 2 279 2030 1.0 0.0 -es 02_wind_on 2 279 2030 1.0 0.0 -es 03_wind_off 2 279 2030 1.0 0.0 -es 04_res 2 279 2030 1.0 0.0 -es 05_nuclear 2 279 2030 1.0 0.0 -es 06_coal 2 279 2030 1.0 0.0 -es 07_gas 2 279 2030 0.0 0.0 -es 08_non-res 2 279 2030 0.0 0.0 -es 09_hydro_pump 2 279 2030 0.0 0.0 -es 01_solar 2 280 2030 1.0 0.0 -es 02_wind_on 2 280 2030 1.0 0.0 -es 03_wind_off 2 280 2030 1.0 0.0 -es 04_res 2 280 2030 1.0 0.0 -es 05_nuclear 2 280 2030 1.0 0.0 -es 06_coal 2 280 2030 1.0 0.0 -es 07_gas 2 280 2030 0.0 0.0 -es 08_non-res 2 280 2030 0.0 0.0 -es 09_hydro_pump 2 280 2030 0.0 0.0 -es 01_solar 2 281 2030 1.0 0.0 -es 02_wind_on 2 281 2030 1.0 0.0 -es 03_wind_off 2 281 2030 1.0 0.0 -es 04_res 2 281 2030 1.0 0.0 -es 05_nuclear 2 281 2030 1.0 0.0 -es 06_coal 2 281 2030 1.0 0.0 -es 07_gas 2 281 2030 0.0 0.0 -es 08_non-res 2 281 2030 0.0 0.0 -es 09_hydro_pump 2 281 2030 0.0 0.0 -es 01_solar 2 282 2030 1.0 0.0 -es 02_wind_on 2 282 2030 1.0 0.0 -es 03_wind_off 2 282 2030 1.0 0.0 -es 04_res 2 282 2030 1.0 0.0 -es 05_nuclear 2 282 2030 1.0 0.0 -es 06_coal 2 282 2030 1.0 0.0 -es 07_gas 2 282 2030 0.0 0.0 -es 08_non-res 2 282 2030 0.0 0.0 -es 09_hydro_pump 2 282 2030 0.0 0.0 -es 01_solar 2 283 2030 1.0 0.0 -es 02_wind_on 2 283 2030 1.0 0.0 -es 03_wind_off 2 283 2030 1.0 0.0 -es 04_res 2 283 2030 1.0 0.0 -es 05_nuclear 2 283 2030 1.0 0.0 -es 06_coal 2 283 2030 1.0 0.0 -es 07_gas 2 283 2030 0.0 0.0 -es 08_non-res 2 283 2030 0.0 0.0 -es 09_hydro_pump 2 283 2030 0.0 0.0 -es 01_solar 2 284 2030 1.0 0.0 -es 02_wind_on 2 284 2030 1.0 0.0 -es 03_wind_off 2 284 2030 1.0 0.0 -es 04_res 2 284 2030 1.0 0.0 -es 05_nuclear 2 284 2030 1.0 0.0 -es 06_coal 2 284 2030 1.0 0.0 -es 07_gas 2 284 2030 0.0 0.0 -es 08_non-res 2 284 2030 0.0 0.0 -es 09_hydro_pump 2 284 2030 0.0 0.0 -es 01_solar 2 285 2030 1.0 0.0 -es 02_wind_on 2 285 2030 1.0 0.0 -es 03_wind_off 2 285 2030 1.0 0.0 -es 04_res 2 285 2030 1.0 0.0 -es 05_nuclear 2 285 2030 1.0 0.0 -es 06_coal 2 285 2030 1.0 0.0 -es 07_gas 2 285 2030 0.0 0.0 -es 08_non-res 2 285 2030 0.0 0.0 -es 09_hydro_pump 2 285 2030 0.0 0.0 -es 01_solar 2 286 2030 1.0 0.0 -es 02_wind_on 2 286 2030 1.0 0.0 -es 03_wind_off 2 286 2030 1.0 0.0 -es 04_res 2 286 2030 1.0 0.0 -es 05_nuclear 2 286 2030 1.0 0.0 -es 06_coal 2 286 2030 1.0 0.0 -es 07_gas 2 286 2030 0.0 0.0 -es 08_non-res 2 286 2030 0.0 0.0 -es 09_hydro_pump 2 286 2030 0.0 0.0 -es 01_solar 2 287 2030 1.0 0.0 -es 02_wind_on 2 287 2030 1.0 0.0 -es 03_wind_off 2 287 2030 1.0 0.0 -es 04_res 2 287 2030 1.0 0.0 -es 05_nuclear 2 287 2030 1.0 0.0 -es 06_coal 2 287 2030 1.0 0.0 -es 07_gas 2 287 2030 0.0 0.0 -es 08_non-res 2 287 2030 0.0 0.0 -es 09_hydro_pump 2 287 2030 0.0 0.0 -es 01_solar 2 288 2030 1.0 0.0 -es 02_wind_on 2 288 2030 1.0 0.0 -es 03_wind_off 2 288 2030 1.0 0.0 -es 04_res 2 288 2030 1.0 0.0 -es 05_nuclear 2 288 2030 1.0 0.0 -es 06_coal 2 288 2030 1.0 0.0 -es 07_gas 2 288 2030 0.0 0.0 -es 08_non-res 2 288 2030 0.0 0.0 -es 09_hydro_pump 2 288 2030 0.0 0.0 -es 01_solar 2 289 2030 1.0 0.0 -es 02_wind_on 2 289 2030 1.0 0.0 -es 03_wind_off 2 289 2030 1.0 0.0 -es 04_res 2 289 2030 1.0 0.0 -es 05_nuclear 2 289 2030 1.0 0.0 -es 06_coal 2 289 2030 1.0 0.0 -es 07_gas 2 289 2030 0.0 0.0 -es 08_non-res 2 289 2030 0.0 0.0 -es 09_hydro_pump 2 289 2030 0.0 0.0 -es 01_solar 2 290 2030 1.0 0.0 -es 02_wind_on 2 290 2030 1.0 0.0 -es 03_wind_off 2 290 2030 1.0 0.0 -es 04_res 2 290 2030 1.0 0.0 -es 05_nuclear 2 290 2030 1.0 0.0 -es 06_coal 2 290 2030 1.0 0.0 -es 07_gas 2 290 2030 1.0 0.0 -es 08_non-res 2 290 2030 0.0 0.0 -es 09_hydro_pump 2 290 2030 0.0 0.0 -es 01_solar 2 291 2030 1.0 0.0 -es 02_wind_on 2 291 2030 1.0 0.0 -es 03_wind_off 2 291 2030 1.0 0.0 -es 04_res 2 291 2030 1.0 0.0 -es 05_nuclear 2 291 2030 1.0 0.0 -es 06_coal 2 291 2030 1.0 0.0 -es 07_gas 2 291 2030 1.0 0.0 -es 08_non-res 2 291 2030 0.0 0.0 -es 09_hydro_pump 2 291 2030 0.0 0.0 -es 01_solar 2 292 2030 1.0 0.0 -es 02_wind_on 2 292 2030 1.0 0.0 -es 03_wind_off 2 292 2030 1.0 0.0 -es 04_res 2 292 2030 1.0 0.0 -es 05_nuclear 2 292 2030 1.0 0.0 -es 06_coal 2 292 2030 1.0 0.0 -es 07_gas 2 292 2030 1.0 0.0 -es 08_non-res 2 292 2030 0.0 0.0 -es 09_hydro_pump 2 292 2030 0.0 0.0 -es 01_solar 2 293 2030 1.0 0.0 -es 02_wind_on 2 293 2030 1.0 0.0 -es 03_wind_off 2 293 2030 1.0 0.0 -es 04_res 2 293 2030 1.0 0.0 -es 05_nuclear 2 293 2030 1.0 0.0 -es 06_coal 2 293 2030 1.0 0.0 -es 07_gas 2 293 2030 1.0 0.0 -es 08_non-res 2 293 2030 0.0 0.0 -es 09_hydro_pump 2 293 2030 0.0 0.0 -es 01_solar 2 294 2030 1.0 0.0 -es 02_wind_on 2 294 2030 1.0 0.0 -es 03_wind_off 2 294 2030 1.0 0.0 -es 04_res 2 294 2030 1.0 0.0 -es 05_nuclear 2 294 2030 1.0 0.0 -es 06_coal 2 294 2030 1.0 0.0 -es 07_gas 2 294 2030 1.0 0.0 -es 08_non-res 2 294 2030 0.0 0.0 -es 09_hydro_pump 2 294 2030 0.0 0.0 -es 01_solar 2 295 2030 1.0 0.0 -es 02_wind_on 2 295 2030 1.0 0.0 -es 03_wind_off 2 295 2030 1.0 0.0 -es 04_res 2 295 2030 1.0 0.0 -es 05_nuclear 2 295 2030 1.0 0.0 -es 06_coal 2 295 2030 1.0 0.0 -es 07_gas 2 295 2030 1.0 0.0 -es 08_non-res 2 295 2030 0.0 0.0 -es 09_hydro_pump 2 295 2030 0.0 0.0 -es 01_solar 2 296 2030 1.0 0.0 -es 02_wind_on 2 296 2030 1.0 0.0 -es 03_wind_off 2 296 2030 1.0 0.0 -es 04_res 2 296 2030 1.0 0.0 -es 05_nuclear 2 296 2030 1.0 0.0 -es 06_coal 2 296 2030 1.0 0.0 -es 07_gas 2 296 2030 1.0 0.0 -es 08_non-res 2 296 2030 0.0 0.0 -es 09_hydro_pump 2 296 2030 0.0 0.0 -es 01_solar 2 297 2030 1.0 0.0 -es 02_wind_on 2 297 2030 1.0 0.0 -es 03_wind_off 2 297 2030 1.0 0.0 -es 04_res 2 297 2030 1.0 0.0 -es 05_nuclear 2 297 2030 1.0 0.0 -es 06_coal 2 297 2030 1.0 0.0 -es 07_gas 2 297 2030 1.0 0.0 -es 08_non-res 2 297 2030 0.0 0.0 -es 09_hydro_pump 2 297 2030 0.0 0.0 -es 01_solar 2 298 2030 1.0 0.0 -es 02_wind_on 2 298 2030 1.0 0.0 -es 03_wind_off 2 298 2030 1.0 0.0 -es 04_res 2 298 2030 1.0 0.0 -es 05_nuclear 2 298 2030 1.0 0.0 -es 06_coal 2 298 2030 1.0 0.0 -es 07_gas 2 298 2030 1.0 0.0 -es 08_non-res 2 298 2030 0.0 0.0 -es 09_hydro_pump 2 298 2030 0.0 0.0 -es 01_solar 2 299 2030 1.0 0.0 -es 02_wind_on 2 299 2030 1.0 0.0 -es 03_wind_off 2 299 2030 1.0 0.0 -es 04_res 2 299 2030 1.0 0.0 -es 05_nuclear 2 299 2030 1.0 0.0 -es 06_coal 2 299 2030 1.0 0.0 -es 07_gas 2 299 2030 1.0 0.0 -es 08_non-res 2 299 2030 0.0 0.0 -es 09_hydro_pump 2 299 2030 0.0 0.0 -es 01_solar 2 300 2030 1.0 0.0 -es 02_wind_on 2 300 2030 1.0 0.0 -es 03_wind_off 2 300 2030 1.0 0.0 -es 04_res 2 300 2030 1.0 0.0 -es 05_nuclear 2 300 2030 1.0 0.0 -es 06_coal 2 300 2030 1.0 0.0 -es 07_gas 2 300 2030 1.0 0.0 -es 08_non-res 2 300 2030 0.0 0.0 -es 09_hydro_pump 2 300 2030 0.0 0.0 -es 01_solar 2 301 2030 1.0 0.0 -es 02_wind_on 2 301 2030 1.0 0.0 -es 03_wind_off 2 301 2030 1.0 0.0 -es 04_res 2 301 2030 1.0 0.0 -es 05_nuclear 2 301 2030 1.0 0.0 -es 06_coal 2 301 2030 1.0 0.0 -es 07_gas 2 301 2030 1.0 0.0 -es 08_non-res 2 301 2030 0.0 0.0 -es 09_hydro_pump 2 301 2030 0.0 0.0 -es 01_solar 2 302 2030 1.0 0.0 -es 02_wind_on 2 302 2030 1.0 0.0 -es 03_wind_off 2 302 2030 1.0 0.0 -es 04_res 2 302 2030 1.0 0.0 -es 05_nuclear 2 302 2030 1.0 0.0 -es 06_coal 2 302 2030 1.0 0.0 -es 07_gas 2 302 2030 1.0 0.0 -es 08_non-res 2 302 2030 0.0 0.0 -es 09_hydro_pump 2 302 2030 0.0 0.0 -es 01_solar 2 303 2030 1.0 0.0 -es 02_wind_on 2 303 2030 1.0 0.0 -es 03_wind_off 2 303 2030 1.0 0.0 -es 04_res 2 303 2030 1.0 0.0 -es 05_nuclear 2 303 2030 1.0 0.0 -es 06_coal 2 303 2030 1.0 0.0 -es 07_gas 2 303 2030 1.0 0.0 -es 08_non-res 2 303 2030 0.0 0.0 -es 09_hydro_pump 2 303 2030 0.0 0.0 -es 01_solar 2 304 2030 1.0 0.0 -es 02_wind_on 2 304 2030 1.0 0.0 -es 03_wind_off 2 304 2030 1.0 0.0 -es 04_res 2 304 2030 1.0 0.0 -es 05_nuclear 2 304 2030 1.0 0.0 -es 06_coal 2 304 2030 1.0 0.0 -es 07_gas 2 304 2030 1.0 0.0 -es 08_non-res 2 304 2030 0.0 0.0 -es 09_hydro_pump 2 304 2030 0.0 0.0 -es 01_solar 2 305 2030 1.0 0.0 -es 02_wind_on 2 305 2030 1.0 0.0 -es 03_wind_off 2 305 2030 1.0 0.0 -es 04_res 2 305 2030 1.0 0.0 -es 05_nuclear 2 305 2030 1.0 0.0 -es 06_coal 2 305 2030 1.0 0.0 -es 07_gas 2 305 2030 1.0 0.0 -es 08_non-res 2 305 2030 0.0 0.0 -es 09_hydro_pump 2 305 2030 0.0 0.0 -es 01_solar 2 306 2030 1.0 0.0 -es 02_wind_on 2 306 2030 1.0 0.0 -es 03_wind_off 2 306 2030 1.0 0.0 -es 04_res 2 306 2030 1.0 0.0 -es 05_nuclear 2 306 2030 1.0 0.0 -es 06_coal 2 306 2030 1.0 0.0 -es 07_gas 2 306 2030 1.0 0.0 -es 08_non-res 2 306 2030 0.0 0.0 -es 09_hydro_pump 2 306 2030 0.0 0.0 -es 01_solar 2 307 2030 1.0 0.0 -es 02_wind_on 2 307 2030 1.0 0.0 -es 03_wind_off 2 307 2030 1.0 0.0 -es 04_res 2 307 2030 1.0 0.0 -es 05_nuclear 2 307 2030 1.0 0.0 -es 06_coal 2 307 2030 1.0 0.0 -es 07_gas 2 307 2030 1.0 0.0 -es 08_non-res 2 307 2030 0.0 0.0 -es 09_hydro_pump 2 307 2030 0.0 0.0 -es 01_solar 2 308 2030 1.0 0.0 -es 02_wind_on 2 308 2030 1.0 0.0 -es 03_wind_off 2 308 2030 1.0 0.0 -es 04_res 2 308 2030 1.0 0.0 -es 05_nuclear 2 308 2030 1.0 0.0 -es 06_coal 2 308 2030 1.0 0.0 -es 07_gas 2 308 2030 1.0 0.0 -es 08_non-res 2 308 2030 0.0 0.0 -es 09_hydro_pump 2 308 2030 0.0 0.0 -es 01_solar 2 309 2030 1.0 0.0 -es 02_wind_on 2 309 2030 1.0 0.0 -es 03_wind_off 2 309 2030 1.0 0.0 -es 04_res 2 309 2030 1.0 0.0 -es 05_nuclear 2 309 2030 1.0 0.0 -es 06_coal 2 309 2030 1.0 0.0 -es 07_gas 2 309 2030 1.0 0.0 -es 08_non-res 2 309 2030 0.0 0.0 -es 09_hydro_pump 2 309 2030 0.0 0.0 -es 01_solar 2 310 2030 1.0 0.0 -es 02_wind_on 2 310 2030 1.0 0.0 -es 03_wind_off 2 310 2030 1.0 0.0 -es 04_res 2 310 2030 1.0 0.0 -es 05_nuclear 2 310 2030 1.0 0.0 -es 06_coal 2 310 2030 1.0 0.0 -es 07_gas 2 310 2030 1.0 0.0 -es 08_non-res 2 310 2030 1.0 0.0 -es 09_hydro_pump 2 310 2030 0.0 0.0 -es 01_solar 2 311 2030 1.0 0.0 -es 02_wind_on 2 311 2030 1.0 0.0 -es 03_wind_off 2 311 2030 1.0 0.0 -es 04_res 2 311 2030 1.0 0.0 -es 05_nuclear 2 311 2030 1.0 0.0 -es 06_coal 2 311 2030 1.0 0.0 -es 07_gas 2 311 2030 1.0 0.0 -es 08_non-res 2 311 2030 1.0 0.0 -es 09_hydro_pump 2 311 2030 0.0 0.0 -es 01_solar 2 312 2030 1.0 0.0 -es 02_wind_on 2 312 2030 1.0 0.0 -es 03_wind_off 2 312 2030 1.0 0.0 -es 04_res 2 312 2030 1.0 0.0 -es 05_nuclear 2 312 2030 1.0 0.0 -es 06_coal 2 312 2030 1.0 0.0 -es 07_gas 2 312 2030 1.0 0.0 -es 08_non-res 2 312 2030 1.0 0.0 -es 09_hydro_pump 2 312 2030 0.0 0.0 -es 01_solar 2 313 2030 1.0 0.0 -es 02_wind_on 2 313 2030 1.0 0.0 -es 03_wind_off 2 313 2030 1.0 0.0 -es 04_res 2 313 2030 1.0 0.0 -es 05_nuclear 2 313 2030 1.0 0.0 -es 06_coal 2 313 2030 1.0 0.0 -es 07_gas 2 313 2030 1.0 0.0 -es 08_non-res 2 313 2030 1.0 0.0 -es 09_hydro_pump 2 313 2030 0.0 0.0 -es 01_solar 2 314 2030 1.0 0.0 -es 02_wind_on 2 314 2030 1.0 0.0 -es 03_wind_off 2 314 2030 1.0 0.0 -es 04_res 2 314 2030 1.0 0.0 -es 05_nuclear 2 314 2030 1.0 0.0 -es 06_coal 2 314 2030 1.0 0.0 -es 07_gas 2 314 2030 1.0 0.0 -es 08_non-res 2 314 2030 1.0 0.0 -es 09_hydro_pump 2 314 2030 0.0 0.0 -es 01_solar 2 315 2030 1.0 0.0 -es 02_wind_on 2 315 2030 1.0 0.0 -es 03_wind_off 2 315 2030 1.0 0.0 -es 04_res 2 315 2030 1.0 0.0 -es 05_nuclear 2 315 2030 1.0 0.0 -es 06_coal 2 315 2030 1.0 0.0 -es 07_gas 2 315 2030 1.0 0.0 -es 08_non-res 2 315 2030 1.0 0.0 -es 09_hydro_pump 2 315 2030 0.0 0.0 -es 01_solar 2 316 2030 1.0 0.0 -es 02_wind_on 2 316 2030 1.0 0.0 -es 03_wind_off 2 316 2030 1.0 0.0 -es 04_res 2 316 2030 1.0 0.0 -es 05_nuclear 2 316 2030 1.0 0.0 -es 06_coal 2 316 2030 1.0 0.0 -es 07_gas 2 316 2030 1.0 0.0 -es 08_non-res 2 316 2030 1.0 0.0 -es 09_hydro_pump 2 316 2030 0.0 0.0 -es 01_solar 2 317 2030 1.0 0.0 -es 02_wind_on 2 317 2030 1.0 0.0 -es 03_wind_off 2 317 2030 1.0 0.0 -es 04_res 2 317 2030 1.0 0.0 -es 05_nuclear 2 317 2030 1.0 0.0 -es 06_coal 2 317 2030 1.0 0.0 -es 07_gas 2 317 2030 1.0 0.0 -es 08_non-res 2 317 2030 1.0 0.0 -es 09_hydro_pump 2 317 2030 0.0 0.0 -es 01_solar 2 318 2030 1.0 0.0 -es 02_wind_on 2 318 2030 1.0 0.0 -es 03_wind_off 2 318 2030 1.0 0.0 -es 04_res 2 318 2030 1.0 0.0 -es 05_nuclear 2 318 2030 1.0 0.0 -es 06_coal 2 318 2030 1.0 0.0 -es 07_gas 2 318 2030 1.0 0.0 -es 08_non-res 2 318 2030 1.0 0.0 -es 09_hydro_pump 2 318 2030 0.0 0.0 -es 01_solar 2 319 2030 1.0 0.0 -es 02_wind_on 2 319 2030 1.0 0.0 -es 03_wind_off 2 319 2030 1.0 0.0 -es 04_res 2 319 2030 1.0 0.0 -es 05_nuclear 2 319 2030 1.0 0.0 -es 06_coal 2 319 2030 1.0 0.0 -es 07_gas 2 319 2030 1.0 0.0 -es 08_non-res 2 319 2030 1.0 0.0 -es 09_hydro_pump 2 319 2030 0.0 0.0 -es 01_solar 2 320 2030 1.0 0.0 -es 02_wind_on 2 320 2030 1.0 0.0 -es 03_wind_off 2 320 2030 1.0 0.0 -es 04_res 2 320 2030 1.0 0.0 -es 05_nuclear 2 320 2030 1.0 0.0 -es 06_coal 2 320 2030 1.0 0.0 -es 07_gas 2 320 2030 1.0 0.0 -es 08_non-res 2 320 2030 1.0 0.0 -es 09_hydro_pump 2 320 2030 0.0 0.0 -es 01_solar 2 321 2030 1.0 0.0 -es 02_wind_on 2 321 2030 1.0 0.0 -es 03_wind_off 2 321 2030 1.0 0.0 -es 04_res 2 321 2030 1.0 0.0 -es 05_nuclear 2 321 2030 1.0 0.0 -es 06_coal 2 321 2030 1.0 0.0 -es 07_gas 2 321 2030 1.0 0.0 -es 08_non-res 2 321 2030 1.0 0.0 -es 09_hydro_pump 2 321 2030 0.0 0.0 -es 01_solar 2 322 2030 1.0 0.0 -es 02_wind_on 2 322 2030 1.0 0.0 -es 03_wind_off 2 322 2030 1.0 0.0 -es 04_res 2 322 2030 1.0 0.0 -es 05_nuclear 2 322 2030 1.0 0.0 -es 06_coal 2 322 2030 1.0 0.0 -es 07_gas 2 322 2030 1.0 0.0 -es 08_non-res 2 322 2030 1.0 0.0 -es 09_hydro_pump 2 322 2030 0.0 0.0 -es 01_solar 2 323 2030 1.0 0.0 -es 02_wind_on 2 323 2030 1.0 0.0 -es 03_wind_off 2 323 2030 1.0 0.0 -es 04_res 2 323 2030 1.0 0.0 -es 05_nuclear 2 323 2030 1.0 0.0 -es 06_coal 2 323 2030 1.0 0.0 -es 07_gas 2 323 2030 1.0 0.0 -es 08_non-res 2 323 2030 1.0 0.0 -es 09_hydro_pump 2 323 2030 0.0 0.0 -es 01_solar 2 324 2030 1.0 0.0 -es 02_wind_on 2 324 2030 1.0 0.0 -es 03_wind_off 2 324 2030 1.0 0.0 -es 04_res 2 324 2030 1.0 0.0 -es 05_nuclear 2 324 2030 1.0 0.0 -es 06_coal 2 324 2030 1.0 0.0 -es 07_gas 2 324 2030 1.0 0.0 -es 08_non-res 2 324 2030 1.0 0.0 -es 09_hydro_pump 2 324 2030 0.0 0.0 -es 01_solar 2 325 2030 1.0 0.0 -es 02_wind_on 2 325 2030 1.0 0.0 -es 03_wind_off 2 325 2030 1.0 0.0 -es 04_res 2 325 2030 1.0 0.0 -es 05_nuclear 2 325 2030 1.0 0.0 -es 06_coal 2 325 2030 1.0 0.0 -es 07_gas 2 325 2030 1.0 0.0 -es 08_non-res 2 325 2030 1.0 0.0 -es 09_hydro_pump 2 325 2030 0.0 0.0 -es 01_solar 2 326 2030 1.0 0.0 -es 02_wind_on 2 326 2030 1.0 0.0 -es 03_wind_off 2 326 2030 1.0 0.0 -es 04_res 2 326 2030 1.0 0.0 -es 05_nuclear 2 326 2030 1.0 0.0 -es 06_coal 2 326 2030 1.0 0.0 -es 07_gas 2 326 2030 1.0 0.0 -es 08_non-res 2 326 2030 1.0 0.0 -es 09_hydro_pump 2 326 2030 0.0 0.0 -es 01_solar 2 327 2030 1.0 0.0 -es 02_wind_on 2 327 2030 1.0 0.0 -es 03_wind_off 2 327 2030 1.0 0.0 -es 04_res 2 327 2030 1.0 0.0 -es 05_nuclear 2 327 2030 1.0 0.0 -es 06_coal 2 327 2030 1.0 0.0 -es 07_gas 2 327 2030 1.0 0.0 -es 08_non-res 2 327 2030 1.0 0.0 -es 09_hydro_pump 2 327 2030 0.0 0.0 -es 01_solar 2 328 2030 1.0 0.0 -es 02_wind_on 2 328 2030 1.0 0.0 -es 03_wind_off 2 328 2030 1.0 0.0 -es 04_res 2 328 2030 1.0 0.0 -es 05_nuclear 2 328 2030 1.0 0.0 -es 06_coal 2 328 2030 1.0 0.0 -es 07_gas 2 328 2030 1.0 0.0 -es 08_non-res 2 328 2030 1.0 0.0 -es 09_hydro_pump 2 328 2030 0.0 0.0 -es 01_solar 2 329 2030 1.0 0.0 -es 02_wind_on 2 329 2030 1.0 0.0 -es 03_wind_off 2 329 2030 1.0 0.0 -es 04_res 2 329 2030 1.0 0.0 -es 05_nuclear 2 329 2030 1.0 0.0 -es 06_coal 2 329 2030 1.0 0.0 -es 07_gas 2 329 2030 1.0 0.0 -es 08_non-res 2 329 2030 1.0 0.0 -es 09_hydro_pump 2 329 2030 0.0 0.0 -es 01_solar 2 330 2030 1.0 0.0 -es 02_wind_on 2 330 2030 1.0 0.0 -es 03_wind_off 2 330 2030 1.0 0.0 -es 04_res 2 330 2030 1.0 0.0 -es 05_nuclear 2 330 2030 1.0 0.0 -es 06_coal 2 330 2030 1.0 0.0 -es 07_gas 2 330 2030 1.0 0.0 -es 08_non-res 2 330 2030 1.0 0.0 -es 09_hydro_pump 2 330 2030 1.0 0.0 -es 01_solar 2 331 2030 1.0 0.0 -es 02_wind_on 2 331 2030 1.0 0.0 -es 03_wind_off 2 331 2030 1.0 0.0 -es 04_res 2 331 2030 1.0 0.0 -es 05_nuclear 2 331 2030 1.0 0.0 -es 06_coal 2 331 2030 1.0 0.0 -es 07_gas 2 331 2030 1.0 0.0 -es 08_non-res 2 331 2030 1.0 0.0 -es 09_hydro_pump 2 331 2030 1.0 0.0 -es 01_solar 2 332 2030 1.0 0.0 -es 02_wind_on 2 332 2030 1.0 0.0 -es 03_wind_off 2 332 2030 1.0 0.0 -es 04_res 2 332 2030 1.0 0.0 -es 05_nuclear 2 332 2030 1.0 0.0 -es 06_coal 2 332 2030 1.0 0.0 -es 07_gas 2 332 2030 1.0 0.0 -es 08_non-res 2 332 2030 1.0 0.0 -es 09_hydro_pump 2 332 2030 1.0 0.0 -es 01_solar 2 333 2030 1.0 0.0 -es 02_wind_on 2 333 2030 1.0 0.0 -es 03_wind_off 2 333 2030 1.0 0.0 -es 04_res 2 333 2030 1.0 0.0 -es 05_nuclear 2 333 2030 1.0 0.0 -es 06_coal 2 333 2030 1.0 0.0 -es 07_gas 2 333 2030 1.0 0.0 -es 08_non-res 2 333 2030 1.0 0.0 -es 09_hydro_pump 2 333 2030 1.0 0.0 -es 01_solar 2 334 2030 1.0 0.0 -es 02_wind_on 2 334 2030 1.0 0.0 -es 03_wind_off 2 334 2030 1.0 0.0 -es 04_res 2 334 2030 1.0 0.0 -es 05_nuclear 2 334 2030 1.0 0.0 -es 06_coal 2 334 2030 1.0 0.0 -es 07_gas 2 334 2030 1.0 0.0 -es 08_non-res 2 334 2030 1.0 0.0 -es 09_hydro_pump 2 334 2030 1.0 0.0 -es 01_solar 2 335 2030 1.0 0.0 -es 02_wind_on 2 335 2030 1.0 0.0 -es 03_wind_off 2 335 2030 1.0 0.0 -es 04_res 2 335 2030 1.0 0.0 -es 05_nuclear 2 335 2030 1.0 0.0 -es 06_coal 2 335 2030 1.0 0.0 -es 07_gas 2 335 2030 1.0 0.0 -es 08_non-res 2 335 2030 1.0 0.0 -es 09_hydro_pump 2 335 2030 1.0 0.0 -es 01_solar 2 336 2030 1.0 0.0 -es 02_wind_on 2 336 2030 1.0 0.0 -es 03_wind_off 2 336 2030 1.0 0.0 -es 04_res 2 336 2030 1.0 0.0 -es 05_nuclear 2 336 2030 1.0 0.0 -es 06_coal 2 336 2030 1.0 0.0 -es 07_gas 2 336 2030 1.0 0.0 -es 08_non-res 2 336 2030 1.0 0.0 -es 09_hydro_pump 2 336 2030 1.0 0.0 -fr 01_solar 2 1 2030 0.0 0.0 -fr 02_wind_on 2 1 2030 0.0 0.0 -fr 03_wind_off 2 1 2030 0.0 0.0 -fr 04_res 2 1 2030 0.0 0.0 -fr 05_nuclear 2 1 2030 0.0 0.0 -fr 06_coal 2 1 2030 0.0 0.0 -fr 07_gas 2 1 2030 0.0 0.0 -fr 08_non-res 2 1 2030 0.0 0.0 -fr 09_hydro_pump 2 1 2030 0.0 0.0 -fr 01_solar 2 2 2030 1.0 0.0 -fr 02_wind_on 2 2 2030 0.0 0.0 -fr 03_wind_off 2 2 2030 0.0 0.0 -fr 04_res 2 2 2030 0.0 0.0 -fr 05_nuclear 2 2 2030 0.0 0.0 -fr 06_coal 2 2 2030 0.0 0.0 -fr 07_gas 2 2 2030 0.0 0.0 -fr 08_non-res 2 2 2030 0.0 0.0 -fr 09_hydro_pump 2 2 2030 0.0 0.0 -fr 01_solar 2 3 2030 1.0 0.0 -fr 02_wind_on 2 3 2030 0.0 0.0 -fr 03_wind_off 2 3 2030 0.0 0.0 -fr 04_res 2 3 2030 0.0 0.0 -fr 05_nuclear 2 3 2030 0.0 0.0 -fr 06_coal 2 3 2030 0.0 0.0 -fr 07_gas 2 3 2030 0.0 0.0 -fr 08_non-res 2 3 2030 0.0 0.0 -fr 09_hydro_pump 2 3 2030 0.0 0.0 -fr 01_solar 2 4 2030 1.0 0.0 -fr 02_wind_on 2 4 2030 0.0 0.0 -fr 03_wind_off 2 4 2030 0.0 0.0 -fr 04_res 2 4 2030 0.0 0.0 -fr 05_nuclear 2 4 2030 0.0 0.0 -fr 06_coal 2 4 2030 0.0 0.0 -fr 07_gas 2 4 2030 0.0 0.0 -fr 08_non-res 2 4 2030 0.0 0.0 -fr 09_hydro_pump 2 4 2030 0.0 0.0 -fr 01_solar 2 5 2030 1.0 0.0 -fr 02_wind_on 2 5 2030 0.0 0.0 -fr 03_wind_off 2 5 2030 0.0 0.0 -fr 04_res 2 5 2030 0.0 0.0 -fr 05_nuclear 2 5 2030 0.0 0.0 -fr 06_coal 2 5 2030 0.0 0.0 -fr 07_gas 2 5 2030 0.0 0.0 -fr 08_non-res 2 5 2030 0.0 0.0 -fr 09_hydro_pump 2 5 2030 0.0 0.0 -fr 01_solar 2 6 2030 1.0 0.0 -fr 02_wind_on 2 6 2030 0.0 0.0 -fr 03_wind_off 2 6 2030 0.0 0.0 -fr 04_res 2 6 2030 0.0 0.0 -fr 05_nuclear 2 6 2030 0.0 0.0 -fr 06_coal 2 6 2030 0.0 0.0 -fr 07_gas 2 6 2030 0.0 0.0 -fr 08_non-res 2 6 2030 0.0 0.0 -fr 09_hydro_pump 2 6 2030 0.0 0.0 -fr 01_solar 2 7 2030 1.0 0.0 -fr 02_wind_on 2 7 2030 0.0 0.0 -fr 03_wind_off 2 7 2030 0.0 0.0 -fr 04_res 2 7 2030 0.0 0.0 -fr 05_nuclear 2 7 2030 0.0 0.0 -fr 06_coal 2 7 2030 0.0 0.0 -fr 07_gas 2 7 2030 0.0 0.0 -fr 08_non-res 2 7 2030 0.0 0.0 -fr 09_hydro_pump 2 7 2030 0.0 0.0 -fr 01_solar 2 8 2030 1.0 0.0 -fr 02_wind_on 2 8 2030 0.0 0.0 -fr 03_wind_off 2 8 2030 0.0 0.0 -fr 04_res 2 8 2030 0.0 0.0 -fr 05_nuclear 2 8 2030 0.0 0.0 -fr 06_coal 2 8 2030 0.0 0.0 -fr 07_gas 2 8 2030 0.0 0.0 -fr 08_non-res 2 8 2030 0.0 0.0 -fr 09_hydro_pump 2 8 2030 0.0 0.0 -fr 01_solar 2 9 2030 1.0 0.0 -fr 02_wind_on 2 9 2030 0.0 0.0 -fr 03_wind_off 2 9 2030 0.0 0.0 -fr 04_res 2 9 2030 0.0 0.0 -fr 05_nuclear 2 9 2030 0.0 0.0 -fr 06_coal 2 9 2030 0.0 0.0 -fr 07_gas 2 9 2030 0.0 0.0 -fr 08_non-res 2 9 2030 0.0 0.0 -fr 09_hydro_pump 2 9 2030 0.0 0.0 -fr 01_solar 2 10 2030 1.0 0.0 -fr 02_wind_on 2 10 2030 0.0 0.0 -fr 03_wind_off 2 10 2030 0.0 0.0 -fr 04_res 2 10 2030 0.0 0.0 -fr 05_nuclear 2 10 2030 0.0 0.0 -fr 06_coal 2 10 2030 0.0 0.0 -fr 07_gas 2 10 2030 0.0 0.0 -fr 08_non-res 2 10 2030 0.0 0.0 -fr 09_hydro_pump 2 10 2030 0.0 0.0 -fr 01_solar 2 11 2030 1.0 0.0 -fr 02_wind_on 2 11 2030 0.0 0.0 -fr 03_wind_off 2 11 2030 0.0 0.0 -fr 04_res 2 11 2030 0.0 0.0 -fr 05_nuclear 2 11 2030 0.0 0.0 -fr 06_coal 2 11 2030 0.0 0.0 -fr 07_gas 2 11 2030 0.0 0.0 -fr 08_non-res 2 11 2030 0.0 0.0 -fr 09_hydro_pump 2 11 2030 0.0 0.0 -fr 01_solar 2 12 2030 1.0 0.0 -fr 02_wind_on 2 12 2030 0.0 0.0 -fr 03_wind_off 2 12 2030 0.0 0.0 -fr 04_res 2 12 2030 0.0 0.0 -fr 05_nuclear 2 12 2030 0.0 0.0 -fr 06_coal 2 12 2030 0.0 0.0 -fr 07_gas 2 12 2030 0.0 0.0 -fr 08_non-res 2 12 2030 0.0 0.0 -fr 09_hydro_pump 2 12 2030 0.0 0.0 -fr 01_solar 2 13 2030 1.0 0.0 -fr 02_wind_on 2 13 2030 0.0 0.0 -fr 03_wind_off 2 13 2030 0.0 0.0 -fr 04_res 2 13 2030 0.0 0.0 -fr 05_nuclear 2 13 2030 0.0 0.0 -fr 06_coal 2 13 2030 0.0 0.0 -fr 07_gas 2 13 2030 0.0 0.0 -fr 08_non-res 2 13 2030 0.0 0.0 -fr 09_hydro_pump 2 13 2030 0.0 0.0 -fr 01_solar 2 14 2030 1.0 0.0 -fr 02_wind_on 2 14 2030 0.0 0.0 -fr 03_wind_off 2 14 2030 0.0 0.0 -fr 04_res 2 14 2030 0.0 0.0 -fr 05_nuclear 2 14 2030 0.0 0.0 -fr 06_coal 2 14 2030 0.0 0.0 -fr 07_gas 2 14 2030 0.0 0.0 -fr 08_non-res 2 14 2030 0.0 0.0 -fr 09_hydro_pump 2 14 2030 0.0 0.0 -fr 01_solar 2 15 2030 1.0 0.0 -fr 02_wind_on 2 15 2030 0.0 0.0 -fr 03_wind_off 2 15 2030 0.0 0.0 -fr 04_res 2 15 2030 0.0 0.0 -fr 05_nuclear 2 15 2030 0.0 0.0 -fr 06_coal 2 15 2030 0.0 0.0 -fr 07_gas 2 15 2030 0.0 0.0 -fr 08_non-res 2 15 2030 0.0 0.0 -fr 09_hydro_pump 2 15 2030 0.0 0.0 -fr 01_solar 2 16 2030 1.0 0.0 -fr 02_wind_on 2 16 2030 0.0 0.0 -fr 03_wind_off 2 16 2030 0.0 0.0 -fr 04_res 2 16 2030 0.0 0.0 -fr 05_nuclear 2 16 2030 0.0 0.0 -fr 06_coal 2 16 2030 0.0 0.0 -fr 07_gas 2 16 2030 0.0 0.0 -fr 08_non-res 2 16 2030 0.0 0.0 -fr 09_hydro_pump 2 16 2030 0.0 0.0 -fr 01_solar 2 17 2030 1.0 0.0 -fr 02_wind_on 2 17 2030 0.0 0.0 -fr 03_wind_off 2 17 2030 0.0 0.0 -fr 04_res 2 17 2030 0.0 0.0 -fr 05_nuclear 2 17 2030 0.0 0.0 -fr 06_coal 2 17 2030 0.0 0.0 -fr 07_gas 2 17 2030 0.0 0.0 -fr 08_non-res 2 17 2030 0.0 0.0 -fr 09_hydro_pump 2 17 2030 0.0 0.0 -fr 01_solar 2 18 2030 1.0 0.0 -fr 02_wind_on 2 18 2030 0.0 0.0 -fr 03_wind_off 2 18 2030 0.0 0.0 -fr 04_res 2 18 2030 0.0 0.0 -fr 05_nuclear 2 18 2030 0.0 0.0 -fr 06_coal 2 18 2030 0.0 0.0 -fr 07_gas 2 18 2030 0.0 0.0 -fr 08_non-res 2 18 2030 0.0 0.0 -fr 09_hydro_pump 2 18 2030 0.0 0.0 -fr 01_solar 2 19 2030 1.0 0.0 -fr 02_wind_on 2 19 2030 0.0 0.0 -fr 03_wind_off 2 19 2030 0.0 0.0 -fr 04_res 2 19 2030 0.0 0.0 -fr 05_nuclear 2 19 2030 0.0 0.0 -fr 06_coal 2 19 2030 0.0 0.0 -fr 07_gas 2 19 2030 0.0 0.0 -fr 08_non-res 2 19 2030 0.0 0.0 -fr 09_hydro_pump 2 19 2030 0.0 0.0 -fr 01_solar 2 20 2030 1.0 0.0 -fr 02_wind_on 2 20 2030 0.0 0.0 -fr 03_wind_off 2 20 2030 0.0 0.0 -fr 04_res 2 20 2030 0.0 0.0 -fr 05_nuclear 2 20 2030 0.0 0.0 -fr 06_coal 2 20 2030 0.0 0.0 -fr 07_gas 2 20 2030 0.0 0.0 -fr 08_non-res 2 20 2030 0.0 0.0 -fr 09_hydro_pump 2 20 2030 0.0 0.0 -fr 01_solar 2 21 2030 1.0 0.0 -fr 02_wind_on 2 21 2030 0.0 0.0 -fr 03_wind_off 2 21 2030 0.0 0.0 -fr 04_res 2 21 2030 0.0 0.0 -fr 05_nuclear 2 21 2030 0.0 0.0 -fr 06_coal 2 21 2030 0.0 0.0 -fr 07_gas 2 21 2030 0.0 0.0 -fr 08_non-res 2 21 2030 0.0 0.0 -fr 09_hydro_pump 2 21 2030 0.0 0.0 -fr 01_solar 2 22 2030 1.0 0.0 -fr 02_wind_on 2 22 2030 1.0 0.0 -fr 03_wind_off 2 22 2030 0.0 0.0 -fr 04_res 2 22 2030 0.0 0.0 -fr 05_nuclear 2 22 2030 0.0 0.0 -fr 06_coal 2 22 2030 0.0 0.0 -fr 07_gas 2 22 2030 0.0 0.0 -fr 08_non-res 2 22 2030 0.0 0.0 -fr 09_hydro_pump 2 22 2030 0.0 0.0 -fr 01_solar 2 23 2030 1.0 0.0 -fr 02_wind_on 2 23 2030 1.0 0.0 -fr 03_wind_off 2 23 2030 0.0 0.0 -fr 04_res 2 23 2030 0.0 0.0 -fr 05_nuclear 2 23 2030 0.0 0.0 -fr 06_coal 2 23 2030 0.0 0.0 -fr 07_gas 2 23 2030 0.0 0.0 -fr 08_non-res 2 23 2030 0.0 0.0 -fr 09_hydro_pump 2 23 2030 0.0 0.0 -fr 01_solar 2 24 2030 1.0 0.0 -fr 02_wind_on 2 24 2030 1.0 0.0 -fr 03_wind_off 2 24 2030 0.0 0.0 -fr 04_res 2 24 2030 0.0 0.0 -fr 05_nuclear 2 24 2030 0.0 0.0 -fr 06_coal 2 24 2030 0.0 0.0 -fr 07_gas 2 24 2030 0.0 0.0 -fr 08_non-res 2 24 2030 0.0 0.0 -fr 09_hydro_pump 2 24 2030 0.0 0.0 -fr 01_solar 2 25 2030 1.0 0.0 -fr 02_wind_on 2 25 2030 1.0 0.0 -fr 03_wind_off 2 25 2030 0.0 0.0 -fr 04_res 2 25 2030 0.0 0.0 -fr 05_nuclear 2 25 2030 0.0 0.0 -fr 06_coal 2 25 2030 0.0 0.0 -fr 07_gas 2 25 2030 0.0 0.0 -fr 08_non-res 2 25 2030 0.0 0.0 -fr 09_hydro_pump 2 25 2030 0.0 0.0 -fr 01_solar 2 26 2030 1.0 0.0 -fr 02_wind_on 2 26 2030 1.0 0.0 -fr 03_wind_off 2 26 2030 0.0 0.0 -fr 04_res 2 26 2030 0.0 0.0 -fr 05_nuclear 2 26 2030 0.0 0.0 -fr 06_coal 2 26 2030 0.0 0.0 -fr 07_gas 2 26 2030 0.0 0.0 -fr 08_non-res 2 26 2030 0.0 0.0 -fr 09_hydro_pump 2 26 2030 0.0 0.0 -fr 01_solar 2 27 2030 1.0 0.0 -fr 02_wind_on 2 27 2030 1.0 0.0 -fr 03_wind_off 2 27 2030 0.0 0.0 -fr 04_res 2 27 2030 0.0 0.0 -fr 05_nuclear 2 27 2030 0.0 0.0 -fr 06_coal 2 27 2030 0.0 0.0 -fr 07_gas 2 27 2030 0.0 0.0 -fr 08_non-res 2 27 2030 0.0 0.0 -fr 09_hydro_pump 2 27 2030 0.0 0.0 -fr 01_solar 2 28 2030 1.0 0.0 -fr 02_wind_on 2 28 2030 1.0 0.0 -fr 03_wind_off 2 28 2030 0.0 0.0 -fr 04_res 2 28 2030 0.0 0.0 -fr 05_nuclear 2 28 2030 0.0 0.0 -fr 06_coal 2 28 2030 0.0 0.0 -fr 07_gas 2 28 2030 0.0 0.0 -fr 08_non-res 2 28 2030 0.0 0.0 -fr 09_hydro_pump 2 28 2030 0.0 0.0 -fr 01_solar 2 29 2030 1.0 0.0 -fr 02_wind_on 2 29 2030 1.0 0.0 -fr 03_wind_off 2 29 2030 0.0 0.0 -fr 04_res 2 29 2030 0.0 0.0 -fr 05_nuclear 2 29 2030 0.0 0.0 -fr 06_coal 2 29 2030 0.0 0.0 -fr 07_gas 2 29 2030 0.0 0.0 -fr 08_non-res 2 29 2030 0.0 0.0 -fr 09_hydro_pump 2 29 2030 0.0 0.0 -fr 01_solar 2 30 2030 1.0 0.0 -fr 02_wind_on 2 30 2030 1.0 0.0 -fr 03_wind_off 2 30 2030 0.0 0.0 -fr 04_res 2 30 2030 0.0 0.0 -fr 05_nuclear 2 30 2030 0.0 0.0 -fr 06_coal 2 30 2030 0.0 0.0 -fr 07_gas 2 30 2030 0.0 0.0 -fr 08_non-res 2 30 2030 0.0 0.0 -fr 09_hydro_pump 2 30 2030 0.0 0.0 -fr 01_solar 2 31 2030 1.0 0.0 -fr 02_wind_on 2 31 2030 1.0 0.0 -fr 03_wind_off 2 31 2030 0.0 0.0 -fr 04_res 2 31 2030 0.0 0.0 -fr 05_nuclear 2 31 2030 0.0 0.0 -fr 06_coal 2 31 2030 0.0 0.0 -fr 07_gas 2 31 2030 0.0 0.0 -fr 08_non-res 2 31 2030 0.0 0.0 -fr 09_hydro_pump 2 31 2030 0.0 0.0 -fr 01_solar 2 32 2030 1.0 0.0 -fr 02_wind_on 2 32 2030 1.0 0.0 -fr 03_wind_off 2 32 2030 0.0 0.0 -fr 04_res 2 32 2030 0.0 0.0 -fr 05_nuclear 2 32 2030 0.0 0.0 -fr 06_coal 2 32 2030 0.0 0.0 -fr 07_gas 2 32 2030 0.0 0.0 -fr 08_non-res 2 32 2030 0.0 0.0 -fr 09_hydro_pump 2 32 2030 0.0 0.0 -fr 01_solar 2 33 2030 1.0 0.0 -fr 02_wind_on 2 33 2030 1.0 0.0 -fr 03_wind_off 2 33 2030 0.0 0.0 -fr 04_res 2 33 2030 0.0 0.0 -fr 05_nuclear 2 33 2030 0.0 0.0 -fr 06_coal 2 33 2030 0.0 0.0 -fr 07_gas 2 33 2030 0.0 0.0 -fr 08_non-res 2 33 2030 0.0 0.0 -fr 09_hydro_pump 2 33 2030 0.0 0.0 -fr 01_solar 2 34 2030 1.0 0.0 -fr 02_wind_on 2 34 2030 1.0 0.0 -fr 03_wind_off 2 34 2030 0.0 0.0 -fr 04_res 2 34 2030 0.0 0.0 -fr 05_nuclear 2 34 2030 0.0 0.0 -fr 06_coal 2 34 2030 0.0 0.0 -fr 07_gas 2 34 2030 0.0 0.0 -fr 08_non-res 2 34 2030 0.0 0.0 -fr 09_hydro_pump 2 34 2030 0.0 0.0 -fr 01_solar 2 35 2030 1.0 0.0 -fr 02_wind_on 2 35 2030 1.0 0.0 -fr 03_wind_off 2 35 2030 0.0 0.0 -fr 04_res 2 35 2030 0.0 0.0 -fr 05_nuclear 2 35 2030 0.0 0.0 -fr 06_coal 2 35 2030 0.0 0.0 -fr 07_gas 2 35 2030 0.0 0.0 -fr 08_non-res 2 35 2030 0.0 0.0 -fr 09_hydro_pump 2 35 2030 0.0 0.0 -fr 01_solar 2 36 2030 1.0 0.0 -fr 02_wind_on 2 36 2030 1.0 0.0 -fr 03_wind_off 2 36 2030 0.0 0.0 -fr 04_res 2 36 2030 0.0 0.0 -fr 05_nuclear 2 36 2030 0.0 0.0 -fr 06_coal 2 36 2030 0.0 0.0 -fr 07_gas 2 36 2030 0.0 0.0 -fr 08_non-res 2 36 2030 0.0 0.0 -fr 09_hydro_pump 2 36 2030 0.0 0.0 -fr 01_solar 2 37 2030 1.0 0.0 -fr 02_wind_on 2 37 2030 1.0 0.0 -fr 03_wind_off 2 37 2030 0.0 0.0 -fr 04_res 2 37 2030 0.0 0.0 -fr 05_nuclear 2 37 2030 0.0 0.0 -fr 06_coal 2 37 2030 0.0 0.0 -fr 07_gas 2 37 2030 0.0 0.0 -fr 08_non-res 2 37 2030 0.0 0.0 -fr 09_hydro_pump 2 37 2030 0.0 0.0 -fr 01_solar 2 38 2030 1.0 0.0 -fr 02_wind_on 2 38 2030 1.0 0.0 -fr 03_wind_off 2 38 2030 0.0 0.0 -fr 04_res 2 38 2030 0.0 0.0 -fr 05_nuclear 2 38 2030 0.0 0.0 -fr 06_coal 2 38 2030 0.0 0.0 -fr 07_gas 2 38 2030 0.0 0.0 -fr 08_non-res 2 38 2030 0.0 0.0 -fr 09_hydro_pump 2 38 2030 0.0 0.0 -fr 01_solar 2 39 2030 1.0 0.0 -fr 02_wind_on 2 39 2030 1.0 0.0 -fr 03_wind_off 2 39 2030 0.0 0.0 -fr 04_res 2 39 2030 0.0 0.0 -fr 05_nuclear 2 39 2030 0.0 0.0 -fr 06_coal 2 39 2030 0.0 0.0 -fr 07_gas 2 39 2030 0.0 0.0 -fr 08_non-res 2 39 2030 0.0 0.0 -fr 09_hydro_pump 2 39 2030 0.0 0.0 -fr 01_solar 2 40 2030 1.0 0.0 -fr 02_wind_on 2 40 2030 1.0 0.0 -fr 03_wind_off 2 40 2030 0.0 0.0 -fr 04_res 2 40 2030 0.0 0.0 -fr 05_nuclear 2 40 2030 0.0 0.0 -fr 06_coal 2 40 2030 0.0 0.0 -fr 07_gas 2 40 2030 0.0 0.0 -fr 08_non-res 2 40 2030 0.0 0.0 -fr 09_hydro_pump 2 40 2030 0.0 0.0 -fr 01_solar 2 41 2030 1.0 0.0 -fr 02_wind_on 2 41 2030 1.0 0.0 -fr 03_wind_off 2 41 2030 0.0 0.0 -fr 04_res 2 41 2030 0.0 0.0 -fr 05_nuclear 2 41 2030 0.0 0.0 -fr 06_coal 2 41 2030 0.0 0.0 -fr 07_gas 2 41 2030 0.0 0.0 -fr 08_non-res 2 41 2030 0.0 0.0 -fr 09_hydro_pump 2 41 2030 0.0 0.0 -fr 01_solar 2 42 2030 1.0 0.0 -fr 02_wind_on 2 42 2030 1.0 0.0 -fr 03_wind_off 2 42 2030 1.0 0.0 -fr 04_res 2 42 2030 0.0 0.0 -fr 05_nuclear 2 42 2030 0.0 0.0 -fr 06_coal 2 42 2030 0.0 0.0 -fr 07_gas 2 42 2030 0.0 0.0 -fr 08_non-res 2 42 2030 0.0 0.0 -fr 09_hydro_pump 2 42 2030 0.0 0.0 -fr 01_solar 2 43 2030 1.0 0.0 -fr 02_wind_on 2 43 2030 1.0 0.0 -fr 03_wind_off 2 43 2030 1.0 0.0 -fr 04_res 2 43 2030 0.0 0.0 -fr 05_nuclear 2 43 2030 0.0 0.0 -fr 06_coal 2 43 2030 0.0 0.0 -fr 07_gas 2 43 2030 0.0 0.0 -fr 08_non-res 2 43 2030 0.0 0.0 -fr 09_hydro_pump 2 43 2030 0.0 0.0 -fr 01_solar 2 44 2030 1.0 0.0 -fr 02_wind_on 2 44 2030 1.0 0.0 -fr 03_wind_off 2 44 2030 1.0 0.0 -fr 04_res 2 44 2030 0.0 0.0 -fr 05_nuclear 2 44 2030 0.0 0.0 -fr 06_coal 2 44 2030 0.0 0.0 -fr 07_gas 2 44 2030 0.0 0.0 -fr 08_non-res 2 44 2030 0.0 0.0 -fr 09_hydro_pump 2 44 2030 0.0 0.0 -fr 01_solar 2 45 2030 1.0 0.0 -fr 02_wind_on 2 45 2030 1.0 0.0 -fr 03_wind_off 2 45 2030 1.0 0.0 -fr 04_res 2 45 2030 0.0 0.0 -fr 05_nuclear 2 45 2030 0.0 0.0 -fr 06_coal 2 45 2030 0.0 0.0 -fr 07_gas 2 45 2030 0.0 0.0 -fr 08_non-res 2 45 2030 0.0 0.0 -fr 09_hydro_pump 2 45 2030 0.0 0.0 -fr 01_solar 2 46 2030 1.0 0.0 -fr 02_wind_on 2 46 2030 1.0 0.0 -fr 03_wind_off 2 46 2030 1.0 0.0 -fr 04_res 2 46 2030 0.0 0.0 -fr 05_nuclear 2 46 2030 0.0 0.0 -fr 06_coal 2 46 2030 0.0 0.0 -fr 07_gas 2 46 2030 0.0 0.0 -fr 08_non-res 2 46 2030 0.0 0.0 -fr 09_hydro_pump 2 46 2030 0.0 0.0 -fr 01_solar 2 47 2030 1.0 0.0 -fr 02_wind_on 2 47 2030 1.0 0.0 -fr 03_wind_off 2 47 2030 1.0 0.0 -fr 04_res 2 47 2030 0.0 0.0 -fr 05_nuclear 2 47 2030 0.0 0.0 -fr 06_coal 2 47 2030 0.0 0.0 -fr 07_gas 2 47 2030 0.0 0.0 -fr 08_non-res 2 47 2030 0.0 0.0 -fr 09_hydro_pump 2 47 2030 0.0 0.0 -fr 01_solar 2 48 2030 1.0 0.0 -fr 02_wind_on 2 48 2030 1.0 0.0 -fr 03_wind_off 2 48 2030 1.0 0.0 -fr 04_res 2 48 2030 0.0 0.0 -fr 05_nuclear 2 48 2030 0.0 0.0 -fr 06_coal 2 48 2030 0.0 0.0 -fr 07_gas 2 48 2030 0.0 0.0 -fr 08_non-res 2 48 2030 0.0 0.0 -fr 09_hydro_pump 2 48 2030 0.0 0.0 -fr 01_solar 2 49 2030 1.0 0.0 -fr 02_wind_on 2 49 2030 1.0 0.0 -fr 03_wind_off 2 49 2030 1.0 0.0 -fr 04_res 2 49 2030 0.0 0.0 -fr 05_nuclear 2 49 2030 0.0 0.0 -fr 06_coal 2 49 2030 0.0 0.0 -fr 07_gas 2 49 2030 0.0 0.0 -fr 08_non-res 2 49 2030 0.0 0.0 -fr 09_hydro_pump 2 49 2030 0.0 0.0 -fr 01_solar 2 50 2030 1.0 0.0 -fr 02_wind_on 2 50 2030 1.0 0.0 -fr 03_wind_off 2 50 2030 1.0 0.0 -fr 04_res 2 50 2030 0.0 0.0 -fr 05_nuclear 2 50 2030 0.0 0.0 -fr 06_coal 2 50 2030 0.0 0.0 -fr 07_gas 2 50 2030 0.0 0.0 -fr 08_non-res 2 50 2030 0.0 0.0 -fr 09_hydro_pump 2 50 2030 0.0 0.0 -fr 01_solar 2 51 2030 1.0 0.0 -fr 02_wind_on 2 51 2030 1.0 0.0 -fr 03_wind_off 2 51 2030 1.0 0.0 -fr 04_res 2 51 2030 0.0 0.0 -fr 05_nuclear 2 51 2030 0.0 0.0 -fr 06_coal 2 51 2030 0.0 0.0 -fr 07_gas 2 51 2030 0.0 0.0 -fr 08_non-res 2 51 2030 0.0 0.0 -fr 09_hydro_pump 2 51 2030 0.0 0.0 -fr 01_solar 2 52 2030 1.0 0.0 -fr 02_wind_on 2 52 2030 1.0 0.0 -fr 03_wind_off 2 52 2030 1.0 0.0 -fr 04_res 2 52 2030 0.0 0.0 -fr 05_nuclear 2 52 2030 0.0 0.0 -fr 06_coal 2 52 2030 0.0 0.0 -fr 07_gas 2 52 2030 0.0 0.0 -fr 08_non-res 2 52 2030 0.0 0.0 -fr 09_hydro_pump 2 52 2030 0.0 0.0 -fr 01_solar 2 53 2030 1.0 0.0 -fr 02_wind_on 2 53 2030 1.0 0.0 -fr 03_wind_off 2 53 2030 1.0 0.0 -fr 04_res 2 53 2030 0.0 0.0 -fr 05_nuclear 2 53 2030 0.0 0.0 -fr 06_coal 2 53 2030 0.0 0.0 -fr 07_gas 2 53 2030 0.0 0.0 -fr 08_non-res 2 53 2030 0.0 0.0 -fr 09_hydro_pump 2 53 2030 0.0 0.0 -fr 01_solar 2 54 2030 1.0 0.0 -fr 02_wind_on 2 54 2030 1.0 0.0 -fr 03_wind_off 2 54 2030 1.0 0.0 -fr 04_res 2 54 2030 0.0 0.0 -fr 05_nuclear 2 54 2030 0.0 0.0 -fr 06_coal 2 54 2030 0.0 0.0 -fr 07_gas 2 54 2030 0.0 0.0 -fr 08_non-res 2 54 2030 0.0 0.0 -fr 09_hydro_pump 2 54 2030 0.0 0.0 -fr 01_solar 2 55 2030 1.0 0.0 -fr 02_wind_on 2 55 2030 1.0 0.0 -fr 03_wind_off 2 55 2030 1.0 0.0 -fr 04_res 2 55 2030 0.0 0.0 -fr 05_nuclear 2 55 2030 0.0 0.0 -fr 06_coal 2 55 2030 0.0 0.0 -fr 07_gas 2 55 2030 0.0 0.0 -fr 08_non-res 2 55 2030 0.0 0.0 -fr 09_hydro_pump 2 55 2030 0.0 0.0 -fr 01_solar 2 56 2030 1.0 0.0 -fr 02_wind_on 2 56 2030 1.0 0.0 -fr 03_wind_off 2 56 2030 1.0 0.0 -fr 04_res 2 56 2030 0.0 0.0 -fr 05_nuclear 2 56 2030 0.0 0.0 -fr 06_coal 2 56 2030 0.0 0.0 -fr 07_gas 2 56 2030 0.0 0.0 -fr 08_non-res 2 56 2030 0.0 0.0 -fr 09_hydro_pump 2 56 2030 0.0 0.0 -fr 01_solar 2 57 2030 1.0 0.0 -fr 02_wind_on 2 57 2030 1.0 0.0 -fr 03_wind_off 2 57 2030 1.0 0.0 -fr 04_res 2 57 2030 0.0 0.0 -fr 05_nuclear 2 57 2030 0.0 0.0 -fr 06_coal 2 57 2030 0.0 0.0 -fr 07_gas 2 57 2030 0.0 0.0 -fr 08_non-res 2 57 2030 0.0 0.0 -fr 09_hydro_pump 2 57 2030 0.0 0.0 -fr 01_solar 2 58 2030 1.0 0.0 -fr 02_wind_on 2 58 2030 1.0 0.0 -fr 03_wind_off 2 58 2030 1.0 0.0 -fr 04_res 2 58 2030 0.0 0.0 -fr 05_nuclear 2 58 2030 0.0 0.0 -fr 06_coal 2 58 2030 0.0 0.0 -fr 07_gas 2 58 2030 0.0 0.0 -fr 08_non-res 2 58 2030 0.0 0.0 -fr 09_hydro_pump 2 58 2030 0.0 0.0 -fr 01_solar 2 59 2030 1.0 0.0 -fr 02_wind_on 2 59 2030 1.0 0.0 -fr 03_wind_off 2 59 2030 1.0 0.0 -fr 04_res 2 59 2030 0.0 0.0 -fr 05_nuclear 2 59 2030 0.0 0.0 -fr 06_coal 2 59 2030 0.0 0.0 -fr 07_gas 2 59 2030 0.0 0.0 -fr 08_non-res 2 59 2030 0.0 0.0 -fr 09_hydro_pump 2 59 2030 0.0 0.0 -fr 01_solar 2 60 2030 1.0 0.0 -fr 02_wind_on 2 60 2030 1.0 0.0 -fr 03_wind_off 2 60 2030 1.0 0.0 -fr 04_res 2 60 2030 0.0 0.0 -fr 05_nuclear 2 60 2030 0.0 0.0 -fr 06_coal 2 60 2030 0.0 0.0 -fr 07_gas 2 60 2030 0.0 0.0 -fr 08_non-res 2 60 2030 0.0 0.0 -fr 09_hydro_pump 2 60 2030 0.0 0.0 -fr 01_solar 2 61 2030 1.0 0.0 -fr 02_wind_on 2 61 2030 1.0 0.0 -fr 03_wind_off 2 61 2030 1.0 0.0 -fr 04_res 2 61 2030 0.0 0.0 -fr 05_nuclear 2 61 2030 0.0 0.0 -fr 06_coal 2 61 2030 0.0 0.0 -fr 07_gas 2 61 2030 0.0 0.0 -fr 08_non-res 2 61 2030 0.0 0.0 -fr 09_hydro_pump 2 61 2030 0.0 0.0 -fr 01_solar 2 62 2030 1.0 0.0 -fr 02_wind_on 2 62 2030 1.0 0.0 -fr 03_wind_off 2 62 2030 1.0 0.0 -fr 04_res 2 62 2030 1.0 0.0 -fr 05_nuclear 2 62 2030 0.0 0.0 -fr 06_coal 2 62 2030 0.0 0.0 -fr 07_gas 2 62 2030 0.0 0.0 -fr 08_non-res 2 62 2030 0.0 0.0 -fr 09_hydro_pump 2 62 2030 0.0 0.0 -fr 01_solar 2 63 2030 1.0 0.0 -fr 02_wind_on 2 63 2030 1.0 0.0 -fr 03_wind_off 2 63 2030 1.0 0.0 -fr 04_res 2 63 2030 1.0 0.0 -fr 05_nuclear 2 63 2030 0.0 0.0 -fr 06_coal 2 63 2030 0.0 0.0 -fr 07_gas 2 63 2030 0.0 0.0 -fr 08_non-res 2 63 2030 0.0 0.0 -fr 09_hydro_pump 2 63 2030 0.0 0.0 -fr 01_solar 2 64 2030 1.0 0.0 -fr 02_wind_on 2 64 2030 1.0 0.0 -fr 03_wind_off 2 64 2030 1.0 0.0 -fr 04_res 2 64 2030 1.0 0.0 -fr 05_nuclear 2 64 2030 0.0 0.0 -fr 06_coal 2 64 2030 0.0 0.0 -fr 07_gas 2 64 2030 0.0 0.0 -fr 08_non-res 2 64 2030 0.0 0.0 -fr 09_hydro_pump 2 64 2030 0.0 0.0 -fr 01_solar 2 65 2030 1.0 0.0 -fr 02_wind_on 2 65 2030 1.0 0.0 -fr 03_wind_off 2 65 2030 1.0 0.0 -fr 04_res 2 65 2030 1.0 0.0 -fr 05_nuclear 2 65 2030 0.0 0.0 -fr 06_coal 2 65 2030 0.0 0.0 -fr 07_gas 2 65 2030 0.0 0.0 -fr 08_non-res 2 65 2030 0.0 0.0 -fr 09_hydro_pump 2 65 2030 0.0 0.0 -fr 01_solar 2 66 2030 1.0 0.0 -fr 02_wind_on 2 66 2030 1.0 0.0 -fr 03_wind_off 2 66 2030 1.0 0.0 -fr 04_res 2 66 2030 1.0 0.0 -fr 05_nuclear 2 66 2030 0.0 0.0 -fr 06_coal 2 66 2030 0.0 0.0 -fr 07_gas 2 66 2030 0.0 0.0 -fr 08_non-res 2 66 2030 0.0 0.0 -fr 09_hydro_pump 2 66 2030 0.0 0.0 -fr 01_solar 2 67 2030 1.0 0.0 -fr 02_wind_on 2 67 2030 1.0 0.0 -fr 03_wind_off 2 67 2030 1.0 0.0 -fr 04_res 2 67 2030 1.0 0.0 -fr 05_nuclear 2 67 2030 0.0 0.0 -fr 06_coal 2 67 2030 0.0 0.0 -fr 07_gas 2 67 2030 0.0 0.0 -fr 08_non-res 2 67 2030 0.0 0.0 -fr 09_hydro_pump 2 67 2030 0.0 0.0 -fr 01_solar 2 68 2030 1.0 0.0 -fr 02_wind_on 2 68 2030 1.0 0.0 -fr 03_wind_off 2 68 2030 1.0 0.0 -fr 04_res 2 68 2030 1.0 0.0 -fr 05_nuclear 2 68 2030 0.0 0.0 -fr 06_coal 2 68 2030 0.0 0.0 -fr 07_gas 2 68 2030 0.0 0.0 -fr 08_non-res 2 68 2030 0.0 0.0 -fr 09_hydro_pump 2 68 2030 0.0 0.0 -fr 01_solar 2 69 2030 1.0 0.0 -fr 02_wind_on 2 69 2030 1.0 0.0 -fr 03_wind_off 2 69 2030 1.0 0.0 -fr 04_res 2 69 2030 1.0 0.0 -fr 05_nuclear 2 69 2030 0.0 0.0 -fr 06_coal 2 69 2030 0.0 0.0 -fr 07_gas 2 69 2030 0.0 0.0 -fr 08_non-res 2 69 2030 0.0 0.0 -fr 09_hydro_pump 2 69 2030 0.0 0.0 -fr 01_solar 2 70 2030 1.0 0.0 -fr 02_wind_on 2 70 2030 1.0 0.0 -fr 03_wind_off 2 70 2030 1.0 0.0 -fr 04_res 2 70 2030 1.0 0.0 -fr 05_nuclear 2 70 2030 0.0 0.0 -fr 06_coal 2 70 2030 0.0 0.0 -fr 07_gas 2 70 2030 0.0 0.0 -fr 08_non-res 2 70 2030 0.0 0.0 -fr 09_hydro_pump 2 70 2030 0.0 0.0 -fr 01_solar 2 71 2030 1.0 0.0 -fr 02_wind_on 2 71 2030 1.0 0.0 -fr 03_wind_off 2 71 2030 1.0 0.0 -fr 04_res 2 71 2030 1.0 0.0 -fr 05_nuclear 2 71 2030 0.0 0.0 -fr 06_coal 2 71 2030 0.0 0.0 -fr 07_gas 2 71 2030 0.0 0.0 -fr 08_non-res 2 71 2030 0.0 0.0 -fr 09_hydro_pump 2 71 2030 0.0 0.0 -fr 01_solar 2 72 2030 1.0 0.0 -fr 02_wind_on 2 72 2030 1.0 0.0 -fr 03_wind_off 2 72 2030 1.0 0.0 -fr 04_res 2 72 2030 1.0 0.0 -fr 05_nuclear 2 72 2030 0.0 0.0 -fr 06_coal 2 72 2030 0.0 0.0 -fr 07_gas 2 72 2030 0.0 0.0 -fr 08_non-res 2 72 2030 0.0 0.0 -fr 09_hydro_pump 2 72 2030 0.0 0.0 -fr 01_solar 2 73 2030 1.0 0.0 -fr 02_wind_on 2 73 2030 1.0 0.0 -fr 03_wind_off 2 73 2030 1.0 0.0 -fr 04_res 2 73 2030 1.0 0.0 -fr 05_nuclear 2 73 2030 0.0 0.0 -fr 06_coal 2 73 2030 0.0 0.0 -fr 07_gas 2 73 2030 0.0 0.0 -fr 08_non-res 2 73 2030 0.0 0.0 -fr 09_hydro_pump 2 73 2030 0.0 0.0 -fr 01_solar 2 74 2030 1.0 0.0 -fr 02_wind_on 2 74 2030 1.0 0.0 -fr 03_wind_off 2 74 2030 1.0 0.0 -fr 04_res 2 74 2030 1.0 0.0 -fr 05_nuclear 2 74 2030 0.0 0.0 -fr 06_coal 2 74 2030 0.0 0.0 -fr 07_gas 2 74 2030 0.0 0.0 -fr 08_non-res 2 74 2030 0.0 0.0 -fr 09_hydro_pump 2 74 2030 0.0 0.0 -fr 01_solar 2 75 2030 1.0 0.0 -fr 02_wind_on 2 75 2030 1.0 0.0 -fr 03_wind_off 2 75 2030 1.0 0.0 -fr 04_res 2 75 2030 1.0 0.0 -fr 05_nuclear 2 75 2030 0.0 0.0 -fr 06_coal 2 75 2030 0.0 0.0 -fr 07_gas 2 75 2030 0.0 0.0 -fr 08_non-res 2 75 2030 0.0 0.0 -fr 09_hydro_pump 2 75 2030 0.0 0.0 -fr 01_solar 2 76 2030 1.0 0.0 -fr 02_wind_on 2 76 2030 1.0 0.0 -fr 03_wind_off 2 76 2030 1.0 0.0 -fr 04_res 2 76 2030 1.0 0.0 -fr 05_nuclear 2 76 2030 0.0 0.0 -fr 06_coal 2 76 2030 0.0 0.0 -fr 07_gas 2 76 2030 0.0 0.0 -fr 08_non-res 2 76 2030 0.0 0.0 -fr 09_hydro_pump 2 76 2030 0.0 0.0 -fr 01_solar 2 77 2030 1.0 0.0 -fr 02_wind_on 2 77 2030 1.0 0.0 -fr 03_wind_off 2 77 2030 1.0 0.0 -fr 04_res 2 77 2030 1.0 0.0 -fr 05_nuclear 2 77 2030 0.0 0.0 -fr 06_coal 2 77 2030 0.0 0.0 -fr 07_gas 2 77 2030 0.0 0.0 -fr 08_non-res 2 77 2030 0.0 0.0 -fr 09_hydro_pump 2 77 2030 0.0 0.0 -fr 01_solar 2 78 2030 1.0 0.0 -fr 02_wind_on 2 78 2030 1.0 0.0 -fr 03_wind_off 2 78 2030 1.0 0.0 -fr 04_res 2 78 2030 1.0 0.0 -fr 05_nuclear 2 78 2030 0.0 0.0 -fr 06_coal 2 78 2030 0.0 0.0 -fr 07_gas 2 78 2030 0.0 0.0 -fr 08_non-res 2 78 2030 0.0 0.0 -fr 09_hydro_pump 2 78 2030 0.0 0.0 -fr 01_solar 2 79 2030 1.0 0.0 -fr 02_wind_on 2 79 2030 1.0 0.0 -fr 03_wind_off 2 79 2030 1.0 0.0 -fr 04_res 2 79 2030 1.0 0.0 -fr 05_nuclear 2 79 2030 0.0 0.0 -fr 06_coal 2 79 2030 0.0 0.0 -fr 07_gas 2 79 2030 0.0 0.0 -fr 08_non-res 2 79 2030 0.0 0.0 -fr 09_hydro_pump 2 79 2030 0.0 0.0 -fr 01_solar 2 80 2030 1.0 0.0 -fr 02_wind_on 2 80 2030 1.0 0.0 -fr 03_wind_off 2 80 2030 1.0 0.0 -fr 04_res 2 80 2030 1.0 0.0 -fr 05_nuclear 2 80 2030 0.0 0.0 -fr 06_coal 2 80 2030 0.0 0.0 -fr 07_gas 2 80 2030 0.0 0.0 -fr 08_non-res 2 80 2030 0.0 0.0 -fr 09_hydro_pump 2 80 2030 0.0 0.0 -fr 01_solar 2 81 2030 1.0 0.0 -fr 02_wind_on 2 81 2030 1.0 0.0 -fr 03_wind_off 2 81 2030 1.0 0.0 -fr 04_res 2 81 2030 1.0 0.0 -fr 05_nuclear 2 81 2030 0.0 0.0 -fr 06_coal 2 81 2030 0.0 0.0 -fr 07_gas 2 81 2030 0.0 0.0 -fr 08_non-res 2 81 2030 0.0 0.0 -fr 09_hydro_pump 2 81 2030 0.0 0.0 -fr 01_solar 2 82 2030 1.0 0.0 -fr 02_wind_on 2 82 2030 1.0 0.0 -fr 03_wind_off 2 82 2030 1.0 0.0 -fr 04_res 2 82 2030 1.0 0.0 -fr 05_nuclear 2 82 2030 1.0 0.0 -fr 06_coal 2 82 2030 0.0 0.0 -fr 07_gas 2 82 2030 0.0 0.0 -fr 08_non-res 2 82 2030 0.0 0.0 -fr 09_hydro_pump 2 82 2030 0.0 0.0 -fr 01_solar 2 83 2030 1.0 0.0 -fr 02_wind_on 2 83 2030 1.0 0.0 -fr 03_wind_off 2 83 2030 1.0 0.0 -fr 04_res 2 83 2030 1.0 0.0 -fr 05_nuclear 2 83 2030 1.0 0.0 -fr 06_coal 2 83 2030 0.0 0.0 -fr 07_gas 2 83 2030 0.0 0.0 -fr 08_non-res 2 83 2030 0.0 0.0 -fr 09_hydro_pump 2 83 2030 0.0 0.0 -fr 01_solar 2 84 2030 1.0 0.0 -fr 02_wind_on 2 84 2030 1.0 0.0 -fr 03_wind_off 2 84 2030 1.0 0.0 -fr 04_res 2 84 2030 1.0 0.0 -fr 05_nuclear 2 84 2030 1.0 0.0 -fr 06_coal 2 84 2030 0.0 0.0 -fr 07_gas 2 84 2030 0.0 0.0 -fr 08_non-res 2 84 2030 0.0 0.0 -fr 09_hydro_pump 2 84 2030 0.0 0.0 -fr 01_solar 2 85 2030 1.0 0.0 -fr 02_wind_on 2 85 2030 1.0 0.0 -fr 03_wind_off 2 85 2030 1.0 0.0 -fr 04_res 2 85 2030 1.0 0.0 -fr 05_nuclear 2 85 2030 1.0 0.0 -fr 06_coal 2 85 2030 0.0 0.0 -fr 07_gas 2 85 2030 0.0 0.0 -fr 08_non-res 2 85 2030 0.0 0.0 -fr 09_hydro_pump 2 85 2030 0.0 0.0 -fr 01_solar 2 86 2030 1.0 0.0 -fr 02_wind_on 2 86 2030 1.0 0.0 -fr 03_wind_off 2 86 2030 1.0 0.0 -fr 04_res 2 86 2030 1.0 0.0 -fr 05_nuclear 2 86 2030 1.0 0.0 -fr 06_coal 2 86 2030 0.0 0.0 -fr 07_gas 2 86 2030 0.0 0.0 -fr 08_non-res 2 86 2030 0.0 0.0 -fr 09_hydro_pump 2 86 2030 0.0 0.0 -fr 01_solar 2 87 2030 1.0 0.0 -fr 02_wind_on 2 87 2030 1.0 0.0 -fr 03_wind_off 2 87 2030 1.0 0.0 -fr 04_res 2 87 2030 1.0 0.0 -fr 05_nuclear 2 87 2030 1.0 0.0 -fr 06_coal 2 87 2030 0.0 0.0 -fr 07_gas 2 87 2030 0.0 0.0 -fr 08_non-res 2 87 2030 0.0 0.0 -fr 09_hydro_pump 2 87 2030 0.0 0.0 -fr 01_solar 2 88 2030 1.0 0.0 -fr 02_wind_on 2 88 2030 1.0 0.0 -fr 03_wind_off 2 88 2030 1.0 0.0 -fr 04_res 2 88 2030 1.0 0.0 -fr 05_nuclear 2 88 2030 1.0 0.0 -fr 06_coal 2 88 2030 0.0 0.0 -fr 07_gas 2 88 2030 0.0 0.0 -fr 08_non-res 2 88 2030 0.0 0.0 -fr 09_hydro_pump 2 88 2030 0.0 0.0 -fr 01_solar 2 89 2030 1.0 0.0 -fr 02_wind_on 2 89 2030 1.0 0.0 -fr 03_wind_off 2 89 2030 1.0 0.0 -fr 04_res 2 89 2030 1.0 0.0 -fr 05_nuclear 2 89 2030 1.0 0.0 -fr 06_coal 2 89 2030 0.0 0.0 -fr 07_gas 2 89 2030 0.0 0.0 -fr 08_non-res 2 89 2030 0.0 0.0 -fr 09_hydro_pump 2 89 2030 0.0 0.0 -fr 01_solar 2 90 2030 1.0 0.0 -fr 02_wind_on 2 90 2030 1.0 0.0 -fr 03_wind_off 2 90 2030 1.0 0.0 -fr 04_res 2 90 2030 1.0 0.0 -fr 05_nuclear 2 90 2030 1.0 0.0 -fr 06_coal 2 90 2030 0.0 0.0 -fr 07_gas 2 90 2030 0.0 0.0 -fr 08_non-res 2 90 2030 0.0 0.0 -fr 09_hydro_pump 2 90 2030 0.0 0.0 -fr 01_solar 2 91 2030 1.0 0.0 -fr 02_wind_on 2 91 2030 1.0 0.0 -fr 03_wind_off 2 91 2030 1.0 0.0 -fr 04_res 2 91 2030 1.0 0.0 -fr 05_nuclear 2 91 2030 1.0 0.0 -fr 06_coal 2 91 2030 0.0 0.0 -fr 07_gas 2 91 2030 0.0 0.0 -fr 08_non-res 2 91 2030 0.0 0.0 -fr 09_hydro_pump 2 91 2030 0.0 0.0 -fr 01_solar 2 92 2030 1.0 0.0 -fr 02_wind_on 2 92 2030 1.0 0.0 -fr 03_wind_off 2 92 2030 1.0 0.0 -fr 04_res 2 92 2030 1.0 0.0 -fr 05_nuclear 2 92 2030 1.0 0.0 -fr 06_coal 2 92 2030 0.0 0.0 -fr 07_gas 2 92 2030 0.0 0.0 -fr 08_non-res 2 92 2030 0.0 0.0 -fr 09_hydro_pump 2 92 2030 0.0 0.0 -fr 01_solar 2 93 2030 1.0 0.0 -fr 02_wind_on 2 93 2030 1.0 0.0 -fr 03_wind_off 2 93 2030 1.0 0.0 -fr 04_res 2 93 2030 1.0 0.0 -fr 05_nuclear 2 93 2030 1.0 0.0 -fr 06_coal 2 93 2030 0.0 0.0 -fr 07_gas 2 93 2030 0.0 0.0 -fr 08_non-res 2 93 2030 0.0 0.0 -fr 09_hydro_pump 2 93 2030 0.0 0.0 -fr 01_solar 2 94 2030 1.0 0.0 -fr 02_wind_on 2 94 2030 1.0 0.0 -fr 03_wind_off 2 94 2030 1.0 0.0 -fr 04_res 2 94 2030 1.0 0.0 -fr 05_nuclear 2 94 2030 1.0 0.0 -fr 06_coal 2 94 2030 0.0 0.0 -fr 07_gas 2 94 2030 0.0 0.0 -fr 08_non-res 2 94 2030 0.0 0.0 -fr 09_hydro_pump 2 94 2030 0.0 0.0 -fr 01_solar 2 95 2030 1.0 0.0 -fr 02_wind_on 2 95 2030 1.0 0.0 -fr 03_wind_off 2 95 2030 1.0 0.0 -fr 04_res 2 95 2030 1.0 0.0 -fr 05_nuclear 2 95 2030 1.0 0.0 -fr 06_coal 2 95 2030 0.0 0.0 -fr 07_gas 2 95 2030 0.0 0.0 -fr 08_non-res 2 95 2030 0.0 0.0 -fr 09_hydro_pump 2 95 2030 0.0 0.0 -fr 01_solar 2 96 2030 1.0 0.0 -fr 02_wind_on 2 96 2030 1.0 0.0 -fr 03_wind_off 2 96 2030 1.0 0.0 -fr 04_res 2 96 2030 1.0 0.0 -fr 05_nuclear 2 96 2030 1.0 0.0 -fr 06_coal 2 96 2030 0.0 0.0 -fr 07_gas 2 96 2030 0.0 0.0 -fr 08_non-res 2 96 2030 0.0 0.0 -fr 09_hydro_pump 2 96 2030 0.0 0.0 -fr 01_solar 2 97 2030 1.0 0.0 -fr 02_wind_on 2 97 2030 1.0 0.0 -fr 03_wind_off 2 97 2030 1.0 0.0 -fr 04_res 2 97 2030 1.0 0.0 -fr 05_nuclear 2 97 2030 1.0 0.0 -fr 06_coal 2 97 2030 0.0 0.0 -fr 07_gas 2 97 2030 0.0 0.0 -fr 08_non-res 2 97 2030 0.0 0.0 -fr 09_hydro_pump 2 97 2030 0.0 0.0 -fr 01_solar 2 98 2030 1.0 0.0 -fr 02_wind_on 2 98 2030 1.0 0.0 -fr 03_wind_off 2 98 2030 1.0 0.0 -fr 04_res 2 98 2030 1.0 0.0 -fr 05_nuclear 2 98 2030 1.0 0.0 -fr 06_coal 2 98 2030 0.0 0.0 -fr 07_gas 2 98 2030 0.0 0.0 -fr 08_non-res 2 98 2030 0.0 0.0 -fr 09_hydro_pump 2 98 2030 0.0 0.0 -fr 01_solar 2 99 2030 1.0 0.0 -fr 02_wind_on 2 99 2030 1.0 0.0 -fr 03_wind_off 2 99 2030 1.0 0.0 -fr 04_res 2 99 2030 1.0 0.0 -fr 05_nuclear 2 99 2030 1.0 0.0 -fr 06_coal 2 99 2030 0.0 0.0 -fr 07_gas 2 99 2030 0.0 0.0 -fr 08_non-res 2 99 2030 0.0 0.0 -fr 09_hydro_pump 2 99 2030 0.0 0.0 -fr 01_solar 2 100 2030 1.0 0.0 -fr 02_wind_on 2 100 2030 1.0 0.0 -fr 03_wind_off 2 100 2030 1.0 0.0 -fr 04_res 2 100 2030 1.0 0.0 -fr 05_nuclear 2 100 2030 1.0 0.0 -fr 06_coal 2 100 2030 0.0 0.0 -fr 07_gas 2 100 2030 0.0 0.0 -fr 08_non-res 2 100 2030 0.0 0.0 -fr 09_hydro_pump 2 100 2030 0.0 0.0 -fr 01_solar 2 101 2030 1.0 0.0 -fr 02_wind_on 2 101 2030 1.0 0.0 -fr 03_wind_off 2 101 2030 1.0 0.0 -fr 04_res 2 101 2030 1.0 0.0 -fr 05_nuclear 2 101 2030 1.0 0.0 -fr 06_coal 2 101 2030 0.0 0.0 -fr 07_gas 2 101 2030 0.0 0.0 -fr 08_non-res 2 101 2030 0.0 0.0 -fr 09_hydro_pump 2 101 2030 0.0 0.0 -fr 01_solar 2 102 2030 1.0 0.0 -fr 02_wind_on 2 102 2030 1.0 0.0 -fr 03_wind_off 2 102 2030 1.0 0.0 -fr 04_res 2 102 2030 1.0 0.0 -fr 05_nuclear 2 102 2030 1.0 0.0 -fr 06_coal 2 102 2030 1.0 0.0 -fr 07_gas 2 102 2030 0.0 0.0 -fr 08_non-res 2 102 2030 0.0 0.0 -fr 09_hydro_pump 2 102 2030 0.0 0.0 -fr 01_solar 2 103 2030 1.0 0.0 -fr 02_wind_on 2 103 2030 1.0 0.0 -fr 03_wind_off 2 103 2030 1.0 0.0 -fr 04_res 2 103 2030 1.0 0.0 -fr 05_nuclear 2 103 2030 1.0 0.0 -fr 06_coal 2 103 2030 1.0 0.0 -fr 07_gas 2 103 2030 0.0 0.0 -fr 08_non-res 2 103 2030 0.0 0.0 -fr 09_hydro_pump 2 103 2030 0.0 0.0 -fr 01_solar 2 104 2030 1.0 0.0 -fr 02_wind_on 2 104 2030 1.0 0.0 -fr 03_wind_off 2 104 2030 1.0 0.0 -fr 04_res 2 104 2030 1.0 0.0 -fr 05_nuclear 2 104 2030 1.0 0.0 -fr 06_coal 2 104 2030 1.0 0.0 -fr 07_gas 2 104 2030 0.0 0.0 -fr 08_non-res 2 104 2030 0.0 0.0 -fr 09_hydro_pump 2 104 2030 0.0 0.0 -fr 01_solar 2 105 2030 1.0 0.0 -fr 02_wind_on 2 105 2030 1.0 0.0 -fr 03_wind_off 2 105 2030 1.0 0.0 -fr 04_res 2 105 2030 1.0 0.0 -fr 05_nuclear 2 105 2030 1.0 0.0 -fr 06_coal 2 105 2030 1.0 0.0 -fr 07_gas 2 105 2030 0.0 0.0 -fr 08_non-res 2 105 2030 0.0 0.0 -fr 09_hydro_pump 2 105 2030 0.0 0.0 -fr 01_solar 2 106 2030 1.0 0.0 -fr 02_wind_on 2 106 2030 1.0 0.0 -fr 03_wind_off 2 106 2030 1.0 0.0 -fr 04_res 2 106 2030 1.0 0.0 -fr 05_nuclear 2 106 2030 1.0 0.0 -fr 06_coal 2 106 2030 1.0 0.0 -fr 07_gas 2 106 2030 0.0 0.0 -fr 08_non-res 2 106 2030 0.0 0.0 -fr 09_hydro_pump 2 106 2030 0.0 0.0 -fr 01_solar 2 107 2030 1.0 0.0 -fr 02_wind_on 2 107 2030 1.0 0.0 -fr 03_wind_off 2 107 2030 1.0 0.0 -fr 04_res 2 107 2030 1.0 0.0 -fr 05_nuclear 2 107 2030 1.0 0.0 -fr 06_coal 2 107 2030 1.0 0.0 -fr 07_gas 2 107 2030 0.0 0.0 -fr 08_non-res 2 107 2030 0.0 0.0 -fr 09_hydro_pump 2 107 2030 0.0 0.0 -fr 01_solar 2 108 2030 1.0 0.0 -fr 02_wind_on 2 108 2030 1.0 0.0 -fr 03_wind_off 2 108 2030 1.0 0.0 -fr 04_res 2 108 2030 1.0 0.0 -fr 05_nuclear 2 108 2030 1.0 0.0 -fr 06_coal 2 108 2030 1.0 0.0 -fr 07_gas 2 108 2030 0.0 0.0 -fr 08_non-res 2 108 2030 0.0 0.0 -fr 09_hydro_pump 2 108 2030 0.0 0.0 -fr 01_solar 2 109 2030 1.0 0.0 -fr 02_wind_on 2 109 2030 1.0 0.0 -fr 03_wind_off 2 109 2030 1.0 0.0 -fr 04_res 2 109 2030 1.0 0.0 -fr 05_nuclear 2 109 2030 1.0 0.0 -fr 06_coal 2 109 2030 1.0 0.0 -fr 07_gas 2 109 2030 0.0 0.0 -fr 08_non-res 2 109 2030 0.0 0.0 -fr 09_hydro_pump 2 109 2030 0.0 0.0 -fr 01_solar 2 110 2030 1.0 0.0 -fr 02_wind_on 2 110 2030 1.0 0.0 -fr 03_wind_off 2 110 2030 1.0 0.0 -fr 04_res 2 110 2030 1.0 0.0 -fr 05_nuclear 2 110 2030 1.0 0.0 -fr 06_coal 2 110 2030 1.0 0.0 -fr 07_gas 2 110 2030 0.0 0.0 -fr 08_non-res 2 110 2030 0.0 0.0 -fr 09_hydro_pump 2 110 2030 0.0 0.0 -fr 01_solar 2 111 2030 1.0 0.0 -fr 02_wind_on 2 111 2030 1.0 0.0 -fr 03_wind_off 2 111 2030 1.0 0.0 -fr 04_res 2 111 2030 1.0 0.0 -fr 05_nuclear 2 111 2030 1.0 0.0 -fr 06_coal 2 111 2030 1.0 0.0 -fr 07_gas 2 111 2030 0.0 0.0 -fr 08_non-res 2 111 2030 0.0 0.0 -fr 09_hydro_pump 2 111 2030 0.0 0.0 -fr 01_solar 2 112 2030 1.0 0.0 -fr 02_wind_on 2 112 2030 1.0 0.0 -fr 03_wind_off 2 112 2030 1.0 0.0 -fr 04_res 2 112 2030 1.0 0.0 -fr 05_nuclear 2 112 2030 1.0 0.0 -fr 06_coal 2 112 2030 1.0 0.0 -fr 07_gas 2 112 2030 0.0 0.0 -fr 08_non-res 2 112 2030 0.0 0.0 -fr 09_hydro_pump 2 112 2030 0.0 0.0 -fr 01_solar 2 113 2030 1.0 0.0 -fr 02_wind_on 2 113 2030 1.0 0.0 -fr 03_wind_off 2 113 2030 1.0 0.0 -fr 04_res 2 113 2030 1.0 0.0 -fr 05_nuclear 2 113 2030 1.0 0.0 -fr 06_coal 2 113 2030 1.0 0.0 -fr 07_gas 2 113 2030 0.0 0.0 -fr 08_non-res 2 113 2030 0.0 0.0 -fr 09_hydro_pump 2 113 2030 0.0 0.0 -fr 01_solar 2 114 2030 1.0 0.0 -fr 02_wind_on 2 114 2030 1.0 0.0 -fr 03_wind_off 2 114 2030 1.0 0.0 -fr 04_res 2 114 2030 1.0 0.0 -fr 05_nuclear 2 114 2030 1.0 0.0 -fr 06_coal 2 114 2030 1.0 0.0 -fr 07_gas 2 114 2030 0.0 0.0 -fr 08_non-res 2 114 2030 0.0 0.0 -fr 09_hydro_pump 2 114 2030 0.0 0.0 -fr 01_solar 2 115 2030 1.0 0.0 -fr 02_wind_on 2 115 2030 1.0 0.0 -fr 03_wind_off 2 115 2030 1.0 0.0 -fr 04_res 2 115 2030 1.0 0.0 -fr 05_nuclear 2 115 2030 1.0 0.0 -fr 06_coal 2 115 2030 1.0 0.0 -fr 07_gas 2 115 2030 0.0 0.0 -fr 08_non-res 2 115 2030 0.0 0.0 -fr 09_hydro_pump 2 115 2030 0.0 0.0 -fr 01_solar 2 116 2030 1.0 0.0 -fr 02_wind_on 2 116 2030 1.0 0.0 -fr 03_wind_off 2 116 2030 1.0 0.0 -fr 04_res 2 116 2030 1.0 0.0 -fr 05_nuclear 2 116 2030 1.0 0.0 -fr 06_coal 2 116 2030 1.0 0.0 -fr 07_gas 2 116 2030 0.0 0.0 -fr 08_non-res 2 116 2030 0.0 0.0 -fr 09_hydro_pump 2 116 2030 0.0 0.0 -fr 01_solar 2 117 2030 1.0 0.0 -fr 02_wind_on 2 117 2030 1.0 0.0 -fr 03_wind_off 2 117 2030 1.0 0.0 -fr 04_res 2 117 2030 1.0 0.0 -fr 05_nuclear 2 117 2030 1.0 0.0 -fr 06_coal 2 117 2030 1.0 0.0 -fr 07_gas 2 117 2030 0.0 0.0 -fr 08_non-res 2 117 2030 0.0 0.0 -fr 09_hydro_pump 2 117 2030 0.0 0.0 -fr 01_solar 2 118 2030 1.0 0.0 -fr 02_wind_on 2 118 2030 1.0 0.0 -fr 03_wind_off 2 118 2030 1.0 0.0 -fr 04_res 2 118 2030 1.0 0.0 -fr 05_nuclear 2 118 2030 1.0 0.0 -fr 06_coal 2 118 2030 1.0 0.0 -fr 07_gas 2 118 2030 0.0 0.0 -fr 08_non-res 2 118 2030 0.0 0.0 -fr 09_hydro_pump 2 118 2030 0.0 0.0 -fr 01_solar 2 119 2030 1.0 0.0 -fr 02_wind_on 2 119 2030 1.0 0.0 -fr 03_wind_off 2 119 2030 1.0 0.0 -fr 04_res 2 119 2030 1.0 0.0 -fr 05_nuclear 2 119 2030 1.0 0.0 -fr 06_coal 2 119 2030 1.0 0.0 -fr 07_gas 2 119 2030 0.0 0.0 -fr 08_non-res 2 119 2030 0.0 0.0 -fr 09_hydro_pump 2 119 2030 0.0 0.0 -fr 01_solar 2 120 2030 1.0 0.0 -fr 02_wind_on 2 120 2030 1.0 0.0 -fr 03_wind_off 2 120 2030 1.0 0.0 -fr 04_res 2 120 2030 1.0 0.0 -fr 05_nuclear 2 120 2030 1.0 0.0 -fr 06_coal 2 120 2030 1.0 0.0 -fr 07_gas 2 120 2030 0.0 0.0 -fr 08_non-res 2 120 2030 0.0 0.0 -fr 09_hydro_pump 2 120 2030 0.0 0.0 -fr 01_solar 2 121 2030 1.0 0.0 -fr 02_wind_on 2 121 2030 1.0 0.0 -fr 03_wind_off 2 121 2030 1.0 0.0 -fr 04_res 2 121 2030 1.0 0.0 -fr 05_nuclear 2 121 2030 1.0 0.0 -fr 06_coal 2 121 2030 1.0 0.0 -fr 07_gas 2 121 2030 0.0 0.0 -fr 08_non-res 2 121 2030 0.0 0.0 -fr 09_hydro_pump 2 121 2030 0.0 0.0 -fr 01_solar 2 122 2030 1.0 0.0 -fr 02_wind_on 2 122 2030 1.0 0.0 -fr 03_wind_off 2 122 2030 1.0 0.0 -fr 04_res 2 122 2030 1.0 0.0 -fr 05_nuclear 2 122 2030 1.0 0.0 -fr 06_coal 2 122 2030 1.0 0.0 -fr 07_gas 2 122 2030 1.0 0.0 -fr 08_non-res 2 122 2030 0.0 0.0 -fr 09_hydro_pump 2 122 2030 0.0 0.0 -fr 01_solar 2 123 2030 1.0 0.0 -fr 02_wind_on 2 123 2030 1.0 0.0 -fr 03_wind_off 2 123 2030 1.0 0.0 -fr 04_res 2 123 2030 1.0 0.0 -fr 05_nuclear 2 123 2030 1.0 0.0 -fr 06_coal 2 123 2030 1.0 0.0 -fr 07_gas 2 123 2030 1.0 0.0 -fr 08_non-res 2 123 2030 0.0 0.0 -fr 09_hydro_pump 2 123 2030 0.0 0.0 -fr 01_solar 2 124 2030 1.0 0.0 -fr 02_wind_on 2 124 2030 1.0 0.0 -fr 03_wind_off 2 124 2030 1.0 0.0 -fr 04_res 2 124 2030 1.0 0.0 -fr 05_nuclear 2 124 2030 1.0 0.0 -fr 06_coal 2 124 2030 1.0 0.0 -fr 07_gas 2 124 2030 1.0 0.0 -fr 08_non-res 2 124 2030 0.0 0.0 -fr 09_hydro_pump 2 124 2030 0.0 0.0 -fr 01_solar 2 125 2030 1.0 0.0 -fr 02_wind_on 2 125 2030 1.0 0.0 -fr 03_wind_off 2 125 2030 1.0 0.0 -fr 04_res 2 125 2030 1.0 0.0 -fr 05_nuclear 2 125 2030 1.0 0.0 -fr 06_coal 2 125 2030 1.0 0.0 -fr 07_gas 2 125 2030 1.0 0.0 -fr 08_non-res 2 125 2030 0.0 0.0 -fr 09_hydro_pump 2 125 2030 0.0 0.0 -fr 01_solar 2 126 2030 1.0 0.0 -fr 02_wind_on 2 126 2030 1.0 0.0 -fr 03_wind_off 2 126 2030 1.0 0.0 -fr 04_res 2 126 2030 1.0 0.0 -fr 05_nuclear 2 126 2030 1.0 0.0 -fr 06_coal 2 126 2030 1.0 0.0 -fr 07_gas 2 126 2030 1.0 0.0 -fr 08_non-res 2 126 2030 0.0 0.0 -fr 09_hydro_pump 2 126 2030 0.0 0.0 -fr 01_solar 2 127 2030 1.0 0.0 -fr 02_wind_on 2 127 2030 1.0 0.0 -fr 03_wind_off 2 127 2030 1.0 0.0 -fr 04_res 2 127 2030 1.0 0.0 -fr 05_nuclear 2 127 2030 1.0 0.0 -fr 06_coal 2 127 2030 1.0 0.0 -fr 07_gas 2 127 2030 1.0 0.0 -fr 08_non-res 2 127 2030 0.0 0.0 -fr 09_hydro_pump 2 127 2030 0.0 0.0 -fr 01_solar 2 128 2030 1.0 0.0 -fr 02_wind_on 2 128 2030 1.0 0.0 -fr 03_wind_off 2 128 2030 1.0 0.0 -fr 04_res 2 128 2030 1.0 0.0 -fr 05_nuclear 2 128 2030 1.0 0.0 -fr 06_coal 2 128 2030 1.0 0.0 -fr 07_gas 2 128 2030 1.0 0.0 -fr 08_non-res 2 128 2030 0.0 0.0 -fr 09_hydro_pump 2 128 2030 0.0 0.0 -fr 01_solar 2 129 2030 1.0 0.0 -fr 02_wind_on 2 129 2030 1.0 0.0 -fr 03_wind_off 2 129 2030 1.0 0.0 -fr 04_res 2 129 2030 1.0 0.0 -fr 05_nuclear 2 129 2030 1.0 0.0 -fr 06_coal 2 129 2030 1.0 0.0 -fr 07_gas 2 129 2030 1.0 0.0 -fr 08_non-res 2 129 2030 0.0 0.0 -fr 09_hydro_pump 2 129 2030 0.0 0.0 -fr 01_solar 2 130 2030 1.0 0.0 -fr 02_wind_on 2 130 2030 1.0 0.0 -fr 03_wind_off 2 130 2030 1.0 0.0 -fr 04_res 2 130 2030 1.0 0.0 -fr 05_nuclear 2 130 2030 1.0 0.0 -fr 06_coal 2 130 2030 1.0 0.0 -fr 07_gas 2 130 2030 1.0 0.0 -fr 08_non-res 2 130 2030 0.0 0.0 -fr 09_hydro_pump 2 130 2030 0.0 0.0 -fr 01_solar 2 131 2030 1.0 0.0 -fr 02_wind_on 2 131 2030 1.0 0.0 -fr 03_wind_off 2 131 2030 1.0 0.0 -fr 04_res 2 131 2030 1.0 0.0 -fr 05_nuclear 2 131 2030 1.0 0.0 -fr 06_coal 2 131 2030 1.0 0.0 -fr 07_gas 2 131 2030 1.0 0.0 -fr 08_non-res 2 131 2030 0.0 0.0 -fr 09_hydro_pump 2 131 2030 0.0 0.0 -fr 01_solar 2 132 2030 1.0 0.0 -fr 02_wind_on 2 132 2030 1.0 0.0 -fr 03_wind_off 2 132 2030 1.0 0.0 -fr 04_res 2 132 2030 1.0 0.0 -fr 05_nuclear 2 132 2030 1.0 0.0 -fr 06_coal 2 132 2030 1.0 0.0 -fr 07_gas 2 132 2030 1.0 0.0 -fr 08_non-res 2 132 2030 0.0 0.0 -fr 09_hydro_pump 2 132 2030 0.0 0.0 -fr 01_solar 2 133 2030 1.0 0.0 -fr 02_wind_on 2 133 2030 1.0 0.0 -fr 03_wind_off 2 133 2030 1.0 0.0 -fr 04_res 2 133 2030 1.0 0.0 -fr 05_nuclear 2 133 2030 1.0 0.0 -fr 06_coal 2 133 2030 1.0 0.0 -fr 07_gas 2 133 2030 1.0 0.0 -fr 08_non-res 2 133 2030 0.0 0.0 -fr 09_hydro_pump 2 133 2030 0.0 0.0 -fr 01_solar 2 134 2030 1.0 0.0 -fr 02_wind_on 2 134 2030 1.0 0.0 -fr 03_wind_off 2 134 2030 1.0 0.0 -fr 04_res 2 134 2030 1.0 0.0 -fr 05_nuclear 2 134 2030 1.0 0.0 -fr 06_coal 2 134 2030 1.0 0.0 -fr 07_gas 2 134 2030 1.0 0.0 -fr 08_non-res 2 134 2030 0.0 0.0 -fr 09_hydro_pump 2 134 2030 0.0 0.0 -fr 01_solar 2 135 2030 1.0 0.0 -fr 02_wind_on 2 135 2030 1.0 0.0 -fr 03_wind_off 2 135 2030 1.0 0.0 -fr 04_res 2 135 2030 1.0 0.0 -fr 05_nuclear 2 135 2030 1.0 0.0 -fr 06_coal 2 135 2030 1.0 0.0 -fr 07_gas 2 135 2030 1.0 0.0 -fr 08_non-res 2 135 2030 0.0 0.0 -fr 09_hydro_pump 2 135 2030 0.0 0.0 -fr 01_solar 2 136 2030 1.0 0.0 -fr 02_wind_on 2 136 2030 1.0 0.0 -fr 03_wind_off 2 136 2030 1.0 0.0 -fr 04_res 2 136 2030 1.0 0.0 -fr 05_nuclear 2 136 2030 1.0 0.0 -fr 06_coal 2 136 2030 1.0 0.0 -fr 07_gas 2 136 2030 1.0 0.0 -fr 08_non-res 2 136 2030 0.0 0.0 -fr 09_hydro_pump 2 136 2030 0.0 0.0 -fr 01_solar 2 137 2030 1.0 0.0 -fr 02_wind_on 2 137 2030 1.0 0.0 -fr 03_wind_off 2 137 2030 1.0 0.0 -fr 04_res 2 137 2030 1.0 0.0 -fr 05_nuclear 2 137 2030 1.0 0.0 -fr 06_coal 2 137 2030 1.0 0.0 -fr 07_gas 2 137 2030 1.0 0.0 -fr 08_non-res 2 137 2030 0.0 0.0 -fr 09_hydro_pump 2 137 2030 0.0 0.0 -fr 01_solar 2 138 2030 1.0 0.0 -fr 02_wind_on 2 138 2030 1.0 0.0 -fr 03_wind_off 2 138 2030 1.0 0.0 -fr 04_res 2 138 2030 1.0 0.0 -fr 05_nuclear 2 138 2030 1.0 0.0 -fr 06_coal 2 138 2030 1.0 0.0 -fr 07_gas 2 138 2030 1.0 0.0 -fr 08_non-res 2 138 2030 0.0 0.0 -fr 09_hydro_pump 2 138 2030 0.0 0.0 -fr 01_solar 2 139 2030 1.0 0.0 -fr 02_wind_on 2 139 2030 1.0 0.0 -fr 03_wind_off 2 139 2030 1.0 0.0 -fr 04_res 2 139 2030 1.0 0.0 -fr 05_nuclear 2 139 2030 1.0 0.0 -fr 06_coal 2 139 2030 1.0 0.0 -fr 07_gas 2 139 2030 1.0 0.0 -fr 08_non-res 2 139 2030 0.0 0.0 -fr 09_hydro_pump 2 139 2030 0.0 0.0 -fr 01_solar 2 140 2030 1.0 0.0 -fr 02_wind_on 2 140 2030 1.0 0.0 -fr 03_wind_off 2 140 2030 1.0 0.0 -fr 04_res 2 140 2030 1.0 0.0 -fr 05_nuclear 2 140 2030 1.0 0.0 -fr 06_coal 2 140 2030 1.0 0.0 -fr 07_gas 2 140 2030 1.0 0.0 -fr 08_non-res 2 140 2030 0.0 0.0 -fr 09_hydro_pump 2 140 2030 0.0 0.0 -fr 01_solar 2 141 2030 1.0 0.0 -fr 02_wind_on 2 141 2030 1.0 0.0 -fr 03_wind_off 2 141 2030 1.0 0.0 -fr 04_res 2 141 2030 1.0 0.0 -fr 05_nuclear 2 141 2030 1.0 0.0 -fr 06_coal 2 141 2030 1.0 0.0 -fr 07_gas 2 141 2030 1.0 0.0 -fr 08_non-res 2 141 2030 0.0 0.0 -fr 09_hydro_pump 2 141 2030 0.0 0.0 -fr 01_solar 2 142 2030 1.0 0.0 -fr 02_wind_on 2 142 2030 1.0 0.0 -fr 03_wind_off 2 142 2030 1.0 0.0 -fr 04_res 2 142 2030 1.0 0.0 -fr 05_nuclear 2 142 2030 1.0 0.0 -fr 06_coal 2 142 2030 1.0 0.0 -fr 07_gas 2 142 2030 1.0 0.0 -fr 08_non-res 2 142 2030 1.0 0.0 -fr 09_hydro_pump 2 142 2030 0.0 0.0 -fr 01_solar 2 143 2030 1.0 0.0 -fr 02_wind_on 2 143 2030 1.0 0.0 -fr 03_wind_off 2 143 2030 1.0 0.0 -fr 04_res 2 143 2030 1.0 0.0 -fr 05_nuclear 2 143 2030 1.0 0.0 -fr 06_coal 2 143 2030 1.0 0.0 -fr 07_gas 2 143 2030 1.0 0.0 -fr 08_non-res 2 143 2030 1.0 0.0 -fr 09_hydro_pump 2 143 2030 0.0 0.0 -fr 01_solar 2 144 2030 1.0 0.0 -fr 02_wind_on 2 144 2030 1.0 0.0 -fr 03_wind_off 2 144 2030 1.0 0.0 -fr 04_res 2 144 2030 1.0 0.0 -fr 05_nuclear 2 144 2030 1.0 0.0 -fr 06_coal 2 144 2030 1.0 0.0 -fr 07_gas 2 144 2030 1.0 0.0 -fr 08_non-res 2 144 2030 1.0 0.0 -fr 09_hydro_pump 2 144 2030 0.0 0.0 -fr 01_solar 2 145 2030 1.0 0.0 -fr 02_wind_on 2 145 2030 1.0 0.0 -fr 03_wind_off 2 145 2030 1.0 0.0 -fr 04_res 2 145 2030 1.0 0.0 -fr 05_nuclear 2 145 2030 1.0 0.0 -fr 06_coal 2 145 2030 1.0 0.0 -fr 07_gas 2 145 2030 1.0 0.0 -fr 08_non-res 2 145 2030 1.0 0.0 -fr 09_hydro_pump 2 145 2030 0.0 0.0 -fr 01_solar 2 146 2030 1.0 0.0 -fr 02_wind_on 2 146 2030 1.0 0.0 -fr 03_wind_off 2 146 2030 1.0 0.0 -fr 04_res 2 146 2030 1.0 0.0 -fr 05_nuclear 2 146 2030 1.0 0.0 -fr 06_coal 2 146 2030 1.0 0.0 -fr 07_gas 2 146 2030 1.0 0.0 -fr 08_non-res 2 146 2030 1.0 0.0 -fr 09_hydro_pump 2 146 2030 0.0 0.0 -fr 01_solar 2 147 2030 1.0 0.0 -fr 02_wind_on 2 147 2030 1.0 0.0 -fr 03_wind_off 2 147 2030 1.0 0.0 -fr 04_res 2 147 2030 1.0 0.0 -fr 05_nuclear 2 147 2030 1.0 0.0 -fr 06_coal 2 147 2030 1.0 0.0 -fr 07_gas 2 147 2030 1.0 0.0 -fr 08_non-res 2 147 2030 1.0 0.0 -fr 09_hydro_pump 2 147 2030 0.0 0.0 -fr 01_solar 2 148 2030 1.0 0.0 -fr 02_wind_on 2 148 2030 1.0 0.0 -fr 03_wind_off 2 148 2030 1.0 0.0 -fr 04_res 2 148 2030 1.0 0.0 -fr 05_nuclear 2 148 2030 1.0 0.0 -fr 06_coal 2 148 2030 1.0 0.0 -fr 07_gas 2 148 2030 1.0 0.0 -fr 08_non-res 2 148 2030 1.0 0.0 -fr 09_hydro_pump 2 148 2030 0.0 0.0 -fr 01_solar 2 149 2030 1.0 0.0 -fr 02_wind_on 2 149 2030 1.0 0.0 -fr 03_wind_off 2 149 2030 1.0 0.0 -fr 04_res 2 149 2030 1.0 0.0 -fr 05_nuclear 2 149 2030 1.0 0.0 -fr 06_coal 2 149 2030 1.0 0.0 -fr 07_gas 2 149 2030 1.0 0.0 -fr 08_non-res 2 149 2030 1.0 0.0 -fr 09_hydro_pump 2 149 2030 0.0 0.0 -fr 01_solar 2 150 2030 1.0 0.0 -fr 02_wind_on 2 150 2030 1.0 0.0 -fr 03_wind_off 2 150 2030 1.0 0.0 -fr 04_res 2 150 2030 1.0 0.0 -fr 05_nuclear 2 150 2030 1.0 0.0 -fr 06_coal 2 150 2030 1.0 0.0 -fr 07_gas 2 150 2030 1.0 0.0 -fr 08_non-res 2 150 2030 1.0 0.0 -fr 09_hydro_pump 2 150 2030 0.0 0.0 -fr 01_solar 2 151 2030 1.0 0.0 -fr 02_wind_on 2 151 2030 1.0 0.0 -fr 03_wind_off 2 151 2030 1.0 0.0 -fr 04_res 2 151 2030 1.0 0.0 -fr 05_nuclear 2 151 2030 1.0 0.0 -fr 06_coal 2 151 2030 1.0 0.0 -fr 07_gas 2 151 2030 1.0 0.0 -fr 08_non-res 2 151 2030 1.0 0.0 -fr 09_hydro_pump 2 151 2030 0.0 0.0 -fr 01_solar 2 152 2030 1.0 0.0 -fr 02_wind_on 2 152 2030 1.0 0.0 -fr 03_wind_off 2 152 2030 1.0 0.0 -fr 04_res 2 152 2030 1.0 0.0 -fr 05_nuclear 2 152 2030 1.0 0.0 -fr 06_coal 2 152 2030 1.0 0.0 -fr 07_gas 2 152 2030 1.0 0.0 -fr 08_non-res 2 152 2030 1.0 0.0 -fr 09_hydro_pump 2 152 2030 0.0 0.0 -fr 01_solar 2 153 2030 1.0 0.0 -fr 02_wind_on 2 153 2030 1.0 0.0 -fr 03_wind_off 2 153 2030 1.0 0.0 -fr 04_res 2 153 2030 1.0 0.0 -fr 05_nuclear 2 153 2030 1.0 0.0 -fr 06_coal 2 153 2030 1.0 0.0 -fr 07_gas 2 153 2030 1.0 0.0 -fr 08_non-res 2 153 2030 1.0 0.0 -fr 09_hydro_pump 2 153 2030 0.0 0.0 -fr 01_solar 2 154 2030 1.0 0.0 -fr 02_wind_on 2 154 2030 1.0 0.0 -fr 03_wind_off 2 154 2030 1.0 0.0 -fr 04_res 2 154 2030 1.0 0.0 -fr 05_nuclear 2 154 2030 1.0 0.0 -fr 06_coal 2 154 2030 1.0 0.0 -fr 07_gas 2 154 2030 1.0 0.0 -fr 08_non-res 2 154 2030 1.0 0.0 -fr 09_hydro_pump 2 154 2030 0.0 0.0 -fr 01_solar 2 155 2030 1.0 0.0 -fr 02_wind_on 2 155 2030 1.0 0.0 -fr 03_wind_off 2 155 2030 1.0 0.0 -fr 04_res 2 155 2030 1.0 0.0 -fr 05_nuclear 2 155 2030 1.0 0.0 -fr 06_coal 2 155 2030 1.0 0.0 -fr 07_gas 2 155 2030 1.0 0.0 -fr 08_non-res 2 155 2030 1.0 0.0 -fr 09_hydro_pump 2 155 2030 0.0 0.0 -fr 01_solar 2 156 2030 1.0 0.0 -fr 02_wind_on 2 156 2030 1.0 0.0 -fr 03_wind_off 2 156 2030 1.0 0.0 -fr 04_res 2 156 2030 1.0 0.0 -fr 05_nuclear 2 156 2030 1.0 0.0 -fr 06_coal 2 156 2030 1.0 0.0 -fr 07_gas 2 156 2030 1.0 0.0 -fr 08_non-res 2 156 2030 1.0 0.0 -fr 09_hydro_pump 2 156 2030 0.0 0.0 -fr 01_solar 2 157 2030 1.0 0.0 -fr 02_wind_on 2 157 2030 1.0 0.0 -fr 03_wind_off 2 157 2030 1.0 0.0 -fr 04_res 2 157 2030 1.0 0.0 -fr 05_nuclear 2 157 2030 1.0 0.0 -fr 06_coal 2 157 2030 1.0 0.0 -fr 07_gas 2 157 2030 1.0 0.0 -fr 08_non-res 2 157 2030 1.0 0.0 -fr 09_hydro_pump 2 157 2030 0.0 0.0 -fr 01_solar 2 158 2030 1.0 0.0 -fr 02_wind_on 2 158 2030 1.0 0.0 -fr 03_wind_off 2 158 2030 1.0 0.0 -fr 04_res 2 158 2030 1.0 0.0 -fr 05_nuclear 2 158 2030 1.0 0.0 -fr 06_coal 2 158 2030 1.0 0.0 -fr 07_gas 2 158 2030 1.0 0.0 -fr 08_non-res 2 158 2030 1.0 0.0 -fr 09_hydro_pump 2 158 2030 0.0 0.0 -fr 01_solar 2 159 2030 1.0 0.0 -fr 02_wind_on 2 159 2030 1.0 0.0 -fr 03_wind_off 2 159 2030 1.0 0.0 -fr 04_res 2 159 2030 1.0 0.0 -fr 05_nuclear 2 159 2030 1.0 0.0 -fr 06_coal 2 159 2030 1.0 0.0 -fr 07_gas 2 159 2030 1.0 0.0 -fr 08_non-res 2 159 2030 1.0 0.0 -fr 09_hydro_pump 2 159 2030 0.0 0.0 -fr 01_solar 2 160 2030 1.0 0.0 -fr 02_wind_on 2 160 2030 1.0 0.0 -fr 03_wind_off 2 160 2030 1.0 0.0 -fr 04_res 2 160 2030 1.0 0.0 -fr 05_nuclear 2 160 2030 1.0 0.0 -fr 06_coal 2 160 2030 1.0 0.0 -fr 07_gas 2 160 2030 1.0 0.0 -fr 08_non-res 2 160 2030 1.0 0.0 -fr 09_hydro_pump 2 160 2030 0.0 0.0 -fr 01_solar 2 161 2030 1.0 0.0 -fr 02_wind_on 2 161 2030 1.0 0.0 -fr 03_wind_off 2 161 2030 1.0 0.0 -fr 04_res 2 161 2030 1.0 0.0 -fr 05_nuclear 2 161 2030 1.0 0.0 -fr 06_coal 2 161 2030 1.0 0.0 -fr 07_gas 2 161 2030 1.0 0.0 -fr 08_non-res 2 161 2030 1.0 0.0 -fr 09_hydro_pump 2 161 2030 0.0 0.0 -fr 01_solar 2 162 2030 1.0 0.0 -fr 02_wind_on 2 162 2030 1.0 0.0 -fr 03_wind_off 2 162 2030 1.0 0.0 -fr 04_res 2 162 2030 1.0 0.0 -fr 05_nuclear 2 162 2030 1.0 0.0 -fr 06_coal 2 162 2030 1.0 0.0 -fr 07_gas 2 162 2030 1.0 0.0 -fr 08_non-res 2 162 2030 1.0 0.0 -fr 09_hydro_pump 2 162 2030 1.0 0.0 -fr 01_solar 2 163 2030 1.0 0.0 -fr 02_wind_on 2 163 2030 1.0 0.0 -fr 03_wind_off 2 163 2030 1.0 0.0 -fr 04_res 2 163 2030 1.0 0.0 -fr 05_nuclear 2 163 2030 1.0 0.0 -fr 06_coal 2 163 2030 1.0 0.0 -fr 07_gas 2 163 2030 1.0 0.0 -fr 08_non-res 2 163 2030 1.0 0.0 -fr 09_hydro_pump 2 163 2030 1.0 0.0 -fr 01_solar 2 164 2030 1.0 0.0 -fr 02_wind_on 2 164 2030 1.0 0.0 -fr 03_wind_off 2 164 2030 1.0 0.0 -fr 04_res 2 164 2030 1.0 0.0 -fr 05_nuclear 2 164 2030 1.0 0.0 -fr 06_coal 2 164 2030 1.0 0.0 -fr 07_gas 2 164 2030 1.0 0.0 -fr 08_non-res 2 164 2030 1.0 0.0 -fr 09_hydro_pump 2 164 2030 1.0 0.0 -fr 01_solar 2 165 2030 1.0 0.0 -fr 02_wind_on 2 165 2030 1.0 0.0 -fr 03_wind_off 2 165 2030 1.0 0.0 -fr 04_res 2 165 2030 1.0 0.0 -fr 05_nuclear 2 165 2030 1.0 0.0 -fr 06_coal 2 165 2030 1.0 0.0 -fr 07_gas 2 165 2030 1.0 0.0 -fr 08_non-res 2 165 2030 1.0 0.0 -fr 09_hydro_pump 2 165 2030 1.0 0.0 -fr 01_solar 2 166 2030 1.0 0.0 -fr 02_wind_on 2 166 2030 1.0 0.0 -fr 03_wind_off 2 166 2030 1.0 0.0 -fr 04_res 2 166 2030 1.0 0.0 -fr 05_nuclear 2 166 2030 1.0 0.0 -fr 06_coal 2 166 2030 1.0 0.0 -fr 07_gas 2 166 2030 1.0 0.0 -fr 08_non-res 2 166 2030 1.0 0.0 -fr 09_hydro_pump 2 166 2030 1.0 0.0 -fr 01_solar 2 167 2030 1.0 0.0 -fr 02_wind_on 2 167 2030 1.0 0.0 -fr 03_wind_off 2 167 2030 1.0 0.0 -fr 04_res 2 167 2030 1.0 0.0 -fr 05_nuclear 2 167 2030 1.0 0.0 -fr 06_coal 2 167 2030 1.0 0.0 -fr 07_gas 2 167 2030 1.0 0.0 -fr 08_non-res 2 167 2030 1.0 0.0 -fr 09_hydro_pump 2 167 2030 1.0 0.0 -fr 01_solar 2 168 2030 1.0 0.0 -fr 02_wind_on 2 168 2030 1.0 0.0 -fr 03_wind_off 2 168 2030 1.0 0.0 -fr 04_res 2 168 2030 1.0 0.0 -fr 05_nuclear 2 168 2030 1.0 0.0 -fr 06_coal 2 168 2030 1.0 0.0 -fr 07_gas 2 168 2030 1.0 0.0 -fr 08_non-res 2 168 2030 1.0 0.0 -fr 09_hydro_pump 2 168 2030 1.0 0.0 -fr 01_solar 2 169 2030 0.0 0.0 -fr 02_wind_on 2 169 2030 0.0 0.0 -fr 03_wind_off 2 169 2030 0.0 0.0 -fr 04_res 2 169 2030 0.0 0.0 -fr 05_nuclear 2 169 2030 0.0 0.0 -fr 06_coal 2 169 2030 0.0 0.0 -fr 07_gas 2 169 2030 0.0 0.0 -fr 08_non-res 2 169 2030 0.0 0.0 -fr 09_hydro_pump 2 169 2030 0.0 0.0 -fr 01_solar 2 170 2030 1.0 0.0 -fr 02_wind_on 2 170 2030 0.0 0.0 -fr 03_wind_off 2 170 2030 0.0 0.0 -fr 04_res 2 170 2030 0.0 0.0 -fr 05_nuclear 2 170 2030 0.0 0.0 -fr 06_coal 2 170 2030 0.0 0.0 -fr 07_gas 2 170 2030 0.0 0.0 -fr 08_non-res 2 170 2030 0.0 0.0 -fr 09_hydro_pump 2 170 2030 0.0 0.0 -fr 01_solar 2 171 2030 1.0 0.0 -fr 02_wind_on 2 171 2030 0.0 0.0 -fr 03_wind_off 2 171 2030 0.0 0.0 -fr 04_res 2 171 2030 0.0 0.0 -fr 05_nuclear 2 171 2030 0.0 0.0 -fr 06_coal 2 171 2030 0.0 0.0 -fr 07_gas 2 171 2030 0.0 0.0 -fr 08_non-res 2 171 2030 0.0 0.0 -fr 09_hydro_pump 2 171 2030 0.0 0.0 -fr 01_solar 2 172 2030 1.0 0.0 -fr 02_wind_on 2 172 2030 0.0 0.0 -fr 03_wind_off 2 172 2030 0.0 0.0 -fr 04_res 2 172 2030 0.0 0.0 -fr 05_nuclear 2 172 2030 0.0 0.0 -fr 06_coal 2 172 2030 0.0 0.0 -fr 07_gas 2 172 2030 0.0 0.0 -fr 08_non-res 2 172 2030 0.0 0.0 -fr 09_hydro_pump 2 172 2030 0.0 0.0 -fr 01_solar 2 173 2030 1.0 0.0 -fr 02_wind_on 2 173 2030 0.0 0.0 -fr 03_wind_off 2 173 2030 0.0 0.0 -fr 04_res 2 173 2030 0.0 0.0 -fr 05_nuclear 2 173 2030 0.0 0.0 -fr 06_coal 2 173 2030 0.0 0.0 -fr 07_gas 2 173 2030 0.0 0.0 -fr 08_non-res 2 173 2030 0.0 0.0 -fr 09_hydro_pump 2 173 2030 0.0 0.0 -fr 01_solar 2 174 2030 1.0 0.0 -fr 02_wind_on 2 174 2030 0.0 0.0 -fr 03_wind_off 2 174 2030 0.0 0.0 -fr 04_res 2 174 2030 0.0 0.0 -fr 05_nuclear 2 174 2030 0.0 0.0 -fr 06_coal 2 174 2030 0.0 0.0 -fr 07_gas 2 174 2030 0.0 0.0 -fr 08_non-res 2 174 2030 0.0 0.0 -fr 09_hydro_pump 2 174 2030 0.0 0.0 -fr 01_solar 2 175 2030 1.0 0.0 -fr 02_wind_on 2 175 2030 0.0 0.0 -fr 03_wind_off 2 175 2030 0.0 0.0 -fr 04_res 2 175 2030 0.0 0.0 -fr 05_nuclear 2 175 2030 0.0 0.0 -fr 06_coal 2 175 2030 0.0 0.0 -fr 07_gas 2 175 2030 0.0 0.0 -fr 08_non-res 2 175 2030 0.0 0.0 -fr 09_hydro_pump 2 175 2030 0.0 0.0 -fr 01_solar 2 176 2030 1.0 0.0 -fr 02_wind_on 2 176 2030 0.0 0.0 -fr 03_wind_off 2 176 2030 0.0 0.0 -fr 04_res 2 176 2030 0.0 0.0 -fr 05_nuclear 2 176 2030 0.0 0.0 -fr 06_coal 2 176 2030 0.0 0.0 -fr 07_gas 2 176 2030 0.0 0.0 -fr 08_non-res 2 176 2030 0.0 0.0 -fr 09_hydro_pump 2 176 2030 0.0 0.0 -fr 01_solar 2 177 2030 1.0 0.0 -fr 02_wind_on 2 177 2030 0.0 0.0 -fr 03_wind_off 2 177 2030 0.0 0.0 -fr 04_res 2 177 2030 0.0 0.0 -fr 05_nuclear 2 177 2030 0.0 0.0 -fr 06_coal 2 177 2030 0.0 0.0 -fr 07_gas 2 177 2030 0.0 0.0 -fr 08_non-res 2 177 2030 0.0 0.0 -fr 09_hydro_pump 2 177 2030 0.0 0.0 -fr 01_solar 2 178 2030 1.0 0.0 -fr 02_wind_on 2 178 2030 0.0 0.0 -fr 03_wind_off 2 178 2030 0.0 0.0 -fr 04_res 2 178 2030 0.0 0.0 -fr 05_nuclear 2 178 2030 0.0 0.0 -fr 06_coal 2 178 2030 0.0 0.0 -fr 07_gas 2 178 2030 0.0 0.0 -fr 08_non-res 2 178 2030 0.0 0.0 -fr 09_hydro_pump 2 178 2030 0.0 0.0 -fr 01_solar 2 179 2030 1.0 0.0 -fr 02_wind_on 2 179 2030 0.0 0.0 -fr 03_wind_off 2 179 2030 0.0 0.0 -fr 04_res 2 179 2030 0.0 0.0 -fr 05_nuclear 2 179 2030 0.0 0.0 -fr 06_coal 2 179 2030 0.0 0.0 -fr 07_gas 2 179 2030 0.0 0.0 -fr 08_non-res 2 179 2030 0.0 0.0 -fr 09_hydro_pump 2 179 2030 0.0 0.0 -fr 01_solar 2 180 2030 1.0 0.0 -fr 02_wind_on 2 180 2030 0.0 0.0 -fr 03_wind_off 2 180 2030 0.0 0.0 -fr 04_res 2 180 2030 0.0 0.0 -fr 05_nuclear 2 180 2030 0.0 0.0 -fr 06_coal 2 180 2030 0.0 0.0 -fr 07_gas 2 180 2030 0.0 0.0 -fr 08_non-res 2 180 2030 0.0 0.0 -fr 09_hydro_pump 2 180 2030 0.0 0.0 -fr 01_solar 2 181 2030 1.0 0.0 -fr 02_wind_on 2 181 2030 0.0 0.0 -fr 03_wind_off 2 181 2030 0.0 0.0 -fr 04_res 2 181 2030 0.0 0.0 -fr 05_nuclear 2 181 2030 0.0 0.0 -fr 06_coal 2 181 2030 0.0 0.0 -fr 07_gas 2 181 2030 0.0 0.0 -fr 08_non-res 2 181 2030 0.0 0.0 -fr 09_hydro_pump 2 181 2030 0.0 0.0 -fr 01_solar 2 182 2030 1.0 0.0 -fr 02_wind_on 2 182 2030 0.0 0.0 -fr 03_wind_off 2 182 2030 0.0 0.0 -fr 04_res 2 182 2030 0.0 0.0 -fr 05_nuclear 2 182 2030 0.0 0.0 -fr 06_coal 2 182 2030 0.0 0.0 -fr 07_gas 2 182 2030 0.0 0.0 -fr 08_non-res 2 182 2030 0.0 0.0 -fr 09_hydro_pump 2 182 2030 0.0 0.0 -fr 01_solar 2 183 2030 1.0 0.0 -fr 02_wind_on 2 183 2030 0.0 0.0 -fr 03_wind_off 2 183 2030 0.0 0.0 -fr 04_res 2 183 2030 0.0 0.0 -fr 05_nuclear 2 183 2030 0.0 0.0 -fr 06_coal 2 183 2030 0.0 0.0 -fr 07_gas 2 183 2030 0.0 0.0 -fr 08_non-res 2 183 2030 0.0 0.0 -fr 09_hydro_pump 2 183 2030 0.0 0.0 -fr 01_solar 2 184 2030 1.0 0.0 -fr 02_wind_on 2 184 2030 0.0 0.0 -fr 03_wind_off 2 184 2030 0.0 0.0 -fr 04_res 2 184 2030 0.0 0.0 -fr 05_nuclear 2 184 2030 0.0 0.0 -fr 06_coal 2 184 2030 0.0 0.0 -fr 07_gas 2 184 2030 0.0 0.0 -fr 08_non-res 2 184 2030 0.0 0.0 -fr 09_hydro_pump 2 184 2030 0.0 0.0 -fr 01_solar 2 185 2030 1.0 0.0 -fr 02_wind_on 2 185 2030 0.0 0.0 -fr 03_wind_off 2 185 2030 0.0 0.0 -fr 04_res 2 185 2030 0.0 0.0 -fr 05_nuclear 2 185 2030 0.0 0.0 -fr 06_coal 2 185 2030 0.0 0.0 -fr 07_gas 2 185 2030 0.0 0.0 -fr 08_non-res 2 185 2030 0.0 0.0 -fr 09_hydro_pump 2 185 2030 0.0 0.0 -fr 01_solar 2 186 2030 1.0 0.0 -fr 02_wind_on 2 186 2030 0.0 0.0 -fr 03_wind_off 2 186 2030 0.0 0.0 -fr 04_res 2 186 2030 0.0 0.0 -fr 05_nuclear 2 186 2030 0.0 0.0 -fr 06_coal 2 186 2030 0.0 0.0 -fr 07_gas 2 186 2030 0.0 0.0 -fr 08_non-res 2 186 2030 0.0 0.0 -fr 09_hydro_pump 2 186 2030 0.0 0.0 -fr 01_solar 2 187 2030 1.0 0.0 -fr 02_wind_on 2 187 2030 0.0 0.0 -fr 03_wind_off 2 187 2030 0.0 0.0 -fr 04_res 2 187 2030 0.0 0.0 -fr 05_nuclear 2 187 2030 0.0 0.0 -fr 06_coal 2 187 2030 0.0 0.0 -fr 07_gas 2 187 2030 0.0 0.0 -fr 08_non-res 2 187 2030 0.0 0.0 -fr 09_hydro_pump 2 187 2030 0.0 0.0 -fr 01_solar 2 188 2030 1.0 0.0 -fr 02_wind_on 2 188 2030 0.0 0.0 -fr 03_wind_off 2 188 2030 0.0 0.0 -fr 04_res 2 188 2030 0.0 0.0 -fr 05_nuclear 2 188 2030 0.0 0.0 -fr 06_coal 2 188 2030 0.0 0.0 -fr 07_gas 2 188 2030 0.0 0.0 -fr 08_non-res 2 188 2030 0.0 0.0 -fr 09_hydro_pump 2 188 2030 0.0 0.0 -fr 01_solar 2 189 2030 1.0 0.0 -fr 02_wind_on 2 189 2030 0.0 0.0 -fr 03_wind_off 2 189 2030 0.0 0.0 -fr 04_res 2 189 2030 0.0 0.0 -fr 05_nuclear 2 189 2030 0.0 0.0 -fr 06_coal 2 189 2030 0.0 0.0 -fr 07_gas 2 189 2030 0.0 0.0 -fr 08_non-res 2 189 2030 0.0 0.0 -fr 09_hydro_pump 2 189 2030 0.0 0.0 -fr 01_solar 2 190 2030 1.0 0.0 -fr 02_wind_on 2 190 2030 1.0 0.0 -fr 03_wind_off 2 190 2030 0.0 0.0 -fr 04_res 2 190 2030 0.0 0.0 -fr 05_nuclear 2 190 2030 0.0 0.0 -fr 06_coal 2 190 2030 0.0 0.0 -fr 07_gas 2 190 2030 0.0 0.0 -fr 08_non-res 2 190 2030 0.0 0.0 -fr 09_hydro_pump 2 190 2030 0.0 0.0 -fr 01_solar 2 191 2030 1.0 0.0 -fr 02_wind_on 2 191 2030 1.0 0.0 -fr 03_wind_off 2 191 2030 0.0 0.0 -fr 04_res 2 191 2030 0.0 0.0 -fr 05_nuclear 2 191 2030 0.0 0.0 -fr 06_coal 2 191 2030 0.0 0.0 -fr 07_gas 2 191 2030 0.0 0.0 -fr 08_non-res 2 191 2030 0.0 0.0 -fr 09_hydro_pump 2 191 2030 0.0 0.0 -fr 01_solar 2 192 2030 1.0 0.0 -fr 02_wind_on 2 192 2030 1.0 0.0 -fr 03_wind_off 2 192 2030 0.0 0.0 -fr 04_res 2 192 2030 0.0 0.0 -fr 05_nuclear 2 192 2030 0.0 0.0 -fr 06_coal 2 192 2030 0.0 0.0 -fr 07_gas 2 192 2030 0.0 0.0 -fr 08_non-res 2 192 2030 0.0 0.0 -fr 09_hydro_pump 2 192 2030 0.0 0.0 -fr 01_solar 2 193 2030 1.0 0.0 -fr 02_wind_on 2 193 2030 1.0 0.0 -fr 03_wind_off 2 193 2030 0.0 0.0 -fr 04_res 2 193 2030 0.0 0.0 -fr 05_nuclear 2 193 2030 0.0 0.0 -fr 06_coal 2 193 2030 0.0 0.0 -fr 07_gas 2 193 2030 0.0 0.0 -fr 08_non-res 2 193 2030 0.0 0.0 -fr 09_hydro_pump 2 193 2030 0.0 0.0 -fr 01_solar 2 194 2030 1.0 0.0 -fr 02_wind_on 2 194 2030 1.0 0.0 -fr 03_wind_off 2 194 2030 0.0 0.0 -fr 04_res 2 194 2030 0.0 0.0 -fr 05_nuclear 2 194 2030 0.0 0.0 -fr 06_coal 2 194 2030 0.0 0.0 -fr 07_gas 2 194 2030 0.0 0.0 -fr 08_non-res 2 194 2030 0.0 0.0 -fr 09_hydro_pump 2 194 2030 0.0 0.0 -fr 01_solar 2 195 2030 1.0 0.0 -fr 02_wind_on 2 195 2030 1.0 0.0 -fr 03_wind_off 2 195 2030 0.0 0.0 -fr 04_res 2 195 2030 0.0 0.0 -fr 05_nuclear 2 195 2030 0.0 0.0 -fr 06_coal 2 195 2030 0.0 0.0 -fr 07_gas 2 195 2030 0.0 0.0 -fr 08_non-res 2 195 2030 0.0 0.0 -fr 09_hydro_pump 2 195 2030 0.0 0.0 -fr 01_solar 2 196 2030 1.0 0.0 -fr 02_wind_on 2 196 2030 1.0 0.0 -fr 03_wind_off 2 196 2030 0.0 0.0 -fr 04_res 2 196 2030 0.0 0.0 -fr 05_nuclear 2 196 2030 0.0 0.0 -fr 06_coal 2 196 2030 0.0 0.0 -fr 07_gas 2 196 2030 0.0 0.0 -fr 08_non-res 2 196 2030 0.0 0.0 -fr 09_hydro_pump 2 196 2030 0.0 0.0 -fr 01_solar 2 197 2030 1.0 0.0 -fr 02_wind_on 2 197 2030 1.0 0.0 -fr 03_wind_off 2 197 2030 0.0 0.0 -fr 04_res 2 197 2030 0.0 0.0 -fr 05_nuclear 2 197 2030 0.0 0.0 -fr 06_coal 2 197 2030 0.0 0.0 -fr 07_gas 2 197 2030 0.0 0.0 -fr 08_non-res 2 197 2030 0.0 0.0 -fr 09_hydro_pump 2 197 2030 0.0 0.0 -fr 01_solar 2 198 2030 1.0 0.0 -fr 02_wind_on 2 198 2030 1.0 0.0 -fr 03_wind_off 2 198 2030 0.0 0.0 -fr 04_res 2 198 2030 0.0 0.0 -fr 05_nuclear 2 198 2030 0.0 0.0 -fr 06_coal 2 198 2030 0.0 0.0 -fr 07_gas 2 198 2030 0.0 0.0 -fr 08_non-res 2 198 2030 0.0 0.0 -fr 09_hydro_pump 2 198 2030 0.0 0.0 -fr 01_solar 2 199 2030 1.0 0.0 -fr 02_wind_on 2 199 2030 1.0 0.0 -fr 03_wind_off 2 199 2030 0.0 0.0 -fr 04_res 2 199 2030 0.0 0.0 -fr 05_nuclear 2 199 2030 0.0 0.0 -fr 06_coal 2 199 2030 0.0 0.0 -fr 07_gas 2 199 2030 0.0 0.0 -fr 08_non-res 2 199 2030 0.0 0.0 -fr 09_hydro_pump 2 199 2030 0.0 0.0 -fr 01_solar 2 200 2030 1.0 0.0 -fr 02_wind_on 2 200 2030 1.0 0.0 -fr 03_wind_off 2 200 2030 0.0 0.0 -fr 04_res 2 200 2030 0.0 0.0 -fr 05_nuclear 2 200 2030 0.0 0.0 -fr 06_coal 2 200 2030 0.0 0.0 -fr 07_gas 2 200 2030 0.0 0.0 -fr 08_non-res 2 200 2030 0.0 0.0 -fr 09_hydro_pump 2 200 2030 0.0 0.0 -fr 01_solar 2 201 2030 1.0 0.0 -fr 02_wind_on 2 201 2030 1.0 0.0 -fr 03_wind_off 2 201 2030 0.0 0.0 -fr 04_res 2 201 2030 0.0 0.0 -fr 05_nuclear 2 201 2030 0.0 0.0 -fr 06_coal 2 201 2030 0.0 0.0 -fr 07_gas 2 201 2030 0.0 0.0 -fr 08_non-res 2 201 2030 0.0 0.0 -fr 09_hydro_pump 2 201 2030 0.0 0.0 -fr 01_solar 2 202 2030 1.0 0.0 -fr 02_wind_on 2 202 2030 1.0 0.0 -fr 03_wind_off 2 202 2030 0.0 0.0 -fr 04_res 2 202 2030 0.0 0.0 -fr 05_nuclear 2 202 2030 0.0 0.0 -fr 06_coal 2 202 2030 0.0 0.0 -fr 07_gas 2 202 2030 0.0 0.0 -fr 08_non-res 2 202 2030 0.0 0.0 -fr 09_hydro_pump 2 202 2030 0.0 0.0 -fr 01_solar 2 203 2030 1.0 0.0 -fr 02_wind_on 2 203 2030 1.0 0.0 -fr 03_wind_off 2 203 2030 0.0 0.0 -fr 04_res 2 203 2030 0.0 0.0 -fr 05_nuclear 2 203 2030 0.0 0.0 -fr 06_coal 2 203 2030 0.0 0.0 -fr 07_gas 2 203 2030 0.0 0.0 -fr 08_non-res 2 203 2030 0.0 0.0 -fr 09_hydro_pump 2 203 2030 0.0 0.0 -fr 01_solar 2 204 2030 1.0 0.0 -fr 02_wind_on 2 204 2030 1.0 0.0 -fr 03_wind_off 2 204 2030 0.0 0.0 -fr 04_res 2 204 2030 0.0 0.0 -fr 05_nuclear 2 204 2030 0.0 0.0 -fr 06_coal 2 204 2030 0.0 0.0 -fr 07_gas 2 204 2030 0.0 0.0 -fr 08_non-res 2 204 2030 0.0 0.0 -fr 09_hydro_pump 2 204 2030 0.0 0.0 -fr 01_solar 2 205 2030 1.0 0.0 -fr 02_wind_on 2 205 2030 1.0 0.0 -fr 03_wind_off 2 205 2030 0.0 0.0 -fr 04_res 2 205 2030 0.0 0.0 -fr 05_nuclear 2 205 2030 0.0 0.0 -fr 06_coal 2 205 2030 0.0 0.0 -fr 07_gas 2 205 2030 0.0 0.0 -fr 08_non-res 2 205 2030 0.0 0.0 -fr 09_hydro_pump 2 205 2030 0.0 0.0 -fr 01_solar 2 206 2030 1.0 0.0 -fr 02_wind_on 2 206 2030 1.0 0.0 -fr 03_wind_off 2 206 2030 0.0 0.0 -fr 04_res 2 206 2030 0.0 0.0 -fr 05_nuclear 2 206 2030 0.0 0.0 -fr 06_coal 2 206 2030 0.0 0.0 -fr 07_gas 2 206 2030 0.0 0.0 -fr 08_non-res 2 206 2030 0.0 0.0 -fr 09_hydro_pump 2 206 2030 0.0 0.0 -fr 01_solar 2 207 2030 1.0 0.0 -fr 02_wind_on 2 207 2030 1.0 0.0 -fr 03_wind_off 2 207 2030 0.0 0.0 -fr 04_res 2 207 2030 0.0 0.0 -fr 05_nuclear 2 207 2030 0.0 0.0 -fr 06_coal 2 207 2030 0.0 0.0 -fr 07_gas 2 207 2030 0.0 0.0 -fr 08_non-res 2 207 2030 0.0 0.0 -fr 09_hydro_pump 2 207 2030 0.0 0.0 -fr 01_solar 2 208 2030 1.0 0.0 -fr 02_wind_on 2 208 2030 1.0 0.0 -fr 03_wind_off 2 208 2030 0.0 0.0 -fr 04_res 2 208 2030 0.0 0.0 -fr 05_nuclear 2 208 2030 0.0 0.0 -fr 06_coal 2 208 2030 0.0 0.0 -fr 07_gas 2 208 2030 0.0 0.0 -fr 08_non-res 2 208 2030 0.0 0.0 -fr 09_hydro_pump 2 208 2030 0.0 0.0 -fr 01_solar 2 209 2030 1.0 0.0 -fr 02_wind_on 2 209 2030 1.0 0.0 -fr 03_wind_off 2 209 2030 0.0 0.0 -fr 04_res 2 209 2030 0.0 0.0 -fr 05_nuclear 2 209 2030 0.0 0.0 -fr 06_coal 2 209 2030 0.0 0.0 -fr 07_gas 2 209 2030 0.0 0.0 -fr 08_non-res 2 209 2030 0.0 0.0 -fr 09_hydro_pump 2 209 2030 0.0 0.0 -fr 01_solar 2 210 2030 1.0 0.0 -fr 02_wind_on 2 210 2030 1.0 0.0 -fr 03_wind_off 2 210 2030 1.0 0.0 -fr 04_res 2 210 2030 0.0 0.0 -fr 05_nuclear 2 210 2030 0.0 0.0 -fr 06_coal 2 210 2030 0.0 0.0 -fr 07_gas 2 210 2030 0.0 0.0 -fr 08_non-res 2 210 2030 0.0 0.0 -fr 09_hydro_pump 2 210 2030 0.0 0.0 -fr 01_solar 2 211 2030 1.0 0.0 -fr 02_wind_on 2 211 2030 1.0 0.0 -fr 03_wind_off 2 211 2030 1.0 0.0 -fr 04_res 2 211 2030 0.0 0.0 -fr 05_nuclear 2 211 2030 0.0 0.0 -fr 06_coal 2 211 2030 0.0 0.0 -fr 07_gas 2 211 2030 0.0 0.0 -fr 08_non-res 2 211 2030 0.0 0.0 -fr 09_hydro_pump 2 211 2030 0.0 0.0 -fr 01_solar 2 212 2030 1.0 0.0 -fr 02_wind_on 2 212 2030 1.0 0.0 -fr 03_wind_off 2 212 2030 1.0 0.0 -fr 04_res 2 212 2030 0.0 0.0 -fr 05_nuclear 2 212 2030 0.0 0.0 -fr 06_coal 2 212 2030 0.0 0.0 -fr 07_gas 2 212 2030 0.0 0.0 -fr 08_non-res 2 212 2030 0.0 0.0 -fr 09_hydro_pump 2 212 2030 0.0 0.0 -fr 01_solar 2 213 2030 1.0 0.0 -fr 02_wind_on 2 213 2030 1.0 0.0 -fr 03_wind_off 2 213 2030 1.0 0.0 -fr 04_res 2 213 2030 0.0 0.0 -fr 05_nuclear 2 213 2030 0.0 0.0 -fr 06_coal 2 213 2030 0.0 0.0 -fr 07_gas 2 213 2030 0.0 0.0 -fr 08_non-res 2 213 2030 0.0 0.0 -fr 09_hydro_pump 2 213 2030 0.0 0.0 -fr 01_solar 2 214 2030 1.0 0.0 -fr 02_wind_on 2 214 2030 1.0 0.0 -fr 03_wind_off 2 214 2030 1.0 0.0 -fr 04_res 2 214 2030 0.0 0.0 -fr 05_nuclear 2 214 2030 0.0 0.0 -fr 06_coal 2 214 2030 0.0 0.0 -fr 07_gas 2 214 2030 0.0 0.0 -fr 08_non-res 2 214 2030 0.0 0.0 -fr 09_hydro_pump 2 214 2030 0.0 0.0 -fr 01_solar 2 215 2030 1.0 0.0 -fr 02_wind_on 2 215 2030 1.0 0.0 -fr 03_wind_off 2 215 2030 1.0 0.0 -fr 04_res 2 215 2030 0.0 0.0 -fr 05_nuclear 2 215 2030 0.0 0.0 -fr 06_coal 2 215 2030 0.0 0.0 -fr 07_gas 2 215 2030 0.0 0.0 -fr 08_non-res 2 215 2030 0.0 0.0 -fr 09_hydro_pump 2 215 2030 0.0 0.0 -fr 01_solar 2 216 2030 1.0 0.0 -fr 02_wind_on 2 216 2030 1.0 0.0 -fr 03_wind_off 2 216 2030 1.0 0.0 -fr 04_res 2 216 2030 0.0 0.0 -fr 05_nuclear 2 216 2030 0.0 0.0 -fr 06_coal 2 216 2030 0.0 0.0 -fr 07_gas 2 216 2030 0.0 0.0 -fr 08_non-res 2 216 2030 0.0 0.0 -fr 09_hydro_pump 2 216 2030 0.0 0.0 -fr 01_solar 2 217 2030 1.0 0.0 -fr 02_wind_on 2 217 2030 1.0 0.0 -fr 03_wind_off 2 217 2030 1.0 0.0 -fr 04_res 2 217 2030 0.0 0.0 -fr 05_nuclear 2 217 2030 0.0 0.0 -fr 06_coal 2 217 2030 0.0 0.0 -fr 07_gas 2 217 2030 0.0 0.0 -fr 08_non-res 2 217 2030 0.0 0.0 -fr 09_hydro_pump 2 217 2030 0.0 0.0 -fr 01_solar 2 218 2030 1.0 0.0 -fr 02_wind_on 2 218 2030 1.0 0.0 -fr 03_wind_off 2 218 2030 1.0 0.0 -fr 04_res 2 218 2030 0.0 0.0 -fr 05_nuclear 2 218 2030 0.0 0.0 -fr 06_coal 2 218 2030 0.0 0.0 -fr 07_gas 2 218 2030 0.0 0.0 -fr 08_non-res 2 218 2030 0.0 0.0 -fr 09_hydro_pump 2 218 2030 0.0 0.0 -fr 01_solar 2 219 2030 1.0 0.0 -fr 02_wind_on 2 219 2030 1.0 0.0 -fr 03_wind_off 2 219 2030 1.0 0.0 -fr 04_res 2 219 2030 0.0 0.0 -fr 05_nuclear 2 219 2030 0.0 0.0 -fr 06_coal 2 219 2030 0.0 0.0 -fr 07_gas 2 219 2030 0.0 0.0 -fr 08_non-res 2 219 2030 0.0 0.0 -fr 09_hydro_pump 2 219 2030 0.0 0.0 -fr 01_solar 2 220 2030 1.0 0.0 -fr 02_wind_on 2 220 2030 1.0 0.0 -fr 03_wind_off 2 220 2030 1.0 0.0 -fr 04_res 2 220 2030 0.0 0.0 -fr 05_nuclear 2 220 2030 0.0 0.0 -fr 06_coal 2 220 2030 0.0 0.0 -fr 07_gas 2 220 2030 0.0 0.0 -fr 08_non-res 2 220 2030 0.0 0.0 -fr 09_hydro_pump 2 220 2030 0.0 0.0 -fr 01_solar 2 221 2030 1.0 0.0 -fr 02_wind_on 2 221 2030 1.0 0.0 -fr 03_wind_off 2 221 2030 1.0 0.0 -fr 04_res 2 221 2030 0.0 0.0 -fr 05_nuclear 2 221 2030 0.0 0.0 -fr 06_coal 2 221 2030 0.0 0.0 -fr 07_gas 2 221 2030 0.0 0.0 -fr 08_non-res 2 221 2030 0.0 0.0 -fr 09_hydro_pump 2 221 2030 0.0 0.0 -fr 01_solar 2 222 2030 1.0 0.0 -fr 02_wind_on 2 222 2030 1.0 0.0 -fr 03_wind_off 2 222 2030 1.0 0.0 -fr 04_res 2 222 2030 0.0 0.0 -fr 05_nuclear 2 222 2030 0.0 0.0 -fr 06_coal 2 222 2030 0.0 0.0 -fr 07_gas 2 222 2030 0.0 0.0 -fr 08_non-res 2 222 2030 0.0 0.0 -fr 09_hydro_pump 2 222 2030 0.0 0.0 -fr 01_solar 2 223 2030 1.0 0.0 -fr 02_wind_on 2 223 2030 1.0 0.0 -fr 03_wind_off 2 223 2030 1.0 0.0 -fr 04_res 2 223 2030 0.0 0.0 -fr 05_nuclear 2 223 2030 0.0 0.0 -fr 06_coal 2 223 2030 0.0 0.0 -fr 07_gas 2 223 2030 0.0 0.0 -fr 08_non-res 2 223 2030 0.0 0.0 -fr 09_hydro_pump 2 223 2030 0.0 0.0 -fr 01_solar 2 224 2030 1.0 0.0 -fr 02_wind_on 2 224 2030 1.0 0.0 -fr 03_wind_off 2 224 2030 1.0 0.0 -fr 04_res 2 224 2030 0.0 0.0 -fr 05_nuclear 2 224 2030 0.0 0.0 -fr 06_coal 2 224 2030 0.0 0.0 -fr 07_gas 2 224 2030 0.0 0.0 -fr 08_non-res 2 224 2030 0.0 0.0 -fr 09_hydro_pump 2 224 2030 0.0 0.0 -fr 01_solar 2 225 2030 1.0 0.0 -fr 02_wind_on 2 225 2030 1.0 0.0 -fr 03_wind_off 2 225 2030 1.0 0.0 -fr 04_res 2 225 2030 0.0 0.0 -fr 05_nuclear 2 225 2030 0.0 0.0 -fr 06_coal 2 225 2030 0.0 0.0 -fr 07_gas 2 225 2030 0.0 0.0 -fr 08_non-res 2 225 2030 0.0 0.0 -fr 09_hydro_pump 2 225 2030 0.0 0.0 -fr 01_solar 2 226 2030 1.0 0.0 -fr 02_wind_on 2 226 2030 1.0 0.0 -fr 03_wind_off 2 226 2030 1.0 0.0 -fr 04_res 2 226 2030 0.0 0.0 -fr 05_nuclear 2 226 2030 0.0 0.0 -fr 06_coal 2 226 2030 0.0 0.0 -fr 07_gas 2 226 2030 0.0 0.0 -fr 08_non-res 2 226 2030 0.0 0.0 -fr 09_hydro_pump 2 226 2030 0.0 0.0 -fr 01_solar 2 227 2030 1.0 0.0 -fr 02_wind_on 2 227 2030 1.0 0.0 -fr 03_wind_off 2 227 2030 1.0 0.0 -fr 04_res 2 227 2030 0.0 0.0 -fr 05_nuclear 2 227 2030 0.0 0.0 -fr 06_coal 2 227 2030 0.0 0.0 -fr 07_gas 2 227 2030 0.0 0.0 -fr 08_non-res 2 227 2030 0.0 0.0 -fr 09_hydro_pump 2 227 2030 0.0 0.0 -fr 01_solar 2 228 2030 1.0 0.0 -fr 02_wind_on 2 228 2030 1.0 0.0 -fr 03_wind_off 2 228 2030 1.0 0.0 -fr 04_res 2 228 2030 0.0 0.0 -fr 05_nuclear 2 228 2030 0.0 0.0 -fr 06_coal 2 228 2030 0.0 0.0 -fr 07_gas 2 228 2030 0.0 0.0 -fr 08_non-res 2 228 2030 0.0 0.0 -fr 09_hydro_pump 2 228 2030 0.0 0.0 -fr 01_solar 2 229 2030 1.0 0.0 -fr 02_wind_on 2 229 2030 1.0 0.0 -fr 03_wind_off 2 229 2030 1.0 0.0 -fr 04_res 2 229 2030 0.0 0.0 -fr 05_nuclear 2 229 2030 0.0 0.0 -fr 06_coal 2 229 2030 0.0 0.0 -fr 07_gas 2 229 2030 0.0 0.0 -fr 08_non-res 2 229 2030 0.0 0.0 -fr 09_hydro_pump 2 229 2030 0.0 0.0 -fr 01_solar 2 230 2030 1.0 0.0 -fr 02_wind_on 2 230 2030 1.0 0.0 -fr 03_wind_off 2 230 2030 1.0 0.0 -fr 04_res 2 230 2030 1.0 0.0 -fr 05_nuclear 2 230 2030 0.0 0.0 -fr 06_coal 2 230 2030 0.0 0.0 -fr 07_gas 2 230 2030 0.0 0.0 -fr 08_non-res 2 230 2030 0.0 0.0 -fr 09_hydro_pump 2 230 2030 0.0 0.0 -fr 01_solar 2 231 2030 1.0 0.0 -fr 02_wind_on 2 231 2030 1.0 0.0 -fr 03_wind_off 2 231 2030 1.0 0.0 -fr 04_res 2 231 2030 1.0 0.0 -fr 05_nuclear 2 231 2030 0.0 0.0 -fr 06_coal 2 231 2030 0.0 0.0 -fr 07_gas 2 231 2030 0.0 0.0 -fr 08_non-res 2 231 2030 0.0 0.0 -fr 09_hydro_pump 2 231 2030 0.0 0.0 -fr 01_solar 2 232 2030 1.0 0.0 -fr 02_wind_on 2 232 2030 1.0 0.0 -fr 03_wind_off 2 232 2030 1.0 0.0 -fr 04_res 2 232 2030 1.0 0.0 -fr 05_nuclear 2 232 2030 0.0 0.0 -fr 06_coal 2 232 2030 0.0 0.0 -fr 07_gas 2 232 2030 0.0 0.0 -fr 08_non-res 2 232 2030 0.0 0.0 -fr 09_hydro_pump 2 232 2030 0.0 0.0 -fr 01_solar 2 233 2030 1.0 0.0 -fr 02_wind_on 2 233 2030 1.0 0.0 -fr 03_wind_off 2 233 2030 1.0 0.0 -fr 04_res 2 233 2030 1.0 0.0 -fr 05_nuclear 2 233 2030 0.0 0.0 -fr 06_coal 2 233 2030 0.0 0.0 -fr 07_gas 2 233 2030 0.0 0.0 -fr 08_non-res 2 233 2030 0.0 0.0 -fr 09_hydro_pump 2 233 2030 0.0 0.0 -fr 01_solar 2 234 2030 1.0 0.0 -fr 02_wind_on 2 234 2030 1.0 0.0 -fr 03_wind_off 2 234 2030 1.0 0.0 -fr 04_res 2 234 2030 1.0 0.0 -fr 05_nuclear 2 234 2030 0.0 0.0 -fr 06_coal 2 234 2030 0.0 0.0 -fr 07_gas 2 234 2030 0.0 0.0 -fr 08_non-res 2 234 2030 0.0 0.0 -fr 09_hydro_pump 2 234 2030 0.0 0.0 -fr 01_solar 2 235 2030 1.0 0.0 -fr 02_wind_on 2 235 2030 1.0 0.0 -fr 03_wind_off 2 235 2030 1.0 0.0 -fr 04_res 2 235 2030 1.0 0.0 -fr 05_nuclear 2 235 2030 0.0 0.0 -fr 06_coal 2 235 2030 0.0 0.0 -fr 07_gas 2 235 2030 0.0 0.0 -fr 08_non-res 2 235 2030 0.0 0.0 -fr 09_hydro_pump 2 235 2030 0.0 0.0 -fr 01_solar 2 236 2030 1.0 0.0 -fr 02_wind_on 2 236 2030 1.0 0.0 -fr 03_wind_off 2 236 2030 1.0 0.0 -fr 04_res 2 236 2030 1.0 0.0 -fr 05_nuclear 2 236 2030 0.0 0.0 -fr 06_coal 2 236 2030 0.0 0.0 -fr 07_gas 2 236 2030 0.0 0.0 -fr 08_non-res 2 236 2030 0.0 0.0 -fr 09_hydro_pump 2 236 2030 0.0 0.0 -fr 01_solar 2 237 2030 1.0 0.0 -fr 02_wind_on 2 237 2030 1.0 0.0 -fr 03_wind_off 2 237 2030 1.0 0.0 -fr 04_res 2 237 2030 1.0 0.0 -fr 05_nuclear 2 237 2030 0.0 0.0 -fr 06_coal 2 237 2030 0.0 0.0 -fr 07_gas 2 237 2030 0.0 0.0 -fr 08_non-res 2 237 2030 0.0 0.0 -fr 09_hydro_pump 2 237 2030 0.0 0.0 -fr 01_solar 2 238 2030 1.0 0.0 -fr 02_wind_on 2 238 2030 1.0 0.0 -fr 03_wind_off 2 238 2030 1.0 0.0 -fr 04_res 2 238 2030 1.0 0.0 -fr 05_nuclear 2 238 2030 0.0 0.0 -fr 06_coal 2 238 2030 0.0 0.0 -fr 07_gas 2 238 2030 0.0 0.0 -fr 08_non-res 2 238 2030 0.0 0.0 -fr 09_hydro_pump 2 238 2030 0.0 0.0 -fr 01_solar 2 239 2030 1.0 0.0 -fr 02_wind_on 2 239 2030 1.0 0.0 -fr 03_wind_off 2 239 2030 1.0 0.0 -fr 04_res 2 239 2030 1.0 0.0 -fr 05_nuclear 2 239 2030 0.0 0.0 -fr 06_coal 2 239 2030 0.0 0.0 -fr 07_gas 2 239 2030 0.0 0.0 -fr 08_non-res 2 239 2030 0.0 0.0 -fr 09_hydro_pump 2 239 2030 0.0 0.0 -fr 01_solar 2 240 2030 1.0 0.0 -fr 02_wind_on 2 240 2030 1.0 0.0 -fr 03_wind_off 2 240 2030 1.0 0.0 -fr 04_res 2 240 2030 1.0 0.0 -fr 05_nuclear 2 240 2030 0.0 0.0 -fr 06_coal 2 240 2030 0.0 0.0 -fr 07_gas 2 240 2030 0.0 0.0 -fr 08_non-res 2 240 2030 0.0 0.0 -fr 09_hydro_pump 2 240 2030 0.0 0.0 -fr 01_solar 2 241 2030 1.0 0.0 -fr 02_wind_on 2 241 2030 1.0 0.0 -fr 03_wind_off 2 241 2030 1.0 0.0 -fr 04_res 2 241 2030 1.0 0.0 -fr 05_nuclear 2 241 2030 0.0 0.0 -fr 06_coal 2 241 2030 0.0 0.0 -fr 07_gas 2 241 2030 0.0 0.0 -fr 08_non-res 2 241 2030 0.0 0.0 -fr 09_hydro_pump 2 241 2030 0.0 0.0 -fr 01_solar 2 242 2030 1.0 0.0 -fr 02_wind_on 2 242 2030 1.0 0.0 -fr 03_wind_off 2 242 2030 1.0 0.0 -fr 04_res 2 242 2030 1.0 0.0 -fr 05_nuclear 2 242 2030 0.0 0.0 -fr 06_coal 2 242 2030 0.0 0.0 -fr 07_gas 2 242 2030 0.0 0.0 -fr 08_non-res 2 242 2030 0.0 0.0 -fr 09_hydro_pump 2 242 2030 0.0 0.0 -fr 01_solar 2 243 2030 1.0 0.0 -fr 02_wind_on 2 243 2030 1.0 0.0 -fr 03_wind_off 2 243 2030 1.0 0.0 -fr 04_res 2 243 2030 1.0 0.0 -fr 05_nuclear 2 243 2030 0.0 0.0 -fr 06_coal 2 243 2030 0.0 0.0 -fr 07_gas 2 243 2030 0.0 0.0 -fr 08_non-res 2 243 2030 0.0 0.0 -fr 09_hydro_pump 2 243 2030 0.0 0.0 -fr 01_solar 2 244 2030 1.0 0.0 -fr 02_wind_on 2 244 2030 1.0 0.0 -fr 03_wind_off 2 244 2030 1.0 0.0 -fr 04_res 2 244 2030 1.0 0.0 -fr 05_nuclear 2 244 2030 0.0 0.0 -fr 06_coal 2 244 2030 0.0 0.0 -fr 07_gas 2 244 2030 0.0 0.0 -fr 08_non-res 2 244 2030 0.0 0.0 -fr 09_hydro_pump 2 244 2030 0.0 0.0 -fr 01_solar 2 245 2030 1.0 0.0 -fr 02_wind_on 2 245 2030 1.0 0.0 -fr 03_wind_off 2 245 2030 1.0 0.0 -fr 04_res 2 245 2030 1.0 0.0 -fr 05_nuclear 2 245 2030 0.0 0.0 -fr 06_coal 2 245 2030 0.0 0.0 -fr 07_gas 2 245 2030 0.0 0.0 -fr 08_non-res 2 245 2030 0.0 0.0 -fr 09_hydro_pump 2 245 2030 0.0 0.0 -fr 01_solar 2 246 2030 1.0 0.0 -fr 02_wind_on 2 246 2030 1.0 0.0 -fr 03_wind_off 2 246 2030 1.0 0.0 -fr 04_res 2 246 2030 1.0 0.0 -fr 05_nuclear 2 246 2030 0.0 0.0 -fr 06_coal 2 246 2030 0.0 0.0 -fr 07_gas 2 246 2030 0.0 0.0 -fr 08_non-res 2 246 2030 0.0 0.0 -fr 09_hydro_pump 2 246 2030 0.0 0.0 -fr 01_solar 2 247 2030 1.0 0.0 -fr 02_wind_on 2 247 2030 1.0 0.0 -fr 03_wind_off 2 247 2030 1.0 0.0 -fr 04_res 2 247 2030 1.0 0.0 -fr 05_nuclear 2 247 2030 0.0 0.0 -fr 06_coal 2 247 2030 0.0 0.0 -fr 07_gas 2 247 2030 0.0 0.0 -fr 08_non-res 2 247 2030 0.0 0.0 -fr 09_hydro_pump 2 247 2030 0.0 0.0 -fr 01_solar 2 248 2030 1.0 0.0 -fr 02_wind_on 2 248 2030 1.0 0.0 -fr 03_wind_off 2 248 2030 1.0 0.0 -fr 04_res 2 248 2030 1.0 0.0 -fr 05_nuclear 2 248 2030 0.0 0.0 -fr 06_coal 2 248 2030 0.0 0.0 -fr 07_gas 2 248 2030 0.0 0.0 -fr 08_non-res 2 248 2030 0.0 0.0 -fr 09_hydro_pump 2 248 2030 0.0 0.0 -fr 01_solar 2 249 2030 1.0 0.0 -fr 02_wind_on 2 249 2030 1.0 0.0 -fr 03_wind_off 2 249 2030 1.0 0.0 -fr 04_res 2 249 2030 1.0 0.0 -fr 05_nuclear 2 249 2030 0.0 0.0 -fr 06_coal 2 249 2030 0.0 0.0 -fr 07_gas 2 249 2030 0.0 0.0 -fr 08_non-res 2 249 2030 0.0 0.0 -fr 09_hydro_pump 2 249 2030 0.0 0.0 -fr 01_solar 2 250 2030 1.0 0.0 -fr 02_wind_on 2 250 2030 1.0 0.0 -fr 03_wind_off 2 250 2030 1.0 0.0 -fr 04_res 2 250 2030 1.0 0.0 -fr 05_nuclear 2 250 2030 1.0 0.0 -fr 06_coal 2 250 2030 0.0 0.0 -fr 07_gas 2 250 2030 0.0 0.0 -fr 08_non-res 2 250 2030 0.0 0.0 -fr 09_hydro_pump 2 250 2030 0.0 0.0 -fr 01_solar 2 251 2030 1.0 0.0 -fr 02_wind_on 2 251 2030 1.0 0.0 -fr 03_wind_off 2 251 2030 1.0 0.0 -fr 04_res 2 251 2030 1.0 0.0 -fr 05_nuclear 2 251 2030 1.0 0.0 -fr 06_coal 2 251 2030 0.0 0.0 -fr 07_gas 2 251 2030 0.0 0.0 -fr 08_non-res 2 251 2030 0.0 0.0 -fr 09_hydro_pump 2 251 2030 0.0 0.0 -fr 01_solar 2 252 2030 1.0 0.0 -fr 02_wind_on 2 252 2030 1.0 0.0 -fr 03_wind_off 2 252 2030 1.0 0.0 -fr 04_res 2 252 2030 1.0 0.0 -fr 05_nuclear 2 252 2030 1.0 0.0 -fr 06_coal 2 252 2030 0.0 0.0 -fr 07_gas 2 252 2030 0.0 0.0 -fr 08_non-res 2 252 2030 0.0 0.0 -fr 09_hydro_pump 2 252 2030 0.0 0.0 -fr 01_solar 2 253 2030 1.0 0.0 -fr 02_wind_on 2 253 2030 1.0 0.0 -fr 03_wind_off 2 253 2030 1.0 0.0 -fr 04_res 2 253 2030 1.0 0.0 -fr 05_nuclear 2 253 2030 1.0 0.0 -fr 06_coal 2 253 2030 0.0 0.0 -fr 07_gas 2 253 2030 0.0 0.0 -fr 08_non-res 2 253 2030 0.0 0.0 -fr 09_hydro_pump 2 253 2030 0.0 0.0 -fr 01_solar 2 254 2030 1.0 0.0 -fr 02_wind_on 2 254 2030 1.0 0.0 -fr 03_wind_off 2 254 2030 1.0 0.0 -fr 04_res 2 254 2030 1.0 0.0 -fr 05_nuclear 2 254 2030 1.0 0.0 -fr 06_coal 2 254 2030 0.0 0.0 -fr 07_gas 2 254 2030 0.0 0.0 -fr 08_non-res 2 254 2030 0.0 0.0 -fr 09_hydro_pump 2 254 2030 0.0 0.0 -fr 01_solar 2 255 2030 1.0 0.0 -fr 02_wind_on 2 255 2030 1.0 0.0 -fr 03_wind_off 2 255 2030 1.0 0.0 -fr 04_res 2 255 2030 1.0 0.0 -fr 05_nuclear 2 255 2030 1.0 0.0 -fr 06_coal 2 255 2030 0.0 0.0 -fr 07_gas 2 255 2030 0.0 0.0 -fr 08_non-res 2 255 2030 0.0 0.0 -fr 09_hydro_pump 2 255 2030 0.0 0.0 -fr 01_solar 2 256 2030 1.0 0.0 -fr 02_wind_on 2 256 2030 1.0 0.0 -fr 03_wind_off 2 256 2030 1.0 0.0 -fr 04_res 2 256 2030 1.0 0.0 -fr 05_nuclear 2 256 2030 1.0 0.0 -fr 06_coal 2 256 2030 0.0 0.0 -fr 07_gas 2 256 2030 0.0 0.0 -fr 08_non-res 2 256 2030 0.0 0.0 -fr 09_hydro_pump 2 256 2030 0.0 0.0 -fr 01_solar 2 257 2030 1.0 0.0 -fr 02_wind_on 2 257 2030 1.0 0.0 -fr 03_wind_off 2 257 2030 1.0 0.0 -fr 04_res 2 257 2030 1.0 0.0 -fr 05_nuclear 2 257 2030 1.0 0.0 -fr 06_coal 2 257 2030 0.0 0.0 -fr 07_gas 2 257 2030 0.0 0.0 -fr 08_non-res 2 257 2030 0.0 0.0 -fr 09_hydro_pump 2 257 2030 0.0 0.0 -fr 01_solar 2 258 2030 1.0 0.0 -fr 02_wind_on 2 258 2030 1.0 0.0 -fr 03_wind_off 2 258 2030 1.0 0.0 -fr 04_res 2 258 2030 1.0 0.0 -fr 05_nuclear 2 258 2030 1.0 0.0 -fr 06_coal 2 258 2030 0.0 0.0 -fr 07_gas 2 258 2030 0.0 0.0 -fr 08_non-res 2 258 2030 0.0 0.0 -fr 09_hydro_pump 2 258 2030 0.0 0.0 -fr 01_solar 2 259 2030 1.0 0.0 -fr 02_wind_on 2 259 2030 1.0 0.0 -fr 03_wind_off 2 259 2030 1.0 0.0 -fr 04_res 2 259 2030 1.0 0.0 -fr 05_nuclear 2 259 2030 1.0 0.0 -fr 06_coal 2 259 2030 0.0 0.0 -fr 07_gas 2 259 2030 0.0 0.0 -fr 08_non-res 2 259 2030 0.0 0.0 -fr 09_hydro_pump 2 259 2030 0.0 0.0 -fr 01_solar 2 260 2030 1.0 0.0 -fr 02_wind_on 2 260 2030 1.0 0.0 -fr 03_wind_off 2 260 2030 1.0 0.0 -fr 04_res 2 260 2030 1.0 0.0 -fr 05_nuclear 2 260 2030 1.0 0.0 -fr 06_coal 2 260 2030 0.0 0.0 -fr 07_gas 2 260 2030 0.0 0.0 -fr 08_non-res 2 260 2030 0.0 0.0 -fr 09_hydro_pump 2 260 2030 0.0 0.0 -fr 01_solar 2 261 2030 1.0 0.0 -fr 02_wind_on 2 261 2030 1.0 0.0 -fr 03_wind_off 2 261 2030 1.0 0.0 -fr 04_res 2 261 2030 1.0 0.0 -fr 05_nuclear 2 261 2030 1.0 0.0 -fr 06_coal 2 261 2030 0.0 0.0 -fr 07_gas 2 261 2030 0.0 0.0 -fr 08_non-res 2 261 2030 0.0 0.0 -fr 09_hydro_pump 2 261 2030 0.0 0.0 -fr 01_solar 2 262 2030 1.0 0.0 -fr 02_wind_on 2 262 2030 1.0 0.0 -fr 03_wind_off 2 262 2030 1.0 0.0 -fr 04_res 2 262 2030 1.0 0.0 -fr 05_nuclear 2 262 2030 1.0 0.0 -fr 06_coal 2 262 2030 0.0 0.0 -fr 07_gas 2 262 2030 0.0 0.0 -fr 08_non-res 2 262 2030 0.0 0.0 -fr 09_hydro_pump 2 262 2030 0.0 0.0 -fr 01_solar 2 263 2030 1.0 0.0 -fr 02_wind_on 2 263 2030 1.0 0.0 -fr 03_wind_off 2 263 2030 1.0 0.0 -fr 04_res 2 263 2030 1.0 0.0 -fr 05_nuclear 2 263 2030 1.0 0.0 -fr 06_coal 2 263 2030 0.0 0.0 -fr 07_gas 2 263 2030 0.0 0.0 -fr 08_non-res 2 263 2030 0.0 0.0 -fr 09_hydro_pump 2 263 2030 0.0 0.0 -fr 01_solar 2 264 2030 1.0 0.0 -fr 02_wind_on 2 264 2030 1.0 0.0 -fr 03_wind_off 2 264 2030 1.0 0.0 -fr 04_res 2 264 2030 1.0 0.0 -fr 05_nuclear 2 264 2030 1.0 0.0 -fr 06_coal 2 264 2030 0.0 0.0 -fr 07_gas 2 264 2030 0.0 0.0 -fr 08_non-res 2 264 2030 0.0 0.0 -fr 09_hydro_pump 2 264 2030 0.0 0.0 -fr 01_solar 2 265 2030 1.0 0.0 -fr 02_wind_on 2 265 2030 1.0 0.0 -fr 03_wind_off 2 265 2030 1.0 0.0 -fr 04_res 2 265 2030 1.0 0.0 -fr 05_nuclear 2 265 2030 1.0 0.0 -fr 06_coal 2 265 2030 0.0 0.0 -fr 07_gas 2 265 2030 0.0 0.0 -fr 08_non-res 2 265 2030 0.0 0.0 -fr 09_hydro_pump 2 265 2030 0.0 0.0 -fr 01_solar 2 266 2030 1.0 0.0 -fr 02_wind_on 2 266 2030 1.0 0.0 -fr 03_wind_off 2 266 2030 1.0 0.0 -fr 04_res 2 266 2030 1.0 0.0 -fr 05_nuclear 2 266 2030 1.0 0.0 -fr 06_coal 2 266 2030 0.0 0.0 -fr 07_gas 2 266 2030 0.0 0.0 -fr 08_non-res 2 266 2030 0.0 0.0 -fr 09_hydro_pump 2 266 2030 0.0 0.0 -fr 01_solar 2 267 2030 1.0 0.0 -fr 02_wind_on 2 267 2030 1.0 0.0 -fr 03_wind_off 2 267 2030 1.0 0.0 -fr 04_res 2 267 2030 1.0 0.0 -fr 05_nuclear 2 267 2030 1.0 0.0 -fr 06_coal 2 267 2030 0.0 0.0 -fr 07_gas 2 267 2030 0.0 0.0 -fr 08_non-res 2 267 2030 0.0 0.0 -fr 09_hydro_pump 2 267 2030 0.0 0.0 -fr 01_solar 2 268 2030 1.0 0.0 -fr 02_wind_on 2 268 2030 1.0 0.0 -fr 03_wind_off 2 268 2030 1.0 0.0 -fr 04_res 2 268 2030 1.0 0.0 -fr 05_nuclear 2 268 2030 1.0 0.0 -fr 06_coal 2 268 2030 0.0 0.0 -fr 07_gas 2 268 2030 0.0 0.0 -fr 08_non-res 2 268 2030 0.0 0.0 -fr 09_hydro_pump 2 268 2030 0.0 0.0 -fr 01_solar 2 269 2030 1.0 0.0 -fr 02_wind_on 2 269 2030 1.0 0.0 -fr 03_wind_off 2 269 2030 1.0 0.0 -fr 04_res 2 269 2030 1.0 0.0 -fr 05_nuclear 2 269 2030 1.0 0.0 -fr 06_coal 2 269 2030 0.0 0.0 -fr 07_gas 2 269 2030 0.0 0.0 -fr 08_non-res 2 269 2030 0.0 0.0 -fr 09_hydro_pump 2 269 2030 0.0 0.0 -fr 01_solar 2 270 2030 1.0 0.0 -fr 02_wind_on 2 270 2030 1.0 0.0 -fr 03_wind_off 2 270 2030 1.0 0.0 -fr 04_res 2 270 2030 1.0 0.0 -fr 05_nuclear 2 270 2030 1.0 0.0 -fr 06_coal 2 270 2030 1.0 0.0 -fr 07_gas 2 270 2030 0.0 0.0 -fr 08_non-res 2 270 2030 0.0 0.0 -fr 09_hydro_pump 2 270 2030 0.0 0.0 -fr 01_solar 2 271 2030 1.0 0.0 -fr 02_wind_on 2 271 2030 1.0 0.0 -fr 03_wind_off 2 271 2030 1.0 0.0 -fr 04_res 2 271 2030 1.0 0.0 -fr 05_nuclear 2 271 2030 1.0 0.0 -fr 06_coal 2 271 2030 1.0 0.0 -fr 07_gas 2 271 2030 0.0 0.0 -fr 08_non-res 2 271 2030 0.0 0.0 -fr 09_hydro_pump 2 271 2030 0.0 0.0 -fr 01_solar 2 272 2030 1.0 0.0 -fr 02_wind_on 2 272 2030 1.0 0.0 -fr 03_wind_off 2 272 2030 1.0 0.0 -fr 04_res 2 272 2030 1.0 0.0 -fr 05_nuclear 2 272 2030 1.0 0.0 -fr 06_coal 2 272 2030 1.0 0.0 -fr 07_gas 2 272 2030 0.0 0.0 -fr 08_non-res 2 272 2030 0.0 0.0 -fr 09_hydro_pump 2 272 2030 0.0 0.0 -fr 01_solar 2 273 2030 1.0 0.0 -fr 02_wind_on 2 273 2030 1.0 0.0 -fr 03_wind_off 2 273 2030 1.0 0.0 -fr 04_res 2 273 2030 1.0 0.0 -fr 05_nuclear 2 273 2030 1.0 0.0 -fr 06_coal 2 273 2030 1.0 0.0 -fr 07_gas 2 273 2030 0.0 0.0 -fr 08_non-res 2 273 2030 0.0 0.0 -fr 09_hydro_pump 2 273 2030 0.0 0.0 -fr 01_solar 2 274 2030 1.0 0.0 -fr 02_wind_on 2 274 2030 1.0 0.0 -fr 03_wind_off 2 274 2030 1.0 0.0 -fr 04_res 2 274 2030 1.0 0.0 -fr 05_nuclear 2 274 2030 1.0 0.0 -fr 06_coal 2 274 2030 1.0 0.0 -fr 07_gas 2 274 2030 0.0 0.0 -fr 08_non-res 2 274 2030 0.0 0.0 -fr 09_hydro_pump 2 274 2030 0.0 0.0 -fr 01_solar 2 275 2030 1.0 0.0 -fr 02_wind_on 2 275 2030 1.0 0.0 -fr 03_wind_off 2 275 2030 1.0 0.0 -fr 04_res 2 275 2030 1.0 0.0 -fr 05_nuclear 2 275 2030 1.0 0.0 -fr 06_coal 2 275 2030 1.0 0.0 -fr 07_gas 2 275 2030 0.0 0.0 -fr 08_non-res 2 275 2030 0.0 0.0 -fr 09_hydro_pump 2 275 2030 0.0 0.0 -fr 01_solar 2 276 2030 1.0 0.0 -fr 02_wind_on 2 276 2030 1.0 0.0 -fr 03_wind_off 2 276 2030 1.0 0.0 -fr 04_res 2 276 2030 1.0 0.0 -fr 05_nuclear 2 276 2030 1.0 0.0 -fr 06_coal 2 276 2030 1.0 0.0 -fr 07_gas 2 276 2030 0.0 0.0 -fr 08_non-res 2 276 2030 0.0 0.0 -fr 09_hydro_pump 2 276 2030 0.0 0.0 -fr 01_solar 2 277 2030 1.0 0.0 -fr 02_wind_on 2 277 2030 1.0 0.0 -fr 03_wind_off 2 277 2030 1.0 0.0 -fr 04_res 2 277 2030 1.0 0.0 -fr 05_nuclear 2 277 2030 1.0 0.0 -fr 06_coal 2 277 2030 1.0 0.0 -fr 07_gas 2 277 2030 0.0 0.0 -fr 08_non-res 2 277 2030 0.0 0.0 -fr 09_hydro_pump 2 277 2030 0.0 0.0 -fr 01_solar 2 278 2030 1.0 0.0 -fr 02_wind_on 2 278 2030 1.0 0.0 -fr 03_wind_off 2 278 2030 1.0 0.0 -fr 04_res 2 278 2030 1.0 0.0 -fr 05_nuclear 2 278 2030 1.0 0.0 -fr 06_coal 2 278 2030 1.0 0.0 -fr 07_gas 2 278 2030 0.0 0.0 -fr 08_non-res 2 278 2030 0.0 0.0 -fr 09_hydro_pump 2 278 2030 0.0 0.0 -fr 01_solar 2 279 2030 1.0 0.0 -fr 02_wind_on 2 279 2030 1.0 0.0 -fr 03_wind_off 2 279 2030 1.0 0.0 -fr 04_res 2 279 2030 1.0 0.0 -fr 05_nuclear 2 279 2030 1.0 0.0 -fr 06_coal 2 279 2030 1.0 0.0 -fr 07_gas 2 279 2030 0.0 0.0 -fr 08_non-res 2 279 2030 0.0 0.0 -fr 09_hydro_pump 2 279 2030 0.0 0.0 -fr 01_solar 2 280 2030 1.0 0.0 -fr 02_wind_on 2 280 2030 1.0 0.0 -fr 03_wind_off 2 280 2030 1.0 0.0 -fr 04_res 2 280 2030 1.0 0.0 -fr 05_nuclear 2 280 2030 1.0 0.0 -fr 06_coal 2 280 2030 1.0 0.0 -fr 07_gas 2 280 2030 0.0 0.0 -fr 08_non-res 2 280 2030 0.0 0.0 -fr 09_hydro_pump 2 280 2030 0.0 0.0 -fr 01_solar 2 281 2030 1.0 0.0 -fr 02_wind_on 2 281 2030 1.0 0.0 -fr 03_wind_off 2 281 2030 1.0 0.0 -fr 04_res 2 281 2030 1.0 0.0 -fr 05_nuclear 2 281 2030 1.0 0.0 -fr 06_coal 2 281 2030 1.0 0.0 -fr 07_gas 2 281 2030 0.0 0.0 -fr 08_non-res 2 281 2030 0.0 0.0 -fr 09_hydro_pump 2 281 2030 0.0 0.0 -fr 01_solar 2 282 2030 1.0 0.0 -fr 02_wind_on 2 282 2030 1.0 0.0 -fr 03_wind_off 2 282 2030 1.0 0.0 -fr 04_res 2 282 2030 1.0 0.0 -fr 05_nuclear 2 282 2030 1.0 0.0 -fr 06_coal 2 282 2030 1.0 0.0 -fr 07_gas 2 282 2030 0.0 0.0 -fr 08_non-res 2 282 2030 0.0 0.0 -fr 09_hydro_pump 2 282 2030 0.0 0.0 -fr 01_solar 2 283 2030 1.0 0.0 -fr 02_wind_on 2 283 2030 1.0 0.0 -fr 03_wind_off 2 283 2030 1.0 0.0 -fr 04_res 2 283 2030 1.0 0.0 -fr 05_nuclear 2 283 2030 1.0 0.0 -fr 06_coal 2 283 2030 1.0 0.0 -fr 07_gas 2 283 2030 0.0 0.0 -fr 08_non-res 2 283 2030 0.0 0.0 -fr 09_hydro_pump 2 283 2030 0.0 0.0 -fr 01_solar 2 284 2030 1.0 0.0 -fr 02_wind_on 2 284 2030 1.0 0.0 -fr 03_wind_off 2 284 2030 1.0 0.0 -fr 04_res 2 284 2030 1.0 0.0 -fr 05_nuclear 2 284 2030 1.0 0.0 -fr 06_coal 2 284 2030 1.0 0.0 -fr 07_gas 2 284 2030 0.0 0.0 -fr 08_non-res 2 284 2030 0.0 0.0 -fr 09_hydro_pump 2 284 2030 0.0 0.0 -fr 01_solar 2 285 2030 1.0 0.0 -fr 02_wind_on 2 285 2030 1.0 0.0 -fr 03_wind_off 2 285 2030 1.0 0.0 -fr 04_res 2 285 2030 1.0 0.0 -fr 05_nuclear 2 285 2030 1.0 0.0 -fr 06_coal 2 285 2030 1.0 0.0 -fr 07_gas 2 285 2030 0.0 0.0 -fr 08_non-res 2 285 2030 0.0 0.0 -fr 09_hydro_pump 2 285 2030 0.0 0.0 -fr 01_solar 2 286 2030 1.0 0.0 -fr 02_wind_on 2 286 2030 1.0 0.0 -fr 03_wind_off 2 286 2030 1.0 0.0 -fr 04_res 2 286 2030 1.0 0.0 -fr 05_nuclear 2 286 2030 1.0 0.0 -fr 06_coal 2 286 2030 1.0 0.0 -fr 07_gas 2 286 2030 0.0 0.0 -fr 08_non-res 2 286 2030 0.0 0.0 -fr 09_hydro_pump 2 286 2030 0.0 0.0 -fr 01_solar 2 287 2030 1.0 0.0 -fr 02_wind_on 2 287 2030 1.0 0.0 -fr 03_wind_off 2 287 2030 1.0 0.0 -fr 04_res 2 287 2030 1.0 0.0 -fr 05_nuclear 2 287 2030 1.0 0.0 -fr 06_coal 2 287 2030 1.0 0.0 -fr 07_gas 2 287 2030 0.0 0.0 -fr 08_non-res 2 287 2030 0.0 0.0 -fr 09_hydro_pump 2 287 2030 0.0 0.0 -fr 01_solar 2 288 2030 1.0 0.0 -fr 02_wind_on 2 288 2030 1.0 0.0 -fr 03_wind_off 2 288 2030 1.0 0.0 -fr 04_res 2 288 2030 1.0 0.0 -fr 05_nuclear 2 288 2030 1.0 0.0 -fr 06_coal 2 288 2030 1.0 0.0 -fr 07_gas 2 288 2030 0.0 0.0 -fr 08_non-res 2 288 2030 0.0 0.0 -fr 09_hydro_pump 2 288 2030 0.0 0.0 -fr 01_solar 2 289 2030 1.0 0.0 -fr 02_wind_on 2 289 2030 1.0 0.0 -fr 03_wind_off 2 289 2030 1.0 0.0 -fr 04_res 2 289 2030 1.0 0.0 -fr 05_nuclear 2 289 2030 1.0 0.0 -fr 06_coal 2 289 2030 1.0 0.0 -fr 07_gas 2 289 2030 0.0 0.0 -fr 08_non-res 2 289 2030 0.0 0.0 -fr 09_hydro_pump 2 289 2030 0.0 0.0 -fr 01_solar 2 290 2030 1.0 0.0 -fr 02_wind_on 2 290 2030 1.0 0.0 -fr 03_wind_off 2 290 2030 1.0 0.0 -fr 04_res 2 290 2030 1.0 0.0 -fr 05_nuclear 2 290 2030 1.0 0.0 -fr 06_coal 2 290 2030 1.0 0.0 -fr 07_gas 2 290 2030 1.0 0.0 -fr 08_non-res 2 290 2030 0.0 0.0 -fr 09_hydro_pump 2 290 2030 0.0 0.0 -fr 01_solar 2 291 2030 1.0 0.0 -fr 02_wind_on 2 291 2030 1.0 0.0 -fr 03_wind_off 2 291 2030 1.0 0.0 -fr 04_res 2 291 2030 1.0 0.0 -fr 05_nuclear 2 291 2030 1.0 0.0 -fr 06_coal 2 291 2030 1.0 0.0 -fr 07_gas 2 291 2030 1.0 0.0 -fr 08_non-res 2 291 2030 0.0 0.0 -fr 09_hydro_pump 2 291 2030 0.0 0.0 -fr 01_solar 2 292 2030 1.0 0.0 -fr 02_wind_on 2 292 2030 1.0 0.0 -fr 03_wind_off 2 292 2030 1.0 0.0 -fr 04_res 2 292 2030 1.0 0.0 -fr 05_nuclear 2 292 2030 1.0 0.0 -fr 06_coal 2 292 2030 1.0 0.0 -fr 07_gas 2 292 2030 1.0 0.0 -fr 08_non-res 2 292 2030 0.0 0.0 -fr 09_hydro_pump 2 292 2030 0.0 0.0 -fr 01_solar 2 293 2030 1.0 0.0 -fr 02_wind_on 2 293 2030 1.0 0.0 -fr 03_wind_off 2 293 2030 1.0 0.0 -fr 04_res 2 293 2030 1.0 0.0 -fr 05_nuclear 2 293 2030 1.0 0.0 -fr 06_coal 2 293 2030 1.0 0.0 -fr 07_gas 2 293 2030 1.0 0.0 -fr 08_non-res 2 293 2030 0.0 0.0 -fr 09_hydro_pump 2 293 2030 0.0 0.0 -fr 01_solar 2 294 2030 1.0 0.0 -fr 02_wind_on 2 294 2030 1.0 0.0 -fr 03_wind_off 2 294 2030 1.0 0.0 -fr 04_res 2 294 2030 1.0 0.0 -fr 05_nuclear 2 294 2030 1.0 0.0 -fr 06_coal 2 294 2030 1.0 0.0 -fr 07_gas 2 294 2030 1.0 0.0 -fr 08_non-res 2 294 2030 0.0 0.0 -fr 09_hydro_pump 2 294 2030 0.0 0.0 -fr 01_solar 2 295 2030 1.0 0.0 -fr 02_wind_on 2 295 2030 1.0 0.0 -fr 03_wind_off 2 295 2030 1.0 0.0 -fr 04_res 2 295 2030 1.0 0.0 -fr 05_nuclear 2 295 2030 1.0 0.0 -fr 06_coal 2 295 2030 1.0 0.0 -fr 07_gas 2 295 2030 1.0 0.0 -fr 08_non-res 2 295 2030 0.0 0.0 -fr 09_hydro_pump 2 295 2030 0.0 0.0 -fr 01_solar 2 296 2030 1.0 0.0 -fr 02_wind_on 2 296 2030 1.0 0.0 -fr 03_wind_off 2 296 2030 1.0 0.0 -fr 04_res 2 296 2030 1.0 0.0 -fr 05_nuclear 2 296 2030 1.0 0.0 -fr 06_coal 2 296 2030 1.0 0.0 -fr 07_gas 2 296 2030 1.0 0.0 -fr 08_non-res 2 296 2030 0.0 0.0 -fr 09_hydro_pump 2 296 2030 0.0 0.0 -fr 01_solar 2 297 2030 1.0 0.0 -fr 02_wind_on 2 297 2030 1.0 0.0 -fr 03_wind_off 2 297 2030 1.0 0.0 -fr 04_res 2 297 2030 1.0 0.0 -fr 05_nuclear 2 297 2030 1.0 0.0 -fr 06_coal 2 297 2030 1.0 0.0 -fr 07_gas 2 297 2030 1.0 0.0 -fr 08_non-res 2 297 2030 0.0 0.0 -fr 09_hydro_pump 2 297 2030 0.0 0.0 -fr 01_solar 2 298 2030 1.0 0.0 -fr 02_wind_on 2 298 2030 1.0 0.0 -fr 03_wind_off 2 298 2030 1.0 0.0 -fr 04_res 2 298 2030 1.0 0.0 -fr 05_nuclear 2 298 2030 1.0 0.0 -fr 06_coal 2 298 2030 1.0 0.0 -fr 07_gas 2 298 2030 1.0 0.0 -fr 08_non-res 2 298 2030 0.0 0.0 -fr 09_hydro_pump 2 298 2030 0.0 0.0 -fr 01_solar 2 299 2030 1.0 0.0 -fr 02_wind_on 2 299 2030 1.0 0.0 -fr 03_wind_off 2 299 2030 1.0 0.0 -fr 04_res 2 299 2030 1.0 0.0 -fr 05_nuclear 2 299 2030 1.0 0.0 -fr 06_coal 2 299 2030 1.0 0.0 -fr 07_gas 2 299 2030 1.0 0.0 -fr 08_non-res 2 299 2030 0.0 0.0 -fr 09_hydro_pump 2 299 2030 0.0 0.0 -fr 01_solar 2 300 2030 1.0 0.0 -fr 02_wind_on 2 300 2030 1.0 0.0 -fr 03_wind_off 2 300 2030 1.0 0.0 -fr 04_res 2 300 2030 1.0 0.0 -fr 05_nuclear 2 300 2030 1.0 0.0 -fr 06_coal 2 300 2030 1.0 0.0 -fr 07_gas 2 300 2030 1.0 0.0 -fr 08_non-res 2 300 2030 0.0 0.0 -fr 09_hydro_pump 2 300 2030 0.0 0.0 -fr 01_solar 2 301 2030 1.0 0.0 -fr 02_wind_on 2 301 2030 1.0 0.0 -fr 03_wind_off 2 301 2030 1.0 0.0 -fr 04_res 2 301 2030 1.0 0.0 -fr 05_nuclear 2 301 2030 1.0 0.0 -fr 06_coal 2 301 2030 1.0 0.0 -fr 07_gas 2 301 2030 1.0 0.0 -fr 08_non-res 2 301 2030 0.0 0.0 -fr 09_hydro_pump 2 301 2030 0.0 0.0 -fr 01_solar 2 302 2030 1.0 0.0 -fr 02_wind_on 2 302 2030 1.0 0.0 -fr 03_wind_off 2 302 2030 1.0 0.0 -fr 04_res 2 302 2030 1.0 0.0 -fr 05_nuclear 2 302 2030 1.0 0.0 -fr 06_coal 2 302 2030 1.0 0.0 -fr 07_gas 2 302 2030 1.0 0.0 -fr 08_non-res 2 302 2030 0.0 0.0 -fr 09_hydro_pump 2 302 2030 0.0 0.0 -fr 01_solar 2 303 2030 1.0 0.0 -fr 02_wind_on 2 303 2030 1.0 0.0 -fr 03_wind_off 2 303 2030 1.0 0.0 -fr 04_res 2 303 2030 1.0 0.0 -fr 05_nuclear 2 303 2030 1.0 0.0 -fr 06_coal 2 303 2030 1.0 0.0 -fr 07_gas 2 303 2030 1.0 0.0 -fr 08_non-res 2 303 2030 0.0 0.0 -fr 09_hydro_pump 2 303 2030 0.0 0.0 -fr 01_solar 2 304 2030 1.0 0.0 -fr 02_wind_on 2 304 2030 1.0 0.0 -fr 03_wind_off 2 304 2030 1.0 0.0 -fr 04_res 2 304 2030 1.0 0.0 -fr 05_nuclear 2 304 2030 1.0 0.0 -fr 06_coal 2 304 2030 1.0 0.0 -fr 07_gas 2 304 2030 1.0 0.0 -fr 08_non-res 2 304 2030 0.0 0.0 -fr 09_hydro_pump 2 304 2030 0.0 0.0 -fr 01_solar 2 305 2030 1.0 0.0 -fr 02_wind_on 2 305 2030 1.0 0.0 -fr 03_wind_off 2 305 2030 1.0 0.0 -fr 04_res 2 305 2030 1.0 0.0 -fr 05_nuclear 2 305 2030 1.0 0.0 -fr 06_coal 2 305 2030 1.0 0.0 -fr 07_gas 2 305 2030 1.0 0.0 -fr 08_non-res 2 305 2030 0.0 0.0 -fr 09_hydro_pump 2 305 2030 0.0 0.0 -fr 01_solar 2 306 2030 1.0 0.0 -fr 02_wind_on 2 306 2030 1.0 0.0 -fr 03_wind_off 2 306 2030 1.0 0.0 -fr 04_res 2 306 2030 1.0 0.0 -fr 05_nuclear 2 306 2030 1.0 0.0 -fr 06_coal 2 306 2030 1.0 0.0 -fr 07_gas 2 306 2030 1.0 0.0 -fr 08_non-res 2 306 2030 0.0 0.0 -fr 09_hydro_pump 2 306 2030 0.0 0.0 -fr 01_solar 2 307 2030 1.0 0.0 -fr 02_wind_on 2 307 2030 1.0 0.0 -fr 03_wind_off 2 307 2030 1.0 0.0 -fr 04_res 2 307 2030 1.0 0.0 -fr 05_nuclear 2 307 2030 1.0 0.0 -fr 06_coal 2 307 2030 1.0 0.0 -fr 07_gas 2 307 2030 1.0 0.0 -fr 08_non-res 2 307 2030 0.0 0.0 -fr 09_hydro_pump 2 307 2030 0.0 0.0 -fr 01_solar 2 308 2030 1.0 0.0 -fr 02_wind_on 2 308 2030 1.0 0.0 -fr 03_wind_off 2 308 2030 1.0 0.0 -fr 04_res 2 308 2030 1.0 0.0 -fr 05_nuclear 2 308 2030 1.0 0.0 -fr 06_coal 2 308 2030 1.0 0.0 -fr 07_gas 2 308 2030 1.0 0.0 -fr 08_non-res 2 308 2030 0.0 0.0 -fr 09_hydro_pump 2 308 2030 0.0 0.0 -fr 01_solar 2 309 2030 1.0 0.0 -fr 02_wind_on 2 309 2030 1.0 0.0 -fr 03_wind_off 2 309 2030 1.0 0.0 -fr 04_res 2 309 2030 1.0 0.0 -fr 05_nuclear 2 309 2030 1.0 0.0 -fr 06_coal 2 309 2030 1.0 0.0 -fr 07_gas 2 309 2030 1.0 0.0 -fr 08_non-res 2 309 2030 0.0 0.0 -fr 09_hydro_pump 2 309 2030 0.0 0.0 -fr 01_solar 2 310 2030 1.0 0.0 -fr 02_wind_on 2 310 2030 1.0 0.0 -fr 03_wind_off 2 310 2030 1.0 0.0 -fr 04_res 2 310 2030 1.0 0.0 -fr 05_nuclear 2 310 2030 1.0 0.0 -fr 06_coal 2 310 2030 1.0 0.0 -fr 07_gas 2 310 2030 1.0 0.0 -fr 08_non-res 2 310 2030 1.0 0.0 -fr 09_hydro_pump 2 310 2030 0.0 0.0 -fr 01_solar 2 311 2030 1.0 0.0 -fr 02_wind_on 2 311 2030 1.0 0.0 -fr 03_wind_off 2 311 2030 1.0 0.0 -fr 04_res 2 311 2030 1.0 0.0 -fr 05_nuclear 2 311 2030 1.0 0.0 -fr 06_coal 2 311 2030 1.0 0.0 -fr 07_gas 2 311 2030 1.0 0.0 -fr 08_non-res 2 311 2030 1.0 0.0 -fr 09_hydro_pump 2 311 2030 0.0 0.0 -fr 01_solar 2 312 2030 1.0 0.0 -fr 02_wind_on 2 312 2030 1.0 0.0 -fr 03_wind_off 2 312 2030 1.0 0.0 -fr 04_res 2 312 2030 1.0 0.0 -fr 05_nuclear 2 312 2030 1.0 0.0 -fr 06_coal 2 312 2030 1.0 0.0 -fr 07_gas 2 312 2030 1.0 0.0 -fr 08_non-res 2 312 2030 1.0 0.0 -fr 09_hydro_pump 2 312 2030 0.0 0.0 -fr 01_solar 2 313 2030 1.0 0.0 -fr 02_wind_on 2 313 2030 1.0 0.0 -fr 03_wind_off 2 313 2030 1.0 0.0 -fr 04_res 2 313 2030 1.0 0.0 -fr 05_nuclear 2 313 2030 1.0 0.0 -fr 06_coal 2 313 2030 1.0 0.0 -fr 07_gas 2 313 2030 1.0 0.0 -fr 08_non-res 2 313 2030 1.0 0.0 -fr 09_hydro_pump 2 313 2030 0.0 0.0 -fr 01_solar 2 314 2030 1.0 0.0 -fr 02_wind_on 2 314 2030 1.0 0.0 -fr 03_wind_off 2 314 2030 1.0 0.0 -fr 04_res 2 314 2030 1.0 0.0 -fr 05_nuclear 2 314 2030 1.0 0.0 -fr 06_coal 2 314 2030 1.0 0.0 -fr 07_gas 2 314 2030 1.0 0.0 -fr 08_non-res 2 314 2030 1.0 0.0 -fr 09_hydro_pump 2 314 2030 0.0 0.0 -fr 01_solar 2 315 2030 1.0 0.0 -fr 02_wind_on 2 315 2030 1.0 0.0 -fr 03_wind_off 2 315 2030 1.0 0.0 -fr 04_res 2 315 2030 1.0 0.0 -fr 05_nuclear 2 315 2030 1.0 0.0 -fr 06_coal 2 315 2030 1.0 0.0 -fr 07_gas 2 315 2030 1.0 0.0 -fr 08_non-res 2 315 2030 1.0 0.0 -fr 09_hydro_pump 2 315 2030 0.0 0.0 -fr 01_solar 2 316 2030 1.0 0.0 -fr 02_wind_on 2 316 2030 1.0 0.0 -fr 03_wind_off 2 316 2030 1.0 0.0 -fr 04_res 2 316 2030 1.0 0.0 -fr 05_nuclear 2 316 2030 1.0 0.0 -fr 06_coal 2 316 2030 1.0 0.0 -fr 07_gas 2 316 2030 1.0 0.0 -fr 08_non-res 2 316 2030 1.0 0.0 -fr 09_hydro_pump 2 316 2030 0.0 0.0 -fr 01_solar 2 317 2030 1.0 0.0 -fr 02_wind_on 2 317 2030 1.0 0.0 -fr 03_wind_off 2 317 2030 1.0 0.0 -fr 04_res 2 317 2030 1.0 0.0 -fr 05_nuclear 2 317 2030 1.0 0.0 -fr 06_coal 2 317 2030 1.0 0.0 -fr 07_gas 2 317 2030 1.0 0.0 -fr 08_non-res 2 317 2030 1.0 0.0 -fr 09_hydro_pump 2 317 2030 0.0 0.0 -fr 01_solar 2 318 2030 1.0 0.0 -fr 02_wind_on 2 318 2030 1.0 0.0 -fr 03_wind_off 2 318 2030 1.0 0.0 -fr 04_res 2 318 2030 1.0 0.0 -fr 05_nuclear 2 318 2030 1.0 0.0 -fr 06_coal 2 318 2030 1.0 0.0 -fr 07_gas 2 318 2030 1.0 0.0 -fr 08_non-res 2 318 2030 1.0 0.0 -fr 09_hydro_pump 2 318 2030 0.0 0.0 -fr 01_solar 2 319 2030 1.0 0.0 -fr 02_wind_on 2 319 2030 1.0 0.0 -fr 03_wind_off 2 319 2030 1.0 0.0 -fr 04_res 2 319 2030 1.0 0.0 -fr 05_nuclear 2 319 2030 1.0 0.0 -fr 06_coal 2 319 2030 1.0 0.0 -fr 07_gas 2 319 2030 1.0 0.0 -fr 08_non-res 2 319 2030 1.0 0.0 -fr 09_hydro_pump 2 319 2030 0.0 0.0 -fr 01_solar 2 320 2030 1.0 0.0 -fr 02_wind_on 2 320 2030 1.0 0.0 -fr 03_wind_off 2 320 2030 1.0 0.0 -fr 04_res 2 320 2030 1.0 0.0 -fr 05_nuclear 2 320 2030 1.0 0.0 -fr 06_coal 2 320 2030 1.0 0.0 -fr 07_gas 2 320 2030 1.0 0.0 -fr 08_non-res 2 320 2030 1.0 0.0 -fr 09_hydro_pump 2 320 2030 0.0 0.0 -fr 01_solar 2 321 2030 1.0 0.0 -fr 02_wind_on 2 321 2030 1.0 0.0 -fr 03_wind_off 2 321 2030 1.0 0.0 -fr 04_res 2 321 2030 1.0 0.0 -fr 05_nuclear 2 321 2030 1.0 0.0 -fr 06_coal 2 321 2030 1.0 0.0 -fr 07_gas 2 321 2030 1.0 0.0 -fr 08_non-res 2 321 2030 1.0 0.0 -fr 09_hydro_pump 2 321 2030 0.0 0.0 -fr 01_solar 2 322 2030 1.0 0.0 -fr 02_wind_on 2 322 2030 1.0 0.0 -fr 03_wind_off 2 322 2030 1.0 0.0 -fr 04_res 2 322 2030 1.0 0.0 -fr 05_nuclear 2 322 2030 1.0 0.0 -fr 06_coal 2 322 2030 1.0 0.0 -fr 07_gas 2 322 2030 1.0 0.0 -fr 08_non-res 2 322 2030 1.0 0.0 -fr 09_hydro_pump 2 322 2030 0.0 0.0 -fr 01_solar 2 323 2030 1.0 0.0 -fr 02_wind_on 2 323 2030 1.0 0.0 -fr 03_wind_off 2 323 2030 1.0 0.0 -fr 04_res 2 323 2030 1.0 0.0 -fr 05_nuclear 2 323 2030 1.0 0.0 -fr 06_coal 2 323 2030 1.0 0.0 -fr 07_gas 2 323 2030 1.0 0.0 -fr 08_non-res 2 323 2030 1.0 0.0 -fr 09_hydro_pump 2 323 2030 0.0 0.0 -fr 01_solar 2 324 2030 1.0 0.0 -fr 02_wind_on 2 324 2030 1.0 0.0 -fr 03_wind_off 2 324 2030 1.0 0.0 -fr 04_res 2 324 2030 1.0 0.0 -fr 05_nuclear 2 324 2030 1.0 0.0 -fr 06_coal 2 324 2030 1.0 0.0 -fr 07_gas 2 324 2030 1.0 0.0 -fr 08_non-res 2 324 2030 1.0 0.0 -fr 09_hydro_pump 2 324 2030 0.0 0.0 -fr 01_solar 2 325 2030 1.0 0.0 -fr 02_wind_on 2 325 2030 1.0 0.0 -fr 03_wind_off 2 325 2030 1.0 0.0 -fr 04_res 2 325 2030 1.0 0.0 -fr 05_nuclear 2 325 2030 1.0 0.0 -fr 06_coal 2 325 2030 1.0 0.0 -fr 07_gas 2 325 2030 1.0 0.0 -fr 08_non-res 2 325 2030 1.0 0.0 -fr 09_hydro_pump 2 325 2030 0.0 0.0 -fr 01_solar 2 326 2030 1.0 0.0 -fr 02_wind_on 2 326 2030 1.0 0.0 -fr 03_wind_off 2 326 2030 1.0 0.0 -fr 04_res 2 326 2030 1.0 0.0 -fr 05_nuclear 2 326 2030 1.0 0.0 -fr 06_coal 2 326 2030 1.0 0.0 -fr 07_gas 2 326 2030 1.0 0.0 -fr 08_non-res 2 326 2030 1.0 0.0 -fr 09_hydro_pump 2 326 2030 0.0 0.0 -fr 01_solar 2 327 2030 1.0 0.0 -fr 02_wind_on 2 327 2030 1.0 0.0 -fr 03_wind_off 2 327 2030 1.0 0.0 -fr 04_res 2 327 2030 1.0 0.0 -fr 05_nuclear 2 327 2030 1.0 0.0 -fr 06_coal 2 327 2030 1.0 0.0 -fr 07_gas 2 327 2030 1.0 0.0 -fr 08_non-res 2 327 2030 1.0 0.0 -fr 09_hydro_pump 2 327 2030 0.0 0.0 -fr 01_solar 2 328 2030 1.0 0.0 -fr 02_wind_on 2 328 2030 1.0 0.0 -fr 03_wind_off 2 328 2030 1.0 0.0 -fr 04_res 2 328 2030 1.0 0.0 -fr 05_nuclear 2 328 2030 1.0 0.0 -fr 06_coal 2 328 2030 1.0 0.0 -fr 07_gas 2 328 2030 1.0 0.0 -fr 08_non-res 2 328 2030 1.0 0.0 -fr 09_hydro_pump 2 328 2030 0.0 0.0 -fr 01_solar 2 329 2030 1.0 0.0 -fr 02_wind_on 2 329 2030 1.0 0.0 -fr 03_wind_off 2 329 2030 1.0 0.0 -fr 04_res 2 329 2030 1.0 0.0 -fr 05_nuclear 2 329 2030 1.0 0.0 -fr 06_coal 2 329 2030 1.0 0.0 -fr 07_gas 2 329 2030 1.0 0.0 -fr 08_non-res 2 329 2030 1.0 0.0 -fr 09_hydro_pump 2 329 2030 0.0 0.0 -fr 01_solar 2 330 2030 1.0 0.0 -fr 02_wind_on 2 330 2030 1.0 0.0 -fr 03_wind_off 2 330 2030 1.0 0.0 -fr 04_res 2 330 2030 1.0 0.0 -fr 05_nuclear 2 330 2030 1.0 0.0 -fr 06_coal 2 330 2030 1.0 0.0 -fr 07_gas 2 330 2030 1.0 0.0 -fr 08_non-res 2 330 2030 1.0 0.0 -fr 09_hydro_pump 2 330 2030 1.0 0.0 -fr 01_solar 2 331 2030 1.0 0.0 -fr 02_wind_on 2 331 2030 1.0 0.0 -fr 03_wind_off 2 331 2030 1.0 0.0 -fr 04_res 2 331 2030 1.0 0.0 -fr 05_nuclear 2 331 2030 1.0 0.0 -fr 06_coal 2 331 2030 1.0 0.0 -fr 07_gas 2 331 2030 1.0 0.0 -fr 08_non-res 2 331 2030 1.0 0.0 -fr 09_hydro_pump 2 331 2030 1.0 0.0 -fr 01_solar 2 332 2030 1.0 0.0 -fr 02_wind_on 2 332 2030 1.0 0.0 -fr 03_wind_off 2 332 2030 1.0 0.0 -fr 04_res 2 332 2030 1.0 0.0 -fr 05_nuclear 2 332 2030 1.0 0.0 -fr 06_coal 2 332 2030 1.0 0.0 -fr 07_gas 2 332 2030 1.0 0.0 -fr 08_non-res 2 332 2030 1.0 0.0 -fr 09_hydro_pump 2 332 2030 1.0 0.0 -fr 01_solar 2 333 2030 1.0 0.0 -fr 02_wind_on 2 333 2030 1.0 0.0 -fr 03_wind_off 2 333 2030 1.0 0.0 -fr 04_res 2 333 2030 1.0 0.0 -fr 05_nuclear 2 333 2030 1.0 0.0 -fr 06_coal 2 333 2030 1.0 0.0 -fr 07_gas 2 333 2030 1.0 0.0 -fr 08_non-res 2 333 2030 1.0 0.0 -fr 09_hydro_pump 2 333 2030 1.0 0.0 -fr 01_solar 2 334 2030 1.0 0.0 -fr 02_wind_on 2 334 2030 1.0 0.0 -fr 03_wind_off 2 334 2030 1.0 0.0 -fr 04_res 2 334 2030 1.0 0.0 -fr 05_nuclear 2 334 2030 1.0 0.0 -fr 06_coal 2 334 2030 1.0 0.0 -fr 07_gas 2 334 2030 1.0 0.0 -fr 08_non-res 2 334 2030 1.0 0.0 -fr 09_hydro_pump 2 334 2030 1.0 0.0 -fr 01_solar 2 335 2030 1.0 0.0 -fr 02_wind_on 2 335 2030 1.0 0.0 -fr 03_wind_off 2 335 2030 1.0 0.0 -fr 04_res 2 335 2030 1.0 0.0 -fr 05_nuclear 2 335 2030 1.0 0.0 -fr 06_coal 2 335 2030 1.0 0.0 -fr 07_gas 2 335 2030 1.0 0.0 -fr 08_non-res 2 335 2030 1.0 0.0 -fr 09_hydro_pump 2 335 2030 1.0 0.0 -fr 01_solar 2 336 2030 1.0 0.0 -fr 02_wind_on 2 336 2030 1.0 0.0 -fr 03_wind_off 2 336 2030 1.0 0.0 -fr 04_res 2 336 2030 1.0 0.0 -fr 05_nuclear 2 336 2030 1.0 0.0 -fr 06_coal 2 336 2030 1.0 0.0 -fr 07_gas 2 336 2030 1.0 0.0 -fr 08_non-res 2 336 2030 1.0 0.0 -fr 09_hydro_pump 2 336 2030 1.0 0.0 -it 01_solar 2 1 2030 0.0 0.0 -it 02_wind_on 2 1 2030 0.0 0.0 -it 03_wind_off 2 1 2030 0.0 0.0 -it 04_res 2 1 2030 0.0 0.0 -it 05_nuclear 2 1 2030 0.0 0.0 -it 06_coal 2 1 2030 0.0 0.0 -it 07_gas 2 1 2030 0.0 0.0 -it 08_non-res 2 1 2030 0.0 0.0 -it 09_hydro_pump 2 1 2030 0.0 0.0 -it 01_solar 2 2 2030 1.0 0.0 -it 02_wind_on 2 2 2030 0.0 0.0 -it 03_wind_off 2 2 2030 0.0 0.0 -it 04_res 2 2 2030 0.0 0.0 -it 05_nuclear 2 2 2030 0.0 0.0 -it 06_coal 2 2 2030 0.0 0.0 -it 07_gas 2 2 2030 0.0 0.0 -it 08_non-res 2 2 2030 0.0 0.0 -it 09_hydro_pump 2 2 2030 0.0 0.0 -it 01_solar 2 3 2030 1.0 0.0 -it 02_wind_on 2 3 2030 0.0 0.0 -it 03_wind_off 2 3 2030 0.0 0.0 -it 04_res 2 3 2030 0.0 0.0 -it 05_nuclear 2 3 2030 0.0 0.0 -it 06_coal 2 3 2030 0.0 0.0 -it 07_gas 2 3 2030 0.0 0.0 -it 08_non-res 2 3 2030 0.0 0.0 -it 09_hydro_pump 2 3 2030 0.0 0.0 -it 01_solar 2 4 2030 1.0 0.0 -it 02_wind_on 2 4 2030 0.0 0.0 -it 03_wind_off 2 4 2030 0.0 0.0 -it 04_res 2 4 2030 0.0 0.0 -it 05_nuclear 2 4 2030 0.0 0.0 -it 06_coal 2 4 2030 0.0 0.0 -it 07_gas 2 4 2030 0.0 0.0 -it 08_non-res 2 4 2030 0.0 0.0 -it 09_hydro_pump 2 4 2030 0.0 0.0 -it 01_solar 2 5 2030 1.0 0.0 -it 02_wind_on 2 5 2030 0.0 0.0 -it 03_wind_off 2 5 2030 0.0 0.0 -it 04_res 2 5 2030 0.0 0.0 -it 05_nuclear 2 5 2030 0.0 0.0 -it 06_coal 2 5 2030 0.0 0.0 -it 07_gas 2 5 2030 0.0 0.0 -it 08_non-res 2 5 2030 0.0 0.0 -it 09_hydro_pump 2 5 2030 0.0 0.0 -it 01_solar 2 6 2030 1.0 0.0 -it 02_wind_on 2 6 2030 0.0 0.0 -it 03_wind_off 2 6 2030 0.0 0.0 -it 04_res 2 6 2030 0.0 0.0 -it 05_nuclear 2 6 2030 0.0 0.0 -it 06_coal 2 6 2030 0.0 0.0 -it 07_gas 2 6 2030 0.0 0.0 -it 08_non-res 2 6 2030 0.0 0.0 -it 09_hydro_pump 2 6 2030 0.0 0.0 -it 01_solar 2 7 2030 1.0 0.0 -it 02_wind_on 2 7 2030 0.0 0.0 -it 03_wind_off 2 7 2030 0.0 0.0 -it 04_res 2 7 2030 0.0 0.0 -it 05_nuclear 2 7 2030 0.0 0.0 -it 06_coal 2 7 2030 0.0 0.0 -it 07_gas 2 7 2030 0.0 0.0 -it 08_non-res 2 7 2030 0.0 0.0 -it 09_hydro_pump 2 7 2030 0.0 0.0 -it 01_solar 2 8 2030 1.0 0.0 -it 02_wind_on 2 8 2030 0.0 0.0 -it 03_wind_off 2 8 2030 0.0 0.0 -it 04_res 2 8 2030 0.0 0.0 -it 05_nuclear 2 8 2030 0.0 0.0 -it 06_coal 2 8 2030 0.0 0.0 -it 07_gas 2 8 2030 0.0 0.0 -it 08_non-res 2 8 2030 0.0 0.0 -it 09_hydro_pump 2 8 2030 0.0 0.0 -it 01_solar 2 9 2030 1.0 0.0 -it 02_wind_on 2 9 2030 0.0 0.0 -it 03_wind_off 2 9 2030 0.0 0.0 -it 04_res 2 9 2030 0.0 0.0 -it 05_nuclear 2 9 2030 0.0 0.0 -it 06_coal 2 9 2030 0.0 0.0 -it 07_gas 2 9 2030 0.0 0.0 -it 08_non-res 2 9 2030 0.0 0.0 -it 09_hydro_pump 2 9 2030 0.0 0.0 -it 01_solar 2 10 2030 1.0 0.0 -it 02_wind_on 2 10 2030 0.0 0.0 -it 03_wind_off 2 10 2030 0.0 0.0 -it 04_res 2 10 2030 0.0 0.0 -it 05_nuclear 2 10 2030 0.0 0.0 -it 06_coal 2 10 2030 0.0 0.0 -it 07_gas 2 10 2030 0.0 0.0 -it 08_non-res 2 10 2030 0.0 0.0 -it 09_hydro_pump 2 10 2030 0.0 0.0 -it 01_solar 2 11 2030 1.0 0.0 -it 02_wind_on 2 11 2030 0.0 0.0 -it 03_wind_off 2 11 2030 0.0 0.0 -it 04_res 2 11 2030 0.0 0.0 -it 05_nuclear 2 11 2030 0.0 0.0 -it 06_coal 2 11 2030 0.0 0.0 -it 07_gas 2 11 2030 0.0 0.0 -it 08_non-res 2 11 2030 0.0 0.0 -it 09_hydro_pump 2 11 2030 0.0 0.0 -it 01_solar 2 12 2030 1.0 0.0 -it 02_wind_on 2 12 2030 0.0 0.0 -it 03_wind_off 2 12 2030 0.0 0.0 -it 04_res 2 12 2030 0.0 0.0 -it 05_nuclear 2 12 2030 0.0 0.0 -it 06_coal 2 12 2030 0.0 0.0 -it 07_gas 2 12 2030 0.0 0.0 -it 08_non-res 2 12 2030 0.0 0.0 -it 09_hydro_pump 2 12 2030 0.0 0.0 -it 01_solar 2 13 2030 1.0 0.0 -it 02_wind_on 2 13 2030 0.0 0.0 -it 03_wind_off 2 13 2030 0.0 0.0 -it 04_res 2 13 2030 0.0 0.0 -it 05_nuclear 2 13 2030 0.0 0.0 -it 06_coal 2 13 2030 0.0 0.0 -it 07_gas 2 13 2030 0.0 0.0 -it 08_non-res 2 13 2030 0.0 0.0 -it 09_hydro_pump 2 13 2030 0.0 0.0 -it 01_solar 2 14 2030 1.0 0.0 -it 02_wind_on 2 14 2030 0.0 0.0 -it 03_wind_off 2 14 2030 0.0 0.0 -it 04_res 2 14 2030 0.0 0.0 -it 05_nuclear 2 14 2030 0.0 0.0 -it 06_coal 2 14 2030 0.0 0.0 -it 07_gas 2 14 2030 0.0 0.0 -it 08_non-res 2 14 2030 0.0 0.0 -it 09_hydro_pump 2 14 2030 0.0 0.0 -it 01_solar 2 15 2030 1.0 0.0 -it 02_wind_on 2 15 2030 0.0 0.0 -it 03_wind_off 2 15 2030 0.0 0.0 -it 04_res 2 15 2030 0.0 0.0 -it 05_nuclear 2 15 2030 0.0 0.0 -it 06_coal 2 15 2030 0.0 0.0 -it 07_gas 2 15 2030 0.0 0.0 -it 08_non-res 2 15 2030 0.0 0.0 -it 09_hydro_pump 2 15 2030 0.0 0.0 -it 01_solar 2 16 2030 1.0 0.0 -it 02_wind_on 2 16 2030 0.0 0.0 -it 03_wind_off 2 16 2030 0.0 0.0 -it 04_res 2 16 2030 0.0 0.0 -it 05_nuclear 2 16 2030 0.0 0.0 -it 06_coal 2 16 2030 0.0 0.0 -it 07_gas 2 16 2030 0.0 0.0 -it 08_non-res 2 16 2030 0.0 0.0 -it 09_hydro_pump 2 16 2030 0.0 0.0 -it 01_solar 2 17 2030 1.0 0.0 -it 02_wind_on 2 17 2030 0.0 0.0 -it 03_wind_off 2 17 2030 0.0 0.0 -it 04_res 2 17 2030 0.0 0.0 -it 05_nuclear 2 17 2030 0.0 0.0 -it 06_coal 2 17 2030 0.0 0.0 -it 07_gas 2 17 2030 0.0 0.0 -it 08_non-res 2 17 2030 0.0 0.0 -it 09_hydro_pump 2 17 2030 0.0 0.0 -it 01_solar 2 18 2030 1.0 0.0 -it 02_wind_on 2 18 2030 0.0 0.0 -it 03_wind_off 2 18 2030 0.0 0.0 -it 04_res 2 18 2030 0.0 0.0 -it 05_nuclear 2 18 2030 0.0 0.0 -it 06_coal 2 18 2030 0.0 0.0 -it 07_gas 2 18 2030 0.0 0.0 -it 08_non-res 2 18 2030 0.0 0.0 -it 09_hydro_pump 2 18 2030 0.0 0.0 -it 01_solar 2 19 2030 1.0 0.0 -it 02_wind_on 2 19 2030 0.0 0.0 -it 03_wind_off 2 19 2030 0.0 0.0 -it 04_res 2 19 2030 0.0 0.0 -it 05_nuclear 2 19 2030 0.0 0.0 -it 06_coal 2 19 2030 0.0 0.0 -it 07_gas 2 19 2030 0.0 0.0 -it 08_non-res 2 19 2030 0.0 0.0 -it 09_hydro_pump 2 19 2030 0.0 0.0 -it 01_solar 2 20 2030 1.0 0.0 -it 02_wind_on 2 20 2030 0.0 0.0 -it 03_wind_off 2 20 2030 0.0 0.0 -it 04_res 2 20 2030 0.0 0.0 -it 05_nuclear 2 20 2030 0.0 0.0 -it 06_coal 2 20 2030 0.0 0.0 -it 07_gas 2 20 2030 0.0 0.0 -it 08_non-res 2 20 2030 0.0 0.0 -it 09_hydro_pump 2 20 2030 0.0 0.0 -it 01_solar 2 21 2030 1.0 0.0 -it 02_wind_on 2 21 2030 0.0 0.0 -it 03_wind_off 2 21 2030 0.0 0.0 -it 04_res 2 21 2030 0.0 0.0 -it 05_nuclear 2 21 2030 0.0 0.0 -it 06_coal 2 21 2030 0.0 0.0 -it 07_gas 2 21 2030 0.0 0.0 -it 08_non-res 2 21 2030 0.0 0.0 -it 09_hydro_pump 2 21 2030 0.0 0.0 -it 01_solar 2 22 2030 1.0 0.0 -it 02_wind_on 2 22 2030 1.0 0.0 -it 03_wind_off 2 22 2030 0.0 0.0 -it 04_res 2 22 2030 0.0 0.0 -it 05_nuclear 2 22 2030 0.0 0.0 -it 06_coal 2 22 2030 0.0 0.0 -it 07_gas 2 22 2030 0.0 0.0 -it 08_non-res 2 22 2030 0.0 0.0 -it 09_hydro_pump 2 22 2030 0.0 0.0 -it 01_solar 2 23 2030 1.0 0.0 -it 02_wind_on 2 23 2030 1.0 0.0 -it 03_wind_off 2 23 2030 0.0 0.0 -it 04_res 2 23 2030 0.0 0.0 -it 05_nuclear 2 23 2030 0.0 0.0 -it 06_coal 2 23 2030 0.0 0.0 -it 07_gas 2 23 2030 0.0 0.0 -it 08_non-res 2 23 2030 0.0 0.0 -it 09_hydro_pump 2 23 2030 0.0 0.0 -it 01_solar 2 24 2030 1.0 0.0 -it 02_wind_on 2 24 2030 1.0 0.0 -it 03_wind_off 2 24 2030 0.0 0.0 -it 04_res 2 24 2030 0.0 0.0 -it 05_nuclear 2 24 2030 0.0 0.0 -it 06_coal 2 24 2030 0.0 0.0 -it 07_gas 2 24 2030 0.0 0.0 -it 08_non-res 2 24 2030 0.0 0.0 -it 09_hydro_pump 2 24 2030 0.0 0.0 -it 01_solar 2 25 2030 1.0 0.0 -it 02_wind_on 2 25 2030 1.0 0.0 -it 03_wind_off 2 25 2030 0.0 0.0 -it 04_res 2 25 2030 0.0 0.0 -it 05_nuclear 2 25 2030 0.0 0.0 -it 06_coal 2 25 2030 0.0 0.0 -it 07_gas 2 25 2030 0.0 0.0 -it 08_non-res 2 25 2030 0.0 0.0 -it 09_hydro_pump 2 25 2030 0.0 0.0 -it 01_solar 2 26 2030 1.0 0.0 -it 02_wind_on 2 26 2030 1.0 0.0 -it 03_wind_off 2 26 2030 0.0 0.0 -it 04_res 2 26 2030 0.0 0.0 -it 05_nuclear 2 26 2030 0.0 0.0 -it 06_coal 2 26 2030 0.0 0.0 -it 07_gas 2 26 2030 0.0 0.0 -it 08_non-res 2 26 2030 0.0 0.0 -it 09_hydro_pump 2 26 2030 0.0 0.0 -it 01_solar 2 27 2030 1.0 0.0 -it 02_wind_on 2 27 2030 1.0 0.0 -it 03_wind_off 2 27 2030 0.0 0.0 -it 04_res 2 27 2030 0.0 0.0 -it 05_nuclear 2 27 2030 0.0 0.0 -it 06_coal 2 27 2030 0.0 0.0 -it 07_gas 2 27 2030 0.0 0.0 -it 08_non-res 2 27 2030 0.0 0.0 -it 09_hydro_pump 2 27 2030 0.0 0.0 -it 01_solar 2 28 2030 1.0 0.0 -it 02_wind_on 2 28 2030 1.0 0.0 -it 03_wind_off 2 28 2030 0.0 0.0 -it 04_res 2 28 2030 0.0 0.0 -it 05_nuclear 2 28 2030 0.0 0.0 -it 06_coal 2 28 2030 0.0 0.0 -it 07_gas 2 28 2030 0.0 0.0 -it 08_non-res 2 28 2030 0.0 0.0 -it 09_hydro_pump 2 28 2030 0.0 0.0 -it 01_solar 2 29 2030 1.0 0.0 -it 02_wind_on 2 29 2030 1.0 0.0 -it 03_wind_off 2 29 2030 0.0 0.0 -it 04_res 2 29 2030 0.0 0.0 -it 05_nuclear 2 29 2030 0.0 0.0 -it 06_coal 2 29 2030 0.0 0.0 -it 07_gas 2 29 2030 0.0 0.0 -it 08_non-res 2 29 2030 0.0 0.0 -it 09_hydro_pump 2 29 2030 0.0 0.0 -it 01_solar 2 30 2030 1.0 0.0 -it 02_wind_on 2 30 2030 1.0 0.0 -it 03_wind_off 2 30 2030 0.0 0.0 -it 04_res 2 30 2030 0.0 0.0 -it 05_nuclear 2 30 2030 0.0 0.0 -it 06_coal 2 30 2030 0.0 0.0 -it 07_gas 2 30 2030 0.0 0.0 -it 08_non-res 2 30 2030 0.0 0.0 -it 09_hydro_pump 2 30 2030 0.0 0.0 -it 01_solar 2 31 2030 1.0 0.0 -it 02_wind_on 2 31 2030 1.0 0.0 -it 03_wind_off 2 31 2030 0.0 0.0 -it 04_res 2 31 2030 0.0 0.0 -it 05_nuclear 2 31 2030 0.0 0.0 -it 06_coal 2 31 2030 0.0 0.0 -it 07_gas 2 31 2030 0.0 0.0 -it 08_non-res 2 31 2030 0.0 0.0 -it 09_hydro_pump 2 31 2030 0.0 0.0 -it 01_solar 2 32 2030 1.0 0.0 -it 02_wind_on 2 32 2030 1.0 0.0 -it 03_wind_off 2 32 2030 0.0 0.0 -it 04_res 2 32 2030 0.0 0.0 -it 05_nuclear 2 32 2030 0.0 0.0 -it 06_coal 2 32 2030 0.0 0.0 -it 07_gas 2 32 2030 0.0 0.0 -it 08_non-res 2 32 2030 0.0 0.0 -it 09_hydro_pump 2 32 2030 0.0 0.0 -it 01_solar 2 33 2030 1.0 0.0 -it 02_wind_on 2 33 2030 1.0 0.0 -it 03_wind_off 2 33 2030 0.0 0.0 -it 04_res 2 33 2030 0.0 0.0 -it 05_nuclear 2 33 2030 0.0 0.0 -it 06_coal 2 33 2030 0.0 0.0 -it 07_gas 2 33 2030 0.0 0.0 -it 08_non-res 2 33 2030 0.0 0.0 -it 09_hydro_pump 2 33 2030 0.0 0.0 -it 01_solar 2 34 2030 1.0 0.0 -it 02_wind_on 2 34 2030 1.0 0.0 -it 03_wind_off 2 34 2030 0.0 0.0 -it 04_res 2 34 2030 0.0 0.0 -it 05_nuclear 2 34 2030 0.0 0.0 -it 06_coal 2 34 2030 0.0 0.0 -it 07_gas 2 34 2030 0.0 0.0 -it 08_non-res 2 34 2030 0.0 0.0 -it 09_hydro_pump 2 34 2030 0.0 0.0 -it 01_solar 2 35 2030 1.0 0.0 -it 02_wind_on 2 35 2030 1.0 0.0 -it 03_wind_off 2 35 2030 0.0 0.0 -it 04_res 2 35 2030 0.0 0.0 -it 05_nuclear 2 35 2030 0.0 0.0 -it 06_coal 2 35 2030 0.0 0.0 -it 07_gas 2 35 2030 0.0 0.0 -it 08_non-res 2 35 2030 0.0 0.0 -it 09_hydro_pump 2 35 2030 0.0 0.0 -it 01_solar 2 36 2030 1.0 0.0 -it 02_wind_on 2 36 2030 1.0 0.0 -it 03_wind_off 2 36 2030 0.0 0.0 -it 04_res 2 36 2030 0.0 0.0 -it 05_nuclear 2 36 2030 0.0 0.0 -it 06_coal 2 36 2030 0.0 0.0 -it 07_gas 2 36 2030 0.0 0.0 -it 08_non-res 2 36 2030 0.0 0.0 -it 09_hydro_pump 2 36 2030 0.0 0.0 -it 01_solar 2 37 2030 1.0 0.0 -it 02_wind_on 2 37 2030 1.0 0.0 -it 03_wind_off 2 37 2030 0.0 0.0 -it 04_res 2 37 2030 0.0 0.0 -it 05_nuclear 2 37 2030 0.0 0.0 -it 06_coal 2 37 2030 0.0 0.0 -it 07_gas 2 37 2030 0.0 0.0 -it 08_non-res 2 37 2030 0.0 0.0 -it 09_hydro_pump 2 37 2030 0.0 0.0 -it 01_solar 2 38 2030 1.0 0.0 -it 02_wind_on 2 38 2030 1.0 0.0 -it 03_wind_off 2 38 2030 0.0 0.0 -it 04_res 2 38 2030 0.0 0.0 -it 05_nuclear 2 38 2030 0.0 0.0 -it 06_coal 2 38 2030 0.0 0.0 -it 07_gas 2 38 2030 0.0 0.0 -it 08_non-res 2 38 2030 0.0 0.0 -it 09_hydro_pump 2 38 2030 0.0 0.0 -it 01_solar 2 39 2030 1.0 0.0 -it 02_wind_on 2 39 2030 1.0 0.0 -it 03_wind_off 2 39 2030 0.0 0.0 -it 04_res 2 39 2030 0.0 0.0 -it 05_nuclear 2 39 2030 0.0 0.0 -it 06_coal 2 39 2030 0.0 0.0 -it 07_gas 2 39 2030 0.0 0.0 -it 08_non-res 2 39 2030 0.0 0.0 -it 09_hydro_pump 2 39 2030 0.0 0.0 -it 01_solar 2 40 2030 1.0 0.0 -it 02_wind_on 2 40 2030 1.0 0.0 -it 03_wind_off 2 40 2030 0.0 0.0 -it 04_res 2 40 2030 0.0 0.0 -it 05_nuclear 2 40 2030 0.0 0.0 -it 06_coal 2 40 2030 0.0 0.0 -it 07_gas 2 40 2030 0.0 0.0 -it 08_non-res 2 40 2030 0.0 0.0 -it 09_hydro_pump 2 40 2030 0.0 0.0 -it 01_solar 2 41 2030 1.0 0.0 -it 02_wind_on 2 41 2030 1.0 0.0 -it 03_wind_off 2 41 2030 0.0 0.0 -it 04_res 2 41 2030 0.0 0.0 -it 05_nuclear 2 41 2030 0.0 0.0 -it 06_coal 2 41 2030 0.0 0.0 -it 07_gas 2 41 2030 0.0 0.0 -it 08_non-res 2 41 2030 0.0 0.0 -it 09_hydro_pump 2 41 2030 0.0 0.0 -it 01_solar 2 42 2030 1.0 0.0 -it 02_wind_on 2 42 2030 1.0 0.0 -it 03_wind_off 2 42 2030 1.0 0.0 -it 04_res 2 42 2030 0.0 0.0 -it 05_nuclear 2 42 2030 0.0 0.0 -it 06_coal 2 42 2030 0.0 0.0 -it 07_gas 2 42 2030 0.0 0.0 -it 08_non-res 2 42 2030 0.0 0.0 -it 09_hydro_pump 2 42 2030 0.0 0.0 -it 01_solar 2 43 2030 1.0 0.0 -it 02_wind_on 2 43 2030 1.0 0.0 -it 03_wind_off 2 43 2030 1.0 0.0 -it 04_res 2 43 2030 0.0 0.0 -it 05_nuclear 2 43 2030 0.0 0.0 -it 06_coal 2 43 2030 0.0 0.0 -it 07_gas 2 43 2030 0.0 0.0 -it 08_non-res 2 43 2030 0.0 0.0 -it 09_hydro_pump 2 43 2030 0.0 0.0 -it 01_solar 2 44 2030 1.0 0.0 -it 02_wind_on 2 44 2030 1.0 0.0 -it 03_wind_off 2 44 2030 1.0 0.0 -it 04_res 2 44 2030 0.0 0.0 -it 05_nuclear 2 44 2030 0.0 0.0 -it 06_coal 2 44 2030 0.0 0.0 -it 07_gas 2 44 2030 0.0 0.0 -it 08_non-res 2 44 2030 0.0 0.0 -it 09_hydro_pump 2 44 2030 0.0 0.0 -it 01_solar 2 45 2030 1.0 0.0 -it 02_wind_on 2 45 2030 1.0 0.0 -it 03_wind_off 2 45 2030 1.0 0.0 -it 04_res 2 45 2030 0.0 0.0 -it 05_nuclear 2 45 2030 0.0 0.0 -it 06_coal 2 45 2030 0.0 0.0 -it 07_gas 2 45 2030 0.0 0.0 -it 08_non-res 2 45 2030 0.0 0.0 -it 09_hydro_pump 2 45 2030 0.0 0.0 -it 01_solar 2 46 2030 1.0 0.0 -it 02_wind_on 2 46 2030 1.0 0.0 -it 03_wind_off 2 46 2030 1.0 0.0 -it 04_res 2 46 2030 0.0 0.0 -it 05_nuclear 2 46 2030 0.0 0.0 -it 06_coal 2 46 2030 0.0 0.0 -it 07_gas 2 46 2030 0.0 0.0 -it 08_non-res 2 46 2030 0.0 0.0 -it 09_hydro_pump 2 46 2030 0.0 0.0 -it 01_solar 2 47 2030 1.0 0.0 -it 02_wind_on 2 47 2030 1.0 0.0 -it 03_wind_off 2 47 2030 1.0 0.0 -it 04_res 2 47 2030 0.0 0.0 -it 05_nuclear 2 47 2030 0.0 0.0 -it 06_coal 2 47 2030 0.0 0.0 -it 07_gas 2 47 2030 0.0 0.0 -it 08_non-res 2 47 2030 0.0 0.0 -it 09_hydro_pump 2 47 2030 0.0 0.0 -it 01_solar 2 48 2030 1.0 0.0 -it 02_wind_on 2 48 2030 1.0 0.0 -it 03_wind_off 2 48 2030 1.0 0.0 -it 04_res 2 48 2030 0.0 0.0 -it 05_nuclear 2 48 2030 0.0 0.0 -it 06_coal 2 48 2030 0.0 0.0 -it 07_gas 2 48 2030 0.0 0.0 -it 08_non-res 2 48 2030 0.0 0.0 -it 09_hydro_pump 2 48 2030 0.0 0.0 -it 01_solar 2 49 2030 1.0 0.0 -it 02_wind_on 2 49 2030 1.0 0.0 -it 03_wind_off 2 49 2030 1.0 0.0 -it 04_res 2 49 2030 0.0 0.0 -it 05_nuclear 2 49 2030 0.0 0.0 -it 06_coal 2 49 2030 0.0 0.0 -it 07_gas 2 49 2030 0.0 0.0 -it 08_non-res 2 49 2030 0.0 0.0 -it 09_hydro_pump 2 49 2030 0.0 0.0 -it 01_solar 2 50 2030 1.0 0.0 -it 02_wind_on 2 50 2030 1.0 0.0 -it 03_wind_off 2 50 2030 1.0 0.0 -it 04_res 2 50 2030 0.0 0.0 -it 05_nuclear 2 50 2030 0.0 0.0 -it 06_coal 2 50 2030 0.0 0.0 -it 07_gas 2 50 2030 0.0 0.0 -it 08_non-res 2 50 2030 0.0 0.0 -it 09_hydro_pump 2 50 2030 0.0 0.0 -it 01_solar 2 51 2030 1.0 0.0 -it 02_wind_on 2 51 2030 1.0 0.0 -it 03_wind_off 2 51 2030 1.0 0.0 -it 04_res 2 51 2030 0.0 0.0 -it 05_nuclear 2 51 2030 0.0 0.0 -it 06_coal 2 51 2030 0.0 0.0 -it 07_gas 2 51 2030 0.0 0.0 -it 08_non-res 2 51 2030 0.0 0.0 -it 09_hydro_pump 2 51 2030 0.0 0.0 -it 01_solar 2 52 2030 1.0 0.0 -it 02_wind_on 2 52 2030 1.0 0.0 -it 03_wind_off 2 52 2030 1.0 0.0 -it 04_res 2 52 2030 0.0 0.0 -it 05_nuclear 2 52 2030 0.0 0.0 -it 06_coal 2 52 2030 0.0 0.0 -it 07_gas 2 52 2030 0.0 0.0 -it 08_non-res 2 52 2030 0.0 0.0 -it 09_hydro_pump 2 52 2030 0.0 0.0 -it 01_solar 2 53 2030 1.0 0.0 -it 02_wind_on 2 53 2030 1.0 0.0 -it 03_wind_off 2 53 2030 1.0 0.0 -it 04_res 2 53 2030 0.0 0.0 -it 05_nuclear 2 53 2030 0.0 0.0 -it 06_coal 2 53 2030 0.0 0.0 -it 07_gas 2 53 2030 0.0 0.0 -it 08_non-res 2 53 2030 0.0 0.0 -it 09_hydro_pump 2 53 2030 0.0 0.0 -it 01_solar 2 54 2030 1.0 0.0 -it 02_wind_on 2 54 2030 1.0 0.0 -it 03_wind_off 2 54 2030 1.0 0.0 -it 04_res 2 54 2030 0.0 0.0 -it 05_nuclear 2 54 2030 0.0 0.0 -it 06_coal 2 54 2030 0.0 0.0 -it 07_gas 2 54 2030 0.0 0.0 -it 08_non-res 2 54 2030 0.0 0.0 -it 09_hydro_pump 2 54 2030 0.0 0.0 -it 01_solar 2 55 2030 1.0 0.0 -it 02_wind_on 2 55 2030 1.0 0.0 -it 03_wind_off 2 55 2030 1.0 0.0 -it 04_res 2 55 2030 0.0 0.0 -it 05_nuclear 2 55 2030 0.0 0.0 -it 06_coal 2 55 2030 0.0 0.0 -it 07_gas 2 55 2030 0.0 0.0 -it 08_non-res 2 55 2030 0.0 0.0 -it 09_hydro_pump 2 55 2030 0.0 0.0 -it 01_solar 2 56 2030 1.0 0.0 -it 02_wind_on 2 56 2030 1.0 0.0 -it 03_wind_off 2 56 2030 1.0 0.0 -it 04_res 2 56 2030 0.0 0.0 -it 05_nuclear 2 56 2030 0.0 0.0 -it 06_coal 2 56 2030 0.0 0.0 -it 07_gas 2 56 2030 0.0 0.0 -it 08_non-res 2 56 2030 0.0 0.0 -it 09_hydro_pump 2 56 2030 0.0 0.0 -it 01_solar 2 57 2030 1.0 0.0 -it 02_wind_on 2 57 2030 1.0 0.0 -it 03_wind_off 2 57 2030 1.0 0.0 -it 04_res 2 57 2030 0.0 0.0 -it 05_nuclear 2 57 2030 0.0 0.0 -it 06_coal 2 57 2030 0.0 0.0 -it 07_gas 2 57 2030 0.0 0.0 -it 08_non-res 2 57 2030 0.0 0.0 -it 09_hydro_pump 2 57 2030 0.0 0.0 -it 01_solar 2 58 2030 1.0 0.0 -it 02_wind_on 2 58 2030 1.0 0.0 -it 03_wind_off 2 58 2030 1.0 0.0 -it 04_res 2 58 2030 0.0 0.0 -it 05_nuclear 2 58 2030 0.0 0.0 -it 06_coal 2 58 2030 0.0 0.0 -it 07_gas 2 58 2030 0.0 0.0 -it 08_non-res 2 58 2030 0.0 0.0 -it 09_hydro_pump 2 58 2030 0.0 0.0 -it 01_solar 2 59 2030 1.0 0.0 -it 02_wind_on 2 59 2030 1.0 0.0 -it 03_wind_off 2 59 2030 1.0 0.0 -it 04_res 2 59 2030 0.0 0.0 -it 05_nuclear 2 59 2030 0.0 0.0 -it 06_coal 2 59 2030 0.0 0.0 -it 07_gas 2 59 2030 0.0 0.0 -it 08_non-res 2 59 2030 0.0 0.0 -it 09_hydro_pump 2 59 2030 0.0 0.0 -it 01_solar 2 60 2030 1.0 0.0 -it 02_wind_on 2 60 2030 1.0 0.0 -it 03_wind_off 2 60 2030 1.0 0.0 -it 04_res 2 60 2030 0.0 0.0 -it 05_nuclear 2 60 2030 0.0 0.0 -it 06_coal 2 60 2030 0.0 0.0 -it 07_gas 2 60 2030 0.0 0.0 -it 08_non-res 2 60 2030 0.0 0.0 -it 09_hydro_pump 2 60 2030 0.0 0.0 -it 01_solar 2 61 2030 1.0 0.0 -it 02_wind_on 2 61 2030 1.0 0.0 -it 03_wind_off 2 61 2030 1.0 0.0 -it 04_res 2 61 2030 0.0 0.0 -it 05_nuclear 2 61 2030 0.0 0.0 -it 06_coal 2 61 2030 0.0 0.0 -it 07_gas 2 61 2030 0.0 0.0 -it 08_non-res 2 61 2030 0.0 0.0 -it 09_hydro_pump 2 61 2030 0.0 0.0 -it 01_solar 2 62 2030 1.0 0.0 -it 02_wind_on 2 62 2030 1.0 0.0 -it 03_wind_off 2 62 2030 1.0 0.0 -it 04_res 2 62 2030 1.0 0.0 -it 05_nuclear 2 62 2030 0.0 0.0 -it 06_coal 2 62 2030 0.0 0.0 -it 07_gas 2 62 2030 0.0 0.0 -it 08_non-res 2 62 2030 0.0 0.0 -it 09_hydro_pump 2 62 2030 0.0 0.0 -it 01_solar 2 63 2030 1.0 0.0 -it 02_wind_on 2 63 2030 1.0 0.0 -it 03_wind_off 2 63 2030 1.0 0.0 -it 04_res 2 63 2030 1.0 0.0 -it 05_nuclear 2 63 2030 0.0 0.0 -it 06_coal 2 63 2030 0.0 0.0 -it 07_gas 2 63 2030 0.0 0.0 -it 08_non-res 2 63 2030 0.0 0.0 -it 09_hydro_pump 2 63 2030 0.0 0.0 -it 01_solar 2 64 2030 1.0 0.0 -it 02_wind_on 2 64 2030 1.0 0.0 -it 03_wind_off 2 64 2030 1.0 0.0 -it 04_res 2 64 2030 1.0 0.0 -it 05_nuclear 2 64 2030 0.0 0.0 -it 06_coal 2 64 2030 0.0 0.0 -it 07_gas 2 64 2030 0.0 0.0 -it 08_non-res 2 64 2030 0.0 0.0 -it 09_hydro_pump 2 64 2030 0.0 0.0 -it 01_solar 2 65 2030 1.0 0.0 -it 02_wind_on 2 65 2030 1.0 0.0 -it 03_wind_off 2 65 2030 1.0 0.0 -it 04_res 2 65 2030 1.0 0.0 -it 05_nuclear 2 65 2030 0.0 0.0 -it 06_coal 2 65 2030 0.0 0.0 -it 07_gas 2 65 2030 0.0 0.0 -it 08_non-res 2 65 2030 0.0 0.0 -it 09_hydro_pump 2 65 2030 0.0 0.0 -it 01_solar 2 66 2030 1.0 0.0 -it 02_wind_on 2 66 2030 1.0 0.0 -it 03_wind_off 2 66 2030 1.0 0.0 -it 04_res 2 66 2030 1.0 0.0 -it 05_nuclear 2 66 2030 0.0 0.0 -it 06_coal 2 66 2030 0.0 0.0 -it 07_gas 2 66 2030 0.0 0.0 -it 08_non-res 2 66 2030 0.0 0.0 -it 09_hydro_pump 2 66 2030 0.0 0.0 -it 01_solar 2 67 2030 1.0 0.0 -it 02_wind_on 2 67 2030 1.0 0.0 -it 03_wind_off 2 67 2030 1.0 0.0 -it 04_res 2 67 2030 1.0 0.0 -it 05_nuclear 2 67 2030 0.0 0.0 -it 06_coal 2 67 2030 0.0 0.0 -it 07_gas 2 67 2030 0.0 0.0 -it 08_non-res 2 67 2030 0.0 0.0 -it 09_hydro_pump 2 67 2030 0.0 0.0 -it 01_solar 2 68 2030 1.0 0.0 -it 02_wind_on 2 68 2030 1.0 0.0 -it 03_wind_off 2 68 2030 1.0 0.0 -it 04_res 2 68 2030 1.0 0.0 -it 05_nuclear 2 68 2030 0.0 0.0 -it 06_coal 2 68 2030 0.0 0.0 -it 07_gas 2 68 2030 0.0 0.0 -it 08_non-res 2 68 2030 0.0 0.0 -it 09_hydro_pump 2 68 2030 0.0 0.0 -it 01_solar 2 69 2030 1.0 0.0 -it 02_wind_on 2 69 2030 1.0 0.0 -it 03_wind_off 2 69 2030 1.0 0.0 -it 04_res 2 69 2030 1.0 0.0 -it 05_nuclear 2 69 2030 0.0 0.0 -it 06_coal 2 69 2030 0.0 0.0 -it 07_gas 2 69 2030 0.0 0.0 -it 08_non-res 2 69 2030 0.0 0.0 -it 09_hydro_pump 2 69 2030 0.0 0.0 -it 01_solar 2 70 2030 1.0 0.0 -it 02_wind_on 2 70 2030 1.0 0.0 -it 03_wind_off 2 70 2030 1.0 0.0 -it 04_res 2 70 2030 1.0 0.0 -it 05_nuclear 2 70 2030 0.0 0.0 -it 06_coal 2 70 2030 0.0 0.0 -it 07_gas 2 70 2030 0.0 0.0 -it 08_non-res 2 70 2030 0.0 0.0 -it 09_hydro_pump 2 70 2030 0.0 0.0 -it 01_solar 2 71 2030 1.0 0.0 -it 02_wind_on 2 71 2030 1.0 0.0 -it 03_wind_off 2 71 2030 1.0 0.0 -it 04_res 2 71 2030 1.0 0.0 -it 05_nuclear 2 71 2030 0.0 0.0 -it 06_coal 2 71 2030 0.0 0.0 -it 07_gas 2 71 2030 0.0 0.0 -it 08_non-res 2 71 2030 0.0 0.0 -it 09_hydro_pump 2 71 2030 0.0 0.0 -it 01_solar 2 72 2030 1.0 0.0 -it 02_wind_on 2 72 2030 1.0 0.0 -it 03_wind_off 2 72 2030 1.0 0.0 -it 04_res 2 72 2030 1.0 0.0 -it 05_nuclear 2 72 2030 0.0 0.0 -it 06_coal 2 72 2030 0.0 0.0 -it 07_gas 2 72 2030 0.0 0.0 -it 08_non-res 2 72 2030 0.0 0.0 -it 09_hydro_pump 2 72 2030 0.0 0.0 -it 01_solar 2 73 2030 1.0 0.0 -it 02_wind_on 2 73 2030 1.0 0.0 -it 03_wind_off 2 73 2030 1.0 0.0 -it 04_res 2 73 2030 1.0 0.0 -it 05_nuclear 2 73 2030 0.0 0.0 -it 06_coal 2 73 2030 0.0 0.0 -it 07_gas 2 73 2030 0.0 0.0 -it 08_non-res 2 73 2030 0.0 0.0 -it 09_hydro_pump 2 73 2030 0.0 0.0 -it 01_solar 2 74 2030 1.0 0.0 -it 02_wind_on 2 74 2030 1.0 0.0 -it 03_wind_off 2 74 2030 1.0 0.0 -it 04_res 2 74 2030 1.0 0.0 -it 05_nuclear 2 74 2030 0.0 0.0 -it 06_coal 2 74 2030 0.0 0.0 -it 07_gas 2 74 2030 0.0 0.0 -it 08_non-res 2 74 2030 0.0 0.0 -it 09_hydro_pump 2 74 2030 0.0 0.0 -it 01_solar 2 75 2030 1.0 0.0 -it 02_wind_on 2 75 2030 1.0 0.0 -it 03_wind_off 2 75 2030 1.0 0.0 -it 04_res 2 75 2030 1.0 0.0 -it 05_nuclear 2 75 2030 0.0 0.0 -it 06_coal 2 75 2030 0.0 0.0 -it 07_gas 2 75 2030 0.0 0.0 -it 08_non-res 2 75 2030 0.0 0.0 -it 09_hydro_pump 2 75 2030 0.0 0.0 -it 01_solar 2 76 2030 1.0 0.0 -it 02_wind_on 2 76 2030 1.0 0.0 -it 03_wind_off 2 76 2030 1.0 0.0 -it 04_res 2 76 2030 1.0 0.0 -it 05_nuclear 2 76 2030 0.0 0.0 -it 06_coal 2 76 2030 0.0 0.0 -it 07_gas 2 76 2030 0.0 0.0 -it 08_non-res 2 76 2030 0.0 0.0 -it 09_hydro_pump 2 76 2030 0.0 0.0 -it 01_solar 2 77 2030 1.0 0.0 -it 02_wind_on 2 77 2030 1.0 0.0 -it 03_wind_off 2 77 2030 1.0 0.0 -it 04_res 2 77 2030 1.0 0.0 -it 05_nuclear 2 77 2030 0.0 0.0 -it 06_coal 2 77 2030 0.0 0.0 -it 07_gas 2 77 2030 0.0 0.0 -it 08_non-res 2 77 2030 0.0 0.0 -it 09_hydro_pump 2 77 2030 0.0 0.0 -it 01_solar 2 78 2030 1.0 0.0 -it 02_wind_on 2 78 2030 1.0 0.0 -it 03_wind_off 2 78 2030 1.0 0.0 -it 04_res 2 78 2030 1.0 0.0 -it 05_nuclear 2 78 2030 0.0 0.0 -it 06_coal 2 78 2030 0.0 0.0 -it 07_gas 2 78 2030 0.0 0.0 -it 08_non-res 2 78 2030 0.0 0.0 -it 09_hydro_pump 2 78 2030 0.0 0.0 -it 01_solar 2 79 2030 1.0 0.0 -it 02_wind_on 2 79 2030 1.0 0.0 -it 03_wind_off 2 79 2030 1.0 0.0 -it 04_res 2 79 2030 1.0 0.0 -it 05_nuclear 2 79 2030 0.0 0.0 -it 06_coal 2 79 2030 0.0 0.0 -it 07_gas 2 79 2030 0.0 0.0 -it 08_non-res 2 79 2030 0.0 0.0 -it 09_hydro_pump 2 79 2030 0.0 0.0 -it 01_solar 2 80 2030 1.0 0.0 -it 02_wind_on 2 80 2030 1.0 0.0 -it 03_wind_off 2 80 2030 1.0 0.0 -it 04_res 2 80 2030 1.0 0.0 -it 05_nuclear 2 80 2030 0.0 0.0 -it 06_coal 2 80 2030 0.0 0.0 -it 07_gas 2 80 2030 0.0 0.0 -it 08_non-res 2 80 2030 0.0 0.0 -it 09_hydro_pump 2 80 2030 0.0 0.0 -it 01_solar 2 81 2030 1.0 0.0 -it 02_wind_on 2 81 2030 1.0 0.0 -it 03_wind_off 2 81 2030 1.0 0.0 -it 04_res 2 81 2030 1.0 0.0 -it 05_nuclear 2 81 2030 0.0 0.0 -it 06_coal 2 81 2030 0.0 0.0 -it 07_gas 2 81 2030 0.0 0.0 -it 08_non-res 2 81 2030 0.0 0.0 -it 09_hydro_pump 2 81 2030 0.0 0.0 -it 01_solar 2 82 2030 1.0 0.0 -it 02_wind_on 2 82 2030 1.0 0.0 -it 03_wind_off 2 82 2030 1.0 0.0 -it 04_res 2 82 2030 1.0 0.0 -it 05_nuclear 2 82 2030 1.0 0.0 -it 06_coal 2 82 2030 0.0 0.0 -it 07_gas 2 82 2030 0.0 0.0 -it 08_non-res 2 82 2030 0.0 0.0 -it 09_hydro_pump 2 82 2030 0.0 0.0 -it 01_solar 2 83 2030 1.0 0.0 -it 02_wind_on 2 83 2030 1.0 0.0 -it 03_wind_off 2 83 2030 1.0 0.0 -it 04_res 2 83 2030 1.0 0.0 -it 05_nuclear 2 83 2030 1.0 0.0 -it 06_coal 2 83 2030 0.0 0.0 -it 07_gas 2 83 2030 0.0 0.0 -it 08_non-res 2 83 2030 0.0 0.0 -it 09_hydro_pump 2 83 2030 0.0 0.0 -it 01_solar 2 84 2030 1.0 0.0 -it 02_wind_on 2 84 2030 1.0 0.0 -it 03_wind_off 2 84 2030 1.0 0.0 -it 04_res 2 84 2030 1.0 0.0 -it 05_nuclear 2 84 2030 1.0 0.0 -it 06_coal 2 84 2030 0.0 0.0 -it 07_gas 2 84 2030 0.0 0.0 -it 08_non-res 2 84 2030 0.0 0.0 -it 09_hydro_pump 2 84 2030 0.0 0.0 -it 01_solar 2 85 2030 1.0 0.0 -it 02_wind_on 2 85 2030 1.0 0.0 -it 03_wind_off 2 85 2030 1.0 0.0 -it 04_res 2 85 2030 1.0 0.0 -it 05_nuclear 2 85 2030 1.0 0.0 -it 06_coal 2 85 2030 0.0 0.0 -it 07_gas 2 85 2030 0.0 0.0 -it 08_non-res 2 85 2030 0.0 0.0 -it 09_hydro_pump 2 85 2030 0.0 0.0 -it 01_solar 2 86 2030 1.0 0.0 -it 02_wind_on 2 86 2030 1.0 0.0 -it 03_wind_off 2 86 2030 1.0 0.0 -it 04_res 2 86 2030 1.0 0.0 -it 05_nuclear 2 86 2030 1.0 0.0 -it 06_coal 2 86 2030 0.0 0.0 -it 07_gas 2 86 2030 0.0 0.0 -it 08_non-res 2 86 2030 0.0 0.0 -it 09_hydro_pump 2 86 2030 0.0 0.0 -it 01_solar 2 87 2030 1.0 0.0 -it 02_wind_on 2 87 2030 1.0 0.0 -it 03_wind_off 2 87 2030 1.0 0.0 -it 04_res 2 87 2030 1.0 0.0 -it 05_nuclear 2 87 2030 1.0 0.0 -it 06_coal 2 87 2030 0.0 0.0 -it 07_gas 2 87 2030 0.0 0.0 -it 08_non-res 2 87 2030 0.0 0.0 -it 09_hydro_pump 2 87 2030 0.0 0.0 -it 01_solar 2 88 2030 1.0 0.0 -it 02_wind_on 2 88 2030 1.0 0.0 -it 03_wind_off 2 88 2030 1.0 0.0 -it 04_res 2 88 2030 1.0 0.0 -it 05_nuclear 2 88 2030 1.0 0.0 -it 06_coal 2 88 2030 0.0 0.0 -it 07_gas 2 88 2030 0.0 0.0 -it 08_non-res 2 88 2030 0.0 0.0 -it 09_hydro_pump 2 88 2030 0.0 0.0 -it 01_solar 2 89 2030 1.0 0.0 -it 02_wind_on 2 89 2030 1.0 0.0 -it 03_wind_off 2 89 2030 1.0 0.0 -it 04_res 2 89 2030 1.0 0.0 -it 05_nuclear 2 89 2030 1.0 0.0 -it 06_coal 2 89 2030 0.0 0.0 -it 07_gas 2 89 2030 0.0 0.0 -it 08_non-res 2 89 2030 0.0 0.0 -it 09_hydro_pump 2 89 2030 0.0 0.0 -it 01_solar 2 90 2030 1.0 0.0 -it 02_wind_on 2 90 2030 1.0 0.0 -it 03_wind_off 2 90 2030 1.0 0.0 -it 04_res 2 90 2030 1.0 0.0 -it 05_nuclear 2 90 2030 1.0 0.0 -it 06_coal 2 90 2030 0.0 0.0 -it 07_gas 2 90 2030 0.0 0.0 -it 08_non-res 2 90 2030 0.0 0.0 -it 09_hydro_pump 2 90 2030 0.0 0.0 -it 01_solar 2 91 2030 1.0 0.0 -it 02_wind_on 2 91 2030 1.0 0.0 -it 03_wind_off 2 91 2030 1.0 0.0 -it 04_res 2 91 2030 1.0 0.0 -it 05_nuclear 2 91 2030 1.0 0.0 -it 06_coal 2 91 2030 0.0 0.0 -it 07_gas 2 91 2030 0.0 0.0 -it 08_non-res 2 91 2030 0.0 0.0 -it 09_hydro_pump 2 91 2030 0.0 0.0 -it 01_solar 2 92 2030 1.0 0.0 -it 02_wind_on 2 92 2030 1.0 0.0 -it 03_wind_off 2 92 2030 1.0 0.0 -it 04_res 2 92 2030 1.0 0.0 -it 05_nuclear 2 92 2030 1.0 0.0 -it 06_coal 2 92 2030 0.0 0.0 -it 07_gas 2 92 2030 0.0 0.0 -it 08_non-res 2 92 2030 0.0 0.0 -it 09_hydro_pump 2 92 2030 0.0 0.0 -it 01_solar 2 93 2030 1.0 0.0 -it 02_wind_on 2 93 2030 1.0 0.0 -it 03_wind_off 2 93 2030 1.0 0.0 -it 04_res 2 93 2030 1.0 0.0 -it 05_nuclear 2 93 2030 1.0 0.0 -it 06_coal 2 93 2030 0.0 0.0 -it 07_gas 2 93 2030 0.0 0.0 -it 08_non-res 2 93 2030 0.0 0.0 -it 09_hydro_pump 2 93 2030 0.0 0.0 -it 01_solar 2 94 2030 1.0 0.0 -it 02_wind_on 2 94 2030 1.0 0.0 -it 03_wind_off 2 94 2030 1.0 0.0 -it 04_res 2 94 2030 1.0 0.0 -it 05_nuclear 2 94 2030 1.0 0.0 -it 06_coal 2 94 2030 0.0 0.0 -it 07_gas 2 94 2030 0.0 0.0 -it 08_non-res 2 94 2030 0.0 0.0 -it 09_hydro_pump 2 94 2030 0.0 0.0 -it 01_solar 2 95 2030 1.0 0.0 -it 02_wind_on 2 95 2030 1.0 0.0 -it 03_wind_off 2 95 2030 1.0 0.0 -it 04_res 2 95 2030 1.0 0.0 -it 05_nuclear 2 95 2030 1.0 0.0 -it 06_coal 2 95 2030 0.0 0.0 -it 07_gas 2 95 2030 0.0 0.0 -it 08_non-res 2 95 2030 0.0 0.0 -it 09_hydro_pump 2 95 2030 0.0 0.0 -it 01_solar 2 96 2030 1.0 0.0 -it 02_wind_on 2 96 2030 1.0 0.0 -it 03_wind_off 2 96 2030 1.0 0.0 -it 04_res 2 96 2030 1.0 0.0 -it 05_nuclear 2 96 2030 1.0 0.0 -it 06_coal 2 96 2030 0.0 0.0 -it 07_gas 2 96 2030 0.0 0.0 -it 08_non-res 2 96 2030 0.0 0.0 -it 09_hydro_pump 2 96 2030 0.0 0.0 -it 01_solar 2 97 2030 1.0 0.0 -it 02_wind_on 2 97 2030 1.0 0.0 -it 03_wind_off 2 97 2030 1.0 0.0 -it 04_res 2 97 2030 1.0 0.0 -it 05_nuclear 2 97 2030 1.0 0.0 -it 06_coal 2 97 2030 0.0 0.0 -it 07_gas 2 97 2030 0.0 0.0 -it 08_non-res 2 97 2030 0.0 0.0 -it 09_hydro_pump 2 97 2030 0.0 0.0 -it 01_solar 2 98 2030 1.0 0.0 -it 02_wind_on 2 98 2030 1.0 0.0 -it 03_wind_off 2 98 2030 1.0 0.0 -it 04_res 2 98 2030 1.0 0.0 -it 05_nuclear 2 98 2030 1.0 0.0 -it 06_coal 2 98 2030 0.0 0.0 -it 07_gas 2 98 2030 0.0 0.0 -it 08_non-res 2 98 2030 0.0 0.0 -it 09_hydro_pump 2 98 2030 0.0 0.0 -it 01_solar 2 99 2030 1.0 0.0 -it 02_wind_on 2 99 2030 1.0 0.0 -it 03_wind_off 2 99 2030 1.0 0.0 -it 04_res 2 99 2030 1.0 0.0 -it 05_nuclear 2 99 2030 1.0 0.0 -it 06_coal 2 99 2030 0.0 0.0 -it 07_gas 2 99 2030 0.0 0.0 -it 08_non-res 2 99 2030 0.0 0.0 -it 09_hydro_pump 2 99 2030 0.0 0.0 -it 01_solar 2 100 2030 1.0 0.0 -it 02_wind_on 2 100 2030 1.0 0.0 -it 03_wind_off 2 100 2030 1.0 0.0 -it 04_res 2 100 2030 1.0 0.0 -it 05_nuclear 2 100 2030 1.0 0.0 -it 06_coal 2 100 2030 0.0 0.0 -it 07_gas 2 100 2030 0.0 0.0 -it 08_non-res 2 100 2030 0.0 0.0 -it 09_hydro_pump 2 100 2030 0.0 0.0 -it 01_solar 2 101 2030 1.0 0.0 -it 02_wind_on 2 101 2030 1.0 0.0 -it 03_wind_off 2 101 2030 1.0 0.0 -it 04_res 2 101 2030 1.0 0.0 -it 05_nuclear 2 101 2030 1.0 0.0 -it 06_coal 2 101 2030 0.0 0.0 -it 07_gas 2 101 2030 0.0 0.0 -it 08_non-res 2 101 2030 0.0 0.0 -it 09_hydro_pump 2 101 2030 0.0 0.0 -it 01_solar 2 102 2030 1.0 0.0 -it 02_wind_on 2 102 2030 1.0 0.0 -it 03_wind_off 2 102 2030 1.0 0.0 -it 04_res 2 102 2030 1.0 0.0 -it 05_nuclear 2 102 2030 1.0 0.0 -it 06_coal 2 102 2030 1.0 0.0 -it 07_gas 2 102 2030 0.0 0.0 -it 08_non-res 2 102 2030 0.0 0.0 -it 09_hydro_pump 2 102 2030 0.0 0.0 -it 01_solar 2 103 2030 1.0 0.0 -it 02_wind_on 2 103 2030 1.0 0.0 -it 03_wind_off 2 103 2030 1.0 0.0 -it 04_res 2 103 2030 1.0 0.0 -it 05_nuclear 2 103 2030 1.0 0.0 -it 06_coal 2 103 2030 1.0 0.0 -it 07_gas 2 103 2030 0.0 0.0 -it 08_non-res 2 103 2030 0.0 0.0 -it 09_hydro_pump 2 103 2030 0.0 0.0 -it 01_solar 2 104 2030 1.0 0.0 -it 02_wind_on 2 104 2030 1.0 0.0 -it 03_wind_off 2 104 2030 1.0 0.0 -it 04_res 2 104 2030 1.0 0.0 -it 05_nuclear 2 104 2030 1.0 0.0 -it 06_coal 2 104 2030 1.0 0.0 -it 07_gas 2 104 2030 0.0 0.0 -it 08_non-res 2 104 2030 0.0 0.0 -it 09_hydro_pump 2 104 2030 0.0 0.0 -it 01_solar 2 105 2030 1.0 0.0 -it 02_wind_on 2 105 2030 1.0 0.0 -it 03_wind_off 2 105 2030 1.0 0.0 -it 04_res 2 105 2030 1.0 0.0 -it 05_nuclear 2 105 2030 1.0 0.0 -it 06_coal 2 105 2030 1.0 0.0 -it 07_gas 2 105 2030 0.0 0.0 -it 08_non-res 2 105 2030 0.0 0.0 -it 09_hydro_pump 2 105 2030 0.0 0.0 -it 01_solar 2 106 2030 1.0 0.0 -it 02_wind_on 2 106 2030 1.0 0.0 -it 03_wind_off 2 106 2030 1.0 0.0 -it 04_res 2 106 2030 1.0 0.0 -it 05_nuclear 2 106 2030 1.0 0.0 -it 06_coal 2 106 2030 1.0 0.0 -it 07_gas 2 106 2030 0.0 0.0 -it 08_non-res 2 106 2030 0.0 0.0 -it 09_hydro_pump 2 106 2030 0.0 0.0 -it 01_solar 2 107 2030 1.0 0.0 -it 02_wind_on 2 107 2030 1.0 0.0 -it 03_wind_off 2 107 2030 1.0 0.0 -it 04_res 2 107 2030 1.0 0.0 -it 05_nuclear 2 107 2030 1.0 0.0 -it 06_coal 2 107 2030 1.0 0.0 -it 07_gas 2 107 2030 0.0 0.0 -it 08_non-res 2 107 2030 0.0 0.0 -it 09_hydro_pump 2 107 2030 0.0 0.0 -it 01_solar 2 108 2030 1.0 0.0 -it 02_wind_on 2 108 2030 1.0 0.0 -it 03_wind_off 2 108 2030 1.0 0.0 -it 04_res 2 108 2030 1.0 0.0 -it 05_nuclear 2 108 2030 1.0 0.0 -it 06_coal 2 108 2030 1.0 0.0 -it 07_gas 2 108 2030 0.0 0.0 -it 08_non-res 2 108 2030 0.0 0.0 -it 09_hydro_pump 2 108 2030 0.0 0.0 -it 01_solar 2 109 2030 1.0 0.0 -it 02_wind_on 2 109 2030 1.0 0.0 -it 03_wind_off 2 109 2030 1.0 0.0 -it 04_res 2 109 2030 1.0 0.0 -it 05_nuclear 2 109 2030 1.0 0.0 -it 06_coal 2 109 2030 1.0 0.0 -it 07_gas 2 109 2030 0.0 0.0 -it 08_non-res 2 109 2030 0.0 0.0 -it 09_hydro_pump 2 109 2030 0.0 0.0 -it 01_solar 2 110 2030 1.0 0.0 -it 02_wind_on 2 110 2030 1.0 0.0 -it 03_wind_off 2 110 2030 1.0 0.0 -it 04_res 2 110 2030 1.0 0.0 -it 05_nuclear 2 110 2030 1.0 0.0 -it 06_coal 2 110 2030 1.0 0.0 -it 07_gas 2 110 2030 0.0 0.0 -it 08_non-res 2 110 2030 0.0 0.0 -it 09_hydro_pump 2 110 2030 0.0 0.0 -it 01_solar 2 111 2030 1.0 0.0 -it 02_wind_on 2 111 2030 1.0 0.0 -it 03_wind_off 2 111 2030 1.0 0.0 -it 04_res 2 111 2030 1.0 0.0 -it 05_nuclear 2 111 2030 1.0 0.0 -it 06_coal 2 111 2030 1.0 0.0 -it 07_gas 2 111 2030 0.0 0.0 -it 08_non-res 2 111 2030 0.0 0.0 -it 09_hydro_pump 2 111 2030 0.0 0.0 -it 01_solar 2 112 2030 1.0 0.0 -it 02_wind_on 2 112 2030 1.0 0.0 -it 03_wind_off 2 112 2030 1.0 0.0 -it 04_res 2 112 2030 1.0 0.0 -it 05_nuclear 2 112 2030 1.0 0.0 -it 06_coal 2 112 2030 1.0 0.0 -it 07_gas 2 112 2030 0.0 0.0 -it 08_non-res 2 112 2030 0.0 0.0 -it 09_hydro_pump 2 112 2030 0.0 0.0 -it 01_solar 2 113 2030 1.0 0.0 -it 02_wind_on 2 113 2030 1.0 0.0 -it 03_wind_off 2 113 2030 1.0 0.0 -it 04_res 2 113 2030 1.0 0.0 -it 05_nuclear 2 113 2030 1.0 0.0 -it 06_coal 2 113 2030 1.0 0.0 -it 07_gas 2 113 2030 0.0 0.0 -it 08_non-res 2 113 2030 0.0 0.0 -it 09_hydro_pump 2 113 2030 0.0 0.0 -it 01_solar 2 114 2030 1.0 0.0 -it 02_wind_on 2 114 2030 1.0 0.0 -it 03_wind_off 2 114 2030 1.0 0.0 -it 04_res 2 114 2030 1.0 0.0 -it 05_nuclear 2 114 2030 1.0 0.0 -it 06_coal 2 114 2030 1.0 0.0 -it 07_gas 2 114 2030 0.0 0.0 -it 08_non-res 2 114 2030 0.0 0.0 -it 09_hydro_pump 2 114 2030 0.0 0.0 -it 01_solar 2 115 2030 1.0 0.0 -it 02_wind_on 2 115 2030 1.0 0.0 -it 03_wind_off 2 115 2030 1.0 0.0 -it 04_res 2 115 2030 1.0 0.0 -it 05_nuclear 2 115 2030 1.0 0.0 -it 06_coal 2 115 2030 1.0 0.0 -it 07_gas 2 115 2030 0.0 0.0 -it 08_non-res 2 115 2030 0.0 0.0 -it 09_hydro_pump 2 115 2030 0.0 0.0 -it 01_solar 2 116 2030 1.0 0.0 -it 02_wind_on 2 116 2030 1.0 0.0 -it 03_wind_off 2 116 2030 1.0 0.0 -it 04_res 2 116 2030 1.0 0.0 -it 05_nuclear 2 116 2030 1.0 0.0 -it 06_coal 2 116 2030 1.0 0.0 -it 07_gas 2 116 2030 0.0 0.0 -it 08_non-res 2 116 2030 0.0 0.0 -it 09_hydro_pump 2 116 2030 0.0 0.0 -it 01_solar 2 117 2030 1.0 0.0 -it 02_wind_on 2 117 2030 1.0 0.0 -it 03_wind_off 2 117 2030 1.0 0.0 -it 04_res 2 117 2030 1.0 0.0 -it 05_nuclear 2 117 2030 1.0 0.0 -it 06_coal 2 117 2030 1.0 0.0 -it 07_gas 2 117 2030 0.0 0.0 -it 08_non-res 2 117 2030 0.0 0.0 -it 09_hydro_pump 2 117 2030 0.0 0.0 -it 01_solar 2 118 2030 1.0 0.0 -it 02_wind_on 2 118 2030 1.0 0.0 -it 03_wind_off 2 118 2030 1.0 0.0 -it 04_res 2 118 2030 1.0 0.0 -it 05_nuclear 2 118 2030 1.0 0.0 -it 06_coal 2 118 2030 1.0 0.0 -it 07_gas 2 118 2030 0.0 0.0 -it 08_non-res 2 118 2030 0.0 0.0 -it 09_hydro_pump 2 118 2030 0.0 0.0 -it 01_solar 2 119 2030 1.0 0.0 -it 02_wind_on 2 119 2030 1.0 0.0 -it 03_wind_off 2 119 2030 1.0 0.0 -it 04_res 2 119 2030 1.0 0.0 -it 05_nuclear 2 119 2030 1.0 0.0 -it 06_coal 2 119 2030 1.0 0.0 -it 07_gas 2 119 2030 0.0 0.0 -it 08_non-res 2 119 2030 0.0 0.0 -it 09_hydro_pump 2 119 2030 0.0 0.0 -it 01_solar 2 120 2030 1.0 0.0 -it 02_wind_on 2 120 2030 1.0 0.0 -it 03_wind_off 2 120 2030 1.0 0.0 -it 04_res 2 120 2030 1.0 0.0 -it 05_nuclear 2 120 2030 1.0 0.0 -it 06_coal 2 120 2030 1.0 0.0 -it 07_gas 2 120 2030 0.0 0.0 -it 08_non-res 2 120 2030 0.0 0.0 -it 09_hydro_pump 2 120 2030 0.0 0.0 -it 01_solar 2 121 2030 1.0 0.0 -it 02_wind_on 2 121 2030 1.0 0.0 -it 03_wind_off 2 121 2030 1.0 0.0 -it 04_res 2 121 2030 1.0 0.0 -it 05_nuclear 2 121 2030 1.0 0.0 -it 06_coal 2 121 2030 1.0 0.0 -it 07_gas 2 121 2030 0.0 0.0 -it 08_non-res 2 121 2030 0.0 0.0 -it 09_hydro_pump 2 121 2030 0.0 0.0 -it 01_solar 2 122 2030 1.0 0.0 -it 02_wind_on 2 122 2030 1.0 0.0 -it 03_wind_off 2 122 2030 1.0 0.0 -it 04_res 2 122 2030 1.0 0.0 -it 05_nuclear 2 122 2030 1.0 0.0 -it 06_coal 2 122 2030 1.0 0.0 -it 07_gas 2 122 2030 1.0 0.0 -it 08_non-res 2 122 2030 0.0 0.0 -it 09_hydro_pump 2 122 2030 0.0 0.0 -it 01_solar 2 123 2030 1.0 0.0 -it 02_wind_on 2 123 2030 1.0 0.0 -it 03_wind_off 2 123 2030 1.0 0.0 -it 04_res 2 123 2030 1.0 0.0 -it 05_nuclear 2 123 2030 1.0 0.0 -it 06_coal 2 123 2030 1.0 0.0 -it 07_gas 2 123 2030 1.0 0.0 -it 08_non-res 2 123 2030 0.0 0.0 -it 09_hydro_pump 2 123 2030 0.0 0.0 -it 01_solar 2 124 2030 1.0 0.0 -it 02_wind_on 2 124 2030 1.0 0.0 -it 03_wind_off 2 124 2030 1.0 0.0 -it 04_res 2 124 2030 1.0 0.0 -it 05_nuclear 2 124 2030 1.0 0.0 -it 06_coal 2 124 2030 1.0 0.0 -it 07_gas 2 124 2030 1.0 0.0 -it 08_non-res 2 124 2030 0.0 0.0 -it 09_hydro_pump 2 124 2030 0.0 0.0 -it 01_solar 2 125 2030 1.0 0.0 -it 02_wind_on 2 125 2030 1.0 0.0 -it 03_wind_off 2 125 2030 1.0 0.0 -it 04_res 2 125 2030 1.0 0.0 -it 05_nuclear 2 125 2030 1.0 0.0 -it 06_coal 2 125 2030 1.0 0.0 -it 07_gas 2 125 2030 1.0 0.0 -it 08_non-res 2 125 2030 0.0 0.0 -it 09_hydro_pump 2 125 2030 0.0 0.0 -it 01_solar 2 126 2030 1.0 0.0 -it 02_wind_on 2 126 2030 1.0 0.0 -it 03_wind_off 2 126 2030 1.0 0.0 -it 04_res 2 126 2030 1.0 0.0 -it 05_nuclear 2 126 2030 1.0 0.0 -it 06_coal 2 126 2030 1.0 0.0 -it 07_gas 2 126 2030 1.0 0.0 -it 08_non-res 2 126 2030 0.0 0.0 -it 09_hydro_pump 2 126 2030 0.0 0.0 -it 01_solar 2 127 2030 1.0 0.0 -it 02_wind_on 2 127 2030 1.0 0.0 -it 03_wind_off 2 127 2030 1.0 0.0 -it 04_res 2 127 2030 1.0 0.0 -it 05_nuclear 2 127 2030 1.0 0.0 -it 06_coal 2 127 2030 1.0 0.0 -it 07_gas 2 127 2030 1.0 0.0 -it 08_non-res 2 127 2030 0.0 0.0 -it 09_hydro_pump 2 127 2030 0.0 0.0 -it 01_solar 2 128 2030 1.0 0.0 -it 02_wind_on 2 128 2030 1.0 0.0 -it 03_wind_off 2 128 2030 1.0 0.0 -it 04_res 2 128 2030 1.0 0.0 -it 05_nuclear 2 128 2030 1.0 0.0 -it 06_coal 2 128 2030 1.0 0.0 -it 07_gas 2 128 2030 1.0 0.0 -it 08_non-res 2 128 2030 0.0 0.0 -it 09_hydro_pump 2 128 2030 0.0 0.0 -it 01_solar 2 129 2030 1.0 0.0 -it 02_wind_on 2 129 2030 1.0 0.0 -it 03_wind_off 2 129 2030 1.0 0.0 -it 04_res 2 129 2030 1.0 0.0 -it 05_nuclear 2 129 2030 1.0 0.0 -it 06_coal 2 129 2030 1.0 0.0 -it 07_gas 2 129 2030 1.0 0.0 -it 08_non-res 2 129 2030 0.0 0.0 -it 09_hydro_pump 2 129 2030 0.0 0.0 -it 01_solar 2 130 2030 1.0 0.0 -it 02_wind_on 2 130 2030 1.0 0.0 -it 03_wind_off 2 130 2030 1.0 0.0 -it 04_res 2 130 2030 1.0 0.0 -it 05_nuclear 2 130 2030 1.0 0.0 -it 06_coal 2 130 2030 1.0 0.0 -it 07_gas 2 130 2030 1.0 0.0 -it 08_non-res 2 130 2030 0.0 0.0 -it 09_hydro_pump 2 130 2030 0.0 0.0 -it 01_solar 2 131 2030 1.0 0.0 -it 02_wind_on 2 131 2030 1.0 0.0 -it 03_wind_off 2 131 2030 1.0 0.0 -it 04_res 2 131 2030 1.0 0.0 -it 05_nuclear 2 131 2030 1.0 0.0 -it 06_coal 2 131 2030 1.0 0.0 -it 07_gas 2 131 2030 1.0 0.0 -it 08_non-res 2 131 2030 0.0 0.0 -it 09_hydro_pump 2 131 2030 0.0 0.0 -it 01_solar 2 132 2030 1.0 0.0 -it 02_wind_on 2 132 2030 1.0 0.0 -it 03_wind_off 2 132 2030 1.0 0.0 -it 04_res 2 132 2030 1.0 0.0 -it 05_nuclear 2 132 2030 1.0 0.0 -it 06_coal 2 132 2030 1.0 0.0 -it 07_gas 2 132 2030 1.0 0.0 -it 08_non-res 2 132 2030 0.0 0.0 -it 09_hydro_pump 2 132 2030 0.0 0.0 -it 01_solar 2 133 2030 1.0 0.0 -it 02_wind_on 2 133 2030 1.0 0.0 -it 03_wind_off 2 133 2030 1.0 0.0 -it 04_res 2 133 2030 1.0 0.0 -it 05_nuclear 2 133 2030 1.0 0.0 -it 06_coal 2 133 2030 1.0 0.0 -it 07_gas 2 133 2030 1.0 0.0 -it 08_non-res 2 133 2030 0.0 0.0 -it 09_hydro_pump 2 133 2030 0.0 0.0 -it 01_solar 2 134 2030 1.0 0.0 -it 02_wind_on 2 134 2030 1.0 0.0 -it 03_wind_off 2 134 2030 1.0 0.0 -it 04_res 2 134 2030 1.0 0.0 -it 05_nuclear 2 134 2030 1.0 0.0 -it 06_coal 2 134 2030 1.0 0.0 -it 07_gas 2 134 2030 1.0 0.0 -it 08_non-res 2 134 2030 0.0 0.0 -it 09_hydro_pump 2 134 2030 0.0 0.0 -it 01_solar 2 135 2030 1.0 0.0 -it 02_wind_on 2 135 2030 1.0 0.0 -it 03_wind_off 2 135 2030 1.0 0.0 -it 04_res 2 135 2030 1.0 0.0 -it 05_nuclear 2 135 2030 1.0 0.0 -it 06_coal 2 135 2030 1.0 0.0 -it 07_gas 2 135 2030 1.0 0.0 -it 08_non-res 2 135 2030 0.0 0.0 -it 09_hydro_pump 2 135 2030 0.0 0.0 -it 01_solar 2 136 2030 1.0 0.0 -it 02_wind_on 2 136 2030 1.0 0.0 -it 03_wind_off 2 136 2030 1.0 0.0 -it 04_res 2 136 2030 1.0 0.0 -it 05_nuclear 2 136 2030 1.0 0.0 -it 06_coal 2 136 2030 1.0 0.0 -it 07_gas 2 136 2030 1.0 0.0 -it 08_non-res 2 136 2030 0.0 0.0 -it 09_hydro_pump 2 136 2030 0.0 0.0 -it 01_solar 2 137 2030 1.0 0.0 -it 02_wind_on 2 137 2030 1.0 0.0 -it 03_wind_off 2 137 2030 1.0 0.0 -it 04_res 2 137 2030 1.0 0.0 -it 05_nuclear 2 137 2030 1.0 0.0 -it 06_coal 2 137 2030 1.0 0.0 -it 07_gas 2 137 2030 1.0 0.0 -it 08_non-res 2 137 2030 0.0 0.0 -it 09_hydro_pump 2 137 2030 0.0 0.0 -it 01_solar 2 138 2030 1.0 0.0 -it 02_wind_on 2 138 2030 1.0 0.0 -it 03_wind_off 2 138 2030 1.0 0.0 -it 04_res 2 138 2030 1.0 0.0 -it 05_nuclear 2 138 2030 1.0 0.0 -it 06_coal 2 138 2030 1.0 0.0 -it 07_gas 2 138 2030 1.0 0.0 -it 08_non-res 2 138 2030 0.0 0.0 -it 09_hydro_pump 2 138 2030 0.0 0.0 -it 01_solar 2 139 2030 1.0 0.0 -it 02_wind_on 2 139 2030 1.0 0.0 -it 03_wind_off 2 139 2030 1.0 0.0 -it 04_res 2 139 2030 1.0 0.0 -it 05_nuclear 2 139 2030 1.0 0.0 -it 06_coal 2 139 2030 1.0 0.0 -it 07_gas 2 139 2030 1.0 0.0 -it 08_non-res 2 139 2030 0.0 0.0 -it 09_hydro_pump 2 139 2030 0.0 0.0 -it 01_solar 2 140 2030 1.0 0.0 -it 02_wind_on 2 140 2030 1.0 0.0 -it 03_wind_off 2 140 2030 1.0 0.0 -it 04_res 2 140 2030 1.0 0.0 -it 05_nuclear 2 140 2030 1.0 0.0 -it 06_coal 2 140 2030 1.0 0.0 -it 07_gas 2 140 2030 1.0 0.0 -it 08_non-res 2 140 2030 0.0 0.0 -it 09_hydro_pump 2 140 2030 0.0 0.0 -it 01_solar 2 141 2030 1.0 0.0 -it 02_wind_on 2 141 2030 1.0 0.0 -it 03_wind_off 2 141 2030 1.0 0.0 -it 04_res 2 141 2030 1.0 0.0 -it 05_nuclear 2 141 2030 1.0 0.0 -it 06_coal 2 141 2030 1.0 0.0 -it 07_gas 2 141 2030 1.0 0.0 -it 08_non-res 2 141 2030 0.0 0.0 -it 09_hydro_pump 2 141 2030 0.0 0.0 -it 01_solar 2 142 2030 1.0 0.0 -it 02_wind_on 2 142 2030 1.0 0.0 -it 03_wind_off 2 142 2030 1.0 0.0 -it 04_res 2 142 2030 1.0 0.0 -it 05_nuclear 2 142 2030 1.0 0.0 -it 06_coal 2 142 2030 1.0 0.0 -it 07_gas 2 142 2030 1.0 0.0 -it 08_non-res 2 142 2030 1.0 0.0 -it 09_hydro_pump 2 142 2030 0.0 0.0 -it 01_solar 2 143 2030 1.0 0.0 -it 02_wind_on 2 143 2030 1.0 0.0 -it 03_wind_off 2 143 2030 1.0 0.0 -it 04_res 2 143 2030 1.0 0.0 -it 05_nuclear 2 143 2030 1.0 0.0 -it 06_coal 2 143 2030 1.0 0.0 -it 07_gas 2 143 2030 1.0 0.0 -it 08_non-res 2 143 2030 1.0 0.0 -it 09_hydro_pump 2 143 2030 0.0 0.0 -it 01_solar 2 144 2030 1.0 0.0 -it 02_wind_on 2 144 2030 1.0 0.0 -it 03_wind_off 2 144 2030 1.0 0.0 -it 04_res 2 144 2030 1.0 0.0 -it 05_nuclear 2 144 2030 1.0 0.0 -it 06_coal 2 144 2030 1.0 0.0 -it 07_gas 2 144 2030 1.0 0.0 -it 08_non-res 2 144 2030 1.0 0.0 -it 09_hydro_pump 2 144 2030 0.0 0.0 -it 01_solar 2 145 2030 1.0 0.0 -it 02_wind_on 2 145 2030 1.0 0.0 -it 03_wind_off 2 145 2030 1.0 0.0 -it 04_res 2 145 2030 1.0 0.0 -it 05_nuclear 2 145 2030 1.0 0.0 -it 06_coal 2 145 2030 1.0 0.0 -it 07_gas 2 145 2030 1.0 0.0 -it 08_non-res 2 145 2030 1.0 0.0 -it 09_hydro_pump 2 145 2030 0.0 0.0 -it 01_solar 2 146 2030 1.0 0.0 -it 02_wind_on 2 146 2030 1.0 0.0 -it 03_wind_off 2 146 2030 1.0 0.0 -it 04_res 2 146 2030 1.0 0.0 -it 05_nuclear 2 146 2030 1.0 0.0 -it 06_coal 2 146 2030 1.0 0.0 -it 07_gas 2 146 2030 1.0 0.0 -it 08_non-res 2 146 2030 1.0 0.0 -it 09_hydro_pump 2 146 2030 0.0 0.0 -it 01_solar 2 147 2030 1.0 0.0 -it 02_wind_on 2 147 2030 1.0 0.0 -it 03_wind_off 2 147 2030 1.0 0.0 -it 04_res 2 147 2030 1.0 0.0 -it 05_nuclear 2 147 2030 1.0 0.0 -it 06_coal 2 147 2030 1.0 0.0 -it 07_gas 2 147 2030 1.0 0.0 -it 08_non-res 2 147 2030 1.0 0.0 -it 09_hydro_pump 2 147 2030 0.0 0.0 -it 01_solar 2 148 2030 1.0 0.0 -it 02_wind_on 2 148 2030 1.0 0.0 -it 03_wind_off 2 148 2030 1.0 0.0 -it 04_res 2 148 2030 1.0 0.0 -it 05_nuclear 2 148 2030 1.0 0.0 -it 06_coal 2 148 2030 1.0 0.0 -it 07_gas 2 148 2030 1.0 0.0 -it 08_non-res 2 148 2030 1.0 0.0 -it 09_hydro_pump 2 148 2030 0.0 0.0 -it 01_solar 2 149 2030 1.0 0.0 -it 02_wind_on 2 149 2030 1.0 0.0 -it 03_wind_off 2 149 2030 1.0 0.0 -it 04_res 2 149 2030 1.0 0.0 -it 05_nuclear 2 149 2030 1.0 0.0 -it 06_coal 2 149 2030 1.0 0.0 -it 07_gas 2 149 2030 1.0 0.0 -it 08_non-res 2 149 2030 1.0 0.0 -it 09_hydro_pump 2 149 2030 0.0 0.0 -it 01_solar 2 150 2030 1.0 0.0 -it 02_wind_on 2 150 2030 1.0 0.0 -it 03_wind_off 2 150 2030 1.0 0.0 -it 04_res 2 150 2030 1.0 0.0 -it 05_nuclear 2 150 2030 1.0 0.0 -it 06_coal 2 150 2030 1.0 0.0 -it 07_gas 2 150 2030 1.0 0.0 -it 08_non-res 2 150 2030 1.0 0.0 -it 09_hydro_pump 2 150 2030 0.0 0.0 -it 01_solar 2 151 2030 1.0 0.0 -it 02_wind_on 2 151 2030 1.0 0.0 -it 03_wind_off 2 151 2030 1.0 0.0 -it 04_res 2 151 2030 1.0 0.0 -it 05_nuclear 2 151 2030 1.0 0.0 -it 06_coal 2 151 2030 1.0 0.0 -it 07_gas 2 151 2030 1.0 0.0 -it 08_non-res 2 151 2030 1.0 0.0 -it 09_hydro_pump 2 151 2030 0.0 0.0 -it 01_solar 2 152 2030 1.0 0.0 -it 02_wind_on 2 152 2030 1.0 0.0 -it 03_wind_off 2 152 2030 1.0 0.0 -it 04_res 2 152 2030 1.0 0.0 -it 05_nuclear 2 152 2030 1.0 0.0 -it 06_coal 2 152 2030 1.0 0.0 -it 07_gas 2 152 2030 1.0 0.0 -it 08_non-res 2 152 2030 1.0 0.0 -it 09_hydro_pump 2 152 2030 0.0 0.0 -it 01_solar 2 153 2030 1.0 0.0 -it 02_wind_on 2 153 2030 1.0 0.0 -it 03_wind_off 2 153 2030 1.0 0.0 -it 04_res 2 153 2030 1.0 0.0 -it 05_nuclear 2 153 2030 1.0 0.0 -it 06_coal 2 153 2030 1.0 0.0 -it 07_gas 2 153 2030 1.0 0.0 -it 08_non-res 2 153 2030 1.0 0.0 -it 09_hydro_pump 2 153 2030 0.0 0.0 -it 01_solar 2 154 2030 1.0 0.0 -it 02_wind_on 2 154 2030 1.0 0.0 -it 03_wind_off 2 154 2030 1.0 0.0 -it 04_res 2 154 2030 1.0 0.0 -it 05_nuclear 2 154 2030 1.0 0.0 -it 06_coal 2 154 2030 1.0 0.0 -it 07_gas 2 154 2030 1.0 0.0 -it 08_non-res 2 154 2030 1.0 0.0 -it 09_hydro_pump 2 154 2030 0.0 0.0 -it 01_solar 2 155 2030 1.0 0.0 -it 02_wind_on 2 155 2030 1.0 0.0 -it 03_wind_off 2 155 2030 1.0 0.0 -it 04_res 2 155 2030 1.0 0.0 -it 05_nuclear 2 155 2030 1.0 0.0 -it 06_coal 2 155 2030 1.0 0.0 -it 07_gas 2 155 2030 1.0 0.0 -it 08_non-res 2 155 2030 1.0 0.0 -it 09_hydro_pump 2 155 2030 0.0 0.0 -it 01_solar 2 156 2030 1.0 0.0 -it 02_wind_on 2 156 2030 1.0 0.0 -it 03_wind_off 2 156 2030 1.0 0.0 -it 04_res 2 156 2030 1.0 0.0 -it 05_nuclear 2 156 2030 1.0 0.0 -it 06_coal 2 156 2030 1.0 0.0 -it 07_gas 2 156 2030 1.0 0.0 -it 08_non-res 2 156 2030 1.0 0.0 -it 09_hydro_pump 2 156 2030 0.0 0.0 -it 01_solar 2 157 2030 1.0 0.0 -it 02_wind_on 2 157 2030 1.0 0.0 -it 03_wind_off 2 157 2030 1.0 0.0 -it 04_res 2 157 2030 1.0 0.0 -it 05_nuclear 2 157 2030 1.0 0.0 -it 06_coal 2 157 2030 1.0 0.0 -it 07_gas 2 157 2030 1.0 0.0 -it 08_non-res 2 157 2030 1.0 0.0 -it 09_hydro_pump 2 157 2030 0.0 0.0 -it 01_solar 2 158 2030 1.0 0.0 -it 02_wind_on 2 158 2030 1.0 0.0 -it 03_wind_off 2 158 2030 1.0 0.0 -it 04_res 2 158 2030 1.0 0.0 -it 05_nuclear 2 158 2030 1.0 0.0 -it 06_coal 2 158 2030 1.0 0.0 -it 07_gas 2 158 2030 1.0 0.0 -it 08_non-res 2 158 2030 1.0 0.0 -it 09_hydro_pump 2 158 2030 0.0 0.0 -it 01_solar 2 159 2030 1.0 0.0 -it 02_wind_on 2 159 2030 1.0 0.0 -it 03_wind_off 2 159 2030 1.0 0.0 -it 04_res 2 159 2030 1.0 0.0 -it 05_nuclear 2 159 2030 1.0 0.0 -it 06_coal 2 159 2030 1.0 0.0 -it 07_gas 2 159 2030 1.0 0.0 -it 08_non-res 2 159 2030 1.0 0.0 -it 09_hydro_pump 2 159 2030 0.0 0.0 -it 01_solar 2 160 2030 1.0 0.0 -it 02_wind_on 2 160 2030 1.0 0.0 -it 03_wind_off 2 160 2030 1.0 0.0 -it 04_res 2 160 2030 1.0 0.0 -it 05_nuclear 2 160 2030 1.0 0.0 -it 06_coal 2 160 2030 1.0 0.0 -it 07_gas 2 160 2030 1.0 0.0 -it 08_non-res 2 160 2030 1.0 0.0 -it 09_hydro_pump 2 160 2030 0.0 0.0 -it 01_solar 2 161 2030 1.0 0.0 -it 02_wind_on 2 161 2030 1.0 0.0 -it 03_wind_off 2 161 2030 1.0 0.0 -it 04_res 2 161 2030 1.0 0.0 -it 05_nuclear 2 161 2030 1.0 0.0 -it 06_coal 2 161 2030 1.0 0.0 -it 07_gas 2 161 2030 1.0 0.0 -it 08_non-res 2 161 2030 1.0 0.0 -it 09_hydro_pump 2 161 2030 0.0 0.0 -it 01_solar 2 162 2030 1.0 0.0 -it 02_wind_on 2 162 2030 1.0 0.0 -it 03_wind_off 2 162 2030 1.0 0.0 -it 04_res 2 162 2030 1.0 0.0 -it 05_nuclear 2 162 2030 1.0 0.0 -it 06_coal 2 162 2030 1.0 0.0 -it 07_gas 2 162 2030 1.0 0.0 -it 08_non-res 2 162 2030 1.0 0.0 -it 09_hydro_pump 2 162 2030 1.0 0.0 -it 01_solar 2 163 2030 1.0 0.0 -it 02_wind_on 2 163 2030 1.0 0.0 -it 03_wind_off 2 163 2030 1.0 0.0 -it 04_res 2 163 2030 1.0 0.0 -it 05_nuclear 2 163 2030 1.0 0.0 -it 06_coal 2 163 2030 1.0 0.0 -it 07_gas 2 163 2030 1.0 0.0 -it 08_non-res 2 163 2030 1.0 0.0 -it 09_hydro_pump 2 163 2030 1.0 0.0 -it 01_solar 2 164 2030 1.0 0.0 -it 02_wind_on 2 164 2030 1.0 0.0 -it 03_wind_off 2 164 2030 1.0 0.0 -it 04_res 2 164 2030 1.0 0.0 -it 05_nuclear 2 164 2030 1.0 0.0 -it 06_coal 2 164 2030 1.0 0.0 -it 07_gas 2 164 2030 1.0 0.0 -it 08_non-res 2 164 2030 1.0 0.0 -it 09_hydro_pump 2 164 2030 1.0 0.0 -it 01_solar 2 165 2030 1.0 0.0 -it 02_wind_on 2 165 2030 1.0 0.0 -it 03_wind_off 2 165 2030 1.0 0.0 -it 04_res 2 165 2030 1.0 0.0 -it 05_nuclear 2 165 2030 1.0 0.0 -it 06_coal 2 165 2030 1.0 0.0 -it 07_gas 2 165 2030 1.0 0.0 -it 08_non-res 2 165 2030 1.0 0.0 -it 09_hydro_pump 2 165 2030 1.0 0.0 -it 01_solar 2 166 2030 1.0 0.0 -it 02_wind_on 2 166 2030 1.0 0.0 -it 03_wind_off 2 166 2030 1.0 0.0 -it 04_res 2 166 2030 1.0 0.0 -it 05_nuclear 2 166 2030 1.0 0.0 -it 06_coal 2 166 2030 1.0 0.0 -it 07_gas 2 166 2030 1.0 0.0 -it 08_non-res 2 166 2030 1.0 0.0 -it 09_hydro_pump 2 166 2030 1.0 0.0 -it 01_solar 2 167 2030 1.0 0.0 -it 02_wind_on 2 167 2030 1.0 0.0 -it 03_wind_off 2 167 2030 1.0 0.0 -it 04_res 2 167 2030 1.0 0.0 -it 05_nuclear 2 167 2030 1.0 0.0 -it 06_coal 2 167 2030 1.0 0.0 -it 07_gas 2 167 2030 1.0 0.0 -it 08_non-res 2 167 2030 1.0 0.0 -it 09_hydro_pump 2 167 2030 1.0 0.0 -it 01_solar 2 168 2030 1.0 0.0 -it 02_wind_on 2 168 2030 1.0 0.0 -it 03_wind_off 2 168 2030 1.0 0.0 -it 04_res 2 168 2030 1.0 0.0 -it 05_nuclear 2 168 2030 1.0 0.0 -it 06_coal 2 168 2030 1.0 0.0 -it 07_gas 2 168 2030 1.0 0.0 -it 08_non-res 2 168 2030 1.0 0.0 -it 09_hydro_pump 2 168 2030 1.0 0.0 -it 01_solar 2 169 2030 0.0 0.0 -it 02_wind_on 2 169 2030 0.0 0.0 -it 03_wind_off 2 169 2030 0.0 0.0 -it 04_res 2 169 2030 0.0 0.0 -it 05_nuclear 2 169 2030 0.0 0.0 -it 06_coal 2 169 2030 0.0 0.0 -it 07_gas 2 169 2030 0.0 0.0 -it 08_non-res 2 169 2030 0.0 0.0 -it 09_hydro_pump 2 169 2030 0.0 0.0 -it 01_solar 2 170 2030 1.0 0.0 -it 02_wind_on 2 170 2030 0.0 0.0 -it 03_wind_off 2 170 2030 0.0 0.0 -it 04_res 2 170 2030 0.0 0.0 -it 05_nuclear 2 170 2030 0.0 0.0 -it 06_coal 2 170 2030 0.0 0.0 -it 07_gas 2 170 2030 0.0 0.0 -it 08_non-res 2 170 2030 0.0 0.0 -it 09_hydro_pump 2 170 2030 0.0 0.0 -it 01_solar 2 171 2030 1.0 0.0 -it 02_wind_on 2 171 2030 0.0 0.0 -it 03_wind_off 2 171 2030 0.0 0.0 -it 04_res 2 171 2030 0.0 0.0 -it 05_nuclear 2 171 2030 0.0 0.0 -it 06_coal 2 171 2030 0.0 0.0 -it 07_gas 2 171 2030 0.0 0.0 -it 08_non-res 2 171 2030 0.0 0.0 -it 09_hydro_pump 2 171 2030 0.0 0.0 -it 01_solar 2 172 2030 1.0 0.0 -it 02_wind_on 2 172 2030 0.0 0.0 -it 03_wind_off 2 172 2030 0.0 0.0 -it 04_res 2 172 2030 0.0 0.0 -it 05_nuclear 2 172 2030 0.0 0.0 -it 06_coal 2 172 2030 0.0 0.0 -it 07_gas 2 172 2030 0.0 0.0 -it 08_non-res 2 172 2030 0.0 0.0 -it 09_hydro_pump 2 172 2030 0.0 0.0 -it 01_solar 2 173 2030 1.0 0.0 -it 02_wind_on 2 173 2030 0.0 0.0 -it 03_wind_off 2 173 2030 0.0 0.0 -it 04_res 2 173 2030 0.0 0.0 -it 05_nuclear 2 173 2030 0.0 0.0 -it 06_coal 2 173 2030 0.0 0.0 -it 07_gas 2 173 2030 0.0 0.0 -it 08_non-res 2 173 2030 0.0 0.0 -it 09_hydro_pump 2 173 2030 0.0 0.0 -it 01_solar 2 174 2030 1.0 0.0 -it 02_wind_on 2 174 2030 0.0 0.0 -it 03_wind_off 2 174 2030 0.0 0.0 -it 04_res 2 174 2030 0.0 0.0 -it 05_nuclear 2 174 2030 0.0 0.0 -it 06_coal 2 174 2030 0.0 0.0 -it 07_gas 2 174 2030 0.0 0.0 -it 08_non-res 2 174 2030 0.0 0.0 -it 09_hydro_pump 2 174 2030 0.0 0.0 -it 01_solar 2 175 2030 1.0 0.0 -it 02_wind_on 2 175 2030 0.0 0.0 -it 03_wind_off 2 175 2030 0.0 0.0 -it 04_res 2 175 2030 0.0 0.0 -it 05_nuclear 2 175 2030 0.0 0.0 -it 06_coal 2 175 2030 0.0 0.0 -it 07_gas 2 175 2030 0.0 0.0 -it 08_non-res 2 175 2030 0.0 0.0 -it 09_hydro_pump 2 175 2030 0.0 0.0 -it 01_solar 2 176 2030 1.0 0.0 -it 02_wind_on 2 176 2030 0.0 0.0 -it 03_wind_off 2 176 2030 0.0 0.0 -it 04_res 2 176 2030 0.0 0.0 -it 05_nuclear 2 176 2030 0.0 0.0 -it 06_coal 2 176 2030 0.0 0.0 -it 07_gas 2 176 2030 0.0 0.0 -it 08_non-res 2 176 2030 0.0 0.0 -it 09_hydro_pump 2 176 2030 0.0 0.0 -it 01_solar 2 177 2030 1.0 0.0 -it 02_wind_on 2 177 2030 0.0 0.0 -it 03_wind_off 2 177 2030 0.0 0.0 -it 04_res 2 177 2030 0.0 0.0 -it 05_nuclear 2 177 2030 0.0 0.0 -it 06_coal 2 177 2030 0.0 0.0 -it 07_gas 2 177 2030 0.0 0.0 -it 08_non-res 2 177 2030 0.0 0.0 -it 09_hydro_pump 2 177 2030 0.0 0.0 -it 01_solar 2 178 2030 1.0 0.0 -it 02_wind_on 2 178 2030 0.0 0.0 -it 03_wind_off 2 178 2030 0.0 0.0 -it 04_res 2 178 2030 0.0 0.0 -it 05_nuclear 2 178 2030 0.0 0.0 -it 06_coal 2 178 2030 0.0 0.0 -it 07_gas 2 178 2030 0.0 0.0 -it 08_non-res 2 178 2030 0.0 0.0 -it 09_hydro_pump 2 178 2030 0.0 0.0 -it 01_solar 2 179 2030 1.0 0.0 -it 02_wind_on 2 179 2030 0.0 0.0 -it 03_wind_off 2 179 2030 0.0 0.0 -it 04_res 2 179 2030 0.0 0.0 -it 05_nuclear 2 179 2030 0.0 0.0 -it 06_coal 2 179 2030 0.0 0.0 -it 07_gas 2 179 2030 0.0 0.0 -it 08_non-res 2 179 2030 0.0 0.0 -it 09_hydro_pump 2 179 2030 0.0 0.0 -it 01_solar 2 180 2030 1.0 0.0 -it 02_wind_on 2 180 2030 0.0 0.0 -it 03_wind_off 2 180 2030 0.0 0.0 -it 04_res 2 180 2030 0.0 0.0 -it 05_nuclear 2 180 2030 0.0 0.0 -it 06_coal 2 180 2030 0.0 0.0 -it 07_gas 2 180 2030 0.0 0.0 -it 08_non-res 2 180 2030 0.0 0.0 -it 09_hydro_pump 2 180 2030 0.0 0.0 -it 01_solar 2 181 2030 1.0 0.0 -it 02_wind_on 2 181 2030 0.0 0.0 -it 03_wind_off 2 181 2030 0.0 0.0 -it 04_res 2 181 2030 0.0 0.0 -it 05_nuclear 2 181 2030 0.0 0.0 -it 06_coal 2 181 2030 0.0 0.0 -it 07_gas 2 181 2030 0.0 0.0 -it 08_non-res 2 181 2030 0.0 0.0 -it 09_hydro_pump 2 181 2030 0.0 0.0 -it 01_solar 2 182 2030 1.0 0.0 -it 02_wind_on 2 182 2030 0.0 0.0 -it 03_wind_off 2 182 2030 0.0 0.0 -it 04_res 2 182 2030 0.0 0.0 -it 05_nuclear 2 182 2030 0.0 0.0 -it 06_coal 2 182 2030 0.0 0.0 -it 07_gas 2 182 2030 0.0 0.0 -it 08_non-res 2 182 2030 0.0 0.0 -it 09_hydro_pump 2 182 2030 0.0 0.0 -it 01_solar 2 183 2030 1.0 0.0 -it 02_wind_on 2 183 2030 0.0 0.0 -it 03_wind_off 2 183 2030 0.0 0.0 -it 04_res 2 183 2030 0.0 0.0 -it 05_nuclear 2 183 2030 0.0 0.0 -it 06_coal 2 183 2030 0.0 0.0 -it 07_gas 2 183 2030 0.0 0.0 -it 08_non-res 2 183 2030 0.0 0.0 -it 09_hydro_pump 2 183 2030 0.0 0.0 -it 01_solar 2 184 2030 1.0 0.0 -it 02_wind_on 2 184 2030 0.0 0.0 -it 03_wind_off 2 184 2030 0.0 0.0 -it 04_res 2 184 2030 0.0 0.0 -it 05_nuclear 2 184 2030 0.0 0.0 -it 06_coal 2 184 2030 0.0 0.0 -it 07_gas 2 184 2030 0.0 0.0 -it 08_non-res 2 184 2030 0.0 0.0 -it 09_hydro_pump 2 184 2030 0.0 0.0 -it 01_solar 2 185 2030 1.0 0.0 -it 02_wind_on 2 185 2030 0.0 0.0 -it 03_wind_off 2 185 2030 0.0 0.0 -it 04_res 2 185 2030 0.0 0.0 -it 05_nuclear 2 185 2030 0.0 0.0 -it 06_coal 2 185 2030 0.0 0.0 -it 07_gas 2 185 2030 0.0 0.0 -it 08_non-res 2 185 2030 0.0 0.0 -it 09_hydro_pump 2 185 2030 0.0 0.0 -it 01_solar 2 186 2030 1.0 0.0 -it 02_wind_on 2 186 2030 0.0 0.0 -it 03_wind_off 2 186 2030 0.0 0.0 -it 04_res 2 186 2030 0.0 0.0 -it 05_nuclear 2 186 2030 0.0 0.0 -it 06_coal 2 186 2030 0.0 0.0 -it 07_gas 2 186 2030 0.0 0.0 -it 08_non-res 2 186 2030 0.0 0.0 -it 09_hydro_pump 2 186 2030 0.0 0.0 -it 01_solar 2 187 2030 1.0 0.0 -it 02_wind_on 2 187 2030 0.0 0.0 -it 03_wind_off 2 187 2030 0.0 0.0 -it 04_res 2 187 2030 0.0 0.0 -it 05_nuclear 2 187 2030 0.0 0.0 -it 06_coal 2 187 2030 0.0 0.0 -it 07_gas 2 187 2030 0.0 0.0 -it 08_non-res 2 187 2030 0.0 0.0 -it 09_hydro_pump 2 187 2030 0.0 0.0 -it 01_solar 2 188 2030 1.0 0.0 -it 02_wind_on 2 188 2030 0.0 0.0 -it 03_wind_off 2 188 2030 0.0 0.0 -it 04_res 2 188 2030 0.0 0.0 -it 05_nuclear 2 188 2030 0.0 0.0 -it 06_coal 2 188 2030 0.0 0.0 -it 07_gas 2 188 2030 0.0 0.0 -it 08_non-res 2 188 2030 0.0 0.0 -it 09_hydro_pump 2 188 2030 0.0 0.0 -it 01_solar 2 189 2030 1.0 0.0 -it 02_wind_on 2 189 2030 0.0 0.0 -it 03_wind_off 2 189 2030 0.0 0.0 -it 04_res 2 189 2030 0.0 0.0 -it 05_nuclear 2 189 2030 0.0 0.0 -it 06_coal 2 189 2030 0.0 0.0 -it 07_gas 2 189 2030 0.0 0.0 -it 08_non-res 2 189 2030 0.0 0.0 -it 09_hydro_pump 2 189 2030 0.0 0.0 -it 01_solar 2 190 2030 1.0 0.0 -it 02_wind_on 2 190 2030 1.0 0.0 -it 03_wind_off 2 190 2030 0.0 0.0 -it 04_res 2 190 2030 0.0 0.0 -it 05_nuclear 2 190 2030 0.0 0.0 -it 06_coal 2 190 2030 0.0 0.0 -it 07_gas 2 190 2030 0.0 0.0 -it 08_non-res 2 190 2030 0.0 0.0 -it 09_hydro_pump 2 190 2030 0.0 0.0 -it 01_solar 2 191 2030 1.0 0.0 -it 02_wind_on 2 191 2030 1.0 0.0 -it 03_wind_off 2 191 2030 0.0 0.0 -it 04_res 2 191 2030 0.0 0.0 -it 05_nuclear 2 191 2030 0.0 0.0 -it 06_coal 2 191 2030 0.0 0.0 -it 07_gas 2 191 2030 0.0 0.0 -it 08_non-res 2 191 2030 0.0 0.0 -it 09_hydro_pump 2 191 2030 0.0 0.0 -it 01_solar 2 192 2030 1.0 0.0 -it 02_wind_on 2 192 2030 1.0 0.0 -it 03_wind_off 2 192 2030 0.0 0.0 -it 04_res 2 192 2030 0.0 0.0 -it 05_nuclear 2 192 2030 0.0 0.0 -it 06_coal 2 192 2030 0.0 0.0 -it 07_gas 2 192 2030 0.0 0.0 -it 08_non-res 2 192 2030 0.0 0.0 -it 09_hydro_pump 2 192 2030 0.0 0.0 -it 01_solar 2 193 2030 1.0 0.0 -it 02_wind_on 2 193 2030 1.0 0.0 -it 03_wind_off 2 193 2030 0.0 0.0 -it 04_res 2 193 2030 0.0 0.0 -it 05_nuclear 2 193 2030 0.0 0.0 -it 06_coal 2 193 2030 0.0 0.0 -it 07_gas 2 193 2030 0.0 0.0 -it 08_non-res 2 193 2030 0.0 0.0 -it 09_hydro_pump 2 193 2030 0.0 0.0 -it 01_solar 2 194 2030 1.0 0.0 -it 02_wind_on 2 194 2030 1.0 0.0 -it 03_wind_off 2 194 2030 0.0 0.0 -it 04_res 2 194 2030 0.0 0.0 -it 05_nuclear 2 194 2030 0.0 0.0 -it 06_coal 2 194 2030 0.0 0.0 -it 07_gas 2 194 2030 0.0 0.0 -it 08_non-res 2 194 2030 0.0 0.0 -it 09_hydro_pump 2 194 2030 0.0 0.0 -it 01_solar 2 195 2030 1.0 0.0 -it 02_wind_on 2 195 2030 1.0 0.0 -it 03_wind_off 2 195 2030 0.0 0.0 -it 04_res 2 195 2030 0.0 0.0 -it 05_nuclear 2 195 2030 0.0 0.0 -it 06_coal 2 195 2030 0.0 0.0 -it 07_gas 2 195 2030 0.0 0.0 -it 08_non-res 2 195 2030 0.0 0.0 -it 09_hydro_pump 2 195 2030 0.0 0.0 -it 01_solar 2 196 2030 1.0 0.0 -it 02_wind_on 2 196 2030 1.0 0.0 -it 03_wind_off 2 196 2030 0.0 0.0 -it 04_res 2 196 2030 0.0 0.0 -it 05_nuclear 2 196 2030 0.0 0.0 -it 06_coal 2 196 2030 0.0 0.0 -it 07_gas 2 196 2030 0.0 0.0 -it 08_non-res 2 196 2030 0.0 0.0 -it 09_hydro_pump 2 196 2030 0.0 0.0 -it 01_solar 2 197 2030 1.0 0.0 -it 02_wind_on 2 197 2030 1.0 0.0 -it 03_wind_off 2 197 2030 0.0 0.0 -it 04_res 2 197 2030 0.0 0.0 -it 05_nuclear 2 197 2030 0.0 0.0 -it 06_coal 2 197 2030 0.0 0.0 -it 07_gas 2 197 2030 0.0 0.0 -it 08_non-res 2 197 2030 0.0 0.0 -it 09_hydro_pump 2 197 2030 0.0 0.0 -it 01_solar 2 198 2030 1.0 0.0 -it 02_wind_on 2 198 2030 1.0 0.0 -it 03_wind_off 2 198 2030 0.0 0.0 -it 04_res 2 198 2030 0.0 0.0 -it 05_nuclear 2 198 2030 0.0 0.0 -it 06_coal 2 198 2030 0.0 0.0 -it 07_gas 2 198 2030 0.0 0.0 -it 08_non-res 2 198 2030 0.0 0.0 -it 09_hydro_pump 2 198 2030 0.0 0.0 -it 01_solar 2 199 2030 1.0 0.0 -it 02_wind_on 2 199 2030 1.0 0.0 -it 03_wind_off 2 199 2030 0.0 0.0 -it 04_res 2 199 2030 0.0 0.0 -it 05_nuclear 2 199 2030 0.0 0.0 -it 06_coal 2 199 2030 0.0 0.0 -it 07_gas 2 199 2030 0.0 0.0 -it 08_non-res 2 199 2030 0.0 0.0 -it 09_hydro_pump 2 199 2030 0.0 0.0 -it 01_solar 2 200 2030 1.0 0.0 -it 02_wind_on 2 200 2030 1.0 0.0 -it 03_wind_off 2 200 2030 0.0 0.0 -it 04_res 2 200 2030 0.0 0.0 -it 05_nuclear 2 200 2030 0.0 0.0 -it 06_coal 2 200 2030 0.0 0.0 -it 07_gas 2 200 2030 0.0 0.0 -it 08_non-res 2 200 2030 0.0 0.0 -it 09_hydro_pump 2 200 2030 0.0 0.0 -it 01_solar 2 201 2030 1.0 0.0 -it 02_wind_on 2 201 2030 1.0 0.0 -it 03_wind_off 2 201 2030 0.0 0.0 -it 04_res 2 201 2030 0.0 0.0 -it 05_nuclear 2 201 2030 0.0 0.0 -it 06_coal 2 201 2030 0.0 0.0 -it 07_gas 2 201 2030 0.0 0.0 -it 08_non-res 2 201 2030 0.0 0.0 -it 09_hydro_pump 2 201 2030 0.0 0.0 -it 01_solar 2 202 2030 1.0 0.0 -it 02_wind_on 2 202 2030 1.0 0.0 -it 03_wind_off 2 202 2030 0.0 0.0 -it 04_res 2 202 2030 0.0 0.0 -it 05_nuclear 2 202 2030 0.0 0.0 -it 06_coal 2 202 2030 0.0 0.0 -it 07_gas 2 202 2030 0.0 0.0 -it 08_non-res 2 202 2030 0.0 0.0 -it 09_hydro_pump 2 202 2030 0.0 0.0 -it 01_solar 2 203 2030 1.0 0.0 -it 02_wind_on 2 203 2030 1.0 0.0 -it 03_wind_off 2 203 2030 0.0 0.0 -it 04_res 2 203 2030 0.0 0.0 -it 05_nuclear 2 203 2030 0.0 0.0 -it 06_coal 2 203 2030 0.0 0.0 -it 07_gas 2 203 2030 0.0 0.0 -it 08_non-res 2 203 2030 0.0 0.0 -it 09_hydro_pump 2 203 2030 0.0 0.0 -it 01_solar 2 204 2030 1.0 0.0 -it 02_wind_on 2 204 2030 1.0 0.0 -it 03_wind_off 2 204 2030 0.0 0.0 -it 04_res 2 204 2030 0.0 0.0 -it 05_nuclear 2 204 2030 0.0 0.0 -it 06_coal 2 204 2030 0.0 0.0 -it 07_gas 2 204 2030 0.0 0.0 -it 08_non-res 2 204 2030 0.0 0.0 -it 09_hydro_pump 2 204 2030 0.0 0.0 -it 01_solar 2 205 2030 1.0 0.0 -it 02_wind_on 2 205 2030 1.0 0.0 -it 03_wind_off 2 205 2030 0.0 0.0 -it 04_res 2 205 2030 0.0 0.0 -it 05_nuclear 2 205 2030 0.0 0.0 -it 06_coal 2 205 2030 0.0 0.0 -it 07_gas 2 205 2030 0.0 0.0 -it 08_non-res 2 205 2030 0.0 0.0 -it 09_hydro_pump 2 205 2030 0.0 0.0 -it 01_solar 2 206 2030 1.0 0.0 -it 02_wind_on 2 206 2030 1.0 0.0 -it 03_wind_off 2 206 2030 0.0 0.0 -it 04_res 2 206 2030 0.0 0.0 -it 05_nuclear 2 206 2030 0.0 0.0 -it 06_coal 2 206 2030 0.0 0.0 -it 07_gas 2 206 2030 0.0 0.0 -it 08_non-res 2 206 2030 0.0 0.0 -it 09_hydro_pump 2 206 2030 0.0 0.0 -it 01_solar 2 207 2030 1.0 0.0 -it 02_wind_on 2 207 2030 1.0 0.0 -it 03_wind_off 2 207 2030 0.0 0.0 -it 04_res 2 207 2030 0.0 0.0 -it 05_nuclear 2 207 2030 0.0 0.0 -it 06_coal 2 207 2030 0.0 0.0 -it 07_gas 2 207 2030 0.0 0.0 -it 08_non-res 2 207 2030 0.0 0.0 -it 09_hydro_pump 2 207 2030 0.0 0.0 -it 01_solar 2 208 2030 1.0 0.0 -it 02_wind_on 2 208 2030 1.0 0.0 -it 03_wind_off 2 208 2030 0.0 0.0 -it 04_res 2 208 2030 0.0 0.0 -it 05_nuclear 2 208 2030 0.0 0.0 -it 06_coal 2 208 2030 0.0 0.0 -it 07_gas 2 208 2030 0.0 0.0 -it 08_non-res 2 208 2030 0.0 0.0 -it 09_hydro_pump 2 208 2030 0.0 0.0 -it 01_solar 2 209 2030 1.0 0.0 -it 02_wind_on 2 209 2030 1.0 0.0 -it 03_wind_off 2 209 2030 0.0 0.0 -it 04_res 2 209 2030 0.0 0.0 -it 05_nuclear 2 209 2030 0.0 0.0 -it 06_coal 2 209 2030 0.0 0.0 -it 07_gas 2 209 2030 0.0 0.0 -it 08_non-res 2 209 2030 0.0 0.0 -it 09_hydro_pump 2 209 2030 0.0 0.0 -it 01_solar 2 210 2030 1.0 0.0 -it 02_wind_on 2 210 2030 1.0 0.0 -it 03_wind_off 2 210 2030 1.0 0.0 -it 04_res 2 210 2030 0.0 0.0 -it 05_nuclear 2 210 2030 0.0 0.0 -it 06_coal 2 210 2030 0.0 0.0 -it 07_gas 2 210 2030 0.0 0.0 -it 08_non-res 2 210 2030 0.0 0.0 -it 09_hydro_pump 2 210 2030 0.0 0.0 -it 01_solar 2 211 2030 1.0 0.0 -it 02_wind_on 2 211 2030 1.0 0.0 -it 03_wind_off 2 211 2030 1.0 0.0 -it 04_res 2 211 2030 0.0 0.0 -it 05_nuclear 2 211 2030 0.0 0.0 -it 06_coal 2 211 2030 0.0 0.0 -it 07_gas 2 211 2030 0.0 0.0 -it 08_non-res 2 211 2030 0.0 0.0 -it 09_hydro_pump 2 211 2030 0.0 0.0 -it 01_solar 2 212 2030 1.0 0.0 -it 02_wind_on 2 212 2030 1.0 0.0 -it 03_wind_off 2 212 2030 1.0 0.0 -it 04_res 2 212 2030 0.0 0.0 -it 05_nuclear 2 212 2030 0.0 0.0 -it 06_coal 2 212 2030 0.0 0.0 -it 07_gas 2 212 2030 0.0 0.0 -it 08_non-res 2 212 2030 0.0 0.0 -it 09_hydro_pump 2 212 2030 0.0 0.0 -it 01_solar 2 213 2030 1.0 0.0 -it 02_wind_on 2 213 2030 1.0 0.0 -it 03_wind_off 2 213 2030 1.0 0.0 -it 04_res 2 213 2030 0.0 0.0 -it 05_nuclear 2 213 2030 0.0 0.0 -it 06_coal 2 213 2030 0.0 0.0 -it 07_gas 2 213 2030 0.0 0.0 -it 08_non-res 2 213 2030 0.0 0.0 -it 09_hydro_pump 2 213 2030 0.0 0.0 -it 01_solar 2 214 2030 1.0 0.0 -it 02_wind_on 2 214 2030 1.0 0.0 -it 03_wind_off 2 214 2030 1.0 0.0 -it 04_res 2 214 2030 0.0 0.0 -it 05_nuclear 2 214 2030 0.0 0.0 -it 06_coal 2 214 2030 0.0 0.0 -it 07_gas 2 214 2030 0.0 0.0 -it 08_non-res 2 214 2030 0.0 0.0 -it 09_hydro_pump 2 214 2030 0.0 0.0 -it 01_solar 2 215 2030 1.0 0.0 -it 02_wind_on 2 215 2030 1.0 0.0 -it 03_wind_off 2 215 2030 1.0 0.0 -it 04_res 2 215 2030 0.0 0.0 -it 05_nuclear 2 215 2030 0.0 0.0 -it 06_coal 2 215 2030 0.0 0.0 -it 07_gas 2 215 2030 0.0 0.0 -it 08_non-res 2 215 2030 0.0 0.0 -it 09_hydro_pump 2 215 2030 0.0 0.0 -it 01_solar 2 216 2030 1.0 0.0 -it 02_wind_on 2 216 2030 1.0 0.0 -it 03_wind_off 2 216 2030 1.0 0.0 -it 04_res 2 216 2030 0.0 0.0 -it 05_nuclear 2 216 2030 0.0 0.0 -it 06_coal 2 216 2030 0.0 0.0 -it 07_gas 2 216 2030 0.0 0.0 -it 08_non-res 2 216 2030 0.0 0.0 -it 09_hydro_pump 2 216 2030 0.0 0.0 -it 01_solar 2 217 2030 1.0 0.0 -it 02_wind_on 2 217 2030 1.0 0.0 -it 03_wind_off 2 217 2030 1.0 0.0 -it 04_res 2 217 2030 0.0 0.0 -it 05_nuclear 2 217 2030 0.0 0.0 -it 06_coal 2 217 2030 0.0 0.0 -it 07_gas 2 217 2030 0.0 0.0 -it 08_non-res 2 217 2030 0.0 0.0 -it 09_hydro_pump 2 217 2030 0.0 0.0 -it 01_solar 2 218 2030 1.0 0.0 -it 02_wind_on 2 218 2030 1.0 0.0 -it 03_wind_off 2 218 2030 1.0 0.0 -it 04_res 2 218 2030 0.0 0.0 -it 05_nuclear 2 218 2030 0.0 0.0 -it 06_coal 2 218 2030 0.0 0.0 -it 07_gas 2 218 2030 0.0 0.0 -it 08_non-res 2 218 2030 0.0 0.0 -it 09_hydro_pump 2 218 2030 0.0 0.0 -it 01_solar 2 219 2030 1.0 0.0 -it 02_wind_on 2 219 2030 1.0 0.0 -it 03_wind_off 2 219 2030 1.0 0.0 -it 04_res 2 219 2030 0.0 0.0 -it 05_nuclear 2 219 2030 0.0 0.0 -it 06_coal 2 219 2030 0.0 0.0 -it 07_gas 2 219 2030 0.0 0.0 -it 08_non-res 2 219 2030 0.0 0.0 -it 09_hydro_pump 2 219 2030 0.0 0.0 -it 01_solar 2 220 2030 1.0 0.0 -it 02_wind_on 2 220 2030 1.0 0.0 -it 03_wind_off 2 220 2030 1.0 0.0 -it 04_res 2 220 2030 0.0 0.0 -it 05_nuclear 2 220 2030 0.0 0.0 -it 06_coal 2 220 2030 0.0 0.0 -it 07_gas 2 220 2030 0.0 0.0 -it 08_non-res 2 220 2030 0.0 0.0 -it 09_hydro_pump 2 220 2030 0.0 0.0 -it 01_solar 2 221 2030 1.0 0.0 -it 02_wind_on 2 221 2030 1.0 0.0 -it 03_wind_off 2 221 2030 1.0 0.0 -it 04_res 2 221 2030 0.0 0.0 -it 05_nuclear 2 221 2030 0.0 0.0 -it 06_coal 2 221 2030 0.0 0.0 -it 07_gas 2 221 2030 0.0 0.0 -it 08_non-res 2 221 2030 0.0 0.0 -it 09_hydro_pump 2 221 2030 0.0 0.0 -it 01_solar 2 222 2030 1.0 0.0 -it 02_wind_on 2 222 2030 1.0 0.0 -it 03_wind_off 2 222 2030 1.0 0.0 -it 04_res 2 222 2030 0.0 0.0 -it 05_nuclear 2 222 2030 0.0 0.0 -it 06_coal 2 222 2030 0.0 0.0 -it 07_gas 2 222 2030 0.0 0.0 -it 08_non-res 2 222 2030 0.0 0.0 -it 09_hydro_pump 2 222 2030 0.0 0.0 -it 01_solar 2 223 2030 1.0 0.0 -it 02_wind_on 2 223 2030 1.0 0.0 -it 03_wind_off 2 223 2030 1.0 0.0 -it 04_res 2 223 2030 0.0 0.0 -it 05_nuclear 2 223 2030 0.0 0.0 -it 06_coal 2 223 2030 0.0 0.0 -it 07_gas 2 223 2030 0.0 0.0 -it 08_non-res 2 223 2030 0.0 0.0 -it 09_hydro_pump 2 223 2030 0.0 0.0 -it 01_solar 2 224 2030 1.0 0.0 -it 02_wind_on 2 224 2030 1.0 0.0 -it 03_wind_off 2 224 2030 1.0 0.0 -it 04_res 2 224 2030 0.0 0.0 -it 05_nuclear 2 224 2030 0.0 0.0 -it 06_coal 2 224 2030 0.0 0.0 -it 07_gas 2 224 2030 0.0 0.0 -it 08_non-res 2 224 2030 0.0 0.0 -it 09_hydro_pump 2 224 2030 0.0 0.0 -it 01_solar 2 225 2030 1.0 0.0 -it 02_wind_on 2 225 2030 1.0 0.0 -it 03_wind_off 2 225 2030 1.0 0.0 -it 04_res 2 225 2030 0.0 0.0 -it 05_nuclear 2 225 2030 0.0 0.0 -it 06_coal 2 225 2030 0.0 0.0 -it 07_gas 2 225 2030 0.0 0.0 -it 08_non-res 2 225 2030 0.0 0.0 -it 09_hydro_pump 2 225 2030 0.0 0.0 -it 01_solar 2 226 2030 1.0 0.0 -it 02_wind_on 2 226 2030 1.0 0.0 -it 03_wind_off 2 226 2030 1.0 0.0 -it 04_res 2 226 2030 0.0 0.0 -it 05_nuclear 2 226 2030 0.0 0.0 -it 06_coal 2 226 2030 0.0 0.0 -it 07_gas 2 226 2030 0.0 0.0 -it 08_non-res 2 226 2030 0.0 0.0 -it 09_hydro_pump 2 226 2030 0.0 0.0 -it 01_solar 2 227 2030 1.0 0.0 -it 02_wind_on 2 227 2030 1.0 0.0 -it 03_wind_off 2 227 2030 1.0 0.0 -it 04_res 2 227 2030 0.0 0.0 -it 05_nuclear 2 227 2030 0.0 0.0 -it 06_coal 2 227 2030 0.0 0.0 -it 07_gas 2 227 2030 0.0 0.0 -it 08_non-res 2 227 2030 0.0 0.0 -it 09_hydro_pump 2 227 2030 0.0 0.0 -it 01_solar 2 228 2030 1.0 0.0 -it 02_wind_on 2 228 2030 1.0 0.0 -it 03_wind_off 2 228 2030 1.0 0.0 -it 04_res 2 228 2030 0.0 0.0 -it 05_nuclear 2 228 2030 0.0 0.0 -it 06_coal 2 228 2030 0.0 0.0 -it 07_gas 2 228 2030 0.0 0.0 -it 08_non-res 2 228 2030 0.0 0.0 -it 09_hydro_pump 2 228 2030 0.0 0.0 -it 01_solar 2 229 2030 1.0 0.0 -it 02_wind_on 2 229 2030 1.0 0.0 -it 03_wind_off 2 229 2030 1.0 0.0 -it 04_res 2 229 2030 0.0 0.0 -it 05_nuclear 2 229 2030 0.0 0.0 -it 06_coal 2 229 2030 0.0 0.0 -it 07_gas 2 229 2030 0.0 0.0 -it 08_non-res 2 229 2030 0.0 0.0 -it 09_hydro_pump 2 229 2030 0.0 0.0 -it 01_solar 2 230 2030 1.0 0.0 -it 02_wind_on 2 230 2030 1.0 0.0 -it 03_wind_off 2 230 2030 1.0 0.0 -it 04_res 2 230 2030 1.0 0.0 -it 05_nuclear 2 230 2030 0.0 0.0 -it 06_coal 2 230 2030 0.0 0.0 -it 07_gas 2 230 2030 0.0 0.0 -it 08_non-res 2 230 2030 0.0 0.0 -it 09_hydro_pump 2 230 2030 0.0 0.0 -it 01_solar 2 231 2030 1.0 0.0 -it 02_wind_on 2 231 2030 1.0 0.0 -it 03_wind_off 2 231 2030 1.0 0.0 -it 04_res 2 231 2030 1.0 0.0 -it 05_nuclear 2 231 2030 0.0 0.0 -it 06_coal 2 231 2030 0.0 0.0 -it 07_gas 2 231 2030 0.0 0.0 -it 08_non-res 2 231 2030 0.0 0.0 -it 09_hydro_pump 2 231 2030 0.0 0.0 -it 01_solar 2 232 2030 1.0 0.0 -it 02_wind_on 2 232 2030 1.0 0.0 -it 03_wind_off 2 232 2030 1.0 0.0 -it 04_res 2 232 2030 1.0 0.0 -it 05_nuclear 2 232 2030 0.0 0.0 -it 06_coal 2 232 2030 0.0 0.0 -it 07_gas 2 232 2030 0.0 0.0 -it 08_non-res 2 232 2030 0.0 0.0 -it 09_hydro_pump 2 232 2030 0.0 0.0 -it 01_solar 2 233 2030 1.0 0.0 -it 02_wind_on 2 233 2030 1.0 0.0 -it 03_wind_off 2 233 2030 1.0 0.0 -it 04_res 2 233 2030 1.0 0.0 -it 05_nuclear 2 233 2030 0.0 0.0 -it 06_coal 2 233 2030 0.0 0.0 -it 07_gas 2 233 2030 0.0 0.0 -it 08_non-res 2 233 2030 0.0 0.0 -it 09_hydro_pump 2 233 2030 0.0 0.0 -it 01_solar 2 234 2030 1.0 0.0 -it 02_wind_on 2 234 2030 1.0 0.0 -it 03_wind_off 2 234 2030 1.0 0.0 -it 04_res 2 234 2030 1.0 0.0 -it 05_nuclear 2 234 2030 0.0 0.0 -it 06_coal 2 234 2030 0.0 0.0 -it 07_gas 2 234 2030 0.0 0.0 -it 08_non-res 2 234 2030 0.0 0.0 -it 09_hydro_pump 2 234 2030 0.0 0.0 -it 01_solar 2 235 2030 1.0 0.0 -it 02_wind_on 2 235 2030 1.0 0.0 -it 03_wind_off 2 235 2030 1.0 0.0 -it 04_res 2 235 2030 1.0 0.0 -it 05_nuclear 2 235 2030 0.0 0.0 -it 06_coal 2 235 2030 0.0 0.0 -it 07_gas 2 235 2030 0.0 0.0 -it 08_non-res 2 235 2030 0.0 0.0 -it 09_hydro_pump 2 235 2030 0.0 0.0 -it 01_solar 2 236 2030 1.0 0.0 -it 02_wind_on 2 236 2030 1.0 0.0 -it 03_wind_off 2 236 2030 1.0 0.0 -it 04_res 2 236 2030 1.0 0.0 -it 05_nuclear 2 236 2030 0.0 0.0 -it 06_coal 2 236 2030 0.0 0.0 -it 07_gas 2 236 2030 0.0 0.0 -it 08_non-res 2 236 2030 0.0 0.0 -it 09_hydro_pump 2 236 2030 0.0 0.0 -it 01_solar 2 237 2030 1.0 0.0 -it 02_wind_on 2 237 2030 1.0 0.0 -it 03_wind_off 2 237 2030 1.0 0.0 -it 04_res 2 237 2030 1.0 0.0 -it 05_nuclear 2 237 2030 0.0 0.0 -it 06_coal 2 237 2030 0.0 0.0 -it 07_gas 2 237 2030 0.0 0.0 -it 08_non-res 2 237 2030 0.0 0.0 -it 09_hydro_pump 2 237 2030 0.0 0.0 -it 01_solar 2 238 2030 1.0 0.0 -it 02_wind_on 2 238 2030 1.0 0.0 -it 03_wind_off 2 238 2030 1.0 0.0 -it 04_res 2 238 2030 1.0 0.0 -it 05_nuclear 2 238 2030 0.0 0.0 -it 06_coal 2 238 2030 0.0 0.0 -it 07_gas 2 238 2030 0.0 0.0 -it 08_non-res 2 238 2030 0.0 0.0 -it 09_hydro_pump 2 238 2030 0.0 0.0 -it 01_solar 2 239 2030 1.0 0.0 -it 02_wind_on 2 239 2030 1.0 0.0 -it 03_wind_off 2 239 2030 1.0 0.0 -it 04_res 2 239 2030 1.0 0.0 -it 05_nuclear 2 239 2030 0.0 0.0 -it 06_coal 2 239 2030 0.0 0.0 -it 07_gas 2 239 2030 0.0 0.0 -it 08_non-res 2 239 2030 0.0 0.0 -it 09_hydro_pump 2 239 2030 0.0 0.0 -it 01_solar 2 240 2030 1.0 0.0 -it 02_wind_on 2 240 2030 1.0 0.0 -it 03_wind_off 2 240 2030 1.0 0.0 -it 04_res 2 240 2030 1.0 0.0 -it 05_nuclear 2 240 2030 0.0 0.0 -it 06_coal 2 240 2030 0.0 0.0 -it 07_gas 2 240 2030 0.0 0.0 -it 08_non-res 2 240 2030 0.0 0.0 -it 09_hydro_pump 2 240 2030 0.0 0.0 -it 01_solar 2 241 2030 1.0 0.0 -it 02_wind_on 2 241 2030 1.0 0.0 -it 03_wind_off 2 241 2030 1.0 0.0 -it 04_res 2 241 2030 1.0 0.0 -it 05_nuclear 2 241 2030 0.0 0.0 -it 06_coal 2 241 2030 0.0 0.0 -it 07_gas 2 241 2030 0.0 0.0 -it 08_non-res 2 241 2030 0.0 0.0 -it 09_hydro_pump 2 241 2030 0.0 0.0 -it 01_solar 2 242 2030 1.0 0.0 -it 02_wind_on 2 242 2030 1.0 0.0 -it 03_wind_off 2 242 2030 1.0 0.0 -it 04_res 2 242 2030 1.0 0.0 -it 05_nuclear 2 242 2030 0.0 0.0 -it 06_coal 2 242 2030 0.0 0.0 -it 07_gas 2 242 2030 0.0 0.0 -it 08_non-res 2 242 2030 0.0 0.0 -it 09_hydro_pump 2 242 2030 0.0 0.0 -it 01_solar 2 243 2030 1.0 0.0 -it 02_wind_on 2 243 2030 1.0 0.0 -it 03_wind_off 2 243 2030 1.0 0.0 -it 04_res 2 243 2030 1.0 0.0 -it 05_nuclear 2 243 2030 0.0 0.0 -it 06_coal 2 243 2030 0.0 0.0 -it 07_gas 2 243 2030 0.0 0.0 -it 08_non-res 2 243 2030 0.0 0.0 -it 09_hydro_pump 2 243 2030 0.0 0.0 -it 01_solar 2 244 2030 1.0 0.0 -it 02_wind_on 2 244 2030 1.0 0.0 -it 03_wind_off 2 244 2030 1.0 0.0 -it 04_res 2 244 2030 1.0 0.0 -it 05_nuclear 2 244 2030 0.0 0.0 -it 06_coal 2 244 2030 0.0 0.0 -it 07_gas 2 244 2030 0.0 0.0 -it 08_non-res 2 244 2030 0.0 0.0 -it 09_hydro_pump 2 244 2030 0.0 0.0 -it 01_solar 2 245 2030 1.0 0.0 -it 02_wind_on 2 245 2030 1.0 0.0 -it 03_wind_off 2 245 2030 1.0 0.0 -it 04_res 2 245 2030 1.0 0.0 -it 05_nuclear 2 245 2030 0.0 0.0 -it 06_coal 2 245 2030 0.0 0.0 -it 07_gas 2 245 2030 0.0 0.0 -it 08_non-res 2 245 2030 0.0 0.0 -it 09_hydro_pump 2 245 2030 0.0 0.0 -it 01_solar 2 246 2030 1.0 0.0 -it 02_wind_on 2 246 2030 1.0 0.0 -it 03_wind_off 2 246 2030 1.0 0.0 -it 04_res 2 246 2030 1.0 0.0 -it 05_nuclear 2 246 2030 0.0 0.0 -it 06_coal 2 246 2030 0.0 0.0 -it 07_gas 2 246 2030 0.0 0.0 -it 08_non-res 2 246 2030 0.0 0.0 -it 09_hydro_pump 2 246 2030 0.0 0.0 -it 01_solar 2 247 2030 1.0 0.0 -it 02_wind_on 2 247 2030 1.0 0.0 -it 03_wind_off 2 247 2030 1.0 0.0 -it 04_res 2 247 2030 1.0 0.0 -it 05_nuclear 2 247 2030 0.0 0.0 -it 06_coal 2 247 2030 0.0 0.0 -it 07_gas 2 247 2030 0.0 0.0 -it 08_non-res 2 247 2030 0.0 0.0 -it 09_hydro_pump 2 247 2030 0.0 0.0 -it 01_solar 2 248 2030 1.0 0.0 -it 02_wind_on 2 248 2030 1.0 0.0 -it 03_wind_off 2 248 2030 1.0 0.0 -it 04_res 2 248 2030 1.0 0.0 -it 05_nuclear 2 248 2030 0.0 0.0 -it 06_coal 2 248 2030 0.0 0.0 -it 07_gas 2 248 2030 0.0 0.0 -it 08_non-res 2 248 2030 0.0 0.0 -it 09_hydro_pump 2 248 2030 0.0 0.0 -it 01_solar 2 249 2030 1.0 0.0 -it 02_wind_on 2 249 2030 1.0 0.0 -it 03_wind_off 2 249 2030 1.0 0.0 -it 04_res 2 249 2030 1.0 0.0 -it 05_nuclear 2 249 2030 0.0 0.0 -it 06_coal 2 249 2030 0.0 0.0 -it 07_gas 2 249 2030 0.0 0.0 -it 08_non-res 2 249 2030 0.0 0.0 -it 09_hydro_pump 2 249 2030 0.0 0.0 -it 01_solar 2 250 2030 1.0 0.0 -it 02_wind_on 2 250 2030 1.0 0.0 -it 03_wind_off 2 250 2030 1.0 0.0 -it 04_res 2 250 2030 1.0 0.0 -it 05_nuclear 2 250 2030 1.0 0.0 -it 06_coal 2 250 2030 0.0 0.0 -it 07_gas 2 250 2030 0.0 0.0 -it 08_non-res 2 250 2030 0.0 0.0 -it 09_hydro_pump 2 250 2030 0.0 0.0 -it 01_solar 2 251 2030 1.0 0.0 -it 02_wind_on 2 251 2030 1.0 0.0 -it 03_wind_off 2 251 2030 1.0 0.0 -it 04_res 2 251 2030 1.0 0.0 -it 05_nuclear 2 251 2030 1.0 0.0 -it 06_coal 2 251 2030 0.0 0.0 -it 07_gas 2 251 2030 0.0 0.0 -it 08_non-res 2 251 2030 0.0 0.0 -it 09_hydro_pump 2 251 2030 0.0 0.0 -it 01_solar 2 252 2030 1.0 0.0 -it 02_wind_on 2 252 2030 1.0 0.0 -it 03_wind_off 2 252 2030 1.0 0.0 -it 04_res 2 252 2030 1.0 0.0 -it 05_nuclear 2 252 2030 1.0 0.0 -it 06_coal 2 252 2030 0.0 0.0 -it 07_gas 2 252 2030 0.0 0.0 -it 08_non-res 2 252 2030 0.0 0.0 -it 09_hydro_pump 2 252 2030 0.0 0.0 -it 01_solar 2 253 2030 1.0 0.0 -it 02_wind_on 2 253 2030 1.0 0.0 -it 03_wind_off 2 253 2030 1.0 0.0 -it 04_res 2 253 2030 1.0 0.0 -it 05_nuclear 2 253 2030 1.0 0.0 -it 06_coal 2 253 2030 0.0 0.0 -it 07_gas 2 253 2030 0.0 0.0 -it 08_non-res 2 253 2030 0.0 0.0 -it 09_hydro_pump 2 253 2030 0.0 0.0 -it 01_solar 2 254 2030 1.0 0.0 -it 02_wind_on 2 254 2030 1.0 0.0 -it 03_wind_off 2 254 2030 1.0 0.0 -it 04_res 2 254 2030 1.0 0.0 -it 05_nuclear 2 254 2030 1.0 0.0 -it 06_coal 2 254 2030 0.0 0.0 -it 07_gas 2 254 2030 0.0 0.0 -it 08_non-res 2 254 2030 0.0 0.0 -it 09_hydro_pump 2 254 2030 0.0 0.0 -it 01_solar 2 255 2030 1.0 0.0 -it 02_wind_on 2 255 2030 1.0 0.0 -it 03_wind_off 2 255 2030 1.0 0.0 -it 04_res 2 255 2030 1.0 0.0 -it 05_nuclear 2 255 2030 1.0 0.0 -it 06_coal 2 255 2030 0.0 0.0 -it 07_gas 2 255 2030 0.0 0.0 -it 08_non-res 2 255 2030 0.0 0.0 -it 09_hydro_pump 2 255 2030 0.0 0.0 -it 01_solar 2 256 2030 1.0 0.0 -it 02_wind_on 2 256 2030 1.0 0.0 -it 03_wind_off 2 256 2030 1.0 0.0 -it 04_res 2 256 2030 1.0 0.0 -it 05_nuclear 2 256 2030 1.0 0.0 -it 06_coal 2 256 2030 0.0 0.0 -it 07_gas 2 256 2030 0.0 0.0 -it 08_non-res 2 256 2030 0.0 0.0 -it 09_hydro_pump 2 256 2030 0.0 0.0 -it 01_solar 2 257 2030 1.0 0.0 -it 02_wind_on 2 257 2030 1.0 0.0 -it 03_wind_off 2 257 2030 1.0 0.0 -it 04_res 2 257 2030 1.0 0.0 -it 05_nuclear 2 257 2030 1.0 0.0 -it 06_coal 2 257 2030 0.0 0.0 -it 07_gas 2 257 2030 0.0 0.0 -it 08_non-res 2 257 2030 0.0 0.0 -it 09_hydro_pump 2 257 2030 0.0 0.0 -it 01_solar 2 258 2030 1.0 0.0 -it 02_wind_on 2 258 2030 1.0 0.0 -it 03_wind_off 2 258 2030 1.0 0.0 -it 04_res 2 258 2030 1.0 0.0 -it 05_nuclear 2 258 2030 1.0 0.0 -it 06_coal 2 258 2030 0.0 0.0 -it 07_gas 2 258 2030 0.0 0.0 -it 08_non-res 2 258 2030 0.0 0.0 -it 09_hydro_pump 2 258 2030 0.0 0.0 -it 01_solar 2 259 2030 1.0 0.0 -it 02_wind_on 2 259 2030 1.0 0.0 -it 03_wind_off 2 259 2030 1.0 0.0 -it 04_res 2 259 2030 1.0 0.0 -it 05_nuclear 2 259 2030 1.0 0.0 -it 06_coal 2 259 2030 0.0 0.0 -it 07_gas 2 259 2030 0.0 0.0 -it 08_non-res 2 259 2030 0.0 0.0 -it 09_hydro_pump 2 259 2030 0.0 0.0 -it 01_solar 2 260 2030 1.0 0.0 -it 02_wind_on 2 260 2030 1.0 0.0 -it 03_wind_off 2 260 2030 1.0 0.0 -it 04_res 2 260 2030 1.0 0.0 -it 05_nuclear 2 260 2030 1.0 0.0 -it 06_coal 2 260 2030 0.0 0.0 -it 07_gas 2 260 2030 0.0 0.0 -it 08_non-res 2 260 2030 0.0 0.0 -it 09_hydro_pump 2 260 2030 0.0 0.0 -it 01_solar 2 261 2030 1.0 0.0 -it 02_wind_on 2 261 2030 1.0 0.0 -it 03_wind_off 2 261 2030 1.0 0.0 -it 04_res 2 261 2030 1.0 0.0 -it 05_nuclear 2 261 2030 1.0 0.0 -it 06_coal 2 261 2030 0.0 0.0 -it 07_gas 2 261 2030 0.0 0.0 -it 08_non-res 2 261 2030 0.0 0.0 -it 09_hydro_pump 2 261 2030 0.0 0.0 -it 01_solar 2 262 2030 1.0 0.0 -it 02_wind_on 2 262 2030 1.0 0.0 -it 03_wind_off 2 262 2030 1.0 0.0 -it 04_res 2 262 2030 1.0 0.0 -it 05_nuclear 2 262 2030 1.0 0.0 -it 06_coal 2 262 2030 0.0 0.0 -it 07_gas 2 262 2030 0.0 0.0 -it 08_non-res 2 262 2030 0.0 0.0 -it 09_hydro_pump 2 262 2030 0.0 0.0 -it 01_solar 2 263 2030 1.0 0.0 -it 02_wind_on 2 263 2030 1.0 0.0 -it 03_wind_off 2 263 2030 1.0 0.0 -it 04_res 2 263 2030 1.0 0.0 -it 05_nuclear 2 263 2030 1.0 0.0 -it 06_coal 2 263 2030 0.0 0.0 -it 07_gas 2 263 2030 0.0 0.0 -it 08_non-res 2 263 2030 0.0 0.0 -it 09_hydro_pump 2 263 2030 0.0 0.0 -it 01_solar 2 264 2030 1.0 0.0 -it 02_wind_on 2 264 2030 1.0 0.0 -it 03_wind_off 2 264 2030 1.0 0.0 -it 04_res 2 264 2030 1.0 0.0 -it 05_nuclear 2 264 2030 1.0 0.0 -it 06_coal 2 264 2030 0.0 0.0 -it 07_gas 2 264 2030 0.0 0.0 -it 08_non-res 2 264 2030 0.0 0.0 -it 09_hydro_pump 2 264 2030 0.0 0.0 -it 01_solar 2 265 2030 1.0 0.0 -it 02_wind_on 2 265 2030 1.0 0.0 -it 03_wind_off 2 265 2030 1.0 0.0 -it 04_res 2 265 2030 1.0 0.0 -it 05_nuclear 2 265 2030 1.0 0.0 -it 06_coal 2 265 2030 0.0 0.0 -it 07_gas 2 265 2030 0.0 0.0 -it 08_non-res 2 265 2030 0.0 0.0 -it 09_hydro_pump 2 265 2030 0.0 0.0 -it 01_solar 2 266 2030 1.0 0.0 -it 02_wind_on 2 266 2030 1.0 0.0 -it 03_wind_off 2 266 2030 1.0 0.0 -it 04_res 2 266 2030 1.0 0.0 -it 05_nuclear 2 266 2030 1.0 0.0 -it 06_coal 2 266 2030 0.0 0.0 -it 07_gas 2 266 2030 0.0 0.0 -it 08_non-res 2 266 2030 0.0 0.0 -it 09_hydro_pump 2 266 2030 0.0 0.0 -it 01_solar 2 267 2030 1.0 0.0 -it 02_wind_on 2 267 2030 1.0 0.0 -it 03_wind_off 2 267 2030 1.0 0.0 -it 04_res 2 267 2030 1.0 0.0 -it 05_nuclear 2 267 2030 1.0 0.0 -it 06_coal 2 267 2030 0.0 0.0 -it 07_gas 2 267 2030 0.0 0.0 -it 08_non-res 2 267 2030 0.0 0.0 -it 09_hydro_pump 2 267 2030 0.0 0.0 -it 01_solar 2 268 2030 1.0 0.0 -it 02_wind_on 2 268 2030 1.0 0.0 -it 03_wind_off 2 268 2030 1.0 0.0 -it 04_res 2 268 2030 1.0 0.0 -it 05_nuclear 2 268 2030 1.0 0.0 -it 06_coal 2 268 2030 0.0 0.0 -it 07_gas 2 268 2030 0.0 0.0 -it 08_non-res 2 268 2030 0.0 0.0 -it 09_hydro_pump 2 268 2030 0.0 0.0 -it 01_solar 2 269 2030 1.0 0.0 -it 02_wind_on 2 269 2030 1.0 0.0 -it 03_wind_off 2 269 2030 1.0 0.0 -it 04_res 2 269 2030 1.0 0.0 -it 05_nuclear 2 269 2030 1.0 0.0 -it 06_coal 2 269 2030 0.0 0.0 -it 07_gas 2 269 2030 0.0 0.0 -it 08_non-res 2 269 2030 0.0 0.0 -it 09_hydro_pump 2 269 2030 0.0 0.0 -it 01_solar 2 270 2030 1.0 0.0 -it 02_wind_on 2 270 2030 1.0 0.0 -it 03_wind_off 2 270 2030 1.0 0.0 -it 04_res 2 270 2030 1.0 0.0 -it 05_nuclear 2 270 2030 1.0 0.0 -it 06_coal 2 270 2030 1.0 0.0 -it 07_gas 2 270 2030 0.0 0.0 -it 08_non-res 2 270 2030 0.0 0.0 -it 09_hydro_pump 2 270 2030 0.0 0.0 -it 01_solar 2 271 2030 1.0 0.0 -it 02_wind_on 2 271 2030 1.0 0.0 -it 03_wind_off 2 271 2030 1.0 0.0 -it 04_res 2 271 2030 1.0 0.0 -it 05_nuclear 2 271 2030 1.0 0.0 -it 06_coal 2 271 2030 1.0 0.0 -it 07_gas 2 271 2030 0.0 0.0 -it 08_non-res 2 271 2030 0.0 0.0 -it 09_hydro_pump 2 271 2030 0.0 0.0 -it 01_solar 2 272 2030 1.0 0.0 -it 02_wind_on 2 272 2030 1.0 0.0 -it 03_wind_off 2 272 2030 1.0 0.0 -it 04_res 2 272 2030 1.0 0.0 -it 05_nuclear 2 272 2030 1.0 0.0 -it 06_coal 2 272 2030 1.0 0.0 -it 07_gas 2 272 2030 0.0 0.0 -it 08_non-res 2 272 2030 0.0 0.0 -it 09_hydro_pump 2 272 2030 0.0 0.0 -it 01_solar 2 273 2030 1.0 0.0 -it 02_wind_on 2 273 2030 1.0 0.0 -it 03_wind_off 2 273 2030 1.0 0.0 -it 04_res 2 273 2030 1.0 0.0 -it 05_nuclear 2 273 2030 1.0 0.0 -it 06_coal 2 273 2030 1.0 0.0 -it 07_gas 2 273 2030 0.0 0.0 -it 08_non-res 2 273 2030 0.0 0.0 -it 09_hydro_pump 2 273 2030 0.0 0.0 -it 01_solar 2 274 2030 1.0 0.0 -it 02_wind_on 2 274 2030 1.0 0.0 -it 03_wind_off 2 274 2030 1.0 0.0 -it 04_res 2 274 2030 1.0 0.0 -it 05_nuclear 2 274 2030 1.0 0.0 -it 06_coal 2 274 2030 1.0 0.0 -it 07_gas 2 274 2030 0.0 0.0 -it 08_non-res 2 274 2030 0.0 0.0 -it 09_hydro_pump 2 274 2030 0.0 0.0 -it 01_solar 2 275 2030 1.0 0.0 -it 02_wind_on 2 275 2030 1.0 0.0 -it 03_wind_off 2 275 2030 1.0 0.0 -it 04_res 2 275 2030 1.0 0.0 -it 05_nuclear 2 275 2030 1.0 0.0 -it 06_coal 2 275 2030 1.0 0.0 -it 07_gas 2 275 2030 0.0 0.0 -it 08_non-res 2 275 2030 0.0 0.0 -it 09_hydro_pump 2 275 2030 0.0 0.0 -it 01_solar 2 276 2030 1.0 0.0 -it 02_wind_on 2 276 2030 1.0 0.0 -it 03_wind_off 2 276 2030 1.0 0.0 -it 04_res 2 276 2030 1.0 0.0 -it 05_nuclear 2 276 2030 1.0 0.0 -it 06_coal 2 276 2030 1.0 0.0 -it 07_gas 2 276 2030 0.0 0.0 -it 08_non-res 2 276 2030 0.0 0.0 -it 09_hydro_pump 2 276 2030 0.0 0.0 -it 01_solar 2 277 2030 1.0 0.0 -it 02_wind_on 2 277 2030 1.0 0.0 -it 03_wind_off 2 277 2030 1.0 0.0 -it 04_res 2 277 2030 1.0 0.0 -it 05_nuclear 2 277 2030 1.0 0.0 -it 06_coal 2 277 2030 1.0 0.0 -it 07_gas 2 277 2030 0.0 0.0 -it 08_non-res 2 277 2030 0.0 0.0 -it 09_hydro_pump 2 277 2030 0.0 0.0 -it 01_solar 2 278 2030 1.0 0.0 -it 02_wind_on 2 278 2030 1.0 0.0 -it 03_wind_off 2 278 2030 1.0 0.0 -it 04_res 2 278 2030 1.0 0.0 -it 05_nuclear 2 278 2030 1.0 0.0 -it 06_coal 2 278 2030 1.0 0.0 -it 07_gas 2 278 2030 0.0 0.0 -it 08_non-res 2 278 2030 0.0 0.0 -it 09_hydro_pump 2 278 2030 0.0 0.0 -it 01_solar 2 279 2030 1.0 0.0 -it 02_wind_on 2 279 2030 1.0 0.0 -it 03_wind_off 2 279 2030 1.0 0.0 -it 04_res 2 279 2030 1.0 0.0 -it 05_nuclear 2 279 2030 1.0 0.0 -it 06_coal 2 279 2030 1.0 0.0 -it 07_gas 2 279 2030 0.0 0.0 -it 08_non-res 2 279 2030 0.0 0.0 -it 09_hydro_pump 2 279 2030 0.0 0.0 -it 01_solar 2 280 2030 1.0 0.0 -it 02_wind_on 2 280 2030 1.0 0.0 -it 03_wind_off 2 280 2030 1.0 0.0 -it 04_res 2 280 2030 1.0 0.0 -it 05_nuclear 2 280 2030 1.0 0.0 -it 06_coal 2 280 2030 1.0 0.0 -it 07_gas 2 280 2030 0.0 0.0 -it 08_non-res 2 280 2030 0.0 0.0 -it 09_hydro_pump 2 280 2030 0.0 0.0 -it 01_solar 2 281 2030 1.0 0.0 -it 02_wind_on 2 281 2030 1.0 0.0 -it 03_wind_off 2 281 2030 1.0 0.0 -it 04_res 2 281 2030 1.0 0.0 -it 05_nuclear 2 281 2030 1.0 0.0 -it 06_coal 2 281 2030 1.0 0.0 -it 07_gas 2 281 2030 0.0 0.0 -it 08_non-res 2 281 2030 0.0 0.0 -it 09_hydro_pump 2 281 2030 0.0 0.0 -it 01_solar 2 282 2030 1.0 0.0 -it 02_wind_on 2 282 2030 1.0 0.0 -it 03_wind_off 2 282 2030 1.0 0.0 -it 04_res 2 282 2030 1.0 0.0 -it 05_nuclear 2 282 2030 1.0 0.0 -it 06_coal 2 282 2030 1.0 0.0 -it 07_gas 2 282 2030 0.0 0.0 -it 08_non-res 2 282 2030 0.0 0.0 -it 09_hydro_pump 2 282 2030 0.0 0.0 -it 01_solar 2 283 2030 1.0 0.0 -it 02_wind_on 2 283 2030 1.0 0.0 -it 03_wind_off 2 283 2030 1.0 0.0 -it 04_res 2 283 2030 1.0 0.0 -it 05_nuclear 2 283 2030 1.0 0.0 -it 06_coal 2 283 2030 1.0 0.0 -it 07_gas 2 283 2030 0.0 0.0 -it 08_non-res 2 283 2030 0.0 0.0 -it 09_hydro_pump 2 283 2030 0.0 0.0 -it 01_solar 2 284 2030 1.0 0.0 -it 02_wind_on 2 284 2030 1.0 0.0 -it 03_wind_off 2 284 2030 1.0 0.0 -it 04_res 2 284 2030 1.0 0.0 -it 05_nuclear 2 284 2030 1.0 0.0 -it 06_coal 2 284 2030 1.0 0.0 -it 07_gas 2 284 2030 0.0 0.0 -it 08_non-res 2 284 2030 0.0 0.0 -it 09_hydro_pump 2 284 2030 0.0 0.0 -it 01_solar 2 285 2030 1.0 0.0 -it 02_wind_on 2 285 2030 1.0 0.0 -it 03_wind_off 2 285 2030 1.0 0.0 -it 04_res 2 285 2030 1.0 0.0 -it 05_nuclear 2 285 2030 1.0 0.0 -it 06_coal 2 285 2030 1.0 0.0 -it 07_gas 2 285 2030 0.0 0.0 -it 08_non-res 2 285 2030 0.0 0.0 -it 09_hydro_pump 2 285 2030 0.0 0.0 -it 01_solar 2 286 2030 1.0 0.0 -it 02_wind_on 2 286 2030 1.0 0.0 -it 03_wind_off 2 286 2030 1.0 0.0 -it 04_res 2 286 2030 1.0 0.0 -it 05_nuclear 2 286 2030 1.0 0.0 -it 06_coal 2 286 2030 1.0 0.0 -it 07_gas 2 286 2030 0.0 0.0 -it 08_non-res 2 286 2030 0.0 0.0 -it 09_hydro_pump 2 286 2030 0.0 0.0 -it 01_solar 2 287 2030 1.0 0.0 -it 02_wind_on 2 287 2030 1.0 0.0 -it 03_wind_off 2 287 2030 1.0 0.0 -it 04_res 2 287 2030 1.0 0.0 -it 05_nuclear 2 287 2030 1.0 0.0 -it 06_coal 2 287 2030 1.0 0.0 -it 07_gas 2 287 2030 0.0 0.0 -it 08_non-res 2 287 2030 0.0 0.0 -it 09_hydro_pump 2 287 2030 0.0 0.0 -it 01_solar 2 288 2030 1.0 0.0 -it 02_wind_on 2 288 2030 1.0 0.0 -it 03_wind_off 2 288 2030 1.0 0.0 -it 04_res 2 288 2030 1.0 0.0 -it 05_nuclear 2 288 2030 1.0 0.0 -it 06_coal 2 288 2030 1.0 0.0 -it 07_gas 2 288 2030 0.0 0.0 -it 08_non-res 2 288 2030 0.0 0.0 -it 09_hydro_pump 2 288 2030 0.0 0.0 -it 01_solar 2 289 2030 1.0 0.0 -it 02_wind_on 2 289 2030 1.0 0.0 -it 03_wind_off 2 289 2030 1.0 0.0 -it 04_res 2 289 2030 1.0 0.0 -it 05_nuclear 2 289 2030 1.0 0.0 -it 06_coal 2 289 2030 1.0 0.0 -it 07_gas 2 289 2030 0.0 0.0 -it 08_non-res 2 289 2030 0.0 0.0 -it 09_hydro_pump 2 289 2030 0.0 0.0 -it 01_solar 2 290 2030 1.0 0.0 -it 02_wind_on 2 290 2030 1.0 0.0 -it 03_wind_off 2 290 2030 1.0 0.0 -it 04_res 2 290 2030 1.0 0.0 -it 05_nuclear 2 290 2030 1.0 0.0 -it 06_coal 2 290 2030 1.0 0.0 -it 07_gas 2 290 2030 1.0 0.0 -it 08_non-res 2 290 2030 0.0 0.0 -it 09_hydro_pump 2 290 2030 0.0 0.0 -it 01_solar 2 291 2030 1.0 0.0 -it 02_wind_on 2 291 2030 1.0 0.0 -it 03_wind_off 2 291 2030 1.0 0.0 -it 04_res 2 291 2030 1.0 0.0 -it 05_nuclear 2 291 2030 1.0 0.0 -it 06_coal 2 291 2030 1.0 0.0 -it 07_gas 2 291 2030 1.0 0.0 -it 08_non-res 2 291 2030 0.0 0.0 -it 09_hydro_pump 2 291 2030 0.0 0.0 -it 01_solar 2 292 2030 1.0 0.0 -it 02_wind_on 2 292 2030 1.0 0.0 -it 03_wind_off 2 292 2030 1.0 0.0 -it 04_res 2 292 2030 1.0 0.0 -it 05_nuclear 2 292 2030 1.0 0.0 -it 06_coal 2 292 2030 1.0 0.0 -it 07_gas 2 292 2030 1.0 0.0 -it 08_non-res 2 292 2030 0.0 0.0 -it 09_hydro_pump 2 292 2030 0.0 0.0 -it 01_solar 2 293 2030 1.0 0.0 -it 02_wind_on 2 293 2030 1.0 0.0 -it 03_wind_off 2 293 2030 1.0 0.0 -it 04_res 2 293 2030 1.0 0.0 -it 05_nuclear 2 293 2030 1.0 0.0 -it 06_coal 2 293 2030 1.0 0.0 -it 07_gas 2 293 2030 1.0 0.0 -it 08_non-res 2 293 2030 0.0 0.0 -it 09_hydro_pump 2 293 2030 0.0 0.0 -it 01_solar 2 294 2030 1.0 0.0 -it 02_wind_on 2 294 2030 1.0 0.0 -it 03_wind_off 2 294 2030 1.0 0.0 -it 04_res 2 294 2030 1.0 0.0 -it 05_nuclear 2 294 2030 1.0 0.0 -it 06_coal 2 294 2030 1.0 0.0 -it 07_gas 2 294 2030 1.0 0.0 -it 08_non-res 2 294 2030 0.0 0.0 -it 09_hydro_pump 2 294 2030 0.0 0.0 -it 01_solar 2 295 2030 1.0 0.0 -it 02_wind_on 2 295 2030 1.0 0.0 -it 03_wind_off 2 295 2030 1.0 0.0 -it 04_res 2 295 2030 1.0 0.0 -it 05_nuclear 2 295 2030 1.0 0.0 -it 06_coal 2 295 2030 1.0 0.0 -it 07_gas 2 295 2030 1.0 0.0 -it 08_non-res 2 295 2030 0.0 0.0 -it 09_hydro_pump 2 295 2030 0.0 0.0 -it 01_solar 2 296 2030 1.0 0.0 -it 02_wind_on 2 296 2030 1.0 0.0 -it 03_wind_off 2 296 2030 1.0 0.0 -it 04_res 2 296 2030 1.0 0.0 -it 05_nuclear 2 296 2030 1.0 0.0 -it 06_coal 2 296 2030 1.0 0.0 -it 07_gas 2 296 2030 1.0 0.0 -it 08_non-res 2 296 2030 0.0 0.0 -it 09_hydro_pump 2 296 2030 0.0 0.0 -it 01_solar 2 297 2030 1.0 0.0 -it 02_wind_on 2 297 2030 1.0 0.0 -it 03_wind_off 2 297 2030 1.0 0.0 -it 04_res 2 297 2030 1.0 0.0 -it 05_nuclear 2 297 2030 1.0 0.0 -it 06_coal 2 297 2030 1.0 0.0 -it 07_gas 2 297 2030 1.0 0.0 -it 08_non-res 2 297 2030 0.0 0.0 -it 09_hydro_pump 2 297 2030 0.0 0.0 -it 01_solar 2 298 2030 1.0 0.0 -it 02_wind_on 2 298 2030 1.0 0.0 -it 03_wind_off 2 298 2030 1.0 0.0 -it 04_res 2 298 2030 1.0 0.0 -it 05_nuclear 2 298 2030 1.0 0.0 -it 06_coal 2 298 2030 1.0 0.0 -it 07_gas 2 298 2030 1.0 0.0 -it 08_non-res 2 298 2030 0.0 0.0 -it 09_hydro_pump 2 298 2030 0.0 0.0 -it 01_solar 2 299 2030 1.0 0.0 -it 02_wind_on 2 299 2030 1.0 0.0 -it 03_wind_off 2 299 2030 1.0 0.0 -it 04_res 2 299 2030 1.0 0.0 -it 05_nuclear 2 299 2030 1.0 0.0 -it 06_coal 2 299 2030 1.0 0.0 -it 07_gas 2 299 2030 1.0 0.0 -it 08_non-res 2 299 2030 0.0 0.0 -it 09_hydro_pump 2 299 2030 0.0 0.0 -it 01_solar 2 300 2030 1.0 0.0 -it 02_wind_on 2 300 2030 1.0 0.0 -it 03_wind_off 2 300 2030 1.0 0.0 -it 04_res 2 300 2030 1.0 0.0 -it 05_nuclear 2 300 2030 1.0 0.0 -it 06_coal 2 300 2030 1.0 0.0 -it 07_gas 2 300 2030 1.0 0.0 -it 08_non-res 2 300 2030 0.0 0.0 -it 09_hydro_pump 2 300 2030 0.0 0.0 -it 01_solar 2 301 2030 1.0 0.0 -it 02_wind_on 2 301 2030 1.0 0.0 -it 03_wind_off 2 301 2030 1.0 0.0 -it 04_res 2 301 2030 1.0 0.0 -it 05_nuclear 2 301 2030 1.0 0.0 -it 06_coal 2 301 2030 1.0 0.0 -it 07_gas 2 301 2030 1.0 0.0 -it 08_non-res 2 301 2030 0.0 0.0 -it 09_hydro_pump 2 301 2030 0.0 0.0 -it 01_solar 2 302 2030 1.0 0.0 -it 02_wind_on 2 302 2030 1.0 0.0 -it 03_wind_off 2 302 2030 1.0 0.0 -it 04_res 2 302 2030 1.0 0.0 -it 05_nuclear 2 302 2030 1.0 0.0 -it 06_coal 2 302 2030 1.0 0.0 -it 07_gas 2 302 2030 1.0 0.0 -it 08_non-res 2 302 2030 0.0 0.0 -it 09_hydro_pump 2 302 2030 0.0 0.0 -it 01_solar 2 303 2030 1.0 0.0 -it 02_wind_on 2 303 2030 1.0 0.0 -it 03_wind_off 2 303 2030 1.0 0.0 -it 04_res 2 303 2030 1.0 0.0 -it 05_nuclear 2 303 2030 1.0 0.0 -it 06_coal 2 303 2030 1.0 0.0 -it 07_gas 2 303 2030 1.0 0.0 -it 08_non-res 2 303 2030 0.0 0.0 -it 09_hydro_pump 2 303 2030 0.0 0.0 -it 01_solar 2 304 2030 1.0 0.0 -it 02_wind_on 2 304 2030 1.0 0.0 -it 03_wind_off 2 304 2030 1.0 0.0 -it 04_res 2 304 2030 1.0 0.0 -it 05_nuclear 2 304 2030 1.0 0.0 -it 06_coal 2 304 2030 1.0 0.0 -it 07_gas 2 304 2030 1.0 0.0 -it 08_non-res 2 304 2030 0.0 0.0 -it 09_hydro_pump 2 304 2030 0.0 0.0 -it 01_solar 2 305 2030 1.0 0.0 -it 02_wind_on 2 305 2030 1.0 0.0 -it 03_wind_off 2 305 2030 1.0 0.0 -it 04_res 2 305 2030 1.0 0.0 -it 05_nuclear 2 305 2030 1.0 0.0 -it 06_coal 2 305 2030 1.0 0.0 -it 07_gas 2 305 2030 1.0 0.0 -it 08_non-res 2 305 2030 0.0 0.0 -it 09_hydro_pump 2 305 2030 0.0 0.0 -it 01_solar 2 306 2030 1.0 0.0 -it 02_wind_on 2 306 2030 1.0 0.0 -it 03_wind_off 2 306 2030 1.0 0.0 -it 04_res 2 306 2030 1.0 0.0 -it 05_nuclear 2 306 2030 1.0 0.0 -it 06_coal 2 306 2030 1.0 0.0 -it 07_gas 2 306 2030 1.0 0.0 -it 08_non-res 2 306 2030 0.0 0.0 -it 09_hydro_pump 2 306 2030 0.0 0.0 -it 01_solar 2 307 2030 1.0 0.0 -it 02_wind_on 2 307 2030 1.0 0.0 -it 03_wind_off 2 307 2030 1.0 0.0 -it 04_res 2 307 2030 1.0 0.0 -it 05_nuclear 2 307 2030 1.0 0.0 -it 06_coal 2 307 2030 1.0 0.0 -it 07_gas 2 307 2030 1.0 0.0 -it 08_non-res 2 307 2030 0.0 0.0 -it 09_hydro_pump 2 307 2030 0.0 0.0 -it 01_solar 2 308 2030 1.0 0.0 -it 02_wind_on 2 308 2030 1.0 0.0 -it 03_wind_off 2 308 2030 1.0 0.0 -it 04_res 2 308 2030 1.0 0.0 -it 05_nuclear 2 308 2030 1.0 0.0 -it 06_coal 2 308 2030 1.0 0.0 -it 07_gas 2 308 2030 1.0 0.0 -it 08_non-res 2 308 2030 0.0 0.0 -it 09_hydro_pump 2 308 2030 0.0 0.0 -it 01_solar 2 309 2030 1.0 0.0 -it 02_wind_on 2 309 2030 1.0 0.0 -it 03_wind_off 2 309 2030 1.0 0.0 -it 04_res 2 309 2030 1.0 0.0 -it 05_nuclear 2 309 2030 1.0 0.0 -it 06_coal 2 309 2030 1.0 0.0 -it 07_gas 2 309 2030 1.0 0.0 -it 08_non-res 2 309 2030 0.0 0.0 -it 09_hydro_pump 2 309 2030 0.0 0.0 -it 01_solar 2 310 2030 1.0 0.0 -it 02_wind_on 2 310 2030 1.0 0.0 -it 03_wind_off 2 310 2030 1.0 0.0 -it 04_res 2 310 2030 1.0 0.0 -it 05_nuclear 2 310 2030 1.0 0.0 -it 06_coal 2 310 2030 1.0 0.0 -it 07_gas 2 310 2030 1.0 0.0 -it 08_non-res 2 310 2030 1.0 0.0 -it 09_hydro_pump 2 310 2030 0.0 0.0 -it 01_solar 2 311 2030 1.0 0.0 -it 02_wind_on 2 311 2030 1.0 0.0 -it 03_wind_off 2 311 2030 1.0 0.0 -it 04_res 2 311 2030 1.0 0.0 -it 05_nuclear 2 311 2030 1.0 0.0 -it 06_coal 2 311 2030 1.0 0.0 -it 07_gas 2 311 2030 1.0 0.0 -it 08_non-res 2 311 2030 1.0 0.0 -it 09_hydro_pump 2 311 2030 0.0 0.0 -it 01_solar 2 312 2030 1.0 0.0 -it 02_wind_on 2 312 2030 1.0 0.0 -it 03_wind_off 2 312 2030 1.0 0.0 -it 04_res 2 312 2030 1.0 0.0 -it 05_nuclear 2 312 2030 1.0 0.0 -it 06_coal 2 312 2030 1.0 0.0 -it 07_gas 2 312 2030 1.0 0.0 -it 08_non-res 2 312 2030 1.0 0.0 -it 09_hydro_pump 2 312 2030 0.0 0.0 -it 01_solar 2 313 2030 1.0 0.0 -it 02_wind_on 2 313 2030 1.0 0.0 -it 03_wind_off 2 313 2030 1.0 0.0 -it 04_res 2 313 2030 1.0 0.0 -it 05_nuclear 2 313 2030 1.0 0.0 -it 06_coal 2 313 2030 1.0 0.0 -it 07_gas 2 313 2030 1.0 0.0 -it 08_non-res 2 313 2030 1.0 0.0 -it 09_hydro_pump 2 313 2030 0.0 0.0 -it 01_solar 2 314 2030 1.0 0.0 -it 02_wind_on 2 314 2030 1.0 0.0 -it 03_wind_off 2 314 2030 1.0 0.0 -it 04_res 2 314 2030 1.0 0.0 -it 05_nuclear 2 314 2030 1.0 0.0 -it 06_coal 2 314 2030 1.0 0.0 -it 07_gas 2 314 2030 1.0 0.0 -it 08_non-res 2 314 2030 1.0 0.0 -it 09_hydro_pump 2 314 2030 0.0 0.0 -it 01_solar 2 315 2030 1.0 0.0 -it 02_wind_on 2 315 2030 1.0 0.0 -it 03_wind_off 2 315 2030 1.0 0.0 -it 04_res 2 315 2030 1.0 0.0 -it 05_nuclear 2 315 2030 1.0 0.0 -it 06_coal 2 315 2030 1.0 0.0 -it 07_gas 2 315 2030 1.0 0.0 -it 08_non-res 2 315 2030 1.0 0.0 -it 09_hydro_pump 2 315 2030 0.0 0.0 -it 01_solar 2 316 2030 1.0 0.0 -it 02_wind_on 2 316 2030 1.0 0.0 -it 03_wind_off 2 316 2030 1.0 0.0 -it 04_res 2 316 2030 1.0 0.0 -it 05_nuclear 2 316 2030 1.0 0.0 -it 06_coal 2 316 2030 1.0 0.0 -it 07_gas 2 316 2030 1.0 0.0 -it 08_non-res 2 316 2030 1.0 0.0 -it 09_hydro_pump 2 316 2030 0.0 0.0 -it 01_solar 2 317 2030 1.0 0.0 -it 02_wind_on 2 317 2030 1.0 0.0 -it 03_wind_off 2 317 2030 1.0 0.0 -it 04_res 2 317 2030 1.0 0.0 -it 05_nuclear 2 317 2030 1.0 0.0 -it 06_coal 2 317 2030 1.0 0.0 -it 07_gas 2 317 2030 1.0 0.0 -it 08_non-res 2 317 2030 1.0 0.0 -it 09_hydro_pump 2 317 2030 0.0 0.0 -it 01_solar 2 318 2030 1.0 0.0 -it 02_wind_on 2 318 2030 1.0 0.0 -it 03_wind_off 2 318 2030 1.0 0.0 -it 04_res 2 318 2030 1.0 0.0 -it 05_nuclear 2 318 2030 1.0 0.0 -it 06_coal 2 318 2030 1.0 0.0 -it 07_gas 2 318 2030 1.0 0.0 -it 08_non-res 2 318 2030 1.0 0.0 -it 09_hydro_pump 2 318 2030 0.0 0.0 -it 01_solar 2 319 2030 1.0 0.0 -it 02_wind_on 2 319 2030 1.0 0.0 -it 03_wind_off 2 319 2030 1.0 0.0 -it 04_res 2 319 2030 1.0 0.0 -it 05_nuclear 2 319 2030 1.0 0.0 -it 06_coal 2 319 2030 1.0 0.0 -it 07_gas 2 319 2030 1.0 0.0 -it 08_non-res 2 319 2030 1.0 0.0 -it 09_hydro_pump 2 319 2030 0.0 0.0 -it 01_solar 2 320 2030 1.0 0.0 -it 02_wind_on 2 320 2030 1.0 0.0 -it 03_wind_off 2 320 2030 1.0 0.0 -it 04_res 2 320 2030 1.0 0.0 -it 05_nuclear 2 320 2030 1.0 0.0 -it 06_coal 2 320 2030 1.0 0.0 -it 07_gas 2 320 2030 1.0 0.0 -it 08_non-res 2 320 2030 1.0 0.0 -it 09_hydro_pump 2 320 2030 0.0 0.0 -it 01_solar 2 321 2030 1.0 0.0 -it 02_wind_on 2 321 2030 1.0 0.0 -it 03_wind_off 2 321 2030 1.0 0.0 -it 04_res 2 321 2030 1.0 0.0 -it 05_nuclear 2 321 2030 1.0 0.0 -it 06_coal 2 321 2030 1.0 0.0 -it 07_gas 2 321 2030 1.0 0.0 -it 08_non-res 2 321 2030 1.0 0.0 -it 09_hydro_pump 2 321 2030 0.0 0.0 -it 01_solar 2 322 2030 1.0 0.0 -it 02_wind_on 2 322 2030 1.0 0.0 -it 03_wind_off 2 322 2030 1.0 0.0 -it 04_res 2 322 2030 1.0 0.0 -it 05_nuclear 2 322 2030 1.0 0.0 -it 06_coal 2 322 2030 1.0 0.0 -it 07_gas 2 322 2030 1.0 0.0 -it 08_non-res 2 322 2030 1.0 0.0 -it 09_hydro_pump 2 322 2030 0.0 0.0 -it 01_solar 2 323 2030 1.0 0.0 -it 02_wind_on 2 323 2030 1.0 0.0 -it 03_wind_off 2 323 2030 1.0 0.0 -it 04_res 2 323 2030 1.0 0.0 -it 05_nuclear 2 323 2030 1.0 0.0 -it 06_coal 2 323 2030 1.0 0.0 -it 07_gas 2 323 2030 1.0 0.0 -it 08_non-res 2 323 2030 1.0 0.0 -it 09_hydro_pump 2 323 2030 0.0 0.0 -it 01_solar 2 324 2030 1.0 0.0 -it 02_wind_on 2 324 2030 1.0 0.0 -it 03_wind_off 2 324 2030 1.0 0.0 -it 04_res 2 324 2030 1.0 0.0 -it 05_nuclear 2 324 2030 1.0 0.0 -it 06_coal 2 324 2030 1.0 0.0 -it 07_gas 2 324 2030 1.0 0.0 -it 08_non-res 2 324 2030 1.0 0.0 -it 09_hydro_pump 2 324 2030 0.0 0.0 -it 01_solar 2 325 2030 1.0 0.0 -it 02_wind_on 2 325 2030 1.0 0.0 -it 03_wind_off 2 325 2030 1.0 0.0 -it 04_res 2 325 2030 1.0 0.0 -it 05_nuclear 2 325 2030 1.0 0.0 -it 06_coal 2 325 2030 1.0 0.0 -it 07_gas 2 325 2030 1.0 0.0 -it 08_non-res 2 325 2030 1.0 0.0 -it 09_hydro_pump 2 325 2030 0.0 0.0 -it 01_solar 2 326 2030 1.0 0.0 -it 02_wind_on 2 326 2030 1.0 0.0 -it 03_wind_off 2 326 2030 1.0 0.0 -it 04_res 2 326 2030 1.0 0.0 -it 05_nuclear 2 326 2030 1.0 0.0 -it 06_coal 2 326 2030 1.0 0.0 -it 07_gas 2 326 2030 1.0 0.0 -it 08_non-res 2 326 2030 1.0 0.0 -it 09_hydro_pump 2 326 2030 0.0 0.0 -it 01_solar 2 327 2030 1.0 0.0 -it 02_wind_on 2 327 2030 1.0 0.0 -it 03_wind_off 2 327 2030 1.0 0.0 -it 04_res 2 327 2030 1.0 0.0 -it 05_nuclear 2 327 2030 1.0 0.0 -it 06_coal 2 327 2030 1.0 0.0 -it 07_gas 2 327 2030 1.0 0.0 -it 08_non-res 2 327 2030 1.0 0.0 -it 09_hydro_pump 2 327 2030 0.0 0.0 -it 01_solar 2 328 2030 1.0 0.0 -it 02_wind_on 2 328 2030 1.0 0.0 -it 03_wind_off 2 328 2030 1.0 0.0 -it 04_res 2 328 2030 1.0 0.0 -it 05_nuclear 2 328 2030 1.0 0.0 -it 06_coal 2 328 2030 1.0 0.0 -it 07_gas 2 328 2030 1.0 0.0 -it 08_non-res 2 328 2030 1.0 0.0 -it 09_hydro_pump 2 328 2030 0.0 0.0 -it 01_solar 2 329 2030 1.0 0.0 -it 02_wind_on 2 329 2030 1.0 0.0 -it 03_wind_off 2 329 2030 1.0 0.0 -it 04_res 2 329 2030 1.0 0.0 -it 05_nuclear 2 329 2030 1.0 0.0 -it 06_coal 2 329 2030 1.0 0.0 -it 07_gas 2 329 2030 1.0 0.0 -it 08_non-res 2 329 2030 1.0 0.0 -it 09_hydro_pump 2 329 2030 0.0 0.0 -it 01_solar 2 330 2030 1.0 0.0 -it 02_wind_on 2 330 2030 1.0 0.0 -it 03_wind_off 2 330 2030 1.0 0.0 -it 04_res 2 330 2030 1.0 0.0 -it 05_nuclear 2 330 2030 1.0 0.0 -it 06_coal 2 330 2030 1.0 0.0 -it 07_gas 2 330 2030 1.0 0.0 -it 08_non-res 2 330 2030 1.0 0.0 -it 09_hydro_pump 2 330 2030 1.0 0.0 -it 01_solar 2 331 2030 1.0 0.0 -it 02_wind_on 2 331 2030 1.0 0.0 -it 03_wind_off 2 331 2030 1.0 0.0 -it 04_res 2 331 2030 1.0 0.0 -it 05_nuclear 2 331 2030 1.0 0.0 -it 06_coal 2 331 2030 1.0 0.0 -it 07_gas 2 331 2030 1.0 0.0 -it 08_non-res 2 331 2030 1.0 0.0 -it 09_hydro_pump 2 331 2030 1.0 0.0 -it 01_solar 2 332 2030 1.0 0.0 -it 02_wind_on 2 332 2030 1.0 0.0 -it 03_wind_off 2 332 2030 1.0 0.0 -it 04_res 2 332 2030 1.0 0.0 -it 05_nuclear 2 332 2030 1.0 0.0 -it 06_coal 2 332 2030 1.0 0.0 -it 07_gas 2 332 2030 1.0 0.0 -it 08_non-res 2 332 2030 1.0 0.0 -it 09_hydro_pump 2 332 2030 1.0 0.0 -it 01_solar 2 333 2030 1.0 0.0 -it 02_wind_on 2 333 2030 1.0 0.0 -it 03_wind_off 2 333 2030 1.0 0.0 -it 04_res 2 333 2030 1.0 0.0 -it 05_nuclear 2 333 2030 1.0 0.0 -it 06_coal 2 333 2030 1.0 0.0 -it 07_gas 2 333 2030 1.0 0.0 -it 08_non-res 2 333 2030 1.0 0.0 -it 09_hydro_pump 2 333 2030 1.0 0.0 -it 01_solar 2 334 2030 1.0 0.0 -it 02_wind_on 2 334 2030 1.0 0.0 -it 03_wind_off 2 334 2030 1.0 0.0 -it 04_res 2 334 2030 1.0 0.0 -it 05_nuclear 2 334 2030 1.0 0.0 -it 06_coal 2 334 2030 1.0 0.0 -it 07_gas 2 334 2030 1.0 0.0 -it 08_non-res 2 334 2030 1.0 0.0 -it 09_hydro_pump 2 334 2030 1.0 0.0 -it 01_solar 2 335 2030 1.0 0.0 -it 02_wind_on 2 335 2030 1.0 0.0 -it 03_wind_off 2 335 2030 1.0 0.0 -it 04_res 2 335 2030 1.0 0.0 -it 05_nuclear 2 335 2030 1.0 0.0 -it 06_coal 2 335 2030 1.0 0.0 -it 07_gas 2 335 2030 1.0 0.0 -it 08_non-res 2 335 2030 1.0 0.0 -it 09_hydro_pump 2 335 2030 1.0 0.0 -it 01_solar 2 336 2030 1.0 0.0 -it 02_wind_on 2 336 2030 1.0 0.0 -it 03_wind_off 2 336 2030 1.0 0.0 -it 04_res 2 336 2030 1.0 0.0 -it 05_nuclear 2 336 2030 1.0 0.0 -it 06_coal 2 336 2030 1.0 0.0 -it 07_gas 2 336 2030 1.0 0.0 -it 08_non-res 2 336 2030 1.0 0.0 -it 09_hydro_pump 2 336 2030 1.0 0.0 +area cluster mcYear timeId NODU NP Cost - Euro +de 01_solar 1 1 0.0 0.0 +de 02_wind_on 1 1 0.0 0.0 +de 03_wind_off 1 1 0.0 0.0 +de 04_res 1 1 0.0 0.0 +de 05_nuclear 1 1 0.0 0.0 +de 06_coal 1 1 0.0 0.0 +de 07_gas 1 1 0.0 0.0 +de 08_non-res 1 1 0.0 0.0 +de 09_hydro_pump 1 1 0.0 0.0 +de 01_solar 1 2 1.0 0.0 +de 02_wind_on 1 2 0.0 0.0 +de 03_wind_off 1 2 0.0 0.0 +de 04_res 1 2 0.0 0.0 +de 05_nuclear 1 2 0.0 0.0 +de 06_coal 1 2 0.0 0.0 +de 07_gas 1 2 0.0 0.0 +de 08_non-res 1 2 0.0 0.0 +de 09_hydro_pump 1 2 0.0 0.0 +de 01_solar 1 3 1.0 0.0 +de 02_wind_on 1 3 0.0 0.0 +de 03_wind_off 1 3 0.0 0.0 +de 04_res 1 3 0.0 0.0 +de 05_nuclear 1 3 0.0 0.0 +de 06_coal 1 3 0.0 0.0 +de 07_gas 1 3 0.0 0.0 +de 08_non-res 1 3 0.0 0.0 +de 09_hydro_pump 1 3 0.0 0.0 +de 01_solar 1 4 1.0 0.0 +de 02_wind_on 1 4 0.0 0.0 +de 03_wind_off 1 4 0.0 0.0 +de 04_res 1 4 0.0 0.0 +de 05_nuclear 1 4 0.0 0.0 +de 06_coal 1 4 0.0 0.0 +de 07_gas 1 4 0.0 0.0 +de 08_non-res 1 4 0.0 0.0 +de 09_hydro_pump 1 4 0.0 0.0 +de 01_solar 1 5 1.0 0.0 +de 02_wind_on 1 5 0.0 0.0 +de 03_wind_off 1 5 0.0 0.0 +de 04_res 1 5 0.0 0.0 +de 05_nuclear 1 5 0.0 0.0 +de 06_coal 1 5 0.0 0.0 +de 07_gas 1 5 0.0 0.0 +de 08_non-res 1 5 0.0 0.0 +de 09_hydro_pump 1 5 0.0 0.0 +de 01_solar 1 6 1.0 0.0 +de 02_wind_on 1 6 0.0 0.0 +de 03_wind_off 1 6 0.0 0.0 +de 04_res 1 6 0.0 0.0 +de 05_nuclear 1 6 0.0 0.0 +de 06_coal 1 6 0.0 0.0 +de 07_gas 1 6 0.0 0.0 +de 08_non-res 1 6 0.0 0.0 +de 09_hydro_pump 1 6 0.0 0.0 +de 01_solar 1 7 1.0 0.0 +de 02_wind_on 1 7 0.0 0.0 +de 03_wind_off 1 7 0.0 0.0 +de 04_res 1 7 0.0 0.0 +de 05_nuclear 1 7 0.0 0.0 +de 06_coal 1 7 0.0 0.0 +de 07_gas 1 7 0.0 0.0 +de 08_non-res 1 7 0.0 0.0 +de 09_hydro_pump 1 7 0.0 0.0 +de 01_solar 1 8 1.0 0.0 +de 02_wind_on 1 8 0.0 0.0 +de 03_wind_off 1 8 0.0 0.0 +de 04_res 1 8 0.0 0.0 +de 05_nuclear 1 8 0.0 0.0 +de 06_coal 1 8 0.0 0.0 +de 07_gas 1 8 0.0 0.0 +de 08_non-res 1 8 0.0 0.0 +de 09_hydro_pump 1 8 0.0 0.0 +de 01_solar 1 9 1.0 0.0 +de 02_wind_on 1 9 0.0 0.0 +de 03_wind_off 1 9 0.0 0.0 +de 04_res 1 9 0.0 0.0 +de 05_nuclear 1 9 0.0 0.0 +de 06_coal 1 9 0.0 0.0 +de 07_gas 1 9 0.0 0.0 +de 08_non-res 1 9 0.0 0.0 +de 09_hydro_pump 1 9 0.0 0.0 +de 01_solar 1 10 1.0 0.0 +de 02_wind_on 1 10 0.0 0.0 +de 03_wind_off 1 10 0.0 0.0 +de 04_res 1 10 0.0 0.0 +de 05_nuclear 1 10 0.0 0.0 +de 06_coal 1 10 0.0 0.0 +de 07_gas 1 10 0.0 0.0 +de 08_non-res 1 10 0.0 0.0 +de 09_hydro_pump 1 10 0.0 0.0 +de 01_solar 1 11 1.0 0.0 +de 02_wind_on 1 11 0.0 0.0 +de 03_wind_off 1 11 0.0 0.0 +de 04_res 1 11 0.0 0.0 +de 05_nuclear 1 11 0.0 0.0 +de 06_coal 1 11 0.0 0.0 +de 07_gas 1 11 0.0 0.0 +de 08_non-res 1 11 0.0 0.0 +de 09_hydro_pump 1 11 0.0 0.0 +de 01_solar 1 12 1.0 0.0 +de 02_wind_on 1 12 0.0 0.0 +de 03_wind_off 1 12 0.0 0.0 +de 04_res 1 12 0.0 0.0 +de 05_nuclear 1 12 0.0 0.0 +de 06_coal 1 12 0.0 0.0 +de 07_gas 1 12 0.0 0.0 +de 08_non-res 1 12 0.0 0.0 +de 09_hydro_pump 1 12 0.0 0.0 +de 01_solar 1 13 1.0 0.0 +de 02_wind_on 1 13 0.0 0.0 +de 03_wind_off 1 13 0.0 0.0 +de 04_res 1 13 0.0 0.0 +de 05_nuclear 1 13 0.0 0.0 +de 06_coal 1 13 0.0 0.0 +de 07_gas 1 13 0.0 0.0 +de 08_non-res 1 13 0.0 0.0 +de 09_hydro_pump 1 13 0.0 0.0 +de 01_solar 1 14 1.0 0.0 +de 02_wind_on 1 14 0.0 0.0 +de 03_wind_off 1 14 0.0 0.0 +de 04_res 1 14 0.0 0.0 +de 05_nuclear 1 14 0.0 0.0 +de 06_coal 1 14 0.0 0.0 +de 07_gas 1 14 0.0 0.0 +de 08_non-res 1 14 0.0 0.0 +de 09_hydro_pump 1 14 0.0 0.0 +de 01_solar 1 15 1.0 0.0 +de 02_wind_on 1 15 0.0 0.0 +de 03_wind_off 1 15 0.0 0.0 +de 04_res 1 15 0.0 0.0 +de 05_nuclear 1 15 0.0 0.0 +de 06_coal 1 15 0.0 0.0 +de 07_gas 1 15 0.0 0.0 +de 08_non-res 1 15 0.0 0.0 +de 09_hydro_pump 1 15 0.0 0.0 +de 01_solar 1 16 1.0 0.0 +de 02_wind_on 1 16 0.0 0.0 +de 03_wind_off 1 16 0.0 0.0 +de 04_res 1 16 0.0 0.0 +de 05_nuclear 1 16 0.0 0.0 +de 06_coal 1 16 0.0 0.0 +de 07_gas 1 16 0.0 0.0 +de 08_non-res 1 16 0.0 0.0 +de 09_hydro_pump 1 16 0.0 0.0 +de 01_solar 1 17 1.0 0.0 +de 02_wind_on 1 17 0.0 0.0 +de 03_wind_off 1 17 0.0 0.0 +de 04_res 1 17 0.0 0.0 +de 05_nuclear 1 17 0.0 0.0 +de 06_coal 1 17 0.0 0.0 +de 07_gas 1 17 0.0 0.0 +de 08_non-res 1 17 0.0 0.0 +de 09_hydro_pump 1 17 0.0 0.0 +de 01_solar 1 18 1.0 0.0 +de 02_wind_on 1 18 0.0 0.0 +de 03_wind_off 1 18 0.0 0.0 +de 04_res 1 18 0.0 0.0 +de 05_nuclear 1 18 0.0 0.0 +de 06_coal 1 18 0.0 0.0 +de 07_gas 1 18 0.0 0.0 +de 08_non-res 1 18 0.0 0.0 +de 09_hydro_pump 1 18 0.0 0.0 +de 01_solar 1 19 1.0 0.0 +de 02_wind_on 1 19 0.0 0.0 +de 03_wind_off 1 19 0.0 0.0 +de 04_res 1 19 0.0 0.0 +de 05_nuclear 1 19 0.0 0.0 +de 06_coal 1 19 0.0 0.0 +de 07_gas 1 19 0.0 0.0 +de 08_non-res 1 19 0.0 0.0 +de 09_hydro_pump 1 19 0.0 0.0 +de 01_solar 1 20 1.0 0.0 +de 02_wind_on 1 20 0.0 0.0 +de 03_wind_off 1 20 0.0 0.0 +de 04_res 1 20 0.0 0.0 +de 05_nuclear 1 20 0.0 0.0 +de 06_coal 1 20 0.0 0.0 +de 07_gas 1 20 0.0 0.0 +de 08_non-res 1 20 0.0 0.0 +de 09_hydro_pump 1 20 0.0 0.0 +de 01_solar 1 21 1.0 0.0 +de 02_wind_on 1 21 0.0 0.0 +de 03_wind_off 1 21 0.0 0.0 +de 04_res 1 21 0.0 0.0 +de 05_nuclear 1 21 0.0 0.0 +de 06_coal 1 21 0.0 0.0 +de 07_gas 1 21 0.0 0.0 +de 08_non-res 1 21 0.0 0.0 +de 09_hydro_pump 1 21 0.0 0.0 +de 01_solar 1 22 1.0 0.0 +de 02_wind_on 1 22 1.0 0.0 +de 03_wind_off 1 22 0.0 0.0 +de 04_res 1 22 0.0 0.0 +de 05_nuclear 1 22 0.0 0.0 +de 06_coal 1 22 0.0 0.0 +de 07_gas 1 22 0.0 0.0 +de 08_non-res 1 22 0.0 0.0 +de 09_hydro_pump 1 22 0.0 0.0 +de 01_solar 1 23 1.0 0.0 +de 02_wind_on 1 23 1.0 0.0 +de 03_wind_off 1 23 0.0 0.0 +de 04_res 1 23 0.0 0.0 +de 05_nuclear 1 23 0.0 0.0 +de 06_coal 1 23 0.0 0.0 +de 07_gas 1 23 0.0 0.0 +de 08_non-res 1 23 0.0 0.0 +de 09_hydro_pump 1 23 0.0 0.0 +de 01_solar 1 24 1.0 0.0 +de 02_wind_on 1 24 1.0 0.0 +de 03_wind_off 1 24 0.0 0.0 +de 04_res 1 24 0.0 0.0 +de 05_nuclear 1 24 0.0 0.0 +de 06_coal 1 24 0.0 0.0 +de 07_gas 1 24 0.0 0.0 +de 08_non-res 1 24 0.0 0.0 +de 09_hydro_pump 1 24 0.0 0.0 +de 01_solar 1 25 1.0 0.0 +de 02_wind_on 1 25 1.0 0.0 +de 03_wind_off 1 25 0.0 0.0 +de 04_res 1 25 0.0 0.0 +de 05_nuclear 1 25 0.0 0.0 +de 06_coal 1 25 0.0 0.0 +de 07_gas 1 25 0.0 0.0 +de 08_non-res 1 25 0.0 0.0 +de 09_hydro_pump 1 25 0.0 0.0 +de 01_solar 1 26 1.0 0.0 +de 02_wind_on 1 26 1.0 0.0 +de 03_wind_off 1 26 0.0 0.0 +de 04_res 1 26 0.0 0.0 +de 05_nuclear 1 26 0.0 0.0 +de 06_coal 1 26 0.0 0.0 +de 07_gas 1 26 0.0 0.0 +de 08_non-res 1 26 0.0 0.0 +de 09_hydro_pump 1 26 0.0 0.0 +de 01_solar 1 27 1.0 0.0 +de 02_wind_on 1 27 1.0 0.0 +de 03_wind_off 1 27 0.0 0.0 +de 04_res 1 27 0.0 0.0 +de 05_nuclear 1 27 0.0 0.0 +de 06_coal 1 27 0.0 0.0 +de 07_gas 1 27 0.0 0.0 +de 08_non-res 1 27 0.0 0.0 +de 09_hydro_pump 1 27 0.0 0.0 +de 01_solar 1 28 1.0 0.0 +de 02_wind_on 1 28 1.0 0.0 +de 03_wind_off 1 28 0.0 0.0 +de 04_res 1 28 0.0 0.0 +de 05_nuclear 1 28 0.0 0.0 +de 06_coal 1 28 0.0 0.0 +de 07_gas 1 28 0.0 0.0 +de 08_non-res 1 28 0.0 0.0 +de 09_hydro_pump 1 28 0.0 0.0 +de 01_solar 1 29 1.0 0.0 +de 02_wind_on 1 29 1.0 0.0 +de 03_wind_off 1 29 0.0 0.0 +de 04_res 1 29 0.0 0.0 +de 05_nuclear 1 29 0.0 0.0 +de 06_coal 1 29 0.0 0.0 +de 07_gas 1 29 0.0 0.0 +de 08_non-res 1 29 0.0 0.0 +de 09_hydro_pump 1 29 0.0 0.0 +de 01_solar 1 30 1.0 0.0 +de 02_wind_on 1 30 1.0 0.0 +de 03_wind_off 1 30 0.0 0.0 +de 04_res 1 30 0.0 0.0 +de 05_nuclear 1 30 0.0 0.0 +de 06_coal 1 30 0.0 0.0 +de 07_gas 1 30 0.0 0.0 +de 08_non-res 1 30 0.0 0.0 +de 09_hydro_pump 1 30 0.0 0.0 +de 01_solar 1 31 1.0 0.0 +de 02_wind_on 1 31 1.0 0.0 +de 03_wind_off 1 31 0.0 0.0 +de 04_res 1 31 0.0 0.0 +de 05_nuclear 1 31 0.0 0.0 +de 06_coal 1 31 0.0 0.0 +de 07_gas 1 31 0.0 0.0 +de 08_non-res 1 31 0.0 0.0 +de 09_hydro_pump 1 31 0.0 0.0 +de 01_solar 1 32 1.0 0.0 +de 02_wind_on 1 32 1.0 0.0 +de 03_wind_off 1 32 0.0 0.0 +de 04_res 1 32 0.0 0.0 +de 05_nuclear 1 32 0.0 0.0 +de 06_coal 1 32 0.0 0.0 +de 07_gas 1 32 0.0 0.0 +de 08_non-res 1 32 0.0 0.0 +de 09_hydro_pump 1 32 0.0 0.0 +de 01_solar 1 33 1.0 0.0 +de 02_wind_on 1 33 1.0 0.0 +de 03_wind_off 1 33 0.0 0.0 +de 04_res 1 33 0.0 0.0 +de 05_nuclear 1 33 0.0 0.0 +de 06_coal 1 33 0.0 0.0 +de 07_gas 1 33 0.0 0.0 +de 08_non-res 1 33 0.0 0.0 +de 09_hydro_pump 1 33 0.0 0.0 +de 01_solar 1 34 1.0 0.0 +de 02_wind_on 1 34 1.0 0.0 +de 03_wind_off 1 34 0.0 0.0 +de 04_res 1 34 0.0 0.0 +de 05_nuclear 1 34 0.0 0.0 +de 06_coal 1 34 0.0 0.0 +de 07_gas 1 34 0.0 0.0 +de 08_non-res 1 34 0.0 0.0 +de 09_hydro_pump 1 34 0.0 0.0 +de 01_solar 1 35 1.0 0.0 +de 02_wind_on 1 35 1.0 0.0 +de 03_wind_off 1 35 0.0 0.0 +de 04_res 1 35 0.0 0.0 +de 05_nuclear 1 35 0.0 0.0 +de 06_coal 1 35 0.0 0.0 +de 07_gas 1 35 0.0 0.0 +de 08_non-res 1 35 0.0 0.0 +de 09_hydro_pump 1 35 0.0 0.0 +de 01_solar 1 36 1.0 0.0 +de 02_wind_on 1 36 1.0 0.0 +de 03_wind_off 1 36 0.0 0.0 +de 04_res 1 36 0.0 0.0 +de 05_nuclear 1 36 0.0 0.0 +de 06_coal 1 36 0.0 0.0 +de 07_gas 1 36 0.0 0.0 +de 08_non-res 1 36 0.0 0.0 +de 09_hydro_pump 1 36 0.0 0.0 +de 01_solar 1 37 1.0 0.0 +de 02_wind_on 1 37 1.0 0.0 +de 03_wind_off 1 37 0.0 0.0 +de 04_res 1 37 0.0 0.0 +de 05_nuclear 1 37 0.0 0.0 +de 06_coal 1 37 0.0 0.0 +de 07_gas 1 37 0.0 0.0 +de 08_non-res 1 37 0.0 0.0 +de 09_hydro_pump 1 37 0.0 0.0 +de 01_solar 1 38 1.0 0.0 +de 02_wind_on 1 38 1.0 0.0 +de 03_wind_off 1 38 0.0 0.0 +de 04_res 1 38 0.0 0.0 +de 05_nuclear 1 38 0.0 0.0 +de 06_coal 1 38 0.0 0.0 +de 07_gas 1 38 0.0 0.0 +de 08_non-res 1 38 0.0 0.0 +de 09_hydro_pump 1 38 0.0 0.0 +de 01_solar 1 39 1.0 0.0 +de 02_wind_on 1 39 1.0 0.0 +de 03_wind_off 1 39 0.0 0.0 +de 04_res 1 39 0.0 0.0 +de 05_nuclear 1 39 0.0 0.0 +de 06_coal 1 39 0.0 0.0 +de 07_gas 1 39 0.0 0.0 +de 08_non-res 1 39 0.0 0.0 +de 09_hydro_pump 1 39 0.0 0.0 +de 01_solar 1 40 1.0 0.0 +de 02_wind_on 1 40 1.0 0.0 +de 03_wind_off 1 40 0.0 0.0 +de 04_res 1 40 0.0 0.0 +de 05_nuclear 1 40 0.0 0.0 +de 06_coal 1 40 0.0 0.0 +de 07_gas 1 40 0.0 0.0 +de 08_non-res 1 40 0.0 0.0 +de 09_hydro_pump 1 40 0.0 0.0 +de 01_solar 1 41 1.0 0.0 +de 02_wind_on 1 41 1.0 0.0 +de 03_wind_off 1 41 0.0 0.0 +de 04_res 1 41 0.0 0.0 +de 05_nuclear 1 41 0.0 0.0 +de 06_coal 1 41 0.0 0.0 +de 07_gas 1 41 0.0 0.0 +de 08_non-res 1 41 0.0 0.0 +de 09_hydro_pump 1 41 0.0 0.0 +de 01_solar 1 42 1.0 0.0 +de 02_wind_on 1 42 1.0 0.0 +de 03_wind_off 1 42 1.0 0.0 +de 04_res 1 42 0.0 0.0 +de 05_nuclear 1 42 0.0 0.0 +de 06_coal 1 42 0.0 0.0 +de 07_gas 1 42 0.0 0.0 +de 08_non-res 1 42 0.0 0.0 +de 09_hydro_pump 1 42 0.0 0.0 +de 01_solar 1 43 1.0 0.0 +de 02_wind_on 1 43 1.0 0.0 +de 03_wind_off 1 43 1.0 0.0 +de 04_res 1 43 0.0 0.0 +de 05_nuclear 1 43 0.0 0.0 +de 06_coal 1 43 0.0 0.0 +de 07_gas 1 43 0.0 0.0 +de 08_non-res 1 43 0.0 0.0 +de 09_hydro_pump 1 43 0.0 0.0 +de 01_solar 1 44 1.0 0.0 +de 02_wind_on 1 44 1.0 0.0 +de 03_wind_off 1 44 1.0 0.0 +de 04_res 1 44 0.0 0.0 +de 05_nuclear 1 44 0.0 0.0 +de 06_coal 1 44 0.0 0.0 +de 07_gas 1 44 0.0 0.0 +de 08_non-res 1 44 0.0 0.0 +de 09_hydro_pump 1 44 0.0 0.0 +de 01_solar 1 45 1.0 0.0 +de 02_wind_on 1 45 1.0 0.0 +de 03_wind_off 1 45 1.0 0.0 +de 04_res 1 45 0.0 0.0 +de 05_nuclear 1 45 0.0 0.0 +de 06_coal 1 45 0.0 0.0 +de 07_gas 1 45 0.0 0.0 +de 08_non-res 1 45 0.0 0.0 +de 09_hydro_pump 1 45 0.0 0.0 +de 01_solar 1 46 1.0 0.0 +de 02_wind_on 1 46 1.0 0.0 +de 03_wind_off 1 46 1.0 0.0 +de 04_res 1 46 0.0 0.0 +de 05_nuclear 1 46 0.0 0.0 +de 06_coal 1 46 0.0 0.0 +de 07_gas 1 46 0.0 0.0 +de 08_non-res 1 46 0.0 0.0 +de 09_hydro_pump 1 46 0.0 0.0 +de 01_solar 1 47 1.0 0.0 +de 02_wind_on 1 47 1.0 0.0 +de 03_wind_off 1 47 1.0 0.0 +de 04_res 1 47 0.0 0.0 +de 05_nuclear 1 47 0.0 0.0 +de 06_coal 1 47 0.0 0.0 +de 07_gas 1 47 0.0 0.0 +de 08_non-res 1 47 0.0 0.0 +de 09_hydro_pump 1 47 0.0 0.0 +de 01_solar 1 48 1.0 0.0 +de 02_wind_on 1 48 1.0 0.0 +de 03_wind_off 1 48 1.0 0.0 +de 04_res 1 48 0.0 0.0 +de 05_nuclear 1 48 0.0 0.0 +de 06_coal 1 48 0.0 0.0 +de 07_gas 1 48 0.0 0.0 +de 08_non-res 1 48 0.0 0.0 +de 09_hydro_pump 1 48 0.0 0.0 +de 01_solar 1 49 1.0 0.0 +de 02_wind_on 1 49 1.0 0.0 +de 03_wind_off 1 49 1.0 0.0 +de 04_res 1 49 0.0 0.0 +de 05_nuclear 1 49 0.0 0.0 +de 06_coal 1 49 0.0 0.0 +de 07_gas 1 49 0.0 0.0 +de 08_non-res 1 49 0.0 0.0 +de 09_hydro_pump 1 49 0.0 0.0 +de 01_solar 1 50 1.0 0.0 +de 02_wind_on 1 50 1.0 0.0 +de 03_wind_off 1 50 1.0 0.0 +de 04_res 1 50 0.0 0.0 +de 05_nuclear 1 50 0.0 0.0 +de 06_coal 1 50 0.0 0.0 +de 07_gas 1 50 0.0 0.0 +de 08_non-res 1 50 0.0 0.0 +de 09_hydro_pump 1 50 0.0 0.0 +de 01_solar 1 51 1.0 0.0 +de 02_wind_on 1 51 1.0 0.0 +de 03_wind_off 1 51 1.0 0.0 +de 04_res 1 51 0.0 0.0 +de 05_nuclear 1 51 0.0 0.0 +de 06_coal 1 51 0.0 0.0 +de 07_gas 1 51 0.0 0.0 +de 08_non-res 1 51 0.0 0.0 +de 09_hydro_pump 1 51 0.0 0.0 +de 01_solar 1 52 1.0 0.0 +de 02_wind_on 1 52 1.0 0.0 +de 03_wind_off 1 52 1.0 0.0 +de 04_res 1 52 0.0 0.0 +de 05_nuclear 1 52 0.0 0.0 +de 06_coal 1 52 0.0 0.0 +de 07_gas 1 52 0.0 0.0 +de 08_non-res 1 52 0.0 0.0 +de 09_hydro_pump 1 52 0.0 0.0 +de 01_solar 1 53 1.0 0.0 +de 02_wind_on 1 53 1.0 0.0 +de 03_wind_off 1 53 1.0 0.0 +de 04_res 1 53 0.0 0.0 +de 05_nuclear 1 53 0.0 0.0 +de 06_coal 1 53 0.0 0.0 +de 07_gas 1 53 0.0 0.0 +de 08_non-res 1 53 0.0 0.0 +de 09_hydro_pump 1 53 0.0 0.0 +de 01_solar 1 54 1.0 0.0 +de 02_wind_on 1 54 1.0 0.0 +de 03_wind_off 1 54 1.0 0.0 +de 04_res 1 54 0.0 0.0 +de 05_nuclear 1 54 0.0 0.0 +de 06_coal 1 54 0.0 0.0 +de 07_gas 1 54 0.0 0.0 +de 08_non-res 1 54 0.0 0.0 +de 09_hydro_pump 1 54 0.0 0.0 +de 01_solar 1 55 1.0 0.0 +de 02_wind_on 1 55 1.0 0.0 +de 03_wind_off 1 55 1.0 0.0 +de 04_res 1 55 0.0 0.0 +de 05_nuclear 1 55 0.0 0.0 +de 06_coal 1 55 0.0 0.0 +de 07_gas 1 55 0.0 0.0 +de 08_non-res 1 55 0.0 0.0 +de 09_hydro_pump 1 55 0.0 0.0 +de 01_solar 1 56 1.0 0.0 +de 02_wind_on 1 56 1.0 0.0 +de 03_wind_off 1 56 1.0 0.0 +de 04_res 1 56 0.0 0.0 +de 05_nuclear 1 56 0.0 0.0 +de 06_coal 1 56 0.0 0.0 +de 07_gas 1 56 0.0 0.0 +de 08_non-res 1 56 0.0 0.0 +de 09_hydro_pump 1 56 0.0 0.0 +de 01_solar 1 57 1.0 0.0 +de 02_wind_on 1 57 1.0 0.0 +de 03_wind_off 1 57 1.0 0.0 +de 04_res 1 57 0.0 0.0 +de 05_nuclear 1 57 0.0 0.0 +de 06_coal 1 57 0.0 0.0 +de 07_gas 1 57 0.0 0.0 +de 08_non-res 1 57 0.0 0.0 +de 09_hydro_pump 1 57 0.0 0.0 +de 01_solar 1 58 1.0 0.0 +de 02_wind_on 1 58 1.0 0.0 +de 03_wind_off 1 58 1.0 0.0 +de 04_res 1 58 0.0 0.0 +de 05_nuclear 1 58 0.0 0.0 +de 06_coal 1 58 0.0 0.0 +de 07_gas 1 58 0.0 0.0 +de 08_non-res 1 58 0.0 0.0 +de 09_hydro_pump 1 58 0.0 0.0 +de 01_solar 1 59 1.0 0.0 +de 02_wind_on 1 59 1.0 0.0 +de 03_wind_off 1 59 1.0 0.0 +de 04_res 1 59 0.0 0.0 +de 05_nuclear 1 59 0.0 0.0 +de 06_coal 1 59 0.0 0.0 +de 07_gas 1 59 0.0 0.0 +de 08_non-res 1 59 0.0 0.0 +de 09_hydro_pump 1 59 0.0 0.0 +de 01_solar 1 60 1.0 0.0 +de 02_wind_on 1 60 1.0 0.0 +de 03_wind_off 1 60 1.0 0.0 +de 04_res 1 60 0.0 0.0 +de 05_nuclear 1 60 0.0 0.0 +de 06_coal 1 60 0.0 0.0 +de 07_gas 1 60 0.0 0.0 +de 08_non-res 1 60 0.0 0.0 +de 09_hydro_pump 1 60 0.0 0.0 +de 01_solar 1 61 1.0 0.0 +de 02_wind_on 1 61 1.0 0.0 +de 03_wind_off 1 61 1.0 0.0 +de 04_res 1 61 0.0 0.0 +de 05_nuclear 1 61 0.0 0.0 +de 06_coal 1 61 0.0 0.0 +de 07_gas 1 61 0.0 0.0 +de 08_non-res 1 61 0.0 0.0 +de 09_hydro_pump 1 61 0.0 0.0 +de 01_solar 1 62 1.0 0.0 +de 02_wind_on 1 62 1.0 0.0 +de 03_wind_off 1 62 1.0 0.0 +de 04_res 1 62 1.0 0.0 +de 05_nuclear 1 62 0.0 0.0 +de 06_coal 1 62 0.0 0.0 +de 07_gas 1 62 0.0 0.0 +de 08_non-res 1 62 0.0 0.0 +de 09_hydro_pump 1 62 0.0 0.0 +de 01_solar 1 63 1.0 0.0 +de 02_wind_on 1 63 1.0 0.0 +de 03_wind_off 1 63 1.0 0.0 +de 04_res 1 63 1.0 0.0 +de 05_nuclear 1 63 0.0 0.0 +de 06_coal 1 63 0.0 0.0 +de 07_gas 1 63 0.0 0.0 +de 08_non-res 1 63 0.0 0.0 +de 09_hydro_pump 1 63 0.0 0.0 +de 01_solar 1 64 1.0 0.0 +de 02_wind_on 1 64 1.0 0.0 +de 03_wind_off 1 64 1.0 0.0 +de 04_res 1 64 1.0 0.0 +de 05_nuclear 1 64 0.0 0.0 +de 06_coal 1 64 0.0 0.0 +de 07_gas 1 64 0.0 0.0 +de 08_non-res 1 64 0.0 0.0 +de 09_hydro_pump 1 64 0.0 0.0 +de 01_solar 1 65 1.0 0.0 +de 02_wind_on 1 65 1.0 0.0 +de 03_wind_off 1 65 1.0 0.0 +de 04_res 1 65 1.0 0.0 +de 05_nuclear 1 65 0.0 0.0 +de 06_coal 1 65 0.0 0.0 +de 07_gas 1 65 0.0 0.0 +de 08_non-res 1 65 0.0 0.0 +de 09_hydro_pump 1 65 0.0 0.0 +de 01_solar 1 66 1.0 0.0 +de 02_wind_on 1 66 1.0 0.0 +de 03_wind_off 1 66 1.0 0.0 +de 04_res 1 66 1.0 0.0 +de 05_nuclear 1 66 0.0 0.0 +de 06_coal 1 66 0.0 0.0 +de 07_gas 1 66 0.0 0.0 +de 08_non-res 1 66 0.0 0.0 +de 09_hydro_pump 1 66 0.0 0.0 +de 01_solar 1 67 1.0 0.0 +de 02_wind_on 1 67 1.0 0.0 +de 03_wind_off 1 67 1.0 0.0 +de 04_res 1 67 1.0 0.0 +de 05_nuclear 1 67 0.0 0.0 +de 06_coal 1 67 0.0 0.0 +de 07_gas 1 67 0.0 0.0 +de 08_non-res 1 67 0.0 0.0 +de 09_hydro_pump 1 67 0.0 0.0 +de 01_solar 1 68 1.0 0.0 +de 02_wind_on 1 68 1.0 0.0 +de 03_wind_off 1 68 1.0 0.0 +de 04_res 1 68 1.0 0.0 +de 05_nuclear 1 68 0.0 0.0 +de 06_coal 1 68 0.0 0.0 +de 07_gas 1 68 0.0 0.0 +de 08_non-res 1 68 0.0 0.0 +de 09_hydro_pump 1 68 0.0 0.0 +de 01_solar 1 69 1.0 0.0 +de 02_wind_on 1 69 1.0 0.0 +de 03_wind_off 1 69 1.0 0.0 +de 04_res 1 69 1.0 0.0 +de 05_nuclear 1 69 0.0 0.0 +de 06_coal 1 69 0.0 0.0 +de 07_gas 1 69 0.0 0.0 +de 08_non-res 1 69 0.0 0.0 +de 09_hydro_pump 1 69 0.0 0.0 +de 01_solar 1 70 1.0 0.0 +de 02_wind_on 1 70 1.0 0.0 +de 03_wind_off 1 70 1.0 0.0 +de 04_res 1 70 1.0 0.0 +de 05_nuclear 1 70 0.0 0.0 +de 06_coal 1 70 0.0 0.0 +de 07_gas 1 70 0.0 0.0 +de 08_non-res 1 70 0.0 0.0 +de 09_hydro_pump 1 70 0.0 0.0 +de 01_solar 1 71 1.0 0.0 +de 02_wind_on 1 71 1.0 0.0 +de 03_wind_off 1 71 1.0 0.0 +de 04_res 1 71 1.0 0.0 +de 05_nuclear 1 71 0.0 0.0 +de 06_coal 1 71 0.0 0.0 +de 07_gas 1 71 0.0 0.0 +de 08_non-res 1 71 0.0 0.0 +de 09_hydro_pump 1 71 0.0 0.0 +de 01_solar 1 72 1.0 0.0 +de 02_wind_on 1 72 1.0 0.0 +de 03_wind_off 1 72 1.0 0.0 +de 04_res 1 72 1.0 0.0 +de 05_nuclear 1 72 0.0 0.0 +de 06_coal 1 72 0.0 0.0 +de 07_gas 1 72 0.0 0.0 +de 08_non-res 1 72 0.0 0.0 +de 09_hydro_pump 1 72 0.0 0.0 +de 01_solar 1 73 1.0 0.0 +de 02_wind_on 1 73 1.0 0.0 +de 03_wind_off 1 73 1.0 0.0 +de 04_res 1 73 1.0 0.0 +de 05_nuclear 1 73 0.0 0.0 +de 06_coal 1 73 0.0 0.0 +de 07_gas 1 73 0.0 0.0 +de 08_non-res 1 73 0.0 0.0 +de 09_hydro_pump 1 73 0.0 0.0 +de 01_solar 1 74 1.0 0.0 +de 02_wind_on 1 74 1.0 0.0 +de 03_wind_off 1 74 1.0 0.0 +de 04_res 1 74 1.0 0.0 +de 05_nuclear 1 74 0.0 0.0 +de 06_coal 1 74 0.0 0.0 +de 07_gas 1 74 0.0 0.0 +de 08_non-res 1 74 0.0 0.0 +de 09_hydro_pump 1 74 0.0 0.0 +de 01_solar 1 75 1.0 0.0 +de 02_wind_on 1 75 1.0 0.0 +de 03_wind_off 1 75 1.0 0.0 +de 04_res 1 75 1.0 0.0 +de 05_nuclear 1 75 0.0 0.0 +de 06_coal 1 75 0.0 0.0 +de 07_gas 1 75 0.0 0.0 +de 08_non-res 1 75 0.0 0.0 +de 09_hydro_pump 1 75 0.0 0.0 +de 01_solar 1 76 1.0 0.0 +de 02_wind_on 1 76 1.0 0.0 +de 03_wind_off 1 76 1.0 0.0 +de 04_res 1 76 1.0 0.0 +de 05_nuclear 1 76 0.0 0.0 +de 06_coal 1 76 0.0 0.0 +de 07_gas 1 76 0.0 0.0 +de 08_non-res 1 76 0.0 0.0 +de 09_hydro_pump 1 76 0.0 0.0 +de 01_solar 1 77 1.0 0.0 +de 02_wind_on 1 77 1.0 0.0 +de 03_wind_off 1 77 1.0 0.0 +de 04_res 1 77 1.0 0.0 +de 05_nuclear 1 77 0.0 0.0 +de 06_coal 1 77 0.0 0.0 +de 07_gas 1 77 0.0 0.0 +de 08_non-res 1 77 0.0 0.0 +de 09_hydro_pump 1 77 0.0 0.0 +de 01_solar 1 78 1.0 0.0 +de 02_wind_on 1 78 1.0 0.0 +de 03_wind_off 1 78 1.0 0.0 +de 04_res 1 78 1.0 0.0 +de 05_nuclear 1 78 0.0 0.0 +de 06_coal 1 78 0.0 0.0 +de 07_gas 1 78 0.0 0.0 +de 08_non-res 1 78 0.0 0.0 +de 09_hydro_pump 1 78 0.0 0.0 +de 01_solar 1 79 1.0 0.0 +de 02_wind_on 1 79 1.0 0.0 +de 03_wind_off 1 79 1.0 0.0 +de 04_res 1 79 1.0 0.0 +de 05_nuclear 1 79 0.0 0.0 +de 06_coal 1 79 0.0 0.0 +de 07_gas 1 79 0.0 0.0 +de 08_non-res 1 79 0.0 0.0 +de 09_hydro_pump 1 79 0.0 0.0 +de 01_solar 1 80 1.0 0.0 +de 02_wind_on 1 80 1.0 0.0 +de 03_wind_off 1 80 1.0 0.0 +de 04_res 1 80 1.0 0.0 +de 05_nuclear 1 80 0.0 0.0 +de 06_coal 1 80 0.0 0.0 +de 07_gas 1 80 0.0 0.0 +de 08_non-res 1 80 0.0 0.0 +de 09_hydro_pump 1 80 0.0 0.0 +de 01_solar 1 81 1.0 0.0 +de 02_wind_on 1 81 1.0 0.0 +de 03_wind_off 1 81 1.0 0.0 +de 04_res 1 81 1.0 0.0 +de 05_nuclear 1 81 0.0 0.0 +de 06_coal 1 81 0.0 0.0 +de 07_gas 1 81 0.0 0.0 +de 08_non-res 1 81 0.0 0.0 +de 09_hydro_pump 1 81 0.0 0.0 +de 01_solar 1 82 1.0 0.0 +de 02_wind_on 1 82 1.0 0.0 +de 03_wind_off 1 82 1.0 0.0 +de 04_res 1 82 1.0 0.0 +de 05_nuclear 1 82 1.0 0.0 +de 06_coal 1 82 0.0 0.0 +de 07_gas 1 82 0.0 0.0 +de 08_non-res 1 82 0.0 0.0 +de 09_hydro_pump 1 82 0.0 0.0 +de 01_solar 1 83 1.0 0.0 +de 02_wind_on 1 83 1.0 0.0 +de 03_wind_off 1 83 1.0 0.0 +de 04_res 1 83 1.0 0.0 +de 05_nuclear 1 83 1.0 0.0 +de 06_coal 1 83 0.0 0.0 +de 07_gas 1 83 0.0 0.0 +de 08_non-res 1 83 0.0 0.0 +de 09_hydro_pump 1 83 0.0 0.0 +de 01_solar 1 84 1.0 0.0 +de 02_wind_on 1 84 1.0 0.0 +de 03_wind_off 1 84 1.0 0.0 +de 04_res 1 84 1.0 0.0 +de 05_nuclear 1 84 1.0 0.0 +de 06_coal 1 84 0.0 0.0 +de 07_gas 1 84 0.0 0.0 +de 08_non-res 1 84 0.0 0.0 +de 09_hydro_pump 1 84 0.0 0.0 +de 01_solar 1 85 1.0 0.0 +de 02_wind_on 1 85 1.0 0.0 +de 03_wind_off 1 85 1.0 0.0 +de 04_res 1 85 1.0 0.0 +de 05_nuclear 1 85 1.0 0.0 +de 06_coal 1 85 0.0 0.0 +de 07_gas 1 85 0.0 0.0 +de 08_non-res 1 85 0.0 0.0 +de 09_hydro_pump 1 85 0.0 0.0 +de 01_solar 1 86 1.0 0.0 +de 02_wind_on 1 86 1.0 0.0 +de 03_wind_off 1 86 1.0 0.0 +de 04_res 1 86 1.0 0.0 +de 05_nuclear 1 86 1.0 0.0 +de 06_coal 1 86 0.0 0.0 +de 07_gas 1 86 0.0 0.0 +de 08_non-res 1 86 0.0 0.0 +de 09_hydro_pump 1 86 0.0 0.0 +de 01_solar 1 87 1.0 0.0 +de 02_wind_on 1 87 1.0 0.0 +de 03_wind_off 1 87 1.0 0.0 +de 04_res 1 87 1.0 0.0 +de 05_nuclear 1 87 1.0 0.0 +de 06_coal 1 87 0.0 0.0 +de 07_gas 1 87 0.0 0.0 +de 08_non-res 1 87 0.0 0.0 +de 09_hydro_pump 1 87 0.0 0.0 +de 01_solar 1 88 1.0 0.0 +de 02_wind_on 1 88 1.0 0.0 +de 03_wind_off 1 88 1.0 0.0 +de 04_res 1 88 1.0 0.0 +de 05_nuclear 1 88 1.0 0.0 +de 06_coal 1 88 0.0 0.0 +de 07_gas 1 88 0.0 0.0 +de 08_non-res 1 88 0.0 0.0 +de 09_hydro_pump 1 88 0.0 0.0 +de 01_solar 1 89 1.0 0.0 +de 02_wind_on 1 89 1.0 0.0 +de 03_wind_off 1 89 1.0 0.0 +de 04_res 1 89 1.0 0.0 +de 05_nuclear 1 89 1.0 0.0 +de 06_coal 1 89 0.0 0.0 +de 07_gas 1 89 0.0 0.0 +de 08_non-res 1 89 0.0 0.0 +de 09_hydro_pump 1 89 0.0 0.0 +de 01_solar 1 90 1.0 0.0 +de 02_wind_on 1 90 1.0 0.0 +de 03_wind_off 1 90 1.0 0.0 +de 04_res 1 90 1.0 0.0 +de 05_nuclear 1 90 1.0 0.0 +de 06_coal 1 90 0.0 0.0 +de 07_gas 1 90 0.0 0.0 +de 08_non-res 1 90 0.0 0.0 +de 09_hydro_pump 1 90 0.0 0.0 +de 01_solar 1 91 1.0 0.0 +de 02_wind_on 1 91 1.0 0.0 +de 03_wind_off 1 91 1.0 0.0 +de 04_res 1 91 1.0 0.0 +de 05_nuclear 1 91 1.0 0.0 +de 06_coal 1 91 0.0 0.0 +de 07_gas 1 91 0.0 0.0 +de 08_non-res 1 91 0.0 0.0 +de 09_hydro_pump 1 91 0.0 0.0 +de 01_solar 1 92 1.0 0.0 +de 02_wind_on 1 92 1.0 0.0 +de 03_wind_off 1 92 1.0 0.0 +de 04_res 1 92 1.0 0.0 +de 05_nuclear 1 92 1.0 0.0 +de 06_coal 1 92 0.0 0.0 +de 07_gas 1 92 0.0 0.0 +de 08_non-res 1 92 0.0 0.0 +de 09_hydro_pump 1 92 0.0 0.0 +de 01_solar 1 93 1.0 0.0 +de 02_wind_on 1 93 1.0 0.0 +de 03_wind_off 1 93 1.0 0.0 +de 04_res 1 93 1.0 0.0 +de 05_nuclear 1 93 1.0 0.0 +de 06_coal 1 93 0.0 0.0 +de 07_gas 1 93 0.0 0.0 +de 08_non-res 1 93 0.0 0.0 +de 09_hydro_pump 1 93 0.0 0.0 +de 01_solar 1 94 1.0 0.0 +de 02_wind_on 1 94 1.0 0.0 +de 03_wind_off 1 94 1.0 0.0 +de 04_res 1 94 1.0 0.0 +de 05_nuclear 1 94 1.0 0.0 +de 06_coal 1 94 0.0 0.0 +de 07_gas 1 94 0.0 0.0 +de 08_non-res 1 94 0.0 0.0 +de 09_hydro_pump 1 94 0.0 0.0 +de 01_solar 1 95 1.0 0.0 +de 02_wind_on 1 95 1.0 0.0 +de 03_wind_off 1 95 1.0 0.0 +de 04_res 1 95 1.0 0.0 +de 05_nuclear 1 95 1.0 0.0 +de 06_coal 1 95 0.0 0.0 +de 07_gas 1 95 0.0 0.0 +de 08_non-res 1 95 0.0 0.0 +de 09_hydro_pump 1 95 0.0 0.0 +de 01_solar 1 96 1.0 0.0 +de 02_wind_on 1 96 1.0 0.0 +de 03_wind_off 1 96 1.0 0.0 +de 04_res 1 96 1.0 0.0 +de 05_nuclear 1 96 1.0 0.0 +de 06_coal 1 96 0.0 0.0 +de 07_gas 1 96 0.0 0.0 +de 08_non-res 1 96 0.0 0.0 +de 09_hydro_pump 1 96 0.0 0.0 +de 01_solar 1 97 1.0 0.0 +de 02_wind_on 1 97 1.0 0.0 +de 03_wind_off 1 97 1.0 0.0 +de 04_res 1 97 1.0 0.0 +de 05_nuclear 1 97 1.0 0.0 +de 06_coal 1 97 0.0 0.0 +de 07_gas 1 97 0.0 0.0 +de 08_non-res 1 97 0.0 0.0 +de 09_hydro_pump 1 97 0.0 0.0 +de 01_solar 1 98 1.0 0.0 +de 02_wind_on 1 98 1.0 0.0 +de 03_wind_off 1 98 1.0 0.0 +de 04_res 1 98 1.0 0.0 +de 05_nuclear 1 98 1.0 0.0 +de 06_coal 1 98 0.0 0.0 +de 07_gas 1 98 0.0 0.0 +de 08_non-res 1 98 0.0 0.0 +de 09_hydro_pump 1 98 0.0 0.0 +de 01_solar 1 99 1.0 0.0 +de 02_wind_on 1 99 1.0 0.0 +de 03_wind_off 1 99 1.0 0.0 +de 04_res 1 99 1.0 0.0 +de 05_nuclear 1 99 1.0 0.0 +de 06_coal 1 99 0.0 0.0 +de 07_gas 1 99 0.0 0.0 +de 08_non-res 1 99 0.0 0.0 +de 09_hydro_pump 1 99 0.0 0.0 +de 01_solar 1 100 1.0 0.0 +de 02_wind_on 1 100 1.0 0.0 +de 03_wind_off 1 100 1.0 0.0 +de 04_res 1 100 1.0 0.0 +de 05_nuclear 1 100 1.0 0.0 +de 06_coal 1 100 0.0 0.0 +de 07_gas 1 100 0.0 0.0 +de 08_non-res 1 100 0.0 0.0 +de 09_hydro_pump 1 100 0.0 0.0 +de 01_solar 1 101 1.0 0.0 +de 02_wind_on 1 101 1.0 0.0 +de 03_wind_off 1 101 1.0 0.0 +de 04_res 1 101 1.0 0.0 +de 05_nuclear 1 101 1.0 0.0 +de 06_coal 1 101 0.0 0.0 +de 07_gas 1 101 0.0 0.0 +de 08_non-res 1 101 0.0 0.0 +de 09_hydro_pump 1 101 0.0 0.0 +de 01_solar 1 102 1.0 0.0 +de 02_wind_on 1 102 1.0 0.0 +de 03_wind_off 1 102 1.0 0.0 +de 04_res 1 102 1.0 0.0 +de 05_nuclear 1 102 1.0 0.0 +de 06_coal 1 102 1.0 0.0 +de 07_gas 1 102 0.0 0.0 +de 08_non-res 1 102 0.0 0.0 +de 09_hydro_pump 1 102 0.0 0.0 +de 01_solar 1 103 1.0 0.0 +de 02_wind_on 1 103 1.0 0.0 +de 03_wind_off 1 103 1.0 0.0 +de 04_res 1 103 1.0 0.0 +de 05_nuclear 1 103 1.0 0.0 +de 06_coal 1 103 1.0 0.0 +de 07_gas 1 103 0.0 0.0 +de 08_non-res 1 103 0.0 0.0 +de 09_hydro_pump 1 103 0.0 0.0 +de 01_solar 1 104 1.0 0.0 +de 02_wind_on 1 104 1.0 0.0 +de 03_wind_off 1 104 1.0 0.0 +de 04_res 1 104 1.0 0.0 +de 05_nuclear 1 104 1.0 0.0 +de 06_coal 1 104 1.0 0.0 +de 07_gas 1 104 0.0 0.0 +de 08_non-res 1 104 0.0 0.0 +de 09_hydro_pump 1 104 0.0 0.0 +de 01_solar 1 105 1.0 0.0 +de 02_wind_on 1 105 1.0 0.0 +de 03_wind_off 1 105 1.0 0.0 +de 04_res 1 105 1.0 0.0 +de 05_nuclear 1 105 1.0 0.0 +de 06_coal 1 105 1.0 0.0 +de 07_gas 1 105 0.0 0.0 +de 08_non-res 1 105 0.0 0.0 +de 09_hydro_pump 1 105 0.0 0.0 +de 01_solar 1 106 1.0 0.0 +de 02_wind_on 1 106 1.0 0.0 +de 03_wind_off 1 106 1.0 0.0 +de 04_res 1 106 1.0 0.0 +de 05_nuclear 1 106 1.0 0.0 +de 06_coal 1 106 1.0 0.0 +de 07_gas 1 106 0.0 0.0 +de 08_non-res 1 106 0.0 0.0 +de 09_hydro_pump 1 106 0.0 0.0 +de 01_solar 1 107 1.0 0.0 +de 02_wind_on 1 107 1.0 0.0 +de 03_wind_off 1 107 1.0 0.0 +de 04_res 1 107 1.0 0.0 +de 05_nuclear 1 107 1.0 0.0 +de 06_coal 1 107 1.0 0.0 +de 07_gas 1 107 0.0 0.0 +de 08_non-res 1 107 0.0 0.0 +de 09_hydro_pump 1 107 0.0 0.0 +de 01_solar 1 108 1.0 0.0 +de 02_wind_on 1 108 1.0 0.0 +de 03_wind_off 1 108 1.0 0.0 +de 04_res 1 108 1.0 0.0 +de 05_nuclear 1 108 1.0 0.0 +de 06_coal 1 108 1.0 0.0 +de 07_gas 1 108 0.0 0.0 +de 08_non-res 1 108 0.0 0.0 +de 09_hydro_pump 1 108 0.0 0.0 +de 01_solar 1 109 1.0 0.0 +de 02_wind_on 1 109 1.0 0.0 +de 03_wind_off 1 109 1.0 0.0 +de 04_res 1 109 1.0 0.0 +de 05_nuclear 1 109 1.0 0.0 +de 06_coal 1 109 1.0 0.0 +de 07_gas 1 109 0.0 0.0 +de 08_non-res 1 109 0.0 0.0 +de 09_hydro_pump 1 109 0.0 0.0 +de 01_solar 1 110 1.0 0.0 +de 02_wind_on 1 110 1.0 0.0 +de 03_wind_off 1 110 1.0 0.0 +de 04_res 1 110 1.0 0.0 +de 05_nuclear 1 110 1.0 0.0 +de 06_coal 1 110 1.0 0.0 +de 07_gas 1 110 0.0 0.0 +de 08_non-res 1 110 0.0 0.0 +de 09_hydro_pump 1 110 0.0 0.0 +de 01_solar 1 111 1.0 0.0 +de 02_wind_on 1 111 1.0 0.0 +de 03_wind_off 1 111 1.0 0.0 +de 04_res 1 111 1.0 0.0 +de 05_nuclear 1 111 1.0 0.0 +de 06_coal 1 111 1.0 0.0 +de 07_gas 1 111 0.0 0.0 +de 08_non-res 1 111 0.0 0.0 +de 09_hydro_pump 1 111 0.0 0.0 +de 01_solar 1 112 1.0 0.0 +de 02_wind_on 1 112 1.0 0.0 +de 03_wind_off 1 112 1.0 0.0 +de 04_res 1 112 1.0 0.0 +de 05_nuclear 1 112 1.0 0.0 +de 06_coal 1 112 1.0 0.0 +de 07_gas 1 112 0.0 0.0 +de 08_non-res 1 112 0.0 0.0 +de 09_hydro_pump 1 112 0.0 0.0 +de 01_solar 1 113 1.0 0.0 +de 02_wind_on 1 113 1.0 0.0 +de 03_wind_off 1 113 1.0 0.0 +de 04_res 1 113 1.0 0.0 +de 05_nuclear 1 113 1.0 0.0 +de 06_coal 1 113 1.0 0.0 +de 07_gas 1 113 0.0 0.0 +de 08_non-res 1 113 0.0 0.0 +de 09_hydro_pump 1 113 0.0 0.0 +de 01_solar 1 114 1.0 0.0 +de 02_wind_on 1 114 1.0 0.0 +de 03_wind_off 1 114 1.0 0.0 +de 04_res 1 114 1.0 0.0 +de 05_nuclear 1 114 1.0 0.0 +de 06_coal 1 114 1.0 0.0 +de 07_gas 1 114 0.0 0.0 +de 08_non-res 1 114 0.0 0.0 +de 09_hydro_pump 1 114 0.0 0.0 +de 01_solar 1 115 1.0 0.0 +de 02_wind_on 1 115 1.0 0.0 +de 03_wind_off 1 115 1.0 0.0 +de 04_res 1 115 1.0 0.0 +de 05_nuclear 1 115 1.0 0.0 +de 06_coal 1 115 1.0 0.0 +de 07_gas 1 115 0.0 0.0 +de 08_non-res 1 115 0.0 0.0 +de 09_hydro_pump 1 115 0.0 0.0 +de 01_solar 1 116 1.0 0.0 +de 02_wind_on 1 116 1.0 0.0 +de 03_wind_off 1 116 1.0 0.0 +de 04_res 1 116 1.0 0.0 +de 05_nuclear 1 116 1.0 0.0 +de 06_coal 1 116 1.0 0.0 +de 07_gas 1 116 0.0 0.0 +de 08_non-res 1 116 0.0 0.0 +de 09_hydro_pump 1 116 0.0 0.0 +de 01_solar 1 117 1.0 0.0 +de 02_wind_on 1 117 1.0 0.0 +de 03_wind_off 1 117 1.0 0.0 +de 04_res 1 117 1.0 0.0 +de 05_nuclear 1 117 1.0 0.0 +de 06_coal 1 117 1.0 0.0 +de 07_gas 1 117 0.0 0.0 +de 08_non-res 1 117 0.0 0.0 +de 09_hydro_pump 1 117 0.0 0.0 +de 01_solar 1 118 1.0 0.0 +de 02_wind_on 1 118 1.0 0.0 +de 03_wind_off 1 118 1.0 0.0 +de 04_res 1 118 1.0 0.0 +de 05_nuclear 1 118 1.0 0.0 +de 06_coal 1 118 1.0 0.0 +de 07_gas 1 118 0.0 0.0 +de 08_non-res 1 118 0.0 0.0 +de 09_hydro_pump 1 118 0.0 0.0 +de 01_solar 1 119 1.0 0.0 +de 02_wind_on 1 119 1.0 0.0 +de 03_wind_off 1 119 1.0 0.0 +de 04_res 1 119 1.0 0.0 +de 05_nuclear 1 119 1.0 0.0 +de 06_coal 1 119 1.0 0.0 +de 07_gas 1 119 0.0 0.0 +de 08_non-res 1 119 0.0 0.0 +de 09_hydro_pump 1 119 0.0 0.0 +de 01_solar 1 120 1.0 0.0 +de 02_wind_on 1 120 1.0 0.0 +de 03_wind_off 1 120 1.0 0.0 +de 04_res 1 120 1.0 0.0 +de 05_nuclear 1 120 1.0 0.0 +de 06_coal 1 120 1.0 0.0 +de 07_gas 1 120 0.0 0.0 +de 08_non-res 1 120 0.0 0.0 +de 09_hydro_pump 1 120 0.0 0.0 +de 01_solar 1 121 1.0 0.0 +de 02_wind_on 1 121 1.0 0.0 +de 03_wind_off 1 121 1.0 0.0 +de 04_res 1 121 1.0 0.0 +de 05_nuclear 1 121 1.0 0.0 +de 06_coal 1 121 1.0 0.0 +de 07_gas 1 121 0.0 0.0 +de 08_non-res 1 121 0.0 0.0 +de 09_hydro_pump 1 121 0.0 0.0 +de 01_solar 1 122 1.0 0.0 +de 02_wind_on 1 122 1.0 0.0 +de 03_wind_off 1 122 1.0 0.0 +de 04_res 1 122 1.0 0.0 +de 05_nuclear 1 122 1.0 0.0 +de 06_coal 1 122 1.0 0.0 +de 07_gas 1 122 1.0 0.0 +de 08_non-res 1 122 0.0 0.0 +de 09_hydro_pump 1 122 0.0 0.0 +de 01_solar 1 123 1.0 0.0 +de 02_wind_on 1 123 1.0 0.0 +de 03_wind_off 1 123 1.0 0.0 +de 04_res 1 123 1.0 0.0 +de 05_nuclear 1 123 1.0 0.0 +de 06_coal 1 123 1.0 0.0 +de 07_gas 1 123 1.0 0.0 +de 08_non-res 1 123 0.0 0.0 +de 09_hydro_pump 1 123 0.0 0.0 +de 01_solar 1 124 1.0 0.0 +de 02_wind_on 1 124 1.0 0.0 +de 03_wind_off 1 124 1.0 0.0 +de 04_res 1 124 1.0 0.0 +de 05_nuclear 1 124 1.0 0.0 +de 06_coal 1 124 1.0 0.0 +de 07_gas 1 124 1.0 0.0 +de 08_non-res 1 124 0.0 0.0 +de 09_hydro_pump 1 124 0.0 0.0 +de 01_solar 1 125 1.0 0.0 +de 02_wind_on 1 125 1.0 0.0 +de 03_wind_off 1 125 1.0 0.0 +de 04_res 1 125 1.0 0.0 +de 05_nuclear 1 125 1.0 0.0 +de 06_coal 1 125 1.0 0.0 +de 07_gas 1 125 1.0 0.0 +de 08_non-res 1 125 0.0 0.0 +de 09_hydro_pump 1 125 0.0 0.0 +de 01_solar 1 126 1.0 0.0 +de 02_wind_on 1 126 1.0 0.0 +de 03_wind_off 1 126 1.0 0.0 +de 04_res 1 126 1.0 0.0 +de 05_nuclear 1 126 1.0 0.0 +de 06_coal 1 126 1.0 0.0 +de 07_gas 1 126 1.0 0.0 +de 08_non-res 1 126 0.0 0.0 +de 09_hydro_pump 1 126 0.0 0.0 +de 01_solar 1 127 1.0 0.0 +de 02_wind_on 1 127 1.0 0.0 +de 03_wind_off 1 127 1.0 0.0 +de 04_res 1 127 1.0 0.0 +de 05_nuclear 1 127 1.0 0.0 +de 06_coal 1 127 1.0 0.0 +de 07_gas 1 127 1.0 0.0 +de 08_non-res 1 127 0.0 0.0 +de 09_hydro_pump 1 127 0.0 0.0 +de 01_solar 1 128 1.0 0.0 +de 02_wind_on 1 128 1.0 0.0 +de 03_wind_off 1 128 1.0 0.0 +de 04_res 1 128 1.0 0.0 +de 05_nuclear 1 128 1.0 0.0 +de 06_coal 1 128 1.0 0.0 +de 07_gas 1 128 1.0 0.0 +de 08_non-res 1 128 0.0 0.0 +de 09_hydro_pump 1 128 0.0 0.0 +de 01_solar 1 129 1.0 0.0 +de 02_wind_on 1 129 1.0 0.0 +de 03_wind_off 1 129 1.0 0.0 +de 04_res 1 129 1.0 0.0 +de 05_nuclear 1 129 1.0 0.0 +de 06_coal 1 129 1.0 0.0 +de 07_gas 1 129 1.0 0.0 +de 08_non-res 1 129 0.0 0.0 +de 09_hydro_pump 1 129 0.0 0.0 +de 01_solar 1 130 1.0 0.0 +de 02_wind_on 1 130 1.0 0.0 +de 03_wind_off 1 130 1.0 0.0 +de 04_res 1 130 1.0 0.0 +de 05_nuclear 1 130 1.0 0.0 +de 06_coal 1 130 1.0 0.0 +de 07_gas 1 130 1.0 0.0 +de 08_non-res 1 130 0.0 0.0 +de 09_hydro_pump 1 130 0.0 0.0 +de 01_solar 1 131 1.0 0.0 +de 02_wind_on 1 131 1.0 0.0 +de 03_wind_off 1 131 1.0 0.0 +de 04_res 1 131 1.0 0.0 +de 05_nuclear 1 131 1.0 0.0 +de 06_coal 1 131 1.0 0.0 +de 07_gas 1 131 1.0 0.0 +de 08_non-res 1 131 0.0 0.0 +de 09_hydro_pump 1 131 0.0 0.0 +de 01_solar 1 132 1.0 0.0 +de 02_wind_on 1 132 1.0 0.0 +de 03_wind_off 1 132 1.0 0.0 +de 04_res 1 132 1.0 0.0 +de 05_nuclear 1 132 1.0 0.0 +de 06_coal 1 132 1.0 0.0 +de 07_gas 1 132 1.0 0.0 +de 08_non-res 1 132 0.0 0.0 +de 09_hydro_pump 1 132 0.0 0.0 +de 01_solar 1 133 1.0 0.0 +de 02_wind_on 1 133 1.0 0.0 +de 03_wind_off 1 133 1.0 0.0 +de 04_res 1 133 1.0 0.0 +de 05_nuclear 1 133 1.0 0.0 +de 06_coal 1 133 1.0 0.0 +de 07_gas 1 133 1.0 0.0 +de 08_non-res 1 133 0.0 0.0 +de 09_hydro_pump 1 133 0.0 0.0 +de 01_solar 1 134 1.0 0.0 +de 02_wind_on 1 134 1.0 0.0 +de 03_wind_off 1 134 1.0 0.0 +de 04_res 1 134 1.0 0.0 +de 05_nuclear 1 134 1.0 0.0 +de 06_coal 1 134 1.0 0.0 +de 07_gas 1 134 1.0 0.0 +de 08_non-res 1 134 0.0 0.0 +de 09_hydro_pump 1 134 0.0 0.0 +de 01_solar 1 135 1.0 0.0 +de 02_wind_on 1 135 1.0 0.0 +de 03_wind_off 1 135 1.0 0.0 +de 04_res 1 135 1.0 0.0 +de 05_nuclear 1 135 1.0 0.0 +de 06_coal 1 135 1.0 0.0 +de 07_gas 1 135 1.0 0.0 +de 08_non-res 1 135 0.0 0.0 +de 09_hydro_pump 1 135 0.0 0.0 +de 01_solar 1 136 1.0 0.0 +de 02_wind_on 1 136 1.0 0.0 +de 03_wind_off 1 136 1.0 0.0 +de 04_res 1 136 1.0 0.0 +de 05_nuclear 1 136 1.0 0.0 +de 06_coal 1 136 1.0 0.0 +de 07_gas 1 136 1.0 0.0 +de 08_non-res 1 136 0.0 0.0 +de 09_hydro_pump 1 136 0.0 0.0 +de 01_solar 1 137 1.0 0.0 +de 02_wind_on 1 137 1.0 0.0 +de 03_wind_off 1 137 1.0 0.0 +de 04_res 1 137 1.0 0.0 +de 05_nuclear 1 137 1.0 0.0 +de 06_coal 1 137 1.0 0.0 +de 07_gas 1 137 1.0 0.0 +de 08_non-res 1 137 0.0 0.0 +de 09_hydro_pump 1 137 0.0 0.0 +de 01_solar 1 138 1.0 0.0 +de 02_wind_on 1 138 1.0 0.0 +de 03_wind_off 1 138 1.0 0.0 +de 04_res 1 138 1.0 0.0 +de 05_nuclear 1 138 1.0 0.0 +de 06_coal 1 138 1.0 0.0 +de 07_gas 1 138 1.0 0.0 +de 08_non-res 1 138 0.0 0.0 +de 09_hydro_pump 1 138 0.0 0.0 +de 01_solar 1 139 1.0 0.0 +de 02_wind_on 1 139 1.0 0.0 +de 03_wind_off 1 139 1.0 0.0 +de 04_res 1 139 1.0 0.0 +de 05_nuclear 1 139 1.0 0.0 +de 06_coal 1 139 1.0 0.0 +de 07_gas 1 139 1.0 0.0 +de 08_non-res 1 139 0.0 0.0 +de 09_hydro_pump 1 139 0.0 0.0 +de 01_solar 1 140 1.0 0.0 +de 02_wind_on 1 140 1.0 0.0 +de 03_wind_off 1 140 1.0 0.0 +de 04_res 1 140 1.0 0.0 +de 05_nuclear 1 140 1.0 0.0 +de 06_coal 1 140 1.0 0.0 +de 07_gas 1 140 1.0 0.0 +de 08_non-res 1 140 0.0 0.0 +de 09_hydro_pump 1 140 0.0 0.0 +de 01_solar 1 141 1.0 0.0 +de 02_wind_on 1 141 1.0 0.0 +de 03_wind_off 1 141 1.0 0.0 +de 04_res 1 141 1.0 0.0 +de 05_nuclear 1 141 1.0 0.0 +de 06_coal 1 141 1.0 0.0 +de 07_gas 1 141 1.0 0.0 +de 08_non-res 1 141 0.0 0.0 +de 09_hydro_pump 1 141 0.0 0.0 +de 01_solar 1 142 1.0 0.0 +de 02_wind_on 1 142 1.0 0.0 +de 03_wind_off 1 142 1.0 0.0 +de 04_res 1 142 1.0 0.0 +de 05_nuclear 1 142 1.0 0.0 +de 06_coal 1 142 1.0 0.0 +de 07_gas 1 142 1.0 0.0 +de 08_non-res 1 142 1.0 0.0 +de 09_hydro_pump 1 142 0.0 0.0 +de 01_solar 1 143 1.0 0.0 +de 02_wind_on 1 143 1.0 0.0 +de 03_wind_off 1 143 1.0 0.0 +de 04_res 1 143 1.0 0.0 +de 05_nuclear 1 143 1.0 0.0 +de 06_coal 1 143 1.0 0.0 +de 07_gas 1 143 1.0 0.0 +de 08_non-res 1 143 1.0 0.0 +de 09_hydro_pump 1 143 0.0 0.0 +de 01_solar 1 144 1.0 0.0 +de 02_wind_on 1 144 1.0 0.0 +de 03_wind_off 1 144 1.0 0.0 +de 04_res 1 144 1.0 0.0 +de 05_nuclear 1 144 1.0 0.0 +de 06_coal 1 144 1.0 0.0 +de 07_gas 1 144 1.0 0.0 +de 08_non-res 1 144 1.0 0.0 +de 09_hydro_pump 1 144 0.0 0.0 +de 01_solar 1 145 1.0 0.0 +de 02_wind_on 1 145 1.0 0.0 +de 03_wind_off 1 145 1.0 0.0 +de 04_res 1 145 1.0 0.0 +de 05_nuclear 1 145 1.0 0.0 +de 06_coal 1 145 1.0 0.0 +de 07_gas 1 145 1.0 0.0 +de 08_non-res 1 145 1.0 0.0 +de 09_hydro_pump 1 145 0.0 0.0 +de 01_solar 1 146 1.0 0.0 +de 02_wind_on 1 146 1.0 0.0 +de 03_wind_off 1 146 1.0 0.0 +de 04_res 1 146 1.0 0.0 +de 05_nuclear 1 146 1.0 0.0 +de 06_coal 1 146 1.0 0.0 +de 07_gas 1 146 1.0 0.0 +de 08_non-res 1 146 1.0 0.0 +de 09_hydro_pump 1 146 0.0 0.0 +de 01_solar 1 147 1.0 0.0 +de 02_wind_on 1 147 1.0 0.0 +de 03_wind_off 1 147 1.0 0.0 +de 04_res 1 147 1.0 0.0 +de 05_nuclear 1 147 1.0 0.0 +de 06_coal 1 147 1.0 0.0 +de 07_gas 1 147 1.0 0.0 +de 08_non-res 1 147 1.0 0.0 +de 09_hydro_pump 1 147 0.0 0.0 +de 01_solar 1 148 1.0 0.0 +de 02_wind_on 1 148 1.0 0.0 +de 03_wind_off 1 148 1.0 0.0 +de 04_res 1 148 1.0 0.0 +de 05_nuclear 1 148 1.0 0.0 +de 06_coal 1 148 1.0 0.0 +de 07_gas 1 148 1.0 0.0 +de 08_non-res 1 148 1.0 0.0 +de 09_hydro_pump 1 148 0.0 0.0 +de 01_solar 1 149 1.0 0.0 +de 02_wind_on 1 149 1.0 0.0 +de 03_wind_off 1 149 1.0 0.0 +de 04_res 1 149 1.0 0.0 +de 05_nuclear 1 149 1.0 0.0 +de 06_coal 1 149 1.0 0.0 +de 07_gas 1 149 1.0 0.0 +de 08_non-res 1 149 1.0 0.0 +de 09_hydro_pump 1 149 0.0 0.0 +de 01_solar 1 150 1.0 0.0 +de 02_wind_on 1 150 1.0 0.0 +de 03_wind_off 1 150 1.0 0.0 +de 04_res 1 150 1.0 0.0 +de 05_nuclear 1 150 1.0 0.0 +de 06_coal 1 150 1.0 0.0 +de 07_gas 1 150 1.0 0.0 +de 08_non-res 1 150 1.0 0.0 +de 09_hydro_pump 1 150 0.0 0.0 +de 01_solar 1 151 1.0 0.0 +de 02_wind_on 1 151 1.0 0.0 +de 03_wind_off 1 151 1.0 0.0 +de 04_res 1 151 1.0 0.0 +de 05_nuclear 1 151 1.0 0.0 +de 06_coal 1 151 1.0 0.0 +de 07_gas 1 151 1.0 0.0 +de 08_non-res 1 151 1.0 0.0 +de 09_hydro_pump 1 151 0.0 0.0 +de 01_solar 1 152 1.0 0.0 +de 02_wind_on 1 152 1.0 0.0 +de 03_wind_off 1 152 1.0 0.0 +de 04_res 1 152 1.0 0.0 +de 05_nuclear 1 152 1.0 0.0 +de 06_coal 1 152 1.0 0.0 +de 07_gas 1 152 1.0 0.0 +de 08_non-res 1 152 1.0 0.0 +de 09_hydro_pump 1 152 0.0 0.0 +de 01_solar 1 153 1.0 0.0 +de 02_wind_on 1 153 1.0 0.0 +de 03_wind_off 1 153 1.0 0.0 +de 04_res 1 153 1.0 0.0 +de 05_nuclear 1 153 1.0 0.0 +de 06_coal 1 153 1.0 0.0 +de 07_gas 1 153 1.0 0.0 +de 08_non-res 1 153 1.0 0.0 +de 09_hydro_pump 1 153 0.0 0.0 +de 01_solar 1 154 1.0 0.0 +de 02_wind_on 1 154 1.0 0.0 +de 03_wind_off 1 154 1.0 0.0 +de 04_res 1 154 1.0 0.0 +de 05_nuclear 1 154 1.0 0.0 +de 06_coal 1 154 1.0 0.0 +de 07_gas 1 154 1.0 0.0 +de 08_non-res 1 154 1.0 0.0 +de 09_hydro_pump 1 154 0.0 0.0 +de 01_solar 1 155 1.0 0.0 +de 02_wind_on 1 155 1.0 0.0 +de 03_wind_off 1 155 1.0 0.0 +de 04_res 1 155 1.0 0.0 +de 05_nuclear 1 155 1.0 0.0 +de 06_coal 1 155 1.0 0.0 +de 07_gas 1 155 1.0 0.0 +de 08_non-res 1 155 1.0 0.0 +de 09_hydro_pump 1 155 0.0 0.0 +de 01_solar 1 156 1.0 0.0 +de 02_wind_on 1 156 1.0 0.0 +de 03_wind_off 1 156 1.0 0.0 +de 04_res 1 156 1.0 0.0 +de 05_nuclear 1 156 1.0 0.0 +de 06_coal 1 156 1.0 0.0 +de 07_gas 1 156 1.0 0.0 +de 08_non-res 1 156 1.0 0.0 +de 09_hydro_pump 1 156 0.0 0.0 +de 01_solar 1 157 1.0 0.0 +de 02_wind_on 1 157 1.0 0.0 +de 03_wind_off 1 157 1.0 0.0 +de 04_res 1 157 1.0 0.0 +de 05_nuclear 1 157 1.0 0.0 +de 06_coal 1 157 1.0 0.0 +de 07_gas 1 157 1.0 0.0 +de 08_non-res 1 157 1.0 0.0 +de 09_hydro_pump 1 157 0.0 0.0 +de 01_solar 1 158 1.0 0.0 +de 02_wind_on 1 158 1.0 0.0 +de 03_wind_off 1 158 1.0 0.0 +de 04_res 1 158 1.0 0.0 +de 05_nuclear 1 158 1.0 0.0 +de 06_coal 1 158 1.0 0.0 +de 07_gas 1 158 1.0 0.0 +de 08_non-res 1 158 1.0 0.0 +de 09_hydro_pump 1 158 0.0 0.0 +de 01_solar 1 159 1.0 0.0 +de 02_wind_on 1 159 1.0 0.0 +de 03_wind_off 1 159 1.0 0.0 +de 04_res 1 159 1.0 0.0 +de 05_nuclear 1 159 1.0 0.0 +de 06_coal 1 159 1.0 0.0 +de 07_gas 1 159 1.0 0.0 +de 08_non-res 1 159 1.0 0.0 +de 09_hydro_pump 1 159 0.0 0.0 +de 01_solar 1 160 1.0 0.0 +de 02_wind_on 1 160 1.0 0.0 +de 03_wind_off 1 160 1.0 0.0 +de 04_res 1 160 1.0 0.0 +de 05_nuclear 1 160 1.0 0.0 +de 06_coal 1 160 1.0 0.0 +de 07_gas 1 160 1.0 0.0 +de 08_non-res 1 160 1.0 0.0 +de 09_hydro_pump 1 160 0.0 0.0 +de 01_solar 1 161 1.0 0.0 +de 02_wind_on 1 161 1.0 0.0 +de 03_wind_off 1 161 1.0 0.0 +de 04_res 1 161 1.0 0.0 +de 05_nuclear 1 161 1.0 0.0 +de 06_coal 1 161 1.0 0.0 +de 07_gas 1 161 1.0 0.0 +de 08_non-res 1 161 1.0 0.0 +de 09_hydro_pump 1 161 0.0 0.0 +de 01_solar 1 162 1.0 0.0 +de 02_wind_on 1 162 1.0 0.0 +de 03_wind_off 1 162 1.0 0.0 +de 04_res 1 162 1.0 0.0 +de 05_nuclear 1 162 1.0 0.0 +de 06_coal 1 162 1.0 0.0 +de 07_gas 1 162 1.0 0.0 +de 08_non-res 1 162 1.0 0.0 +de 09_hydro_pump 1 162 1.0 0.0 +de 01_solar 1 163 1.0 0.0 +de 02_wind_on 1 163 1.0 0.0 +de 03_wind_off 1 163 1.0 0.0 +de 04_res 1 163 1.0 0.0 +de 05_nuclear 1 163 1.0 0.0 +de 06_coal 1 163 1.0 0.0 +de 07_gas 1 163 1.0 0.0 +de 08_non-res 1 163 1.0 0.0 +de 09_hydro_pump 1 163 1.0 0.0 +de 01_solar 1 164 1.0 0.0 +de 02_wind_on 1 164 1.0 0.0 +de 03_wind_off 1 164 1.0 0.0 +de 04_res 1 164 1.0 0.0 +de 05_nuclear 1 164 1.0 0.0 +de 06_coal 1 164 1.0 0.0 +de 07_gas 1 164 1.0 0.0 +de 08_non-res 1 164 1.0 0.0 +de 09_hydro_pump 1 164 1.0 0.0 +de 01_solar 1 165 1.0 0.0 +de 02_wind_on 1 165 1.0 0.0 +de 03_wind_off 1 165 1.0 0.0 +de 04_res 1 165 1.0 0.0 +de 05_nuclear 1 165 1.0 0.0 +de 06_coal 1 165 1.0 0.0 +de 07_gas 1 165 1.0 0.0 +de 08_non-res 1 165 1.0 0.0 +de 09_hydro_pump 1 165 1.0 0.0 +de 01_solar 1 166 1.0 0.0 +de 02_wind_on 1 166 1.0 0.0 +de 03_wind_off 1 166 1.0 0.0 +de 04_res 1 166 1.0 0.0 +de 05_nuclear 1 166 1.0 0.0 +de 06_coal 1 166 1.0 0.0 +de 07_gas 1 166 1.0 0.0 +de 08_non-res 1 166 1.0 0.0 +de 09_hydro_pump 1 166 1.0 0.0 +de 01_solar 1 167 1.0 0.0 +de 02_wind_on 1 167 1.0 0.0 +de 03_wind_off 1 167 1.0 0.0 +de 04_res 1 167 1.0 0.0 +de 05_nuclear 1 167 1.0 0.0 +de 06_coal 1 167 1.0 0.0 +de 07_gas 1 167 1.0 0.0 +de 08_non-res 1 167 1.0 0.0 +de 09_hydro_pump 1 167 1.0 0.0 +de 01_solar 1 168 1.0 0.0 +de 02_wind_on 1 168 1.0 0.0 +de 03_wind_off 1 168 1.0 0.0 +de 04_res 1 168 1.0 0.0 +de 05_nuclear 1 168 1.0 0.0 +de 06_coal 1 168 1.0 0.0 +de 07_gas 1 168 1.0 0.0 +de 08_non-res 1 168 1.0 0.0 +de 09_hydro_pump 1 168 1.0 0.0 +de 01_solar 1 169 0.0 0.0 +de 02_wind_on 1 169 0.0 0.0 +de 03_wind_off 1 169 0.0 0.0 +de 04_res 1 169 0.0 0.0 +de 05_nuclear 1 169 0.0 0.0 +de 06_coal 1 169 0.0 0.0 +de 07_gas 1 169 0.0 0.0 +de 08_non-res 1 169 0.0 0.0 +de 09_hydro_pump 1 169 0.0 0.0 +de 01_solar 1 170 1.0 0.0 +de 02_wind_on 1 170 0.0 0.0 +de 03_wind_off 1 170 0.0 0.0 +de 04_res 1 170 0.0 0.0 +de 05_nuclear 1 170 0.0 0.0 +de 06_coal 1 170 0.0 0.0 +de 07_gas 1 170 0.0 0.0 +de 08_non-res 1 170 0.0 0.0 +de 09_hydro_pump 1 170 0.0 0.0 +de 01_solar 1 171 1.0 0.0 +de 02_wind_on 1 171 0.0 0.0 +de 03_wind_off 1 171 0.0 0.0 +de 04_res 1 171 0.0 0.0 +de 05_nuclear 1 171 0.0 0.0 +de 06_coal 1 171 0.0 0.0 +de 07_gas 1 171 0.0 0.0 +de 08_non-res 1 171 0.0 0.0 +de 09_hydro_pump 1 171 0.0 0.0 +de 01_solar 1 172 1.0 0.0 +de 02_wind_on 1 172 0.0 0.0 +de 03_wind_off 1 172 0.0 0.0 +de 04_res 1 172 0.0 0.0 +de 05_nuclear 1 172 0.0 0.0 +de 06_coal 1 172 0.0 0.0 +de 07_gas 1 172 0.0 0.0 +de 08_non-res 1 172 0.0 0.0 +de 09_hydro_pump 1 172 0.0 0.0 +de 01_solar 1 173 1.0 0.0 +de 02_wind_on 1 173 0.0 0.0 +de 03_wind_off 1 173 0.0 0.0 +de 04_res 1 173 0.0 0.0 +de 05_nuclear 1 173 0.0 0.0 +de 06_coal 1 173 0.0 0.0 +de 07_gas 1 173 0.0 0.0 +de 08_non-res 1 173 0.0 0.0 +de 09_hydro_pump 1 173 0.0 0.0 +de 01_solar 1 174 1.0 0.0 +de 02_wind_on 1 174 0.0 0.0 +de 03_wind_off 1 174 0.0 0.0 +de 04_res 1 174 0.0 0.0 +de 05_nuclear 1 174 0.0 0.0 +de 06_coal 1 174 0.0 0.0 +de 07_gas 1 174 0.0 0.0 +de 08_non-res 1 174 0.0 0.0 +de 09_hydro_pump 1 174 0.0 0.0 +de 01_solar 1 175 1.0 0.0 +de 02_wind_on 1 175 0.0 0.0 +de 03_wind_off 1 175 0.0 0.0 +de 04_res 1 175 0.0 0.0 +de 05_nuclear 1 175 0.0 0.0 +de 06_coal 1 175 0.0 0.0 +de 07_gas 1 175 0.0 0.0 +de 08_non-res 1 175 0.0 0.0 +de 09_hydro_pump 1 175 0.0 0.0 +de 01_solar 1 176 1.0 0.0 +de 02_wind_on 1 176 0.0 0.0 +de 03_wind_off 1 176 0.0 0.0 +de 04_res 1 176 0.0 0.0 +de 05_nuclear 1 176 0.0 0.0 +de 06_coal 1 176 0.0 0.0 +de 07_gas 1 176 0.0 0.0 +de 08_non-res 1 176 0.0 0.0 +de 09_hydro_pump 1 176 0.0 0.0 +de 01_solar 1 177 1.0 0.0 +de 02_wind_on 1 177 0.0 0.0 +de 03_wind_off 1 177 0.0 0.0 +de 04_res 1 177 0.0 0.0 +de 05_nuclear 1 177 0.0 0.0 +de 06_coal 1 177 0.0 0.0 +de 07_gas 1 177 0.0 0.0 +de 08_non-res 1 177 0.0 0.0 +de 09_hydro_pump 1 177 0.0 0.0 +de 01_solar 1 178 1.0 0.0 +de 02_wind_on 1 178 0.0 0.0 +de 03_wind_off 1 178 0.0 0.0 +de 04_res 1 178 0.0 0.0 +de 05_nuclear 1 178 0.0 0.0 +de 06_coal 1 178 0.0 0.0 +de 07_gas 1 178 0.0 0.0 +de 08_non-res 1 178 0.0 0.0 +de 09_hydro_pump 1 178 0.0 0.0 +de 01_solar 1 179 1.0 0.0 +de 02_wind_on 1 179 0.0 0.0 +de 03_wind_off 1 179 0.0 0.0 +de 04_res 1 179 0.0 0.0 +de 05_nuclear 1 179 0.0 0.0 +de 06_coal 1 179 0.0 0.0 +de 07_gas 1 179 0.0 0.0 +de 08_non-res 1 179 0.0 0.0 +de 09_hydro_pump 1 179 0.0 0.0 +de 01_solar 1 180 1.0 0.0 +de 02_wind_on 1 180 0.0 0.0 +de 03_wind_off 1 180 0.0 0.0 +de 04_res 1 180 0.0 0.0 +de 05_nuclear 1 180 0.0 0.0 +de 06_coal 1 180 0.0 0.0 +de 07_gas 1 180 0.0 0.0 +de 08_non-res 1 180 0.0 0.0 +de 09_hydro_pump 1 180 0.0 0.0 +de 01_solar 1 181 1.0 0.0 +de 02_wind_on 1 181 0.0 0.0 +de 03_wind_off 1 181 0.0 0.0 +de 04_res 1 181 0.0 0.0 +de 05_nuclear 1 181 0.0 0.0 +de 06_coal 1 181 0.0 0.0 +de 07_gas 1 181 0.0 0.0 +de 08_non-res 1 181 0.0 0.0 +de 09_hydro_pump 1 181 0.0 0.0 +de 01_solar 1 182 1.0 0.0 +de 02_wind_on 1 182 0.0 0.0 +de 03_wind_off 1 182 0.0 0.0 +de 04_res 1 182 0.0 0.0 +de 05_nuclear 1 182 0.0 0.0 +de 06_coal 1 182 0.0 0.0 +de 07_gas 1 182 0.0 0.0 +de 08_non-res 1 182 0.0 0.0 +de 09_hydro_pump 1 182 0.0 0.0 +de 01_solar 1 183 1.0 0.0 +de 02_wind_on 1 183 0.0 0.0 +de 03_wind_off 1 183 0.0 0.0 +de 04_res 1 183 0.0 0.0 +de 05_nuclear 1 183 0.0 0.0 +de 06_coal 1 183 0.0 0.0 +de 07_gas 1 183 0.0 0.0 +de 08_non-res 1 183 0.0 0.0 +de 09_hydro_pump 1 183 0.0 0.0 +de 01_solar 1 184 1.0 0.0 +de 02_wind_on 1 184 0.0 0.0 +de 03_wind_off 1 184 0.0 0.0 +de 04_res 1 184 0.0 0.0 +de 05_nuclear 1 184 0.0 0.0 +de 06_coal 1 184 0.0 0.0 +de 07_gas 1 184 0.0 0.0 +de 08_non-res 1 184 0.0 0.0 +de 09_hydro_pump 1 184 0.0 0.0 +de 01_solar 1 185 1.0 0.0 +de 02_wind_on 1 185 0.0 0.0 +de 03_wind_off 1 185 0.0 0.0 +de 04_res 1 185 0.0 0.0 +de 05_nuclear 1 185 0.0 0.0 +de 06_coal 1 185 0.0 0.0 +de 07_gas 1 185 0.0 0.0 +de 08_non-res 1 185 0.0 0.0 +de 09_hydro_pump 1 185 0.0 0.0 +de 01_solar 1 186 1.0 0.0 +de 02_wind_on 1 186 0.0 0.0 +de 03_wind_off 1 186 0.0 0.0 +de 04_res 1 186 0.0 0.0 +de 05_nuclear 1 186 0.0 0.0 +de 06_coal 1 186 0.0 0.0 +de 07_gas 1 186 0.0 0.0 +de 08_non-res 1 186 0.0 0.0 +de 09_hydro_pump 1 186 0.0 0.0 +de 01_solar 1 187 1.0 0.0 +de 02_wind_on 1 187 0.0 0.0 +de 03_wind_off 1 187 0.0 0.0 +de 04_res 1 187 0.0 0.0 +de 05_nuclear 1 187 0.0 0.0 +de 06_coal 1 187 0.0 0.0 +de 07_gas 1 187 0.0 0.0 +de 08_non-res 1 187 0.0 0.0 +de 09_hydro_pump 1 187 0.0 0.0 +de 01_solar 1 188 1.0 0.0 +de 02_wind_on 1 188 0.0 0.0 +de 03_wind_off 1 188 0.0 0.0 +de 04_res 1 188 0.0 0.0 +de 05_nuclear 1 188 0.0 0.0 +de 06_coal 1 188 0.0 0.0 +de 07_gas 1 188 0.0 0.0 +de 08_non-res 1 188 0.0 0.0 +de 09_hydro_pump 1 188 0.0 0.0 +de 01_solar 1 189 1.0 0.0 +de 02_wind_on 1 189 0.0 0.0 +de 03_wind_off 1 189 0.0 0.0 +de 04_res 1 189 0.0 0.0 +de 05_nuclear 1 189 0.0 0.0 +de 06_coal 1 189 0.0 0.0 +de 07_gas 1 189 0.0 0.0 +de 08_non-res 1 189 0.0 0.0 +de 09_hydro_pump 1 189 0.0 0.0 +de 01_solar 1 190 1.0 0.0 +de 02_wind_on 1 190 1.0 0.0 +de 03_wind_off 1 190 0.0 0.0 +de 04_res 1 190 0.0 0.0 +de 05_nuclear 1 190 0.0 0.0 +de 06_coal 1 190 0.0 0.0 +de 07_gas 1 190 0.0 0.0 +de 08_non-res 1 190 0.0 0.0 +de 09_hydro_pump 1 190 0.0 0.0 +de 01_solar 1 191 1.0 0.0 +de 02_wind_on 1 191 1.0 0.0 +de 03_wind_off 1 191 0.0 0.0 +de 04_res 1 191 0.0 0.0 +de 05_nuclear 1 191 0.0 0.0 +de 06_coal 1 191 0.0 0.0 +de 07_gas 1 191 0.0 0.0 +de 08_non-res 1 191 0.0 0.0 +de 09_hydro_pump 1 191 0.0 0.0 +de 01_solar 1 192 1.0 0.0 +de 02_wind_on 1 192 1.0 0.0 +de 03_wind_off 1 192 0.0 0.0 +de 04_res 1 192 0.0 0.0 +de 05_nuclear 1 192 0.0 0.0 +de 06_coal 1 192 0.0 0.0 +de 07_gas 1 192 0.0 0.0 +de 08_non-res 1 192 0.0 0.0 +de 09_hydro_pump 1 192 0.0 0.0 +de 01_solar 1 193 1.0 0.0 +de 02_wind_on 1 193 1.0 0.0 +de 03_wind_off 1 193 0.0 0.0 +de 04_res 1 193 0.0 0.0 +de 05_nuclear 1 193 0.0 0.0 +de 06_coal 1 193 0.0 0.0 +de 07_gas 1 193 0.0 0.0 +de 08_non-res 1 193 0.0 0.0 +de 09_hydro_pump 1 193 0.0 0.0 +de 01_solar 1 194 1.0 0.0 +de 02_wind_on 1 194 1.0 0.0 +de 03_wind_off 1 194 0.0 0.0 +de 04_res 1 194 0.0 0.0 +de 05_nuclear 1 194 0.0 0.0 +de 06_coal 1 194 0.0 0.0 +de 07_gas 1 194 0.0 0.0 +de 08_non-res 1 194 0.0 0.0 +de 09_hydro_pump 1 194 0.0 0.0 +de 01_solar 1 195 1.0 0.0 +de 02_wind_on 1 195 1.0 0.0 +de 03_wind_off 1 195 0.0 0.0 +de 04_res 1 195 0.0 0.0 +de 05_nuclear 1 195 0.0 0.0 +de 06_coal 1 195 0.0 0.0 +de 07_gas 1 195 0.0 0.0 +de 08_non-res 1 195 0.0 0.0 +de 09_hydro_pump 1 195 0.0 0.0 +de 01_solar 1 196 1.0 0.0 +de 02_wind_on 1 196 1.0 0.0 +de 03_wind_off 1 196 0.0 0.0 +de 04_res 1 196 0.0 0.0 +de 05_nuclear 1 196 0.0 0.0 +de 06_coal 1 196 0.0 0.0 +de 07_gas 1 196 0.0 0.0 +de 08_non-res 1 196 0.0 0.0 +de 09_hydro_pump 1 196 0.0 0.0 +de 01_solar 1 197 1.0 0.0 +de 02_wind_on 1 197 1.0 0.0 +de 03_wind_off 1 197 0.0 0.0 +de 04_res 1 197 0.0 0.0 +de 05_nuclear 1 197 0.0 0.0 +de 06_coal 1 197 0.0 0.0 +de 07_gas 1 197 0.0 0.0 +de 08_non-res 1 197 0.0 0.0 +de 09_hydro_pump 1 197 0.0 0.0 +de 01_solar 1 198 1.0 0.0 +de 02_wind_on 1 198 1.0 0.0 +de 03_wind_off 1 198 0.0 0.0 +de 04_res 1 198 0.0 0.0 +de 05_nuclear 1 198 0.0 0.0 +de 06_coal 1 198 0.0 0.0 +de 07_gas 1 198 0.0 0.0 +de 08_non-res 1 198 0.0 0.0 +de 09_hydro_pump 1 198 0.0 0.0 +de 01_solar 1 199 1.0 0.0 +de 02_wind_on 1 199 1.0 0.0 +de 03_wind_off 1 199 0.0 0.0 +de 04_res 1 199 0.0 0.0 +de 05_nuclear 1 199 0.0 0.0 +de 06_coal 1 199 0.0 0.0 +de 07_gas 1 199 0.0 0.0 +de 08_non-res 1 199 0.0 0.0 +de 09_hydro_pump 1 199 0.0 0.0 +de 01_solar 1 200 1.0 0.0 +de 02_wind_on 1 200 1.0 0.0 +de 03_wind_off 1 200 0.0 0.0 +de 04_res 1 200 0.0 0.0 +de 05_nuclear 1 200 0.0 0.0 +de 06_coal 1 200 0.0 0.0 +de 07_gas 1 200 0.0 0.0 +de 08_non-res 1 200 0.0 0.0 +de 09_hydro_pump 1 200 0.0 0.0 +de 01_solar 1 201 1.0 0.0 +de 02_wind_on 1 201 1.0 0.0 +de 03_wind_off 1 201 0.0 0.0 +de 04_res 1 201 0.0 0.0 +de 05_nuclear 1 201 0.0 0.0 +de 06_coal 1 201 0.0 0.0 +de 07_gas 1 201 0.0 0.0 +de 08_non-res 1 201 0.0 0.0 +de 09_hydro_pump 1 201 0.0 0.0 +de 01_solar 1 202 1.0 0.0 +de 02_wind_on 1 202 1.0 0.0 +de 03_wind_off 1 202 0.0 0.0 +de 04_res 1 202 0.0 0.0 +de 05_nuclear 1 202 0.0 0.0 +de 06_coal 1 202 0.0 0.0 +de 07_gas 1 202 0.0 0.0 +de 08_non-res 1 202 0.0 0.0 +de 09_hydro_pump 1 202 0.0 0.0 +de 01_solar 1 203 1.0 0.0 +de 02_wind_on 1 203 1.0 0.0 +de 03_wind_off 1 203 0.0 0.0 +de 04_res 1 203 0.0 0.0 +de 05_nuclear 1 203 0.0 0.0 +de 06_coal 1 203 0.0 0.0 +de 07_gas 1 203 0.0 0.0 +de 08_non-res 1 203 0.0 0.0 +de 09_hydro_pump 1 203 0.0 0.0 +de 01_solar 1 204 1.0 0.0 +de 02_wind_on 1 204 1.0 0.0 +de 03_wind_off 1 204 0.0 0.0 +de 04_res 1 204 0.0 0.0 +de 05_nuclear 1 204 0.0 0.0 +de 06_coal 1 204 0.0 0.0 +de 07_gas 1 204 0.0 0.0 +de 08_non-res 1 204 0.0 0.0 +de 09_hydro_pump 1 204 0.0 0.0 +de 01_solar 1 205 1.0 0.0 +de 02_wind_on 1 205 1.0 0.0 +de 03_wind_off 1 205 0.0 0.0 +de 04_res 1 205 0.0 0.0 +de 05_nuclear 1 205 0.0 0.0 +de 06_coal 1 205 0.0 0.0 +de 07_gas 1 205 0.0 0.0 +de 08_non-res 1 205 0.0 0.0 +de 09_hydro_pump 1 205 0.0 0.0 +de 01_solar 1 206 1.0 0.0 +de 02_wind_on 1 206 1.0 0.0 +de 03_wind_off 1 206 0.0 0.0 +de 04_res 1 206 0.0 0.0 +de 05_nuclear 1 206 0.0 0.0 +de 06_coal 1 206 0.0 0.0 +de 07_gas 1 206 0.0 0.0 +de 08_non-res 1 206 0.0 0.0 +de 09_hydro_pump 1 206 0.0 0.0 +de 01_solar 1 207 1.0 0.0 +de 02_wind_on 1 207 1.0 0.0 +de 03_wind_off 1 207 0.0 0.0 +de 04_res 1 207 0.0 0.0 +de 05_nuclear 1 207 0.0 0.0 +de 06_coal 1 207 0.0 0.0 +de 07_gas 1 207 0.0 0.0 +de 08_non-res 1 207 0.0 0.0 +de 09_hydro_pump 1 207 0.0 0.0 +de 01_solar 1 208 1.0 0.0 +de 02_wind_on 1 208 1.0 0.0 +de 03_wind_off 1 208 0.0 0.0 +de 04_res 1 208 0.0 0.0 +de 05_nuclear 1 208 0.0 0.0 +de 06_coal 1 208 0.0 0.0 +de 07_gas 1 208 0.0 0.0 +de 08_non-res 1 208 0.0 0.0 +de 09_hydro_pump 1 208 0.0 0.0 +de 01_solar 1 209 1.0 0.0 +de 02_wind_on 1 209 1.0 0.0 +de 03_wind_off 1 209 0.0 0.0 +de 04_res 1 209 0.0 0.0 +de 05_nuclear 1 209 0.0 0.0 +de 06_coal 1 209 0.0 0.0 +de 07_gas 1 209 0.0 0.0 +de 08_non-res 1 209 0.0 0.0 +de 09_hydro_pump 1 209 0.0 0.0 +de 01_solar 1 210 1.0 0.0 +de 02_wind_on 1 210 1.0 0.0 +de 03_wind_off 1 210 1.0 0.0 +de 04_res 1 210 0.0 0.0 +de 05_nuclear 1 210 0.0 0.0 +de 06_coal 1 210 0.0 0.0 +de 07_gas 1 210 0.0 0.0 +de 08_non-res 1 210 0.0 0.0 +de 09_hydro_pump 1 210 0.0 0.0 +de 01_solar 1 211 1.0 0.0 +de 02_wind_on 1 211 1.0 0.0 +de 03_wind_off 1 211 1.0 0.0 +de 04_res 1 211 0.0 0.0 +de 05_nuclear 1 211 0.0 0.0 +de 06_coal 1 211 0.0 0.0 +de 07_gas 1 211 0.0 0.0 +de 08_non-res 1 211 0.0 0.0 +de 09_hydro_pump 1 211 0.0 0.0 +de 01_solar 1 212 1.0 0.0 +de 02_wind_on 1 212 1.0 0.0 +de 03_wind_off 1 212 1.0 0.0 +de 04_res 1 212 0.0 0.0 +de 05_nuclear 1 212 0.0 0.0 +de 06_coal 1 212 0.0 0.0 +de 07_gas 1 212 0.0 0.0 +de 08_non-res 1 212 0.0 0.0 +de 09_hydro_pump 1 212 0.0 0.0 +de 01_solar 1 213 1.0 0.0 +de 02_wind_on 1 213 1.0 0.0 +de 03_wind_off 1 213 1.0 0.0 +de 04_res 1 213 0.0 0.0 +de 05_nuclear 1 213 0.0 0.0 +de 06_coal 1 213 0.0 0.0 +de 07_gas 1 213 0.0 0.0 +de 08_non-res 1 213 0.0 0.0 +de 09_hydro_pump 1 213 0.0 0.0 +de 01_solar 1 214 1.0 0.0 +de 02_wind_on 1 214 1.0 0.0 +de 03_wind_off 1 214 1.0 0.0 +de 04_res 1 214 0.0 0.0 +de 05_nuclear 1 214 0.0 0.0 +de 06_coal 1 214 0.0 0.0 +de 07_gas 1 214 0.0 0.0 +de 08_non-res 1 214 0.0 0.0 +de 09_hydro_pump 1 214 0.0 0.0 +de 01_solar 1 215 1.0 0.0 +de 02_wind_on 1 215 1.0 0.0 +de 03_wind_off 1 215 1.0 0.0 +de 04_res 1 215 0.0 0.0 +de 05_nuclear 1 215 0.0 0.0 +de 06_coal 1 215 0.0 0.0 +de 07_gas 1 215 0.0 0.0 +de 08_non-res 1 215 0.0 0.0 +de 09_hydro_pump 1 215 0.0 0.0 +de 01_solar 1 216 1.0 0.0 +de 02_wind_on 1 216 1.0 0.0 +de 03_wind_off 1 216 1.0 0.0 +de 04_res 1 216 0.0 0.0 +de 05_nuclear 1 216 0.0 0.0 +de 06_coal 1 216 0.0 0.0 +de 07_gas 1 216 0.0 0.0 +de 08_non-res 1 216 0.0 0.0 +de 09_hydro_pump 1 216 0.0 0.0 +de 01_solar 1 217 1.0 0.0 +de 02_wind_on 1 217 1.0 0.0 +de 03_wind_off 1 217 1.0 0.0 +de 04_res 1 217 0.0 0.0 +de 05_nuclear 1 217 0.0 0.0 +de 06_coal 1 217 0.0 0.0 +de 07_gas 1 217 0.0 0.0 +de 08_non-res 1 217 0.0 0.0 +de 09_hydro_pump 1 217 0.0 0.0 +de 01_solar 1 218 1.0 0.0 +de 02_wind_on 1 218 1.0 0.0 +de 03_wind_off 1 218 1.0 0.0 +de 04_res 1 218 0.0 0.0 +de 05_nuclear 1 218 0.0 0.0 +de 06_coal 1 218 0.0 0.0 +de 07_gas 1 218 0.0 0.0 +de 08_non-res 1 218 0.0 0.0 +de 09_hydro_pump 1 218 0.0 0.0 +de 01_solar 1 219 1.0 0.0 +de 02_wind_on 1 219 1.0 0.0 +de 03_wind_off 1 219 1.0 0.0 +de 04_res 1 219 0.0 0.0 +de 05_nuclear 1 219 0.0 0.0 +de 06_coal 1 219 0.0 0.0 +de 07_gas 1 219 0.0 0.0 +de 08_non-res 1 219 0.0 0.0 +de 09_hydro_pump 1 219 0.0 0.0 +de 01_solar 1 220 1.0 0.0 +de 02_wind_on 1 220 1.0 0.0 +de 03_wind_off 1 220 1.0 0.0 +de 04_res 1 220 0.0 0.0 +de 05_nuclear 1 220 0.0 0.0 +de 06_coal 1 220 0.0 0.0 +de 07_gas 1 220 0.0 0.0 +de 08_non-res 1 220 0.0 0.0 +de 09_hydro_pump 1 220 0.0 0.0 +de 01_solar 1 221 1.0 0.0 +de 02_wind_on 1 221 1.0 0.0 +de 03_wind_off 1 221 1.0 0.0 +de 04_res 1 221 0.0 0.0 +de 05_nuclear 1 221 0.0 0.0 +de 06_coal 1 221 0.0 0.0 +de 07_gas 1 221 0.0 0.0 +de 08_non-res 1 221 0.0 0.0 +de 09_hydro_pump 1 221 0.0 0.0 +de 01_solar 1 222 1.0 0.0 +de 02_wind_on 1 222 1.0 0.0 +de 03_wind_off 1 222 1.0 0.0 +de 04_res 1 222 0.0 0.0 +de 05_nuclear 1 222 0.0 0.0 +de 06_coal 1 222 0.0 0.0 +de 07_gas 1 222 0.0 0.0 +de 08_non-res 1 222 0.0 0.0 +de 09_hydro_pump 1 222 0.0 0.0 +de 01_solar 1 223 1.0 0.0 +de 02_wind_on 1 223 1.0 0.0 +de 03_wind_off 1 223 1.0 0.0 +de 04_res 1 223 0.0 0.0 +de 05_nuclear 1 223 0.0 0.0 +de 06_coal 1 223 0.0 0.0 +de 07_gas 1 223 0.0 0.0 +de 08_non-res 1 223 0.0 0.0 +de 09_hydro_pump 1 223 0.0 0.0 +de 01_solar 1 224 1.0 0.0 +de 02_wind_on 1 224 1.0 0.0 +de 03_wind_off 1 224 1.0 0.0 +de 04_res 1 224 0.0 0.0 +de 05_nuclear 1 224 0.0 0.0 +de 06_coal 1 224 0.0 0.0 +de 07_gas 1 224 0.0 0.0 +de 08_non-res 1 224 0.0 0.0 +de 09_hydro_pump 1 224 0.0 0.0 +de 01_solar 1 225 1.0 0.0 +de 02_wind_on 1 225 1.0 0.0 +de 03_wind_off 1 225 1.0 0.0 +de 04_res 1 225 0.0 0.0 +de 05_nuclear 1 225 0.0 0.0 +de 06_coal 1 225 0.0 0.0 +de 07_gas 1 225 0.0 0.0 +de 08_non-res 1 225 0.0 0.0 +de 09_hydro_pump 1 225 0.0 0.0 +de 01_solar 1 226 1.0 0.0 +de 02_wind_on 1 226 1.0 0.0 +de 03_wind_off 1 226 1.0 0.0 +de 04_res 1 226 0.0 0.0 +de 05_nuclear 1 226 0.0 0.0 +de 06_coal 1 226 0.0 0.0 +de 07_gas 1 226 0.0 0.0 +de 08_non-res 1 226 0.0 0.0 +de 09_hydro_pump 1 226 0.0 0.0 +de 01_solar 1 227 1.0 0.0 +de 02_wind_on 1 227 1.0 0.0 +de 03_wind_off 1 227 1.0 0.0 +de 04_res 1 227 0.0 0.0 +de 05_nuclear 1 227 0.0 0.0 +de 06_coal 1 227 0.0 0.0 +de 07_gas 1 227 0.0 0.0 +de 08_non-res 1 227 0.0 0.0 +de 09_hydro_pump 1 227 0.0 0.0 +de 01_solar 1 228 1.0 0.0 +de 02_wind_on 1 228 1.0 0.0 +de 03_wind_off 1 228 1.0 0.0 +de 04_res 1 228 0.0 0.0 +de 05_nuclear 1 228 0.0 0.0 +de 06_coal 1 228 0.0 0.0 +de 07_gas 1 228 0.0 0.0 +de 08_non-res 1 228 0.0 0.0 +de 09_hydro_pump 1 228 0.0 0.0 +de 01_solar 1 229 1.0 0.0 +de 02_wind_on 1 229 1.0 0.0 +de 03_wind_off 1 229 1.0 0.0 +de 04_res 1 229 0.0 0.0 +de 05_nuclear 1 229 0.0 0.0 +de 06_coal 1 229 0.0 0.0 +de 07_gas 1 229 0.0 0.0 +de 08_non-res 1 229 0.0 0.0 +de 09_hydro_pump 1 229 0.0 0.0 +de 01_solar 1 230 1.0 0.0 +de 02_wind_on 1 230 1.0 0.0 +de 03_wind_off 1 230 1.0 0.0 +de 04_res 1 230 1.0 0.0 +de 05_nuclear 1 230 0.0 0.0 +de 06_coal 1 230 0.0 0.0 +de 07_gas 1 230 0.0 0.0 +de 08_non-res 1 230 0.0 0.0 +de 09_hydro_pump 1 230 0.0 0.0 +de 01_solar 1 231 1.0 0.0 +de 02_wind_on 1 231 1.0 0.0 +de 03_wind_off 1 231 1.0 0.0 +de 04_res 1 231 1.0 0.0 +de 05_nuclear 1 231 0.0 0.0 +de 06_coal 1 231 0.0 0.0 +de 07_gas 1 231 0.0 0.0 +de 08_non-res 1 231 0.0 0.0 +de 09_hydro_pump 1 231 0.0 0.0 +de 01_solar 1 232 1.0 0.0 +de 02_wind_on 1 232 1.0 0.0 +de 03_wind_off 1 232 1.0 0.0 +de 04_res 1 232 1.0 0.0 +de 05_nuclear 1 232 0.0 0.0 +de 06_coal 1 232 0.0 0.0 +de 07_gas 1 232 0.0 0.0 +de 08_non-res 1 232 0.0 0.0 +de 09_hydro_pump 1 232 0.0 0.0 +de 01_solar 1 233 1.0 0.0 +de 02_wind_on 1 233 1.0 0.0 +de 03_wind_off 1 233 1.0 0.0 +de 04_res 1 233 1.0 0.0 +de 05_nuclear 1 233 0.0 0.0 +de 06_coal 1 233 0.0 0.0 +de 07_gas 1 233 0.0 0.0 +de 08_non-res 1 233 0.0 0.0 +de 09_hydro_pump 1 233 0.0 0.0 +de 01_solar 1 234 1.0 0.0 +de 02_wind_on 1 234 1.0 0.0 +de 03_wind_off 1 234 1.0 0.0 +de 04_res 1 234 1.0 0.0 +de 05_nuclear 1 234 0.0 0.0 +de 06_coal 1 234 0.0 0.0 +de 07_gas 1 234 0.0 0.0 +de 08_non-res 1 234 0.0 0.0 +de 09_hydro_pump 1 234 0.0 0.0 +de 01_solar 1 235 1.0 0.0 +de 02_wind_on 1 235 1.0 0.0 +de 03_wind_off 1 235 1.0 0.0 +de 04_res 1 235 1.0 0.0 +de 05_nuclear 1 235 0.0 0.0 +de 06_coal 1 235 0.0 0.0 +de 07_gas 1 235 0.0 0.0 +de 08_non-res 1 235 0.0 0.0 +de 09_hydro_pump 1 235 0.0 0.0 +de 01_solar 1 236 1.0 0.0 +de 02_wind_on 1 236 1.0 0.0 +de 03_wind_off 1 236 1.0 0.0 +de 04_res 1 236 1.0 0.0 +de 05_nuclear 1 236 0.0 0.0 +de 06_coal 1 236 0.0 0.0 +de 07_gas 1 236 0.0 0.0 +de 08_non-res 1 236 0.0 0.0 +de 09_hydro_pump 1 236 0.0 0.0 +de 01_solar 1 237 1.0 0.0 +de 02_wind_on 1 237 1.0 0.0 +de 03_wind_off 1 237 1.0 0.0 +de 04_res 1 237 1.0 0.0 +de 05_nuclear 1 237 0.0 0.0 +de 06_coal 1 237 0.0 0.0 +de 07_gas 1 237 0.0 0.0 +de 08_non-res 1 237 0.0 0.0 +de 09_hydro_pump 1 237 0.0 0.0 +de 01_solar 1 238 1.0 0.0 +de 02_wind_on 1 238 1.0 0.0 +de 03_wind_off 1 238 1.0 0.0 +de 04_res 1 238 1.0 0.0 +de 05_nuclear 1 238 0.0 0.0 +de 06_coal 1 238 0.0 0.0 +de 07_gas 1 238 0.0 0.0 +de 08_non-res 1 238 0.0 0.0 +de 09_hydro_pump 1 238 0.0 0.0 +de 01_solar 1 239 1.0 0.0 +de 02_wind_on 1 239 1.0 0.0 +de 03_wind_off 1 239 1.0 0.0 +de 04_res 1 239 1.0 0.0 +de 05_nuclear 1 239 0.0 0.0 +de 06_coal 1 239 0.0 0.0 +de 07_gas 1 239 0.0 0.0 +de 08_non-res 1 239 0.0 0.0 +de 09_hydro_pump 1 239 0.0 0.0 +de 01_solar 1 240 1.0 0.0 +de 02_wind_on 1 240 1.0 0.0 +de 03_wind_off 1 240 1.0 0.0 +de 04_res 1 240 1.0 0.0 +de 05_nuclear 1 240 0.0 0.0 +de 06_coal 1 240 0.0 0.0 +de 07_gas 1 240 0.0 0.0 +de 08_non-res 1 240 0.0 0.0 +de 09_hydro_pump 1 240 0.0 0.0 +de 01_solar 1 241 1.0 0.0 +de 02_wind_on 1 241 1.0 0.0 +de 03_wind_off 1 241 1.0 0.0 +de 04_res 1 241 1.0 0.0 +de 05_nuclear 1 241 0.0 0.0 +de 06_coal 1 241 0.0 0.0 +de 07_gas 1 241 0.0 0.0 +de 08_non-res 1 241 0.0 0.0 +de 09_hydro_pump 1 241 0.0 0.0 +de 01_solar 1 242 1.0 0.0 +de 02_wind_on 1 242 1.0 0.0 +de 03_wind_off 1 242 1.0 0.0 +de 04_res 1 242 1.0 0.0 +de 05_nuclear 1 242 0.0 0.0 +de 06_coal 1 242 0.0 0.0 +de 07_gas 1 242 0.0 0.0 +de 08_non-res 1 242 0.0 0.0 +de 09_hydro_pump 1 242 0.0 0.0 +de 01_solar 1 243 1.0 0.0 +de 02_wind_on 1 243 1.0 0.0 +de 03_wind_off 1 243 1.0 0.0 +de 04_res 1 243 1.0 0.0 +de 05_nuclear 1 243 0.0 0.0 +de 06_coal 1 243 0.0 0.0 +de 07_gas 1 243 0.0 0.0 +de 08_non-res 1 243 0.0 0.0 +de 09_hydro_pump 1 243 0.0 0.0 +de 01_solar 1 244 1.0 0.0 +de 02_wind_on 1 244 1.0 0.0 +de 03_wind_off 1 244 1.0 0.0 +de 04_res 1 244 1.0 0.0 +de 05_nuclear 1 244 0.0 0.0 +de 06_coal 1 244 0.0 0.0 +de 07_gas 1 244 0.0 0.0 +de 08_non-res 1 244 0.0 0.0 +de 09_hydro_pump 1 244 0.0 0.0 +de 01_solar 1 245 1.0 0.0 +de 02_wind_on 1 245 1.0 0.0 +de 03_wind_off 1 245 1.0 0.0 +de 04_res 1 245 1.0 0.0 +de 05_nuclear 1 245 0.0 0.0 +de 06_coal 1 245 0.0 0.0 +de 07_gas 1 245 0.0 0.0 +de 08_non-res 1 245 0.0 0.0 +de 09_hydro_pump 1 245 0.0 0.0 +de 01_solar 1 246 1.0 0.0 +de 02_wind_on 1 246 1.0 0.0 +de 03_wind_off 1 246 1.0 0.0 +de 04_res 1 246 1.0 0.0 +de 05_nuclear 1 246 0.0 0.0 +de 06_coal 1 246 0.0 0.0 +de 07_gas 1 246 0.0 0.0 +de 08_non-res 1 246 0.0 0.0 +de 09_hydro_pump 1 246 0.0 0.0 +de 01_solar 1 247 1.0 0.0 +de 02_wind_on 1 247 1.0 0.0 +de 03_wind_off 1 247 1.0 0.0 +de 04_res 1 247 1.0 0.0 +de 05_nuclear 1 247 0.0 0.0 +de 06_coal 1 247 0.0 0.0 +de 07_gas 1 247 0.0 0.0 +de 08_non-res 1 247 0.0 0.0 +de 09_hydro_pump 1 247 0.0 0.0 +de 01_solar 1 248 1.0 0.0 +de 02_wind_on 1 248 1.0 0.0 +de 03_wind_off 1 248 1.0 0.0 +de 04_res 1 248 1.0 0.0 +de 05_nuclear 1 248 0.0 0.0 +de 06_coal 1 248 0.0 0.0 +de 07_gas 1 248 0.0 0.0 +de 08_non-res 1 248 0.0 0.0 +de 09_hydro_pump 1 248 0.0 0.0 +de 01_solar 1 249 1.0 0.0 +de 02_wind_on 1 249 1.0 0.0 +de 03_wind_off 1 249 1.0 0.0 +de 04_res 1 249 1.0 0.0 +de 05_nuclear 1 249 0.0 0.0 +de 06_coal 1 249 0.0 0.0 +de 07_gas 1 249 0.0 0.0 +de 08_non-res 1 249 0.0 0.0 +de 09_hydro_pump 1 249 0.0 0.0 +de 01_solar 1 250 1.0 0.0 +de 02_wind_on 1 250 1.0 0.0 +de 03_wind_off 1 250 1.0 0.0 +de 04_res 1 250 1.0 0.0 +de 05_nuclear 1 250 1.0 0.0 +de 06_coal 1 250 0.0 0.0 +de 07_gas 1 250 0.0 0.0 +de 08_non-res 1 250 0.0 0.0 +de 09_hydro_pump 1 250 0.0 0.0 +de 01_solar 1 251 1.0 0.0 +de 02_wind_on 1 251 1.0 0.0 +de 03_wind_off 1 251 1.0 0.0 +de 04_res 1 251 1.0 0.0 +de 05_nuclear 1 251 1.0 0.0 +de 06_coal 1 251 0.0 0.0 +de 07_gas 1 251 0.0 0.0 +de 08_non-res 1 251 0.0 0.0 +de 09_hydro_pump 1 251 0.0 0.0 +de 01_solar 1 252 1.0 0.0 +de 02_wind_on 1 252 1.0 0.0 +de 03_wind_off 1 252 1.0 0.0 +de 04_res 1 252 1.0 0.0 +de 05_nuclear 1 252 1.0 0.0 +de 06_coal 1 252 0.0 0.0 +de 07_gas 1 252 0.0 0.0 +de 08_non-res 1 252 0.0 0.0 +de 09_hydro_pump 1 252 0.0 0.0 +de 01_solar 1 253 1.0 0.0 +de 02_wind_on 1 253 1.0 0.0 +de 03_wind_off 1 253 1.0 0.0 +de 04_res 1 253 1.0 0.0 +de 05_nuclear 1 253 1.0 0.0 +de 06_coal 1 253 0.0 0.0 +de 07_gas 1 253 0.0 0.0 +de 08_non-res 1 253 0.0 0.0 +de 09_hydro_pump 1 253 0.0 0.0 +de 01_solar 1 254 1.0 0.0 +de 02_wind_on 1 254 1.0 0.0 +de 03_wind_off 1 254 1.0 0.0 +de 04_res 1 254 1.0 0.0 +de 05_nuclear 1 254 1.0 0.0 +de 06_coal 1 254 0.0 0.0 +de 07_gas 1 254 0.0 0.0 +de 08_non-res 1 254 0.0 0.0 +de 09_hydro_pump 1 254 0.0 0.0 +de 01_solar 1 255 1.0 0.0 +de 02_wind_on 1 255 1.0 0.0 +de 03_wind_off 1 255 1.0 0.0 +de 04_res 1 255 1.0 0.0 +de 05_nuclear 1 255 1.0 0.0 +de 06_coal 1 255 0.0 0.0 +de 07_gas 1 255 0.0 0.0 +de 08_non-res 1 255 0.0 0.0 +de 09_hydro_pump 1 255 0.0 0.0 +de 01_solar 1 256 1.0 0.0 +de 02_wind_on 1 256 1.0 0.0 +de 03_wind_off 1 256 1.0 0.0 +de 04_res 1 256 1.0 0.0 +de 05_nuclear 1 256 1.0 0.0 +de 06_coal 1 256 0.0 0.0 +de 07_gas 1 256 0.0 0.0 +de 08_non-res 1 256 0.0 0.0 +de 09_hydro_pump 1 256 0.0 0.0 +de 01_solar 1 257 1.0 0.0 +de 02_wind_on 1 257 1.0 0.0 +de 03_wind_off 1 257 1.0 0.0 +de 04_res 1 257 1.0 0.0 +de 05_nuclear 1 257 1.0 0.0 +de 06_coal 1 257 0.0 0.0 +de 07_gas 1 257 0.0 0.0 +de 08_non-res 1 257 0.0 0.0 +de 09_hydro_pump 1 257 0.0 0.0 +de 01_solar 1 258 1.0 0.0 +de 02_wind_on 1 258 1.0 0.0 +de 03_wind_off 1 258 1.0 0.0 +de 04_res 1 258 1.0 0.0 +de 05_nuclear 1 258 1.0 0.0 +de 06_coal 1 258 0.0 0.0 +de 07_gas 1 258 0.0 0.0 +de 08_non-res 1 258 0.0 0.0 +de 09_hydro_pump 1 258 0.0 0.0 +de 01_solar 1 259 1.0 0.0 +de 02_wind_on 1 259 1.0 0.0 +de 03_wind_off 1 259 1.0 0.0 +de 04_res 1 259 1.0 0.0 +de 05_nuclear 1 259 1.0 0.0 +de 06_coal 1 259 0.0 0.0 +de 07_gas 1 259 0.0 0.0 +de 08_non-res 1 259 0.0 0.0 +de 09_hydro_pump 1 259 0.0 0.0 +de 01_solar 1 260 1.0 0.0 +de 02_wind_on 1 260 1.0 0.0 +de 03_wind_off 1 260 1.0 0.0 +de 04_res 1 260 1.0 0.0 +de 05_nuclear 1 260 1.0 0.0 +de 06_coal 1 260 0.0 0.0 +de 07_gas 1 260 0.0 0.0 +de 08_non-res 1 260 0.0 0.0 +de 09_hydro_pump 1 260 0.0 0.0 +de 01_solar 1 261 1.0 0.0 +de 02_wind_on 1 261 1.0 0.0 +de 03_wind_off 1 261 1.0 0.0 +de 04_res 1 261 1.0 0.0 +de 05_nuclear 1 261 1.0 0.0 +de 06_coal 1 261 0.0 0.0 +de 07_gas 1 261 0.0 0.0 +de 08_non-res 1 261 0.0 0.0 +de 09_hydro_pump 1 261 0.0 0.0 +de 01_solar 1 262 1.0 0.0 +de 02_wind_on 1 262 1.0 0.0 +de 03_wind_off 1 262 1.0 0.0 +de 04_res 1 262 1.0 0.0 +de 05_nuclear 1 262 1.0 0.0 +de 06_coal 1 262 0.0 0.0 +de 07_gas 1 262 0.0 0.0 +de 08_non-res 1 262 0.0 0.0 +de 09_hydro_pump 1 262 0.0 0.0 +de 01_solar 1 263 1.0 0.0 +de 02_wind_on 1 263 1.0 0.0 +de 03_wind_off 1 263 1.0 0.0 +de 04_res 1 263 1.0 0.0 +de 05_nuclear 1 263 1.0 0.0 +de 06_coal 1 263 0.0 0.0 +de 07_gas 1 263 0.0 0.0 +de 08_non-res 1 263 0.0 0.0 +de 09_hydro_pump 1 263 0.0 0.0 +de 01_solar 1 264 1.0 0.0 +de 02_wind_on 1 264 1.0 0.0 +de 03_wind_off 1 264 1.0 0.0 +de 04_res 1 264 1.0 0.0 +de 05_nuclear 1 264 1.0 0.0 +de 06_coal 1 264 0.0 0.0 +de 07_gas 1 264 0.0 0.0 +de 08_non-res 1 264 0.0 0.0 +de 09_hydro_pump 1 264 0.0 0.0 +de 01_solar 1 265 1.0 0.0 +de 02_wind_on 1 265 1.0 0.0 +de 03_wind_off 1 265 1.0 0.0 +de 04_res 1 265 1.0 0.0 +de 05_nuclear 1 265 1.0 0.0 +de 06_coal 1 265 0.0 0.0 +de 07_gas 1 265 0.0 0.0 +de 08_non-res 1 265 0.0 0.0 +de 09_hydro_pump 1 265 0.0 0.0 +de 01_solar 1 266 1.0 0.0 +de 02_wind_on 1 266 1.0 0.0 +de 03_wind_off 1 266 1.0 0.0 +de 04_res 1 266 1.0 0.0 +de 05_nuclear 1 266 1.0 0.0 +de 06_coal 1 266 0.0 0.0 +de 07_gas 1 266 0.0 0.0 +de 08_non-res 1 266 0.0 0.0 +de 09_hydro_pump 1 266 0.0 0.0 +de 01_solar 1 267 1.0 0.0 +de 02_wind_on 1 267 1.0 0.0 +de 03_wind_off 1 267 1.0 0.0 +de 04_res 1 267 1.0 0.0 +de 05_nuclear 1 267 1.0 0.0 +de 06_coal 1 267 0.0 0.0 +de 07_gas 1 267 0.0 0.0 +de 08_non-res 1 267 0.0 0.0 +de 09_hydro_pump 1 267 0.0 0.0 +de 01_solar 1 268 1.0 0.0 +de 02_wind_on 1 268 1.0 0.0 +de 03_wind_off 1 268 1.0 0.0 +de 04_res 1 268 1.0 0.0 +de 05_nuclear 1 268 1.0 0.0 +de 06_coal 1 268 0.0 0.0 +de 07_gas 1 268 0.0 0.0 +de 08_non-res 1 268 0.0 0.0 +de 09_hydro_pump 1 268 0.0 0.0 +de 01_solar 1 269 1.0 0.0 +de 02_wind_on 1 269 1.0 0.0 +de 03_wind_off 1 269 1.0 0.0 +de 04_res 1 269 1.0 0.0 +de 05_nuclear 1 269 1.0 0.0 +de 06_coal 1 269 0.0 0.0 +de 07_gas 1 269 0.0 0.0 +de 08_non-res 1 269 0.0 0.0 +de 09_hydro_pump 1 269 0.0 0.0 +de 01_solar 1 270 1.0 0.0 +de 02_wind_on 1 270 1.0 0.0 +de 03_wind_off 1 270 1.0 0.0 +de 04_res 1 270 1.0 0.0 +de 05_nuclear 1 270 1.0 0.0 +de 06_coal 1 270 1.0 0.0 +de 07_gas 1 270 0.0 0.0 +de 08_non-res 1 270 0.0 0.0 +de 09_hydro_pump 1 270 0.0 0.0 +de 01_solar 1 271 1.0 0.0 +de 02_wind_on 1 271 1.0 0.0 +de 03_wind_off 1 271 1.0 0.0 +de 04_res 1 271 1.0 0.0 +de 05_nuclear 1 271 1.0 0.0 +de 06_coal 1 271 1.0 0.0 +de 07_gas 1 271 0.0 0.0 +de 08_non-res 1 271 0.0 0.0 +de 09_hydro_pump 1 271 0.0 0.0 +de 01_solar 1 272 1.0 0.0 +de 02_wind_on 1 272 1.0 0.0 +de 03_wind_off 1 272 1.0 0.0 +de 04_res 1 272 1.0 0.0 +de 05_nuclear 1 272 1.0 0.0 +de 06_coal 1 272 1.0 0.0 +de 07_gas 1 272 0.0 0.0 +de 08_non-res 1 272 0.0 0.0 +de 09_hydro_pump 1 272 0.0 0.0 +de 01_solar 1 273 1.0 0.0 +de 02_wind_on 1 273 1.0 0.0 +de 03_wind_off 1 273 1.0 0.0 +de 04_res 1 273 1.0 0.0 +de 05_nuclear 1 273 1.0 0.0 +de 06_coal 1 273 1.0 0.0 +de 07_gas 1 273 0.0 0.0 +de 08_non-res 1 273 0.0 0.0 +de 09_hydro_pump 1 273 0.0 0.0 +de 01_solar 1 274 1.0 0.0 +de 02_wind_on 1 274 1.0 0.0 +de 03_wind_off 1 274 1.0 0.0 +de 04_res 1 274 1.0 0.0 +de 05_nuclear 1 274 1.0 0.0 +de 06_coal 1 274 1.0 0.0 +de 07_gas 1 274 0.0 0.0 +de 08_non-res 1 274 0.0 0.0 +de 09_hydro_pump 1 274 0.0 0.0 +de 01_solar 1 275 1.0 0.0 +de 02_wind_on 1 275 1.0 0.0 +de 03_wind_off 1 275 1.0 0.0 +de 04_res 1 275 1.0 0.0 +de 05_nuclear 1 275 1.0 0.0 +de 06_coal 1 275 1.0 0.0 +de 07_gas 1 275 0.0 0.0 +de 08_non-res 1 275 0.0 0.0 +de 09_hydro_pump 1 275 0.0 0.0 +de 01_solar 1 276 1.0 0.0 +de 02_wind_on 1 276 1.0 0.0 +de 03_wind_off 1 276 1.0 0.0 +de 04_res 1 276 1.0 0.0 +de 05_nuclear 1 276 1.0 0.0 +de 06_coal 1 276 1.0 0.0 +de 07_gas 1 276 0.0 0.0 +de 08_non-res 1 276 0.0 0.0 +de 09_hydro_pump 1 276 0.0 0.0 +de 01_solar 1 277 1.0 0.0 +de 02_wind_on 1 277 1.0 0.0 +de 03_wind_off 1 277 1.0 0.0 +de 04_res 1 277 1.0 0.0 +de 05_nuclear 1 277 1.0 0.0 +de 06_coal 1 277 1.0 0.0 +de 07_gas 1 277 0.0 0.0 +de 08_non-res 1 277 0.0 0.0 +de 09_hydro_pump 1 277 0.0 0.0 +de 01_solar 1 278 1.0 0.0 +de 02_wind_on 1 278 1.0 0.0 +de 03_wind_off 1 278 1.0 0.0 +de 04_res 1 278 1.0 0.0 +de 05_nuclear 1 278 1.0 0.0 +de 06_coal 1 278 1.0 0.0 +de 07_gas 1 278 0.0 0.0 +de 08_non-res 1 278 0.0 0.0 +de 09_hydro_pump 1 278 0.0 0.0 +de 01_solar 1 279 1.0 0.0 +de 02_wind_on 1 279 1.0 0.0 +de 03_wind_off 1 279 1.0 0.0 +de 04_res 1 279 1.0 0.0 +de 05_nuclear 1 279 1.0 0.0 +de 06_coal 1 279 1.0 0.0 +de 07_gas 1 279 0.0 0.0 +de 08_non-res 1 279 0.0 0.0 +de 09_hydro_pump 1 279 0.0 0.0 +de 01_solar 1 280 1.0 0.0 +de 02_wind_on 1 280 1.0 0.0 +de 03_wind_off 1 280 1.0 0.0 +de 04_res 1 280 1.0 0.0 +de 05_nuclear 1 280 1.0 0.0 +de 06_coal 1 280 1.0 0.0 +de 07_gas 1 280 0.0 0.0 +de 08_non-res 1 280 0.0 0.0 +de 09_hydro_pump 1 280 0.0 0.0 +de 01_solar 1 281 1.0 0.0 +de 02_wind_on 1 281 1.0 0.0 +de 03_wind_off 1 281 1.0 0.0 +de 04_res 1 281 1.0 0.0 +de 05_nuclear 1 281 1.0 0.0 +de 06_coal 1 281 1.0 0.0 +de 07_gas 1 281 0.0 0.0 +de 08_non-res 1 281 0.0 0.0 +de 09_hydro_pump 1 281 0.0 0.0 +de 01_solar 1 282 1.0 0.0 +de 02_wind_on 1 282 1.0 0.0 +de 03_wind_off 1 282 1.0 0.0 +de 04_res 1 282 1.0 0.0 +de 05_nuclear 1 282 1.0 0.0 +de 06_coal 1 282 1.0 0.0 +de 07_gas 1 282 0.0 0.0 +de 08_non-res 1 282 0.0 0.0 +de 09_hydro_pump 1 282 0.0 0.0 +de 01_solar 1 283 1.0 0.0 +de 02_wind_on 1 283 1.0 0.0 +de 03_wind_off 1 283 1.0 0.0 +de 04_res 1 283 1.0 0.0 +de 05_nuclear 1 283 1.0 0.0 +de 06_coal 1 283 1.0 0.0 +de 07_gas 1 283 0.0 0.0 +de 08_non-res 1 283 0.0 0.0 +de 09_hydro_pump 1 283 0.0 0.0 +de 01_solar 1 284 1.0 0.0 +de 02_wind_on 1 284 1.0 0.0 +de 03_wind_off 1 284 1.0 0.0 +de 04_res 1 284 1.0 0.0 +de 05_nuclear 1 284 1.0 0.0 +de 06_coal 1 284 1.0 0.0 +de 07_gas 1 284 0.0 0.0 +de 08_non-res 1 284 0.0 0.0 +de 09_hydro_pump 1 284 0.0 0.0 +de 01_solar 1 285 1.0 0.0 +de 02_wind_on 1 285 1.0 0.0 +de 03_wind_off 1 285 1.0 0.0 +de 04_res 1 285 1.0 0.0 +de 05_nuclear 1 285 1.0 0.0 +de 06_coal 1 285 1.0 0.0 +de 07_gas 1 285 0.0 0.0 +de 08_non-res 1 285 0.0 0.0 +de 09_hydro_pump 1 285 0.0 0.0 +de 01_solar 1 286 1.0 0.0 +de 02_wind_on 1 286 1.0 0.0 +de 03_wind_off 1 286 1.0 0.0 +de 04_res 1 286 1.0 0.0 +de 05_nuclear 1 286 1.0 0.0 +de 06_coal 1 286 1.0 0.0 +de 07_gas 1 286 0.0 0.0 +de 08_non-res 1 286 0.0 0.0 +de 09_hydro_pump 1 286 0.0 0.0 +de 01_solar 1 287 1.0 0.0 +de 02_wind_on 1 287 1.0 0.0 +de 03_wind_off 1 287 1.0 0.0 +de 04_res 1 287 1.0 0.0 +de 05_nuclear 1 287 1.0 0.0 +de 06_coal 1 287 1.0 0.0 +de 07_gas 1 287 0.0 0.0 +de 08_non-res 1 287 0.0 0.0 +de 09_hydro_pump 1 287 0.0 0.0 +de 01_solar 1 288 1.0 0.0 +de 02_wind_on 1 288 1.0 0.0 +de 03_wind_off 1 288 1.0 0.0 +de 04_res 1 288 1.0 0.0 +de 05_nuclear 1 288 1.0 0.0 +de 06_coal 1 288 1.0 0.0 +de 07_gas 1 288 0.0 0.0 +de 08_non-res 1 288 0.0 0.0 +de 09_hydro_pump 1 288 0.0 0.0 +de 01_solar 1 289 1.0 0.0 +de 02_wind_on 1 289 1.0 0.0 +de 03_wind_off 1 289 1.0 0.0 +de 04_res 1 289 1.0 0.0 +de 05_nuclear 1 289 1.0 0.0 +de 06_coal 1 289 1.0 0.0 +de 07_gas 1 289 0.0 0.0 +de 08_non-res 1 289 0.0 0.0 +de 09_hydro_pump 1 289 0.0 0.0 +de 01_solar 1 290 1.0 0.0 +de 02_wind_on 1 290 1.0 0.0 +de 03_wind_off 1 290 1.0 0.0 +de 04_res 1 290 1.0 0.0 +de 05_nuclear 1 290 1.0 0.0 +de 06_coal 1 290 1.0 0.0 +de 07_gas 1 290 1.0 0.0 +de 08_non-res 1 290 0.0 0.0 +de 09_hydro_pump 1 290 0.0 0.0 +de 01_solar 1 291 1.0 0.0 +de 02_wind_on 1 291 1.0 0.0 +de 03_wind_off 1 291 1.0 0.0 +de 04_res 1 291 1.0 0.0 +de 05_nuclear 1 291 1.0 0.0 +de 06_coal 1 291 1.0 0.0 +de 07_gas 1 291 1.0 0.0 +de 08_non-res 1 291 0.0 0.0 +de 09_hydro_pump 1 291 0.0 0.0 +de 01_solar 1 292 1.0 0.0 +de 02_wind_on 1 292 1.0 0.0 +de 03_wind_off 1 292 1.0 0.0 +de 04_res 1 292 1.0 0.0 +de 05_nuclear 1 292 1.0 0.0 +de 06_coal 1 292 1.0 0.0 +de 07_gas 1 292 1.0 0.0 +de 08_non-res 1 292 0.0 0.0 +de 09_hydro_pump 1 292 0.0 0.0 +de 01_solar 1 293 1.0 0.0 +de 02_wind_on 1 293 1.0 0.0 +de 03_wind_off 1 293 1.0 0.0 +de 04_res 1 293 1.0 0.0 +de 05_nuclear 1 293 1.0 0.0 +de 06_coal 1 293 1.0 0.0 +de 07_gas 1 293 1.0 0.0 +de 08_non-res 1 293 0.0 0.0 +de 09_hydro_pump 1 293 0.0 0.0 +de 01_solar 1 294 1.0 0.0 +de 02_wind_on 1 294 1.0 0.0 +de 03_wind_off 1 294 1.0 0.0 +de 04_res 1 294 1.0 0.0 +de 05_nuclear 1 294 1.0 0.0 +de 06_coal 1 294 1.0 0.0 +de 07_gas 1 294 1.0 0.0 +de 08_non-res 1 294 0.0 0.0 +de 09_hydro_pump 1 294 0.0 0.0 +de 01_solar 1 295 1.0 0.0 +de 02_wind_on 1 295 1.0 0.0 +de 03_wind_off 1 295 1.0 0.0 +de 04_res 1 295 1.0 0.0 +de 05_nuclear 1 295 1.0 0.0 +de 06_coal 1 295 1.0 0.0 +de 07_gas 1 295 1.0 0.0 +de 08_non-res 1 295 0.0 0.0 +de 09_hydro_pump 1 295 0.0 0.0 +de 01_solar 1 296 1.0 0.0 +de 02_wind_on 1 296 1.0 0.0 +de 03_wind_off 1 296 1.0 0.0 +de 04_res 1 296 1.0 0.0 +de 05_nuclear 1 296 1.0 0.0 +de 06_coal 1 296 1.0 0.0 +de 07_gas 1 296 1.0 0.0 +de 08_non-res 1 296 0.0 0.0 +de 09_hydro_pump 1 296 0.0 0.0 +de 01_solar 1 297 1.0 0.0 +de 02_wind_on 1 297 1.0 0.0 +de 03_wind_off 1 297 1.0 0.0 +de 04_res 1 297 1.0 0.0 +de 05_nuclear 1 297 1.0 0.0 +de 06_coal 1 297 1.0 0.0 +de 07_gas 1 297 1.0 0.0 +de 08_non-res 1 297 0.0 0.0 +de 09_hydro_pump 1 297 0.0 0.0 +de 01_solar 1 298 1.0 0.0 +de 02_wind_on 1 298 1.0 0.0 +de 03_wind_off 1 298 1.0 0.0 +de 04_res 1 298 1.0 0.0 +de 05_nuclear 1 298 1.0 0.0 +de 06_coal 1 298 1.0 0.0 +de 07_gas 1 298 1.0 0.0 +de 08_non-res 1 298 0.0 0.0 +de 09_hydro_pump 1 298 0.0 0.0 +de 01_solar 1 299 1.0 0.0 +de 02_wind_on 1 299 1.0 0.0 +de 03_wind_off 1 299 1.0 0.0 +de 04_res 1 299 1.0 0.0 +de 05_nuclear 1 299 1.0 0.0 +de 06_coal 1 299 1.0 0.0 +de 07_gas 1 299 1.0 0.0 +de 08_non-res 1 299 0.0 0.0 +de 09_hydro_pump 1 299 0.0 0.0 +de 01_solar 1 300 1.0 0.0 +de 02_wind_on 1 300 1.0 0.0 +de 03_wind_off 1 300 1.0 0.0 +de 04_res 1 300 1.0 0.0 +de 05_nuclear 1 300 1.0 0.0 +de 06_coal 1 300 1.0 0.0 +de 07_gas 1 300 1.0 0.0 +de 08_non-res 1 300 0.0 0.0 +de 09_hydro_pump 1 300 0.0 0.0 +de 01_solar 1 301 1.0 0.0 +de 02_wind_on 1 301 1.0 0.0 +de 03_wind_off 1 301 1.0 0.0 +de 04_res 1 301 1.0 0.0 +de 05_nuclear 1 301 1.0 0.0 +de 06_coal 1 301 1.0 0.0 +de 07_gas 1 301 1.0 0.0 +de 08_non-res 1 301 0.0 0.0 +de 09_hydro_pump 1 301 0.0 0.0 +de 01_solar 1 302 1.0 0.0 +de 02_wind_on 1 302 1.0 0.0 +de 03_wind_off 1 302 1.0 0.0 +de 04_res 1 302 1.0 0.0 +de 05_nuclear 1 302 1.0 0.0 +de 06_coal 1 302 1.0 0.0 +de 07_gas 1 302 1.0 0.0 +de 08_non-res 1 302 0.0 0.0 +de 09_hydro_pump 1 302 0.0 0.0 +de 01_solar 1 303 1.0 0.0 +de 02_wind_on 1 303 1.0 0.0 +de 03_wind_off 1 303 1.0 0.0 +de 04_res 1 303 1.0 0.0 +de 05_nuclear 1 303 1.0 0.0 +de 06_coal 1 303 1.0 0.0 +de 07_gas 1 303 1.0 0.0 +de 08_non-res 1 303 0.0 0.0 +de 09_hydro_pump 1 303 0.0 0.0 +de 01_solar 1 304 1.0 0.0 +de 02_wind_on 1 304 1.0 0.0 +de 03_wind_off 1 304 1.0 0.0 +de 04_res 1 304 1.0 0.0 +de 05_nuclear 1 304 1.0 0.0 +de 06_coal 1 304 1.0 0.0 +de 07_gas 1 304 1.0 0.0 +de 08_non-res 1 304 0.0 0.0 +de 09_hydro_pump 1 304 0.0 0.0 +de 01_solar 1 305 1.0 0.0 +de 02_wind_on 1 305 1.0 0.0 +de 03_wind_off 1 305 1.0 0.0 +de 04_res 1 305 1.0 0.0 +de 05_nuclear 1 305 1.0 0.0 +de 06_coal 1 305 1.0 0.0 +de 07_gas 1 305 1.0 0.0 +de 08_non-res 1 305 0.0 0.0 +de 09_hydro_pump 1 305 0.0 0.0 +de 01_solar 1 306 1.0 0.0 +de 02_wind_on 1 306 1.0 0.0 +de 03_wind_off 1 306 1.0 0.0 +de 04_res 1 306 1.0 0.0 +de 05_nuclear 1 306 1.0 0.0 +de 06_coal 1 306 1.0 0.0 +de 07_gas 1 306 1.0 0.0 +de 08_non-res 1 306 0.0 0.0 +de 09_hydro_pump 1 306 0.0 0.0 +de 01_solar 1 307 1.0 0.0 +de 02_wind_on 1 307 1.0 0.0 +de 03_wind_off 1 307 1.0 0.0 +de 04_res 1 307 1.0 0.0 +de 05_nuclear 1 307 1.0 0.0 +de 06_coal 1 307 1.0 0.0 +de 07_gas 1 307 1.0 0.0 +de 08_non-res 1 307 0.0 0.0 +de 09_hydro_pump 1 307 0.0 0.0 +de 01_solar 1 308 1.0 0.0 +de 02_wind_on 1 308 1.0 0.0 +de 03_wind_off 1 308 1.0 0.0 +de 04_res 1 308 1.0 0.0 +de 05_nuclear 1 308 1.0 0.0 +de 06_coal 1 308 1.0 0.0 +de 07_gas 1 308 1.0 0.0 +de 08_non-res 1 308 0.0 0.0 +de 09_hydro_pump 1 308 0.0 0.0 +de 01_solar 1 309 1.0 0.0 +de 02_wind_on 1 309 1.0 0.0 +de 03_wind_off 1 309 1.0 0.0 +de 04_res 1 309 1.0 0.0 +de 05_nuclear 1 309 1.0 0.0 +de 06_coal 1 309 1.0 0.0 +de 07_gas 1 309 1.0 0.0 +de 08_non-res 1 309 0.0 0.0 +de 09_hydro_pump 1 309 0.0 0.0 +de 01_solar 1 310 1.0 0.0 +de 02_wind_on 1 310 1.0 0.0 +de 03_wind_off 1 310 1.0 0.0 +de 04_res 1 310 1.0 0.0 +de 05_nuclear 1 310 1.0 0.0 +de 06_coal 1 310 1.0 0.0 +de 07_gas 1 310 1.0 0.0 +de 08_non-res 1 310 1.0 0.0 +de 09_hydro_pump 1 310 0.0 0.0 +de 01_solar 1 311 1.0 0.0 +de 02_wind_on 1 311 1.0 0.0 +de 03_wind_off 1 311 1.0 0.0 +de 04_res 1 311 1.0 0.0 +de 05_nuclear 1 311 1.0 0.0 +de 06_coal 1 311 1.0 0.0 +de 07_gas 1 311 1.0 0.0 +de 08_non-res 1 311 1.0 0.0 +de 09_hydro_pump 1 311 0.0 0.0 +de 01_solar 1 312 1.0 0.0 +de 02_wind_on 1 312 1.0 0.0 +de 03_wind_off 1 312 1.0 0.0 +de 04_res 1 312 1.0 0.0 +de 05_nuclear 1 312 1.0 0.0 +de 06_coal 1 312 1.0 0.0 +de 07_gas 1 312 1.0 0.0 +de 08_non-res 1 312 1.0 0.0 +de 09_hydro_pump 1 312 0.0 0.0 +de 01_solar 1 313 1.0 0.0 +de 02_wind_on 1 313 1.0 0.0 +de 03_wind_off 1 313 1.0 0.0 +de 04_res 1 313 1.0 0.0 +de 05_nuclear 1 313 1.0 0.0 +de 06_coal 1 313 1.0 0.0 +de 07_gas 1 313 1.0 0.0 +de 08_non-res 1 313 1.0 0.0 +de 09_hydro_pump 1 313 0.0 0.0 +de 01_solar 1 314 1.0 0.0 +de 02_wind_on 1 314 1.0 0.0 +de 03_wind_off 1 314 1.0 0.0 +de 04_res 1 314 1.0 0.0 +de 05_nuclear 1 314 1.0 0.0 +de 06_coal 1 314 1.0 0.0 +de 07_gas 1 314 1.0 0.0 +de 08_non-res 1 314 1.0 0.0 +de 09_hydro_pump 1 314 0.0 0.0 +de 01_solar 1 315 1.0 0.0 +de 02_wind_on 1 315 1.0 0.0 +de 03_wind_off 1 315 1.0 0.0 +de 04_res 1 315 1.0 0.0 +de 05_nuclear 1 315 1.0 0.0 +de 06_coal 1 315 1.0 0.0 +de 07_gas 1 315 1.0 0.0 +de 08_non-res 1 315 1.0 0.0 +de 09_hydro_pump 1 315 0.0 0.0 +de 01_solar 1 316 1.0 0.0 +de 02_wind_on 1 316 1.0 0.0 +de 03_wind_off 1 316 1.0 0.0 +de 04_res 1 316 1.0 0.0 +de 05_nuclear 1 316 1.0 0.0 +de 06_coal 1 316 1.0 0.0 +de 07_gas 1 316 1.0 0.0 +de 08_non-res 1 316 1.0 0.0 +de 09_hydro_pump 1 316 0.0 0.0 +de 01_solar 1 317 1.0 0.0 +de 02_wind_on 1 317 1.0 0.0 +de 03_wind_off 1 317 1.0 0.0 +de 04_res 1 317 1.0 0.0 +de 05_nuclear 1 317 1.0 0.0 +de 06_coal 1 317 1.0 0.0 +de 07_gas 1 317 1.0 0.0 +de 08_non-res 1 317 1.0 0.0 +de 09_hydro_pump 1 317 0.0 0.0 +de 01_solar 1 318 1.0 0.0 +de 02_wind_on 1 318 1.0 0.0 +de 03_wind_off 1 318 1.0 0.0 +de 04_res 1 318 1.0 0.0 +de 05_nuclear 1 318 1.0 0.0 +de 06_coal 1 318 1.0 0.0 +de 07_gas 1 318 1.0 0.0 +de 08_non-res 1 318 1.0 0.0 +de 09_hydro_pump 1 318 0.0 0.0 +de 01_solar 1 319 1.0 0.0 +de 02_wind_on 1 319 1.0 0.0 +de 03_wind_off 1 319 1.0 0.0 +de 04_res 1 319 1.0 0.0 +de 05_nuclear 1 319 1.0 0.0 +de 06_coal 1 319 1.0 0.0 +de 07_gas 1 319 1.0 0.0 +de 08_non-res 1 319 1.0 0.0 +de 09_hydro_pump 1 319 0.0 0.0 +de 01_solar 1 320 1.0 0.0 +de 02_wind_on 1 320 1.0 0.0 +de 03_wind_off 1 320 1.0 0.0 +de 04_res 1 320 1.0 0.0 +de 05_nuclear 1 320 1.0 0.0 +de 06_coal 1 320 1.0 0.0 +de 07_gas 1 320 1.0 0.0 +de 08_non-res 1 320 1.0 0.0 +de 09_hydro_pump 1 320 0.0 0.0 +de 01_solar 1 321 1.0 0.0 +de 02_wind_on 1 321 1.0 0.0 +de 03_wind_off 1 321 1.0 0.0 +de 04_res 1 321 1.0 0.0 +de 05_nuclear 1 321 1.0 0.0 +de 06_coal 1 321 1.0 0.0 +de 07_gas 1 321 1.0 0.0 +de 08_non-res 1 321 1.0 0.0 +de 09_hydro_pump 1 321 0.0 0.0 +de 01_solar 1 322 1.0 0.0 +de 02_wind_on 1 322 1.0 0.0 +de 03_wind_off 1 322 1.0 0.0 +de 04_res 1 322 1.0 0.0 +de 05_nuclear 1 322 1.0 0.0 +de 06_coal 1 322 1.0 0.0 +de 07_gas 1 322 1.0 0.0 +de 08_non-res 1 322 1.0 0.0 +de 09_hydro_pump 1 322 0.0 0.0 +de 01_solar 1 323 1.0 0.0 +de 02_wind_on 1 323 1.0 0.0 +de 03_wind_off 1 323 1.0 0.0 +de 04_res 1 323 1.0 0.0 +de 05_nuclear 1 323 1.0 0.0 +de 06_coal 1 323 1.0 0.0 +de 07_gas 1 323 1.0 0.0 +de 08_non-res 1 323 1.0 0.0 +de 09_hydro_pump 1 323 0.0 0.0 +de 01_solar 1 324 1.0 0.0 +de 02_wind_on 1 324 1.0 0.0 +de 03_wind_off 1 324 1.0 0.0 +de 04_res 1 324 1.0 0.0 +de 05_nuclear 1 324 1.0 0.0 +de 06_coal 1 324 1.0 0.0 +de 07_gas 1 324 1.0 0.0 +de 08_non-res 1 324 1.0 0.0 +de 09_hydro_pump 1 324 0.0 0.0 +de 01_solar 1 325 1.0 0.0 +de 02_wind_on 1 325 1.0 0.0 +de 03_wind_off 1 325 1.0 0.0 +de 04_res 1 325 1.0 0.0 +de 05_nuclear 1 325 1.0 0.0 +de 06_coal 1 325 1.0 0.0 +de 07_gas 1 325 1.0 0.0 +de 08_non-res 1 325 1.0 0.0 +de 09_hydro_pump 1 325 0.0 0.0 +de 01_solar 1 326 1.0 0.0 +de 02_wind_on 1 326 1.0 0.0 +de 03_wind_off 1 326 1.0 0.0 +de 04_res 1 326 1.0 0.0 +de 05_nuclear 1 326 1.0 0.0 +de 06_coal 1 326 1.0 0.0 +de 07_gas 1 326 1.0 0.0 +de 08_non-res 1 326 1.0 0.0 +de 09_hydro_pump 1 326 0.0 0.0 +de 01_solar 1 327 1.0 0.0 +de 02_wind_on 1 327 1.0 0.0 +de 03_wind_off 1 327 1.0 0.0 +de 04_res 1 327 1.0 0.0 +de 05_nuclear 1 327 1.0 0.0 +de 06_coal 1 327 1.0 0.0 +de 07_gas 1 327 1.0 0.0 +de 08_non-res 1 327 1.0 0.0 +de 09_hydro_pump 1 327 0.0 0.0 +de 01_solar 1 328 1.0 0.0 +de 02_wind_on 1 328 1.0 0.0 +de 03_wind_off 1 328 1.0 0.0 +de 04_res 1 328 1.0 0.0 +de 05_nuclear 1 328 1.0 0.0 +de 06_coal 1 328 1.0 0.0 +de 07_gas 1 328 1.0 0.0 +de 08_non-res 1 328 1.0 0.0 +de 09_hydro_pump 1 328 0.0 0.0 +de 01_solar 1 329 1.0 0.0 +de 02_wind_on 1 329 1.0 0.0 +de 03_wind_off 1 329 1.0 0.0 +de 04_res 1 329 1.0 0.0 +de 05_nuclear 1 329 1.0 0.0 +de 06_coal 1 329 1.0 0.0 +de 07_gas 1 329 1.0 0.0 +de 08_non-res 1 329 1.0 0.0 +de 09_hydro_pump 1 329 0.0 0.0 +de 01_solar 1 330 1.0 0.0 +de 02_wind_on 1 330 1.0 0.0 +de 03_wind_off 1 330 1.0 0.0 +de 04_res 1 330 1.0 0.0 +de 05_nuclear 1 330 1.0 0.0 +de 06_coal 1 330 1.0 0.0 +de 07_gas 1 330 1.0 0.0 +de 08_non-res 1 330 1.0 0.0 +de 09_hydro_pump 1 330 1.0 0.0 +de 01_solar 1 331 1.0 0.0 +de 02_wind_on 1 331 1.0 0.0 +de 03_wind_off 1 331 1.0 0.0 +de 04_res 1 331 1.0 0.0 +de 05_nuclear 1 331 1.0 0.0 +de 06_coal 1 331 1.0 0.0 +de 07_gas 1 331 1.0 0.0 +de 08_non-res 1 331 1.0 0.0 +de 09_hydro_pump 1 331 1.0 0.0 +de 01_solar 1 332 1.0 0.0 +de 02_wind_on 1 332 1.0 0.0 +de 03_wind_off 1 332 1.0 0.0 +de 04_res 1 332 1.0 0.0 +de 05_nuclear 1 332 1.0 0.0 +de 06_coal 1 332 1.0 0.0 +de 07_gas 1 332 1.0 0.0 +de 08_non-res 1 332 1.0 0.0 +de 09_hydro_pump 1 332 1.0 0.0 +de 01_solar 1 333 1.0 0.0 +de 02_wind_on 1 333 1.0 0.0 +de 03_wind_off 1 333 1.0 0.0 +de 04_res 1 333 1.0 0.0 +de 05_nuclear 1 333 1.0 0.0 +de 06_coal 1 333 1.0 0.0 +de 07_gas 1 333 1.0 0.0 +de 08_non-res 1 333 1.0 0.0 +de 09_hydro_pump 1 333 1.0 0.0 +de 01_solar 1 334 1.0 0.0 +de 02_wind_on 1 334 1.0 0.0 +de 03_wind_off 1 334 1.0 0.0 +de 04_res 1 334 1.0 0.0 +de 05_nuclear 1 334 1.0 0.0 +de 06_coal 1 334 1.0 0.0 +de 07_gas 1 334 1.0 0.0 +de 08_non-res 1 334 1.0 0.0 +de 09_hydro_pump 1 334 1.0 0.0 +de 01_solar 1 335 1.0 0.0 +de 02_wind_on 1 335 1.0 0.0 +de 03_wind_off 1 335 1.0 0.0 +de 04_res 1 335 1.0 0.0 +de 05_nuclear 1 335 1.0 0.0 +de 06_coal 1 335 1.0 0.0 +de 07_gas 1 335 1.0 0.0 +de 08_non-res 1 335 1.0 0.0 +de 09_hydro_pump 1 335 1.0 0.0 +de 01_solar 1 336 1.0 0.0 +de 02_wind_on 1 336 1.0 0.0 +de 03_wind_off 1 336 1.0 0.0 +de 04_res 1 336 1.0 0.0 +de 05_nuclear 1 336 1.0 0.0 +de 06_coal 1 336 1.0 0.0 +de 07_gas 1 336 1.0 0.0 +de 08_non-res 1 336 1.0 0.0 +de 09_hydro_pump 1 336 1.0 0.0 +es 01_solar 1 1 0.0 0.0 +es 02_wind_on 1 1 0.0 0.0 +es 03_wind_off 1 1 0.0 0.0 +es 04_res 1 1 0.0 0.0 +es 05_nuclear 1 1 0.0 0.0 +es 06_coal 1 1 0.0 0.0 +es 07_gas 1 1 0.0 0.0 +es 08_non-res 1 1 0.0 0.0 +es 09_hydro_pump 1 1 0.0 0.0 +es 01_solar 1 2 1.0 0.0 +es 02_wind_on 1 2 0.0 0.0 +es 03_wind_off 1 2 0.0 0.0 +es 04_res 1 2 0.0 0.0 +es 05_nuclear 1 2 0.0 0.0 +es 06_coal 1 2 0.0 0.0 +es 07_gas 1 2 0.0 0.0 +es 08_non-res 1 2 0.0 0.0 +es 09_hydro_pump 1 2 0.0 0.0 +es 01_solar 1 3 1.0 0.0 +es 02_wind_on 1 3 0.0 0.0 +es 03_wind_off 1 3 0.0 0.0 +es 04_res 1 3 0.0 0.0 +es 05_nuclear 1 3 0.0 0.0 +es 06_coal 1 3 0.0 0.0 +es 07_gas 1 3 0.0 0.0 +es 08_non-res 1 3 0.0 0.0 +es 09_hydro_pump 1 3 0.0 0.0 +es 01_solar 1 4 1.0 0.0 +es 02_wind_on 1 4 0.0 0.0 +es 03_wind_off 1 4 0.0 0.0 +es 04_res 1 4 0.0 0.0 +es 05_nuclear 1 4 0.0 0.0 +es 06_coal 1 4 0.0 0.0 +es 07_gas 1 4 0.0 0.0 +es 08_non-res 1 4 0.0 0.0 +es 09_hydro_pump 1 4 0.0 0.0 +es 01_solar 1 5 1.0 0.0 +es 02_wind_on 1 5 0.0 0.0 +es 03_wind_off 1 5 0.0 0.0 +es 04_res 1 5 0.0 0.0 +es 05_nuclear 1 5 0.0 0.0 +es 06_coal 1 5 0.0 0.0 +es 07_gas 1 5 0.0 0.0 +es 08_non-res 1 5 0.0 0.0 +es 09_hydro_pump 1 5 0.0 0.0 +es 01_solar 1 6 1.0 0.0 +es 02_wind_on 1 6 0.0 0.0 +es 03_wind_off 1 6 0.0 0.0 +es 04_res 1 6 0.0 0.0 +es 05_nuclear 1 6 0.0 0.0 +es 06_coal 1 6 0.0 0.0 +es 07_gas 1 6 0.0 0.0 +es 08_non-res 1 6 0.0 0.0 +es 09_hydro_pump 1 6 0.0 0.0 +es 01_solar 1 7 1.0 0.0 +es 02_wind_on 1 7 0.0 0.0 +es 03_wind_off 1 7 0.0 0.0 +es 04_res 1 7 0.0 0.0 +es 05_nuclear 1 7 0.0 0.0 +es 06_coal 1 7 0.0 0.0 +es 07_gas 1 7 0.0 0.0 +es 08_non-res 1 7 0.0 0.0 +es 09_hydro_pump 1 7 0.0 0.0 +es 01_solar 1 8 1.0 0.0 +es 02_wind_on 1 8 0.0 0.0 +es 03_wind_off 1 8 0.0 0.0 +es 04_res 1 8 0.0 0.0 +es 05_nuclear 1 8 0.0 0.0 +es 06_coal 1 8 0.0 0.0 +es 07_gas 1 8 0.0 0.0 +es 08_non-res 1 8 0.0 0.0 +es 09_hydro_pump 1 8 0.0 0.0 +es 01_solar 1 9 1.0 0.0 +es 02_wind_on 1 9 0.0 0.0 +es 03_wind_off 1 9 0.0 0.0 +es 04_res 1 9 0.0 0.0 +es 05_nuclear 1 9 0.0 0.0 +es 06_coal 1 9 0.0 0.0 +es 07_gas 1 9 0.0 0.0 +es 08_non-res 1 9 0.0 0.0 +es 09_hydro_pump 1 9 0.0 0.0 +es 01_solar 1 10 1.0 0.0 +es 02_wind_on 1 10 0.0 0.0 +es 03_wind_off 1 10 0.0 0.0 +es 04_res 1 10 0.0 0.0 +es 05_nuclear 1 10 0.0 0.0 +es 06_coal 1 10 0.0 0.0 +es 07_gas 1 10 0.0 0.0 +es 08_non-res 1 10 0.0 0.0 +es 09_hydro_pump 1 10 0.0 0.0 +es 01_solar 1 11 1.0 0.0 +es 02_wind_on 1 11 0.0 0.0 +es 03_wind_off 1 11 0.0 0.0 +es 04_res 1 11 0.0 0.0 +es 05_nuclear 1 11 0.0 0.0 +es 06_coal 1 11 0.0 0.0 +es 07_gas 1 11 0.0 0.0 +es 08_non-res 1 11 0.0 0.0 +es 09_hydro_pump 1 11 0.0 0.0 +es 01_solar 1 12 1.0 0.0 +es 02_wind_on 1 12 0.0 0.0 +es 03_wind_off 1 12 0.0 0.0 +es 04_res 1 12 0.0 0.0 +es 05_nuclear 1 12 0.0 0.0 +es 06_coal 1 12 0.0 0.0 +es 07_gas 1 12 0.0 0.0 +es 08_non-res 1 12 0.0 0.0 +es 09_hydro_pump 1 12 0.0 0.0 +es 01_solar 1 13 1.0 0.0 +es 02_wind_on 1 13 0.0 0.0 +es 03_wind_off 1 13 0.0 0.0 +es 04_res 1 13 0.0 0.0 +es 05_nuclear 1 13 0.0 0.0 +es 06_coal 1 13 0.0 0.0 +es 07_gas 1 13 0.0 0.0 +es 08_non-res 1 13 0.0 0.0 +es 09_hydro_pump 1 13 0.0 0.0 +es 01_solar 1 14 1.0 0.0 +es 02_wind_on 1 14 0.0 0.0 +es 03_wind_off 1 14 0.0 0.0 +es 04_res 1 14 0.0 0.0 +es 05_nuclear 1 14 0.0 0.0 +es 06_coal 1 14 0.0 0.0 +es 07_gas 1 14 0.0 0.0 +es 08_non-res 1 14 0.0 0.0 +es 09_hydro_pump 1 14 0.0 0.0 +es 01_solar 1 15 1.0 0.0 +es 02_wind_on 1 15 0.0 0.0 +es 03_wind_off 1 15 0.0 0.0 +es 04_res 1 15 0.0 0.0 +es 05_nuclear 1 15 0.0 0.0 +es 06_coal 1 15 0.0 0.0 +es 07_gas 1 15 0.0 0.0 +es 08_non-res 1 15 0.0 0.0 +es 09_hydro_pump 1 15 0.0 0.0 +es 01_solar 1 16 1.0 0.0 +es 02_wind_on 1 16 0.0 0.0 +es 03_wind_off 1 16 0.0 0.0 +es 04_res 1 16 0.0 0.0 +es 05_nuclear 1 16 0.0 0.0 +es 06_coal 1 16 0.0 0.0 +es 07_gas 1 16 0.0 0.0 +es 08_non-res 1 16 0.0 0.0 +es 09_hydro_pump 1 16 0.0 0.0 +es 01_solar 1 17 1.0 0.0 +es 02_wind_on 1 17 0.0 0.0 +es 03_wind_off 1 17 0.0 0.0 +es 04_res 1 17 0.0 0.0 +es 05_nuclear 1 17 0.0 0.0 +es 06_coal 1 17 0.0 0.0 +es 07_gas 1 17 0.0 0.0 +es 08_non-res 1 17 0.0 0.0 +es 09_hydro_pump 1 17 0.0 0.0 +es 01_solar 1 18 1.0 0.0 +es 02_wind_on 1 18 0.0 0.0 +es 03_wind_off 1 18 0.0 0.0 +es 04_res 1 18 0.0 0.0 +es 05_nuclear 1 18 0.0 0.0 +es 06_coal 1 18 0.0 0.0 +es 07_gas 1 18 0.0 0.0 +es 08_non-res 1 18 0.0 0.0 +es 09_hydro_pump 1 18 0.0 0.0 +es 01_solar 1 19 1.0 0.0 +es 02_wind_on 1 19 0.0 0.0 +es 03_wind_off 1 19 0.0 0.0 +es 04_res 1 19 0.0 0.0 +es 05_nuclear 1 19 0.0 0.0 +es 06_coal 1 19 0.0 0.0 +es 07_gas 1 19 0.0 0.0 +es 08_non-res 1 19 0.0 0.0 +es 09_hydro_pump 1 19 0.0 0.0 +es 01_solar 1 20 1.0 0.0 +es 02_wind_on 1 20 0.0 0.0 +es 03_wind_off 1 20 0.0 0.0 +es 04_res 1 20 0.0 0.0 +es 05_nuclear 1 20 0.0 0.0 +es 06_coal 1 20 0.0 0.0 +es 07_gas 1 20 0.0 0.0 +es 08_non-res 1 20 0.0 0.0 +es 09_hydro_pump 1 20 0.0 0.0 +es 01_solar 1 21 1.0 0.0 +es 02_wind_on 1 21 0.0 0.0 +es 03_wind_off 1 21 0.0 0.0 +es 04_res 1 21 0.0 0.0 +es 05_nuclear 1 21 0.0 0.0 +es 06_coal 1 21 0.0 0.0 +es 07_gas 1 21 0.0 0.0 +es 08_non-res 1 21 0.0 0.0 +es 09_hydro_pump 1 21 0.0 0.0 +es 01_solar 1 22 1.0 0.0 +es 02_wind_on 1 22 1.0 0.0 +es 03_wind_off 1 22 0.0 0.0 +es 04_res 1 22 0.0 0.0 +es 05_nuclear 1 22 0.0 0.0 +es 06_coal 1 22 0.0 0.0 +es 07_gas 1 22 0.0 0.0 +es 08_non-res 1 22 0.0 0.0 +es 09_hydro_pump 1 22 0.0 0.0 +es 01_solar 1 23 1.0 0.0 +es 02_wind_on 1 23 1.0 0.0 +es 03_wind_off 1 23 0.0 0.0 +es 04_res 1 23 0.0 0.0 +es 05_nuclear 1 23 0.0 0.0 +es 06_coal 1 23 0.0 0.0 +es 07_gas 1 23 0.0 0.0 +es 08_non-res 1 23 0.0 0.0 +es 09_hydro_pump 1 23 0.0 0.0 +es 01_solar 1 24 1.0 0.0 +es 02_wind_on 1 24 1.0 0.0 +es 03_wind_off 1 24 0.0 0.0 +es 04_res 1 24 0.0 0.0 +es 05_nuclear 1 24 0.0 0.0 +es 06_coal 1 24 0.0 0.0 +es 07_gas 1 24 0.0 0.0 +es 08_non-res 1 24 0.0 0.0 +es 09_hydro_pump 1 24 0.0 0.0 +es 01_solar 1 25 1.0 0.0 +es 02_wind_on 1 25 1.0 0.0 +es 03_wind_off 1 25 0.0 0.0 +es 04_res 1 25 0.0 0.0 +es 05_nuclear 1 25 0.0 0.0 +es 06_coal 1 25 0.0 0.0 +es 07_gas 1 25 0.0 0.0 +es 08_non-res 1 25 0.0 0.0 +es 09_hydro_pump 1 25 0.0 0.0 +es 01_solar 1 26 1.0 0.0 +es 02_wind_on 1 26 1.0 0.0 +es 03_wind_off 1 26 0.0 0.0 +es 04_res 1 26 0.0 0.0 +es 05_nuclear 1 26 0.0 0.0 +es 06_coal 1 26 0.0 0.0 +es 07_gas 1 26 0.0 0.0 +es 08_non-res 1 26 0.0 0.0 +es 09_hydro_pump 1 26 0.0 0.0 +es 01_solar 1 27 1.0 0.0 +es 02_wind_on 1 27 1.0 0.0 +es 03_wind_off 1 27 0.0 0.0 +es 04_res 1 27 0.0 0.0 +es 05_nuclear 1 27 0.0 0.0 +es 06_coal 1 27 0.0 0.0 +es 07_gas 1 27 0.0 0.0 +es 08_non-res 1 27 0.0 0.0 +es 09_hydro_pump 1 27 0.0 0.0 +es 01_solar 1 28 1.0 0.0 +es 02_wind_on 1 28 1.0 0.0 +es 03_wind_off 1 28 0.0 0.0 +es 04_res 1 28 0.0 0.0 +es 05_nuclear 1 28 0.0 0.0 +es 06_coal 1 28 0.0 0.0 +es 07_gas 1 28 0.0 0.0 +es 08_non-res 1 28 0.0 0.0 +es 09_hydro_pump 1 28 0.0 0.0 +es 01_solar 1 29 1.0 0.0 +es 02_wind_on 1 29 1.0 0.0 +es 03_wind_off 1 29 0.0 0.0 +es 04_res 1 29 0.0 0.0 +es 05_nuclear 1 29 0.0 0.0 +es 06_coal 1 29 0.0 0.0 +es 07_gas 1 29 0.0 0.0 +es 08_non-res 1 29 0.0 0.0 +es 09_hydro_pump 1 29 0.0 0.0 +es 01_solar 1 30 1.0 0.0 +es 02_wind_on 1 30 1.0 0.0 +es 03_wind_off 1 30 0.0 0.0 +es 04_res 1 30 0.0 0.0 +es 05_nuclear 1 30 0.0 0.0 +es 06_coal 1 30 0.0 0.0 +es 07_gas 1 30 0.0 0.0 +es 08_non-res 1 30 0.0 0.0 +es 09_hydro_pump 1 30 0.0 0.0 +es 01_solar 1 31 1.0 0.0 +es 02_wind_on 1 31 1.0 0.0 +es 03_wind_off 1 31 0.0 0.0 +es 04_res 1 31 0.0 0.0 +es 05_nuclear 1 31 0.0 0.0 +es 06_coal 1 31 0.0 0.0 +es 07_gas 1 31 0.0 0.0 +es 08_non-res 1 31 0.0 0.0 +es 09_hydro_pump 1 31 0.0 0.0 +es 01_solar 1 32 1.0 0.0 +es 02_wind_on 1 32 1.0 0.0 +es 03_wind_off 1 32 0.0 0.0 +es 04_res 1 32 0.0 0.0 +es 05_nuclear 1 32 0.0 0.0 +es 06_coal 1 32 0.0 0.0 +es 07_gas 1 32 0.0 0.0 +es 08_non-res 1 32 0.0 0.0 +es 09_hydro_pump 1 32 0.0 0.0 +es 01_solar 1 33 1.0 0.0 +es 02_wind_on 1 33 1.0 0.0 +es 03_wind_off 1 33 0.0 0.0 +es 04_res 1 33 0.0 0.0 +es 05_nuclear 1 33 0.0 0.0 +es 06_coal 1 33 0.0 0.0 +es 07_gas 1 33 0.0 0.0 +es 08_non-res 1 33 0.0 0.0 +es 09_hydro_pump 1 33 0.0 0.0 +es 01_solar 1 34 1.0 0.0 +es 02_wind_on 1 34 1.0 0.0 +es 03_wind_off 1 34 0.0 0.0 +es 04_res 1 34 0.0 0.0 +es 05_nuclear 1 34 0.0 0.0 +es 06_coal 1 34 0.0 0.0 +es 07_gas 1 34 0.0 0.0 +es 08_non-res 1 34 0.0 0.0 +es 09_hydro_pump 1 34 0.0 0.0 +es 01_solar 1 35 1.0 0.0 +es 02_wind_on 1 35 1.0 0.0 +es 03_wind_off 1 35 0.0 0.0 +es 04_res 1 35 0.0 0.0 +es 05_nuclear 1 35 0.0 0.0 +es 06_coal 1 35 0.0 0.0 +es 07_gas 1 35 0.0 0.0 +es 08_non-res 1 35 0.0 0.0 +es 09_hydro_pump 1 35 0.0 0.0 +es 01_solar 1 36 1.0 0.0 +es 02_wind_on 1 36 1.0 0.0 +es 03_wind_off 1 36 0.0 0.0 +es 04_res 1 36 0.0 0.0 +es 05_nuclear 1 36 0.0 0.0 +es 06_coal 1 36 0.0 0.0 +es 07_gas 1 36 0.0 0.0 +es 08_non-res 1 36 0.0 0.0 +es 09_hydro_pump 1 36 0.0 0.0 +es 01_solar 1 37 1.0 0.0 +es 02_wind_on 1 37 1.0 0.0 +es 03_wind_off 1 37 0.0 0.0 +es 04_res 1 37 0.0 0.0 +es 05_nuclear 1 37 0.0 0.0 +es 06_coal 1 37 0.0 0.0 +es 07_gas 1 37 0.0 0.0 +es 08_non-res 1 37 0.0 0.0 +es 09_hydro_pump 1 37 0.0 0.0 +es 01_solar 1 38 1.0 0.0 +es 02_wind_on 1 38 1.0 0.0 +es 03_wind_off 1 38 0.0 0.0 +es 04_res 1 38 0.0 0.0 +es 05_nuclear 1 38 0.0 0.0 +es 06_coal 1 38 0.0 0.0 +es 07_gas 1 38 0.0 0.0 +es 08_non-res 1 38 0.0 0.0 +es 09_hydro_pump 1 38 0.0 0.0 +es 01_solar 1 39 1.0 0.0 +es 02_wind_on 1 39 1.0 0.0 +es 03_wind_off 1 39 0.0 0.0 +es 04_res 1 39 0.0 0.0 +es 05_nuclear 1 39 0.0 0.0 +es 06_coal 1 39 0.0 0.0 +es 07_gas 1 39 0.0 0.0 +es 08_non-res 1 39 0.0 0.0 +es 09_hydro_pump 1 39 0.0 0.0 +es 01_solar 1 40 1.0 0.0 +es 02_wind_on 1 40 1.0 0.0 +es 03_wind_off 1 40 0.0 0.0 +es 04_res 1 40 0.0 0.0 +es 05_nuclear 1 40 0.0 0.0 +es 06_coal 1 40 0.0 0.0 +es 07_gas 1 40 0.0 0.0 +es 08_non-res 1 40 0.0 0.0 +es 09_hydro_pump 1 40 0.0 0.0 +es 01_solar 1 41 1.0 0.0 +es 02_wind_on 1 41 1.0 0.0 +es 03_wind_off 1 41 0.0 0.0 +es 04_res 1 41 0.0 0.0 +es 05_nuclear 1 41 0.0 0.0 +es 06_coal 1 41 0.0 0.0 +es 07_gas 1 41 0.0 0.0 +es 08_non-res 1 41 0.0 0.0 +es 09_hydro_pump 1 41 0.0 0.0 +es 01_solar 1 42 1.0 0.0 +es 02_wind_on 1 42 1.0 0.0 +es 03_wind_off 1 42 1.0 0.0 +es 04_res 1 42 0.0 0.0 +es 05_nuclear 1 42 0.0 0.0 +es 06_coal 1 42 0.0 0.0 +es 07_gas 1 42 0.0 0.0 +es 08_non-res 1 42 0.0 0.0 +es 09_hydro_pump 1 42 0.0 0.0 +es 01_solar 1 43 1.0 0.0 +es 02_wind_on 1 43 1.0 0.0 +es 03_wind_off 1 43 1.0 0.0 +es 04_res 1 43 0.0 0.0 +es 05_nuclear 1 43 0.0 0.0 +es 06_coal 1 43 0.0 0.0 +es 07_gas 1 43 0.0 0.0 +es 08_non-res 1 43 0.0 0.0 +es 09_hydro_pump 1 43 0.0 0.0 +es 01_solar 1 44 1.0 0.0 +es 02_wind_on 1 44 1.0 0.0 +es 03_wind_off 1 44 1.0 0.0 +es 04_res 1 44 0.0 0.0 +es 05_nuclear 1 44 0.0 0.0 +es 06_coal 1 44 0.0 0.0 +es 07_gas 1 44 0.0 0.0 +es 08_non-res 1 44 0.0 0.0 +es 09_hydro_pump 1 44 0.0 0.0 +es 01_solar 1 45 1.0 0.0 +es 02_wind_on 1 45 1.0 0.0 +es 03_wind_off 1 45 1.0 0.0 +es 04_res 1 45 0.0 0.0 +es 05_nuclear 1 45 0.0 0.0 +es 06_coal 1 45 0.0 0.0 +es 07_gas 1 45 0.0 0.0 +es 08_non-res 1 45 0.0 0.0 +es 09_hydro_pump 1 45 0.0 0.0 +es 01_solar 1 46 1.0 0.0 +es 02_wind_on 1 46 1.0 0.0 +es 03_wind_off 1 46 1.0 0.0 +es 04_res 1 46 0.0 0.0 +es 05_nuclear 1 46 0.0 0.0 +es 06_coal 1 46 0.0 0.0 +es 07_gas 1 46 0.0 0.0 +es 08_non-res 1 46 0.0 0.0 +es 09_hydro_pump 1 46 0.0 0.0 +es 01_solar 1 47 1.0 0.0 +es 02_wind_on 1 47 1.0 0.0 +es 03_wind_off 1 47 1.0 0.0 +es 04_res 1 47 0.0 0.0 +es 05_nuclear 1 47 0.0 0.0 +es 06_coal 1 47 0.0 0.0 +es 07_gas 1 47 0.0 0.0 +es 08_non-res 1 47 0.0 0.0 +es 09_hydro_pump 1 47 0.0 0.0 +es 01_solar 1 48 1.0 0.0 +es 02_wind_on 1 48 1.0 0.0 +es 03_wind_off 1 48 1.0 0.0 +es 04_res 1 48 0.0 0.0 +es 05_nuclear 1 48 0.0 0.0 +es 06_coal 1 48 0.0 0.0 +es 07_gas 1 48 0.0 0.0 +es 08_non-res 1 48 0.0 0.0 +es 09_hydro_pump 1 48 0.0 0.0 +es 01_solar 1 49 1.0 0.0 +es 02_wind_on 1 49 1.0 0.0 +es 03_wind_off 1 49 1.0 0.0 +es 04_res 1 49 0.0 0.0 +es 05_nuclear 1 49 0.0 0.0 +es 06_coal 1 49 0.0 0.0 +es 07_gas 1 49 0.0 0.0 +es 08_non-res 1 49 0.0 0.0 +es 09_hydro_pump 1 49 0.0 0.0 +es 01_solar 1 50 1.0 0.0 +es 02_wind_on 1 50 1.0 0.0 +es 03_wind_off 1 50 1.0 0.0 +es 04_res 1 50 0.0 0.0 +es 05_nuclear 1 50 0.0 0.0 +es 06_coal 1 50 0.0 0.0 +es 07_gas 1 50 0.0 0.0 +es 08_non-res 1 50 0.0 0.0 +es 09_hydro_pump 1 50 0.0 0.0 +es 01_solar 1 51 1.0 0.0 +es 02_wind_on 1 51 1.0 0.0 +es 03_wind_off 1 51 1.0 0.0 +es 04_res 1 51 0.0 0.0 +es 05_nuclear 1 51 0.0 0.0 +es 06_coal 1 51 0.0 0.0 +es 07_gas 1 51 0.0 0.0 +es 08_non-res 1 51 0.0 0.0 +es 09_hydro_pump 1 51 0.0 0.0 +es 01_solar 1 52 1.0 0.0 +es 02_wind_on 1 52 1.0 0.0 +es 03_wind_off 1 52 1.0 0.0 +es 04_res 1 52 0.0 0.0 +es 05_nuclear 1 52 0.0 0.0 +es 06_coal 1 52 0.0 0.0 +es 07_gas 1 52 0.0 0.0 +es 08_non-res 1 52 0.0 0.0 +es 09_hydro_pump 1 52 0.0 0.0 +es 01_solar 1 53 1.0 0.0 +es 02_wind_on 1 53 1.0 0.0 +es 03_wind_off 1 53 1.0 0.0 +es 04_res 1 53 0.0 0.0 +es 05_nuclear 1 53 0.0 0.0 +es 06_coal 1 53 0.0 0.0 +es 07_gas 1 53 0.0 0.0 +es 08_non-res 1 53 0.0 0.0 +es 09_hydro_pump 1 53 0.0 0.0 +es 01_solar 1 54 1.0 0.0 +es 02_wind_on 1 54 1.0 0.0 +es 03_wind_off 1 54 1.0 0.0 +es 04_res 1 54 0.0 0.0 +es 05_nuclear 1 54 0.0 0.0 +es 06_coal 1 54 0.0 0.0 +es 07_gas 1 54 0.0 0.0 +es 08_non-res 1 54 0.0 0.0 +es 09_hydro_pump 1 54 0.0 0.0 +es 01_solar 1 55 1.0 0.0 +es 02_wind_on 1 55 1.0 0.0 +es 03_wind_off 1 55 1.0 0.0 +es 04_res 1 55 0.0 0.0 +es 05_nuclear 1 55 0.0 0.0 +es 06_coal 1 55 0.0 0.0 +es 07_gas 1 55 0.0 0.0 +es 08_non-res 1 55 0.0 0.0 +es 09_hydro_pump 1 55 0.0 0.0 +es 01_solar 1 56 1.0 0.0 +es 02_wind_on 1 56 1.0 0.0 +es 03_wind_off 1 56 1.0 0.0 +es 04_res 1 56 0.0 0.0 +es 05_nuclear 1 56 0.0 0.0 +es 06_coal 1 56 0.0 0.0 +es 07_gas 1 56 0.0 0.0 +es 08_non-res 1 56 0.0 0.0 +es 09_hydro_pump 1 56 0.0 0.0 +es 01_solar 1 57 1.0 0.0 +es 02_wind_on 1 57 1.0 0.0 +es 03_wind_off 1 57 1.0 0.0 +es 04_res 1 57 0.0 0.0 +es 05_nuclear 1 57 0.0 0.0 +es 06_coal 1 57 0.0 0.0 +es 07_gas 1 57 0.0 0.0 +es 08_non-res 1 57 0.0 0.0 +es 09_hydro_pump 1 57 0.0 0.0 +es 01_solar 1 58 1.0 0.0 +es 02_wind_on 1 58 1.0 0.0 +es 03_wind_off 1 58 1.0 0.0 +es 04_res 1 58 0.0 0.0 +es 05_nuclear 1 58 0.0 0.0 +es 06_coal 1 58 0.0 0.0 +es 07_gas 1 58 0.0 0.0 +es 08_non-res 1 58 0.0 0.0 +es 09_hydro_pump 1 58 0.0 0.0 +es 01_solar 1 59 1.0 0.0 +es 02_wind_on 1 59 1.0 0.0 +es 03_wind_off 1 59 1.0 0.0 +es 04_res 1 59 0.0 0.0 +es 05_nuclear 1 59 0.0 0.0 +es 06_coal 1 59 0.0 0.0 +es 07_gas 1 59 0.0 0.0 +es 08_non-res 1 59 0.0 0.0 +es 09_hydro_pump 1 59 0.0 0.0 +es 01_solar 1 60 1.0 0.0 +es 02_wind_on 1 60 1.0 0.0 +es 03_wind_off 1 60 1.0 0.0 +es 04_res 1 60 0.0 0.0 +es 05_nuclear 1 60 0.0 0.0 +es 06_coal 1 60 0.0 0.0 +es 07_gas 1 60 0.0 0.0 +es 08_non-res 1 60 0.0 0.0 +es 09_hydro_pump 1 60 0.0 0.0 +es 01_solar 1 61 1.0 0.0 +es 02_wind_on 1 61 1.0 0.0 +es 03_wind_off 1 61 1.0 0.0 +es 04_res 1 61 0.0 0.0 +es 05_nuclear 1 61 0.0 0.0 +es 06_coal 1 61 0.0 0.0 +es 07_gas 1 61 0.0 0.0 +es 08_non-res 1 61 0.0 0.0 +es 09_hydro_pump 1 61 0.0 0.0 +es 01_solar 1 62 1.0 0.0 +es 02_wind_on 1 62 1.0 0.0 +es 03_wind_off 1 62 1.0 0.0 +es 04_res 1 62 1.0 0.0 +es 05_nuclear 1 62 0.0 0.0 +es 06_coal 1 62 0.0 0.0 +es 07_gas 1 62 0.0 0.0 +es 08_non-res 1 62 0.0 0.0 +es 09_hydro_pump 1 62 0.0 0.0 +es 01_solar 1 63 1.0 0.0 +es 02_wind_on 1 63 1.0 0.0 +es 03_wind_off 1 63 1.0 0.0 +es 04_res 1 63 1.0 0.0 +es 05_nuclear 1 63 0.0 0.0 +es 06_coal 1 63 0.0 0.0 +es 07_gas 1 63 0.0 0.0 +es 08_non-res 1 63 0.0 0.0 +es 09_hydro_pump 1 63 0.0 0.0 +es 01_solar 1 64 1.0 0.0 +es 02_wind_on 1 64 1.0 0.0 +es 03_wind_off 1 64 1.0 0.0 +es 04_res 1 64 1.0 0.0 +es 05_nuclear 1 64 0.0 0.0 +es 06_coal 1 64 0.0 0.0 +es 07_gas 1 64 0.0 0.0 +es 08_non-res 1 64 0.0 0.0 +es 09_hydro_pump 1 64 0.0 0.0 +es 01_solar 1 65 1.0 0.0 +es 02_wind_on 1 65 1.0 0.0 +es 03_wind_off 1 65 1.0 0.0 +es 04_res 1 65 1.0 0.0 +es 05_nuclear 1 65 0.0 0.0 +es 06_coal 1 65 0.0 0.0 +es 07_gas 1 65 0.0 0.0 +es 08_non-res 1 65 0.0 0.0 +es 09_hydro_pump 1 65 0.0 0.0 +es 01_solar 1 66 1.0 0.0 +es 02_wind_on 1 66 1.0 0.0 +es 03_wind_off 1 66 1.0 0.0 +es 04_res 1 66 1.0 0.0 +es 05_nuclear 1 66 0.0 0.0 +es 06_coal 1 66 0.0 0.0 +es 07_gas 1 66 0.0 0.0 +es 08_non-res 1 66 0.0 0.0 +es 09_hydro_pump 1 66 0.0 0.0 +es 01_solar 1 67 1.0 0.0 +es 02_wind_on 1 67 1.0 0.0 +es 03_wind_off 1 67 1.0 0.0 +es 04_res 1 67 1.0 0.0 +es 05_nuclear 1 67 0.0 0.0 +es 06_coal 1 67 0.0 0.0 +es 07_gas 1 67 0.0 0.0 +es 08_non-res 1 67 0.0 0.0 +es 09_hydro_pump 1 67 0.0 0.0 +es 01_solar 1 68 1.0 0.0 +es 02_wind_on 1 68 1.0 0.0 +es 03_wind_off 1 68 1.0 0.0 +es 04_res 1 68 1.0 0.0 +es 05_nuclear 1 68 0.0 0.0 +es 06_coal 1 68 0.0 0.0 +es 07_gas 1 68 0.0 0.0 +es 08_non-res 1 68 0.0 0.0 +es 09_hydro_pump 1 68 0.0 0.0 +es 01_solar 1 69 1.0 0.0 +es 02_wind_on 1 69 1.0 0.0 +es 03_wind_off 1 69 1.0 0.0 +es 04_res 1 69 1.0 0.0 +es 05_nuclear 1 69 0.0 0.0 +es 06_coal 1 69 0.0 0.0 +es 07_gas 1 69 0.0 0.0 +es 08_non-res 1 69 0.0 0.0 +es 09_hydro_pump 1 69 0.0 0.0 +es 01_solar 1 70 1.0 0.0 +es 02_wind_on 1 70 1.0 0.0 +es 03_wind_off 1 70 1.0 0.0 +es 04_res 1 70 1.0 0.0 +es 05_nuclear 1 70 0.0 0.0 +es 06_coal 1 70 0.0 0.0 +es 07_gas 1 70 0.0 0.0 +es 08_non-res 1 70 0.0 0.0 +es 09_hydro_pump 1 70 0.0 0.0 +es 01_solar 1 71 1.0 0.0 +es 02_wind_on 1 71 1.0 0.0 +es 03_wind_off 1 71 1.0 0.0 +es 04_res 1 71 1.0 0.0 +es 05_nuclear 1 71 0.0 0.0 +es 06_coal 1 71 0.0 0.0 +es 07_gas 1 71 0.0 0.0 +es 08_non-res 1 71 0.0 0.0 +es 09_hydro_pump 1 71 0.0 0.0 +es 01_solar 1 72 1.0 0.0 +es 02_wind_on 1 72 1.0 0.0 +es 03_wind_off 1 72 1.0 0.0 +es 04_res 1 72 1.0 0.0 +es 05_nuclear 1 72 0.0 0.0 +es 06_coal 1 72 0.0 0.0 +es 07_gas 1 72 0.0 0.0 +es 08_non-res 1 72 0.0 0.0 +es 09_hydro_pump 1 72 0.0 0.0 +es 01_solar 1 73 1.0 0.0 +es 02_wind_on 1 73 1.0 0.0 +es 03_wind_off 1 73 1.0 0.0 +es 04_res 1 73 1.0 0.0 +es 05_nuclear 1 73 0.0 0.0 +es 06_coal 1 73 0.0 0.0 +es 07_gas 1 73 0.0 0.0 +es 08_non-res 1 73 0.0 0.0 +es 09_hydro_pump 1 73 0.0 0.0 +es 01_solar 1 74 1.0 0.0 +es 02_wind_on 1 74 1.0 0.0 +es 03_wind_off 1 74 1.0 0.0 +es 04_res 1 74 1.0 0.0 +es 05_nuclear 1 74 0.0 0.0 +es 06_coal 1 74 0.0 0.0 +es 07_gas 1 74 0.0 0.0 +es 08_non-res 1 74 0.0 0.0 +es 09_hydro_pump 1 74 0.0 0.0 +es 01_solar 1 75 1.0 0.0 +es 02_wind_on 1 75 1.0 0.0 +es 03_wind_off 1 75 1.0 0.0 +es 04_res 1 75 1.0 0.0 +es 05_nuclear 1 75 0.0 0.0 +es 06_coal 1 75 0.0 0.0 +es 07_gas 1 75 0.0 0.0 +es 08_non-res 1 75 0.0 0.0 +es 09_hydro_pump 1 75 0.0 0.0 +es 01_solar 1 76 1.0 0.0 +es 02_wind_on 1 76 1.0 0.0 +es 03_wind_off 1 76 1.0 0.0 +es 04_res 1 76 1.0 0.0 +es 05_nuclear 1 76 0.0 0.0 +es 06_coal 1 76 0.0 0.0 +es 07_gas 1 76 0.0 0.0 +es 08_non-res 1 76 0.0 0.0 +es 09_hydro_pump 1 76 0.0 0.0 +es 01_solar 1 77 1.0 0.0 +es 02_wind_on 1 77 1.0 0.0 +es 03_wind_off 1 77 1.0 0.0 +es 04_res 1 77 1.0 0.0 +es 05_nuclear 1 77 0.0 0.0 +es 06_coal 1 77 0.0 0.0 +es 07_gas 1 77 0.0 0.0 +es 08_non-res 1 77 0.0 0.0 +es 09_hydro_pump 1 77 0.0 0.0 +es 01_solar 1 78 1.0 0.0 +es 02_wind_on 1 78 1.0 0.0 +es 03_wind_off 1 78 1.0 0.0 +es 04_res 1 78 1.0 0.0 +es 05_nuclear 1 78 0.0 0.0 +es 06_coal 1 78 0.0 0.0 +es 07_gas 1 78 0.0 0.0 +es 08_non-res 1 78 0.0 0.0 +es 09_hydro_pump 1 78 0.0 0.0 +es 01_solar 1 79 1.0 0.0 +es 02_wind_on 1 79 1.0 0.0 +es 03_wind_off 1 79 1.0 0.0 +es 04_res 1 79 1.0 0.0 +es 05_nuclear 1 79 0.0 0.0 +es 06_coal 1 79 0.0 0.0 +es 07_gas 1 79 0.0 0.0 +es 08_non-res 1 79 0.0 0.0 +es 09_hydro_pump 1 79 0.0 0.0 +es 01_solar 1 80 1.0 0.0 +es 02_wind_on 1 80 1.0 0.0 +es 03_wind_off 1 80 1.0 0.0 +es 04_res 1 80 1.0 0.0 +es 05_nuclear 1 80 0.0 0.0 +es 06_coal 1 80 0.0 0.0 +es 07_gas 1 80 0.0 0.0 +es 08_non-res 1 80 0.0 0.0 +es 09_hydro_pump 1 80 0.0 0.0 +es 01_solar 1 81 1.0 0.0 +es 02_wind_on 1 81 1.0 0.0 +es 03_wind_off 1 81 1.0 0.0 +es 04_res 1 81 1.0 0.0 +es 05_nuclear 1 81 0.0 0.0 +es 06_coal 1 81 0.0 0.0 +es 07_gas 1 81 0.0 0.0 +es 08_non-res 1 81 0.0 0.0 +es 09_hydro_pump 1 81 0.0 0.0 +es 01_solar 1 82 1.0 0.0 +es 02_wind_on 1 82 1.0 0.0 +es 03_wind_off 1 82 1.0 0.0 +es 04_res 1 82 1.0 0.0 +es 05_nuclear 1 82 1.0 0.0 +es 06_coal 1 82 0.0 0.0 +es 07_gas 1 82 0.0 0.0 +es 08_non-res 1 82 0.0 0.0 +es 09_hydro_pump 1 82 0.0 0.0 +es 01_solar 1 83 1.0 0.0 +es 02_wind_on 1 83 1.0 0.0 +es 03_wind_off 1 83 1.0 0.0 +es 04_res 1 83 1.0 0.0 +es 05_nuclear 1 83 1.0 0.0 +es 06_coal 1 83 0.0 0.0 +es 07_gas 1 83 0.0 0.0 +es 08_non-res 1 83 0.0 0.0 +es 09_hydro_pump 1 83 0.0 0.0 +es 01_solar 1 84 1.0 0.0 +es 02_wind_on 1 84 1.0 0.0 +es 03_wind_off 1 84 1.0 0.0 +es 04_res 1 84 1.0 0.0 +es 05_nuclear 1 84 1.0 0.0 +es 06_coal 1 84 0.0 0.0 +es 07_gas 1 84 0.0 0.0 +es 08_non-res 1 84 0.0 0.0 +es 09_hydro_pump 1 84 0.0 0.0 +es 01_solar 1 85 1.0 0.0 +es 02_wind_on 1 85 1.0 0.0 +es 03_wind_off 1 85 1.0 0.0 +es 04_res 1 85 1.0 0.0 +es 05_nuclear 1 85 1.0 0.0 +es 06_coal 1 85 0.0 0.0 +es 07_gas 1 85 0.0 0.0 +es 08_non-res 1 85 0.0 0.0 +es 09_hydro_pump 1 85 0.0 0.0 +es 01_solar 1 86 1.0 0.0 +es 02_wind_on 1 86 1.0 0.0 +es 03_wind_off 1 86 1.0 0.0 +es 04_res 1 86 1.0 0.0 +es 05_nuclear 1 86 1.0 0.0 +es 06_coal 1 86 0.0 0.0 +es 07_gas 1 86 0.0 0.0 +es 08_non-res 1 86 0.0 0.0 +es 09_hydro_pump 1 86 0.0 0.0 +es 01_solar 1 87 1.0 0.0 +es 02_wind_on 1 87 1.0 0.0 +es 03_wind_off 1 87 1.0 0.0 +es 04_res 1 87 1.0 0.0 +es 05_nuclear 1 87 1.0 0.0 +es 06_coal 1 87 0.0 0.0 +es 07_gas 1 87 0.0 0.0 +es 08_non-res 1 87 0.0 0.0 +es 09_hydro_pump 1 87 0.0 0.0 +es 01_solar 1 88 1.0 0.0 +es 02_wind_on 1 88 1.0 0.0 +es 03_wind_off 1 88 1.0 0.0 +es 04_res 1 88 1.0 0.0 +es 05_nuclear 1 88 1.0 0.0 +es 06_coal 1 88 0.0 0.0 +es 07_gas 1 88 0.0 0.0 +es 08_non-res 1 88 0.0 0.0 +es 09_hydro_pump 1 88 0.0 0.0 +es 01_solar 1 89 1.0 0.0 +es 02_wind_on 1 89 1.0 0.0 +es 03_wind_off 1 89 1.0 0.0 +es 04_res 1 89 1.0 0.0 +es 05_nuclear 1 89 1.0 0.0 +es 06_coal 1 89 0.0 0.0 +es 07_gas 1 89 0.0 0.0 +es 08_non-res 1 89 0.0 0.0 +es 09_hydro_pump 1 89 0.0 0.0 +es 01_solar 1 90 1.0 0.0 +es 02_wind_on 1 90 1.0 0.0 +es 03_wind_off 1 90 1.0 0.0 +es 04_res 1 90 1.0 0.0 +es 05_nuclear 1 90 1.0 0.0 +es 06_coal 1 90 0.0 0.0 +es 07_gas 1 90 0.0 0.0 +es 08_non-res 1 90 0.0 0.0 +es 09_hydro_pump 1 90 0.0 0.0 +es 01_solar 1 91 1.0 0.0 +es 02_wind_on 1 91 1.0 0.0 +es 03_wind_off 1 91 1.0 0.0 +es 04_res 1 91 1.0 0.0 +es 05_nuclear 1 91 1.0 0.0 +es 06_coal 1 91 0.0 0.0 +es 07_gas 1 91 0.0 0.0 +es 08_non-res 1 91 0.0 0.0 +es 09_hydro_pump 1 91 0.0 0.0 +es 01_solar 1 92 1.0 0.0 +es 02_wind_on 1 92 1.0 0.0 +es 03_wind_off 1 92 1.0 0.0 +es 04_res 1 92 1.0 0.0 +es 05_nuclear 1 92 1.0 0.0 +es 06_coal 1 92 0.0 0.0 +es 07_gas 1 92 0.0 0.0 +es 08_non-res 1 92 0.0 0.0 +es 09_hydro_pump 1 92 0.0 0.0 +es 01_solar 1 93 1.0 0.0 +es 02_wind_on 1 93 1.0 0.0 +es 03_wind_off 1 93 1.0 0.0 +es 04_res 1 93 1.0 0.0 +es 05_nuclear 1 93 1.0 0.0 +es 06_coal 1 93 0.0 0.0 +es 07_gas 1 93 0.0 0.0 +es 08_non-res 1 93 0.0 0.0 +es 09_hydro_pump 1 93 0.0 0.0 +es 01_solar 1 94 1.0 0.0 +es 02_wind_on 1 94 1.0 0.0 +es 03_wind_off 1 94 1.0 0.0 +es 04_res 1 94 1.0 0.0 +es 05_nuclear 1 94 1.0 0.0 +es 06_coal 1 94 0.0 0.0 +es 07_gas 1 94 0.0 0.0 +es 08_non-res 1 94 0.0 0.0 +es 09_hydro_pump 1 94 0.0 0.0 +es 01_solar 1 95 1.0 0.0 +es 02_wind_on 1 95 1.0 0.0 +es 03_wind_off 1 95 1.0 0.0 +es 04_res 1 95 1.0 0.0 +es 05_nuclear 1 95 1.0 0.0 +es 06_coal 1 95 0.0 0.0 +es 07_gas 1 95 0.0 0.0 +es 08_non-res 1 95 0.0 0.0 +es 09_hydro_pump 1 95 0.0 0.0 +es 01_solar 1 96 1.0 0.0 +es 02_wind_on 1 96 1.0 0.0 +es 03_wind_off 1 96 1.0 0.0 +es 04_res 1 96 1.0 0.0 +es 05_nuclear 1 96 1.0 0.0 +es 06_coal 1 96 0.0 0.0 +es 07_gas 1 96 0.0 0.0 +es 08_non-res 1 96 0.0 0.0 +es 09_hydro_pump 1 96 0.0 0.0 +es 01_solar 1 97 1.0 0.0 +es 02_wind_on 1 97 1.0 0.0 +es 03_wind_off 1 97 1.0 0.0 +es 04_res 1 97 1.0 0.0 +es 05_nuclear 1 97 1.0 0.0 +es 06_coal 1 97 0.0 0.0 +es 07_gas 1 97 0.0 0.0 +es 08_non-res 1 97 0.0 0.0 +es 09_hydro_pump 1 97 0.0 0.0 +es 01_solar 1 98 1.0 0.0 +es 02_wind_on 1 98 1.0 0.0 +es 03_wind_off 1 98 1.0 0.0 +es 04_res 1 98 1.0 0.0 +es 05_nuclear 1 98 1.0 0.0 +es 06_coal 1 98 0.0 0.0 +es 07_gas 1 98 0.0 0.0 +es 08_non-res 1 98 0.0 0.0 +es 09_hydro_pump 1 98 0.0 0.0 +es 01_solar 1 99 1.0 0.0 +es 02_wind_on 1 99 1.0 0.0 +es 03_wind_off 1 99 1.0 0.0 +es 04_res 1 99 1.0 0.0 +es 05_nuclear 1 99 1.0 0.0 +es 06_coal 1 99 0.0 0.0 +es 07_gas 1 99 0.0 0.0 +es 08_non-res 1 99 0.0 0.0 +es 09_hydro_pump 1 99 0.0 0.0 +es 01_solar 1 100 1.0 0.0 +es 02_wind_on 1 100 1.0 0.0 +es 03_wind_off 1 100 1.0 0.0 +es 04_res 1 100 1.0 0.0 +es 05_nuclear 1 100 1.0 0.0 +es 06_coal 1 100 0.0 0.0 +es 07_gas 1 100 0.0 0.0 +es 08_non-res 1 100 0.0 0.0 +es 09_hydro_pump 1 100 0.0 0.0 +es 01_solar 1 101 1.0 0.0 +es 02_wind_on 1 101 1.0 0.0 +es 03_wind_off 1 101 1.0 0.0 +es 04_res 1 101 1.0 0.0 +es 05_nuclear 1 101 1.0 0.0 +es 06_coal 1 101 0.0 0.0 +es 07_gas 1 101 0.0 0.0 +es 08_non-res 1 101 0.0 0.0 +es 09_hydro_pump 1 101 0.0 0.0 +es 01_solar 1 102 1.0 0.0 +es 02_wind_on 1 102 1.0 0.0 +es 03_wind_off 1 102 1.0 0.0 +es 04_res 1 102 1.0 0.0 +es 05_nuclear 1 102 1.0 0.0 +es 06_coal 1 102 1.0 0.0 +es 07_gas 1 102 0.0 0.0 +es 08_non-res 1 102 0.0 0.0 +es 09_hydro_pump 1 102 0.0 0.0 +es 01_solar 1 103 1.0 0.0 +es 02_wind_on 1 103 1.0 0.0 +es 03_wind_off 1 103 1.0 0.0 +es 04_res 1 103 1.0 0.0 +es 05_nuclear 1 103 1.0 0.0 +es 06_coal 1 103 1.0 0.0 +es 07_gas 1 103 0.0 0.0 +es 08_non-res 1 103 0.0 0.0 +es 09_hydro_pump 1 103 0.0 0.0 +es 01_solar 1 104 1.0 0.0 +es 02_wind_on 1 104 1.0 0.0 +es 03_wind_off 1 104 1.0 0.0 +es 04_res 1 104 1.0 0.0 +es 05_nuclear 1 104 1.0 0.0 +es 06_coal 1 104 1.0 0.0 +es 07_gas 1 104 0.0 0.0 +es 08_non-res 1 104 0.0 0.0 +es 09_hydro_pump 1 104 0.0 0.0 +es 01_solar 1 105 1.0 0.0 +es 02_wind_on 1 105 1.0 0.0 +es 03_wind_off 1 105 1.0 0.0 +es 04_res 1 105 1.0 0.0 +es 05_nuclear 1 105 1.0 0.0 +es 06_coal 1 105 1.0 0.0 +es 07_gas 1 105 0.0 0.0 +es 08_non-res 1 105 0.0 0.0 +es 09_hydro_pump 1 105 0.0 0.0 +es 01_solar 1 106 1.0 0.0 +es 02_wind_on 1 106 1.0 0.0 +es 03_wind_off 1 106 1.0 0.0 +es 04_res 1 106 1.0 0.0 +es 05_nuclear 1 106 1.0 0.0 +es 06_coal 1 106 1.0 0.0 +es 07_gas 1 106 0.0 0.0 +es 08_non-res 1 106 0.0 0.0 +es 09_hydro_pump 1 106 0.0 0.0 +es 01_solar 1 107 1.0 0.0 +es 02_wind_on 1 107 1.0 0.0 +es 03_wind_off 1 107 1.0 0.0 +es 04_res 1 107 1.0 0.0 +es 05_nuclear 1 107 1.0 0.0 +es 06_coal 1 107 1.0 0.0 +es 07_gas 1 107 0.0 0.0 +es 08_non-res 1 107 0.0 0.0 +es 09_hydro_pump 1 107 0.0 0.0 +es 01_solar 1 108 1.0 0.0 +es 02_wind_on 1 108 1.0 0.0 +es 03_wind_off 1 108 1.0 0.0 +es 04_res 1 108 1.0 0.0 +es 05_nuclear 1 108 1.0 0.0 +es 06_coal 1 108 1.0 0.0 +es 07_gas 1 108 0.0 0.0 +es 08_non-res 1 108 0.0 0.0 +es 09_hydro_pump 1 108 0.0 0.0 +es 01_solar 1 109 1.0 0.0 +es 02_wind_on 1 109 1.0 0.0 +es 03_wind_off 1 109 1.0 0.0 +es 04_res 1 109 1.0 0.0 +es 05_nuclear 1 109 1.0 0.0 +es 06_coal 1 109 1.0 0.0 +es 07_gas 1 109 0.0 0.0 +es 08_non-res 1 109 0.0 0.0 +es 09_hydro_pump 1 109 0.0 0.0 +es 01_solar 1 110 1.0 0.0 +es 02_wind_on 1 110 1.0 0.0 +es 03_wind_off 1 110 1.0 0.0 +es 04_res 1 110 1.0 0.0 +es 05_nuclear 1 110 1.0 0.0 +es 06_coal 1 110 1.0 0.0 +es 07_gas 1 110 0.0 0.0 +es 08_non-res 1 110 0.0 0.0 +es 09_hydro_pump 1 110 0.0 0.0 +es 01_solar 1 111 1.0 0.0 +es 02_wind_on 1 111 1.0 0.0 +es 03_wind_off 1 111 1.0 0.0 +es 04_res 1 111 1.0 0.0 +es 05_nuclear 1 111 1.0 0.0 +es 06_coal 1 111 1.0 0.0 +es 07_gas 1 111 0.0 0.0 +es 08_non-res 1 111 0.0 0.0 +es 09_hydro_pump 1 111 0.0 0.0 +es 01_solar 1 112 1.0 0.0 +es 02_wind_on 1 112 1.0 0.0 +es 03_wind_off 1 112 1.0 0.0 +es 04_res 1 112 1.0 0.0 +es 05_nuclear 1 112 1.0 0.0 +es 06_coal 1 112 1.0 0.0 +es 07_gas 1 112 0.0 0.0 +es 08_non-res 1 112 0.0 0.0 +es 09_hydro_pump 1 112 0.0 0.0 +es 01_solar 1 113 1.0 0.0 +es 02_wind_on 1 113 1.0 0.0 +es 03_wind_off 1 113 1.0 0.0 +es 04_res 1 113 1.0 0.0 +es 05_nuclear 1 113 1.0 0.0 +es 06_coal 1 113 1.0 0.0 +es 07_gas 1 113 0.0 0.0 +es 08_non-res 1 113 0.0 0.0 +es 09_hydro_pump 1 113 0.0 0.0 +es 01_solar 1 114 1.0 0.0 +es 02_wind_on 1 114 1.0 0.0 +es 03_wind_off 1 114 1.0 0.0 +es 04_res 1 114 1.0 0.0 +es 05_nuclear 1 114 1.0 0.0 +es 06_coal 1 114 1.0 0.0 +es 07_gas 1 114 0.0 0.0 +es 08_non-res 1 114 0.0 0.0 +es 09_hydro_pump 1 114 0.0 0.0 +es 01_solar 1 115 1.0 0.0 +es 02_wind_on 1 115 1.0 0.0 +es 03_wind_off 1 115 1.0 0.0 +es 04_res 1 115 1.0 0.0 +es 05_nuclear 1 115 1.0 0.0 +es 06_coal 1 115 1.0 0.0 +es 07_gas 1 115 0.0 0.0 +es 08_non-res 1 115 0.0 0.0 +es 09_hydro_pump 1 115 0.0 0.0 +es 01_solar 1 116 1.0 0.0 +es 02_wind_on 1 116 1.0 0.0 +es 03_wind_off 1 116 1.0 0.0 +es 04_res 1 116 1.0 0.0 +es 05_nuclear 1 116 1.0 0.0 +es 06_coal 1 116 1.0 0.0 +es 07_gas 1 116 0.0 0.0 +es 08_non-res 1 116 0.0 0.0 +es 09_hydro_pump 1 116 0.0 0.0 +es 01_solar 1 117 1.0 0.0 +es 02_wind_on 1 117 1.0 0.0 +es 03_wind_off 1 117 1.0 0.0 +es 04_res 1 117 1.0 0.0 +es 05_nuclear 1 117 1.0 0.0 +es 06_coal 1 117 1.0 0.0 +es 07_gas 1 117 0.0 0.0 +es 08_non-res 1 117 0.0 0.0 +es 09_hydro_pump 1 117 0.0 0.0 +es 01_solar 1 118 1.0 0.0 +es 02_wind_on 1 118 1.0 0.0 +es 03_wind_off 1 118 1.0 0.0 +es 04_res 1 118 1.0 0.0 +es 05_nuclear 1 118 1.0 0.0 +es 06_coal 1 118 1.0 0.0 +es 07_gas 1 118 0.0 0.0 +es 08_non-res 1 118 0.0 0.0 +es 09_hydro_pump 1 118 0.0 0.0 +es 01_solar 1 119 1.0 0.0 +es 02_wind_on 1 119 1.0 0.0 +es 03_wind_off 1 119 1.0 0.0 +es 04_res 1 119 1.0 0.0 +es 05_nuclear 1 119 1.0 0.0 +es 06_coal 1 119 1.0 0.0 +es 07_gas 1 119 0.0 0.0 +es 08_non-res 1 119 0.0 0.0 +es 09_hydro_pump 1 119 0.0 0.0 +es 01_solar 1 120 1.0 0.0 +es 02_wind_on 1 120 1.0 0.0 +es 03_wind_off 1 120 1.0 0.0 +es 04_res 1 120 1.0 0.0 +es 05_nuclear 1 120 1.0 0.0 +es 06_coal 1 120 1.0 0.0 +es 07_gas 1 120 0.0 0.0 +es 08_non-res 1 120 0.0 0.0 +es 09_hydro_pump 1 120 0.0 0.0 +es 01_solar 1 121 1.0 0.0 +es 02_wind_on 1 121 1.0 0.0 +es 03_wind_off 1 121 1.0 0.0 +es 04_res 1 121 1.0 0.0 +es 05_nuclear 1 121 1.0 0.0 +es 06_coal 1 121 1.0 0.0 +es 07_gas 1 121 0.0 0.0 +es 08_non-res 1 121 0.0 0.0 +es 09_hydro_pump 1 121 0.0 0.0 +es 01_solar 1 122 1.0 0.0 +es 02_wind_on 1 122 1.0 0.0 +es 03_wind_off 1 122 1.0 0.0 +es 04_res 1 122 1.0 0.0 +es 05_nuclear 1 122 1.0 0.0 +es 06_coal 1 122 1.0 0.0 +es 07_gas 1 122 1.0 0.0 +es 08_non-res 1 122 0.0 0.0 +es 09_hydro_pump 1 122 0.0 0.0 +es 01_solar 1 123 1.0 0.0 +es 02_wind_on 1 123 1.0 0.0 +es 03_wind_off 1 123 1.0 0.0 +es 04_res 1 123 1.0 0.0 +es 05_nuclear 1 123 1.0 0.0 +es 06_coal 1 123 1.0 0.0 +es 07_gas 1 123 1.0 0.0 +es 08_non-res 1 123 0.0 0.0 +es 09_hydro_pump 1 123 0.0 0.0 +es 01_solar 1 124 1.0 0.0 +es 02_wind_on 1 124 1.0 0.0 +es 03_wind_off 1 124 1.0 0.0 +es 04_res 1 124 1.0 0.0 +es 05_nuclear 1 124 1.0 0.0 +es 06_coal 1 124 1.0 0.0 +es 07_gas 1 124 1.0 0.0 +es 08_non-res 1 124 0.0 0.0 +es 09_hydro_pump 1 124 0.0 0.0 +es 01_solar 1 125 1.0 0.0 +es 02_wind_on 1 125 1.0 0.0 +es 03_wind_off 1 125 1.0 0.0 +es 04_res 1 125 1.0 0.0 +es 05_nuclear 1 125 1.0 0.0 +es 06_coal 1 125 1.0 0.0 +es 07_gas 1 125 1.0 0.0 +es 08_non-res 1 125 0.0 0.0 +es 09_hydro_pump 1 125 0.0 0.0 +es 01_solar 1 126 1.0 0.0 +es 02_wind_on 1 126 1.0 0.0 +es 03_wind_off 1 126 1.0 0.0 +es 04_res 1 126 1.0 0.0 +es 05_nuclear 1 126 1.0 0.0 +es 06_coal 1 126 1.0 0.0 +es 07_gas 1 126 1.0 0.0 +es 08_non-res 1 126 0.0 0.0 +es 09_hydro_pump 1 126 0.0 0.0 +es 01_solar 1 127 1.0 0.0 +es 02_wind_on 1 127 1.0 0.0 +es 03_wind_off 1 127 1.0 0.0 +es 04_res 1 127 1.0 0.0 +es 05_nuclear 1 127 1.0 0.0 +es 06_coal 1 127 1.0 0.0 +es 07_gas 1 127 1.0 0.0 +es 08_non-res 1 127 0.0 0.0 +es 09_hydro_pump 1 127 0.0 0.0 +es 01_solar 1 128 1.0 0.0 +es 02_wind_on 1 128 1.0 0.0 +es 03_wind_off 1 128 1.0 0.0 +es 04_res 1 128 1.0 0.0 +es 05_nuclear 1 128 1.0 0.0 +es 06_coal 1 128 1.0 0.0 +es 07_gas 1 128 1.0 0.0 +es 08_non-res 1 128 0.0 0.0 +es 09_hydro_pump 1 128 0.0 0.0 +es 01_solar 1 129 1.0 0.0 +es 02_wind_on 1 129 1.0 0.0 +es 03_wind_off 1 129 1.0 0.0 +es 04_res 1 129 1.0 0.0 +es 05_nuclear 1 129 1.0 0.0 +es 06_coal 1 129 1.0 0.0 +es 07_gas 1 129 1.0 0.0 +es 08_non-res 1 129 0.0 0.0 +es 09_hydro_pump 1 129 0.0 0.0 +es 01_solar 1 130 1.0 0.0 +es 02_wind_on 1 130 1.0 0.0 +es 03_wind_off 1 130 1.0 0.0 +es 04_res 1 130 1.0 0.0 +es 05_nuclear 1 130 1.0 0.0 +es 06_coal 1 130 1.0 0.0 +es 07_gas 1 130 1.0 0.0 +es 08_non-res 1 130 0.0 0.0 +es 09_hydro_pump 1 130 0.0 0.0 +es 01_solar 1 131 1.0 0.0 +es 02_wind_on 1 131 1.0 0.0 +es 03_wind_off 1 131 1.0 0.0 +es 04_res 1 131 1.0 0.0 +es 05_nuclear 1 131 1.0 0.0 +es 06_coal 1 131 1.0 0.0 +es 07_gas 1 131 1.0 0.0 +es 08_non-res 1 131 0.0 0.0 +es 09_hydro_pump 1 131 0.0 0.0 +es 01_solar 1 132 1.0 0.0 +es 02_wind_on 1 132 1.0 0.0 +es 03_wind_off 1 132 1.0 0.0 +es 04_res 1 132 1.0 0.0 +es 05_nuclear 1 132 1.0 0.0 +es 06_coal 1 132 1.0 0.0 +es 07_gas 1 132 1.0 0.0 +es 08_non-res 1 132 0.0 0.0 +es 09_hydro_pump 1 132 0.0 0.0 +es 01_solar 1 133 1.0 0.0 +es 02_wind_on 1 133 1.0 0.0 +es 03_wind_off 1 133 1.0 0.0 +es 04_res 1 133 1.0 0.0 +es 05_nuclear 1 133 1.0 0.0 +es 06_coal 1 133 1.0 0.0 +es 07_gas 1 133 1.0 0.0 +es 08_non-res 1 133 0.0 0.0 +es 09_hydro_pump 1 133 0.0 0.0 +es 01_solar 1 134 1.0 0.0 +es 02_wind_on 1 134 1.0 0.0 +es 03_wind_off 1 134 1.0 0.0 +es 04_res 1 134 1.0 0.0 +es 05_nuclear 1 134 1.0 0.0 +es 06_coal 1 134 1.0 0.0 +es 07_gas 1 134 1.0 0.0 +es 08_non-res 1 134 0.0 0.0 +es 09_hydro_pump 1 134 0.0 0.0 +es 01_solar 1 135 1.0 0.0 +es 02_wind_on 1 135 1.0 0.0 +es 03_wind_off 1 135 1.0 0.0 +es 04_res 1 135 1.0 0.0 +es 05_nuclear 1 135 1.0 0.0 +es 06_coal 1 135 1.0 0.0 +es 07_gas 1 135 1.0 0.0 +es 08_non-res 1 135 0.0 0.0 +es 09_hydro_pump 1 135 0.0 0.0 +es 01_solar 1 136 1.0 0.0 +es 02_wind_on 1 136 1.0 0.0 +es 03_wind_off 1 136 1.0 0.0 +es 04_res 1 136 1.0 0.0 +es 05_nuclear 1 136 1.0 0.0 +es 06_coal 1 136 1.0 0.0 +es 07_gas 1 136 1.0 0.0 +es 08_non-res 1 136 0.0 0.0 +es 09_hydro_pump 1 136 0.0 0.0 +es 01_solar 1 137 1.0 0.0 +es 02_wind_on 1 137 1.0 0.0 +es 03_wind_off 1 137 1.0 0.0 +es 04_res 1 137 1.0 0.0 +es 05_nuclear 1 137 1.0 0.0 +es 06_coal 1 137 1.0 0.0 +es 07_gas 1 137 1.0 0.0 +es 08_non-res 1 137 0.0 0.0 +es 09_hydro_pump 1 137 0.0 0.0 +es 01_solar 1 138 1.0 0.0 +es 02_wind_on 1 138 1.0 0.0 +es 03_wind_off 1 138 1.0 0.0 +es 04_res 1 138 1.0 0.0 +es 05_nuclear 1 138 1.0 0.0 +es 06_coal 1 138 1.0 0.0 +es 07_gas 1 138 1.0 0.0 +es 08_non-res 1 138 0.0 0.0 +es 09_hydro_pump 1 138 0.0 0.0 +es 01_solar 1 139 1.0 0.0 +es 02_wind_on 1 139 1.0 0.0 +es 03_wind_off 1 139 1.0 0.0 +es 04_res 1 139 1.0 0.0 +es 05_nuclear 1 139 1.0 0.0 +es 06_coal 1 139 1.0 0.0 +es 07_gas 1 139 1.0 0.0 +es 08_non-res 1 139 0.0 0.0 +es 09_hydro_pump 1 139 0.0 0.0 +es 01_solar 1 140 1.0 0.0 +es 02_wind_on 1 140 1.0 0.0 +es 03_wind_off 1 140 1.0 0.0 +es 04_res 1 140 1.0 0.0 +es 05_nuclear 1 140 1.0 0.0 +es 06_coal 1 140 1.0 0.0 +es 07_gas 1 140 1.0 0.0 +es 08_non-res 1 140 0.0 0.0 +es 09_hydro_pump 1 140 0.0 0.0 +es 01_solar 1 141 1.0 0.0 +es 02_wind_on 1 141 1.0 0.0 +es 03_wind_off 1 141 1.0 0.0 +es 04_res 1 141 1.0 0.0 +es 05_nuclear 1 141 1.0 0.0 +es 06_coal 1 141 1.0 0.0 +es 07_gas 1 141 1.0 0.0 +es 08_non-res 1 141 0.0 0.0 +es 09_hydro_pump 1 141 0.0 0.0 +es 01_solar 1 142 1.0 0.0 +es 02_wind_on 1 142 1.0 0.0 +es 03_wind_off 1 142 1.0 0.0 +es 04_res 1 142 1.0 0.0 +es 05_nuclear 1 142 1.0 0.0 +es 06_coal 1 142 1.0 0.0 +es 07_gas 1 142 1.0 0.0 +es 08_non-res 1 142 1.0 0.0 +es 09_hydro_pump 1 142 0.0 0.0 +es 01_solar 1 143 1.0 0.0 +es 02_wind_on 1 143 1.0 0.0 +es 03_wind_off 1 143 1.0 0.0 +es 04_res 1 143 1.0 0.0 +es 05_nuclear 1 143 1.0 0.0 +es 06_coal 1 143 1.0 0.0 +es 07_gas 1 143 1.0 0.0 +es 08_non-res 1 143 1.0 0.0 +es 09_hydro_pump 1 143 0.0 0.0 +es 01_solar 1 144 1.0 0.0 +es 02_wind_on 1 144 1.0 0.0 +es 03_wind_off 1 144 1.0 0.0 +es 04_res 1 144 1.0 0.0 +es 05_nuclear 1 144 1.0 0.0 +es 06_coal 1 144 1.0 0.0 +es 07_gas 1 144 1.0 0.0 +es 08_non-res 1 144 1.0 0.0 +es 09_hydro_pump 1 144 0.0 0.0 +es 01_solar 1 145 1.0 0.0 +es 02_wind_on 1 145 1.0 0.0 +es 03_wind_off 1 145 1.0 0.0 +es 04_res 1 145 1.0 0.0 +es 05_nuclear 1 145 1.0 0.0 +es 06_coal 1 145 1.0 0.0 +es 07_gas 1 145 1.0 0.0 +es 08_non-res 1 145 1.0 0.0 +es 09_hydro_pump 1 145 0.0 0.0 +es 01_solar 1 146 1.0 0.0 +es 02_wind_on 1 146 1.0 0.0 +es 03_wind_off 1 146 1.0 0.0 +es 04_res 1 146 1.0 0.0 +es 05_nuclear 1 146 1.0 0.0 +es 06_coal 1 146 1.0 0.0 +es 07_gas 1 146 1.0 0.0 +es 08_non-res 1 146 1.0 0.0 +es 09_hydro_pump 1 146 0.0 0.0 +es 01_solar 1 147 1.0 0.0 +es 02_wind_on 1 147 1.0 0.0 +es 03_wind_off 1 147 1.0 0.0 +es 04_res 1 147 1.0 0.0 +es 05_nuclear 1 147 1.0 0.0 +es 06_coal 1 147 1.0 0.0 +es 07_gas 1 147 1.0 0.0 +es 08_non-res 1 147 1.0 0.0 +es 09_hydro_pump 1 147 0.0 0.0 +es 01_solar 1 148 1.0 0.0 +es 02_wind_on 1 148 1.0 0.0 +es 03_wind_off 1 148 1.0 0.0 +es 04_res 1 148 1.0 0.0 +es 05_nuclear 1 148 1.0 0.0 +es 06_coal 1 148 1.0 0.0 +es 07_gas 1 148 1.0 0.0 +es 08_non-res 1 148 1.0 0.0 +es 09_hydro_pump 1 148 0.0 0.0 +es 01_solar 1 149 1.0 0.0 +es 02_wind_on 1 149 1.0 0.0 +es 03_wind_off 1 149 1.0 0.0 +es 04_res 1 149 1.0 0.0 +es 05_nuclear 1 149 1.0 0.0 +es 06_coal 1 149 1.0 0.0 +es 07_gas 1 149 1.0 0.0 +es 08_non-res 1 149 1.0 0.0 +es 09_hydro_pump 1 149 0.0 0.0 +es 01_solar 1 150 1.0 0.0 +es 02_wind_on 1 150 1.0 0.0 +es 03_wind_off 1 150 1.0 0.0 +es 04_res 1 150 1.0 0.0 +es 05_nuclear 1 150 1.0 0.0 +es 06_coal 1 150 1.0 0.0 +es 07_gas 1 150 1.0 0.0 +es 08_non-res 1 150 1.0 0.0 +es 09_hydro_pump 1 150 0.0 0.0 +es 01_solar 1 151 1.0 0.0 +es 02_wind_on 1 151 1.0 0.0 +es 03_wind_off 1 151 1.0 0.0 +es 04_res 1 151 1.0 0.0 +es 05_nuclear 1 151 1.0 0.0 +es 06_coal 1 151 1.0 0.0 +es 07_gas 1 151 1.0 0.0 +es 08_non-res 1 151 1.0 0.0 +es 09_hydro_pump 1 151 0.0 0.0 +es 01_solar 1 152 1.0 0.0 +es 02_wind_on 1 152 1.0 0.0 +es 03_wind_off 1 152 1.0 0.0 +es 04_res 1 152 1.0 0.0 +es 05_nuclear 1 152 1.0 0.0 +es 06_coal 1 152 1.0 0.0 +es 07_gas 1 152 1.0 0.0 +es 08_non-res 1 152 1.0 0.0 +es 09_hydro_pump 1 152 0.0 0.0 +es 01_solar 1 153 1.0 0.0 +es 02_wind_on 1 153 1.0 0.0 +es 03_wind_off 1 153 1.0 0.0 +es 04_res 1 153 1.0 0.0 +es 05_nuclear 1 153 1.0 0.0 +es 06_coal 1 153 1.0 0.0 +es 07_gas 1 153 1.0 0.0 +es 08_non-res 1 153 1.0 0.0 +es 09_hydro_pump 1 153 0.0 0.0 +es 01_solar 1 154 1.0 0.0 +es 02_wind_on 1 154 1.0 0.0 +es 03_wind_off 1 154 1.0 0.0 +es 04_res 1 154 1.0 0.0 +es 05_nuclear 1 154 1.0 0.0 +es 06_coal 1 154 1.0 0.0 +es 07_gas 1 154 1.0 0.0 +es 08_non-res 1 154 1.0 0.0 +es 09_hydro_pump 1 154 0.0 0.0 +es 01_solar 1 155 1.0 0.0 +es 02_wind_on 1 155 1.0 0.0 +es 03_wind_off 1 155 1.0 0.0 +es 04_res 1 155 1.0 0.0 +es 05_nuclear 1 155 1.0 0.0 +es 06_coal 1 155 1.0 0.0 +es 07_gas 1 155 1.0 0.0 +es 08_non-res 1 155 1.0 0.0 +es 09_hydro_pump 1 155 0.0 0.0 +es 01_solar 1 156 1.0 0.0 +es 02_wind_on 1 156 1.0 0.0 +es 03_wind_off 1 156 1.0 0.0 +es 04_res 1 156 1.0 0.0 +es 05_nuclear 1 156 1.0 0.0 +es 06_coal 1 156 1.0 0.0 +es 07_gas 1 156 1.0 0.0 +es 08_non-res 1 156 1.0 0.0 +es 09_hydro_pump 1 156 0.0 0.0 +es 01_solar 1 157 1.0 0.0 +es 02_wind_on 1 157 1.0 0.0 +es 03_wind_off 1 157 1.0 0.0 +es 04_res 1 157 1.0 0.0 +es 05_nuclear 1 157 1.0 0.0 +es 06_coal 1 157 1.0 0.0 +es 07_gas 1 157 1.0 0.0 +es 08_non-res 1 157 1.0 0.0 +es 09_hydro_pump 1 157 0.0 0.0 +es 01_solar 1 158 1.0 0.0 +es 02_wind_on 1 158 1.0 0.0 +es 03_wind_off 1 158 1.0 0.0 +es 04_res 1 158 1.0 0.0 +es 05_nuclear 1 158 1.0 0.0 +es 06_coal 1 158 1.0 0.0 +es 07_gas 1 158 1.0 0.0 +es 08_non-res 1 158 1.0 0.0 +es 09_hydro_pump 1 158 0.0 0.0 +es 01_solar 1 159 1.0 0.0 +es 02_wind_on 1 159 1.0 0.0 +es 03_wind_off 1 159 1.0 0.0 +es 04_res 1 159 1.0 0.0 +es 05_nuclear 1 159 1.0 0.0 +es 06_coal 1 159 1.0 0.0 +es 07_gas 1 159 1.0 0.0 +es 08_non-res 1 159 1.0 0.0 +es 09_hydro_pump 1 159 0.0 0.0 +es 01_solar 1 160 1.0 0.0 +es 02_wind_on 1 160 1.0 0.0 +es 03_wind_off 1 160 1.0 0.0 +es 04_res 1 160 1.0 0.0 +es 05_nuclear 1 160 1.0 0.0 +es 06_coal 1 160 1.0 0.0 +es 07_gas 1 160 1.0 0.0 +es 08_non-res 1 160 1.0 0.0 +es 09_hydro_pump 1 160 0.0 0.0 +es 01_solar 1 161 1.0 0.0 +es 02_wind_on 1 161 1.0 0.0 +es 03_wind_off 1 161 1.0 0.0 +es 04_res 1 161 1.0 0.0 +es 05_nuclear 1 161 1.0 0.0 +es 06_coal 1 161 1.0 0.0 +es 07_gas 1 161 1.0 0.0 +es 08_non-res 1 161 1.0 0.0 +es 09_hydro_pump 1 161 0.0 0.0 +es 01_solar 1 162 1.0 0.0 +es 02_wind_on 1 162 1.0 0.0 +es 03_wind_off 1 162 1.0 0.0 +es 04_res 1 162 1.0 0.0 +es 05_nuclear 1 162 1.0 0.0 +es 06_coal 1 162 1.0 0.0 +es 07_gas 1 162 1.0 0.0 +es 08_non-res 1 162 1.0 0.0 +es 09_hydro_pump 1 162 1.0 0.0 +es 01_solar 1 163 1.0 0.0 +es 02_wind_on 1 163 1.0 0.0 +es 03_wind_off 1 163 1.0 0.0 +es 04_res 1 163 1.0 0.0 +es 05_nuclear 1 163 1.0 0.0 +es 06_coal 1 163 1.0 0.0 +es 07_gas 1 163 1.0 0.0 +es 08_non-res 1 163 1.0 0.0 +es 09_hydro_pump 1 163 1.0 0.0 +es 01_solar 1 164 1.0 0.0 +es 02_wind_on 1 164 1.0 0.0 +es 03_wind_off 1 164 1.0 0.0 +es 04_res 1 164 1.0 0.0 +es 05_nuclear 1 164 1.0 0.0 +es 06_coal 1 164 1.0 0.0 +es 07_gas 1 164 1.0 0.0 +es 08_non-res 1 164 1.0 0.0 +es 09_hydro_pump 1 164 1.0 0.0 +es 01_solar 1 165 1.0 0.0 +es 02_wind_on 1 165 1.0 0.0 +es 03_wind_off 1 165 1.0 0.0 +es 04_res 1 165 1.0 0.0 +es 05_nuclear 1 165 1.0 0.0 +es 06_coal 1 165 1.0 0.0 +es 07_gas 1 165 1.0 0.0 +es 08_non-res 1 165 1.0 0.0 +es 09_hydro_pump 1 165 1.0 0.0 +es 01_solar 1 166 1.0 0.0 +es 02_wind_on 1 166 1.0 0.0 +es 03_wind_off 1 166 1.0 0.0 +es 04_res 1 166 1.0 0.0 +es 05_nuclear 1 166 1.0 0.0 +es 06_coal 1 166 1.0 0.0 +es 07_gas 1 166 1.0 0.0 +es 08_non-res 1 166 1.0 0.0 +es 09_hydro_pump 1 166 1.0 0.0 +es 01_solar 1 167 1.0 0.0 +es 02_wind_on 1 167 1.0 0.0 +es 03_wind_off 1 167 1.0 0.0 +es 04_res 1 167 1.0 0.0 +es 05_nuclear 1 167 1.0 0.0 +es 06_coal 1 167 1.0 0.0 +es 07_gas 1 167 1.0 0.0 +es 08_non-res 1 167 1.0 0.0 +es 09_hydro_pump 1 167 1.0 0.0 +es 01_solar 1 168 1.0 0.0 +es 02_wind_on 1 168 1.0 0.0 +es 03_wind_off 1 168 1.0 0.0 +es 04_res 1 168 1.0 0.0 +es 05_nuclear 1 168 1.0 0.0 +es 06_coal 1 168 1.0 0.0 +es 07_gas 1 168 1.0 0.0 +es 08_non-res 1 168 1.0 0.0 +es 09_hydro_pump 1 168 1.0 0.0 +es 01_solar 1 169 0.0 0.0 +es 02_wind_on 1 169 0.0 0.0 +es 03_wind_off 1 169 0.0 0.0 +es 04_res 1 169 0.0 0.0 +es 05_nuclear 1 169 0.0 0.0 +es 06_coal 1 169 0.0 0.0 +es 07_gas 1 169 0.0 0.0 +es 08_non-res 1 169 0.0 0.0 +es 09_hydro_pump 1 169 0.0 0.0 +es 01_solar 1 170 1.0 0.0 +es 02_wind_on 1 170 0.0 0.0 +es 03_wind_off 1 170 0.0 0.0 +es 04_res 1 170 0.0 0.0 +es 05_nuclear 1 170 0.0 0.0 +es 06_coal 1 170 0.0 0.0 +es 07_gas 1 170 0.0 0.0 +es 08_non-res 1 170 0.0 0.0 +es 09_hydro_pump 1 170 0.0 0.0 +es 01_solar 1 171 1.0 0.0 +es 02_wind_on 1 171 0.0 0.0 +es 03_wind_off 1 171 0.0 0.0 +es 04_res 1 171 0.0 0.0 +es 05_nuclear 1 171 0.0 0.0 +es 06_coal 1 171 0.0 0.0 +es 07_gas 1 171 0.0 0.0 +es 08_non-res 1 171 0.0 0.0 +es 09_hydro_pump 1 171 0.0 0.0 +es 01_solar 1 172 1.0 0.0 +es 02_wind_on 1 172 0.0 0.0 +es 03_wind_off 1 172 0.0 0.0 +es 04_res 1 172 0.0 0.0 +es 05_nuclear 1 172 0.0 0.0 +es 06_coal 1 172 0.0 0.0 +es 07_gas 1 172 0.0 0.0 +es 08_non-res 1 172 0.0 0.0 +es 09_hydro_pump 1 172 0.0 0.0 +es 01_solar 1 173 1.0 0.0 +es 02_wind_on 1 173 0.0 0.0 +es 03_wind_off 1 173 0.0 0.0 +es 04_res 1 173 0.0 0.0 +es 05_nuclear 1 173 0.0 0.0 +es 06_coal 1 173 0.0 0.0 +es 07_gas 1 173 0.0 0.0 +es 08_non-res 1 173 0.0 0.0 +es 09_hydro_pump 1 173 0.0 0.0 +es 01_solar 1 174 1.0 0.0 +es 02_wind_on 1 174 0.0 0.0 +es 03_wind_off 1 174 0.0 0.0 +es 04_res 1 174 0.0 0.0 +es 05_nuclear 1 174 0.0 0.0 +es 06_coal 1 174 0.0 0.0 +es 07_gas 1 174 0.0 0.0 +es 08_non-res 1 174 0.0 0.0 +es 09_hydro_pump 1 174 0.0 0.0 +es 01_solar 1 175 1.0 0.0 +es 02_wind_on 1 175 0.0 0.0 +es 03_wind_off 1 175 0.0 0.0 +es 04_res 1 175 0.0 0.0 +es 05_nuclear 1 175 0.0 0.0 +es 06_coal 1 175 0.0 0.0 +es 07_gas 1 175 0.0 0.0 +es 08_non-res 1 175 0.0 0.0 +es 09_hydro_pump 1 175 0.0 0.0 +es 01_solar 1 176 1.0 0.0 +es 02_wind_on 1 176 0.0 0.0 +es 03_wind_off 1 176 0.0 0.0 +es 04_res 1 176 0.0 0.0 +es 05_nuclear 1 176 0.0 0.0 +es 06_coal 1 176 0.0 0.0 +es 07_gas 1 176 0.0 0.0 +es 08_non-res 1 176 0.0 0.0 +es 09_hydro_pump 1 176 0.0 0.0 +es 01_solar 1 177 1.0 0.0 +es 02_wind_on 1 177 0.0 0.0 +es 03_wind_off 1 177 0.0 0.0 +es 04_res 1 177 0.0 0.0 +es 05_nuclear 1 177 0.0 0.0 +es 06_coal 1 177 0.0 0.0 +es 07_gas 1 177 0.0 0.0 +es 08_non-res 1 177 0.0 0.0 +es 09_hydro_pump 1 177 0.0 0.0 +es 01_solar 1 178 1.0 0.0 +es 02_wind_on 1 178 0.0 0.0 +es 03_wind_off 1 178 0.0 0.0 +es 04_res 1 178 0.0 0.0 +es 05_nuclear 1 178 0.0 0.0 +es 06_coal 1 178 0.0 0.0 +es 07_gas 1 178 0.0 0.0 +es 08_non-res 1 178 0.0 0.0 +es 09_hydro_pump 1 178 0.0 0.0 +es 01_solar 1 179 1.0 0.0 +es 02_wind_on 1 179 0.0 0.0 +es 03_wind_off 1 179 0.0 0.0 +es 04_res 1 179 0.0 0.0 +es 05_nuclear 1 179 0.0 0.0 +es 06_coal 1 179 0.0 0.0 +es 07_gas 1 179 0.0 0.0 +es 08_non-res 1 179 0.0 0.0 +es 09_hydro_pump 1 179 0.0 0.0 +es 01_solar 1 180 1.0 0.0 +es 02_wind_on 1 180 0.0 0.0 +es 03_wind_off 1 180 0.0 0.0 +es 04_res 1 180 0.0 0.0 +es 05_nuclear 1 180 0.0 0.0 +es 06_coal 1 180 0.0 0.0 +es 07_gas 1 180 0.0 0.0 +es 08_non-res 1 180 0.0 0.0 +es 09_hydro_pump 1 180 0.0 0.0 +es 01_solar 1 181 1.0 0.0 +es 02_wind_on 1 181 0.0 0.0 +es 03_wind_off 1 181 0.0 0.0 +es 04_res 1 181 0.0 0.0 +es 05_nuclear 1 181 0.0 0.0 +es 06_coal 1 181 0.0 0.0 +es 07_gas 1 181 0.0 0.0 +es 08_non-res 1 181 0.0 0.0 +es 09_hydro_pump 1 181 0.0 0.0 +es 01_solar 1 182 1.0 0.0 +es 02_wind_on 1 182 0.0 0.0 +es 03_wind_off 1 182 0.0 0.0 +es 04_res 1 182 0.0 0.0 +es 05_nuclear 1 182 0.0 0.0 +es 06_coal 1 182 0.0 0.0 +es 07_gas 1 182 0.0 0.0 +es 08_non-res 1 182 0.0 0.0 +es 09_hydro_pump 1 182 0.0 0.0 +es 01_solar 1 183 1.0 0.0 +es 02_wind_on 1 183 0.0 0.0 +es 03_wind_off 1 183 0.0 0.0 +es 04_res 1 183 0.0 0.0 +es 05_nuclear 1 183 0.0 0.0 +es 06_coal 1 183 0.0 0.0 +es 07_gas 1 183 0.0 0.0 +es 08_non-res 1 183 0.0 0.0 +es 09_hydro_pump 1 183 0.0 0.0 +es 01_solar 1 184 1.0 0.0 +es 02_wind_on 1 184 0.0 0.0 +es 03_wind_off 1 184 0.0 0.0 +es 04_res 1 184 0.0 0.0 +es 05_nuclear 1 184 0.0 0.0 +es 06_coal 1 184 0.0 0.0 +es 07_gas 1 184 0.0 0.0 +es 08_non-res 1 184 0.0 0.0 +es 09_hydro_pump 1 184 0.0 0.0 +es 01_solar 1 185 1.0 0.0 +es 02_wind_on 1 185 0.0 0.0 +es 03_wind_off 1 185 0.0 0.0 +es 04_res 1 185 0.0 0.0 +es 05_nuclear 1 185 0.0 0.0 +es 06_coal 1 185 0.0 0.0 +es 07_gas 1 185 0.0 0.0 +es 08_non-res 1 185 0.0 0.0 +es 09_hydro_pump 1 185 0.0 0.0 +es 01_solar 1 186 1.0 0.0 +es 02_wind_on 1 186 0.0 0.0 +es 03_wind_off 1 186 0.0 0.0 +es 04_res 1 186 0.0 0.0 +es 05_nuclear 1 186 0.0 0.0 +es 06_coal 1 186 0.0 0.0 +es 07_gas 1 186 0.0 0.0 +es 08_non-res 1 186 0.0 0.0 +es 09_hydro_pump 1 186 0.0 0.0 +es 01_solar 1 187 1.0 0.0 +es 02_wind_on 1 187 0.0 0.0 +es 03_wind_off 1 187 0.0 0.0 +es 04_res 1 187 0.0 0.0 +es 05_nuclear 1 187 0.0 0.0 +es 06_coal 1 187 0.0 0.0 +es 07_gas 1 187 0.0 0.0 +es 08_non-res 1 187 0.0 0.0 +es 09_hydro_pump 1 187 0.0 0.0 +es 01_solar 1 188 1.0 0.0 +es 02_wind_on 1 188 0.0 0.0 +es 03_wind_off 1 188 0.0 0.0 +es 04_res 1 188 0.0 0.0 +es 05_nuclear 1 188 0.0 0.0 +es 06_coal 1 188 0.0 0.0 +es 07_gas 1 188 0.0 0.0 +es 08_non-res 1 188 0.0 0.0 +es 09_hydro_pump 1 188 0.0 0.0 +es 01_solar 1 189 1.0 0.0 +es 02_wind_on 1 189 0.0 0.0 +es 03_wind_off 1 189 0.0 0.0 +es 04_res 1 189 0.0 0.0 +es 05_nuclear 1 189 0.0 0.0 +es 06_coal 1 189 0.0 0.0 +es 07_gas 1 189 0.0 0.0 +es 08_non-res 1 189 0.0 0.0 +es 09_hydro_pump 1 189 0.0 0.0 +es 01_solar 1 190 1.0 0.0 +es 02_wind_on 1 190 1.0 0.0 +es 03_wind_off 1 190 0.0 0.0 +es 04_res 1 190 0.0 0.0 +es 05_nuclear 1 190 0.0 0.0 +es 06_coal 1 190 0.0 0.0 +es 07_gas 1 190 0.0 0.0 +es 08_non-res 1 190 0.0 0.0 +es 09_hydro_pump 1 190 0.0 0.0 +es 01_solar 1 191 1.0 0.0 +es 02_wind_on 1 191 1.0 0.0 +es 03_wind_off 1 191 0.0 0.0 +es 04_res 1 191 0.0 0.0 +es 05_nuclear 1 191 0.0 0.0 +es 06_coal 1 191 0.0 0.0 +es 07_gas 1 191 0.0 0.0 +es 08_non-res 1 191 0.0 0.0 +es 09_hydro_pump 1 191 0.0 0.0 +es 01_solar 1 192 1.0 0.0 +es 02_wind_on 1 192 1.0 0.0 +es 03_wind_off 1 192 0.0 0.0 +es 04_res 1 192 0.0 0.0 +es 05_nuclear 1 192 0.0 0.0 +es 06_coal 1 192 0.0 0.0 +es 07_gas 1 192 0.0 0.0 +es 08_non-res 1 192 0.0 0.0 +es 09_hydro_pump 1 192 0.0 0.0 +es 01_solar 1 193 1.0 0.0 +es 02_wind_on 1 193 1.0 0.0 +es 03_wind_off 1 193 0.0 0.0 +es 04_res 1 193 0.0 0.0 +es 05_nuclear 1 193 0.0 0.0 +es 06_coal 1 193 0.0 0.0 +es 07_gas 1 193 0.0 0.0 +es 08_non-res 1 193 0.0 0.0 +es 09_hydro_pump 1 193 0.0 0.0 +es 01_solar 1 194 1.0 0.0 +es 02_wind_on 1 194 1.0 0.0 +es 03_wind_off 1 194 0.0 0.0 +es 04_res 1 194 0.0 0.0 +es 05_nuclear 1 194 0.0 0.0 +es 06_coal 1 194 0.0 0.0 +es 07_gas 1 194 0.0 0.0 +es 08_non-res 1 194 0.0 0.0 +es 09_hydro_pump 1 194 0.0 0.0 +es 01_solar 1 195 1.0 0.0 +es 02_wind_on 1 195 1.0 0.0 +es 03_wind_off 1 195 0.0 0.0 +es 04_res 1 195 0.0 0.0 +es 05_nuclear 1 195 0.0 0.0 +es 06_coal 1 195 0.0 0.0 +es 07_gas 1 195 0.0 0.0 +es 08_non-res 1 195 0.0 0.0 +es 09_hydro_pump 1 195 0.0 0.0 +es 01_solar 1 196 1.0 0.0 +es 02_wind_on 1 196 1.0 0.0 +es 03_wind_off 1 196 0.0 0.0 +es 04_res 1 196 0.0 0.0 +es 05_nuclear 1 196 0.0 0.0 +es 06_coal 1 196 0.0 0.0 +es 07_gas 1 196 0.0 0.0 +es 08_non-res 1 196 0.0 0.0 +es 09_hydro_pump 1 196 0.0 0.0 +es 01_solar 1 197 1.0 0.0 +es 02_wind_on 1 197 1.0 0.0 +es 03_wind_off 1 197 0.0 0.0 +es 04_res 1 197 0.0 0.0 +es 05_nuclear 1 197 0.0 0.0 +es 06_coal 1 197 0.0 0.0 +es 07_gas 1 197 0.0 0.0 +es 08_non-res 1 197 0.0 0.0 +es 09_hydro_pump 1 197 0.0 0.0 +es 01_solar 1 198 1.0 0.0 +es 02_wind_on 1 198 1.0 0.0 +es 03_wind_off 1 198 0.0 0.0 +es 04_res 1 198 0.0 0.0 +es 05_nuclear 1 198 0.0 0.0 +es 06_coal 1 198 0.0 0.0 +es 07_gas 1 198 0.0 0.0 +es 08_non-res 1 198 0.0 0.0 +es 09_hydro_pump 1 198 0.0 0.0 +es 01_solar 1 199 1.0 0.0 +es 02_wind_on 1 199 1.0 0.0 +es 03_wind_off 1 199 0.0 0.0 +es 04_res 1 199 0.0 0.0 +es 05_nuclear 1 199 0.0 0.0 +es 06_coal 1 199 0.0 0.0 +es 07_gas 1 199 0.0 0.0 +es 08_non-res 1 199 0.0 0.0 +es 09_hydro_pump 1 199 0.0 0.0 +es 01_solar 1 200 1.0 0.0 +es 02_wind_on 1 200 1.0 0.0 +es 03_wind_off 1 200 0.0 0.0 +es 04_res 1 200 0.0 0.0 +es 05_nuclear 1 200 0.0 0.0 +es 06_coal 1 200 0.0 0.0 +es 07_gas 1 200 0.0 0.0 +es 08_non-res 1 200 0.0 0.0 +es 09_hydro_pump 1 200 0.0 0.0 +es 01_solar 1 201 1.0 0.0 +es 02_wind_on 1 201 1.0 0.0 +es 03_wind_off 1 201 0.0 0.0 +es 04_res 1 201 0.0 0.0 +es 05_nuclear 1 201 0.0 0.0 +es 06_coal 1 201 0.0 0.0 +es 07_gas 1 201 0.0 0.0 +es 08_non-res 1 201 0.0 0.0 +es 09_hydro_pump 1 201 0.0 0.0 +es 01_solar 1 202 1.0 0.0 +es 02_wind_on 1 202 1.0 0.0 +es 03_wind_off 1 202 0.0 0.0 +es 04_res 1 202 0.0 0.0 +es 05_nuclear 1 202 0.0 0.0 +es 06_coal 1 202 0.0 0.0 +es 07_gas 1 202 0.0 0.0 +es 08_non-res 1 202 0.0 0.0 +es 09_hydro_pump 1 202 0.0 0.0 +es 01_solar 1 203 1.0 0.0 +es 02_wind_on 1 203 1.0 0.0 +es 03_wind_off 1 203 0.0 0.0 +es 04_res 1 203 0.0 0.0 +es 05_nuclear 1 203 0.0 0.0 +es 06_coal 1 203 0.0 0.0 +es 07_gas 1 203 0.0 0.0 +es 08_non-res 1 203 0.0 0.0 +es 09_hydro_pump 1 203 0.0 0.0 +es 01_solar 1 204 1.0 0.0 +es 02_wind_on 1 204 1.0 0.0 +es 03_wind_off 1 204 0.0 0.0 +es 04_res 1 204 0.0 0.0 +es 05_nuclear 1 204 0.0 0.0 +es 06_coal 1 204 0.0 0.0 +es 07_gas 1 204 0.0 0.0 +es 08_non-res 1 204 0.0 0.0 +es 09_hydro_pump 1 204 0.0 0.0 +es 01_solar 1 205 1.0 0.0 +es 02_wind_on 1 205 1.0 0.0 +es 03_wind_off 1 205 0.0 0.0 +es 04_res 1 205 0.0 0.0 +es 05_nuclear 1 205 0.0 0.0 +es 06_coal 1 205 0.0 0.0 +es 07_gas 1 205 0.0 0.0 +es 08_non-res 1 205 0.0 0.0 +es 09_hydro_pump 1 205 0.0 0.0 +es 01_solar 1 206 1.0 0.0 +es 02_wind_on 1 206 1.0 0.0 +es 03_wind_off 1 206 0.0 0.0 +es 04_res 1 206 0.0 0.0 +es 05_nuclear 1 206 0.0 0.0 +es 06_coal 1 206 0.0 0.0 +es 07_gas 1 206 0.0 0.0 +es 08_non-res 1 206 0.0 0.0 +es 09_hydro_pump 1 206 0.0 0.0 +es 01_solar 1 207 1.0 0.0 +es 02_wind_on 1 207 1.0 0.0 +es 03_wind_off 1 207 0.0 0.0 +es 04_res 1 207 0.0 0.0 +es 05_nuclear 1 207 0.0 0.0 +es 06_coal 1 207 0.0 0.0 +es 07_gas 1 207 0.0 0.0 +es 08_non-res 1 207 0.0 0.0 +es 09_hydro_pump 1 207 0.0 0.0 +es 01_solar 1 208 1.0 0.0 +es 02_wind_on 1 208 1.0 0.0 +es 03_wind_off 1 208 0.0 0.0 +es 04_res 1 208 0.0 0.0 +es 05_nuclear 1 208 0.0 0.0 +es 06_coal 1 208 0.0 0.0 +es 07_gas 1 208 0.0 0.0 +es 08_non-res 1 208 0.0 0.0 +es 09_hydro_pump 1 208 0.0 0.0 +es 01_solar 1 209 1.0 0.0 +es 02_wind_on 1 209 1.0 0.0 +es 03_wind_off 1 209 0.0 0.0 +es 04_res 1 209 0.0 0.0 +es 05_nuclear 1 209 0.0 0.0 +es 06_coal 1 209 0.0 0.0 +es 07_gas 1 209 0.0 0.0 +es 08_non-res 1 209 0.0 0.0 +es 09_hydro_pump 1 209 0.0 0.0 +es 01_solar 1 210 1.0 0.0 +es 02_wind_on 1 210 1.0 0.0 +es 03_wind_off 1 210 1.0 0.0 +es 04_res 1 210 0.0 0.0 +es 05_nuclear 1 210 0.0 0.0 +es 06_coal 1 210 0.0 0.0 +es 07_gas 1 210 0.0 0.0 +es 08_non-res 1 210 0.0 0.0 +es 09_hydro_pump 1 210 0.0 0.0 +es 01_solar 1 211 1.0 0.0 +es 02_wind_on 1 211 1.0 0.0 +es 03_wind_off 1 211 1.0 0.0 +es 04_res 1 211 0.0 0.0 +es 05_nuclear 1 211 0.0 0.0 +es 06_coal 1 211 0.0 0.0 +es 07_gas 1 211 0.0 0.0 +es 08_non-res 1 211 0.0 0.0 +es 09_hydro_pump 1 211 0.0 0.0 +es 01_solar 1 212 1.0 0.0 +es 02_wind_on 1 212 1.0 0.0 +es 03_wind_off 1 212 1.0 0.0 +es 04_res 1 212 0.0 0.0 +es 05_nuclear 1 212 0.0 0.0 +es 06_coal 1 212 0.0 0.0 +es 07_gas 1 212 0.0 0.0 +es 08_non-res 1 212 0.0 0.0 +es 09_hydro_pump 1 212 0.0 0.0 +es 01_solar 1 213 1.0 0.0 +es 02_wind_on 1 213 1.0 0.0 +es 03_wind_off 1 213 1.0 0.0 +es 04_res 1 213 0.0 0.0 +es 05_nuclear 1 213 0.0 0.0 +es 06_coal 1 213 0.0 0.0 +es 07_gas 1 213 0.0 0.0 +es 08_non-res 1 213 0.0 0.0 +es 09_hydro_pump 1 213 0.0 0.0 +es 01_solar 1 214 1.0 0.0 +es 02_wind_on 1 214 1.0 0.0 +es 03_wind_off 1 214 1.0 0.0 +es 04_res 1 214 0.0 0.0 +es 05_nuclear 1 214 0.0 0.0 +es 06_coal 1 214 0.0 0.0 +es 07_gas 1 214 0.0 0.0 +es 08_non-res 1 214 0.0 0.0 +es 09_hydro_pump 1 214 0.0 0.0 +es 01_solar 1 215 1.0 0.0 +es 02_wind_on 1 215 1.0 0.0 +es 03_wind_off 1 215 1.0 0.0 +es 04_res 1 215 0.0 0.0 +es 05_nuclear 1 215 0.0 0.0 +es 06_coal 1 215 0.0 0.0 +es 07_gas 1 215 0.0 0.0 +es 08_non-res 1 215 0.0 0.0 +es 09_hydro_pump 1 215 0.0 0.0 +es 01_solar 1 216 1.0 0.0 +es 02_wind_on 1 216 1.0 0.0 +es 03_wind_off 1 216 1.0 0.0 +es 04_res 1 216 0.0 0.0 +es 05_nuclear 1 216 0.0 0.0 +es 06_coal 1 216 0.0 0.0 +es 07_gas 1 216 0.0 0.0 +es 08_non-res 1 216 0.0 0.0 +es 09_hydro_pump 1 216 0.0 0.0 +es 01_solar 1 217 1.0 0.0 +es 02_wind_on 1 217 1.0 0.0 +es 03_wind_off 1 217 1.0 0.0 +es 04_res 1 217 0.0 0.0 +es 05_nuclear 1 217 0.0 0.0 +es 06_coal 1 217 0.0 0.0 +es 07_gas 1 217 0.0 0.0 +es 08_non-res 1 217 0.0 0.0 +es 09_hydro_pump 1 217 0.0 0.0 +es 01_solar 1 218 1.0 0.0 +es 02_wind_on 1 218 1.0 0.0 +es 03_wind_off 1 218 1.0 0.0 +es 04_res 1 218 0.0 0.0 +es 05_nuclear 1 218 0.0 0.0 +es 06_coal 1 218 0.0 0.0 +es 07_gas 1 218 0.0 0.0 +es 08_non-res 1 218 0.0 0.0 +es 09_hydro_pump 1 218 0.0 0.0 +es 01_solar 1 219 1.0 0.0 +es 02_wind_on 1 219 1.0 0.0 +es 03_wind_off 1 219 1.0 0.0 +es 04_res 1 219 0.0 0.0 +es 05_nuclear 1 219 0.0 0.0 +es 06_coal 1 219 0.0 0.0 +es 07_gas 1 219 0.0 0.0 +es 08_non-res 1 219 0.0 0.0 +es 09_hydro_pump 1 219 0.0 0.0 +es 01_solar 1 220 1.0 0.0 +es 02_wind_on 1 220 1.0 0.0 +es 03_wind_off 1 220 1.0 0.0 +es 04_res 1 220 0.0 0.0 +es 05_nuclear 1 220 0.0 0.0 +es 06_coal 1 220 0.0 0.0 +es 07_gas 1 220 0.0 0.0 +es 08_non-res 1 220 0.0 0.0 +es 09_hydro_pump 1 220 0.0 0.0 +es 01_solar 1 221 1.0 0.0 +es 02_wind_on 1 221 1.0 0.0 +es 03_wind_off 1 221 1.0 0.0 +es 04_res 1 221 0.0 0.0 +es 05_nuclear 1 221 0.0 0.0 +es 06_coal 1 221 0.0 0.0 +es 07_gas 1 221 0.0 0.0 +es 08_non-res 1 221 0.0 0.0 +es 09_hydro_pump 1 221 0.0 0.0 +es 01_solar 1 222 1.0 0.0 +es 02_wind_on 1 222 1.0 0.0 +es 03_wind_off 1 222 1.0 0.0 +es 04_res 1 222 0.0 0.0 +es 05_nuclear 1 222 0.0 0.0 +es 06_coal 1 222 0.0 0.0 +es 07_gas 1 222 0.0 0.0 +es 08_non-res 1 222 0.0 0.0 +es 09_hydro_pump 1 222 0.0 0.0 +es 01_solar 1 223 1.0 0.0 +es 02_wind_on 1 223 1.0 0.0 +es 03_wind_off 1 223 1.0 0.0 +es 04_res 1 223 0.0 0.0 +es 05_nuclear 1 223 0.0 0.0 +es 06_coal 1 223 0.0 0.0 +es 07_gas 1 223 0.0 0.0 +es 08_non-res 1 223 0.0 0.0 +es 09_hydro_pump 1 223 0.0 0.0 +es 01_solar 1 224 1.0 0.0 +es 02_wind_on 1 224 1.0 0.0 +es 03_wind_off 1 224 1.0 0.0 +es 04_res 1 224 0.0 0.0 +es 05_nuclear 1 224 0.0 0.0 +es 06_coal 1 224 0.0 0.0 +es 07_gas 1 224 0.0 0.0 +es 08_non-res 1 224 0.0 0.0 +es 09_hydro_pump 1 224 0.0 0.0 +es 01_solar 1 225 1.0 0.0 +es 02_wind_on 1 225 1.0 0.0 +es 03_wind_off 1 225 1.0 0.0 +es 04_res 1 225 0.0 0.0 +es 05_nuclear 1 225 0.0 0.0 +es 06_coal 1 225 0.0 0.0 +es 07_gas 1 225 0.0 0.0 +es 08_non-res 1 225 0.0 0.0 +es 09_hydro_pump 1 225 0.0 0.0 +es 01_solar 1 226 1.0 0.0 +es 02_wind_on 1 226 1.0 0.0 +es 03_wind_off 1 226 1.0 0.0 +es 04_res 1 226 0.0 0.0 +es 05_nuclear 1 226 0.0 0.0 +es 06_coal 1 226 0.0 0.0 +es 07_gas 1 226 0.0 0.0 +es 08_non-res 1 226 0.0 0.0 +es 09_hydro_pump 1 226 0.0 0.0 +es 01_solar 1 227 1.0 0.0 +es 02_wind_on 1 227 1.0 0.0 +es 03_wind_off 1 227 1.0 0.0 +es 04_res 1 227 0.0 0.0 +es 05_nuclear 1 227 0.0 0.0 +es 06_coal 1 227 0.0 0.0 +es 07_gas 1 227 0.0 0.0 +es 08_non-res 1 227 0.0 0.0 +es 09_hydro_pump 1 227 0.0 0.0 +es 01_solar 1 228 1.0 0.0 +es 02_wind_on 1 228 1.0 0.0 +es 03_wind_off 1 228 1.0 0.0 +es 04_res 1 228 0.0 0.0 +es 05_nuclear 1 228 0.0 0.0 +es 06_coal 1 228 0.0 0.0 +es 07_gas 1 228 0.0 0.0 +es 08_non-res 1 228 0.0 0.0 +es 09_hydro_pump 1 228 0.0 0.0 +es 01_solar 1 229 1.0 0.0 +es 02_wind_on 1 229 1.0 0.0 +es 03_wind_off 1 229 1.0 0.0 +es 04_res 1 229 0.0 0.0 +es 05_nuclear 1 229 0.0 0.0 +es 06_coal 1 229 0.0 0.0 +es 07_gas 1 229 0.0 0.0 +es 08_non-res 1 229 0.0 0.0 +es 09_hydro_pump 1 229 0.0 0.0 +es 01_solar 1 230 1.0 0.0 +es 02_wind_on 1 230 1.0 0.0 +es 03_wind_off 1 230 1.0 0.0 +es 04_res 1 230 1.0 0.0 +es 05_nuclear 1 230 0.0 0.0 +es 06_coal 1 230 0.0 0.0 +es 07_gas 1 230 0.0 0.0 +es 08_non-res 1 230 0.0 0.0 +es 09_hydro_pump 1 230 0.0 0.0 +es 01_solar 1 231 1.0 0.0 +es 02_wind_on 1 231 1.0 0.0 +es 03_wind_off 1 231 1.0 0.0 +es 04_res 1 231 1.0 0.0 +es 05_nuclear 1 231 0.0 0.0 +es 06_coal 1 231 0.0 0.0 +es 07_gas 1 231 0.0 0.0 +es 08_non-res 1 231 0.0 0.0 +es 09_hydro_pump 1 231 0.0 0.0 +es 01_solar 1 232 1.0 0.0 +es 02_wind_on 1 232 1.0 0.0 +es 03_wind_off 1 232 1.0 0.0 +es 04_res 1 232 1.0 0.0 +es 05_nuclear 1 232 0.0 0.0 +es 06_coal 1 232 0.0 0.0 +es 07_gas 1 232 0.0 0.0 +es 08_non-res 1 232 0.0 0.0 +es 09_hydro_pump 1 232 0.0 0.0 +es 01_solar 1 233 1.0 0.0 +es 02_wind_on 1 233 1.0 0.0 +es 03_wind_off 1 233 1.0 0.0 +es 04_res 1 233 1.0 0.0 +es 05_nuclear 1 233 0.0 0.0 +es 06_coal 1 233 0.0 0.0 +es 07_gas 1 233 0.0 0.0 +es 08_non-res 1 233 0.0 0.0 +es 09_hydro_pump 1 233 0.0 0.0 +es 01_solar 1 234 1.0 0.0 +es 02_wind_on 1 234 1.0 0.0 +es 03_wind_off 1 234 1.0 0.0 +es 04_res 1 234 1.0 0.0 +es 05_nuclear 1 234 0.0 0.0 +es 06_coal 1 234 0.0 0.0 +es 07_gas 1 234 0.0 0.0 +es 08_non-res 1 234 0.0 0.0 +es 09_hydro_pump 1 234 0.0 0.0 +es 01_solar 1 235 1.0 0.0 +es 02_wind_on 1 235 1.0 0.0 +es 03_wind_off 1 235 1.0 0.0 +es 04_res 1 235 1.0 0.0 +es 05_nuclear 1 235 0.0 0.0 +es 06_coal 1 235 0.0 0.0 +es 07_gas 1 235 0.0 0.0 +es 08_non-res 1 235 0.0 0.0 +es 09_hydro_pump 1 235 0.0 0.0 +es 01_solar 1 236 1.0 0.0 +es 02_wind_on 1 236 1.0 0.0 +es 03_wind_off 1 236 1.0 0.0 +es 04_res 1 236 1.0 0.0 +es 05_nuclear 1 236 0.0 0.0 +es 06_coal 1 236 0.0 0.0 +es 07_gas 1 236 0.0 0.0 +es 08_non-res 1 236 0.0 0.0 +es 09_hydro_pump 1 236 0.0 0.0 +es 01_solar 1 237 1.0 0.0 +es 02_wind_on 1 237 1.0 0.0 +es 03_wind_off 1 237 1.0 0.0 +es 04_res 1 237 1.0 0.0 +es 05_nuclear 1 237 0.0 0.0 +es 06_coal 1 237 0.0 0.0 +es 07_gas 1 237 0.0 0.0 +es 08_non-res 1 237 0.0 0.0 +es 09_hydro_pump 1 237 0.0 0.0 +es 01_solar 1 238 1.0 0.0 +es 02_wind_on 1 238 1.0 0.0 +es 03_wind_off 1 238 1.0 0.0 +es 04_res 1 238 1.0 0.0 +es 05_nuclear 1 238 0.0 0.0 +es 06_coal 1 238 0.0 0.0 +es 07_gas 1 238 0.0 0.0 +es 08_non-res 1 238 0.0 0.0 +es 09_hydro_pump 1 238 0.0 0.0 +es 01_solar 1 239 1.0 0.0 +es 02_wind_on 1 239 1.0 0.0 +es 03_wind_off 1 239 1.0 0.0 +es 04_res 1 239 1.0 0.0 +es 05_nuclear 1 239 0.0 0.0 +es 06_coal 1 239 0.0 0.0 +es 07_gas 1 239 0.0 0.0 +es 08_non-res 1 239 0.0 0.0 +es 09_hydro_pump 1 239 0.0 0.0 +es 01_solar 1 240 1.0 0.0 +es 02_wind_on 1 240 1.0 0.0 +es 03_wind_off 1 240 1.0 0.0 +es 04_res 1 240 1.0 0.0 +es 05_nuclear 1 240 0.0 0.0 +es 06_coal 1 240 0.0 0.0 +es 07_gas 1 240 0.0 0.0 +es 08_non-res 1 240 0.0 0.0 +es 09_hydro_pump 1 240 0.0 0.0 +es 01_solar 1 241 1.0 0.0 +es 02_wind_on 1 241 1.0 0.0 +es 03_wind_off 1 241 1.0 0.0 +es 04_res 1 241 1.0 0.0 +es 05_nuclear 1 241 0.0 0.0 +es 06_coal 1 241 0.0 0.0 +es 07_gas 1 241 0.0 0.0 +es 08_non-res 1 241 0.0 0.0 +es 09_hydro_pump 1 241 0.0 0.0 +es 01_solar 1 242 1.0 0.0 +es 02_wind_on 1 242 1.0 0.0 +es 03_wind_off 1 242 1.0 0.0 +es 04_res 1 242 1.0 0.0 +es 05_nuclear 1 242 0.0 0.0 +es 06_coal 1 242 0.0 0.0 +es 07_gas 1 242 0.0 0.0 +es 08_non-res 1 242 0.0 0.0 +es 09_hydro_pump 1 242 0.0 0.0 +es 01_solar 1 243 1.0 0.0 +es 02_wind_on 1 243 1.0 0.0 +es 03_wind_off 1 243 1.0 0.0 +es 04_res 1 243 1.0 0.0 +es 05_nuclear 1 243 0.0 0.0 +es 06_coal 1 243 0.0 0.0 +es 07_gas 1 243 0.0 0.0 +es 08_non-res 1 243 0.0 0.0 +es 09_hydro_pump 1 243 0.0 0.0 +es 01_solar 1 244 1.0 0.0 +es 02_wind_on 1 244 1.0 0.0 +es 03_wind_off 1 244 1.0 0.0 +es 04_res 1 244 1.0 0.0 +es 05_nuclear 1 244 0.0 0.0 +es 06_coal 1 244 0.0 0.0 +es 07_gas 1 244 0.0 0.0 +es 08_non-res 1 244 0.0 0.0 +es 09_hydro_pump 1 244 0.0 0.0 +es 01_solar 1 245 1.0 0.0 +es 02_wind_on 1 245 1.0 0.0 +es 03_wind_off 1 245 1.0 0.0 +es 04_res 1 245 1.0 0.0 +es 05_nuclear 1 245 0.0 0.0 +es 06_coal 1 245 0.0 0.0 +es 07_gas 1 245 0.0 0.0 +es 08_non-res 1 245 0.0 0.0 +es 09_hydro_pump 1 245 0.0 0.0 +es 01_solar 1 246 1.0 0.0 +es 02_wind_on 1 246 1.0 0.0 +es 03_wind_off 1 246 1.0 0.0 +es 04_res 1 246 1.0 0.0 +es 05_nuclear 1 246 0.0 0.0 +es 06_coal 1 246 0.0 0.0 +es 07_gas 1 246 0.0 0.0 +es 08_non-res 1 246 0.0 0.0 +es 09_hydro_pump 1 246 0.0 0.0 +es 01_solar 1 247 1.0 0.0 +es 02_wind_on 1 247 1.0 0.0 +es 03_wind_off 1 247 1.0 0.0 +es 04_res 1 247 1.0 0.0 +es 05_nuclear 1 247 0.0 0.0 +es 06_coal 1 247 0.0 0.0 +es 07_gas 1 247 0.0 0.0 +es 08_non-res 1 247 0.0 0.0 +es 09_hydro_pump 1 247 0.0 0.0 +es 01_solar 1 248 1.0 0.0 +es 02_wind_on 1 248 1.0 0.0 +es 03_wind_off 1 248 1.0 0.0 +es 04_res 1 248 1.0 0.0 +es 05_nuclear 1 248 0.0 0.0 +es 06_coal 1 248 0.0 0.0 +es 07_gas 1 248 0.0 0.0 +es 08_non-res 1 248 0.0 0.0 +es 09_hydro_pump 1 248 0.0 0.0 +es 01_solar 1 249 1.0 0.0 +es 02_wind_on 1 249 1.0 0.0 +es 03_wind_off 1 249 1.0 0.0 +es 04_res 1 249 1.0 0.0 +es 05_nuclear 1 249 0.0 0.0 +es 06_coal 1 249 0.0 0.0 +es 07_gas 1 249 0.0 0.0 +es 08_non-res 1 249 0.0 0.0 +es 09_hydro_pump 1 249 0.0 0.0 +es 01_solar 1 250 1.0 0.0 +es 02_wind_on 1 250 1.0 0.0 +es 03_wind_off 1 250 1.0 0.0 +es 04_res 1 250 1.0 0.0 +es 05_nuclear 1 250 1.0 0.0 +es 06_coal 1 250 0.0 0.0 +es 07_gas 1 250 0.0 0.0 +es 08_non-res 1 250 0.0 0.0 +es 09_hydro_pump 1 250 0.0 0.0 +es 01_solar 1 251 1.0 0.0 +es 02_wind_on 1 251 1.0 0.0 +es 03_wind_off 1 251 1.0 0.0 +es 04_res 1 251 1.0 0.0 +es 05_nuclear 1 251 1.0 0.0 +es 06_coal 1 251 0.0 0.0 +es 07_gas 1 251 0.0 0.0 +es 08_non-res 1 251 0.0 0.0 +es 09_hydro_pump 1 251 0.0 0.0 +es 01_solar 1 252 1.0 0.0 +es 02_wind_on 1 252 1.0 0.0 +es 03_wind_off 1 252 1.0 0.0 +es 04_res 1 252 1.0 0.0 +es 05_nuclear 1 252 1.0 0.0 +es 06_coal 1 252 0.0 0.0 +es 07_gas 1 252 0.0 0.0 +es 08_non-res 1 252 0.0 0.0 +es 09_hydro_pump 1 252 0.0 0.0 +es 01_solar 1 253 1.0 0.0 +es 02_wind_on 1 253 1.0 0.0 +es 03_wind_off 1 253 1.0 0.0 +es 04_res 1 253 1.0 0.0 +es 05_nuclear 1 253 1.0 0.0 +es 06_coal 1 253 0.0 0.0 +es 07_gas 1 253 0.0 0.0 +es 08_non-res 1 253 0.0 0.0 +es 09_hydro_pump 1 253 0.0 0.0 +es 01_solar 1 254 1.0 0.0 +es 02_wind_on 1 254 1.0 0.0 +es 03_wind_off 1 254 1.0 0.0 +es 04_res 1 254 1.0 0.0 +es 05_nuclear 1 254 1.0 0.0 +es 06_coal 1 254 0.0 0.0 +es 07_gas 1 254 0.0 0.0 +es 08_non-res 1 254 0.0 0.0 +es 09_hydro_pump 1 254 0.0 0.0 +es 01_solar 1 255 1.0 0.0 +es 02_wind_on 1 255 1.0 0.0 +es 03_wind_off 1 255 1.0 0.0 +es 04_res 1 255 1.0 0.0 +es 05_nuclear 1 255 1.0 0.0 +es 06_coal 1 255 0.0 0.0 +es 07_gas 1 255 0.0 0.0 +es 08_non-res 1 255 0.0 0.0 +es 09_hydro_pump 1 255 0.0 0.0 +es 01_solar 1 256 1.0 0.0 +es 02_wind_on 1 256 1.0 0.0 +es 03_wind_off 1 256 1.0 0.0 +es 04_res 1 256 1.0 0.0 +es 05_nuclear 1 256 1.0 0.0 +es 06_coal 1 256 0.0 0.0 +es 07_gas 1 256 0.0 0.0 +es 08_non-res 1 256 0.0 0.0 +es 09_hydro_pump 1 256 0.0 0.0 +es 01_solar 1 257 1.0 0.0 +es 02_wind_on 1 257 1.0 0.0 +es 03_wind_off 1 257 1.0 0.0 +es 04_res 1 257 1.0 0.0 +es 05_nuclear 1 257 1.0 0.0 +es 06_coal 1 257 0.0 0.0 +es 07_gas 1 257 0.0 0.0 +es 08_non-res 1 257 0.0 0.0 +es 09_hydro_pump 1 257 0.0 0.0 +es 01_solar 1 258 1.0 0.0 +es 02_wind_on 1 258 1.0 0.0 +es 03_wind_off 1 258 1.0 0.0 +es 04_res 1 258 1.0 0.0 +es 05_nuclear 1 258 1.0 0.0 +es 06_coal 1 258 0.0 0.0 +es 07_gas 1 258 0.0 0.0 +es 08_non-res 1 258 0.0 0.0 +es 09_hydro_pump 1 258 0.0 0.0 +es 01_solar 1 259 1.0 0.0 +es 02_wind_on 1 259 1.0 0.0 +es 03_wind_off 1 259 1.0 0.0 +es 04_res 1 259 1.0 0.0 +es 05_nuclear 1 259 1.0 0.0 +es 06_coal 1 259 0.0 0.0 +es 07_gas 1 259 0.0 0.0 +es 08_non-res 1 259 0.0 0.0 +es 09_hydro_pump 1 259 0.0 0.0 +es 01_solar 1 260 1.0 0.0 +es 02_wind_on 1 260 1.0 0.0 +es 03_wind_off 1 260 1.0 0.0 +es 04_res 1 260 1.0 0.0 +es 05_nuclear 1 260 1.0 0.0 +es 06_coal 1 260 0.0 0.0 +es 07_gas 1 260 0.0 0.0 +es 08_non-res 1 260 0.0 0.0 +es 09_hydro_pump 1 260 0.0 0.0 +es 01_solar 1 261 1.0 0.0 +es 02_wind_on 1 261 1.0 0.0 +es 03_wind_off 1 261 1.0 0.0 +es 04_res 1 261 1.0 0.0 +es 05_nuclear 1 261 1.0 0.0 +es 06_coal 1 261 0.0 0.0 +es 07_gas 1 261 0.0 0.0 +es 08_non-res 1 261 0.0 0.0 +es 09_hydro_pump 1 261 0.0 0.0 +es 01_solar 1 262 1.0 0.0 +es 02_wind_on 1 262 1.0 0.0 +es 03_wind_off 1 262 1.0 0.0 +es 04_res 1 262 1.0 0.0 +es 05_nuclear 1 262 1.0 0.0 +es 06_coal 1 262 0.0 0.0 +es 07_gas 1 262 0.0 0.0 +es 08_non-res 1 262 0.0 0.0 +es 09_hydro_pump 1 262 0.0 0.0 +es 01_solar 1 263 1.0 0.0 +es 02_wind_on 1 263 1.0 0.0 +es 03_wind_off 1 263 1.0 0.0 +es 04_res 1 263 1.0 0.0 +es 05_nuclear 1 263 1.0 0.0 +es 06_coal 1 263 0.0 0.0 +es 07_gas 1 263 0.0 0.0 +es 08_non-res 1 263 0.0 0.0 +es 09_hydro_pump 1 263 0.0 0.0 +es 01_solar 1 264 1.0 0.0 +es 02_wind_on 1 264 1.0 0.0 +es 03_wind_off 1 264 1.0 0.0 +es 04_res 1 264 1.0 0.0 +es 05_nuclear 1 264 1.0 0.0 +es 06_coal 1 264 0.0 0.0 +es 07_gas 1 264 0.0 0.0 +es 08_non-res 1 264 0.0 0.0 +es 09_hydro_pump 1 264 0.0 0.0 +es 01_solar 1 265 1.0 0.0 +es 02_wind_on 1 265 1.0 0.0 +es 03_wind_off 1 265 1.0 0.0 +es 04_res 1 265 1.0 0.0 +es 05_nuclear 1 265 1.0 0.0 +es 06_coal 1 265 0.0 0.0 +es 07_gas 1 265 0.0 0.0 +es 08_non-res 1 265 0.0 0.0 +es 09_hydro_pump 1 265 0.0 0.0 +es 01_solar 1 266 1.0 0.0 +es 02_wind_on 1 266 1.0 0.0 +es 03_wind_off 1 266 1.0 0.0 +es 04_res 1 266 1.0 0.0 +es 05_nuclear 1 266 1.0 0.0 +es 06_coal 1 266 0.0 0.0 +es 07_gas 1 266 0.0 0.0 +es 08_non-res 1 266 0.0 0.0 +es 09_hydro_pump 1 266 0.0 0.0 +es 01_solar 1 267 1.0 0.0 +es 02_wind_on 1 267 1.0 0.0 +es 03_wind_off 1 267 1.0 0.0 +es 04_res 1 267 1.0 0.0 +es 05_nuclear 1 267 1.0 0.0 +es 06_coal 1 267 0.0 0.0 +es 07_gas 1 267 0.0 0.0 +es 08_non-res 1 267 0.0 0.0 +es 09_hydro_pump 1 267 0.0 0.0 +es 01_solar 1 268 1.0 0.0 +es 02_wind_on 1 268 1.0 0.0 +es 03_wind_off 1 268 1.0 0.0 +es 04_res 1 268 1.0 0.0 +es 05_nuclear 1 268 1.0 0.0 +es 06_coal 1 268 0.0 0.0 +es 07_gas 1 268 0.0 0.0 +es 08_non-res 1 268 0.0 0.0 +es 09_hydro_pump 1 268 0.0 0.0 +es 01_solar 1 269 1.0 0.0 +es 02_wind_on 1 269 1.0 0.0 +es 03_wind_off 1 269 1.0 0.0 +es 04_res 1 269 1.0 0.0 +es 05_nuclear 1 269 1.0 0.0 +es 06_coal 1 269 0.0 0.0 +es 07_gas 1 269 0.0 0.0 +es 08_non-res 1 269 0.0 0.0 +es 09_hydro_pump 1 269 0.0 0.0 +es 01_solar 1 270 1.0 0.0 +es 02_wind_on 1 270 1.0 0.0 +es 03_wind_off 1 270 1.0 0.0 +es 04_res 1 270 1.0 0.0 +es 05_nuclear 1 270 1.0 0.0 +es 06_coal 1 270 1.0 0.0 +es 07_gas 1 270 0.0 0.0 +es 08_non-res 1 270 0.0 0.0 +es 09_hydro_pump 1 270 0.0 0.0 +es 01_solar 1 271 1.0 0.0 +es 02_wind_on 1 271 1.0 0.0 +es 03_wind_off 1 271 1.0 0.0 +es 04_res 1 271 1.0 0.0 +es 05_nuclear 1 271 1.0 0.0 +es 06_coal 1 271 1.0 0.0 +es 07_gas 1 271 0.0 0.0 +es 08_non-res 1 271 0.0 0.0 +es 09_hydro_pump 1 271 0.0 0.0 +es 01_solar 1 272 1.0 0.0 +es 02_wind_on 1 272 1.0 0.0 +es 03_wind_off 1 272 1.0 0.0 +es 04_res 1 272 1.0 0.0 +es 05_nuclear 1 272 1.0 0.0 +es 06_coal 1 272 1.0 0.0 +es 07_gas 1 272 0.0 0.0 +es 08_non-res 1 272 0.0 0.0 +es 09_hydro_pump 1 272 0.0 0.0 +es 01_solar 1 273 1.0 0.0 +es 02_wind_on 1 273 1.0 0.0 +es 03_wind_off 1 273 1.0 0.0 +es 04_res 1 273 1.0 0.0 +es 05_nuclear 1 273 1.0 0.0 +es 06_coal 1 273 1.0 0.0 +es 07_gas 1 273 0.0 0.0 +es 08_non-res 1 273 0.0 0.0 +es 09_hydro_pump 1 273 0.0 0.0 +es 01_solar 1 274 1.0 0.0 +es 02_wind_on 1 274 1.0 0.0 +es 03_wind_off 1 274 1.0 0.0 +es 04_res 1 274 1.0 0.0 +es 05_nuclear 1 274 1.0 0.0 +es 06_coal 1 274 1.0 0.0 +es 07_gas 1 274 0.0 0.0 +es 08_non-res 1 274 0.0 0.0 +es 09_hydro_pump 1 274 0.0 0.0 +es 01_solar 1 275 1.0 0.0 +es 02_wind_on 1 275 1.0 0.0 +es 03_wind_off 1 275 1.0 0.0 +es 04_res 1 275 1.0 0.0 +es 05_nuclear 1 275 1.0 0.0 +es 06_coal 1 275 1.0 0.0 +es 07_gas 1 275 0.0 0.0 +es 08_non-res 1 275 0.0 0.0 +es 09_hydro_pump 1 275 0.0 0.0 +es 01_solar 1 276 1.0 0.0 +es 02_wind_on 1 276 1.0 0.0 +es 03_wind_off 1 276 1.0 0.0 +es 04_res 1 276 1.0 0.0 +es 05_nuclear 1 276 1.0 0.0 +es 06_coal 1 276 1.0 0.0 +es 07_gas 1 276 0.0 0.0 +es 08_non-res 1 276 0.0 0.0 +es 09_hydro_pump 1 276 0.0 0.0 +es 01_solar 1 277 1.0 0.0 +es 02_wind_on 1 277 1.0 0.0 +es 03_wind_off 1 277 1.0 0.0 +es 04_res 1 277 1.0 0.0 +es 05_nuclear 1 277 1.0 0.0 +es 06_coal 1 277 1.0 0.0 +es 07_gas 1 277 0.0 0.0 +es 08_non-res 1 277 0.0 0.0 +es 09_hydro_pump 1 277 0.0 0.0 +es 01_solar 1 278 1.0 0.0 +es 02_wind_on 1 278 1.0 0.0 +es 03_wind_off 1 278 1.0 0.0 +es 04_res 1 278 1.0 0.0 +es 05_nuclear 1 278 1.0 0.0 +es 06_coal 1 278 1.0 0.0 +es 07_gas 1 278 0.0 0.0 +es 08_non-res 1 278 0.0 0.0 +es 09_hydro_pump 1 278 0.0 0.0 +es 01_solar 1 279 1.0 0.0 +es 02_wind_on 1 279 1.0 0.0 +es 03_wind_off 1 279 1.0 0.0 +es 04_res 1 279 1.0 0.0 +es 05_nuclear 1 279 1.0 0.0 +es 06_coal 1 279 1.0 0.0 +es 07_gas 1 279 0.0 0.0 +es 08_non-res 1 279 0.0 0.0 +es 09_hydro_pump 1 279 0.0 0.0 +es 01_solar 1 280 1.0 0.0 +es 02_wind_on 1 280 1.0 0.0 +es 03_wind_off 1 280 1.0 0.0 +es 04_res 1 280 1.0 0.0 +es 05_nuclear 1 280 1.0 0.0 +es 06_coal 1 280 1.0 0.0 +es 07_gas 1 280 0.0 0.0 +es 08_non-res 1 280 0.0 0.0 +es 09_hydro_pump 1 280 0.0 0.0 +es 01_solar 1 281 1.0 0.0 +es 02_wind_on 1 281 1.0 0.0 +es 03_wind_off 1 281 1.0 0.0 +es 04_res 1 281 1.0 0.0 +es 05_nuclear 1 281 1.0 0.0 +es 06_coal 1 281 1.0 0.0 +es 07_gas 1 281 0.0 0.0 +es 08_non-res 1 281 0.0 0.0 +es 09_hydro_pump 1 281 0.0 0.0 +es 01_solar 1 282 1.0 0.0 +es 02_wind_on 1 282 1.0 0.0 +es 03_wind_off 1 282 1.0 0.0 +es 04_res 1 282 1.0 0.0 +es 05_nuclear 1 282 1.0 0.0 +es 06_coal 1 282 1.0 0.0 +es 07_gas 1 282 0.0 0.0 +es 08_non-res 1 282 0.0 0.0 +es 09_hydro_pump 1 282 0.0 0.0 +es 01_solar 1 283 1.0 0.0 +es 02_wind_on 1 283 1.0 0.0 +es 03_wind_off 1 283 1.0 0.0 +es 04_res 1 283 1.0 0.0 +es 05_nuclear 1 283 1.0 0.0 +es 06_coal 1 283 1.0 0.0 +es 07_gas 1 283 0.0 0.0 +es 08_non-res 1 283 0.0 0.0 +es 09_hydro_pump 1 283 0.0 0.0 +es 01_solar 1 284 1.0 0.0 +es 02_wind_on 1 284 1.0 0.0 +es 03_wind_off 1 284 1.0 0.0 +es 04_res 1 284 1.0 0.0 +es 05_nuclear 1 284 1.0 0.0 +es 06_coal 1 284 1.0 0.0 +es 07_gas 1 284 0.0 0.0 +es 08_non-res 1 284 0.0 0.0 +es 09_hydro_pump 1 284 0.0 0.0 +es 01_solar 1 285 1.0 0.0 +es 02_wind_on 1 285 1.0 0.0 +es 03_wind_off 1 285 1.0 0.0 +es 04_res 1 285 1.0 0.0 +es 05_nuclear 1 285 1.0 0.0 +es 06_coal 1 285 1.0 0.0 +es 07_gas 1 285 0.0 0.0 +es 08_non-res 1 285 0.0 0.0 +es 09_hydro_pump 1 285 0.0 0.0 +es 01_solar 1 286 1.0 0.0 +es 02_wind_on 1 286 1.0 0.0 +es 03_wind_off 1 286 1.0 0.0 +es 04_res 1 286 1.0 0.0 +es 05_nuclear 1 286 1.0 0.0 +es 06_coal 1 286 1.0 0.0 +es 07_gas 1 286 0.0 0.0 +es 08_non-res 1 286 0.0 0.0 +es 09_hydro_pump 1 286 0.0 0.0 +es 01_solar 1 287 1.0 0.0 +es 02_wind_on 1 287 1.0 0.0 +es 03_wind_off 1 287 1.0 0.0 +es 04_res 1 287 1.0 0.0 +es 05_nuclear 1 287 1.0 0.0 +es 06_coal 1 287 1.0 0.0 +es 07_gas 1 287 0.0 0.0 +es 08_non-res 1 287 0.0 0.0 +es 09_hydro_pump 1 287 0.0 0.0 +es 01_solar 1 288 1.0 0.0 +es 02_wind_on 1 288 1.0 0.0 +es 03_wind_off 1 288 1.0 0.0 +es 04_res 1 288 1.0 0.0 +es 05_nuclear 1 288 1.0 0.0 +es 06_coal 1 288 1.0 0.0 +es 07_gas 1 288 0.0 0.0 +es 08_non-res 1 288 0.0 0.0 +es 09_hydro_pump 1 288 0.0 0.0 +es 01_solar 1 289 1.0 0.0 +es 02_wind_on 1 289 1.0 0.0 +es 03_wind_off 1 289 1.0 0.0 +es 04_res 1 289 1.0 0.0 +es 05_nuclear 1 289 1.0 0.0 +es 06_coal 1 289 1.0 0.0 +es 07_gas 1 289 0.0 0.0 +es 08_non-res 1 289 0.0 0.0 +es 09_hydro_pump 1 289 0.0 0.0 +es 01_solar 1 290 1.0 0.0 +es 02_wind_on 1 290 1.0 0.0 +es 03_wind_off 1 290 1.0 0.0 +es 04_res 1 290 1.0 0.0 +es 05_nuclear 1 290 1.0 0.0 +es 06_coal 1 290 1.0 0.0 +es 07_gas 1 290 1.0 0.0 +es 08_non-res 1 290 0.0 0.0 +es 09_hydro_pump 1 290 0.0 0.0 +es 01_solar 1 291 1.0 0.0 +es 02_wind_on 1 291 1.0 0.0 +es 03_wind_off 1 291 1.0 0.0 +es 04_res 1 291 1.0 0.0 +es 05_nuclear 1 291 1.0 0.0 +es 06_coal 1 291 1.0 0.0 +es 07_gas 1 291 1.0 0.0 +es 08_non-res 1 291 0.0 0.0 +es 09_hydro_pump 1 291 0.0 0.0 +es 01_solar 1 292 1.0 0.0 +es 02_wind_on 1 292 1.0 0.0 +es 03_wind_off 1 292 1.0 0.0 +es 04_res 1 292 1.0 0.0 +es 05_nuclear 1 292 1.0 0.0 +es 06_coal 1 292 1.0 0.0 +es 07_gas 1 292 1.0 0.0 +es 08_non-res 1 292 0.0 0.0 +es 09_hydro_pump 1 292 0.0 0.0 +es 01_solar 1 293 1.0 0.0 +es 02_wind_on 1 293 1.0 0.0 +es 03_wind_off 1 293 1.0 0.0 +es 04_res 1 293 1.0 0.0 +es 05_nuclear 1 293 1.0 0.0 +es 06_coal 1 293 1.0 0.0 +es 07_gas 1 293 1.0 0.0 +es 08_non-res 1 293 0.0 0.0 +es 09_hydro_pump 1 293 0.0 0.0 +es 01_solar 1 294 1.0 0.0 +es 02_wind_on 1 294 1.0 0.0 +es 03_wind_off 1 294 1.0 0.0 +es 04_res 1 294 1.0 0.0 +es 05_nuclear 1 294 1.0 0.0 +es 06_coal 1 294 1.0 0.0 +es 07_gas 1 294 1.0 0.0 +es 08_non-res 1 294 0.0 0.0 +es 09_hydro_pump 1 294 0.0 0.0 +es 01_solar 1 295 1.0 0.0 +es 02_wind_on 1 295 1.0 0.0 +es 03_wind_off 1 295 1.0 0.0 +es 04_res 1 295 1.0 0.0 +es 05_nuclear 1 295 1.0 0.0 +es 06_coal 1 295 1.0 0.0 +es 07_gas 1 295 1.0 0.0 +es 08_non-res 1 295 0.0 0.0 +es 09_hydro_pump 1 295 0.0 0.0 +es 01_solar 1 296 1.0 0.0 +es 02_wind_on 1 296 1.0 0.0 +es 03_wind_off 1 296 1.0 0.0 +es 04_res 1 296 1.0 0.0 +es 05_nuclear 1 296 1.0 0.0 +es 06_coal 1 296 1.0 0.0 +es 07_gas 1 296 1.0 0.0 +es 08_non-res 1 296 0.0 0.0 +es 09_hydro_pump 1 296 0.0 0.0 +es 01_solar 1 297 1.0 0.0 +es 02_wind_on 1 297 1.0 0.0 +es 03_wind_off 1 297 1.0 0.0 +es 04_res 1 297 1.0 0.0 +es 05_nuclear 1 297 1.0 0.0 +es 06_coal 1 297 1.0 0.0 +es 07_gas 1 297 1.0 0.0 +es 08_non-res 1 297 0.0 0.0 +es 09_hydro_pump 1 297 0.0 0.0 +es 01_solar 1 298 1.0 0.0 +es 02_wind_on 1 298 1.0 0.0 +es 03_wind_off 1 298 1.0 0.0 +es 04_res 1 298 1.0 0.0 +es 05_nuclear 1 298 1.0 0.0 +es 06_coal 1 298 1.0 0.0 +es 07_gas 1 298 1.0 0.0 +es 08_non-res 1 298 0.0 0.0 +es 09_hydro_pump 1 298 0.0 0.0 +es 01_solar 1 299 1.0 0.0 +es 02_wind_on 1 299 1.0 0.0 +es 03_wind_off 1 299 1.0 0.0 +es 04_res 1 299 1.0 0.0 +es 05_nuclear 1 299 1.0 0.0 +es 06_coal 1 299 1.0 0.0 +es 07_gas 1 299 1.0 0.0 +es 08_non-res 1 299 0.0 0.0 +es 09_hydro_pump 1 299 0.0 0.0 +es 01_solar 1 300 1.0 0.0 +es 02_wind_on 1 300 1.0 0.0 +es 03_wind_off 1 300 1.0 0.0 +es 04_res 1 300 1.0 0.0 +es 05_nuclear 1 300 1.0 0.0 +es 06_coal 1 300 1.0 0.0 +es 07_gas 1 300 1.0 0.0 +es 08_non-res 1 300 0.0 0.0 +es 09_hydro_pump 1 300 0.0 0.0 +es 01_solar 1 301 1.0 0.0 +es 02_wind_on 1 301 1.0 0.0 +es 03_wind_off 1 301 1.0 0.0 +es 04_res 1 301 1.0 0.0 +es 05_nuclear 1 301 1.0 0.0 +es 06_coal 1 301 1.0 0.0 +es 07_gas 1 301 1.0 0.0 +es 08_non-res 1 301 0.0 0.0 +es 09_hydro_pump 1 301 0.0 0.0 +es 01_solar 1 302 1.0 0.0 +es 02_wind_on 1 302 1.0 0.0 +es 03_wind_off 1 302 1.0 0.0 +es 04_res 1 302 1.0 0.0 +es 05_nuclear 1 302 1.0 0.0 +es 06_coal 1 302 1.0 0.0 +es 07_gas 1 302 1.0 0.0 +es 08_non-res 1 302 0.0 0.0 +es 09_hydro_pump 1 302 0.0 0.0 +es 01_solar 1 303 1.0 0.0 +es 02_wind_on 1 303 1.0 0.0 +es 03_wind_off 1 303 1.0 0.0 +es 04_res 1 303 1.0 0.0 +es 05_nuclear 1 303 1.0 0.0 +es 06_coal 1 303 1.0 0.0 +es 07_gas 1 303 1.0 0.0 +es 08_non-res 1 303 0.0 0.0 +es 09_hydro_pump 1 303 0.0 0.0 +es 01_solar 1 304 1.0 0.0 +es 02_wind_on 1 304 1.0 0.0 +es 03_wind_off 1 304 1.0 0.0 +es 04_res 1 304 1.0 0.0 +es 05_nuclear 1 304 1.0 0.0 +es 06_coal 1 304 1.0 0.0 +es 07_gas 1 304 1.0 0.0 +es 08_non-res 1 304 0.0 0.0 +es 09_hydro_pump 1 304 0.0 0.0 +es 01_solar 1 305 1.0 0.0 +es 02_wind_on 1 305 1.0 0.0 +es 03_wind_off 1 305 1.0 0.0 +es 04_res 1 305 1.0 0.0 +es 05_nuclear 1 305 1.0 0.0 +es 06_coal 1 305 1.0 0.0 +es 07_gas 1 305 1.0 0.0 +es 08_non-res 1 305 0.0 0.0 +es 09_hydro_pump 1 305 0.0 0.0 +es 01_solar 1 306 1.0 0.0 +es 02_wind_on 1 306 1.0 0.0 +es 03_wind_off 1 306 1.0 0.0 +es 04_res 1 306 1.0 0.0 +es 05_nuclear 1 306 1.0 0.0 +es 06_coal 1 306 1.0 0.0 +es 07_gas 1 306 1.0 0.0 +es 08_non-res 1 306 0.0 0.0 +es 09_hydro_pump 1 306 0.0 0.0 +es 01_solar 1 307 1.0 0.0 +es 02_wind_on 1 307 1.0 0.0 +es 03_wind_off 1 307 1.0 0.0 +es 04_res 1 307 1.0 0.0 +es 05_nuclear 1 307 1.0 0.0 +es 06_coal 1 307 1.0 0.0 +es 07_gas 1 307 1.0 0.0 +es 08_non-res 1 307 0.0 0.0 +es 09_hydro_pump 1 307 0.0 0.0 +es 01_solar 1 308 1.0 0.0 +es 02_wind_on 1 308 1.0 0.0 +es 03_wind_off 1 308 1.0 0.0 +es 04_res 1 308 1.0 0.0 +es 05_nuclear 1 308 1.0 0.0 +es 06_coal 1 308 1.0 0.0 +es 07_gas 1 308 1.0 0.0 +es 08_non-res 1 308 0.0 0.0 +es 09_hydro_pump 1 308 0.0 0.0 +es 01_solar 1 309 1.0 0.0 +es 02_wind_on 1 309 1.0 0.0 +es 03_wind_off 1 309 1.0 0.0 +es 04_res 1 309 1.0 0.0 +es 05_nuclear 1 309 1.0 0.0 +es 06_coal 1 309 1.0 0.0 +es 07_gas 1 309 1.0 0.0 +es 08_non-res 1 309 0.0 0.0 +es 09_hydro_pump 1 309 0.0 0.0 +es 01_solar 1 310 1.0 0.0 +es 02_wind_on 1 310 1.0 0.0 +es 03_wind_off 1 310 1.0 0.0 +es 04_res 1 310 1.0 0.0 +es 05_nuclear 1 310 1.0 0.0 +es 06_coal 1 310 1.0 0.0 +es 07_gas 1 310 1.0 0.0 +es 08_non-res 1 310 1.0 0.0 +es 09_hydro_pump 1 310 0.0 0.0 +es 01_solar 1 311 1.0 0.0 +es 02_wind_on 1 311 1.0 0.0 +es 03_wind_off 1 311 1.0 0.0 +es 04_res 1 311 1.0 0.0 +es 05_nuclear 1 311 1.0 0.0 +es 06_coal 1 311 1.0 0.0 +es 07_gas 1 311 1.0 0.0 +es 08_non-res 1 311 1.0 0.0 +es 09_hydro_pump 1 311 0.0 0.0 +es 01_solar 1 312 1.0 0.0 +es 02_wind_on 1 312 1.0 0.0 +es 03_wind_off 1 312 1.0 0.0 +es 04_res 1 312 1.0 0.0 +es 05_nuclear 1 312 1.0 0.0 +es 06_coal 1 312 1.0 0.0 +es 07_gas 1 312 1.0 0.0 +es 08_non-res 1 312 1.0 0.0 +es 09_hydro_pump 1 312 0.0 0.0 +es 01_solar 1 313 1.0 0.0 +es 02_wind_on 1 313 1.0 0.0 +es 03_wind_off 1 313 1.0 0.0 +es 04_res 1 313 1.0 0.0 +es 05_nuclear 1 313 1.0 0.0 +es 06_coal 1 313 1.0 0.0 +es 07_gas 1 313 1.0 0.0 +es 08_non-res 1 313 1.0 0.0 +es 09_hydro_pump 1 313 0.0 0.0 +es 01_solar 1 314 1.0 0.0 +es 02_wind_on 1 314 1.0 0.0 +es 03_wind_off 1 314 1.0 0.0 +es 04_res 1 314 1.0 0.0 +es 05_nuclear 1 314 1.0 0.0 +es 06_coal 1 314 1.0 0.0 +es 07_gas 1 314 1.0 0.0 +es 08_non-res 1 314 1.0 0.0 +es 09_hydro_pump 1 314 0.0 0.0 +es 01_solar 1 315 1.0 0.0 +es 02_wind_on 1 315 1.0 0.0 +es 03_wind_off 1 315 1.0 0.0 +es 04_res 1 315 1.0 0.0 +es 05_nuclear 1 315 1.0 0.0 +es 06_coal 1 315 1.0 0.0 +es 07_gas 1 315 1.0 0.0 +es 08_non-res 1 315 1.0 0.0 +es 09_hydro_pump 1 315 0.0 0.0 +es 01_solar 1 316 1.0 0.0 +es 02_wind_on 1 316 1.0 0.0 +es 03_wind_off 1 316 1.0 0.0 +es 04_res 1 316 1.0 0.0 +es 05_nuclear 1 316 1.0 0.0 +es 06_coal 1 316 1.0 0.0 +es 07_gas 1 316 1.0 0.0 +es 08_non-res 1 316 1.0 0.0 +es 09_hydro_pump 1 316 0.0 0.0 +es 01_solar 1 317 1.0 0.0 +es 02_wind_on 1 317 1.0 0.0 +es 03_wind_off 1 317 1.0 0.0 +es 04_res 1 317 1.0 0.0 +es 05_nuclear 1 317 1.0 0.0 +es 06_coal 1 317 1.0 0.0 +es 07_gas 1 317 1.0 0.0 +es 08_non-res 1 317 1.0 0.0 +es 09_hydro_pump 1 317 0.0 0.0 +es 01_solar 1 318 1.0 0.0 +es 02_wind_on 1 318 1.0 0.0 +es 03_wind_off 1 318 1.0 0.0 +es 04_res 1 318 1.0 0.0 +es 05_nuclear 1 318 1.0 0.0 +es 06_coal 1 318 1.0 0.0 +es 07_gas 1 318 1.0 0.0 +es 08_non-res 1 318 1.0 0.0 +es 09_hydro_pump 1 318 0.0 0.0 +es 01_solar 1 319 1.0 0.0 +es 02_wind_on 1 319 1.0 0.0 +es 03_wind_off 1 319 1.0 0.0 +es 04_res 1 319 1.0 0.0 +es 05_nuclear 1 319 1.0 0.0 +es 06_coal 1 319 1.0 0.0 +es 07_gas 1 319 1.0 0.0 +es 08_non-res 1 319 1.0 0.0 +es 09_hydro_pump 1 319 0.0 0.0 +es 01_solar 1 320 1.0 0.0 +es 02_wind_on 1 320 1.0 0.0 +es 03_wind_off 1 320 1.0 0.0 +es 04_res 1 320 1.0 0.0 +es 05_nuclear 1 320 1.0 0.0 +es 06_coal 1 320 1.0 0.0 +es 07_gas 1 320 1.0 0.0 +es 08_non-res 1 320 1.0 0.0 +es 09_hydro_pump 1 320 0.0 0.0 +es 01_solar 1 321 1.0 0.0 +es 02_wind_on 1 321 1.0 0.0 +es 03_wind_off 1 321 1.0 0.0 +es 04_res 1 321 1.0 0.0 +es 05_nuclear 1 321 1.0 0.0 +es 06_coal 1 321 1.0 0.0 +es 07_gas 1 321 1.0 0.0 +es 08_non-res 1 321 1.0 0.0 +es 09_hydro_pump 1 321 0.0 0.0 +es 01_solar 1 322 1.0 0.0 +es 02_wind_on 1 322 1.0 0.0 +es 03_wind_off 1 322 1.0 0.0 +es 04_res 1 322 1.0 0.0 +es 05_nuclear 1 322 1.0 0.0 +es 06_coal 1 322 1.0 0.0 +es 07_gas 1 322 1.0 0.0 +es 08_non-res 1 322 1.0 0.0 +es 09_hydro_pump 1 322 0.0 0.0 +es 01_solar 1 323 1.0 0.0 +es 02_wind_on 1 323 1.0 0.0 +es 03_wind_off 1 323 1.0 0.0 +es 04_res 1 323 1.0 0.0 +es 05_nuclear 1 323 1.0 0.0 +es 06_coal 1 323 1.0 0.0 +es 07_gas 1 323 1.0 0.0 +es 08_non-res 1 323 1.0 0.0 +es 09_hydro_pump 1 323 0.0 0.0 +es 01_solar 1 324 1.0 0.0 +es 02_wind_on 1 324 1.0 0.0 +es 03_wind_off 1 324 1.0 0.0 +es 04_res 1 324 1.0 0.0 +es 05_nuclear 1 324 1.0 0.0 +es 06_coal 1 324 1.0 0.0 +es 07_gas 1 324 1.0 0.0 +es 08_non-res 1 324 1.0 0.0 +es 09_hydro_pump 1 324 0.0 0.0 +es 01_solar 1 325 1.0 0.0 +es 02_wind_on 1 325 1.0 0.0 +es 03_wind_off 1 325 1.0 0.0 +es 04_res 1 325 1.0 0.0 +es 05_nuclear 1 325 1.0 0.0 +es 06_coal 1 325 1.0 0.0 +es 07_gas 1 325 1.0 0.0 +es 08_non-res 1 325 1.0 0.0 +es 09_hydro_pump 1 325 0.0 0.0 +es 01_solar 1 326 1.0 0.0 +es 02_wind_on 1 326 1.0 0.0 +es 03_wind_off 1 326 1.0 0.0 +es 04_res 1 326 1.0 0.0 +es 05_nuclear 1 326 1.0 0.0 +es 06_coal 1 326 1.0 0.0 +es 07_gas 1 326 1.0 0.0 +es 08_non-res 1 326 1.0 0.0 +es 09_hydro_pump 1 326 0.0 0.0 +es 01_solar 1 327 1.0 0.0 +es 02_wind_on 1 327 1.0 0.0 +es 03_wind_off 1 327 1.0 0.0 +es 04_res 1 327 1.0 0.0 +es 05_nuclear 1 327 1.0 0.0 +es 06_coal 1 327 1.0 0.0 +es 07_gas 1 327 1.0 0.0 +es 08_non-res 1 327 1.0 0.0 +es 09_hydro_pump 1 327 0.0 0.0 +es 01_solar 1 328 1.0 0.0 +es 02_wind_on 1 328 1.0 0.0 +es 03_wind_off 1 328 1.0 0.0 +es 04_res 1 328 1.0 0.0 +es 05_nuclear 1 328 1.0 0.0 +es 06_coal 1 328 1.0 0.0 +es 07_gas 1 328 1.0 0.0 +es 08_non-res 1 328 1.0 0.0 +es 09_hydro_pump 1 328 0.0 0.0 +es 01_solar 1 329 1.0 0.0 +es 02_wind_on 1 329 1.0 0.0 +es 03_wind_off 1 329 1.0 0.0 +es 04_res 1 329 1.0 0.0 +es 05_nuclear 1 329 1.0 0.0 +es 06_coal 1 329 1.0 0.0 +es 07_gas 1 329 1.0 0.0 +es 08_non-res 1 329 1.0 0.0 +es 09_hydro_pump 1 329 0.0 0.0 +es 01_solar 1 330 1.0 0.0 +es 02_wind_on 1 330 1.0 0.0 +es 03_wind_off 1 330 1.0 0.0 +es 04_res 1 330 1.0 0.0 +es 05_nuclear 1 330 1.0 0.0 +es 06_coal 1 330 1.0 0.0 +es 07_gas 1 330 1.0 0.0 +es 08_non-res 1 330 1.0 0.0 +es 09_hydro_pump 1 330 1.0 0.0 +es 01_solar 1 331 1.0 0.0 +es 02_wind_on 1 331 1.0 0.0 +es 03_wind_off 1 331 1.0 0.0 +es 04_res 1 331 1.0 0.0 +es 05_nuclear 1 331 1.0 0.0 +es 06_coal 1 331 1.0 0.0 +es 07_gas 1 331 1.0 0.0 +es 08_non-res 1 331 1.0 0.0 +es 09_hydro_pump 1 331 1.0 0.0 +es 01_solar 1 332 1.0 0.0 +es 02_wind_on 1 332 1.0 0.0 +es 03_wind_off 1 332 1.0 0.0 +es 04_res 1 332 1.0 0.0 +es 05_nuclear 1 332 1.0 0.0 +es 06_coal 1 332 1.0 0.0 +es 07_gas 1 332 1.0 0.0 +es 08_non-res 1 332 1.0 0.0 +es 09_hydro_pump 1 332 1.0 0.0 +es 01_solar 1 333 1.0 0.0 +es 02_wind_on 1 333 1.0 0.0 +es 03_wind_off 1 333 1.0 0.0 +es 04_res 1 333 1.0 0.0 +es 05_nuclear 1 333 1.0 0.0 +es 06_coal 1 333 1.0 0.0 +es 07_gas 1 333 1.0 0.0 +es 08_non-res 1 333 1.0 0.0 +es 09_hydro_pump 1 333 1.0 0.0 +es 01_solar 1 334 1.0 0.0 +es 02_wind_on 1 334 1.0 0.0 +es 03_wind_off 1 334 1.0 0.0 +es 04_res 1 334 1.0 0.0 +es 05_nuclear 1 334 1.0 0.0 +es 06_coal 1 334 1.0 0.0 +es 07_gas 1 334 1.0 0.0 +es 08_non-res 1 334 1.0 0.0 +es 09_hydro_pump 1 334 1.0 0.0 +es 01_solar 1 335 1.0 0.0 +es 02_wind_on 1 335 1.0 0.0 +es 03_wind_off 1 335 1.0 0.0 +es 04_res 1 335 1.0 0.0 +es 05_nuclear 1 335 1.0 0.0 +es 06_coal 1 335 1.0 0.0 +es 07_gas 1 335 1.0 0.0 +es 08_non-res 1 335 1.0 0.0 +es 09_hydro_pump 1 335 1.0 0.0 +es 01_solar 1 336 1.0 0.0 +es 02_wind_on 1 336 1.0 0.0 +es 03_wind_off 1 336 1.0 0.0 +es 04_res 1 336 1.0 0.0 +es 05_nuclear 1 336 1.0 0.0 +es 06_coal 1 336 1.0 0.0 +es 07_gas 1 336 1.0 0.0 +es 08_non-res 1 336 1.0 0.0 +es 09_hydro_pump 1 336 1.0 0.0 +fr 01_solar 1 1 0.0 0.0 +fr 02_wind_on 1 1 0.0 0.0 +fr 03_wind_off 1 1 0.0 0.0 +fr 04_res 1 1 0.0 0.0 +fr 05_nuclear 1 1 0.0 0.0 +fr 06_coal 1 1 0.0 0.0 +fr 07_gas 1 1 0.0 0.0 +fr 08_non-res 1 1 0.0 0.0 +fr 09_hydro_pump 1 1 0.0 0.0 +fr 01_solar 1 2 1.0 0.0 +fr 02_wind_on 1 2 0.0 0.0 +fr 03_wind_off 1 2 0.0 0.0 +fr 04_res 1 2 0.0 0.0 +fr 05_nuclear 1 2 0.0 0.0 +fr 06_coal 1 2 0.0 0.0 +fr 07_gas 1 2 0.0 0.0 +fr 08_non-res 1 2 0.0 0.0 +fr 09_hydro_pump 1 2 0.0 0.0 +fr 01_solar 1 3 1.0 0.0 +fr 02_wind_on 1 3 0.0 0.0 +fr 03_wind_off 1 3 0.0 0.0 +fr 04_res 1 3 0.0 0.0 +fr 05_nuclear 1 3 0.0 0.0 +fr 06_coal 1 3 0.0 0.0 +fr 07_gas 1 3 0.0 0.0 +fr 08_non-res 1 3 0.0 0.0 +fr 09_hydro_pump 1 3 0.0 0.0 +fr 01_solar 1 4 1.0 0.0 +fr 02_wind_on 1 4 0.0 0.0 +fr 03_wind_off 1 4 0.0 0.0 +fr 04_res 1 4 0.0 0.0 +fr 05_nuclear 1 4 0.0 0.0 +fr 06_coal 1 4 0.0 0.0 +fr 07_gas 1 4 0.0 0.0 +fr 08_non-res 1 4 0.0 0.0 +fr 09_hydro_pump 1 4 0.0 0.0 +fr 01_solar 1 5 1.0 0.0 +fr 02_wind_on 1 5 0.0 0.0 +fr 03_wind_off 1 5 0.0 0.0 +fr 04_res 1 5 0.0 0.0 +fr 05_nuclear 1 5 0.0 0.0 +fr 06_coal 1 5 0.0 0.0 +fr 07_gas 1 5 0.0 0.0 +fr 08_non-res 1 5 0.0 0.0 +fr 09_hydro_pump 1 5 0.0 0.0 +fr 01_solar 1 6 1.0 0.0 +fr 02_wind_on 1 6 0.0 0.0 +fr 03_wind_off 1 6 0.0 0.0 +fr 04_res 1 6 0.0 0.0 +fr 05_nuclear 1 6 0.0 0.0 +fr 06_coal 1 6 0.0 0.0 +fr 07_gas 1 6 0.0 0.0 +fr 08_non-res 1 6 0.0 0.0 +fr 09_hydro_pump 1 6 0.0 0.0 +fr 01_solar 1 7 1.0 0.0 +fr 02_wind_on 1 7 0.0 0.0 +fr 03_wind_off 1 7 0.0 0.0 +fr 04_res 1 7 0.0 0.0 +fr 05_nuclear 1 7 0.0 0.0 +fr 06_coal 1 7 0.0 0.0 +fr 07_gas 1 7 0.0 0.0 +fr 08_non-res 1 7 0.0 0.0 +fr 09_hydro_pump 1 7 0.0 0.0 +fr 01_solar 1 8 1.0 0.0 +fr 02_wind_on 1 8 0.0 0.0 +fr 03_wind_off 1 8 0.0 0.0 +fr 04_res 1 8 0.0 0.0 +fr 05_nuclear 1 8 0.0 0.0 +fr 06_coal 1 8 0.0 0.0 +fr 07_gas 1 8 0.0 0.0 +fr 08_non-res 1 8 0.0 0.0 +fr 09_hydro_pump 1 8 0.0 0.0 +fr 01_solar 1 9 1.0 0.0 +fr 02_wind_on 1 9 0.0 0.0 +fr 03_wind_off 1 9 0.0 0.0 +fr 04_res 1 9 0.0 0.0 +fr 05_nuclear 1 9 0.0 0.0 +fr 06_coal 1 9 0.0 0.0 +fr 07_gas 1 9 0.0 0.0 +fr 08_non-res 1 9 0.0 0.0 +fr 09_hydro_pump 1 9 0.0 0.0 +fr 01_solar 1 10 1.0 0.0 +fr 02_wind_on 1 10 0.0 0.0 +fr 03_wind_off 1 10 0.0 0.0 +fr 04_res 1 10 0.0 0.0 +fr 05_nuclear 1 10 0.0 0.0 +fr 06_coal 1 10 0.0 0.0 +fr 07_gas 1 10 0.0 0.0 +fr 08_non-res 1 10 0.0 0.0 +fr 09_hydro_pump 1 10 0.0 0.0 +fr 01_solar 1 11 1.0 0.0 +fr 02_wind_on 1 11 0.0 0.0 +fr 03_wind_off 1 11 0.0 0.0 +fr 04_res 1 11 0.0 0.0 +fr 05_nuclear 1 11 0.0 0.0 +fr 06_coal 1 11 0.0 0.0 +fr 07_gas 1 11 0.0 0.0 +fr 08_non-res 1 11 0.0 0.0 +fr 09_hydro_pump 1 11 0.0 0.0 +fr 01_solar 1 12 1.0 0.0 +fr 02_wind_on 1 12 0.0 0.0 +fr 03_wind_off 1 12 0.0 0.0 +fr 04_res 1 12 0.0 0.0 +fr 05_nuclear 1 12 0.0 0.0 +fr 06_coal 1 12 0.0 0.0 +fr 07_gas 1 12 0.0 0.0 +fr 08_non-res 1 12 0.0 0.0 +fr 09_hydro_pump 1 12 0.0 0.0 +fr 01_solar 1 13 1.0 0.0 +fr 02_wind_on 1 13 0.0 0.0 +fr 03_wind_off 1 13 0.0 0.0 +fr 04_res 1 13 0.0 0.0 +fr 05_nuclear 1 13 0.0 0.0 +fr 06_coal 1 13 0.0 0.0 +fr 07_gas 1 13 0.0 0.0 +fr 08_non-res 1 13 0.0 0.0 +fr 09_hydro_pump 1 13 0.0 0.0 +fr 01_solar 1 14 1.0 0.0 +fr 02_wind_on 1 14 0.0 0.0 +fr 03_wind_off 1 14 0.0 0.0 +fr 04_res 1 14 0.0 0.0 +fr 05_nuclear 1 14 0.0 0.0 +fr 06_coal 1 14 0.0 0.0 +fr 07_gas 1 14 0.0 0.0 +fr 08_non-res 1 14 0.0 0.0 +fr 09_hydro_pump 1 14 0.0 0.0 +fr 01_solar 1 15 1.0 0.0 +fr 02_wind_on 1 15 0.0 0.0 +fr 03_wind_off 1 15 0.0 0.0 +fr 04_res 1 15 0.0 0.0 +fr 05_nuclear 1 15 0.0 0.0 +fr 06_coal 1 15 0.0 0.0 +fr 07_gas 1 15 0.0 0.0 +fr 08_non-res 1 15 0.0 0.0 +fr 09_hydro_pump 1 15 0.0 0.0 +fr 01_solar 1 16 1.0 0.0 +fr 02_wind_on 1 16 0.0 0.0 +fr 03_wind_off 1 16 0.0 0.0 +fr 04_res 1 16 0.0 0.0 +fr 05_nuclear 1 16 0.0 0.0 +fr 06_coal 1 16 0.0 0.0 +fr 07_gas 1 16 0.0 0.0 +fr 08_non-res 1 16 0.0 0.0 +fr 09_hydro_pump 1 16 0.0 0.0 +fr 01_solar 1 17 1.0 0.0 +fr 02_wind_on 1 17 0.0 0.0 +fr 03_wind_off 1 17 0.0 0.0 +fr 04_res 1 17 0.0 0.0 +fr 05_nuclear 1 17 0.0 0.0 +fr 06_coal 1 17 0.0 0.0 +fr 07_gas 1 17 0.0 0.0 +fr 08_non-res 1 17 0.0 0.0 +fr 09_hydro_pump 1 17 0.0 0.0 +fr 01_solar 1 18 1.0 0.0 +fr 02_wind_on 1 18 0.0 0.0 +fr 03_wind_off 1 18 0.0 0.0 +fr 04_res 1 18 0.0 0.0 +fr 05_nuclear 1 18 0.0 0.0 +fr 06_coal 1 18 0.0 0.0 +fr 07_gas 1 18 0.0 0.0 +fr 08_non-res 1 18 0.0 0.0 +fr 09_hydro_pump 1 18 0.0 0.0 +fr 01_solar 1 19 1.0 0.0 +fr 02_wind_on 1 19 0.0 0.0 +fr 03_wind_off 1 19 0.0 0.0 +fr 04_res 1 19 0.0 0.0 +fr 05_nuclear 1 19 0.0 0.0 +fr 06_coal 1 19 0.0 0.0 +fr 07_gas 1 19 0.0 0.0 +fr 08_non-res 1 19 0.0 0.0 +fr 09_hydro_pump 1 19 0.0 0.0 +fr 01_solar 1 20 1.0 0.0 +fr 02_wind_on 1 20 0.0 0.0 +fr 03_wind_off 1 20 0.0 0.0 +fr 04_res 1 20 0.0 0.0 +fr 05_nuclear 1 20 0.0 0.0 +fr 06_coal 1 20 0.0 0.0 +fr 07_gas 1 20 0.0 0.0 +fr 08_non-res 1 20 0.0 0.0 +fr 09_hydro_pump 1 20 0.0 0.0 +fr 01_solar 1 21 1.0 0.0 +fr 02_wind_on 1 21 0.0 0.0 +fr 03_wind_off 1 21 0.0 0.0 +fr 04_res 1 21 0.0 0.0 +fr 05_nuclear 1 21 0.0 0.0 +fr 06_coal 1 21 0.0 0.0 +fr 07_gas 1 21 0.0 0.0 +fr 08_non-res 1 21 0.0 0.0 +fr 09_hydro_pump 1 21 0.0 0.0 +fr 01_solar 1 22 1.0 0.0 +fr 02_wind_on 1 22 1.0 0.0 +fr 03_wind_off 1 22 0.0 0.0 +fr 04_res 1 22 0.0 0.0 +fr 05_nuclear 1 22 0.0 0.0 +fr 06_coal 1 22 0.0 0.0 +fr 07_gas 1 22 0.0 0.0 +fr 08_non-res 1 22 0.0 0.0 +fr 09_hydro_pump 1 22 0.0 0.0 +fr 01_solar 1 23 1.0 0.0 +fr 02_wind_on 1 23 1.0 0.0 +fr 03_wind_off 1 23 0.0 0.0 +fr 04_res 1 23 0.0 0.0 +fr 05_nuclear 1 23 0.0 0.0 +fr 06_coal 1 23 0.0 0.0 +fr 07_gas 1 23 0.0 0.0 +fr 08_non-res 1 23 0.0 0.0 +fr 09_hydro_pump 1 23 0.0 0.0 +fr 01_solar 1 24 1.0 0.0 +fr 02_wind_on 1 24 1.0 0.0 +fr 03_wind_off 1 24 0.0 0.0 +fr 04_res 1 24 0.0 0.0 +fr 05_nuclear 1 24 0.0 0.0 +fr 06_coal 1 24 0.0 0.0 +fr 07_gas 1 24 0.0 0.0 +fr 08_non-res 1 24 0.0 0.0 +fr 09_hydro_pump 1 24 0.0 0.0 +fr 01_solar 1 25 1.0 0.0 +fr 02_wind_on 1 25 1.0 0.0 +fr 03_wind_off 1 25 0.0 0.0 +fr 04_res 1 25 0.0 0.0 +fr 05_nuclear 1 25 0.0 0.0 +fr 06_coal 1 25 0.0 0.0 +fr 07_gas 1 25 0.0 0.0 +fr 08_non-res 1 25 0.0 0.0 +fr 09_hydro_pump 1 25 0.0 0.0 +fr 01_solar 1 26 1.0 0.0 +fr 02_wind_on 1 26 1.0 0.0 +fr 03_wind_off 1 26 0.0 0.0 +fr 04_res 1 26 0.0 0.0 +fr 05_nuclear 1 26 0.0 0.0 +fr 06_coal 1 26 0.0 0.0 +fr 07_gas 1 26 0.0 0.0 +fr 08_non-res 1 26 0.0 0.0 +fr 09_hydro_pump 1 26 0.0 0.0 +fr 01_solar 1 27 1.0 0.0 +fr 02_wind_on 1 27 1.0 0.0 +fr 03_wind_off 1 27 0.0 0.0 +fr 04_res 1 27 0.0 0.0 +fr 05_nuclear 1 27 0.0 0.0 +fr 06_coal 1 27 0.0 0.0 +fr 07_gas 1 27 0.0 0.0 +fr 08_non-res 1 27 0.0 0.0 +fr 09_hydro_pump 1 27 0.0 0.0 +fr 01_solar 1 28 1.0 0.0 +fr 02_wind_on 1 28 1.0 0.0 +fr 03_wind_off 1 28 0.0 0.0 +fr 04_res 1 28 0.0 0.0 +fr 05_nuclear 1 28 0.0 0.0 +fr 06_coal 1 28 0.0 0.0 +fr 07_gas 1 28 0.0 0.0 +fr 08_non-res 1 28 0.0 0.0 +fr 09_hydro_pump 1 28 0.0 0.0 +fr 01_solar 1 29 1.0 0.0 +fr 02_wind_on 1 29 1.0 0.0 +fr 03_wind_off 1 29 0.0 0.0 +fr 04_res 1 29 0.0 0.0 +fr 05_nuclear 1 29 0.0 0.0 +fr 06_coal 1 29 0.0 0.0 +fr 07_gas 1 29 0.0 0.0 +fr 08_non-res 1 29 0.0 0.0 +fr 09_hydro_pump 1 29 0.0 0.0 +fr 01_solar 1 30 1.0 0.0 +fr 02_wind_on 1 30 1.0 0.0 +fr 03_wind_off 1 30 0.0 0.0 +fr 04_res 1 30 0.0 0.0 +fr 05_nuclear 1 30 0.0 0.0 +fr 06_coal 1 30 0.0 0.0 +fr 07_gas 1 30 0.0 0.0 +fr 08_non-res 1 30 0.0 0.0 +fr 09_hydro_pump 1 30 0.0 0.0 +fr 01_solar 1 31 1.0 0.0 +fr 02_wind_on 1 31 1.0 0.0 +fr 03_wind_off 1 31 0.0 0.0 +fr 04_res 1 31 0.0 0.0 +fr 05_nuclear 1 31 0.0 0.0 +fr 06_coal 1 31 0.0 0.0 +fr 07_gas 1 31 0.0 0.0 +fr 08_non-res 1 31 0.0 0.0 +fr 09_hydro_pump 1 31 0.0 0.0 +fr 01_solar 1 32 1.0 0.0 +fr 02_wind_on 1 32 1.0 0.0 +fr 03_wind_off 1 32 0.0 0.0 +fr 04_res 1 32 0.0 0.0 +fr 05_nuclear 1 32 0.0 0.0 +fr 06_coal 1 32 0.0 0.0 +fr 07_gas 1 32 0.0 0.0 +fr 08_non-res 1 32 0.0 0.0 +fr 09_hydro_pump 1 32 0.0 0.0 +fr 01_solar 1 33 1.0 0.0 +fr 02_wind_on 1 33 1.0 0.0 +fr 03_wind_off 1 33 0.0 0.0 +fr 04_res 1 33 0.0 0.0 +fr 05_nuclear 1 33 0.0 0.0 +fr 06_coal 1 33 0.0 0.0 +fr 07_gas 1 33 0.0 0.0 +fr 08_non-res 1 33 0.0 0.0 +fr 09_hydro_pump 1 33 0.0 0.0 +fr 01_solar 1 34 1.0 0.0 +fr 02_wind_on 1 34 1.0 0.0 +fr 03_wind_off 1 34 0.0 0.0 +fr 04_res 1 34 0.0 0.0 +fr 05_nuclear 1 34 0.0 0.0 +fr 06_coal 1 34 0.0 0.0 +fr 07_gas 1 34 0.0 0.0 +fr 08_non-res 1 34 0.0 0.0 +fr 09_hydro_pump 1 34 0.0 0.0 +fr 01_solar 1 35 1.0 0.0 +fr 02_wind_on 1 35 1.0 0.0 +fr 03_wind_off 1 35 0.0 0.0 +fr 04_res 1 35 0.0 0.0 +fr 05_nuclear 1 35 0.0 0.0 +fr 06_coal 1 35 0.0 0.0 +fr 07_gas 1 35 0.0 0.0 +fr 08_non-res 1 35 0.0 0.0 +fr 09_hydro_pump 1 35 0.0 0.0 +fr 01_solar 1 36 1.0 0.0 +fr 02_wind_on 1 36 1.0 0.0 +fr 03_wind_off 1 36 0.0 0.0 +fr 04_res 1 36 0.0 0.0 +fr 05_nuclear 1 36 0.0 0.0 +fr 06_coal 1 36 0.0 0.0 +fr 07_gas 1 36 0.0 0.0 +fr 08_non-res 1 36 0.0 0.0 +fr 09_hydro_pump 1 36 0.0 0.0 +fr 01_solar 1 37 1.0 0.0 +fr 02_wind_on 1 37 1.0 0.0 +fr 03_wind_off 1 37 0.0 0.0 +fr 04_res 1 37 0.0 0.0 +fr 05_nuclear 1 37 0.0 0.0 +fr 06_coal 1 37 0.0 0.0 +fr 07_gas 1 37 0.0 0.0 +fr 08_non-res 1 37 0.0 0.0 +fr 09_hydro_pump 1 37 0.0 0.0 +fr 01_solar 1 38 1.0 0.0 +fr 02_wind_on 1 38 1.0 0.0 +fr 03_wind_off 1 38 0.0 0.0 +fr 04_res 1 38 0.0 0.0 +fr 05_nuclear 1 38 0.0 0.0 +fr 06_coal 1 38 0.0 0.0 +fr 07_gas 1 38 0.0 0.0 +fr 08_non-res 1 38 0.0 0.0 +fr 09_hydro_pump 1 38 0.0 0.0 +fr 01_solar 1 39 1.0 0.0 +fr 02_wind_on 1 39 1.0 0.0 +fr 03_wind_off 1 39 0.0 0.0 +fr 04_res 1 39 0.0 0.0 +fr 05_nuclear 1 39 0.0 0.0 +fr 06_coal 1 39 0.0 0.0 +fr 07_gas 1 39 0.0 0.0 +fr 08_non-res 1 39 0.0 0.0 +fr 09_hydro_pump 1 39 0.0 0.0 +fr 01_solar 1 40 1.0 0.0 +fr 02_wind_on 1 40 1.0 0.0 +fr 03_wind_off 1 40 0.0 0.0 +fr 04_res 1 40 0.0 0.0 +fr 05_nuclear 1 40 0.0 0.0 +fr 06_coal 1 40 0.0 0.0 +fr 07_gas 1 40 0.0 0.0 +fr 08_non-res 1 40 0.0 0.0 +fr 09_hydro_pump 1 40 0.0 0.0 +fr 01_solar 1 41 1.0 0.0 +fr 02_wind_on 1 41 1.0 0.0 +fr 03_wind_off 1 41 0.0 0.0 +fr 04_res 1 41 0.0 0.0 +fr 05_nuclear 1 41 0.0 0.0 +fr 06_coal 1 41 0.0 0.0 +fr 07_gas 1 41 0.0 0.0 +fr 08_non-res 1 41 0.0 0.0 +fr 09_hydro_pump 1 41 0.0 0.0 +fr 01_solar 1 42 1.0 0.0 +fr 02_wind_on 1 42 1.0 0.0 +fr 03_wind_off 1 42 1.0 0.0 +fr 04_res 1 42 0.0 0.0 +fr 05_nuclear 1 42 0.0 0.0 +fr 06_coal 1 42 0.0 0.0 +fr 07_gas 1 42 0.0 0.0 +fr 08_non-res 1 42 0.0 0.0 +fr 09_hydro_pump 1 42 0.0 0.0 +fr 01_solar 1 43 1.0 0.0 +fr 02_wind_on 1 43 1.0 0.0 +fr 03_wind_off 1 43 1.0 0.0 +fr 04_res 1 43 0.0 0.0 +fr 05_nuclear 1 43 0.0 0.0 +fr 06_coal 1 43 0.0 0.0 +fr 07_gas 1 43 0.0 0.0 +fr 08_non-res 1 43 0.0 0.0 +fr 09_hydro_pump 1 43 0.0 0.0 +fr 01_solar 1 44 1.0 0.0 +fr 02_wind_on 1 44 1.0 0.0 +fr 03_wind_off 1 44 1.0 0.0 +fr 04_res 1 44 0.0 0.0 +fr 05_nuclear 1 44 0.0 0.0 +fr 06_coal 1 44 0.0 0.0 +fr 07_gas 1 44 0.0 0.0 +fr 08_non-res 1 44 0.0 0.0 +fr 09_hydro_pump 1 44 0.0 0.0 +fr 01_solar 1 45 1.0 0.0 +fr 02_wind_on 1 45 1.0 0.0 +fr 03_wind_off 1 45 1.0 0.0 +fr 04_res 1 45 0.0 0.0 +fr 05_nuclear 1 45 0.0 0.0 +fr 06_coal 1 45 0.0 0.0 +fr 07_gas 1 45 0.0 0.0 +fr 08_non-res 1 45 0.0 0.0 +fr 09_hydro_pump 1 45 0.0 0.0 +fr 01_solar 1 46 1.0 0.0 +fr 02_wind_on 1 46 1.0 0.0 +fr 03_wind_off 1 46 1.0 0.0 +fr 04_res 1 46 0.0 0.0 +fr 05_nuclear 1 46 0.0 0.0 +fr 06_coal 1 46 0.0 0.0 +fr 07_gas 1 46 0.0 0.0 +fr 08_non-res 1 46 0.0 0.0 +fr 09_hydro_pump 1 46 0.0 0.0 +fr 01_solar 1 47 1.0 0.0 +fr 02_wind_on 1 47 1.0 0.0 +fr 03_wind_off 1 47 1.0 0.0 +fr 04_res 1 47 0.0 0.0 +fr 05_nuclear 1 47 0.0 0.0 +fr 06_coal 1 47 0.0 0.0 +fr 07_gas 1 47 0.0 0.0 +fr 08_non-res 1 47 0.0 0.0 +fr 09_hydro_pump 1 47 0.0 0.0 +fr 01_solar 1 48 1.0 0.0 +fr 02_wind_on 1 48 1.0 0.0 +fr 03_wind_off 1 48 1.0 0.0 +fr 04_res 1 48 0.0 0.0 +fr 05_nuclear 1 48 0.0 0.0 +fr 06_coal 1 48 0.0 0.0 +fr 07_gas 1 48 0.0 0.0 +fr 08_non-res 1 48 0.0 0.0 +fr 09_hydro_pump 1 48 0.0 0.0 +fr 01_solar 1 49 1.0 0.0 +fr 02_wind_on 1 49 1.0 0.0 +fr 03_wind_off 1 49 1.0 0.0 +fr 04_res 1 49 0.0 0.0 +fr 05_nuclear 1 49 0.0 0.0 +fr 06_coal 1 49 0.0 0.0 +fr 07_gas 1 49 0.0 0.0 +fr 08_non-res 1 49 0.0 0.0 +fr 09_hydro_pump 1 49 0.0 0.0 +fr 01_solar 1 50 1.0 0.0 +fr 02_wind_on 1 50 1.0 0.0 +fr 03_wind_off 1 50 1.0 0.0 +fr 04_res 1 50 0.0 0.0 +fr 05_nuclear 1 50 0.0 0.0 +fr 06_coal 1 50 0.0 0.0 +fr 07_gas 1 50 0.0 0.0 +fr 08_non-res 1 50 0.0 0.0 +fr 09_hydro_pump 1 50 0.0 0.0 +fr 01_solar 1 51 1.0 0.0 +fr 02_wind_on 1 51 1.0 0.0 +fr 03_wind_off 1 51 1.0 0.0 +fr 04_res 1 51 0.0 0.0 +fr 05_nuclear 1 51 0.0 0.0 +fr 06_coal 1 51 0.0 0.0 +fr 07_gas 1 51 0.0 0.0 +fr 08_non-res 1 51 0.0 0.0 +fr 09_hydro_pump 1 51 0.0 0.0 +fr 01_solar 1 52 1.0 0.0 +fr 02_wind_on 1 52 1.0 0.0 +fr 03_wind_off 1 52 1.0 0.0 +fr 04_res 1 52 0.0 0.0 +fr 05_nuclear 1 52 0.0 0.0 +fr 06_coal 1 52 0.0 0.0 +fr 07_gas 1 52 0.0 0.0 +fr 08_non-res 1 52 0.0 0.0 +fr 09_hydro_pump 1 52 0.0 0.0 +fr 01_solar 1 53 1.0 0.0 +fr 02_wind_on 1 53 1.0 0.0 +fr 03_wind_off 1 53 1.0 0.0 +fr 04_res 1 53 0.0 0.0 +fr 05_nuclear 1 53 0.0 0.0 +fr 06_coal 1 53 0.0 0.0 +fr 07_gas 1 53 0.0 0.0 +fr 08_non-res 1 53 0.0 0.0 +fr 09_hydro_pump 1 53 0.0 0.0 +fr 01_solar 1 54 1.0 0.0 +fr 02_wind_on 1 54 1.0 0.0 +fr 03_wind_off 1 54 1.0 0.0 +fr 04_res 1 54 0.0 0.0 +fr 05_nuclear 1 54 0.0 0.0 +fr 06_coal 1 54 0.0 0.0 +fr 07_gas 1 54 0.0 0.0 +fr 08_non-res 1 54 0.0 0.0 +fr 09_hydro_pump 1 54 0.0 0.0 +fr 01_solar 1 55 1.0 0.0 +fr 02_wind_on 1 55 1.0 0.0 +fr 03_wind_off 1 55 1.0 0.0 +fr 04_res 1 55 0.0 0.0 +fr 05_nuclear 1 55 0.0 0.0 +fr 06_coal 1 55 0.0 0.0 +fr 07_gas 1 55 0.0 0.0 +fr 08_non-res 1 55 0.0 0.0 +fr 09_hydro_pump 1 55 0.0 0.0 +fr 01_solar 1 56 1.0 0.0 +fr 02_wind_on 1 56 1.0 0.0 +fr 03_wind_off 1 56 1.0 0.0 +fr 04_res 1 56 0.0 0.0 +fr 05_nuclear 1 56 0.0 0.0 +fr 06_coal 1 56 0.0 0.0 +fr 07_gas 1 56 0.0 0.0 +fr 08_non-res 1 56 0.0 0.0 +fr 09_hydro_pump 1 56 0.0 0.0 +fr 01_solar 1 57 1.0 0.0 +fr 02_wind_on 1 57 1.0 0.0 +fr 03_wind_off 1 57 1.0 0.0 +fr 04_res 1 57 0.0 0.0 +fr 05_nuclear 1 57 0.0 0.0 +fr 06_coal 1 57 0.0 0.0 +fr 07_gas 1 57 0.0 0.0 +fr 08_non-res 1 57 0.0 0.0 +fr 09_hydro_pump 1 57 0.0 0.0 +fr 01_solar 1 58 1.0 0.0 +fr 02_wind_on 1 58 1.0 0.0 +fr 03_wind_off 1 58 1.0 0.0 +fr 04_res 1 58 0.0 0.0 +fr 05_nuclear 1 58 0.0 0.0 +fr 06_coal 1 58 0.0 0.0 +fr 07_gas 1 58 0.0 0.0 +fr 08_non-res 1 58 0.0 0.0 +fr 09_hydro_pump 1 58 0.0 0.0 +fr 01_solar 1 59 1.0 0.0 +fr 02_wind_on 1 59 1.0 0.0 +fr 03_wind_off 1 59 1.0 0.0 +fr 04_res 1 59 0.0 0.0 +fr 05_nuclear 1 59 0.0 0.0 +fr 06_coal 1 59 0.0 0.0 +fr 07_gas 1 59 0.0 0.0 +fr 08_non-res 1 59 0.0 0.0 +fr 09_hydro_pump 1 59 0.0 0.0 +fr 01_solar 1 60 1.0 0.0 +fr 02_wind_on 1 60 1.0 0.0 +fr 03_wind_off 1 60 1.0 0.0 +fr 04_res 1 60 0.0 0.0 +fr 05_nuclear 1 60 0.0 0.0 +fr 06_coal 1 60 0.0 0.0 +fr 07_gas 1 60 0.0 0.0 +fr 08_non-res 1 60 0.0 0.0 +fr 09_hydro_pump 1 60 0.0 0.0 +fr 01_solar 1 61 1.0 0.0 +fr 02_wind_on 1 61 1.0 0.0 +fr 03_wind_off 1 61 1.0 0.0 +fr 04_res 1 61 0.0 0.0 +fr 05_nuclear 1 61 0.0 0.0 +fr 06_coal 1 61 0.0 0.0 +fr 07_gas 1 61 0.0 0.0 +fr 08_non-res 1 61 0.0 0.0 +fr 09_hydro_pump 1 61 0.0 0.0 +fr 01_solar 1 62 1.0 0.0 +fr 02_wind_on 1 62 1.0 0.0 +fr 03_wind_off 1 62 1.0 0.0 +fr 04_res 1 62 1.0 0.0 +fr 05_nuclear 1 62 0.0 0.0 +fr 06_coal 1 62 0.0 0.0 +fr 07_gas 1 62 0.0 0.0 +fr 08_non-res 1 62 0.0 0.0 +fr 09_hydro_pump 1 62 0.0 0.0 +fr 01_solar 1 63 1.0 0.0 +fr 02_wind_on 1 63 1.0 0.0 +fr 03_wind_off 1 63 1.0 0.0 +fr 04_res 1 63 1.0 0.0 +fr 05_nuclear 1 63 0.0 0.0 +fr 06_coal 1 63 0.0 0.0 +fr 07_gas 1 63 0.0 0.0 +fr 08_non-res 1 63 0.0 0.0 +fr 09_hydro_pump 1 63 0.0 0.0 +fr 01_solar 1 64 1.0 0.0 +fr 02_wind_on 1 64 1.0 0.0 +fr 03_wind_off 1 64 1.0 0.0 +fr 04_res 1 64 1.0 0.0 +fr 05_nuclear 1 64 0.0 0.0 +fr 06_coal 1 64 0.0 0.0 +fr 07_gas 1 64 0.0 0.0 +fr 08_non-res 1 64 0.0 0.0 +fr 09_hydro_pump 1 64 0.0 0.0 +fr 01_solar 1 65 1.0 0.0 +fr 02_wind_on 1 65 1.0 0.0 +fr 03_wind_off 1 65 1.0 0.0 +fr 04_res 1 65 1.0 0.0 +fr 05_nuclear 1 65 0.0 0.0 +fr 06_coal 1 65 0.0 0.0 +fr 07_gas 1 65 0.0 0.0 +fr 08_non-res 1 65 0.0 0.0 +fr 09_hydro_pump 1 65 0.0 0.0 +fr 01_solar 1 66 1.0 0.0 +fr 02_wind_on 1 66 1.0 0.0 +fr 03_wind_off 1 66 1.0 0.0 +fr 04_res 1 66 1.0 0.0 +fr 05_nuclear 1 66 0.0 0.0 +fr 06_coal 1 66 0.0 0.0 +fr 07_gas 1 66 0.0 0.0 +fr 08_non-res 1 66 0.0 0.0 +fr 09_hydro_pump 1 66 0.0 0.0 +fr 01_solar 1 67 1.0 0.0 +fr 02_wind_on 1 67 1.0 0.0 +fr 03_wind_off 1 67 1.0 0.0 +fr 04_res 1 67 1.0 0.0 +fr 05_nuclear 1 67 0.0 0.0 +fr 06_coal 1 67 0.0 0.0 +fr 07_gas 1 67 0.0 0.0 +fr 08_non-res 1 67 0.0 0.0 +fr 09_hydro_pump 1 67 0.0 0.0 +fr 01_solar 1 68 1.0 0.0 +fr 02_wind_on 1 68 1.0 0.0 +fr 03_wind_off 1 68 1.0 0.0 +fr 04_res 1 68 1.0 0.0 +fr 05_nuclear 1 68 0.0 0.0 +fr 06_coal 1 68 0.0 0.0 +fr 07_gas 1 68 0.0 0.0 +fr 08_non-res 1 68 0.0 0.0 +fr 09_hydro_pump 1 68 0.0 0.0 +fr 01_solar 1 69 1.0 0.0 +fr 02_wind_on 1 69 1.0 0.0 +fr 03_wind_off 1 69 1.0 0.0 +fr 04_res 1 69 1.0 0.0 +fr 05_nuclear 1 69 0.0 0.0 +fr 06_coal 1 69 0.0 0.0 +fr 07_gas 1 69 0.0 0.0 +fr 08_non-res 1 69 0.0 0.0 +fr 09_hydro_pump 1 69 0.0 0.0 +fr 01_solar 1 70 1.0 0.0 +fr 02_wind_on 1 70 1.0 0.0 +fr 03_wind_off 1 70 1.0 0.0 +fr 04_res 1 70 1.0 0.0 +fr 05_nuclear 1 70 0.0 0.0 +fr 06_coal 1 70 0.0 0.0 +fr 07_gas 1 70 0.0 0.0 +fr 08_non-res 1 70 0.0 0.0 +fr 09_hydro_pump 1 70 0.0 0.0 +fr 01_solar 1 71 1.0 0.0 +fr 02_wind_on 1 71 1.0 0.0 +fr 03_wind_off 1 71 1.0 0.0 +fr 04_res 1 71 1.0 0.0 +fr 05_nuclear 1 71 0.0 0.0 +fr 06_coal 1 71 0.0 0.0 +fr 07_gas 1 71 0.0 0.0 +fr 08_non-res 1 71 0.0 0.0 +fr 09_hydro_pump 1 71 0.0 0.0 +fr 01_solar 1 72 1.0 0.0 +fr 02_wind_on 1 72 1.0 0.0 +fr 03_wind_off 1 72 1.0 0.0 +fr 04_res 1 72 1.0 0.0 +fr 05_nuclear 1 72 0.0 0.0 +fr 06_coal 1 72 0.0 0.0 +fr 07_gas 1 72 0.0 0.0 +fr 08_non-res 1 72 0.0 0.0 +fr 09_hydro_pump 1 72 0.0 0.0 +fr 01_solar 1 73 1.0 0.0 +fr 02_wind_on 1 73 1.0 0.0 +fr 03_wind_off 1 73 1.0 0.0 +fr 04_res 1 73 1.0 0.0 +fr 05_nuclear 1 73 0.0 0.0 +fr 06_coal 1 73 0.0 0.0 +fr 07_gas 1 73 0.0 0.0 +fr 08_non-res 1 73 0.0 0.0 +fr 09_hydro_pump 1 73 0.0 0.0 +fr 01_solar 1 74 1.0 0.0 +fr 02_wind_on 1 74 1.0 0.0 +fr 03_wind_off 1 74 1.0 0.0 +fr 04_res 1 74 1.0 0.0 +fr 05_nuclear 1 74 0.0 0.0 +fr 06_coal 1 74 0.0 0.0 +fr 07_gas 1 74 0.0 0.0 +fr 08_non-res 1 74 0.0 0.0 +fr 09_hydro_pump 1 74 0.0 0.0 +fr 01_solar 1 75 1.0 0.0 +fr 02_wind_on 1 75 1.0 0.0 +fr 03_wind_off 1 75 1.0 0.0 +fr 04_res 1 75 1.0 0.0 +fr 05_nuclear 1 75 0.0 0.0 +fr 06_coal 1 75 0.0 0.0 +fr 07_gas 1 75 0.0 0.0 +fr 08_non-res 1 75 0.0 0.0 +fr 09_hydro_pump 1 75 0.0 0.0 +fr 01_solar 1 76 1.0 0.0 +fr 02_wind_on 1 76 1.0 0.0 +fr 03_wind_off 1 76 1.0 0.0 +fr 04_res 1 76 1.0 0.0 +fr 05_nuclear 1 76 0.0 0.0 +fr 06_coal 1 76 0.0 0.0 +fr 07_gas 1 76 0.0 0.0 +fr 08_non-res 1 76 0.0 0.0 +fr 09_hydro_pump 1 76 0.0 0.0 +fr 01_solar 1 77 1.0 0.0 +fr 02_wind_on 1 77 1.0 0.0 +fr 03_wind_off 1 77 1.0 0.0 +fr 04_res 1 77 1.0 0.0 +fr 05_nuclear 1 77 0.0 0.0 +fr 06_coal 1 77 0.0 0.0 +fr 07_gas 1 77 0.0 0.0 +fr 08_non-res 1 77 0.0 0.0 +fr 09_hydro_pump 1 77 0.0 0.0 +fr 01_solar 1 78 1.0 0.0 +fr 02_wind_on 1 78 1.0 0.0 +fr 03_wind_off 1 78 1.0 0.0 +fr 04_res 1 78 1.0 0.0 +fr 05_nuclear 1 78 0.0 0.0 +fr 06_coal 1 78 0.0 0.0 +fr 07_gas 1 78 0.0 0.0 +fr 08_non-res 1 78 0.0 0.0 +fr 09_hydro_pump 1 78 0.0 0.0 +fr 01_solar 1 79 1.0 0.0 +fr 02_wind_on 1 79 1.0 0.0 +fr 03_wind_off 1 79 1.0 0.0 +fr 04_res 1 79 1.0 0.0 +fr 05_nuclear 1 79 0.0 0.0 +fr 06_coal 1 79 0.0 0.0 +fr 07_gas 1 79 0.0 0.0 +fr 08_non-res 1 79 0.0 0.0 +fr 09_hydro_pump 1 79 0.0 0.0 +fr 01_solar 1 80 1.0 0.0 +fr 02_wind_on 1 80 1.0 0.0 +fr 03_wind_off 1 80 1.0 0.0 +fr 04_res 1 80 1.0 0.0 +fr 05_nuclear 1 80 0.0 0.0 +fr 06_coal 1 80 0.0 0.0 +fr 07_gas 1 80 0.0 0.0 +fr 08_non-res 1 80 0.0 0.0 +fr 09_hydro_pump 1 80 0.0 0.0 +fr 01_solar 1 81 1.0 0.0 +fr 02_wind_on 1 81 1.0 0.0 +fr 03_wind_off 1 81 1.0 0.0 +fr 04_res 1 81 1.0 0.0 +fr 05_nuclear 1 81 0.0 0.0 +fr 06_coal 1 81 0.0 0.0 +fr 07_gas 1 81 0.0 0.0 +fr 08_non-res 1 81 0.0 0.0 +fr 09_hydro_pump 1 81 0.0 0.0 +fr 01_solar 1 82 1.0 0.0 +fr 02_wind_on 1 82 1.0 0.0 +fr 03_wind_off 1 82 1.0 0.0 +fr 04_res 1 82 1.0 0.0 +fr 05_nuclear 1 82 1.0 0.0 +fr 06_coal 1 82 0.0 0.0 +fr 07_gas 1 82 0.0 0.0 +fr 08_non-res 1 82 0.0 0.0 +fr 09_hydro_pump 1 82 0.0 0.0 +fr 01_solar 1 83 1.0 0.0 +fr 02_wind_on 1 83 1.0 0.0 +fr 03_wind_off 1 83 1.0 0.0 +fr 04_res 1 83 1.0 0.0 +fr 05_nuclear 1 83 1.0 0.0 +fr 06_coal 1 83 0.0 0.0 +fr 07_gas 1 83 0.0 0.0 +fr 08_non-res 1 83 0.0 0.0 +fr 09_hydro_pump 1 83 0.0 0.0 +fr 01_solar 1 84 1.0 0.0 +fr 02_wind_on 1 84 1.0 0.0 +fr 03_wind_off 1 84 1.0 0.0 +fr 04_res 1 84 1.0 0.0 +fr 05_nuclear 1 84 1.0 0.0 +fr 06_coal 1 84 0.0 0.0 +fr 07_gas 1 84 0.0 0.0 +fr 08_non-res 1 84 0.0 0.0 +fr 09_hydro_pump 1 84 0.0 0.0 +fr 01_solar 1 85 1.0 0.0 +fr 02_wind_on 1 85 1.0 0.0 +fr 03_wind_off 1 85 1.0 0.0 +fr 04_res 1 85 1.0 0.0 +fr 05_nuclear 1 85 1.0 0.0 +fr 06_coal 1 85 0.0 0.0 +fr 07_gas 1 85 0.0 0.0 +fr 08_non-res 1 85 0.0 0.0 +fr 09_hydro_pump 1 85 0.0 0.0 +fr 01_solar 1 86 1.0 0.0 +fr 02_wind_on 1 86 1.0 0.0 +fr 03_wind_off 1 86 1.0 0.0 +fr 04_res 1 86 1.0 0.0 +fr 05_nuclear 1 86 1.0 0.0 +fr 06_coal 1 86 0.0 0.0 +fr 07_gas 1 86 0.0 0.0 +fr 08_non-res 1 86 0.0 0.0 +fr 09_hydro_pump 1 86 0.0 0.0 +fr 01_solar 1 87 1.0 0.0 +fr 02_wind_on 1 87 1.0 0.0 +fr 03_wind_off 1 87 1.0 0.0 +fr 04_res 1 87 1.0 0.0 +fr 05_nuclear 1 87 1.0 0.0 +fr 06_coal 1 87 0.0 0.0 +fr 07_gas 1 87 0.0 0.0 +fr 08_non-res 1 87 0.0 0.0 +fr 09_hydro_pump 1 87 0.0 0.0 +fr 01_solar 1 88 1.0 0.0 +fr 02_wind_on 1 88 1.0 0.0 +fr 03_wind_off 1 88 1.0 0.0 +fr 04_res 1 88 1.0 0.0 +fr 05_nuclear 1 88 1.0 0.0 +fr 06_coal 1 88 0.0 0.0 +fr 07_gas 1 88 0.0 0.0 +fr 08_non-res 1 88 0.0 0.0 +fr 09_hydro_pump 1 88 0.0 0.0 +fr 01_solar 1 89 1.0 0.0 +fr 02_wind_on 1 89 1.0 0.0 +fr 03_wind_off 1 89 1.0 0.0 +fr 04_res 1 89 1.0 0.0 +fr 05_nuclear 1 89 1.0 0.0 +fr 06_coal 1 89 0.0 0.0 +fr 07_gas 1 89 0.0 0.0 +fr 08_non-res 1 89 0.0 0.0 +fr 09_hydro_pump 1 89 0.0 0.0 +fr 01_solar 1 90 1.0 0.0 +fr 02_wind_on 1 90 1.0 0.0 +fr 03_wind_off 1 90 1.0 0.0 +fr 04_res 1 90 1.0 0.0 +fr 05_nuclear 1 90 1.0 0.0 +fr 06_coal 1 90 0.0 0.0 +fr 07_gas 1 90 0.0 0.0 +fr 08_non-res 1 90 0.0 0.0 +fr 09_hydro_pump 1 90 0.0 0.0 +fr 01_solar 1 91 1.0 0.0 +fr 02_wind_on 1 91 1.0 0.0 +fr 03_wind_off 1 91 1.0 0.0 +fr 04_res 1 91 1.0 0.0 +fr 05_nuclear 1 91 1.0 0.0 +fr 06_coal 1 91 0.0 0.0 +fr 07_gas 1 91 0.0 0.0 +fr 08_non-res 1 91 0.0 0.0 +fr 09_hydro_pump 1 91 0.0 0.0 +fr 01_solar 1 92 1.0 0.0 +fr 02_wind_on 1 92 1.0 0.0 +fr 03_wind_off 1 92 1.0 0.0 +fr 04_res 1 92 1.0 0.0 +fr 05_nuclear 1 92 1.0 0.0 +fr 06_coal 1 92 0.0 0.0 +fr 07_gas 1 92 0.0 0.0 +fr 08_non-res 1 92 0.0 0.0 +fr 09_hydro_pump 1 92 0.0 0.0 +fr 01_solar 1 93 1.0 0.0 +fr 02_wind_on 1 93 1.0 0.0 +fr 03_wind_off 1 93 1.0 0.0 +fr 04_res 1 93 1.0 0.0 +fr 05_nuclear 1 93 1.0 0.0 +fr 06_coal 1 93 0.0 0.0 +fr 07_gas 1 93 0.0 0.0 +fr 08_non-res 1 93 0.0 0.0 +fr 09_hydro_pump 1 93 0.0 0.0 +fr 01_solar 1 94 1.0 0.0 +fr 02_wind_on 1 94 1.0 0.0 +fr 03_wind_off 1 94 1.0 0.0 +fr 04_res 1 94 1.0 0.0 +fr 05_nuclear 1 94 1.0 0.0 +fr 06_coal 1 94 0.0 0.0 +fr 07_gas 1 94 0.0 0.0 +fr 08_non-res 1 94 0.0 0.0 +fr 09_hydro_pump 1 94 0.0 0.0 +fr 01_solar 1 95 1.0 0.0 +fr 02_wind_on 1 95 1.0 0.0 +fr 03_wind_off 1 95 1.0 0.0 +fr 04_res 1 95 1.0 0.0 +fr 05_nuclear 1 95 1.0 0.0 +fr 06_coal 1 95 0.0 0.0 +fr 07_gas 1 95 0.0 0.0 +fr 08_non-res 1 95 0.0 0.0 +fr 09_hydro_pump 1 95 0.0 0.0 +fr 01_solar 1 96 1.0 0.0 +fr 02_wind_on 1 96 1.0 0.0 +fr 03_wind_off 1 96 1.0 0.0 +fr 04_res 1 96 1.0 0.0 +fr 05_nuclear 1 96 1.0 0.0 +fr 06_coal 1 96 0.0 0.0 +fr 07_gas 1 96 0.0 0.0 +fr 08_non-res 1 96 0.0 0.0 +fr 09_hydro_pump 1 96 0.0 0.0 +fr 01_solar 1 97 1.0 0.0 +fr 02_wind_on 1 97 1.0 0.0 +fr 03_wind_off 1 97 1.0 0.0 +fr 04_res 1 97 1.0 0.0 +fr 05_nuclear 1 97 1.0 0.0 +fr 06_coal 1 97 0.0 0.0 +fr 07_gas 1 97 0.0 0.0 +fr 08_non-res 1 97 0.0 0.0 +fr 09_hydro_pump 1 97 0.0 0.0 +fr 01_solar 1 98 1.0 0.0 +fr 02_wind_on 1 98 1.0 0.0 +fr 03_wind_off 1 98 1.0 0.0 +fr 04_res 1 98 1.0 0.0 +fr 05_nuclear 1 98 1.0 0.0 +fr 06_coal 1 98 0.0 0.0 +fr 07_gas 1 98 0.0 0.0 +fr 08_non-res 1 98 0.0 0.0 +fr 09_hydro_pump 1 98 0.0 0.0 +fr 01_solar 1 99 1.0 0.0 +fr 02_wind_on 1 99 1.0 0.0 +fr 03_wind_off 1 99 1.0 0.0 +fr 04_res 1 99 1.0 0.0 +fr 05_nuclear 1 99 1.0 0.0 +fr 06_coal 1 99 0.0 0.0 +fr 07_gas 1 99 0.0 0.0 +fr 08_non-res 1 99 0.0 0.0 +fr 09_hydro_pump 1 99 0.0 0.0 +fr 01_solar 1 100 1.0 0.0 +fr 02_wind_on 1 100 1.0 0.0 +fr 03_wind_off 1 100 1.0 0.0 +fr 04_res 1 100 1.0 0.0 +fr 05_nuclear 1 100 1.0 0.0 +fr 06_coal 1 100 0.0 0.0 +fr 07_gas 1 100 0.0 0.0 +fr 08_non-res 1 100 0.0 0.0 +fr 09_hydro_pump 1 100 0.0 0.0 +fr 01_solar 1 101 1.0 0.0 +fr 02_wind_on 1 101 1.0 0.0 +fr 03_wind_off 1 101 1.0 0.0 +fr 04_res 1 101 1.0 0.0 +fr 05_nuclear 1 101 1.0 0.0 +fr 06_coal 1 101 0.0 0.0 +fr 07_gas 1 101 0.0 0.0 +fr 08_non-res 1 101 0.0 0.0 +fr 09_hydro_pump 1 101 0.0 0.0 +fr 01_solar 1 102 1.0 0.0 +fr 02_wind_on 1 102 1.0 0.0 +fr 03_wind_off 1 102 1.0 0.0 +fr 04_res 1 102 1.0 0.0 +fr 05_nuclear 1 102 1.0 0.0 +fr 06_coal 1 102 1.0 0.0 +fr 07_gas 1 102 0.0 0.0 +fr 08_non-res 1 102 0.0 0.0 +fr 09_hydro_pump 1 102 0.0 0.0 +fr 01_solar 1 103 1.0 0.0 +fr 02_wind_on 1 103 1.0 0.0 +fr 03_wind_off 1 103 1.0 0.0 +fr 04_res 1 103 1.0 0.0 +fr 05_nuclear 1 103 1.0 0.0 +fr 06_coal 1 103 1.0 0.0 +fr 07_gas 1 103 0.0 0.0 +fr 08_non-res 1 103 0.0 0.0 +fr 09_hydro_pump 1 103 0.0 0.0 +fr 01_solar 1 104 1.0 0.0 +fr 02_wind_on 1 104 1.0 0.0 +fr 03_wind_off 1 104 1.0 0.0 +fr 04_res 1 104 1.0 0.0 +fr 05_nuclear 1 104 1.0 0.0 +fr 06_coal 1 104 1.0 0.0 +fr 07_gas 1 104 0.0 0.0 +fr 08_non-res 1 104 0.0 0.0 +fr 09_hydro_pump 1 104 0.0 0.0 +fr 01_solar 1 105 1.0 0.0 +fr 02_wind_on 1 105 1.0 0.0 +fr 03_wind_off 1 105 1.0 0.0 +fr 04_res 1 105 1.0 0.0 +fr 05_nuclear 1 105 1.0 0.0 +fr 06_coal 1 105 1.0 0.0 +fr 07_gas 1 105 0.0 0.0 +fr 08_non-res 1 105 0.0 0.0 +fr 09_hydro_pump 1 105 0.0 0.0 +fr 01_solar 1 106 1.0 0.0 +fr 02_wind_on 1 106 1.0 0.0 +fr 03_wind_off 1 106 1.0 0.0 +fr 04_res 1 106 1.0 0.0 +fr 05_nuclear 1 106 1.0 0.0 +fr 06_coal 1 106 1.0 0.0 +fr 07_gas 1 106 0.0 0.0 +fr 08_non-res 1 106 0.0 0.0 +fr 09_hydro_pump 1 106 0.0 0.0 +fr 01_solar 1 107 1.0 0.0 +fr 02_wind_on 1 107 1.0 0.0 +fr 03_wind_off 1 107 1.0 0.0 +fr 04_res 1 107 1.0 0.0 +fr 05_nuclear 1 107 1.0 0.0 +fr 06_coal 1 107 1.0 0.0 +fr 07_gas 1 107 0.0 0.0 +fr 08_non-res 1 107 0.0 0.0 +fr 09_hydro_pump 1 107 0.0 0.0 +fr 01_solar 1 108 1.0 0.0 +fr 02_wind_on 1 108 1.0 0.0 +fr 03_wind_off 1 108 1.0 0.0 +fr 04_res 1 108 1.0 0.0 +fr 05_nuclear 1 108 1.0 0.0 +fr 06_coal 1 108 1.0 0.0 +fr 07_gas 1 108 0.0 0.0 +fr 08_non-res 1 108 0.0 0.0 +fr 09_hydro_pump 1 108 0.0 0.0 +fr 01_solar 1 109 1.0 0.0 +fr 02_wind_on 1 109 1.0 0.0 +fr 03_wind_off 1 109 1.0 0.0 +fr 04_res 1 109 1.0 0.0 +fr 05_nuclear 1 109 1.0 0.0 +fr 06_coal 1 109 1.0 0.0 +fr 07_gas 1 109 0.0 0.0 +fr 08_non-res 1 109 0.0 0.0 +fr 09_hydro_pump 1 109 0.0 0.0 +fr 01_solar 1 110 1.0 0.0 +fr 02_wind_on 1 110 1.0 0.0 +fr 03_wind_off 1 110 1.0 0.0 +fr 04_res 1 110 1.0 0.0 +fr 05_nuclear 1 110 1.0 0.0 +fr 06_coal 1 110 1.0 0.0 +fr 07_gas 1 110 0.0 0.0 +fr 08_non-res 1 110 0.0 0.0 +fr 09_hydro_pump 1 110 0.0 0.0 +fr 01_solar 1 111 1.0 0.0 +fr 02_wind_on 1 111 1.0 0.0 +fr 03_wind_off 1 111 1.0 0.0 +fr 04_res 1 111 1.0 0.0 +fr 05_nuclear 1 111 1.0 0.0 +fr 06_coal 1 111 1.0 0.0 +fr 07_gas 1 111 0.0 0.0 +fr 08_non-res 1 111 0.0 0.0 +fr 09_hydro_pump 1 111 0.0 0.0 +fr 01_solar 1 112 1.0 0.0 +fr 02_wind_on 1 112 1.0 0.0 +fr 03_wind_off 1 112 1.0 0.0 +fr 04_res 1 112 1.0 0.0 +fr 05_nuclear 1 112 1.0 0.0 +fr 06_coal 1 112 1.0 0.0 +fr 07_gas 1 112 0.0 0.0 +fr 08_non-res 1 112 0.0 0.0 +fr 09_hydro_pump 1 112 0.0 0.0 +fr 01_solar 1 113 1.0 0.0 +fr 02_wind_on 1 113 1.0 0.0 +fr 03_wind_off 1 113 1.0 0.0 +fr 04_res 1 113 1.0 0.0 +fr 05_nuclear 1 113 1.0 0.0 +fr 06_coal 1 113 1.0 0.0 +fr 07_gas 1 113 0.0 0.0 +fr 08_non-res 1 113 0.0 0.0 +fr 09_hydro_pump 1 113 0.0 0.0 +fr 01_solar 1 114 1.0 0.0 +fr 02_wind_on 1 114 1.0 0.0 +fr 03_wind_off 1 114 1.0 0.0 +fr 04_res 1 114 1.0 0.0 +fr 05_nuclear 1 114 1.0 0.0 +fr 06_coal 1 114 1.0 0.0 +fr 07_gas 1 114 0.0 0.0 +fr 08_non-res 1 114 0.0 0.0 +fr 09_hydro_pump 1 114 0.0 0.0 +fr 01_solar 1 115 1.0 0.0 +fr 02_wind_on 1 115 1.0 0.0 +fr 03_wind_off 1 115 1.0 0.0 +fr 04_res 1 115 1.0 0.0 +fr 05_nuclear 1 115 1.0 0.0 +fr 06_coal 1 115 1.0 0.0 +fr 07_gas 1 115 0.0 0.0 +fr 08_non-res 1 115 0.0 0.0 +fr 09_hydro_pump 1 115 0.0 0.0 +fr 01_solar 1 116 1.0 0.0 +fr 02_wind_on 1 116 1.0 0.0 +fr 03_wind_off 1 116 1.0 0.0 +fr 04_res 1 116 1.0 0.0 +fr 05_nuclear 1 116 1.0 0.0 +fr 06_coal 1 116 1.0 0.0 +fr 07_gas 1 116 0.0 0.0 +fr 08_non-res 1 116 0.0 0.0 +fr 09_hydro_pump 1 116 0.0 0.0 +fr 01_solar 1 117 1.0 0.0 +fr 02_wind_on 1 117 1.0 0.0 +fr 03_wind_off 1 117 1.0 0.0 +fr 04_res 1 117 1.0 0.0 +fr 05_nuclear 1 117 1.0 0.0 +fr 06_coal 1 117 1.0 0.0 +fr 07_gas 1 117 0.0 0.0 +fr 08_non-res 1 117 0.0 0.0 +fr 09_hydro_pump 1 117 0.0 0.0 +fr 01_solar 1 118 1.0 0.0 +fr 02_wind_on 1 118 1.0 0.0 +fr 03_wind_off 1 118 1.0 0.0 +fr 04_res 1 118 1.0 0.0 +fr 05_nuclear 1 118 1.0 0.0 +fr 06_coal 1 118 1.0 0.0 +fr 07_gas 1 118 0.0 0.0 +fr 08_non-res 1 118 0.0 0.0 +fr 09_hydro_pump 1 118 0.0 0.0 +fr 01_solar 1 119 1.0 0.0 +fr 02_wind_on 1 119 1.0 0.0 +fr 03_wind_off 1 119 1.0 0.0 +fr 04_res 1 119 1.0 0.0 +fr 05_nuclear 1 119 1.0 0.0 +fr 06_coal 1 119 1.0 0.0 +fr 07_gas 1 119 0.0 0.0 +fr 08_non-res 1 119 0.0 0.0 +fr 09_hydro_pump 1 119 0.0 0.0 +fr 01_solar 1 120 1.0 0.0 +fr 02_wind_on 1 120 1.0 0.0 +fr 03_wind_off 1 120 1.0 0.0 +fr 04_res 1 120 1.0 0.0 +fr 05_nuclear 1 120 1.0 0.0 +fr 06_coal 1 120 1.0 0.0 +fr 07_gas 1 120 0.0 0.0 +fr 08_non-res 1 120 0.0 0.0 +fr 09_hydro_pump 1 120 0.0 0.0 +fr 01_solar 1 121 1.0 0.0 +fr 02_wind_on 1 121 1.0 0.0 +fr 03_wind_off 1 121 1.0 0.0 +fr 04_res 1 121 1.0 0.0 +fr 05_nuclear 1 121 1.0 0.0 +fr 06_coal 1 121 1.0 0.0 +fr 07_gas 1 121 0.0 0.0 +fr 08_non-res 1 121 0.0 0.0 +fr 09_hydro_pump 1 121 0.0 0.0 +fr 01_solar 1 122 1.0 0.0 +fr 02_wind_on 1 122 1.0 0.0 +fr 03_wind_off 1 122 1.0 0.0 +fr 04_res 1 122 1.0 0.0 +fr 05_nuclear 1 122 1.0 0.0 +fr 06_coal 1 122 1.0 0.0 +fr 07_gas 1 122 1.0 0.0 +fr 08_non-res 1 122 0.0 0.0 +fr 09_hydro_pump 1 122 0.0 0.0 +fr 01_solar 1 123 1.0 0.0 +fr 02_wind_on 1 123 1.0 0.0 +fr 03_wind_off 1 123 1.0 0.0 +fr 04_res 1 123 1.0 0.0 +fr 05_nuclear 1 123 1.0 0.0 +fr 06_coal 1 123 1.0 0.0 +fr 07_gas 1 123 1.0 0.0 +fr 08_non-res 1 123 0.0 0.0 +fr 09_hydro_pump 1 123 0.0 0.0 +fr 01_solar 1 124 1.0 0.0 +fr 02_wind_on 1 124 1.0 0.0 +fr 03_wind_off 1 124 1.0 0.0 +fr 04_res 1 124 1.0 0.0 +fr 05_nuclear 1 124 1.0 0.0 +fr 06_coal 1 124 1.0 0.0 +fr 07_gas 1 124 1.0 0.0 +fr 08_non-res 1 124 0.0 0.0 +fr 09_hydro_pump 1 124 0.0 0.0 +fr 01_solar 1 125 1.0 0.0 +fr 02_wind_on 1 125 1.0 0.0 +fr 03_wind_off 1 125 1.0 0.0 +fr 04_res 1 125 1.0 0.0 +fr 05_nuclear 1 125 1.0 0.0 +fr 06_coal 1 125 1.0 0.0 +fr 07_gas 1 125 1.0 0.0 +fr 08_non-res 1 125 0.0 0.0 +fr 09_hydro_pump 1 125 0.0 0.0 +fr 01_solar 1 126 1.0 0.0 +fr 02_wind_on 1 126 1.0 0.0 +fr 03_wind_off 1 126 1.0 0.0 +fr 04_res 1 126 1.0 0.0 +fr 05_nuclear 1 126 1.0 0.0 +fr 06_coal 1 126 1.0 0.0 +fr 07_gas 1 126 1.0 0.0 +fr 08_non-res 1 126 0.0 0.0 +fr 09_hydro_pump 1 126 0.0 0.0 +fr 01_solar 1 127 1.0 0.0 +fr 02_wind_on 1 127 1.0 0.0 +fr 03_wind_off 1 127 1.0 0.0 +fr 04_res 1 127 1.0 0.0 +fr 05_nuclear 1 127 1.0 0.0 +fr 06_coal 1 127 1.0 0.0 +fr 07_gas 1 127 1.0 0.0 +fr 08_non-res 1 127 0.0 0.0 +fr 09_hydro_pump 1 127 0.0 0.0 +fr 01_solar 1 128 1.0 0.0 +fr 02_wind_on 1 128 1.0 0.0 +fr 03_wind_off 1 128 1.0 0.0 +fr 04_res 1 128 1.0 0.0 +fr 05_nuclear 1 128 1.0 0.0 +fr 06_coal 1 128 1.0 0.0 +fr 07_gas 1 128 1.0 0.0 +fr 08_non-res 1 128 0.0 0.0 +fr 09_hydro_pump 1 128 0.0 0.0 +fr 01_solar 1 129 1.0 0.0 +fr 02_wind_on 1 129 1.0 0.0 +fr 03_wind_off 1 129 1.0 0.0 +fr 04_res 1 129 1.0 0.0 +fr 05_nuclear 1 129 1.0 0.0 +fr 06_coal 1 129 1.0 0.0 +fr 07_gas 1 129 1.0 0.0 +fr 08_non-res 1 129 0.0 0.0 +fr 09_hydro_pump 1 129 0.0 0.0 +fr 01_solar 1 130 1.0 0.0 +fr 02_wind_on 1 130 1.0 0.0 +fr 03_wind_off 1 130 1.0 0.0 +fr 04_res 1 130 1.0 0.0 +fr 05_nuclear 1 130 1.0 0.0 +fr 06_coal 1 130 1.0 0.0 +fr 07_gas 1 130 1.0 0.0 +fr 08_non-res 1 130 0.0 0.0 +fr 09_hydro_pump 1 130 0.0 0.0 +fr 01_solar 1 131 1.0 0.0 +fr 02_wind_on 1 131 1.0 0.0 +fr 03_wind_off 1 131 1.0 0.0 +fr 04_res 1 131 1.0 0.0 +fr 05_nuclear 1 131 1.0 0.0 +fr 06_coal 1 131 1.0 0.0 +fr 07_gas 1 131 1.0 0.0 +fr 08_non-res 1 131 0.0 0.0 +fr 09_hydro_pump 1 131 0.0 0.0 +fr 01_solar 1 132 1.0 0.0 +fr 02_wind_on 1 132 1.0 0.0 +fr 03_wind_off 1 132 1.0 0.0 +fr 04_res 1 132 1.0 0.0 +fr 05_nuclear 1 132 1.0 0.0 +fr 06_coal 1 132 1.0 0.0 +fr 07_gas 1 132 1.0 0.0 +fr 08_non-res 1 132 0.0 0.0 +fr 09_hydro_pump 1 132 0.0 0.0 +fr 01_solar 1 133 1.0 0.0 +fr 02_wind_on 1 133 1.0 0.0 +fr 03_wind_off 1 133 1.0 0.0 +fr 04_res 1 133 1.0 0.0 +fr 05_nuclear 1 133 1.0 0.0 +fr 06_coal 1 133 1.0 0.0 +fr 07_gas 1 133 1.0 0.0 +fr 08_non-res 1 133 0.0 0.0 +fr 09_hydro_pump 1 133 0.0 0.0 +fr 01_solar 1 134 1.0 0.0 +fr 02_wind_on 1 134 1.0 0.0 +fr 03_wind_off 1 134 1.0 0.0 +fr 04_res 1 134 1.0 0.0 +fr 05_nuclear 1 134 1.0 0.0 +fr 06_coal 1 134 1.0 0.0 +fr 07_gas 1 134 1.0 0.0 +fr 08_non-res 1 134 0.0 0.0 +fr 09_hydro_pump 1 134 0.0 0.0 +fr 01_solar 1 135 1.0 0.0 +fr 02_wind_on 1 135 1.0 0.0 +fr 03_wind_off 1 135 1.0 0.0 +fr 04_res 1 135 1.0 0.0 +fr 05_nuclear 1 135 1.0 0.0 +fr 06_coal 1 135 1.0 0.0 +fr 07_gas 1 135 1.0 0.0 +fr 08_non-res 1 135 0.0 0.0 +fr 09_hydro_pump 1 135 0.0 0.0 +fr 01_solar 1 136 1.0 0.0 +fr 02_wind_on 1 136 1.0 0.0 +fr 03_wind_off 1 136 1.0 0.0 +fr 04_res 1 136 1.0 0.0 +fr 05_nuclear 1 136 1.0 0.0 +fr 06_coal 1 136 1.0 0.0 +fr 07_gas 1 136 1.0 0.0 +fr 08_non-res 1 136 0.0 0.0 +fr 09_hydro_pump 1 136 0.0 0.0 +fr 01_solar 1 137 1.0 0.0 +fr 02_wind_on 1 137 1.0 0.0 +fr 03_wind_off 1 137 1.0 0.0 +fr 04_res 1 137 1.0 0.0 +fr 05_nuclear 1 137 1.0 0.0 +fr 06_coal 1 137 1.0 0.0 +fr 07_gas 1 137 1.0 0.0 +fr 08_non-res 1 137 0.0 0.0 +fr 09_hydro_pump 1 137 0.0 0.0 +fr 01_solar 1 138 1.0 0.0 +fr 02_wind_on 1 138 1.0 0.0 +fr 03_wind_off 1 138 1.0 0.0 +fr 04_res 1 138 1.0 0.0 +fr 05_nuclear 1 138 1.0 0.0 +fr 06_coal 1 138 1.0 0.0 +fr 07_gas 1 138 1.0 0.0 +fr 08_non-res 1 138 0.0 0.0 +fr 09_hydro_pump 1 138 0.0 0.0 +fr 01_solar 1 139 1.0 0.0 +fr 02_wind_on 1 139 1.0 0.0 +fr 03_wind_off 1 139 1.0 0.0 +fr 04_res 1 139 1.0 0.0 +fr 05_nuclear 1 139 1.0 0.0 +fr 06_coal 1 139 1.0 0.0 +fr 07_gas 1 139 1.0 0.0 +fr 08_non-res 1 139 0.0 0.0 +fr 09_hydro_pump 1 139 0.0 0.0 +fr 01_solar 1 140 1.0 0.0 +fr 02_wind_on 1 140 1.0 0.0 +fr 03_wind_off 1 140 1.0 0.0 +fr 04_res 1 140 1.0 0.0 +fr 05_nuclear 1 140 1.0 0.0 +fr 06_coal 1 140 1.0 0.0 +fr 07_gas 1 140 1.0 0.0 +fr 08_non-res 1 140 0.0 0.0 +fr 09_hydro_pump 1 140 0.0 0.0 +fr 01_solar 1 141 1.0 0.0 +fr 02_wind_on 1 141 1.0 0.0 +fr 03_wind_off 1 141 1.0 0.0 +fr 04_res 1 141 1.0 0.0 +fr 05_nuclear 1 141 1.0 0.0 +fr 06_coal 1 141 1.0 0.0 +fr 07_gas 1 141 1.0 0.0 +fr 08_non-res 1 141 0.0 0.0 +fr 09_hydro_pump 1 141 0.0 0.0 +fr 01_solar 1 142 1.0 0.0 +fr 02_wind_on 1 142 1.0 0.0 +fr 03_wind_off 1 142 1.0 0.0 +fr 04_res 1 142 1.0 0.0 +fr 05_nuclear 1 142 1.0 0.0 +fr 06_coal 1 142 1.0 0.0 +fr 07_gas 1 142 1.0 0.0 +fr 08_non-res 1 142 1.0 0.0 +fr 09_hydro_pump 1 142 0.0 0.0 +fr 01_solar 1 143 1.0 0.0 +fr 02_wind_on 1 143 1.0 0.0 +fr 03_wind_off 1 143 1.0 0.0 +fr 04_res 1 143 1.0 0.0 +fr 05_nuclear 1 143 1.0 0.0 +fr 06_coal 1 143 1.0 0.0 +fr 07_gas 1 143 1.0 0.0 +fr 08_non-res 1 143 1.0 0.0 +fr 09_hydro_pump 1 143 0.0 0.0 +fr 01_solar 1 144 1.0 0.0 +fr 02_wind_on 1 144 1.0 0.0 +fr 03_wind_off 1 144 1.0 0.0 +fr 04_res 1 144 1.0 0.0 +fr 05_nuclear 1 144 1.0 0.0 +fr 06_coal 1 144 1.0 0.0 +fr 07_gas 1 144 1.0 0.0 +fr 08_non-res 1 144 1.0 0.0 +fr 09_hydro_pump 1 144 0.0 0.0 +fr 01_solar 1 145 1.0 0.0 +fr 02_wind_on 1 145 1.0 0.0 +fr 03_wind_off 1 145 1.0 0.0 +fr 04_res 1 145 1.0 0.0 +fr 05_nuclear 1 145 1.0 0.0 +fr 06_coal 1 145 1.0 0.0 +fr 07_gas 1 145 1.0 0.0 +fr 08_non-res 1 145 1.0 0.0 +fr 09_hydro_pump 1 145 0.0 0.0 +fr 01_solar 1 146 1.0 0.0 +fr 02_wind_on 1 146 1.0 0.0 +fr 03_wind_off 1 146 1.0 0.0 +fr 04_res 1 146 1.0 0.0 +fr 05_nuclear 1 146 1.0 0.0 +fr 06_coal 1 146 1.0 0.0 +fr 07_gas 1 146 1.0 0.0 +fr 08_non-res 1 146 1.0 0.0 +fr 09_hydro_pump 1 146 0.0 0.0 +fr 01_solar 1 147 1.0 0.0 +fr 02_wind_on 1 147 1.0 0.0 +fr 03_wind_off 1 147 1.0 0.0 +fr 04_res 1 147 1.0 0.0 +fr 05_nuclear 1 147 1.0 0.0 +fr 06_coal 1 147 1.0 0.0 +fr 07_gas 1 147 1.0 0.0 +fr 08_non-res 1 147 1.0 0.0 +fr 09_hydro_pump 1 147 0.0 0.0 +fr 01_solar 1 148 1.0 0.0 +fr 02_wind_on 1 148 1.0 0.0 +fr 03_wind_off 1 148 1.0 0.0 +fr 04_res 1 148 1.0 0.0 +fr 05_nuclear 1 148 1.0 0.0 +fr 06_coal 1 148 1.0 0.0 +fr 07_gas 1 148 1.0 0.0 +fr 08_non-res 1 148 1.0 0.0 +fr 09_hydro_pump 1 148 0.0 0.0 +fr 01_solar 1 149 1.0 0.0 +fr 02_wind_on 1 149 1.0 0.0 +fr 03_wind_off 1 149 1.0 0.0 +fr 04_res 1 149 1.0 0.0 +fr 05_nuclear 1 149 1.0 0.0 +fr 06_coal 1 149 1.0 0.0 +fr 07_gas 1 149 1.0 0.0 +fr 08_non-res 1 149 1.0 0.0 +fr 09_hydro_pump 1 149 0.0 0.0 +fr 01_solar 1 150 1.0 0.0 +fr 02_wind_on 1 150 1.0 0.0 +fr 03_wind_off 1 150 1.0 0.0 +fr 04_res 1 150 1.0 0.0 +fr 05_nuclear 1 150 1.0 0.0 +fr 06_coal 1 150 1.0 0.0 +fr 07_gas 1 150 1.0 0.0 +fr 08_non-res 1 150 1.0 0.0 +fr 09_hydro_pump 1 150 0.0 0.0 +fr 01_solar 1 151 1.0 0.0 +fr 02_wind_on 1 151 1.0 0.0 +fr 03_wind_off 1 151 1.0 0.0 +fr 04_res 1 151 1.0 0.0 +fr 05_nuclear 1 151 1.0 0.0 +fr 06_coal 1 151 1.0 0.0 +fr 07_gas 1 151 1.0 0.0 +fr 08_non-res 1 151 1.0 0.0 +fr 09_hydro_pump 1 151 0.0 0.0 +fr 01_solar 1 152 1.0 0.0 +fr 02_wind_on 1 152 1.0 0.0 +fr 03_wind_off 1 152 1.0 0.0 +fr 04_res 1 152 1.0 0.0 +fr 05_nuclear 1 152 1.0 0.0 +fr 06_coal 1 152 1.0 0.0 +fr 07_gas 1 152 1.0 0.0 +fr 08_non-res 1 152 1.0 0.0 +fr 09_hydro_pump 1 152 0.0 0.0 +fr 01_solar 1 153 1.0 0.0 +fr 02_wind_on 1 153 1.0 0.0 +fr 03_wind_off 1 153 1.0 0.0 +fr 04_res 1 153 1.0 0.0 +fr 05_nuclear 1 153 1.0 0.0 +fr 06_coal 1 153 1.0 0.0 +fr 07_gas 1 153 1.0 0.0 +fr 08_non-res 1 153 1.0 0.0 +fr 09_hydro_pump 1 153 0.0 0.0 +fr 01_solar 1 154 1.0 0.0 +fr 02_wind_on 1 154 1.0 0.0 +fr 03_wind_off 1 154 1.0 0.0 +fr 04_res 1 154 1.0 0.0 +fr 05_nuclear 1 154 1.0 0.0 +fr 06_coal 1 154 1.0 0.0 +fr 07_gas 1 154 1.0 0.0 +fr 08_non-res 1 154 1.0 0.0 +fr 09_hydro_pump 1 154 0.0 0.0 +fr 01_solar 1 155 1.0 0.0 +fr 02_wind_on 1 155 1.0 0.0 +fr 03_wind_off 1 155 1.0 0.0 +fr 04_res 1 155 1.0 0.0 +fr 05_nuclear 1 155 1.0 0.0 +fr 06_coal 1 155 1.0 0.0 +fr 07_gas 1 155 1.0 0.0 +fr 08_non-res 1 155 1.0 0.0 +fr 09_hydro_pump 1 155 0.0 0.0 +fr 01_solar 1 156 1.0 0.0 +fr 02_wind_on 1 156 1.0 0.0 +fr 03_wind_off 1 156 1.0 0.0 +fr 04_res 1 156 1.0 0.0 +fr 05_nuclear 1 156 1.0 0.0 +fr 06_coal 1 156 1.0 0.0 +fr 07_gas 1 156 1.0 0.0 +fr 08_non-res 1 156 1.0 0.0 +fr 09_hydro_pump 1 156 0.0 0.0 +fr 01_solar 1 157 1.0 0.0 +fr 02_wind_on 1 157 1.0 0.0 +fr 03_wind_off 1 157 1.0 0.0 +fr 04_res 1 157 1.0 0.0 +fr 05_nuclear 1 157 1.0 0.0 +fr 06_coal 1 157 1.0 0.0 +fr 07_gas 1 157 1.0 0.0 +fr 08_non-res 1 157 1.0 0.0 +fr 09_hydro_pump 1 157 0.0 0.0 +fr 01_solar 1 158 1.0 0.0 +fr 02_wind_on 1 158 1.0 0.0 +fr 03_wind_off 1 158 1.0 0.0 +fr 04_res 1 158 1.0 0.0 +fr 05_nuclear 1 158 1.0 0.0 +fr 06_coal 1 158 1.0 0.0 +fr 07_gas 1 158 1.0 0.0 +fr 08_non-res 1 158 1.0 0.0 +fr 09_hydro_pump 1 158 0.0 0.0 +fr 01_solar 1 159 1.0 0.0 +fr 02_wind_on 1 159 1.0 0.0 +fr 03_wind_off 1 159 1.0 0.0 +fr 04_res 1 159 1.0 0.0 +fr 05_nuclear 1 159 1.0 0.0 +fr 06_coal 1 159 1.0 0.0 +fr 07_gas 1 159 1.0 0.0 +fr 08_non-res 1 159 1.0 0.0 +fr 09_hydro_pump 1 159 0.0 0.0 +fr 01_solar 1 160 1.0 0.0 +fr 02_wind_on 1 160 1.0 0.0 +fr 03_wind_off 1 160 1.0 0.0 +fr 04_res 1 160 1.0 0.0 +fr 05_nuclear 1 160 1.0 0.0 +fr 06_coal 1 160 1.0 0.0 +fr 07_gas 1 160 1.0 0.0 +fr 08_non-res 1 160 1.0 0.0 +fr 09_hydro_pump 1 160 0.0 0.0 +fr 01_solar 1 161 1.0 0.0 +fr 02_wind_on 1 161 1.0 0.0 +fr 03_wind_off 1 161 1.0 0.0 +fr 04_res 1 161 1.0 0.0 +fr 05_nuclear 1 161 1.0 0.0 +fr 06_coal 1 161 1.0 0.0 +fr 07_gas 1 161 1.0 0.0 +fr 08_non-res 1 161 1.0 0.0 +fr 09_hydro_pump 1 161 0.0 0.0 +fr 01_solar 1 162 1.0 0.0 +fr 02_wind_on 1 162 1.0 0.0 +fr 03_wind_off 1 162 1.0 0.0 +fr 04_res 1 162 1.0 0.0 +fr 05_nuclear 1 162 1.0 0.0 +fr 06_coal 1 162 1.0 0.0 +fr 07_gas 1 162 1.0 0.0 +fr 08_non-res 1 162 1.0 0.0 +fr 09_hydro_pump 1 162 1.0 0.0 +fr 01_solar 1 163 1.0 0.0 +fr 02_wind_on 1 163 1.0 0.0 +fr 03_wind_off 1 163 1.0 0.0 +fr 04_res 1 163 1.0 0.0 +fr 05_nuclear 1 163 1.0 0.0 +fr 06_coal 1 163 1.0 0.0 +fr 07_gas 1 163 1.0 0.0 +fr 08_non-res 1 163 1.0 0.0 +fr 09_hydro_pump 1 163 1.0 0.0 +fr 01_solar 1 164 1.0 0.0 +fr 02_wind_on 1 164 1.0 0.0 +fr 03_wind_off 1 164 1.0 0.0 +fr 04_res 1 164 1.0 0.0 +fr 05_nuclear 1 164 1.0 0.0 +fr 06_coal 1 164 1.0 0.0 +fr 07_gas 1 164 1.0 0.0 +fr 08_non-res 1 164 1.0 0.0 +fr 09_hydro_pump 1 164 1.0 0.0 +fr 01_solar 1 165 1.0 0.0 +fr 02_wind_on 1 165 1.0 0.0 +fr 03_wind_off 1 165 1.0 0.0 +fr 04_res 1 165 1.0 0.0 +fr 05_nuclear 1 165 1.0 0.0 +fr 06_coal 1 165 1.0 0.0 +fr 07_gas 1 165 1.0 0.0 +fr 08_non-res 1 165 1.0 0.0 +fr 09_hydro_pump 1 165 1.0 0.0 +fr 01_solar 1 166 1.0 0.0 +fr 02_wind_on 1 166 1.0 0.0 +fr 03_wind_off 1 166 1.0 0.0 +fr 04_res 1 166 1.0 0.0 +fr 05_nuclear 1 166 1.0 0.0 +fr 06_coal 1 166 1.0 0.0 +fr 07_gas 1 166 1.0 0.0 +fr 08_non-res 1 166 1.0 0.0 +fr 09_hydro_pump 1 166 1.0 0.0 +fr 01_solar 1 167 1.0 0.0 +fr 02_wind_on 1 167 1.0 0.0 +fr 03_wind_off 1 167 1.0 0.0 +fr 04_res 1 167 1.0 0.0 +fr 05_nuclear 1 167 1.0 0.0 +fr 06_coal 1 167 1.0 0.0 +fr 07_gas 1 167 1.0 0.0 +fr 08_non-res 1 167 1.0 0.0 +fr 09_hydro_pump 1 167 1.0 0.0 +fr 01_solar 1 168 1.0 0.0 +fr 02_wind_on 1 168 1.0 0.0 +fr 03_wind_off 1 168 1.0 0.0 +fr 04_res 1 168 1.0 0.0 +fr 05_nuclear 1 168 1.0 0.0 +fr 06_coal 1 168 1.0 0.0 +fr 07_gas 1 168 1.0 0.0 +fr 08_non-res 1 168 1.0 0.0 +fr 09_hydro_pump 1 168 1.0 0.0 +fr 01_solar 1 169 0.0 0.0 +fr 02_wind_on 1 169 0.0 0.0 +fr 03_wind_off 1 169 0.0 0.0 +fr 04_res 1 169 0.0 0.0 +fr 05_nuclear 1 169 0.0 0.0 +fr 06_coal 1 169 0.0 0.0 +fr 07_gas 1 169 0.0 0.0 +fr 08_non-res 1 169 0.0 0.0 +fr 09_hydro_pump 1 169 0.0 0.0 +fr 01_solar 1 170 1.0 0.0 +fr 02_wind_on 1 170 0.0 0.0 +fr 03_wind_off 1 170 0.0 0.0 +fr 04_res 1 170 0.0 0.0 +fr 05_nuclear 1 170 0.0 0.0 +fr 06_coal 1 170 0.0 0.0 +fr 07_gas 1 170 0.0 0.0 +fr 08_non-res 1 170 0.0 0.0 +fr 09_hydro_pump 1 170 0.0 0.0 +fr 01_solar 1 171 1.0 0.0 +fr 02_wind_on 1 171 0.0 0.0 +fr 03_wind_off 1 171 0.0 0.0 +fr 04_res 1 171 0.0 0.0 +fr 05_nuclear 1 171 0.0 0.0 +fr 06_coal 1 171 0.0 0.0 +fr 07_gas 1 171 0.0 0.0 +fr 08_non-res 1 171 0.0 0.0 +fr 09_hydro_pump 1 171 0.0 0.0 +fr 01_solar 1 172 1.0 0.0 +fr 02_wind_on 1 172 0.0 0.0 +fr 03_wind_off 1 172 0.0 0.0 +fr 04_res 1 172 0.0 0.0 +fr 05_nuclear 1 172 0.0 0.0 +fr 06_coal 1 172 0.0 0.0 +fr 07_gas 1 172 0.0 0.0 +fr 08_non-res 1 172 0.0 0.0 +fr 09_hydro_pump 1 172 0.0 0.0 +fr 01_solar 1 173 1.0 0.0 +fr 02_wind_on 1 173 0.0 0.0 +fr 03_wind_off 1 173 0.0 0.0 +fr 04_res 1 173 0.0 0.0 +fr 05_nuclear 1 173 0.0 0.0 +fr 06_coal 1 173 0.0 0.0 +fr 07_gas 1 173 0.0 0.0 +fr 08_non-res 1 173 0.0 0.0 +fr 09_hydro_pump 1 173 0.0 0.0 +fr 01_solar 1 174 1.0 0.0 +fr 02_wind_on 1 174 0.0 0.0 +fr 03_wind_off 1 174 0.0 0.0 +fr 04_res 1 174 0.0 0.0 +fr 05_nuclear 1 174 0.0 0.0 +fr 06_coal 1 174 0.0 0.0 +fr 07_gas 1 174 0.0 0.0 +fr 08_non-res 1 174 0.0 0.0 +fr 09_hydro_pump 1 174 0.0 0.0 +fr 01_solar 1 175 1.0 0.0 +fr 02_wind_on 1 175 0.0 0.0 +fr 03_wind_off 1 175 0.0 0.0 +fr 04_res 1 175 0.0 0.0 +fr 05_nuclear 1 175 0.0 0.0 +fr 06_coal 1 175 0.0 0.0 +fr 07_gas 1 175 0.0 0.0 +fr 08_non-res 1 175 0.0 0.0 +fr 09_hydro_pump 1 175 0.0 0.0 +fr 01_solar 1 176 1.0 0.0 +fr 02_wind_on 1 176 0.0 0.0 +fr 03_wind_off 1 176 0.0 0.0 +fr 04_res 1 176 0.0 0.0 +fr 05_nuclear 1 176 0.0 0.0 +fr 06_coal 1 176 0.0 0.0 +fr 07_gas 1 176 0.0 0.0 +fr 08_non-res 1 176 0.0 0.0 +fr 09_hydro_pump 1 176 0.0 0.0 +fr 01_solar 1 177 1.0 0.0 +fr 02_wind_on 1 177 0.0 0.0 +fr 03_wind_off 1 177 0.0 0.0 +fr 04_res 1 177 0.0 0.0 +fr 05_nuclear 1 177 0.0 0.0 +fr 06_coal 1 177 0.0 0.0 +fr 07_gas 1 177 0.0 0.0 +fr 08_non-res 1 177 0.0 0.0 +fr 09_hydro_pump 1 177 0.0 0.0 +fr 01_solar 1 178 1.0 0.0 +fr 02_wind_on 1 178 0.0 0.0 +fr 03_wind_off 1 178 0.0 0.0 +fr 04_res 1 178 0.0 0.0 +fr 05_nuclear 1 178 0.0 0.0 +fr 06_coal 1 178 0.0 0.0 +fr 07_gas 1 178 0.0 0.0 +fr 08_non-res 1 178 0.0 0.0 +fr 09_hydro_pump 1 178 0.0 0.0 +fr 01_solar 1 179 1.0 0.0 +fr 02_wind_on 1 179 0.0 0.0 +fr 03_wind_off 1 179 0.0 0.0 +fr 04_res 1 179 0.0 0.0 +fr 05_nuclear 1 179 0.0 0.0 +fr 06_coal 1 179 0.0 0.0 +fr 07_gas 1 179 0.0 0.0 +fr 08_non-res 1 179 0.0 0.0 +fr 09_hydro_pump 1 179 0.0 0.0 +fr 01_solar 1 180 1.0 0.0 +fr 02_wind_on 1 180 0.0 0.0 +fr 03_wind_off 1 180 0.0 0.0 +fr 04_res 1 180 0.0 0.0 +fr 05_nuclear 1 180 0.0 0.0 +fr 06_coal 1 180 0.0 0.0 +fr 07_gas 1 180 0.0 0.0 +fr 08_non-res 1 180 0.0 0.0 +fr 09_hydro_pump 1 180 0.0 0.0 +fr 01_solar 1 181 1.0 0.0 +fr 02_wind_on 1 181 0.0 0.0 +fr 03_wind_off 1 181 0.0 0.0 +fr 04_res 1 181 0.0 0.0 +fr 05_nuclear 1 181 0.0 0.0 +fr 06_coal 1 181 0.0 0.0 +fr 07_gas 1 181 0.0 0.0 +fr 08_non-res 1 181 0.0 0.0 +fr 09_hydro_pump 1 181 0.0 0.0 +fr 01_solar 1 182 1.0 0.0 +fr 02_wind_on 1 182 0.0 0.0 +fr 03_wind_off 1 182 0.0 0.0 +fr 04_res 1 182 0.0 0.0 +fr 05_nuclear 1 182 0.0 0.0 +fr 06_coal 1 182 0.0 0.0 +fr 07_gas 1 182 0.0 0.0 +fr 08_non-res 1 182 0.0 0.0 +fr 09_hydro_pump 1 182 0.0 0.0 +fr 01_solar 1 183 1.0 0.0 +fr 02_wind_on 1 183 0.0 0.0 +fr 03_wind_off 1 183 0.0 0.0 +fr 04_res 1 183 0.0 0.0 +fr 05_nuclear 1 183 0.0 0.0 +fr 06_coal 1 183 0.0 0.0 +fr 07_gas 1 183 0.0 0.0 +fr 08_non-res 1 183 0.0 0.0 +fr 09_hydro_pump 1 183 0.0 0.0 +fr 01_solar 1 184 1.0 0.0 +fr 02_wind_on 1 184 0.0 0.0 +fr 03_wind_off 1 184 0.0 0.0 +fr 04_res 1 184 0.0 0.0 +fr 05_nuclear 1 184 0.0 0.0 +fr 06_coal 1 184 0.0 0.0 +fr 07_gas 1 184 0.0 0.0 +fr 08_non-res 1 184 0.0 0.0 +fr 09_hydro_pump 1 184 0.0 0.0 +fr 01_solar 1 185 1.0 0.0 +fr 02_wind_on 1 185 0.0 0.0 +fr 03_wind_off 1 185 0.0 0.0 +fr 04_res 1 185 0.0 0.0 +fr 05_nuclear 1 185 0.0 0.0 +fr 06_coal 1 185 0.0 0.0 +fr 07_gas 1 185 0.0 0.0 +fr 08_non-res 1 185 0.0 0.0 +fr 09_hydro_pump 1 185 0.0 0.0 +fr 01_solar 1 186 1.0 0.0 +fr 02_wind_on 1 186 0.0 0.0 +fr 03_wind_off 1 186 0.0 0.0 +fr 04_res 1 186 0.0 0.0 +fr 05_nuclear 1 186 0.0 0.0 +fr 06_coal 1 186 0.0 0.0 +fr 07_gas 1 186 0.0 0.0 +fr 08_non-res 1 186 0.0 0.0 +fr 09_hydro_pump 1 186 0.0 0.0 +fr 01_solar 1 187 1.0 0.0 +fr 02_wind_on 1 187 0.0 0.0 +fr 03_wind_off 1 187 0.0 0.0 +fr 04_res 1 187 0.0 0.0 +fr 05_nuclear 1 187 0.0 0.0 +fr 06_coal 1 187 0.0 0.0 +fr 07_gas 1 187 0.0 0.0 +fr 08_non-res 1 187 0.0 0.0 +fr 09_hydro_pump 1 187 0.0 0.0 +fr 01_solar 1 188 1.0 0.0 +fr 02_wind_on 1 188 0.0 0.0 +fr 03_wind_off 1 188 0.0 0.0 +fr 04_res 1 188 0.0 0.0 +fr 05_nuclear 1 188 0.0 0.0 +fr 06_coal 1 188 0.0 0.0 +fr 07_gas 1 188 0.0 0.0 +fr 08_non-res 1 188 0.0 0.0 +fr 09_hydro_pump 1 188 0.0 0.0 +fr 01_solar 1 189 1.0 0.0 +fr 02_wind_on 1 189 0.0 0.0 +fr 03_wind_off 1 189 0.0 0.0 +fr 04_res 1 189 0.0 0.0 +fr 05_nuclear 1 189 0.0 0.0 +fr 06_coal 1 189 0.0 0.0 +fr 07_gas 1 189 0.0 0.0 +fr 08_non-res 1 189 0.0 0.0 +fr 09_hydro_pump 1 189 0.0 0.0 +fr 01_solar 1 190 1.0 0.0 +fr 02_wind_on 1 190 1.0 0.0 +fr 03_wind_off 1 190 0.0 0.0 +fr 04_res 1 190 0.0 0.0 +fr 05_nuclear 1 190 0.0 0.0 +fr 06_coal 1 190 0.0 0.0 +fr 07_gas 1 190 0.0 0.0 +fr 08_non-res 1 190 0.0 0.0 +fr 09_hydro_pump 1 190 0.0 0.0 +fr 01_solar 1 191 1.0 0.0 +fr 02_wind_on 1 191 1.0 0.0 +fr 03_wind_off 1 191 0.0 0.0 +fr 04_res 1 191 0.0 0.0 +fr 05_nuclear 1 191 0.0 0.0 +fr 06_coal 1 191 0.0 0.0 +fr 07_gas 1 191 0.0 0.0 +fr 08_non-res 1 191 0.0 0.0 +fr 09_hydro_pump 1 191 0.0 0.0 +fr 01_solar 1 192 1.0 0.0 +fr 02_wind_on 1 192 1.0 0.0 +fr 03_wind_off 1 192 0.0 0.0 +fr 04_res 1 192 0.0 0.0 +fr 05_nuclear 1 192 0.0 0.0 +fr 06_coal 1 192 0.0 0.0 +fr 07_gas 1 192 0.0 0.0 +fr 08_non-res 1 192 0.0 0.0 +fr 09_hydro_pump 1 192 0.0 0.0 +fr 01_solar 1 193 1.0 0.0 +fr 02_wind_on 1 193 1.0 0.0 +fr 03_wind_off 1 193 0.0 0.0 +fr 04_res 1 193 0.0 0.0 +fr 05_nuclear 1 193 0.0 0.0 +fr 06_coal 1 193 0.0 0.0 +fr 07_gas 1 193 0.0 0.0 +fr 08_non-res 1 193 0.0 0.0 +fr 09_hydro_pump 1 193 0.0 0.0 +fr 01_solar 1 194 1.0 0.0 +fr 02_wind_on 1 194 1.0 0.0 +fr 03_wind_off 1 194 0.0 0.0 +fr 04_res 1 194 0.0 0.0 +fr 05_nuclear 1 194 0.0 0.0 +fr 06_coal 1 194 0.0 0.0 +fr 07_gas 1 194 0.0 0.0 +fr 08_non-res 1 194 0.0 0.0 +fr 09_hydro_pump 1 194 0.0 0.0 +fr 01_solar 1 195 1.0 0.0 +fr 02_wind_on 1 195 1.0 0.0 +fr 03_wind_off 1 195 0.0 0.0 +fr 04_res 1 195 0.0 0.0 +fr 05_nuclear 1 195 0.0 0.0 +fr 06_coal 1 195 0.0 0.0 +fr 07_gas 1 195 0.0 0.0 +fr 08_non-res 1 195 0.0 0.0 +fr 09_hydro_pump 1 195 0.0 0.0 +fr 01_solar 1 196 1.0 0.0 +fr 02_wind_on 1 196 1.0 0.0 +fr 03_wind_off 1 196 0.0 0.0 +fr 04_res 1 196 0.0 0.0 +fr 05_nuclear 1 196 0.0 0.0 +fr 06_coal 1 196 0.0 0.0 +fr 07_gas 1 196 0.0 0.0 +fr 08_non-res 1 196 0.0 0.0 +fr 09_hydro_pump 1 196 0.0 0.0 +fr 01_solar 1 197 1.0 0.0 +fr 02_wind_on 1 197 1.0 0.0 +fr 03_wind_off 1 197 0.0 0.0 +fr 04_res 1 197 0.0 0.0 +fr 05_nuclear 1 197 0.0 0.0 +fr 06_coal 1 197 0.0 0.0 +fr 07_gas 1 197 0.0 0.0 +fr 08_non-res 1 197 0.0 0.0 +fr 09_hydro_pump 1 197 0.0 0.0 +fr 01_solar 1 198 1.0 0.0 +fr 02_wind_on 1 198 1.0 0.0 +fr 03_wind_off 1 198 0.0 0.0 +fr 04_res 1 198 0.0 0.0 +fr 05_nuclear 1 198 0.0 0.0 +fr 06_coal 1 198 0.0 0.0 +fr 07_gas 1 198 0.0 0.0 +fr 08_non-res 1 198 0.0 0.0 +fr 09_hydro_pump 1 198 0.0 0.0 +fr 01_solar 1 199 1.0 0.0 +fr 02_wind_on 1 199 1.0 0.0 +fr 03_wind_off 1 199 0.0 0.0 +fr 04_res 1 199 0.0 0.0 +fr 05_nuclear 1 199 0.0 0.0 +fr 06_coal 1 199 0.0 0.0 +fr 07_gas 1 199 0.0 0.0 +fr 08_non-res 1 199 0.0 0.0 +fr 09_hydro_pump 1 199 0.0 0.0 +fr 01_solar 1 200 1.0 0.0 +fr 02_wind_on 1 200 1.0 0.0 +fr 03_wind_off 1 200 0.0 0.0 +fr 04_res 1 200 0.0 0.0 +fr 05_nuclear 1 200 0.0 0.0 +fr 06_coal 1 200 0.0 0.0 +fr 07_gas 1 200 0.0 0.0 +fr 08_non-res 1 200 0.0 0.0 +fr 09_hydro_pump 1 200 0.0 0.0 +fr 01_solar 1 201 1.0 0.0 +fr 02_wind_on 1 201 1.0 0.0 +fr 03_wind_off 1 201 0.0 0.0 +fr 04_res 1 201 0.0 0.0 +fr 05_nuclear 1 201 0.0 0.0 +fr 06_coal 1 201 0.0 0.0 +fr 07_gas 1 201 0.0 0.0 +fr 08_non-res 1 201 0.0 0.0 +fr 09_hydro_pump 1 201 0.0 0.0 +fr 01_solar 1 202 1.0 0.0 +fr 02_wind_on 1 202 1.0 0.0 +fr 03_wind_off 1 202 0.0 0.0 +fr 04_res 1 202 0.0 0.0 +fr 05_nuclear 1 202 0.0 0.0 +fr 06_coal 1 202 0.0 0.0 +fr 07_gas 1 202 0.0 0.0 +fr 08_non-res 1 202 0.0 0.0 +fr 09_hydro_pump 1 202 0.0 0.0 +fr 01_solar 1 203 1.0 0.0 +fr 02_wind_on 1 203 1.0 0.0 +fr 03_wind_off 1 203 0.0 0.0 +fr 04_res 1 203 0.0 0.0 +fr 05_nuclear 1 203 0.0 0.0 +fr 06_coal 1 203 0.0 0.0 +fr 07_gas 1 203 0.0 0.0 +fr 08_non-res 1 203 0.0 0.0 +fr 09_hydro_pump 1 203 0.0 0.0 +fr 01_solar 1 204 1.0 0.0 +fr 02_wind_on 1 204 1.0 0.0 +fr 03_wind_off 1 204 0.0 0.0 +fr 04_res 1 204 0.0 0.0 +fr 05_nuclear 1 204 0.0 0.0 +fr 06_coal 1 204 0.0 0.0 +fr 07_gas 1 204 0.0 0.0 +fr 08_non-res 1 204 0.0 0.0 +fr 09_hydro_pump 1 204 0.0 0.0 +fr 01_solar 1 205 1.0 0.0 +fr 02_wind_on 1 205 1.0 0.0 +fr 03_wind_off 1 205 0.0 0.0 +fr 04_res 1 205 0.0 0.0 +fr 05_nuclear 1 205 0.0 0.0 +fr 06_coal 1 205 0.0 0.0 +fr 07_gas 1 205 0.0 0.0 +fr 08_non-res 1 205 0.0 0.0 +fr 09_hydro_pump 1 205 0.0 0.0 +fr 01_solar 1 206 1.0 0.0 +fr 02_wind_on 1 206 1.0 0.0 +fr 03_wind_off 1 206 0.0 0.0 +fr 04_res 1 206 0.0 0.0 +fr 05_nuclear 1 206 0.0 0.0 +fr 06_coal 1 206 0.0 0.0 +fr 07_gas 1 206 0.0 0.0 +fr 08_non-res 1 206 0.0 0.0 +fr 09_hydro_pump 1 206 0.0 0.0 +fr 01_solar 1 207 1.0 0.0 +fr 02_wind_on 1 207 1.0 0.0 +fr 03_wind_off 1 207 0.0 0.0 +fr 04_res 1 207 0.0 0.0 +fr 05_nuclear 1 207 0.0 0.0 +fr 06_coal 1 207 0.0 0.0 +fr 07_gas 1 207 0.0 0.0 +fr 08_non-res 1 207 0.0 0.0 +fr 09_hydro_pump 1 207 0.0 0.0 +fr 01_solar 1 208 1.0 0.0 +fr 02_wind_on 1 208 1.0 0.0 +fr 03_wind_off 1 208 0.0 0.0 +fr 04_res 1 208 0.0 0.0 +fr 05_nuclear 1 208 0.0 0.0 +fr 06_coal 1 208 0.0 0.0 +fr 07_gas 1 208 0.0 0.0 +fr 08_non-res 1 208 0.0 0.0 +fr 09_hydro_pump 1 208 0.0 0.0 +fr 01_solar 1 209 1.0 0.0 +fr 02_wind_on 1 209 1.0 0.0 +fr 03_wind_off 1 209 0.0 0.0 +fr 04_res 1 209 0.0 0.0 +fr 05_nuclear 1 209 0.0 0.0 +fr 06_coal 1 209 0.0 0.0 +fr 07_gas 1 209 0.0 0.0 +fr 08_non-res 1 209 0.0 0.0 +fr 09_hydro_pump 1 209 0.0 0.0 +fr 01_solar 1 210 1.0 0.0 +fr 02_wind_on 1 210 1.0 0.0 +fr 03_wind_off 1 210 1.0 0.0 +fr 04_res 1 210 0.0 0.0 +fr 05_nuclear 1 210 0.0 0.0 +fr 06_coal 1 210 0.0 0.0 +fr 07_gas 1 210 0.0 0.0 +fr 08_non-res 1 210 0.0 0.0 +fr 09_hydro_pump 1 210 0.0 0.0 +fr 01_solar 1 211 1.0 0.0 +fr 02_wind_on 1 211 1.0 0.0 +fr 03_wind_off 1 211 1.0 0.0 +fr 04_res 1 211 0.0 0.0 +fr 05_nuclear 1 211 0.0 0.0 +fr 06_coal 1 211 0.0 0.0 +fr 07_gas 1 211 0.0 0.0 +fr 08_non-res 1 211 0.0 0.0 +fr 09_hydro_pump 1 211 0.0 0.0 +fr 01_solar 1 212 1.0 0.0 +fr 02_wind_on 1 212 1.0 0.0 +fr 03_wind_off 1 212 1.0 0.0 +fr 04_res 1 212 0.0 0.0 +fr 05_nuclear 1 212 0.0 0.0 +fr 06_coal 1 212 0.0 0.0 +fr 07_gas 1 212 0.0 0.0 +fr 08_non-res 1 212 0.0 0.0 +fr 09_hydro_pump 1 212 0.0 0.0 +fr 01_solar 1 213 1.0 0.0 +fr 02_wind_on 1 213 1.0 0.0 +fr 03_wind_off 1 213 1.0 0.0 +fr 04_res 1 213 0.0 0.0 +fr 05_nuclear 1 213 0.0 0.0 +fr 06_coal 1 213 0.0 0.0 +fr 07_gas 1 213 0.0 0.0 +fr 08_non-res 1 213 0.0 0.0 +fr 09_hydro_pump 1 213 0.0 0.0 +fr 01_solar 1 214 1.0 0.0 +fr 02_wind_on 1 214 1.0 0.0 +fr 03_wind_off 1 214 1.0 0.0 +fr 04_res 1 214 0.0 0.0 +fr 05_nuclear 1 214 0.0 0.0 +fr 06_coal 1 214 0.0 0.0 +fr 07_gas 1 214 0.0 0.0 +fr 08_non-res 1 214 0.0 0.0 +fr 09_hydro_pump 1 214 0.0 0.0 +fr 01_solar 1 215 1.0 0.0 +fr 02_wind_on 1 215 1.0 0.0 +fr 03_wind_off 1 215 1.0 0.0 +fr 04_res 1 215 0.0 0.0 +fr 05_nuclear 1 215 0.0 0.0 +fr 06_coal 1 215 0.0 0.0 +fr 07_gas 1 215 0.0 0.0 +fr 08_non-res 1 215 0.0 0.0 +fr 09_hydro_pump 1 215 0.0 0.0 +fr 01_solar 1 216 1.0 0.0 +fr 02_wind_on 1 216 1.0 0.0 +fr 03_wind_off 1 216 1.0 0.0 +fr 04_res 1 216 0.0 0.0 +fr 05_nuclear 1 216 0.0 0.0 +fr 06_coal 1 216 0.0 0.0 +fr 07_gas 1 216 0.0 0.0 +fr 08_non-res 1 216 0.0 0.0 +fr 09_hydro_pump 1 216 0.0 0.0 +fr 01_solar 1 217 1.0 0.0 +fr 02_wind_on 1 217 1.0 0.0 +fr 03_wind_off 1 217 1.0 0.0 +fr 04_res 1 217 0.0 0.0 +fr 05_nuclear 1 217 0.0 0.0 +fr 06_coal 1 217 0.0 0.0 +fr 07_gas 1 217 0.0 0.0 +fr 08_non-res 1 217 0.0 0.0 +fr 09_hydro_pump 1 217 0.0 0.0 +fr 01_solar 1 218 1.0 0.0 +fr 02_wind_on 1 218 1.0 0.0 +fr 03_wind_off 1 218 1.0 0.0 +fr 04_res 1 218 0.0 0.0 +fr 05_nuclear 1 218 0.0 0.0 +fr 06_coal 1 218 0.0 0.0 +fr 07_gas 1 218 0.0 0.0 +fr 08_non-res 1 218 0.0 0.0 +fr 09_hydro_pump 1 218 0.0 0.0 +fr 01_solar 1 219 1.0 0.0 +fr 02_wind_on 1 219 1.0 0.0 +fr 03_wind_off 1 219 1.0 0.0 +fr 04_res 1 219 0.0 0.0 +fr 05_nuclear 1 219 0.0 0.0 +fr 06_coal 1 219 0.0 0.0 +fr 07_gas 1 219 0.0 0.0 +fr 08_non-res 1 219 0.0 0.0 +fr 09_hydro_pump 1 219 0.0 0.0 +fr 01_solar 1 220 1.0 0.0 +fr 02_wind_on 1 220 1.0 0.0 +fr 03_wind_off 1 220 1.0 0.0 +fr 04_res 1 220 0.0 0.0 +fr 05_nuclear 1 220 0.0 0.0 +fr 06_coal 1 220 0.0 0.0 +fr 07_gas 1 220 0.0 0.0 +fr 08_non-res 1 220 0.0 0.0 +fr 09_hydro_pump 1 220 0.0 0.0 +fr 01_solar 1 221 1.0 0.0 +fr 02_wind_on 1 221 1.0 0.0 +fr 03_wind_off 1 221 1.0 0.0 +fr 04_res 1 221 0.0 0.0 +fr 05_nuclear 1 221 0.0 0.0 +fr 06_coal 1 221 0.0 0.0 +fr 07_gas 1 221 0.0 0.0 +fr 08_non-res 1 221 0.0 0.0 +fr 09_hydro_pump 1 221 0.0 0.0 +fr 01_solar 1 222 1.0 0.0 +fr 02_wind_on 1 222 1.0 0.0 +fr 03_wind_off 1 222 1.0 0.0 +fr 04_res 1 222 0.0 0.0 +fr 05_nuclear 1 222 0.0 0.0 +fr 06_coal 1 222 0.0 0.0 +fr 07_gas 1 222 0.0 0.0 +fr 08_non-res 1 222 0.0 0.0 +fr 09_hydro_pump 1 222 0.0 0.0 +fr 01_solar 1 223 1.0 0.0 +fr 02_wind_on 1 223 1.0 0.0 +fr 03_wind_off 1 223 1.0 0.0 +fr 04_res 1 223 0.0 0.0 +fr 05_nuclear 1 223 0.0 0.0 +fr 06_coal 1 223 0.0 0.0 +fr 07_gas 1 223 0.0 0.0 +fr 08_non-res 1 223 0.0 0.0 +fr 09_hydro_pump 1 223 0.0 0.0 +fr 01_solar 1 224 1.0 0.0 +fr 02_wind_on 1 224 1.0 0.0 +fr 03_wind_off 1 224 1.0 0.0 +fr 04_res 1 224 0.0 0.0 +fr 05_nuclear 1 224 0.0 0.0 +fr 06_coal 1 224 0.0 0.0 +fr 07_gas 1 224 0.0 0.0 +fr 08_non-res 1 224 0.0 0.0 +fr 09_hydro_pump 1 224 0.0 0.0 +fr 01_solar 1 225 1.0 0.0 +fr 02_wind_on 1 225 1.0 0.0 +fr 03_wind_off 1 225 1.0 0.0 +fr 04_res 1 225 0.0 0.0 +fr 05_nuclear 1 225 0.0 0.0 +fr 06_coal 1 225 0.0 0.0 +fr 07_gas 1 225 0.0 0.0 +fr 08_non-res 1 225 0.0 0.0 +fr 09_hydro_pump 1 225 0.0 0.0 +fr 01_solar 1 226 1.0 0.0 +fr 02_wind_on 1 226 1.0 0.0 +fr 03_wind_off 1 226 1.0 0.0 +fr 04_res 1 226 0.0 0.0 +fr 05_nuclear 1 226 0.0 0.0 +fr 06_coal 1 226 0.0 0.0 +fr 07_gas 1 226 0.0 0.0 +fr 08_non-res 1 226 0.0 0.0 +fr 09_hydro_pump 1 226 0.0 0.0 +fr 01_solar 1 227 1.0 0.0 +fr 02_wind_on 1 227 1.0 0.0 +fr 03_wind_off 1 227 1.0 0.0 +fr 04_res 1 227 0.0 0.0 +fr 05_nuclear 1 227 0.0 0.0 +fr 06_coal 1 227 0.0 0.0 +fr 07_gas 1 227 0.0 0.0 +fr 08_non-res 1 227 0.0 0.0 +fr 09_hydro_pump 1 227 0.0 0.0 +fr 01_solar 1 228 1.0 0.0 +fr 02_wind_on 1 228 1.0 0.0 +fr 03_wind_off 1 228 1.0 0.0 +fr 04_res 1 228 0.0 0.0 +fr 05_nuclear 1 228 0.0 0.0 +fr 06_coal 1 228 0.0 0.0 +fr 07_gas 1 228 0.0 0.0 +fr 08_non-res 1 228 0.0 0.0 +fr 09_hydro_pump 1 228 0.0 0.0 +fr 01_solar 1 229 1.0 0.0 +fr 02_wind_on 1 229 1.0 0.0 +fr 03_wind_off 1 229 1.0 0.0 +fr 04_res 1 229 0.0 0.0 +fr 05_nuclear 1 229 0.0 0.0 +fr 06_coal 1 229 0.0 0.0 +fr 07_gas 1 229 0.0 0.0 +fr 08_non-res 1 229 0.0 0.0 +fr 09_hydro_pump 1 229 0.0 0.0 +fr 01_solar 1 230 1.0 0.0 +fr 02_wind_on 1 230 1.0 0.0 +fr 03_wind_off 1 230 1.0 0.0 +fr 04_res 1 230 1.0 0.0 +fr 05_nuclear 1 230 0.0 0.0 +fr 06_coal 1 230 0.0 0.0 +fr 07_gas 1 230 0.0 0.0 +fr 08_non-res 1 230 0.0 0.0 +fr 09_hydro_pump 1 230 0.0 0.0 +fr 01_solar 1 231 1.0 0.0 +fr 02_wind_on 1 231 1.0 0.0 +fr 03_wind_off 1 231 1.0 0.0 +fr 04_res 1 231 1.0 0.0 +fr 05_nuclear 1 231 0.0 0.0 +fr 06_coal 1 231 0.0 0.0 +fr 07_gas 1 231 0.0 0.0 +fr 08_non-res 1 231 0.0 0.0 +fr 09_hydro_pump 1 231 0.0 0.0 +fr 01_solar 1 232 1.0 0.0 +fr 02_wind_on 1 232 1.0 0.0 +fr 03_wind_off 1 232 1.0 0.0 +fr 04_res 1 232 1.0 0.0 +fr 05_nuclear 1 232 0.0 0.0 +fr 06_coal 1 232 0.0 0.0 +fr 07_gas 1 232 0.0 0.0 +fr 08_non-res 1 232 0.0 0.0 +fr 09_hydro_pump 1 232 0.0 0.0 +fr 01_solar 1 233 1.0 0.0 +fr 02_wind_on 1 233 1.0 0.0 +fr 03_wind_off 1 233 1.0 0.0 +fr 04_res 1 233 1.0 0.0 +fr 05_nuclear 1 233 0.0 0.0 +fr 06_coal 1 233 0.0 0.0 +fr 07_gas 1 233 0.0 0.0 +fr 08_non-res 1 233 0.0 0.0 +fr 09_hydro_pump 1 233 0.0 0.0 +fr 01_solar 1 234 1.0 0.0 +fr 02_wind_on 1 234 1.0 0.0 +fr 03_wind_off 1 234 1.0 0.0 +fr 04_res 1 234 1.0 0.0 +fr 05_nuclear 1 234 0.0 0.0 +fr 06_coal 1 234 0.0 0.0 +fr 07_gas 1 234 0.0 0.0 +fr 08_non-res 1 234 0.0 0.0 +fr 09_hydro_pump 1 234 0.0 0.0 +fr 01_solar 1 235 1.0 0.0 +fr 02_wind_on 1 235 1.0 0.0 +fr 03_wind_off 1 235 1.0 0.0 +fr 04_res 1 235 1.0 0.0 +fr 05_nuclear 1 235 0.0 0.0 +fr 06_coal 1 235 0.0 0.0 +fr 07_gas 1 235 0.0 0.0 +fr 08_non-res 1 235 0.0 0.0 +fr 09_hydro_pump 1 235 0.0 0.0 +fr 01_solar 1 236 1.0 0.0 +fr 02_wind_on 1 236 1.0 0.0 +fr 03_wind_off 1 236 1.0 0.0 +fr 04_res 1 236 1.0 0.0 +fr 05_nuclear 1 236 0.0 0.0 +fr 06_coal 1 236 0.0 0.0 +fr 07_gas 1 236 0.0 0.0 +fr 08_non-res 1 236 0.0 0.0 +fr 09_hydro_pump 1 236 0.0 0.0 +fr 01_solar 1 237 1.0 0.0 +fr 02_wind_on 1 237 1.0 0.0 +fr 03_wind_off 1 237 1.0 0.0 +fr 04_res 1 237 1.0 0.0 +fr 05_nuclear 1 237 0.0 0.0 +fr 06_coal 1 237 0.0 0.0 +fr 07_gas 1 237 0.0 0.0 +fr 08_non-res 1 237 0.0 0.0 +fr 09_hydro_pump 1 237 0.0 0.0 +fr 01_solar 1 238 1.0 0.0 +fr 02_wind_on 1 238 1.0 0.0 +fr 03_wind_off 1 238 1.0 0.0 +fr 04_res 1 238 1.0 0.0 +fr 05_nuclear 1 238 0.0 0.0 +fr 06_coal 1 238 0.0 0.0 +fr 07_gas 1 238 0.0 0.0 +fr 08_non-res 1 238 0.0 0.0 +fr 09_hydro_pump 1 238 0.0 0.0 +fr 01_solar 1 239 1.0 0.0 +fr 02_wind_on 1 239 1.0 0.0 +fr 03_wind_off 1 239 1.0 0.0 +fr 04_res 1 239 1.0 0.0 +fr 05_nuclear 1 239 0.0 0.0 +fr 06_coal 1 239 0.0 0.0 +fr 07_gas 1 239 0.0 0.0 +fr 08_non-res 1 239 0.0 0.0 +fr 09_hydro_pump 1 239 0.0 0.0 +fr 01_solar 1 240 1.0 0.0 +fr 02_wind_on 1 240 1.0 0.0 +fr 03_wind_off 1 240 1.0 0.0 +fr 04_res 1 240 1.0 0.0 +fr 05_nuclear 1 240 0.0 0.0 +fr 06_coal 1 240 0.0 0.0 +fr 07_gas 1 240 0.0 0.0 +fr 08_non-res 1 240 0.0 0.0 +fr 09_hydro_pump 1 240 0.0 0.0 +fr 01_solar 1 241 1.0 0.0 +fr 02_wind_on 1 241 1.0 0.0 +fr 03_wind_off 1 241 1.0 0.0 +fr 04_res 1 241 1.0 0.0 +fr 05_nuclear 1 241 0.0 0.0 +fr 06_coal 1 241 0.0 0.0 +fr 07_gas 1 241 0.0 0.0 +fr 08_non-res 1 241 0.0 0.0 +fr 09_hydro_pump 1 241 0.0 0.0 +fr 01_solar 1 242 1.0 0.0 +fr 02_wind_on 1 242 1.0 0.0 +fr 03_wind_off 1 242 1.0 0.0 +fr 04_res 1 242 1.0 0.0 +fr 05_nuclear 1 242 0.0 0.0 +fr 06_coal 1 242 0.0 0.0 +fr 07_gas 1 242 0.0 0.0 +fr 08_non-res 1 242 0.0 0.0 +fr 09_hydro_pump 1 242 0.0 0.0 +fr 01_solar 1 243 1.0 0.0 +fr 02_wind_on 1 243 1.0 0.0 +fr 03_wind_off 1 243 1.0 0.0 +fr 04_res 1 243 1.0 0.0 +fr 05_nuclear 1 243 0.0 0.0 +fr 06_coal 1 243 0.0 0.0 +fr 07_gas 1 243 0.0 0.0 +fr 08_non-res 1 243 0.0 0.0 +fr 09_hydro_pump 1 243 0.0 0.0 +fr 01_solar 1 244 1.0 0.0 +fr 02_wind_on 1 244 1.0 0.0 +fr 03_wind_off 1 244 1.0 0.0 +fr 04_res 1 244 1.0 0.0 +fr 05_nuclear 1 244 0.0 0.0 +fr 06_coal 1 244 0.0 0.0 +fr 07_gas 1 244 0.0 0.0 +fr 08_non-res 1 244 0.0 0.0 +fr 09_hydro_pump 1 244 0.0 0.0 +fr 01_solar 1 245 1.0 0.0 +fr 02_wind_on 1 245 1.0 0.0 +fr 03_wind_off 1 245 1.0 0.0 +fr 04_res 1 245 1.0 0.0 +fr 05_nuclear 1 245 0.0 0.0 +fr 06_coal 1 245 0.0 0.0 +fr 07_gas 1 245 0.0 0.0 +fr 08_non-res 1 245 0.0 0.0 +fr 09_hydro_pump 1 245 0.0 0.0 +fr 01_solar 1 246 1.0 0.0 +fr 02_wind_on 1 246 1.0 0.0 +fr 03_wind_off 1 246 1.0 0.0 +fr 04_res 1 246 1.0 0.0 +fr 05_nuclear 1 246 0.0 0.0 +fr 06_coal 1 246 0.0 0.0 +fr 07_gas 1 246 0.0 0.0 +fr 08_non-res 1 246 0.0 0.0 +fr 09_hydro_pump 1 246 0.0 0.0 +fr 01_solar 1 247 1.0 0.0 +fr 02_wind_on 1 247 1.0 0.0 +fr 03_wind_off 1 247 1.0 0.0 +fr 04_res 1 247 1.0 0.0 +fr 05_nuclear 1 247 0.0 0.0 +fr 06_coal 1 247 0.0 0.0 +fr 07_gas 1 247 0.0 0.0 +fr 08_non-res 1 247 0.0 0.0 +fr 09_hydro_pump 1 247 0.0 0.0 +fr 01_solar 1 248 1.0 0.0 +fr 02_wind_on 1 248 1.0 0.0 +fr 03_wind_off 1 248 1.0 0.0 +fr 04_res 1 248 1.0 0.0 +fr 05_nuclear 1 248 0.0 0.0 +fr 06_coal 1 248 0.0 0.0 +fr 07_gas 1 248 0.0 0.0 +fr 08_non-res 1 248 0.0 0.0 +fr 09_hydro_pump 1 248 0.0 0.0 +fr 01_solar 1 249 1.0 0.0 +fr 02_wind_on 1 249 1.0 0.0 +fr 03_wind_off 1 249 1.0 0.0 +fr 04_res 1 249 1.0 0.0 +fr 05_nuclear 1 249 0.0 0.0 +fr 06_coal 1 249 0.0 0.0 +fr 07_gas 1 249 0.0 0.0 +fr 08_non-res 1 249 0.0 0.0 +fr 09_hydro_pump 1 249 0.0 0.0 +fr 01_solar 1 250 1.0 0.0 +fr 02_wind_on 1 250 1.0 0.0 +fr 03_wind_off 1 250 1.0 0.0 +fr 04_res 1 250 1.0 0.0 +fr 05_nuclear 1 250 1.0 0.0 +fr 06_coal 1 250 0.0 0.0 +fr 07_gas 1 250 0.0 0.0 +fr 08_non-res 1 250 0.0 0.0 +fr 09_hydro_pump 1 250 0.0 0.0 +fr 01_solar 1 251 1.0 0.0 +fr 02_wind_on 1 251 1.0 0.0 +fr 03_wind_off 1 251 1.0 0.0 +fr 04_res 1 251 1.0 0.0 +fr 05_nuclear 1 251 1.0 0.0 +fr 06_coal 1 251 0.0 0.0 +fr 07_gas 1 251 0.0 0.0 +fr 08_non-res 1 251 0.0 0.0 +fr 09_hydro_pump 1 251 0.0 0.0 +fr 01_solar 1 252 1.0 0.0 +fr 02_wind_on 1 252 1.0 0.0 +fr 03_wind_off 1 252 1.0 0.0 +fr 04_res 1 252 1.0 0.0 +fr 05_nuclear 1 252 1.0 0.0 +fr 06_coal 1 252 0.0 0.0 +fr 07_gas 1 252 0.0 0.0 +fr 08_non-res 1 252 0.0 0.0 +fr 09_hydro_pump 1 252 0.0 0.0 +fr 01_solar 1 253 1.0 0.0 +fr 02_wind_on 1 253 1.0 0.0 +fr 03_wind_off 1 253 1.0 0.0 +fr 04_res 1 253 1.0 0.0 +fr 05_nuclear 1 253 1.0 0.0 +fr 06_coal 1 253 0.0 0.0 +fr 07_gas 1 253 0.0 0.0 +fr 08_non-res 1 253 0.0 0.0 +fr 09_hydro_pump 1 253 0.0 0.0 +fr 01_solar 1 254 1.0 0.0 +fr 02_wind_on 1 254 1.0 0.0 +fr 03_wind_off 1 254 1.0 0.0 +fr 04_res 1 254 1.0 0.0 +fr 05_nuclear 1 254 1.0 0.0 +fr 06_coal 1 254 0.0 0.0 +fr 07_gas 1 254 0.0 0.0 +fr 08_non-res 1 254 0.0 0.0 +fr 09_hydro_pump 1 254 0.0 0.0 +fr 01_solar 1 255 1.0 0.0 +fr 02_wind_on 1 255 1.0 0.0 +fr 03_wind_off 1 255 1.0 0.0 +fr 04_res 1 255 1.0 0.0 +fr 05_nuclear 1 255 1.0 0.0 +fr 06_coal 1 255 0.0 0.0 +fr 07_gas 1 255 0.0 0.0 +fr 08_non-res 1 255 0.0 0.0 +fr 09_hydro_pump 1 255 0.0 0.0 +fr 01_solar 1 256 1.0 0.0 +fr 02_wind_on 1 256 1.0 0.0 +fr 03_wind_off 1 256 1.0 0.0 +fr 04_res 1 256 1.0 0.0 +fr 05_nuclear 1 256 1.0 0.0 +fr 06_coal 1 256 0.0 0.0 +fr 07_gas 1 256 0.0 0.0 +fr 08_non-res 1 256 0.0 0.0 +fr 09_hydro_pump 1 256 0.0 0.0 +fr 01_solar 1 257 1.0 0.0 +fr 02_wind_on 1 257 1.0 0.0 +fr 03_wind_off 1 257 1.0 0.0 +fr 04_res 1 257 1.0 0.0 +fr 05_nuclear 1 257 1.0 0.0 +fr 06_coal 1 257 0.0 0.0 +fr 07_gas 1 257 0.0 0.0 +fr 08_non-res 1 257 0.0 0.0 +fr 09_hydro_pump 1 257 0.0 0.0 +fr 01_solar 1 258 1.0 0.0 +fr 02_wind_on 1 258 1.0 0.0 +fr 03_wind_off 1 258 1.0 0.0 +fr 04_res 1 258 1.0 0.0 +fr 05_nuclear 1 258 1.0 0.0 +fr 06_coal 1 258 0.0 0.0 +fr 07_gas 1 258 0.0 0.0 +fr 08_non-res 1 258 0.0 0.0 +fr 09_hydro_pump 1 258 0.0 0.0 +fr 01_solar 1 259 1.0 0.0 +fr 02_wind_on 1 259 1.0 0.0 +fr 03_wind_off 1 259 1.0 0.0 +fr 04_res 1 259 1.0 0.0 +fr 05_nuclear 1 259 1.0 0.0 +fr 06_coal 1 259 0.0 0.0 +fr 07_gas 1 259 0.0 0.0 +fr 08_non-res 1 259 0.0 0.0 +fr 09_hydro_pump 1 259 0.0 0.0 +fr 01_solar 1 260 1.0 0.0 +fr 02_wind_on 1 260 1.0 0.0 +fr 03_wind_off 1 260 1.0 0.0 +fr 04_res 1 260 1.0 0.0 +fr 05_nuclear 1 260 1.0 0.0 +fr 06_coal 1 260 0.0 0.0 +fr 07_gas 1 260 0.0 0.0 +fr 08_non-res 1 260 0.0 0.0 +fr 09_hydro_pump 1 260 0.0 0.0 +fr 01_solar 1 261 1.0 0.0 +fr 02_wind_on 1 261 1.0 0.0 +fr 03_wind_off 1 261 1.0 0.0 +fr 04_res 1 261 1.0 0.0 +fr 05_nuclear 1 261 1.0 0.0 +fr 06_coal 1 261 0.0 0.0 +fr 07_gas 1 261 0.0 0.0 +fr 08_non-res 1 261 0.0 0.0 +fr 09_hydro_pump 1 261 0.0 0.0 +fr 01_solar 1 262 1.0 0.0 +fr 02_wind_on 1 262 1.0 0.0 +fr 03_wind_off 1 262 1.0 0.0 +fr 04_res 1 262 1.0 0.0 +fr 05_nuclear 1 262 1.0 0.0 +fr 06_coal 1 262 0.0 0.0 +fr 07_gas 1 262 0.0 0.0 +fr 08_non-res 1 262 0.0 0.0 +fr 09_hydro_pump 1 262 0.0 0.0 +fr 01_solar 1 263 1.0 0.0 +fr 02_wind_on 1 263 1.0 0.0 +fr 03_wind_off 1 263 1.0 0.0 +fr 04_res 1 263 1.0 0.0 +fr 05_nuclear 1 263 1.0 0.0 +fr 06_coal 1 263 0.0 0.0 +fr 07_gas 1 263 0.0 0.0 +fr 08_non-res 1 263 0.0 0.0 +fr 09_hydro_pump 1 263 0.0 0.0 +fr 01_solar 1 264 1.0 0.0 +fr 02_wind_on 1 264 1.0 0.0 +fr 03_wind_off 1 264 1.0 0.0 +fr 04_res 1 264 1.0 0.0 +fr 05_nuclear 1 264 1.0 0.0 +fr 06_coal 1 264 0.0 0.0 +fr 07_gas 1 264 0.0 0.0 +fr 08_non-res 1 264 0.0 0.0 +fr 09_hydro_pump 1 264 0.0 0.0 +fr 01_solar 1 265 1.0 0.0 +fr 02_wind_on 1 265 1.0 0.0 +fr 03_wind_off 1 265 1.0 0.0 +fr 04_res 1 265 1.0 0.0 +fr 05_nuclear 1 265 1.0 0.0 +fr 06_coal 1 265 0.0 0.0 +fr 07_gas 1 265 0.0 0.0 +fr 08_non-res 1 265 0.0 0.0 +fr 09_hydro_pump 1 265 0.0 0.0 +fr 01_solar 1 266 1.0 0.0 +fr 02_wind_on 1 266 1.0 0.0 +fr 03_wind_off 1 266 1.0 0.0 +fr 04_res 1 266 1.0 0.0 +fr 05_nuclear 1 266 1.0 0.0 +fr 06_coal 1 266 0.0 0.0 +fr 07_gas 1 266 0.0 0.0 +fr 08_non-res 1 266 0.0 0.0 +fr 09_hydro_pump 1 266 0.0 0.0 +fr 01_solar 1 267 1.0 0.0 +fr 02_wind_on 1 267 1.0 0.0 +fr 03_wind_off 1 267 1.0 0.0 +fr 04_res 1 267 1.0 0.0 +fr 05_nuclear 1 267 1.0 0.0 +fr 06_coal 1 267 0.0 0.0 +fr 07_gas 1 267 0.0 0.0 +fr 08_non-res 1 267 0.0 0.0 +fr 09_hydro_pump 1 267 0.0 0.0 +fr 01_solar 1 268 1.0 0.0 +fr 02_wind_on 1 268 1.0 0.0 +fr 03_wind_off 1 268 1.0 0.0 +fr 04_res 1 268 1.0 0.0 +fr 05_nuclear 1 268 1.0 0.0 +fr 06_coal 1 268 0.0 0.0 +fr 07_gas 1 268 0.0 0.0 +fr 08_non-res 1 268 0.0 0.0 +fr 09_hydro_pump 1 268 0.0 0.0 +fr 01_solar 1 269 1.0 0.0 +fr 02_wind_on 1 269 1.0 0.0 +fr 03_wind_off 1 269 1.0 0.0 +fr 04_res 1 269 1.0 0.0 +fr 05_nuclear 1 269 1.0 0.0 +fr 06_coal 1 269 0.0 0.0 +fr 07_gas 1 269 0.0 0.0 +fr 08_non-res 1 269 0.0 0.0 +fr 09_hydro_pump 1 269 0.0 0.0 +fr 01_solar 1 270 1.0 0.0 +fr 02_wind_on 1 270 1.0 0.0 +fr 03_wind_off 1 270 1.0 0.0 +fr 04_res 1 270 1.0 0.0 +fr 05_nuclear 1 270 1.0 0.0 +fr 06_coal 1 270 1.0 0.0 +fr 07_gas 1 270 0.0 0.0 +fr 08_non-res 1 270 0.0 0.0 +fr 09_hydro_pump 1 270 0.0 0.0 +fr 01_solar 1 271 1.0 0.0 +fr 02_wind_on 1 271 1.0 0.0 +fr 03_wind_off 1 271 1.0 0.0 +fr 04_res 1 271 1.0 0.0 +fr 05_nuclear 1 271 1.0 0.0 +fr 06_coal 1 271 1.0 0.0 +fr 07_gas 1 271 0.0 0.0 +fr 08_non-res 1 271 0.0 0.0 +fr 09_hydro_pump 1 271 0.0 0.0 +fr 01_solar 1 272 1.0 0.0 +fr 02_wind_on 1 272 1.0 0.0 +fr 03_wind_off 1 272 1.0 0.0 +fr 04_res 1 272 1.0 0.0 +fr 05_nuclear 1 272 1.0 0.0 +fr 06_coal 1 272 1.0 0.0 +fr 07_gas 1 272 0.0 0.0 +fr 08_non-res 1 272 0.0 0.0 +fr 09_hydro_pump 1 272 0.0 0.0 +fr 01_solar 1 273 1.0 0.0 +fr 02_wind_on 1 273 1.0 0.0 +fr 03_wind_off 1 273 1.0 0.0 +fr 04_res 1 273 1.0 0.0 +fr 05_nuclear 1 273 1.0 0.0 +fr 06_coal 1 273 1.0 0.0 +fr 07_gas 1 273 0.0 0.0 +fr 08_non-res 1 273 0.0 0.0 +fr 09_hydro_pump 1 273 0.0 0.0 +fr 01_solar 1 274 1.0 0.0 +fr 02_wind_on 1 274 1.0 0.0 +fr 03_wind_off 1 274 1.0 0.0 +fr 04_res 1 274 1.0 0.0 +fr 05_nuclear 1 274 1.0 0.0 +fr 06_coal 1 274 1.0 0.0 +fr 07_gas 1 274 0.0 0.0 +fr 08_non-res 1 274 0.0 0.0 +fr 09_hydro_pump 1 274 0.0 0.0 +fr 01_solar 1 275 1.0 0.0 +fr 02_wind_on 1 275 1.0 0.0 +fr 03_wind_off 1 275 1.0 0.0 +fr 04_res 1 275 1.0 0.0 +fr 05_nuclear 1 275 1.0 0.0 +fr 06_coal 1 275 1.0 0.0 +fr 07_gas 1 275 0.0 0.0 +fr 08_non-res 1 275 0.0 0.0 +fr 09_hydro_pump 1 275 0.0 0.0 +fr 01_solar 1 276 1.0 0.0 +fr 02_wind_on 1 276 1.0 0.0 +fr 03_wind_off 1 276 1.0 0.0 +fr 04_res 1 276 1.0 0.0 +fr 05_nuclear 1 276 1.0 0.0 +fr 06_coal 1 276 1.0 0.0 +fr 07_gas 1 276 0.0 0.0 +fr 08_non-res 1 276 0.0 0.0 +fr 09_hydro_pump 1 276 0.0 0.0 +fr 01_solar 1 277 1.0 0.0 +fr 02_wind_on 1 277 1.0 0.0 +fr 03_wind_off 1 277 1.0 0.0 +fr 04_res 1 277 1.0 0.0 +fr 05_nuclear 1 277 1.0 0.0 +fr 06_coal 1 277 1.0 0.0 +fr 07_gas 1 277 0.0 0.0 +fr 08_non-res 1 277 0.0 0.0 +fr 09_hydro_pump 1 277 0.0 0.0 +fr 01_solar 1 278 1.0 0.0 +fr 02_wind_on 1 278 1.0 0.0 +fr 03_wind_off 1 278 1.0 0.0 +fr 04_res 1 278 1.0 0.0 +fr 05_nuclear 1 278 1.0 0.0 +fr 06_coal 1 278 1.0 0.0 +fr 07_gas 1 278 0.0 0.0 +fr 08_non-res 1 278 0.0 0.0 +fr 09_hydro_pump 1 278 0.0 0.0 +fr 01_solar 1 279 1.0 0.0 +fr 02_wind_on 1 279 1.0 0.0 +fr 03_wind_off 1 279 1.0 0.0 +fr 04_res 1 279 1.0 0.0 +fr 05_nuclear 1 279 1.0 0.0 +fr 06_coal 1 279 1.0 0.0 +fr 07_gas 1 279 0.0 0.0 +fr 08_non-res 1 279 0.0 0.0 +fr 09_hydro_pump 1 279 0.0 0.0 +fr 01_solar 1 280 1.0 0.0 +fr 02_wind_on 1 280 1.0 0.0 +fr 03_wind_off 1 280 1.0 0.0 +fr 04_res 1 280 1.0 0.0 +fr 05_nuclear 1 280 1.0 0.0 +fr 06_coal 1 280 1.0 0.0 +fr 07_gas 1 280 0.0 0.0 +fr 08_non-res 1 280 0.0 0.0 +fr 09_hydro_pump 1 280 0.0 0.0 +fr 01_solar 1 281 1.0 0.0 +fr 02_wind_on 1 281 1.0 0.0 +fr 03_wind_off 1 281 1.0 0.0 +fr 04_res 1 281 1.0 0.0 +fr 05_nuclear 1 281 1.0 0.0 +fr 06_coal 1 281 1.0 0.0 +fr 07_gas 1 281 0.0 0.0 +fr 08_non-res 1 281 0.0 0.0 +fr 09_hydro_pump 1 281 0.0 0.0 +fr 01_solar 1 282 1.0 0.0 +fr 02_wind_on 1 282 1.0 0.0 +fr 03_wind_off 1 282 1.0 0.0 +fr 04_res 1 282 1.0 0.0 +fr 05_nuclear 1 282 1.0 0.0 +fr 06_coal 1 282 1.0 0.0 +fr 07_gas 1 282 0.0 0.0 +fr 08_non-res 1 282 0.0 0.0 +fr 09_hydro_pump 1 282 0.0 0.0 +fr 01_solar 1 283 1.0 0.0 +fr 02_wind_on 1 283 1.0 0.0 +fr 03_wind_off 1 283 1.0 0.0 +fr 04_res 1 283 1.0 0.0 +fr 05_nuclear 1 283 1.0 0.0 +fr 06_coal 1 283 1.0 0.0 +fr 07_gas 1 283 0.0 0.0 +fr 08_non-res 1 283 0.0 0.0 +fr 09_hydro_pump 1 283 0.0 0.0 +fr 01_solar 1 284 1.0 0.0 +fr 02_wind_on 1 284 1.0 0.0 +fr 03_wind_off 1 284 1.0 0.0 +fr 04_res 1 284 1.0 0.0 +fr 05_nuclear 1 284 1.0 0.0 +fr 06_coal 1 284 1.0 0.0 +fr 07_gas 1 284 0.0 0.0 +fr 08_non-res 1 284 0.0 0.0 +fr 09_hydro_pump 1 284 0.0 0.0 +fr 01_solar 1 285 1.0 0.0 +fr 02_wind_on 1 285 1.0 0.0 +fr 03_wind_off 1 285 1.0 0.0 +fr 04_res 1 285 1.0 0.0 +fr 05_nuclear 1 285 1.0 0.0 +fr 06_coal 1 285 1.0 0.0 +fr 07_gas 1 285 0.0 0.0 +fr 08_non-res 1 285 0.0 0.0 +fr 09_hydro_pump 1 285 0.0 0.0 +fr 01_solar 1 286 1.0 0.0 +fr 02_wind_on 1 286 1.0 0.0 +fr 03_wind_off 1 286 1.0 0.0 +fr 04_res 1 286 1.0 0.0 +fr 05_nuclear 1 286 1.0 0.0 +fr 06_coal 1 286 1.0 0.0 +fr 07_gas 1 286 0.0 0.0 +fr 08_non-res 1 286 0.0 0.0 +fr 09_hydro_pump 1 286 0.0 0.0 +fr 01_solar 1 287 1.0 0.0 +fr 02_wind_on 1 287 1.0 0.0 +fr 03_wind_off 1 287 1.0 0.0 +fr 04_res 1 287 1.0 0.0 +fr 05_nuclear 1 287 1.0 0.0 +fr 06_coal 1 287 1.0 0.0 +fr 07_gas 1 287 0.0 0.0 +fr 08_non-res 1 287 0.0 0.0 +fr 09_hydro_pump 1 287 0.0 0.0 +fr 01_solar 1 288 1.0 0.0 +fr 02_wind_on 1 288 1.0 0.0 +fr 03_wind_off 1 288 1.0 0.0 +fr 04_res 1 288 1.0 0.0 +fr 05_nuclear 1 288 1.0 0.0 +fr 06_coal 1 288 1.0 0.0 +fr 07_gas 1 288 0.0 0.0 +fr 08_non-res 1 288 0.0 0.0 +fr 09_hydro_pump 1 288 0.0 0.0 +fr 01_solar 1 289 1.0 0.0 +fr 02_wind_on 1 289 1.0 0.0 +fr 03_wind_off 1 289 1.0 0.0 +fr 04_res 1 289 1.0 0.0 +fr 05_nuclear 1 289 1.0 0.0 +fr 06_coal 1 289 1.0 0.0 +fr 07_gas 1 289 0.0 0.0 +fr 08_non-res 1 289 0.0 0.0 +fr 09_hydro_pump 1 289 0.0 0.0 +fr 01_solar 1 290 1.0 0.0 +fr 02_wind_on 1 290 1.0 0.0 +fr 03_wind_off 1 290 1.0 0.0 +fr 04_res 1 290 1.0 0.0 +fr 05_nuclear 1 290 1.0 0.0 +fr 06_coal 1 290 1.0 0.0 +fr 07_gas 1 290 1.0 0.0 +fr 08_non-res 1 290 0.0 0.0 +fr 09_hydro_pump 1 290 0.0 0.0 +fr 01_solar 1 291 1.0 0.0 +fr 02_wind_on 1 291 1.0 0.0 +fr 03_wind_off 1 291 1.0 0.0 +fr 04_res 1 291 1.0 0.0 +fr 05_nuclear 1 291 1.0 0.0 +fr 06_coal 1 291 1.0 0.0 +fr 07_gas 1 291 1.0 0.0 +fr 08_non-res 1 291 0.0 0.0 +fr 09_hydro_pump 1 291 0.0 0.0 +fr 01_solar 1 292 1.0 0.0 +fr 02_wind_on 1 292 1.0 0.0 +fr 03_wind_off 1 292 1.0 0.0 +fr 04_res 1 292 1.0 0.0 +fr 05_nuclear 1 292 1.0 0.0 +fr 06_coal 1 292 1.0 0.0 +fr 07_gas 1 292 1.0 0.0 +fr 08_non-res 1 292 0.0 0.0 +fr 09_hydro_pump 1 292 0.0 0.0 +fr 01_solar 1 293 1.0 0.0 +fr 02_wind_on 1 293 1.0 0.0 +fr 03_wind_off 1 293 1.0 0.0 +fr 04_res 1 293 1.0 0.0 +fr 05_nuclear 1 293 1.0 0.0 +fr 06_coal 1 293 1.0 0.0 +fr 07_gas 1 293 1.0 0.0 +fr 08_non-res 1 293 0.0 0.0 +fr 09_hydro_pump 1 293 0.0 0.0 +fr 01_solar 1 294 1.0 0.0 +fr 02_wind_on 1 294 1.0 0.0 +fr 03_wind_off 1 294 1.0 0.0 +fr 04_res 1 294 1.0 0.0 +fr 05_nuclear 1 294 1.0 0.0 +fr 06_coal 1 294 1.0 0.0 +fr 07_gas 1 294 1.0 0.0 +fr 08_non-res 1 294 0.0 0.0 +fr 09_hydro_pump 1 294 0.0 0.0 +fr 01_solar 1 295 1.0 0.0 +fr 02_wind_on 1 295 1.0 0.0 +fr 03_wind_off 1 295 1.0 0.0 +fr 04_res 1 295 1.0 0.0 +fr 05_nuclear 1 295 1.0 0.0 +fr 06_coal 1 295 1.0 0.0 +fr 07_gas 1 295 1.0 0.0 +fr 08_non-res 1 295 0.0 0.0 +fr 09_hydro_pump 1 295 0.0 0.0 +fr 01_solar 1 296 1.0 0.0 +fr 02_wind_on 1 296 1.0 0.0 +fr 03_wind_off 1 296 1.0 0.0 +fr 04_res 1 296 1.0 0.0 +fr 05_nuclear 1 296 1.0 0.0 +fr 06_coal 1 296 1.0 0.0 +fr 07_gas 1 296 1.0 0.0 +fr 08_non-res 1 296 0.0 0.0 +fr 09_hydro_pump 1 296 0.0 0.0 +fr 01_solar 1 297 1.0 0.0 +fr 02_wind_on 1 297 1.0 0.0 +fr 03_wind_off 1 297 1.0 0.0 +fr 04_res 1 297 1.0 0.0 +fr 05_nuclear 1 297 1.0 0.0 +fr 06_coal 1 297 1.0 0.0 +fr 07_gas 1 297 1.0 0.0 +fr 08_non-res 1 297 0.0 0.0 +fr 09_hydro_pump 1 297 0.0 0.0 +fr 01_solar 1 298 1.0 0.0 +fr 02_wind_on 1 298 1.0 0.0 +fr 03_wind_off 1 298 1.0 0.0 +fr 04_res 1 298 1.0 0.0 +fr 05_nuclear 1 298 1.0 0.0 +fr 06_coal 1 298 1.0 0.0 +fr 07_gas 1 298 1.0 0.0 +fr 08_non-res 1 298 0.0 0.0 +fr 09_hydro_pump 1 298 0.0 0.0 +fr 01_solar 1 299 1.0 0.0 +fr 02_wind_on 1 299 1.0 0.0 +fr 03_wind_off 1 299 1.0 0.0 +fr 04_res 1 299 1.0 0.0 +fr 05_nuclear 1 299 1.0 0.0 +fr 06_coal 1 299 1.0 0.0 +fr 07_gas 1 299 1.0 0.0 +fr 08_non-res 1 299 0.0 0.0 +fr 09_hydro_pump 1 299 0.0 0.0 +fr 01_solar 1 300 1.0 0.0 +fr 02_wind_on 1 300 1.0 0.0 +fr 03_wind_off 1 300 1.0 0.0 +fr 04_res 1 300 1.0 0.0 +fr 05_nuclear 1 300 1.0 0.0 +fr 06_coal 1 300 1.0 0.0 +fr 07_gas 1 300 1.0 0.0 +fr 08_non-res 1 300 0.0 0.0 +fr 09_hydro_pump 1 300 0.0 0.0 +fr 01_solar 1 301 1.0 0.0 +fr 02_wind_on 1 301 1.0 0.0 +fr 03_wind_off 1 301 1.0 0.0 +fr 04_res 1 301 1.0 0.0 +fr 05_nuclear 1 301 1.0 0.0 +fr 06_coal 1 301 1.0 0.0 +fr 07_gas 1 301 1.0 0.0 +fr 08_non-res 1 301 0.0 0.0 +fr 09_hydro_pump 1 301 0.0 0.0 +fr 01_solar 1 302 1.0 0.0 +fr 02_wind_on 1 302 1.0 0.0 +fr 03_wind_off 1 302 1.0 0.0 +fr 04_res 1 302 1.0 0.0 +fr 05_nuclear 1 302 1.0 0.0 +fr 06_coal 1 302 1.0 0.0 +fr 07_gas 1 302 1.0 0.0 +fr 08_non-res 1 302 0.0 0.0 +fr 09_hydro_pump 1 302 0.0 0.0 +fr 01_solar 1 303 1.0 0.0 +fr 02_wind_on 1 303 1.0 0.0 +fr 03_wind_off 1 303 1.0 0.0 +fr 04_res 1 303 1.0 0.0 +fr 05_nuclear 1 303 1.0 0.0 +fr 06_coal 1 303 1.0 0.0 +fr 07_gas 1 303 1.0 0.0 +fr 08_non-res 1 303 0.0 0.0 +fr 09_hydro_pump 1 303 0.0 0.0 +fr 01_solar 1 304 1.0 0.0 +fr 02_wind_on 1 304 1.0 0.0 +fr 03_wind_off 1 304 1.0 0.0 +fr 04_res 1 304 1.0 0.0 +fr 05_nuclear 1 304 1.0 0.0 +fr 06_coal 1 304 1.0 0.0 +fr 07_gas 1 304 1.0 0.0 +fr 08_non-res 1 304 0.0 0.0 +fr 09_hydro_pump 1 304 0.0 0.0 +fr 01_solar 1 305 1.0 0.0 +fr 02_wind_on 1 305 1.0 0.0 +fr 03_wind_off 1 305 1.0 0.0 +fr 04_res 1 305 1.0 0.0 +fr 05_nuclear 1 305 1.0 0.0 +fr 06_coal 1 305 1.0 0.0 +fr 07_gas 1 305 1.0 0.0 +fr 08_non-res 1 305 0.0 0.0 +fr 09_hydro_pump 1 305 0.0 0.0 +fr 01_solar 1 306 1.0 0.0 +fr 02_wind_on 1 306 1.0 0.0 +fr 03_wind_off 1 306 1.0 0.0 +fr 04_res 1 306 1.0 0.0 +fr 05_nuclear 1 306 1.0 0.0 +fr 06_coal 1 306 1.0 0.0 +fr 07_gas 1 306 1.0 0.0 +fr 08_non-res 1 306 0.0 0.0 +fr 09_hydro_pump 1 306 0.0 0.0 +fr 01_solar 1 307 1.0 0.0 +fr 02_wind_on 1 307 1.0 0.0 +fr 03_wind_off 1 307 1.0 0.0 +fr 04_res 1 307 1.0 0.0 +fr 05_nuclear 1 307 1.0 0.0 +fr 06_coal 1 307 1.0 0.0 +fr 07_gas 1 307 1.0 0.0 +fr 08_non-res 1 307 0.0 0.0 +fr 09_hydro_pump 1 307 0.0 0.0 +fr 01_solar 1 308 1.0 0.0 +fr 02_wind_on 1 308 1.0 0.0 +fr 03_wind_off 1 308 1.0 0.0 +fr 04_res 1 308 1.0 0.0 +fr 05_nuclear 1 308 1.0 0.0 +fr 06_coal 1 308 1.0 0.0 +fr 07_gas 1 308 1.0 0.0 +fr 08_non-res 1 308 0.0 0.0 +fr 09_hydro_pump 1 308 0.0 0.0 +fr 01_solar 1 309 1.0 0.0 +fr 02_wind_on 1 309 1.0 0.0 +fr 03_wind_off 1 309 1.0 0.0 +fr 04_res 1 309 1.0 0.0 +fr 05_nuclear 1 309 1.0 0.0 +fr 06_coal 1 309 1.0 0.0 +fr 07_gas 1 309 1.0 0.0 +fr 08_non-res 1 309 0.0 0.0 +fr 09_hydro_pump 1 309 0.0 0.0 +fr 01_solar 1 310 1.0 0.0 +fr 02_wind_on 1 310 1.0 0.0 +fr 03_wind_off 1 310 1.0 0.0 +fr 04_res 1 310 1.0 0.0 +fr 05_nuclear 1 310 1.0 0.0 +fr 06_coal 1 310 1.0 0.0 +fr 07_gas 1 310 1.0 0.0 +fr 08_non-res 1 310 1.0 0.0 +fr 09_hydro_pump 1 310 0.0 0.0 +fr 01_solar 1 311 1.0 0.0 +fr 02_wind_on 1 311 1.0 0.0 +fr 03_wind_off 1 311 1.0 0.0 +fr 04_res 1 311 1.0 0.0 +fr 05_nuclear 1 311 1.0 0.0 +fr 06_coal 1 311 1.0 0.0 +fr 07_gas 1 311 1.0 0.0 +fr 08_non-res 1 311 1.0 0.0 +fr 09_hydro_pump 1 311 0.0 0.0 +fr 01_solar 1 312 1.0 0.0 +fr 02_wind_on 1 312 1.0 0.0 +fr 03_wind_off 1 312 1.0 0.0 +fr 04_res 1 312 1.0 0.0 +fr 05_nuclear 1 312 1.0 0.0 +fr 06_coal 1 312 1.0 0.0 +fr 07_gas 1 312 1.0 0.0 +fr 08_non-res 1 312 1.0 0.0 +fr 09_hydro_pump 1 312 0.0 0.0 +fr 01_solar 1 313 1.0 0.0 +fr 02_wind_on 1 313 1.0 0.0 +fr 03_wind_off 1 313 1.0 0.0 +fr 04_res 1 313 1.0 0.0 +fr 05_nuclear 1 313 1.0 0.0 +fr 06_coal 1 313 1.0 0.0 +fr 07_gas 1 313 1.0 0.0 +fr 08_non-res 1 313 1.0 0.0 +fr 09_hydro_pump 1 313 0.0 0.0 +fr 01_solar 1 314 1.0 0.0 +fr 02_wind_on 1 314 1.0 0.0 +fr 03_wind_off 1 314 1.0 0.0 +fr 04_res 1 314 1.0 0.0 +fr 05_nuclear 1 314 1.0 0.0 +fr 06_coal 1 314 1.0 0.0 +fr 07_gas 1 314 1.0 0.0 +fr 08_non-res 1 314 1.0 0.0 +fr 09_hydro_pump 1 314 0.0 0.0 +fr 01_solar 1 315 1.0 0.0 +fr 02_wind_on 1 315 1.0 0.0 +fr 03_wind_off 1 315 1.0 0.0 +fr 04_res 1 315 1.0 0.0 +fr 05_nuclear 1 315 1.0 0.0 +fr 06_coal 1 315 1.0 0.0 +fr 07_gas 1 315 1.0 0.0 +fr 08_non-res 1 315 1.0 0.0 +fr 09_hydro_pump 1 315 0.0 0.0 +fr 01_solar 1 316 1.0 0.0 +fr 02_wind_on 1 316 1.0 0.0 +fr 03_wind_off 1 316 1.0 0.0 +fr 04_res 1 316 1.0 0.0 +fr 05_nuclear 1 316 1.0 0.0 +fr 06_coal 1 316 1.0 0.0 +fr 07_gas 1 316 1.0 0.0 +fr 08_non-res 1 316 1.0 0.0 +fr 09_hydro_pump 1 316 0.0 0.0 +fr 01_solar 1 317 1.0 0.0 +fr 02_wind_on 1 317 1.0 0.0 +fr 03_wind_off 1 317 1.0 0.0 +fr 04_res 1 317 1.0 0.0 +fr 05_nuclear 1 317 1.0 0.0 +fr 06_coal 1 317 1.0 0.0 +fr 07_gas 1 317 1.0 0.0 +fr 08_non-res 1 317 1.0 0.0 +fr 09_hydro_pump 1 317 0.0 0.0 +fr 01_solar 1 318 1.0 0.0 +fr 02_wind_on 1 318 1.0 0.0 +fr 03_wind_off 1 318 1.0 0.0 +fr 04_res 1 318 1.0 0.0 +fr 05_nuclear 1 318 1.0 0.0 +fr 06_coal 1 318 1.0 0.0 +fr 07_gas 1 318 1.0 0.0 +fr 08_non-res 1 318 1.0 0.0 +fr 09_hydro_pump 1 318 0.0 0.0 +fr 01_solar 1 319 1.0 0.0 +fr 02_wind_on 1 319 1.0 0.0 +fr 03_wind_off 1 319 1.0 0.0 +fr 04_res 1 319 1.0 0.0 +fr 05_nuclear 1 319 1.0 0.0 +fr 06_coal 1 319 1.0 0.0 +fr 07_gas 1 319 1.0 0.0 +fr 08_non-res 1 319 1.0 0.0 +fr 09_hydro_pump 1 319 0.0 0.0 +fr 01_solar 1 320 1.0 0.0 +fr 02_wind_on 1 320 1.0 0.0 +fr 03_wind_off 1 320 1.0 0.0 +fr 04_res 1 320 1.0 0.0 +fr 05_nuclear 1 320 1.0 0.0 +fr 06_coal 1 320 1.0 0.0 +fr 07_gas 1 320 1.0 0.0 +fr 08_non-res 1 320 1.0 0.0 +fr 09_hydro_pump 1 320 0.0 0.0 +fr 01_solar 1 321 1.0 0.0 +fr 02_wind_on 1 321 1.0 0.0 +fr 03_wind_off 1 321 1.0 0.0 +fr 04_res 1 321 1.0 0.0 +fr 05_nuclear 1 321 1.0 0.0 +fr 06_coal 1 321 1.0 0.0 +fr 07_gas 1 321 1.0 0.0 +fr 08_non-res 1 321 1.0 0.0 +fr 09_hydro_pump 1 321 0.0 0.0 +fr 01_solar 1 322 1.0 0.0 +fr 02_wind_on 1 322 1.0 0.0 +fr 03_wind_off 1 322 1.0 0.0 +fr 04_res 1 322 1.0 0.0 +fr 05_nuclear 1 322 1.0 0.0 +fr 06_coal 1 322 1.0 0.0 +fr 07_gas 1 322 1.0 0.0 +fr 08_non-res 1 322 1.0 0.0 +fr 09_hydro_pump 1 322 0.0 0.0 +fr 01_solar 1 323 1.0 0.0 +fr 02_wind_on 1 323 1.0 0.0 +fr 03_wind_off 1 323 1.0 0.0 +fr 04_res 1 323 1.0 0.0 +fr 05_nuclear 1 323 1.0 0.0 +fr 06_coal 1 323 1.0 0.0 +fr 07_gas 1 323 1.0 0.0 +fr 08_non-res 1 323 1.0 0.0 +fr 09_hydro_pump 1 323 0.0 0.0 +fr 01_solar 1 324 1.0 0.0 +fr 02_wind_on 1 324 1.0 0.0 +fr 03_wind_off 1 324 1.0 0.0 +fr 04_res 1 324 1.0 0.0 +fr 05_nuclear 1 324 1.0 0.0 +fr 06_coal 1 324 1.0 0.0 +fr 07_gas 1 324 1.0 0.0 +fr 08_non-res 1 324 1.0 0.0 +fr 09_hydro_pump 1 324 0.0 0.0 +fr 01_solar 1 325 1.0 0.0 +fr 02_wind_on 1 325 1.0 0.0 +fr 03_wind_off 1 325 1.0 0.0 +fr 04_res 1 325 1.0 0.0 +fr 05_nuclear 1 325 1.0 0.0 +fr 06_coal 1 325 1.0 0.0 +fr 07_gas 1 325 1.0 0.0 +fr 08_non-res 1 325 1.0 0.0 +fr 09_hydro_pump 1 325 0.0 0.0 +fr 01_solar 1 326 1.0 0.0 +fr 02_wind_on 1 326 1.0 0.0 +fr 03_wind_off 1 326 1.0 0.0 +fr 04_res 1 326 1.0 0.0 +fr 05_nuclear 1 326 1.0 0.0 +fr 06_coal 1 326 1.0 0.0 +fr 07_gas 1 326 1.0 0.0 +fr 08_non-res 1 326 1.0 0.0 +fr 09_hydro_pump 1 326 0.0 0.0 +fr 01_solar 1 327 1.0 0.0 +fr 02_wind_on 1 327 1.0 0.0 +fr 03_wind_off 1 327 1.0 0.0 +fr 04_res 1 327 1.0 0.0 +fr 05_nuclear 1 327 1.0 0.0 +fr 06_coal 1 327 1.0 0.0 +fr 07_gas 1 327 1.0 0.0 +fr 08_non-res 1 327 1.0 0.0 +fr 09_hydro_pump 1 327 0.0 0.0 +fr 01_solar 1 328 1.0 0.0 +fr 02_wind_on 1 328 1.0 0.0 +fr 03_wind_off 1 328 1.0 0.0 +fr 04_res 1 328 1.0 0.0 +fr 05_nuclear 1 328 1.0 0.0 +fr 06_coal 1 328 1.0 0.0 +fr 07_gas 1 328 1.0 0.0 +fr 08_non-res 1 328 1.0 0.0 +fr 09_hydro_pump 1 328 0.0 0.0 +fr 01_solar 1 329 1.0 0.0 +fr 02_wind_on 1 329 1.0 0.0 +fr 03_wind_off 1 329 1.0 0.0 +fr 04_res 1 329 1.0 0.0 +fr 05_nuclear 1 329 1.0 0.0 +fr 06_coal 1 329 1.0 0.0 +fr 07_gas 1 329 1.0 0.0 +fr 08_non-res 1 329 1.0 0.0 +fr 09_hydro_pump 1 329 0.0 0.0 +fr 01_solar 1 330 1.0 0.0 +fr 02_wind_on 1 330 1.0 0.0 +fr 03_wind_off 1 330 1.0 0.0 +fr 04_res 1 330 1.0 0.0 +fr 05_nuclear 1 330 1.0 0.0 +fr 06_coal 1 330 1.0 0.0 +fr 07_gas 1 330 1.0 0.0 +fr 08_non-res 1 330 1.0 0.0 +fr 09_hydro_pump 1 330 1.0 0.0 +fr 01_solar 1 331 1.0 0.0 +fr 02_wind_on 1 331 1.0 0.0 +fr 03_wind_off 1 331 1.0 0.0 +fr 04_res 1 331 1.0 0.0 +fr 05_nuclear 1 331 1.0 0.0 +fr 06_coal 1 331 1.0 0.0 +fr 07_gas 1 331 1.0 0.0 +fr 08_non-res 1 331 1.0 0.0 +fr 09_hydro_pump 1 331 1.0 0.0 +fr 01_solar 1 332 1.0 0.0 +fr 02_wind_on 1 332 1.0 0.0 +fr 03_wind_off 1 332 1.0 0.0 +fr 04_res 1 332 1.0 0.0 +fr 05_nuclear 1 332 1.0 0.0 +fr 06_coal 1 332 1.0 0.0 +fr 07_gas 1 332 1.0 0.0 +fr 08_non-res 1 332 1.0 0.0 +fr 09_hydro_pump 1 332 1.0 0.0 +fr 01_solar 1 333 1.0 0.0 +fr 02_wind_on 1 333 1.0 0.0 +fr 03_wind_off 1 333 1.0 0.0 +fr 04_res 1 333 1.0 0.0 +fr 05_nuclear 1 333 1.0 0.0 +fr 06_coal 1 333 1.0 0.0 +fr 07_gas 1 333 1.0 0.0 +fr 08_non-res 1 333 1.0 0.0 +fr 09_hydro_pump 1 333 1.0 0.0 +fr 01_solar 1 334 1.0 0.0 +fr 02_wind_on 1 334 1.0 0.0 +fr 03_wind_off 1 334 1.0 0.0 +fr 04_res 1 334 1.0 0.0 +fr 05_nuclear 1 334 1.0 0.0 +fr 06_coal 1 334 1.0 0.0 +fr 07_gas 1 334 1.0 0.0 +fr 08_non-res 1 334 1.0 0.0 +fr 09_hydro_pump 1 334 1.0 0.0 +fr 01_solar 1 335 1.0 0.0 +fr 02_wind_on 1 335 1.0 0.0 +fr 03_wind_off 1 335 1.0 0.0 +fr 04_res 1 335 1.0 0.0 +fr 05_nuclear 1 335 1.0 0.0 +fr 06_coal 1 335 1.0 0.0 +fr 07_gas 1 335 1.0 0.0 +fr 08_non-res 1 335 1.0 0.0 +fr 09_hydro_pump 1 335 1.0 0.0 +fr 01_solar 1 336 1.0 0.0 +fr 02_wind_on 1 336 1.0 0.0 +fr 03_wind_off 1 336 1.0 0.0 +fr 04_res 1 336 1.0 0.0 +fr 05_nuclear 1 336 1.0 0.0 +fr 06_coal 1 336 1.0 0.0 +fr 07_gas 1 336 1.0 0.0 +fr 08_non-res 1 336 1.0 0.0 +fr 09_hydro_pump 1 336 1.0 0.0 +it 01_solar 1 1 0.0 0.0 +it 02_wind_on 1 1 0.0 0.0 +it 03_wind_off 1 1 0.0 0.0 +it 04_res 1 1 0.0 0.0 +it 05_nuclear 1 1 0.0 0.0 +it 06_coal 1 1 0.0 0.0 +it 07_gas 1 1 0.0 0.0 +it 08_non-res 1 1 0.0 0.0 +it 09_hydro_pump 1 1 0.0 0.0 +it 01_solar 1 2 1.0 0.0 +it 02_wind_on 1 2 0.0 0.0 +it 03_wind_off 1 2 0.0 0.0 +it 04_res 1 2 0.0 0.0 +it 05_nuclear 1 2 0.0 0.0 +it 06_coal 1 2 0.0 0.0 +it 07_gas 1 2 0.0 0.0 +it 08_non-res 1 2 0.0 0.0 +it 09_hydro_pump 1 2 0.0 0.0 +it 01_solar 1 3 1.0 0.0 +it 02_wind_on 1 3 0.0 0.0 +it 03_wind_off 1 3 0.0 0.0 +it 04_res 1 3 0.0 0.0 +it 05_nuclear 1 3 0.0 0.0 +it 06_coal 1 3 0.0 0.0 +it 07_gas 1 3 0.0 0.0 +it 08_non-res 1 3 0.0 0.0 +it 09_hydro_pump 1 3 0.0 0.0 +it 01_solar 1 4 1.0 0.0 +it 02_wind_on 1 4 0.0 0.0 +it 03_wind_off 1 4 0.0 0.0 +it 04_res 1 4 0.0 0.0 +it 05_nuclear 1 4 0.0 0.0 +it 06_coal 1 4 0.0 0.0 +it 07_gas 1 4 0.0 0.0 +it 08_non-res 1 4 0.0 0.0 +it 09_hydro_pump 1 4 0.0 0.0 +it 01_solar 1 5 1.0 0.0 +it 02_wind_on 1 5 0.0 0.0 +it 03_wind_off 1 5 0.0 0.0 +it 04_res 1 5 0.0 0.0 +it 05_nuclear 1 5 0.0 0.0 +it 06_coal 1 5 0.0 0.0 +it 07_gas 1 5 0.0 0.0 +it 08_non-res 1 5 0.0 0.0 +it 09_hydro_pump 1 5 0.0 0.0 +it 01_solar 1 6 1.0 0.0 +it 02_wind_on 1 6 0.0 0.0 +it 03_wind_off 1 6 0.0 0.0 +it 04_res 1 6 0.0 0.0 +it 05_nuclear 1 6 0.0 0.0 +it 06_coal 1 6 0.0 0.0 +it 07_gas 1 6 0.0 0.0 +it 08_non-res 1 6 0.0 0.0 +it 09_hydro_pump 1 6 0.0 0.0 +it 01_solar 1 7 1.0 0.0 +it 02_wind_on 1 7 0.0 0.0 +it 03_wind_off 1 7 0.0 0.0 +it 04_res 1 7 0.0 0.0 +it 05_nuclear 1 7 0.0 0.0 +it 06_coal 1 7 0.0 0.0 +it 07_gas 1 7 0.0 0.0 +it 08_non-res 1 7 0.0 0.0 +it 09_hydro_pump 1 7 0.0 0.0 +it 01_solar 1 8 1.0 0.0 +it 02_wind_on 1 8 0.0 0.0 +it 03_wind_off 1 8 0.0 0.0 +it 04_res 1 8 0.0 0.0 +it 05_nuclear 1 8 0.0 0.0 +it 06_coal 1 8 0.0 0.0 +it 07_gas 1 8 0.0 0.0 +it 08_non-res 1 8 0.0 0.0 +it 09_hydro_pump 1 8 0.0 0.0 +it 01_solar 1 9 1.0 0.0 +it 02_wind_on 1 9 0.0 0.0 +it 03_wind_off 1 9 0.0 0.0 +it 04_res 1 9 0.0 0.0 +it 05_nuclear 1 9 0.0 0.0 +it 06_coal 1 9 0.0 0.0 +it 07_gas 1 9 0.0 0.0 +it 08_non-res 1 9 0.0 0.0 +it 09_hydro_pump 1 9 0.0 0.0 +it 01_solar 1 10 1.0 0.0 +it 02_wind_on 1 10 0.0 0.0 +it 03_wind_off 1 10 0.0 0.0 +it 04_res 1 10 0.0 0.0 +it 05_nuclear 1 10 0.0 0.0 +it 06_coal 1 10 0.0 0.0 +it 07_gas 1 10 0.0 0.0 +it 08_non-res 1 10 0.0 0.0 +it 09_hydro_pump 1 10 0.0 0.0 +it 01_solar 1 11 1.0 0.0 +it 02_wind_on 1 11 0.0 0.0 +it 03_wind_off 1 11 0.0 0.0 +it 04_res 1 11 0.0 0.0 +it 05_nuclear 1 11 0.0 0.0 +it 06_coal 1 11 0.0 0.0 +it 07_gas 1 11 0.0 0.0 +it 08_non-res 1 11 0.0 0.0 +it 09_hydro_pump 1 11 0.0 0.0 +it 01_solar 1 12 1.0 0.0 +it 02_wind_on 1 12 0.0 0.0 +it 03_wind_off 1 12 0.0 0.0 +it 04_res 1 12 0.0 0.0 +it 05_nuclear 1 12 0.0 0.0 +it 06_coal 1 12 0.0 0.0 +it 07_gas 1 12 0.0 0.0 +it 08_non-res 1 12 0.0 0.0 +it 09_hydro_pump 1 12 0.0 0.0 +it 01_solar 1 13 1.0 0.0 +it 02_wind_on 1 13 0.0 0.0 +it 03_wind_off 1 13 0.0 0.0 +it 04_res 1 13 0.0 0.0 +it 05_nuclear 1 13 0.0 0.0 +it 06_coal 1 13 0.0 0.0 +it 07_gas 1 13 0.0 0.0 +it 08_non-res 1 13 0.0 0.0 +it 09_hydro_pump 1 13 0.0 0.0 +it 01_solar 1 14 1.0 0.0 +it 02_wind_on 1 14 0.0 0.0 +it 03_wind_off 1 14 0.0 0.0 +it 04_res 1 14 0.0 0.0 +it 05_nuclear 1 14 0.0 0.0 +it 06_coal 1 14 0.0 0.0 +it 07_gas 1 14 0.0 0.0 +it 08_non-res 1 14 0.0 0.0 +it 09_hydro_pump 1 14 0.0 0.0 +it 01_solar 1 15 1.0 0.0 +it 02_wind_on 1 15 0.0 0.0 +it 03_wind_off 1 15 0.0 0.0 +it 04_res 1 15 0.0 0.0 +it 05_nuclear 1 15 0.0 0.0 +it 06_coal 1 15 0.0 0.0 +it 07_gas 1 15 0.0 0.0 +it 08_non-res 1 15 0.0 0.0 +it 09_hydro_pump 1 15 0.0 0.0 +it 01_solar 1 16 1.0 0.0 +it 02_wind_on 1 16 0.0 0.0 +it 03_wind_off 1 16 0.0 0.0 +it 04_res 1 16 0.0 0.0 +it 05_nuclear 1 16 0.0 0.0 +it 06_coal 1 16 0.0 0.0 +it 07_gas 1 16 0.0 0.0 +it 08_non-res 1 16 0.0 0.0 +it 09_hydro_pump 1 16 0.0 0.0 +it 01_solar 1 17 1.0 0.0 +it 02_wind_on 1 17 0.0 0.0 +it 03_wind_off 1 17 0.0 0.0 +it 04_res 1 17 0.0 0.0 +it 05_nuclear 1 17 0.0 0.0 +it 06_coal 1 17 0.0 0.0 +it 07_gas 1 17 0.0 0.0 +it 08_non-res 1 17 0.0 0.0 +it 09_hydro_pump 1 17 0.0 0.0 +it 01_solar 1 18 1.0 0.0 +it 02_wind_on 1 18 0.0 0.0 +it 03_wind_off 1 18 0.0 0.0 +it 04_res 1 18 0.0 0.0 +it 05_nuclear 1 18 0.0 0.0 +it 06_coal 1 18 0.0 0.0 +it 07_gas 1 18 0.0 0.0 +it 08_non-res 1 18 0.0 0.0 +it 09_hydro_pump 1 18 0.0 0.0 +it 01_solar 1 19 1.0 0.0 +it 02_wind_on 1 19 0.0 0.0 +it 03_wind_off 1 19 0.0 0.0 +it 04_res 1 19 0.0 0.0 +it 05_nuclear 1 19 0.0 0.0 +it 06_coal 1 19 0.0 0.0 +it 07_gas 1 19 0.0 0.0 +it 08_non-res 1 19 0.0 0.0 +it 09_hydro_pump 1 19 0.0 0.0 +it 01_solar 1 20 1.0 0.0 +it 02_wind_on 1 20 0.0 0.0 +it 03_wind_off 1 20 0.0 0.0 +it 04_res 1 20 0.0 0.0 +it 05_nuclear 1 20 0.0 0.0 +it 06_coal 1 20 0.0 0.0 +it 07_gas 1 20 0.0 0.0 +it 08_non-res 1 20 0.0 0.0 +it 09_hydro_pump 1 20 0.0 0.0 +it 01_solar 1 21 1.0 0.0 +it 02_wind_on 1 21 0.0 0.0 +it 03_wind_off 1 21 0.0 0.0 +it 04_res 1 21 0.0 0.0 +it 05_nuclear 1 21 0.0 0.0 +it 06_coal 1 21 0.0 0.0 +it 07_gas 1 21 0.0 0.0 +it 08_non-res 1 21 0.0 0.0 +it 09_hydro_pump 1 21 0.0 0.0 +it 01_solar 1 22 1.0 0.0 +it 02_wind_on 1 22 1.0 0.0 +it 03_wind_off 1 22 0.0 0.0 +it 04_res 1 22 0.0 0.0 +it 05_nuclear 1 22 0.0 0.0 +it 06_coal 1 22 0.0 0.0 +it 07_gas 1 22 0.0 0.0 +it 08_non-res 1 22 0.0 0.0 +it 09_hydro_pump 1 22 0.0 0.0 +it 01_solar 1 23 1.0 0.0 +it 02_wind_on 1 23 1.0 0.0 +it 03_wind_off 1 23 0.0 0.0 +it 04_res 1 23 0.0 0.0 +it 05_nuclear 1 23 0.0 0.0 +it 06_coal 1 23 0.0 0.0 +it 07_gas 1 23 0.0 0.0 +it 08_non-res 1 23 0.0 0.0 +it 09_hydro_pump 1 23 0.0 0.0 +it 01_solar 1 24 1.0 0.0 +it 02_wind_on 1 24 1.0 0.0 +it 03_wind_off 1 24 0.0 0.0 +it 04_res 1 24 0.0 0.0 +it 05_nuclear 1 24 0.0 0.0 +it 06_coal 1 24 0.0 0.0 +it 07_gas 1 24 0.0 0.0 +it 08_non-res 1 24 0.0 0.0 +it 09_hydro_pump 1 24 0.0 0.0 +it 01_solar 1 25 1.0 0.0 +it 02_wind_on 1 25 1.0 0.0 +it 03_wind_off 1 25 0.0 0.0 +it 04_res 1 25 0.0 0.0 +it 05_nuclear 1 25 0.0 0.0 +it 06_coal 1 25 0.0 0.0 +it 07_gas 1 25 0.0 0.0 +it 08_non-res 1 25 0.0 0.0 +it 09_hydro_pump 1 25 0.0 0.0 +it 01_solar 1 26 1.0 0.0 +it 02_wind_on 1 26 1.0 0.0 +it 03_wind_off 1 26 0.0 0.0 +it 04_res 1 26 0.0 0.0 +it 05_nuclear 1 26 0.0 0.0 +it 06_coal 1 26 0.0 0.0 +it 07_gas 1 26 0.0 0.0 +it 08_non-res 1 26 0.0 0.0 +it 09_hydro_pump 1 26 0.0 0.0 +it 01_solar 1 27 1.0 0.0 +it 02_wind_on 1 27 1.0 0.0 +it 03_wind_off 1 27 0.0 0.0 +it 04_res 1 27 0.0 0.0 +it 05_nuclear 1 27 0.0 0.0 +it 06_coal 1 27 0.0 0.0 +it 07_gas 1 27 0.0 0.0 +it 08_non-res 1 27 0.0 0.0 +it 09_hydro_pump 1 27 0.0 0.0 +it 01_solar 1 28 1.0 0.0 +it 02_wind_on 1 28 1.0 0.0 +it 03_wind_off 1 28 0.0 0.0 +it 04_res 1 28 0.0 0.0 +it 05_nuclear 1 28 0.0 0.0 +it 06_coal 1 28 0.0 0.0 +it 07_gas 1 28 0.0 0.0 +it 08_non-res 1 28 0.0 0.0 +it 09_hydro_pump 1 28 0.0 0.0 +it 01_solar 1 29 1.0 0.0 +it 02_wind_on 1 29 1.0 0.0 +it 03_wind_off 1 29 0.0 0.0 +it 04_res 1 29 0.0 0.0 +it 05_nuclear 1 29 0.0 0.0 +it 06_coal 1 29 0.0 0.0 +it 07_gas 1 29 0.0 0.0 +it 08_non-res 1 29 0.0 0.0 +it 09_hydro_pump 1 29 0.0 0.0 +it 01_solar 1 30 1.0 0.0 +it 02_wind_on 1 30 1.0 0.0 +it 03_wind_off 1 30 0.0 0.0 +it 04_res 1 30 0.0 0.0 +it 05_nuclear 1 30 0.0 0.0 +it 06_coal 1 30 0.0 0.0 +it 07_gas 1 30 0.0 0.0 +it 08_non-res 1 30 0.0 0.0 +it 09_hydro_pump 1 30 0.0 0.0 +it 01_solar 1 31 1.0 0.0 +it 02_wind_on 1 31 1.0 0.0 +it 03_wind_off 1 31 0.0 0.0 +it 04_res 1 31 0.0 0.0 +it 05_nuclear 1 31 0.0 0.0 +it 06_coal 1 31 0.0 0.0 +it 07_gas 1 31 0.0 0.0 +it 08_non-res 1 31 0.0 0.0 +it 09_hydro_pump 1 31 0.0 0.0 +it 01_solar 1 32 1.0 0.0 +it 02_wind_on 1 32 1.0 0.0 +it 03_wind_off 1 32 0.0 0.0 +it 04_res 1 32 0.0 0.0 +it 05_nuclear 1 32 0.0 0.0 +it 06_coal 1 32 0.0 0.0 +it 07_gas 1 32 0.0 0.0 +it 08_non-res 1 32 0.0 0.0 +it 09_hydro_pump 1 32 0.0 0.0 +it 01_solar 1 33 1.0 0.0 +it 02_wind_on 1 33 1.0 0.0 +it 03_wind_off 1 33 0.0 0.0 +it 04_res 1 33 0.0 0.0 +it 05_nuclear 1 33 0.0 0.0 +it 06_coal 1 33 0.0 0.0 +it 07_gas 1 33 0.0 0.0 +it 08_non-res 1 33 0.0 0.0 +it 09_hydro_pump 1 33 0.0 0.0 +it 01_solar 1 34 1.0 0.0 +it 02_wind_on 1 34 1.0 0.0 +it 03_wind_off 1 34 0.0 0.0 +it 04_res 1 34 0.0 0.0 +it 05_nuclear 1 34 0.0 0.0 +it 06_coal 1 34 0.0 0.0 +it 07_gas 1 34 0.0 0.0 +it 08_non-res 1 34 0.0 0.0 +it 09_hydro_pump 1 34 0.0 0.0 +it 01_solar 1 35 1.0 0.0 +it 02_wind_on 1 35 1.0 0.0 +it 03_wind_off 1 35 0.0 0.0 +it 04_res 1 35 0.0 0.0 +it 05_nuclear 1 35 0.0 0.0 +it 06_coal 1 35 0.0 0.0 +it 07_gas 1 35 0.0 0.0 +it 08_non-res 1 35 0.0 0.0 +it 09_hydro_pump 1 35 0.0 0.0 +it 01_solar 1 36 1.0 0.0 +it 02_wind_on 1 36 1.0 0.0 +it 03_wind_off 1 36 0.0 0.0 +it 04_res 1 36 0.0 0.0 +it 05_nuclear 1 36 0.0 0.0 +it 06_coal 1 36 0.0 0.0 +it 07_gas 1 36 0.0 0.0 +it 08_non-res 1 36 0.0 0.0 +it 09_hydro_pump 1 36 0.0 0.0 +it 01_solar 1 37 1.0 0.0 +it 02_wind_on 1 37 1.0 0.0 +it 03_wind_off 1 37 0.0 0.0 +it 04_res 1 37 0.0 0.0 +it 05_nuclear 1 37 0.0 0.0 +it 06_coal 1 37 0.0 0.0 +it 07_gas 1 37 0.0 0.0 +it 08_non-res 1 37 0.0 0.0 +it 09_hydro_pump 1 37 0.0 0.0 +it 01_solar 1 38 1.0 0.0 +it 02_wind_on 1 38 1.0 0.0 +it 03_wind_off 1 38 0.0 0.0 +it 04_res 1 38 0.0 0.0 +it 05_nuclear 1 38 0.0 0.0 +it 06_coal 1 38 0.0 0.0 +it 07_gas 1 38 0.0 0.0 +it 08_non-res 1 38 0.0 0.0 +it 09_hydro_pump 1 38 0.0 0.0 +it 01_solar 1 39 1.0 0.0 +it 02_wind_on 1 39 1.0 0.0 +it 03_wind_off 1 39 0.0 0.0 +it 04_res 1 39 0.0 0.0 +it 05_nuclear 1 39 0.0 0.0 +it 06_coal 1 39 0.0 0.0 +it 07_gas 1 39 0.0 0.0 +it 08_non-res 1 39 0.0 0.0 +it 09_hydro_pump 1 39 0.0 0.0 +it 01_solar 1 40 1.0 0.0 +it 02_wind_on 1 40 1.0 0.0 +it 03_wind_off 1 40 0.0 0.0 +it 04_res 1 40 0.0 0.0 +it 05_nuclear 1 40 0.0 0.0 +it 06_coal 1 40 0.0 0.0 +it 07_gas 1 40 0.0 0.0 +it 08_non-res 1 40 0.0 0.0 +it 09_hydro_pump 1 40 0.0 0.0 +it 01_solar 1 41 1.0 0.0 +it 02_wind_on 1 41 1.0 0.0 +it 03_wind_off 1 41 0.0 0.0 +it 04_res 1 41 0.0 0.0 +it 05_nuclear 1 41 0.0 0.0 +it 06_coal 1 41 0.0 0.0 +it 07_gas 1 41 0.0 0.0 +it 08_non-res 1 41 0.0 0.0 +it 09_hydro_pump 1 41 0.0 0.0 +it 01_solar 1 42 1.0 0.0 +it 02_wind_on 1 42 1.0 0.0 +it 03_wind_off 1 42 1.0 0.0 +it 04_res 1 42 0.0 0.0 +it 05_nuclear 1 42 0.0 0.0 +it 06_coal 1 42 0.0 0.0 +it 07_gas 1 42 0.0 0.0 +it 08_non-res 1 42 0.0 0.0 +it 09_hydro_pump 1 42 0.0 0.0 +it 01_solar 1 43 1.0 0.0 +it 02_wind_on 1 43 1.0 0.0 +it 03_wind_off 1 43 1.0 0.0 +it 04_res 1 43 0.0 0.0 +it 05_nuclear 1 43 0.0 0.0 +it 06_coal 1 43 0.0 0.0 +it 07_gas 1 43 0.0 0.0 +it 08_non-res 1 43 0.0 0.0 +it 09_hydro_pump 1 43 0.0 0.0 +it 01_solar 1 44 1.0 0.0 +it 02_wind_on 1 44 1.0 0.0 +it 03_wind_off 1 44 1.0 0.0 +it 04_res 1 44 0.0 0.0 +it 05_nuclear 1 44 0.0 0.0 +it 06_coal 1 44 0.0 0.0 +it 07_gas 1 44 0.0 0.0 +it 08_non-res 1 44 0.0 0.0 +it 09_hydro_pump 1 44 0.0 0.0 +it 01_solar 1 45 1.0 0.0 +it 02_wind_on 1 45 1.0 0.0 +it 03_wind_off 1 45 1.0 0.0 +it 04_res 1 45 0.0 0.0 +it 05_nuclear 1 45 0.0 0.0 +it 06_coal 1 45 0.0 0.0 +it 07_gas 1 45 0.0 0.0 +it 08_non-res 1 45 0.0 0.0 +it 09_hydro_pump 1 45 0.0 0.0 +it 01_solar 1 46 1.0 0.0 +it 02_wind_on 1 46 1.0 0.0 +it 03_wind_off 1 46 1.0 0.0 +it 04_res 1 46 0.0 0.0 +it 05_nuclear 1 46 0.0 0.0 +it 06_coal 1 46 0.0 0.0 +it 07_gas 1 46 0.0 0.0 +it 08_non-res 1 46 0.0 0.0 +it 09_hydro_pump 1 46 0.0 0.0 +it 01_solar 1 47 1.0 0.0 +it 02_wind_on 1 47 1.0 0.0 +it 03_wind_off 1 47 1.0 0.0 +it 04_res 1 47 0.0 0.0 +it 05_nuclear 1 47 0.0 0.0 +it 06_coal 1 47 0.0 0.0 +it 07_gas 1 47 0.0 0.0 +it 08_non-res 1 47 0.0 0.0 +it 09_hydro_pump 1 47 0.0 0.0 +it 01_solar 1 48 1.0 0.0 +it 02_wind_on 1 48 1.0 0.0 +it 03_wind_off 1 48 1.0 0.0 +it 04_res 1 48 0.0 0.0 +it 05_nuclear 1 48 0.0 0.0 +it 06_coal 1 48 0.0 0.0 +it 07_gas 1 48 0.0 0.0 +it 08_non-res 1 48 0.0 0.0 +it 09_hydro_pump 1 48 0.0 0.0 +it 01_solar 1 49 1.0 0.0 +it 02_wind_on 1 49 1.0 0.0 +it 03_wind_off 1 49 1.0 0.0 +it 04_res 1 49 0.0 0.0 +it 05_nuclear 1 49 0.0 0.0 +it 06_coal 1 49 0.0 0.0 +it 07_gas 1 49 0.0 0.0 +it 08_non-res 1 49 0.0 0.0 +it 09_hydro_pump 1 49 0.0 0.0 +it 01_solar 1 50 1.0 0.0 +it 02_wind_on 1 50 1.0 0.0 +it 03_wind_off 1 50 1.0 0.0 +it 04_res 1 50 0.0 0.0 +it 05_nuclear 1 50 0.0 0.0 +it 06_coal 1 50 0.0 0.0 +it 07_gas 1 50 0.0 0.0 +it 08_non-res 1 50 0.0 0.0 +it 09_hydro_pump 1 50 0.0 0.0 +it 01_solar 1 51 1.0 0.0 +it 02_wind_on 1 51 1.0 0.0 +it 03_wind_off 1 51 1.0 0.0 +it 04_res 1 51 0.0 0.0 +it 05_nuclear 1 51 0.0 0.0 +it 06_coal 1 51 0.0 0.0 +it 07_gas 1 51 0.0 0.0 +it 08_non-res 1 51 0.0 0.0 +it 09_hydro_pump 1 51 0.0 0.0 +it 01_solar 1 52 1.0 0.0 +it 02_wind_on 1 52 1.0 0.0 +it 03_wind_off 1 52 1.0 0.0 +it 04_res 1 52 0.0 0.0 +it 05_nuclear 1 52 0.0 0.0 +it 06_coal 1 52 0.0 0.0 +it 07_gas 1 52 0.0 0.0 +it 08_non-res 1 52 0.0 0.0 +it 09_hydro_pump 1 52 0.0 0.0 +it 01_solar 1 53 1.0 0.0 +it 02_wind_on 1 53 1.0 0.0 +it 03_wind_off 1 53 1.0 0.0 +it 04_res 1 53 0.0 0.0 +it 05_nuclear 1 53 0.0 0.0 +it 06_coal 1 53 0.0 0.0 +it 07_gas 1 53 0.0 0.0 +it 08_non-res 1 53 0.0 0.0 +it 09_hydro_pump 1 53 0.0 0.0 +it 01_solar 1 54 1.0 0.0 +it 02_wind_on 1 54 1.0 0.0 +it 03_wind_off 1 54 1.0 0.0 +it 04_res 1 54 0.0 0.0 +it 05_nuclear 1 54 0.0 0.0 +it 06_coal 1 54 0.0 0.0 +it 07_gas 1 54 0.0 0.0 +it 08_non-res 1 54 0.0 0.0 +it 09_hydro_pump 1 54 0.0 0.0 +it 01_solar 1 55 1.0 0.0 +it 02_wind_on 1 55 1.0 0.0 +it 03_wind_off 1 55 1.0 0.0 +it 04_res 1 55 0.0 0.0 +it 05_nuclear 1 55 0.0 0.0 +it 06_coal 1 55 0.0 0.0 +it 07_gas 1 55 0.0 0.0 +it 08_non-res 1 55 0.0 0.0 +it 09_hydro_pump 1 55 0.0 0.0 +it 01_solar 1 56 1.0 0.0 +it 02_wind_on 1 56 1.0 0.0 +it 03_wind_off 1 56 1.0 0.0 +it 04_res 1 56 0.0 0.0 +it 05_nuclear 1 56 0.0 0.0 +it 06_coal 1 56 0.0 0.0 +it 07_gas 1 56 0.0 0.0 +it 08_non-res 1 56 0.0 0.0 +it 09_hydro_pump 1 56 0.0 0.0 +it 01_solar 1 57 1.0 0.0 +it 02_wind_on 1 57 1.0 0.0 +it 03_wind_off 1 57 1.0 0.0 +it 04_res 1 57 0.0 0.0 +it 05_nuclear 1 57 0.0 0.0 +it 06_coal 1 57 0.0 0.0 +it 07_gas 1 57 0.0 0.0 +it 08_non-res 1 57 0.0 0.0 +it 09_hydro_pump 1 57 0.0 0.0 +it 01_solar 1 58 1.0 0.0 +it 02_wind_on 1 58 1.0 0.0 +it 03_wind_off 1 58 1.0 0.0 +it 04_res 1 58 0.0 0.0 +it 05_nuclear 1 58 0.0 0.0 +it 06_coal 1 58 0.0 0.0 +it 07_gas 1 58 0.0 0.0 +it 08_non-res 1 58 0.0 0.0 +it 09_hydro_pump 1 58 0.0 0.0 +it 01_solar 1 59 1.0 0.0 +it 02_wind_on 1 59 1.0 0.0 +it 03_wind_off 1 59 1.0 0.0 +it 04_res 1 59 0.0 0.0 +it 05_nuclear 1 59 0.0 0.0 +it 06_coal 1 59 0.0 0.0 +it 07_gas 1 59 0.0 0.0 +it 08_non-res 1 59 0.0 0.0 +it 09_hydro_pump 1 59 0.0 0.0 +it 01_solar 1 60 1.0 0.0 +it 02_wind_on 1 60 1.0 0.0 +it 03_wind_off 1 60 1.0 0.0 +it 04_res 1 60 0.0 0.0 +it 05_nuclear 1 60 0.0 0.0 +it 06_coal 1 60 0.0 0.0 +it 07_gas 1 60 0.0 0.0 +it 08_non-res 1 60 0.0 0.0 +it 09_hydro_pump 1 60 0.0 0.0 +it 01_solar 1 61 1.0 0.0 +it 02_wind_on 1 61 1.0 0.0 +it 03_wind_off 1 61 1.0 0.0 +it 04_res 1 61 0.0 0.0 +it 05_nuclear 1 61 0.0 0.0 +it 06_coal 1 61 0.0 0.0 +it 07_gas 1 61 0.0 0.0 +it 08_non-res 1 61 0.0 0.0 +it 09_hydro_pump 1 61 0.0 0.0 +it 01_solar 1 62 1.0 0.0 +it 02_wind_on 1 62 1.0 0.0 +it 03_wind_off 1 62 1.0 0.0 +it 04_res 1 62 1.0 0.0 +it 05_nuclear 1 62 0.0 0.0 +it 06_coal 1 62 0.0 0.0 +it 07_gas 1 62 0.0 0.0 +it 08_non-res 1 62 0.0 0.0 +it 09_hydro_pump 1 62 0.0 0.0 +it 01_solar 1 63 1.0 0.0 +it 02_wind_on 1 63 1.0 0.0 +it 03_wind_off 1 63 1.0 0.0 +it 04_res 1 63 1.0 0.0 +it 05_nuclear 1 63 0.0 0.0 +it 06_coal 1 63 0.0 0.0 +it 07_gas 1 63 0.0 0.0 +it 08_non-res 1 63 0.0 0.0 +it 09_hydro_pump 1 63 0.0 0.0 +it 01_solar 1 64 1.0 0.0 +it 02_wind_on 1 64 1.0 0.0 +it 03_wind_off 1 64 1.0 0.0 +it 04_res 1 64 1.0 0.0 +it 05_nuclear 1 64 0.0 0.0 +it 06_coal 1 64 0.0 0.0 +it 07_gas 1 64 0.0 0.0 +it 08_non-res 1 64 0.0 0.0 +it 09_hydro_pump 1 64 0.0 0.0 +it 01_solar 1 65 1.0 0.0 +it 02_wind_on 1 65 1.0 0.0 +it 03_wind_off 1 65 1.0 0.0 +it 04_res 1 65 1.0 0.0 +it 05_nuclear 1 65 0.0 0.0 +it 06_coal 1 65 0.0 0.0 +it 07_gas 1 65 0.0 0.0 +it 08_non-res 1 65 0.0 0.0 +it 09_hydro_pump 1 65 0.0 0.0 +it 01_solar 1 66 1.0 0.0 +it 02_wind_on 1 66 1.0 0.0 +it 03_wind_off 1 66 1.0 0.0 +it 04_res 1 66 1.0 0.0 +it 05_nuclear 1 66 0.0 0.0 +it 06_coal 1 66 0.0 0.0 +it 07_gas 1 66 0.0 0.0 +it 08_non-res 1 66 0.0 0.0 +it 09_hydro_pump 1 66 0.0 0.0 +it 01_solar 1 67 1.0 0.0 +it 02_wind_on 1 67 1.0 0.0 +it 03_wind_off 1 67 1.0 0.0 +it 04_res 1 67 1.0 0.0 +it 05_nuclear 1 67 0.0 0.0 +it 06_coal 1 67 0.0 0.0 +it 07_gas 1 67 0.0 0.0 +it 08_non-res 1 67 0.0 0.0 +it 09_hydro_pump 1 67 0.0 0.0 +it 01_solar 1 68 1.0 0.0 +it 02_wind_on 1 68 1.0 0.0 +it 03_wind_off 1 68 1.0 0.0 +it 04_res 1 68 1.0 0.0 +it 05_nuclear 1 68 0.0 0.0 +it 06_coal 1 68 0.0 0.0 +it 07_gas 1 68 0.0 0.0 +it 08_non-res 1 68 0.0 0.0 +it 09_hydro_pump 1 68 0.0 0.0 +it 01_solar 1 69 1.0 0.0 +it 02_wind_on 1 69 1.0 0.0 +it 03_wind_off 1 69 1.0 0.0 +it 04_res 1 69 1.0 0.0 +it 05_nuclear 1 69 0.0 0.0 +it 06_coal 1 69 0.0 0.0 +it 07_gas 1 69 0.0 0.0 +it 08_non-res 1 69 0.0 0.0 +it 09_hydro_pump 1 69 0.0 0.0 +it 01_solar 1 70 1.0 0.0 +it 02_wind_on 1 70 1.0 0.0 +it 03_wind_off 1 70 1.0 0.0 +it 04_res 1 70 1.0 0.0 +it 05_nuclear 1 70 0.0 0.0 +it 06_coal 1 70 0.0 0.0 +it 07_gas 1 70 0.0 0.0 +it 08_non-res 1 70 0.0 0.0 +it 09_hydro_pump 1 70 0.0 0.0 +it 01_solar 1 71 1.0 0.0 +it 02_wind_on 1 71 1.0 0.0 +it 03_wind_off 1 71 1.0 0.0 +it 04_res 1 71 1.0 0.0 +it 05_nuclear 1 71 0.0 0.0 +it 06_coal 1 71 0.0 0.0 +it 07_gas 1 71 0.0 0.0 +it 08_non-res 1 71 0.0 0.0 +it 09_hydro_pump 1 71 0.0 0.0 +it 01_solar 1 72 1.0 0.0 +it 02_wind_on 1 72 1.0 0.0 +it 03_wind_off 1 72 1.0 0.0 +it 04_res 1 72 1.0 0.0 +it 05_nuclear 1 72 0.0 0.0 +it 06_coal 1 72 0.0 0.0 +it 07_gas 1 72 0.0 0.0 +it 08_non-res 1 72 0.0 0.0 +it 09_hydro_pump 1 72 0.0 0.0 +it 01_solar 1 73 1.0 0.0 +it 02_wind_on 1 73 1.0 0.0 +it 03_wind_off 1 73 1.0 0.0 +it 04_res 1 73 1.0 0.0 +it 05_nuclear 1 73 0.0 0.0 +it 06_coal 1 73 0.0 0.0 +it 07_gas 1 73 0.0 0.0 +it 08_non-res 1 73 0.0 0.0 +it 09_hydro_pump 1 73 0.0 0.0 +it 01_solar 1 74 1.0 0.0 +it 02_wind_on 1 74 1.0 0.0 +it 03_wind_off 1 74 1.0 0.0 +it 04_res 1 74 1.0 0.0 +it 05_nuclear 1 74 0.0 0.0 +it 06_coal 1 74 0.0 0.0 +it 07_gas 1 74 0.0 0.0 +it 08_non-res 1 74 0.0 0.0 +it 09_hydro_pump 1 74 0.0 0.0 +it 01_solar 1 75 1.0 0.0 +it 02_wind_on 1 75 1.0 0.0 +it 03_wind_off 1 75 1.0 0.0 +it 04_res 1 75 1.0 0.0 +it 05_nuclear 1 75 0.0 0.0 +it 06_coal 1 75 0.0 0.0 +it 07_gas 1 75 0.0 0.0 +it 08_non-res 1 75 0.0 0.0 +it 09_hydro_pump 1 75 0.0 0.0 +it 01_solar 1 76 1.0 0.0 +it 02_wind_on 1 76 1.0 0.0 +it 03_wind_off 1 76 1.0 0.0 +it 04_res 1 76 1.0 0.0 +it 05_nuclear 1 76 0.0 0.0 +it 06_coal 1 76 0.0 0.0 +it 07_gas 1 76 0.0 0.0 +it 08_non-res 1 76 0.0 0.0 +it 09_hydro_pump 1 76 0.0 0.0 +it 01_solar 1 77 1.0 0.0 +it 02_wind_on 1 77 1.0 0.0 +it 03_wind_off 1 77 1.0 0.0 +it 04_res 1 77 1.0 0.0 +it 05_nuclear 1 77 0.0 0.0 +it 06_coal 1 77 0.0 0.0 +it 07_gas 1 77 0.0 0.0 +it 08_non-res 1 77 0.0 0.0 +it 09_hydro_pump 1 77 0.0 0.0 +it 01_solar 1 78 1.0 0.0 +it 02_wind_on 1 78 1.0 0.0 +it 03_wind_off 1 78 1.0 0.0 +it 04_res 1 78 1.0 0.0 +it 05_nuclear 1 78 0.0 0.0 +it 06_coal 1 78 0.0 0.0 +it 07_gas 1 78 0.0 0.0 +it 08_non-res 1 78 0.0 0.0 +it 09_hydro_pump 1 78 0.0 0.0 +it 01_solar 1 79 1.0 0.0 +it 02_wind_on 1 79 1.0 0.0 +it 03_wind_off 1 79 1.0 0.0 +it 04_res 1 79 1.0 0.0 +it 05_nuclear 1 79 0.0 0.0 +it 06_coal 1 79 0.0 0.0 +it 07_gas 1 79 0.0 0.0 +it 08_non-res 1 79 0.0 0.0 +it 09_hydro_pump 1 79 0.0 0.0 +it 01_solar 1 80 1.0 0.0 +it 02_wind_on 1 80 1.0 0.0 +it 03_wind_off 1 80 1.0 0.0 +it 04_res 1 80 1.0 0.0 +it 05_nuclear 1 80 0.0 0.0 +it 06_coal 1 80 0.0 0.0 +it 07_gas 1 80 0.0 0.0 +it 08_non-res 1 80 0.0 0.0 +it 09_hydro_pump 1 80 0.0 0.0 +it 01_solar 1 81 1.0 0.0 +it 02_wind_on 1 81 1.0 0.0 +it 03_wind_off 1 81 1.0 0.0 +it 04_res 1 81 1.0 0.0 +it 05_nuclear 1 81 0.0 0.0 +it 06_coal 1 81 0.0 0.0 +it 07_gas 1 81 0.0 0.0 +it 08_non-res 1 81 0.0 0.0 +it 09_hydro_pump 1 81 0.0 0.0 +it 01_solar 1 82 1.0 0.0 +it 02_wind_on 1 82 1.0 0.0 +it 03_wind_off 1 82 1.0 0.0 +it 04_res 1 82 1.0 0.0 +it 05_nuclear 1 82 1.0 0.0 +it 06_coal 1 82 0.0 0.0 +it 07_gas 1 82 0.0 0.0 +it 08_non-res 1 82 0.0 0.0 +it 09_hydro_pump 1 82 0.0 0.0 +it 01_solar 1 83 1.0 0.0 +it 02_wind_on 1 83 1.0 0.0 +it 03_wind_off 1 83 1.0 0.0 +it 04_res 1 83 1.0 0.0 +it 05_nuclear 1 83 1.0 0.0 +it 06_coal 1 83 0.0 0.0 +it 07_gas 1 83 0.0 0.0 +it 08_non-res 1 83 0.0 0.0 +it 09_hydro_pump 1 83 0.0 0.0 +it 01_solar 1 84 1.0 0.0 +it 02_wind_on 1 84 1.0 0.0 +it 03_wind_off 1 84 1.0 0.0 +it 04_res 1 84 1.0 0.0 +it 05_nuclear 1 84 1.0 0.0 +it 06_coal 1 84 0.0 0.0 +it 07_gas 1 84 0.0 0.0 +it 08_non-res 1 84 0.0 0.0 +it 09_hydro_pump 1 84 0.0 0.0 +it 01_solar 1 85 1.0 0.0 +it 02_wind_on 1 85 1.0 0.0 +it 03_wind_off 1 85 1.0 0.0 +it 04_res 1 85 1.0 0.0 +it 05_nuclear 1 85 1.0 0.0 +it 06_coal 1 85 0.0 0.0 +it 07_gas 1 85 0.0 0.0 +it 08_non-res 1 85 0.0 0.0 +it 09_hydro_pump 1 85 0.0 0.0 +it 01_solar 1 86 1.0 0.0 +it 02_wind_on 1 86 1.0 0.0 +it 03_wind_off 1 86 1.0 0.0 +it 04_res 1 86 1.0 0.0 +it 05_nuclear 1 86 1.0 0.0 +it 06_coal 1 86 0.0 0.0 +it 07_gas 1 86 0.0 0.0 +it 08_non-res 1 86 0.0 0.0 +it 09_hydro_pump 1 86 0.0 0.0 +it 01_solar 1 87 1.0 0.0 +it 02_wind_on 1 87 1.0 0.0 +it 03_wind_off 1 87 1.0 0.0 +it 04_res 1 87 1.0 0.0 +it 05_nuclear 1 87 1.0 0.0 +it 06_coal 1 87 0.0 0.0 +it 07_gas 1 87 0.0 0.0 +it 08_non-res 1 87 0.0 0.0 +it 09_hydro_pump 1 87 0.0 0.0 +it 01_solar 1 88 1.0 0.0 +it 02_wind_on 1 88 1.0 0.0 +it 03_wind_off 1 88 1.0 0.0 +it 04_res 1 88 1.0 0.0 +it 05_nuclear 1 88 1.0 0.0 +it 06_coal 1 88 0.0 0.0 +it 07_gas 1 88 0.0 0.0 +it 08_non-res 1 88 0.0 0.0 +it 09_hydro_pump 1 88 0.0 0.0 +it 01_solar 1 89 1.0 0.0 +it 02_wind_on 1 89 1.0 0.0 +it 03_wind_off 1 89 1.0 0.0 +it 04_res 1 89 1.0 0.0 +it 05_nuclear 1 89 1.0 0.0 +it 06_coal 1 89 0.0 0.0 +it 07_gas 1 89 0.0 0.0 +it 08_non-res 1 89 0.0 0.0 +it 09_hydro_pump 1 89 0.0 0.0 +it 01_solar 1 90 1.0 0.0 +it 02_wind_on 1 90 1.0 0.0 +it 03_wind_off 1 90 1.0 0.0 +it 04_res 1 90 1.0 0.0 +it 05_nuclear 1 90 1.0 0.0 +it 06_coal 1 90 0.0 0.0 +it 07_gas 1 90 0.0 0.0 +it 08_non-res 1 90 0.0 0.0 +it 09_hydro_pump 1 90 0.0 0.0 +it 01_solar 1 91 1.0 0.0 +it 02_wind_on 1 91 1.0 0.0 +it 03_wind_off 1 91 1.0 0.0 +it 04_res 1 91 1.0 0.0 +it 05_nuclear 1 91 1.0 0.0 +it 06_coal 1 91 0.0 0.0 +it 07_gas 1 91 0.0 0.0 +it 08_non-res 1 91 0.0 0.0 +it 09_hydro_pump 1 91 0.0 0.0 +it 01_solar 1 92 1.0 0.0 +it 02_wind_on 1 92 1.0 0.0 +it 03_wind_off 1 92 1.0 0.0 +it 04_res 1 92 1.0 0.0 +it 05_nuclear 1 92 1.0 0.0 +it 06_coal 1 92 0.0 0.0 +it 07_gas 1 92 0.0 0.0 +it 08_non-res 1 92 0.0 0.0 +it 09_hydro_pump 1 92 0.0 0.0 +it 01_solar 1 93 1.0 0.0 +it 02_wind_on 1 93 1.0 0.0 +it 03_wind_off 1 93 1.0 0.0 +it 04_res 1 93 1.0 0.0 +it 05_nuclear 1 93 1.0 0.0 +it 06_coal 1 93 0.0 0.0 +it 07_gas 1 93 0.0 0.0 +it 08_non-res 1 93 0.0 0.0 +it 09_hydro_pump 1 93 0.0 0.0 +it 01_solar 1 94 1.0 0.0 +it 02_wind_on 1 94 1.0 0.0 +it 03_wind_off 1 94 1.0 0.0 +it 04_res 1 94 1.0 0.0 +it 05_nuclear 1 94 1.0 0.0 +it 06_coal 1 94 0.0 0.0 +it 07_gas 1 94 0.0 0.0 +it 08_non-res 1 94 0.0 0.0 +it 09_hydro_pump 1 94 0.0 0.0 +it 01_solar 1 95 1.0 0.0 +it 02_wind_on 1 95 1.0 0.0 +it 03_wind_off 1 95 1.0 0.0 +it 04_res 1 95 1.0 0.0 +it 05_nuclear 1 95 1.0 0.0 +it 06_coal 1 95 0.0 0.0 +it 07_gas 1 95 0.0 0.0 +it 08_non-res 1 95 0.0 0.0 +it 09_hydro_pump 1 95 0.0 0.0 +it 01_solar 1 96 1.0 0.0 +it 02_wind_on 1 96 1.0 0.0 +it 03_wind_off 1 96 1.0 0.0 +it 04_res 1 96 1.0 0.0 +it 05_nuclear 1 96 1.0 0.0 +it 06_coal 1 96 0.0 0.0 +it 07_gas 1 96 0.0 0.0 +it 08_non-res 1 96 0.0 0.0 +it 09_hydro_pump 1 96 0.0 0.0 +it 01_solar 1 97 1.0 0.0 +it 02_wind_on 1 97 1.0 0.0 +it 03_wind_off 1 97 1.0 0.0 +it 04_res 1 97 1.0 0.0 +it 05_nuclear 1 97 1.0 0.0 +it 06_coal 1 97 0.0 0.0 +it 07_gas 1 97 0.0 0.0 +it 08_non-res 1 97 0.0 0.0 +it 09_hydro_pump 1 97 0.0 0.0 +it 01_solar 1 98 1.0 0.0 +it 02_wind_on 1 98 1.0 0.0 +it 03_wind_off 1 98 1.0 0.0 +it 04_res 1 98 1.0 0.0 +it 05_nuclear 1 98 1.0 0.0 +it 06_coal 1 98 0.0 0.0 +it 07_gas 1 98 0.0 0.0 +it 08_non-res 1 98 0.0 0.0 +it 09_hydro_pump 1 98 0.0 0.0 +it 01_solar 1 99 1.0 0.0 +it 02_wind_on 1 99 1.0 0.0 +it 03_wind_off 1 99 1.0 0.0 +it 04_res 1 99 1.0 0.0 +it 05_nuclear 1 99 1.0 0.0 +it 06_coal 1 99 0.0 0.0 +it 07_gas 1 99 0.0 0.0 +it 08_non-res 1 99 0.0 0.0 +it 09_hydro_pump 1 99 0.0 0.0 +it 01_solar 1 100 1.0 0.0 +it 02_wind_on 1 100 1.0 0.0 +it 03_wind_off 1 100 1.0 0.0 +it 04_res 1 100 1.0 0.0 +it 05_nuclear 1 100 1.0 0.0 +it 06_coal 1 100 0.0 0.0 +it 07_gas 1 100 0.0 0.0 +it 08_non-res 1 100 0.0 0.0 +it 09_hydro_pump 1 100 0.0 0.0 +it 01_solar 1 101 1.0 0.0 +it 02_wind_on 1 101 1.0 0.0 +it 03_wind_off 1 101 1.0 0.0 +it 04_res 1 101 1.0 0.0 +it 05_nuclear 1 101 1.0 0.0 +it 06_coal 1 101 0.0 0.0 +it 07_gas 1 101 0.0 0.0 +it 08_non-res 1 101 0.0 0.0 +it 09_hydro_pump 1 101 0.0 0.0 +it 01_solar 1 102 1.0 0.0 +it 02_wind_on 1 102 1.0 0.0 +it 03_wind_off 1 102 1.0 0.0 +it 04_res 1 102 1.0 0.0 +it 05_nuclear 1 102 1.0 0.0 +it 06_coal 1 102 1.0 0.0 +it 07_gas 1 102 0.0 0.0 +it 08_non-res 1 102 0.0 0.0 +it 09_hydro_pump 1 102 0.0 0.0 +it 01_solar 1 103 1.0 0.0 +it 02_wind_on 1 103 1.0 0.0 +it 03_wind_off 1 103 1.0 0.0 +it 04_res 1 103 1.0 0.0 +it 05_nuclear 1 103 1.0 0.0 +it 06_coal 1 103 1.0 0.0 +it 07_gas 1 103 0.0 0.0 +it 08_non-res 1 103 0.0 0.0 +it 09_hydro_pump 1 103 0.0 0.0 +it 01_solar 1 104 1.0 0.0 +it 02_wind_on 1 104 1.0 0.0 +it 03_wind_off 1 104 1.0 0.0 +it 04_res 1 104 1.0 0.0 +it 05_nuclear 1 104 1.0 0.0 +it 06_coal 1 104 1.0 0.0 +it 07_gas 1 104 0.0 0.0 +it 08_non-res 1 104 0.0 0.0 +it 09_hydro_pump 1 104 0.0 0.0 +it 01_solar 1 105 1.0 0.0 +it 02_wind_on 1 105 1.0 0.0 +it 03_wind_off 1 105 1.0 0.0 +it 04_res 1 105 1.0 0.0 +it 05_nuclear 1 105 1.0 0.0 +it 06_coal 1 105 1.0 0.0 +it 07_gas 1 105 0.0 0.0 +it 08_non-res 1 105 0.0 0.0 +it 09_hydro_pump 1 105 0.0 0.0 +it 01_solar 1 106 1.0 0.0 +it 02_wind_on 1 106 1.0 0.0 +it 03_wind_off 1 106 1.0 0.0 +it 04_res 1 106 1.0 0.0 +it 05_nuclear 1 106 1.0 0.0 +it 06_coal 1 106 1.0 0.0 +it 07_gas 1 106 0.0 0.0 +it 08_non-res 1 106 0.0 0.0 +it 09_hydro_pump 1 106 0.0 0.0 +it 01_solar 1 107 1.0 0.0 +it 02_wind_on 1 107 1.0 0.0 +it 03_wind_off 1 107 1.0 0.0 +it 04_res 1 107 1.0 0.0 +it 05_nuclear 1 107 1.0 0.0 +it 06_coal 1 107 1.0 0.0 +it 07_gas 1 107 0.0 0.0 +it 08_non-res 1 107 0.0 0.0 +it 09_hydro_pump 1 107 0.0 0.0 +it 01_solar 1 108 1.0 0.0 +it 02_wind_on 1 108 1.0 0.0 +it 03_wind_off 1 108 1.0 0.0 +it 04_res 1 108 1.0 0.0 +it 05_nuclear 1 108 1.0 0.0 +it 06_coal 1 108 1.0 0.0 +it 07_gas 1 108 0.0 0.0 +it 08_non-res 1 108 0.0 0.0 +it 09_hydro_pump 1 108 0.0 0.0 +it 01_solar 1 109 1.0 0.0 +it 02_wind_on 1 109 1.0 0.0 +it 03_wind_off 1 109 1.0 0.0 +it 04_res 1 109 1.0 0.0 +it 05_nuclear 1 109 1.0 0.0 +it 06_coal 1 109 1.0 0.0 +it 07_gas 1 109 0.0 0.0 +it 08_non-res 1 109 0.0 0.0 +it 09_hydro_pump 1 109 0.0 0.0 +it 01_solar 1 110 1.0 0.0 +it 02_wind_on 1 110 1.0 0.0 +it 03_wind_off 1 110 1.0 0.0 +it 04_res 1 110 1.0 0.0 +it 05_nuclear 1 110 1.0 0.0 +it 06_coal 1 110 1.0 0.0 +it 07_gas 1 110 0.0 0.0 +it 08_non-res 1 110 0.0 0.0 +it 09_hydro_pump 1 110 0.0 0.0 +it 01_solar 1 111 1.0 0.0 +it 02_wind_on 1 111 1.0 0.0 +it 03_wind_off 1 111 1.0 0.0 +it 04_res 1 111 1.0 0.0 +it 05_nuclear 1 111 1.0 0.0 +it 06_coal 1 111 1.0 0.0 +it 07_gas 1 111 0.0 0.0 +it 08_non-res 1 111 0.0 0.0 +it 09_hydro_pump 1 111 0.0 0.0 +it 01_solar 1 112 1.0 0.0 +it 02_wind_on 1 112 1.0 0.0 +it 03_wind_off 1 112 1.0 0.0 +it 04_res 1 112 1.0 0.0 +it 05_nuclear 1 112 1.0 0.0 +it 06_coal 1 112 1.0 0.0 +it 07_gas 1 112 0.0 0.0 +it 08_non-res 1 112 0.0 0.0 +it 09_hydro_pump 1 112 0.0 0.0 +it 01_solar 1 113 1.0 0.0 +it 02_wind_on 1 113 1.0 0.0 +it 03_wind_off 1 113 1.0 0.0 +it 04_res 1 113 1.0 0.0 +it 05_nuclear 1 113 1.0 0.0 +it 06_coal 1 113 1.0 0.0 +it 07_gas 1 113 0.0 0.0 +it 08_non-res 1 113 0.0 0.0 +it 09_hydro_pump 1 113 0.0 0.0 +it 01_solar 1 114 1.0 0.0 +it 02_wind_on 1 114 1.0 0.0 +it 03_wind_off 1 114 1.0 0.0 +it 04_res 1 114 1.0 0.0 +it 05_nuclear 1 114 1.0 0.0 +it 06_coal 1 114 1.0 0.0 +it 07_gas 1 114 0.0 0.0 +it 08_non-res 1 114 0.0 0.0 +it 09_hydro_pump 1 114 0.0 0.0 +it 01_solar 1 115 1.0 0.0 +it 02_wind_on 1 115 1.0 0.0 +it 03_wind_off 1 115 1.0 0.0 +it 04_res 1 115 1.0 0.0 +it 05_nuclear 1 115 1.0 0.0 +it 06_coal 1 115 1.0 0.0 +it 07_gas 1 115 0.0 0.0 +it 08_non-res 1 115 0.0 0.0 +it 09_hydro_pump 1 115 0.0 0.0 +it 01_solar 1 116 1.0 0.0 +it 02_wind_on 1 116 1.0 0.0 +it 03_wind_off 1 116 1.0 0.0 +it 04_res 1 116 1.0 0.0 +it 05_nuclear 1 116 1.0 0.0 +it 06_coal 1 116 1.0 0.0 +it 07_gas 1 116 0.0 0.0 +it 08_non-res 1 116 0.0 0.0 +it 09_hydro_pump 1 116 0.0 0.0 +it 01_solar 1 117 1.0 0.0 +it 02_wind_on 1 117 1.0 0.0 +it 03_wind_off 1 117 1.0 0.0 +it 04_res 1 117 1.0 0.0 +it 05_nuclear 1 117 1.0 0.0 +it 06_coal 1 117 1.0 0.0 +it 07_gas 1 117 0.0 0.0 +it 08_non-res 1 117 0.0 0.0 +it 09_hydro_pump 1 117 0.0 0.0 +it 01_solar 1 118 1.0 0.0 +it 02_wind_on 1 118 1.0 0.0 +it 03_wind_off 1 118 1.0 0.0 +it 04_res 1 118 1.0 0.0 +it 05_nuclear 1 118 1.0 0.0 +it 06_coal 1 118 1.0 0.0 +it 07_gas 1 118 0.0 0.0 +it 08_non-res 1 118 0.0 0.0 +it 09_hydro_pump 1 118 0.0 0.0 +it 01_solar 1 119 1.0 0.0 +it 02_wind_on 1 119 1.0 0.0 +it 03_wind_off 1 119 1.0 0.0 +it 04_res 1 119 1.0 0.0 +it 05_nuclear 1 119 1.0 0.0 +it 06_coal 1 119 1.0 0.0 +it 07_gas 1 119 0.0 0.0 +it 08_non-res 1 119 0.0 0.0 +it 09_hydro_pump 1 119 0.0 0.0 +it 01_solar 1 120 1.0 0.0 +it 02_wind_on 1 120 1.0 0.0 +it 03_wind_off 1 120 1.0 0.0 +it 04_res 1 120 1.0 0.0 +it 05_nuclear 1 120 1.0 0.0 +it 06_coal 1 120 1.0 0.0 +it 07_gas 1 120 0.0 0.0 +it 08_non-res 1 120 0.0 0.0 +it 09_hydro_pump 1 120 0.0 0.0 +it 01_solar 1 121 1.0 0.0 +it 02_wind_on 1 121 1.0 0.0 +it 03_wind_off 1 121 1.0 0.0 +it 04_res 1 121 1.0 0.0 +it 05_nuclear 1 121 1.0 0.0 +it 06_coal 1 121 1.0 0.0 +it 07_gas 1 121 0.0 0.0 +it 08_non-res 1 121 0.0 0.0 +it 09_hydro_pump 1 121 0.0 0.0 +it 01_solar 1 122 1.0 0.0 +it 02_wind_on 1 122 1.0 0.0 +it 03_wind_off 1 122 1.0 0.0 +it 04_res 1 122 1.0 0.0 +it 05_nuclear 1 122 1.0 0.0 +it 06_coal 1 122 1.0 0.0 +it 07_gas 1 122 1.0 0.0 +it 08_non-res 1 122 0.0 0.0 +it 09_hydro_pump 1 122 0.0 0.0 +it 01_solar 1 123 1.0 0.0 +it 02_wind_on 1 123 1.0 0.0 +it 03_wind_off 1 123 1.0 0.0 +it 04_res 1 123 1.0 0.0 +it 05_nuclear 1 123 1.0 0.0 +it 06_coal 1 123 1.0 0.0 +it 07_gas 1 123 1.0 0.0 +it 08_non-res 1 123 0.0 0.0 +it 09_hydro_pump 1 123 0.0 0.0 +it 01_solar 1 124 1.0 0.0 +it 02_wind_on 1 124 1.0 0.0 +it 03_wind_off 1 124 1.0 0.0 +it 04_res 1 124 1.0 0.0 +it 05_nuclear 1 124 1.0 0.0 +it 06_coal 1 124 1.0 0.0 +it 07_gas 1 124 1.0 0.0 +it 08_non-res 1 124 0.0 0.0 +it 09_hydro_pump 1 124 0.0 0.0 +it 01_solar 1 125 1.0 0.0 +it 02_wind_on 1 125 1.0 0.0 +it 03_wind_off 1 125 1.0 0.0 +it 04_res 1 125 1.0 0.0 +it 05_nuclear 1 125 1.0 0.0 +it 06_coal 1 125 1.0 0.0 +it 07_gas 1 125 1.0 0.0 +it 08_non-res 1 125 0.0 0.0 +it 09_hydro_pump 1 125 0.0 0.0 +it 01_solar 1 126 1.0 0.0 +it 02_wind_on 1 126 1.0 0.0 +it 03_wind_off 1 126 1.0 0.0 +it 04_res 1 126 1.0 0.0 +it 05_nuclear 1 126 1.0 0.0 +it 06_coal 1 126 1.0 0.0 +it 07_gas 1 126 1.0 0.0 +it 08_non-res 1 126 0.0 0.0 +it 09_hydro_pump 1 126 0.0 0.0 +it 01_solar 1 127 1.0 0.0 +it 02_wind_on 1 127 1.0 0.0 +it 03_wind_off 1 127 1.0 0.0 +it 04_res 1 127 1.0 0.0 +it 05_nuclear 1 127 1.0 0.0 +it 06_coal 1 127 1.0 0.0 +it 07_gas 1 127 1.0 0.0 +it 08_non-res 1 127 0.0 0.0 +it 09_hydro_pump 1 127 0.0 0.0 +it 01_solar 1 128 1.0 0.0 +it 02_wind_on 1 128 1.0 0.0 +it 03_wind_off 1 128 1.0 0.0 +it 04_res 1 128 1.0 0.0 +it 05_nuclear 1 128 1.0 0.0 +it 06_coal 1 128 1.0 0.0 +it 07_gas 1 128 1.0 0.0 +it 08_non-res 1 128 0.0 0.0 +it 09_hydro_pump 1 128 0.0 0.0 +it 01_solar 1 129 1.0 0.0 +it 02_wind_on 1 129 1.0 0.0 +it 03_wind_off 1 129 1.0 0.0 +it 04_res 1 129 1.0 0.0 +it 05_nuclear 1 129 1.0 0.0 +it 06_coal 1 129 1.0 0.0 +it 07_gas 1 129 1.0 0.0 +it 08_non-res 1 129 0.0 0.0 +it 09_hydro_pump 1 129 0.0 0.0 +it 01_solar 1 130 1.0 0.0 +it 02_wind_on 1 130 1.0 0.0 +it 03_wind_off 1 130 1.0 0.0 +it 04_res 1 130 1.0 0.0 +it 05_nuclear 1 130 1.0 0.0 +it 06_coal 1 130 1.0 0.0 +it 07_gas 1 130 1.0 0.0 +it 08_non-res 1 130 0.0 0.0 +it 09_hydro_pump 1 130 0.0 0.0 +it 01_solar 1 131 1.0 0.0 +it 02_wind_on 1 131 1.0 0.0 +it 03_wind_off 1 131 1.0 0.0 +it 04_res 1 131 1.0 0.0 +it 05_nuclear 1 131 1.0 0.0 +it 06_coal 1 131 1.0 0.0 +it 07_gas 1 131 1.0 0.0 +it 08_non-res 1 131 0.0 0.0 +it 09_hydro_pump 1 131 0.0 0.0 +it 01_solar 1 132 1.0 0.0 +it 02_wind_on 1 132 1.0 0.0 +it 03_wind_off 1 132 1.0 0.0 +it 04_res 1 132 1.0 0.0 +it 05_nuclear 1 132 1.0 0.0 +it 06_coal 1 132 1.0 0.0 +it 07_gas 1 132 1.0 0.0 +it 08_non-res 1 132 0.0 0.0 +it 09_hydro_pump 1 132 0.0 0.0 +it 01_solar 1 133 1.0 0.0 +it 02_wind_on 1 133 1.0 0.0 +it 03_wind_off 1 133 1.0 0.0 +it 04_res 1 133 1.0 0.0 +it 05_nuclear 1 133 1.0 0.0 +it 06_coal 1 133 1.0 0.0 +it 07_gas 1 133 1.0 0.0 +it 08_non-res 1 133 0.0 0.0 +it 09_hydro_pump 1 133 0.0 0.0 +it 01_solar 1 134 1.0 0.0 +it 02_wind_on 1 134 1.0 0.0 +it 03_wind_off 1 134 1.0 0.0 +it 04_res 1 134 1.0 0.0 +it 05_nuclear 1 134 1.0 0.0 +it 06_coal 1 134 1.0 0.0 +it 07_gas 1 134 1.0 0.0 +it 08_non-res 1 134 0.0 0.0 +it 09_hydro_pump 1 134 0.0 0.0 +it 01_solar 1 135 1.0 0.0 +it 02_wind_on 1 135 1.0 0.0 +it 03_wind_off 1 135 1.0 0.0 +it 04_res 1 135 1.0 0.0 +it 05_nuclear 1 135 1.0 0.0 +it 06_coal 1 135 1.0 0.0 +it 07_gas 1 135 1.0 0.0 +it 08_non-res 1 135 0.0 0.0 +it 09_hydro_pump 1 135 0.0 0.0 +it 01_solar 1 136 1.0 0.0 +it 02_wind_on 1 136 1.0 0.0 +it 03_wind_off 1 136 1.0 0.0 +it 04_res 1 136 1.0 0.0 +it 05_nuclear 1 136 1.0 0.0 +it 06_coal 1 136 1.0 0.0 +it 07_gas 1 136 1.0 0.0 +it 08_non-res 1 136 0.0 0.0 +it 09_hydro_pump 1 136 0.0 0.0 +it 01_solar 1 137 1.0 0.0 +it 02_wind_on 1 137 1.0 0.0 +it 03_wind_off 1 137 1.0 0.0 +it 04_res 1 137 1.0 0.0 +it 05_nuclear 1 137 1.0 0.0 +it 06_coal 1 137 1.0 0.0 +it 07_gas 1 137 1.0 0.0 +it 08_non-res 1 137 0.0 0.0 +it 09_hydro_pump 1 137 0.0 0.0 +it 01_solar 1 138 1.0 0.0 +it 02_wind_on 1 138 1.0 0.0 +it 03_wind_off 1 138 1.0 0.0 +it 04_res 1 138 1.0 0.0 +it 05_nuclear 1 138 1.0 0.0 +it 06_coal 1 138 1.0 0.0 +it 07_gas 1 138 1.0 0.0 +it 08_non-res 1 138 0.0 0.0 +it 09_hydro_pump 1 138 0.0 0.0 +it 01_solar 1 139 1.0 0.0 +it 02_wind_on 1 139 1.0 0.0 +it 03_wind_off 1 139 1.0 0.0 +it 04_res 1 139 1.0 0.0 +it 05_nuclear 1 139 1.0 0.0 +it 06_coal 1 139 1.0 0.0 +it 07_gas 1 139 1.0 0.0 +it 08_non-res 1 139 0.0 0.0 +it 09_hydro_pump 1 139 0.0 0.0 +it 01_solar 1 140 1.0 0.0 +it 02_wind_on 1 140 1.0 0.0 +it 03_wind_off 1 140 1.0 0.0 +it 04_res 1 140 1.0 0.0 +it 05_nuclear 1 140 1.0 0.0 +it 06_coal 1 140 1.0 0.0 +it 07_gas 1 140 1.0 0.0 +it 08_non-res 1 140 0.0 0.0 +it 09_hydro_pump 1 140 0.0 0.0 +it 01_solar 1 141 1.0 0.0 +it 02_wind_on 1 141 1.0 0.0 +it 03_wind_off 1 141 1.0 0.0 +it 04_res 1 141 1.0 0.0 +it 05_nuclear 1 141 1.0 0.0 +it 06_coal 1 141 1.0 0.0 +it 07_gas 1 141 1.0 0.0 +it 08_non-res 1 141 0.0 0.0 +it 09_hydro_pump 1 141 0.0 0.0 +it 01_solar 1 142 1.0 0.0 +it 02_wind_on 1 142 1.0 0.0 +it 03_wind_off 1 142 1.0 0.0 +it 04_res 1 142 1.0 0.0 +it 05_nuclear 1 142 1.0 0.0 +it 06_coal 1 142 1.0 0.0 +it 07_gas 1 142 1.0 0.0 +it 08_non-res 1 142 1.0 0.0 +it 09_hydro_pump 1 142 0.0 0.0 +it 01_solar 1 143 1.0 0.0 +it 02_wind_on 1 143 1.0 0.0 +it 03_wind_off 1 143 1.0 0.0 +it 04_res 1 143 1.0 0.0 +it 05_nuclear 1 143 1.0 0.0 +it 06_coal 1 143 1.0 0.0 +it 07_gas 1 143 1.0 0.0 +it 08_non-res 1 143 1.0 0.0 +it 09_hydro_pump 1 143 0.0 0.0 +it 01_solar 1 144 1.0 0.0 +it 02_wind_on 1 144 1.0 0.0 +it 03_wind_off 1 144 1.0 0.0 +it 04_res 1 144 1.0 0.0 +it 05_nuclear 1 144 1.0 0.0 +it 06_coal 1 144 1.0 0.0 +it 07_gas 1 144 1.0 0.0 +it 08_non-res 1 144 1.0 0.0 +it 09_hydro_pump 1 144 0.0 0.0 +it 01_solar 1 145 1.0 0.0 +it 02_wind_on 1 145 1.0 0.0 +it 03_wind_off 1 145 1.0 0.0 +it 04_res 1 145 1.0 0.0 +it 05_nuclear 1 145 1.0 0.0 +it 06_coal 1 145 1.0 0.0 +it 07_gas 1 145 1.0 0.0 +it 08_non-res 1 145 1.0 0.0 +it 09_hydro_pump 1 145 0.0 0.0 +it 01_solar 1 146 1.0 0.0 +it 02_wind_on 1 146 1.0 0.0 +it 03_wind_off 1 146 1.0 0.0 +it 04_res 1 146 1.0 0.0 +it 05_nuclear 1 146 1.0 0.0 +it 06_coal 1 146 1.0 0.0 +it 07_gas 1 146 1.0 0.0 +it 08_non-res 1 146 1.0 0.0 +it 09_hydro_pump 1 146 0.0 0.0 +it 01_solar 1 147 1.0 0.0 +it 02_wind_on 1 147 1.0 0.0 +it 03_wind_off 1 147 1.0 0.0 +it 04_res 1 147 1.0 0.0 +it 05_nuclear 1 147 1.0 0.0 +it 06_coal 1 147 1.0 0.0 +it 07_gas 1 147 1.0 0.0 +it 08_non-res 1 147 1.0 0.0 +it 09_hydro_pump 1 147 0.0 0.0 +it 01_solar 1 148 1.0 0.0 +it 02_wind_on 1 148 1.0 0.0 +it 03_wind_off 1 148 1.0 0.0 +it 04_res 1 148 1.0 0.0 +it 05_nuclear 1 148 1.0 0.0 +it 06_coal 1 148 1.0 0.0 +it 07_gas 1 148 1.0 0.0 +it 08_non-res 1 148 1.0 0.0 +it 09_hydro_pump 1 148 0.0 0.0 +it 01_solar 1 149 1.0 0.0 +it 02_wind_on 1 149 1.0 0.0 +it 03_wind_off 1 149 1.0 0.0 +it 04_res 1 149 1.0 0.0 +it 05_nuclear 1 149 1.0 0.0 +it 06_coal 1 149 1.0 0.0 +it 07_gas 1 149 1.0 0.0 +it 08_non-res 1 149 1.0 0.0 +it 09_hydro_pump 1 149 0.0 0.0 +it 01_solar 1 150 1.0 0.0 +it 02_wind_on 1 150 1.0 0.0 +it 03_wind_off 1 150 1.0 0.0 +it 04_res 1 150 1.0 0.0 +it 05_nuclear 1 150 1.0 0.0 +it 06_coal 1 150 1.0 0.0 +it 07_gas 1 150 1.0 0.0 +it 08_non-res 1 150 1.0 0.0 +it 09_hydro_pump 1 150 0.0 0.0 +it 01_solar 1 151 1.0 0.0 +it 02_wind_on 1 151 1.0 0.0 +it 03_wind_off 1 151 1.0 0.0 +it 04_res 1 151 1.0 0.0 +it 05_nuclear 1 151 1.0 0.0 +it 06_coal 1 151 1.0 0.0 +it 07_gas 1 151 1.0 0.0 +it 08_non-res 1 151 1.0 0.0 +it 09_hydro_pump 1 151 0.0 0.0 +it 01_solar 1 152 1.0 0.0 +it 02_wind_on 1 152 1.0 0.0 +it 03_wind_off 1 152 1.0 0.0 +it 04_res 1 152 1.0 0.0 +it 05_nuclear 1 152 1.0 0.0 +it 06_coal 1 152 1.0 0.0 +it 07_gas 1 152 1.0 0.0 +it 08_non-res 1 152 1.0 0.0 +it 09_hydro_pump 1 152 0.0 0.0 +it 01_solar 1 153 1.0 0.0 +it 02_wind_on 1 153 1.0 0.0 +it 03_wind_off 1 153 1.0 0.0 +it 04_res 1 153 1.0 0.0 +it 05_nuclear 1 153 1.0 0.0 +it 06_coal 1 153 1.0 0.0 +it 07_gas 1 153 1.0 0.0 +it 08_non-res 1 153 1.0 0.0 +it 09_hydro_pump 1 153 0.0 0.0 +it 01_solar 1 154 1.0 0.0 +it 02_wind_on 1 154 1.0 0.0 +it 03_wind_off 1 154 1.0 0.0 +it 04_res 1 154 1.0 0.0 +it 05_nuclear 1 154 1.0 0.0 +it 06_coal 1 154 1.0 0.0 +it 07_gas 1 154 1.0 0.0 +it 08_non-res 1 154 1.0 0.0 +it 09_hydro_pump 1 154 0.0 0.0 +it 01_solar 1 155 1.0 0.0 +it 02_wind_on 1 155 1.0 0.0 +it 03_wind_off 1 155 1.0 0.0 +it 04_res 1 155 1.0 0.0 +it 05_nuclear 1 155 1.0 0.0 +it 06_coal 1 155 1.0 0.0 +it 07_gas 1 155 1.0 0.0 +it 08_non-res 1 155 1.0 0.0 +it 09_hydro_pump 1 155 0.0 0.0 +it 01_solar 1 156 1.0 0.0 +it 02_wind_on 1 156 1.0 0.0 +it 03_wind_off 1 156 1.0 0.0 +it 04_res 1 156 1.0 0.0 +it 05_nuclear 1 156 1.0 0.0 +it 06_coal 1 156 1.0 0.0 +it 07_gas 1 156 1.0 0.0 +it 08_non-res 1 156 1.0 0.0 +it 09_hydro_pump 1 156 0.0 0.0 +it 01_solar 1 157 1.0 0.0 +it 02_wind_on 1 157 1.0 0.0 +it 03_wind_off 1 157 1.0 0.0 +it 04_res 1 157 1.0 0.0 +it 05_nuclear 1 157 1.0 0.0 +it 06_coal 1 157 1.0 0.0 +it 07_gas 1 157 1.0 0.0 +it 08_non-res 1 157 1.0 0.0 +it 09_hydro_pump 1 157 0.0 0.0 +it 01_solar 1 158 1.0 0.0 +it 02_wind_on 1 158 1.0 0.0 +it 03_wind_off 1 158 1.0 0.0 +it 04_res 1 158 1.0 0.0 +it 05_nuclear 1 158 1.0 0.0 +it 06_coal 1 158 1.0 0.0 +it 07_gas 1 158 1.0 0.0 +it 08_non-res 1 158 1.0 0.0 +it 09_hydro_pump 1 158 0.0 0.0 +it 01_solar 1 159 1.0 0.0 +it 02_wind_on 1 159 1.0 0.0 +it 03_wind_off 1 159 1.0 0.0 +it 04_res 1 159 1.0 0.0 +it 05_nuclear 1 159 1.0 0.0 +it 06_coal 1 159 1.0 0.0 +it 07_gas 1 159 1.0 0.0 +it 08_non-res 1 159 1.0 0.0 +it 09_hydro_pump 1 159 0.0 0.0 +it 01_solar 1 160 1.0 0.0 +it 02_wind_on 1 160 1.0 0.0 +it 03_wind_off 1 160 1.0 0.0 +it 04_res 1 160 1.0 0.0 +it 05_nuclear 1 160 1.0 0.0 +it 06_coal 1 160 1.0 0.0 +it 07_gas 1 160 1.0 0.0 +it 08_non-res 1 160 1.0 0.0 +it 09_hydro_pump 1 160 0.0 0.0 +it 01_solar 1 161 1.0 0.0 +it 02_wind_on 1 161 1.0 0.0 +it 03_wind_off 1 161 1.0 0.0 +it 04_res 1 161 1.0 0.0 +it 05_nuclear 1 161 1.0 0.0 +it 06_coal 1 161 1.0 0.0 +it 07_gas 1 161 1.0 0.0 +it 08_non-res 1 161 1.0 0.0 +it 09_hydro_pump 1 161 0.0 0.0 +it 01_solar 1 162 1.0 0.0 +it 02_wind_on 1 162 1.0 0.0 +it 03_wind_off 1 162 1.0 0.0 +it 04_res 1 162 1.0 0.0 +it 05_nuclear 1 162 1.0 0.0 +it 06_coal 1 162 1.0 0.0 +it 07_gas 1 162 1.0 0.0 +it 08_non-res 1 162 1.0 0.0 +it 09_hydro_pump 1 162 1.0 0.0 +it 01_solar 1 163 1.0 0.0 +it 02_wind_on 1 163 1.0 0.0 +it 03_wind_off 1 163 1.0 0.0 +it 04_res 1 163 1.0 0.0 +it 05_nuclear 1 163 1.0 0.0 +it 06_coal 1 163 1.0 0.0 +it 07_gas 1 163 1.0 0.0 +it 08_non-res 1 163 1.0 0.0 +it 09_hydro_pump 1 163 1.0 0.0 +it 01_solar 1 164 1.0 0.0 +it 02_wind_on 1 164 1.0 0.0 +it 03_wind_off 1 164 1.0 0.0 +it 04_res 1 164 1.0 0.0 +it 05_nuclear 1 164 1.0 0.0 +it 06_coal 1 164 1.0 0.0 +it 07_gas 1 164 1.0 0.0 +it 08_non-res 1 164 1.0 0.0 +it 09_hydro_pump 1 164 1.0 0.0 +it 01_solar 1 165 1.0 0.0 +it 02_wind_on 1 165 1.0 0.0 +it 03_wind_off 1 165 1.0 0.0 +it 04_res 1 165 1.0 0.0 +it 05_nuclear 1 165 1.0 0.0 +it 06_coal 1 165 1.0 0.0 +it 07_gas 1 165 1.0 0.0 +it 08_non-res 1 165 1.0 0.0 +it 09_hydro_pump 1 165 1.0 0.0 +it 01_solar 1 166 1.0 0.0 +it 02_wind_on 1 166 1.0 0.0 +it 03_wind_off 1 166 1.0 0.0 +it 04_res 1 166 1.0 0.0 +it 05_nuclear 1 166 1.0 0.0 +it 06_coal 1 166 1.0 0.0 +it 07_gas 1 166 1.0 0.0 +it 08_non-res 1 166 1.0 0.0 +it 09_hydro_pump 1 166 1.0 0.0 +it 01_solar 1 167 1.0 0.0 +it 02_wind_on 1 167 1.0 0.0 +it 03_wind_off 1 167 1.0 0.0 +it 04_res 1 167 1.0 0.0 +it 05_nuclear 1 167 1.0 0.0 +it 06_coal 1 167 1.0 0.0 +it 07_gas 1 167 1.0 0.0 +it 08_non-res 1 167 1.0 0.0 +it 09_hydro_pump 1 167 1.0 0.0 +it 01_solar 1 168 1.0 0.0 +it 02_wind_on 1 168 1.0 0.0 +it 03_wind_off 1 168 1.0 0.0 +it 04_res 1 168 1.0 0.0 +it 05_nuclear 1 168 1.0 0.0 +it 06_coal 1 168 1.0 0.0 +it 07_gas 1 168 1.0 0.0 +it 08_non-res 1 168 1.0 0.0 +it 09_hydro_pump 1 168 1.0 0.0 +it 01_solar 1 169 0.0 0.0 +it 02_wind_on 1 169 0.0 0.0 +it 03_wind_off 1 169 0.0 0.0 +it 04_res 1 169 0.0 0.0 +it 05_nuclear 1 169 0.0 0.0 +it 06_coal 1 169 0.0 0.0 +it 07_gas 1 169 0.0 0.0 +it 08_non-res 1 169 0.0 0.0 +it 09_hydro_pump 1 169 0.0 0.0 +it 01_solar 1 170 1.0 0.0 +it 02_wind_on 1 170 0.0 0.0 +it 03_wind_off 1 170 0.0 0.0 +it 04_res 1 170 0.0 0.0 +it 05_nuclear 1 170 0.0 0.0 +it 06_coal 1 170 0.0 0.0 +it 07_gas 1 170 0.0 0.0 +it 08_non-res 1 170 0.0 0.0 +it 09_hydro_pump 1 170 0.0 0.0 +it 01_solar 1 171 1.0 0.0 +it 02_wind_on 1 171 0.0 0.0 +it 03_wind_off 1 171 0.0 0.0 +it 04_res 1 171 0.0 0.0 +it 05_nuclear 1 171 0.0 0.0 +it 06_coal 1 171 0.0 0.0 +it 07_gas 1 171 0.0 0.0 +it 08_non-res 1 171 0.0 0.0 +it 09_hydro_pump 1 171 0.0 0.0 +it 01_solar 1 172 1.0 0.0 +it 02_wind_on 1 172 0.0 0.0 +it 03_wind_off 1 172 0.0 0.0 +it 04_res 1 172 0.0 0.0 +it 05_nuclear 1 172 0.0 0.0 +it 06_coal 1 172 0.0 0.0 +it 07_gas 1 172 0.0 0.0 +it 08_non-res 1 172 0.0 0.0 +it 09_hydro_pump 1 172 0.0 0.0 +it 01_solar 1 173 1.0 0.0 +it 02_wind_on 1 173 0.0 0.0 +it 03_wind_off 1 173 0.0 0.0 +it 04_res 1 173 0.0 0.0 +it 05_nuclear 1 173 0.0 0.0 +it 06_coal 1 173 0.0 0.0 +it 07_gas 1 173 0.0 0.0 +it 08_non-res 1 173 0.0 0.0 +it 09_hydro_pump 1 173 0.0 0.0 +it 01_solar 1 174 1.0 0.0 +it 02_wind_on 1 174 0.0 0.0 +it 03_wind_off 1 174 0.0 0.0 +it 04_res 1 174 0.0 0.0 +it 05_nuclear 1 174 0.0 0.0 +it 06_coal 1 174 0.0 0.0 +it 07_gas 1 174 0.0 0.0 +it 08_non-res 1 174 0.0 0.0 +it 09_hydro_pump 1 174 0.0 0.0 +it 01_solar 1 175 1.0 0.0 +it 02_wind_on 1 175 0.0 0.0 +it 03_wind_off 1 175 0.0 0.0 +it 04_res 1 175 0.0 0.0 +it 05_nuclear 1 175 0.0 0.0 +it 06_coal 1 175 0.0 0.0 +it 07_gas 1 175 0.0 0.0 +it 08_non-res 1 175 0.0 0.0 +it 09_hydro_pump 1 175 0.0 0.0 +it 01_solar 1 176 1.0 0.0 +it 02_wind_on 1 176 0.0 0.0 +it 03_wind_off 1 176 0.0 0.0 +it 04_res 1 176 0.0 0.0 +it 05_nuclear 1 176 0.0 0.0 +it 06_coal 1 176 0.0 0.0 +it 07_gas 1 176 0.0 0.0 +it 08_non-res 1 176 0.0 0.0 +it 09_hydro_pump 1 176 0.0 0.0 +it 01_solar 1 177 1.0 0.0 +it 02_wind_on 1 177 0.0 0.0 +it 03_wind_off 1 177 0.0 0.0 +it 04_res 1 177 0.0 0.0 +it 05_nuclear 1 177 0.0 0.0 +it 06_coal 1 177 0.0 0.0 +it 07_gas 1 177 0.0 0.0 +it 08_non-res 1 177 0.0 0.0 +it 09_hydro_pump 1 177 0.0 0.0 +it 01_solar 1 178 1.0 0.0 +it 02_wind_on 1 178 0.0 0.0 +it 03_wind_off 1 178 0.0 0.0 +it 04_res 1 178 0.0 0.0 +it 05_nuclear 1 178 0.0 0.0 +it 06_coal 1 178 0.0 0.0 +it 07_gas 1 178 0.0 0.0 +it 08_non-res 1 178 0.0 0.0 +it 09_hydro_pump 1 178 0.0 0.0 +it 01_solar 1 179 1.0 0.0 +it 02_wind_on 1 179 0.0 0.0 +it 03_wind_off 1 179 0.0 0.0 +it 04_res 1 179 0.0 0.0 +it 05_nuclear 1 179 0.0 0.0 +it 06_coal 1 179 0.0 0.0 +it 07_gas 1 179 0.0 0.0 +it 08_non-res 1 179 0.0 0.0 +it 09_hydro_pump 1 179 0.0 0.0 +it 01_solar 1 180 1.0 0.0 +it 02_wind_on 1 180 0.0 0.0 +it 03_wind_off 1 180 0.0 0.0 +it 04_res 1 180 0.0 0.0 +it 05_nuclear 1 180 0.0 0.0 +it 06_coal 1 180 0.0 0.0 +it 07_gas 1 180 0.0 0.0 +it 08_non-res 1 180 0.0 0.0 +it 09_hydro_pump 1 180 0.0 0.0 +it 01_solar 1 181 1.0 0.0 +it 02_wind_on 1 181 0.0 0.0 +it 03_wind_off 1 181 0.0 0.0 +it 04_res 1 181 0.0 0.0 +it 05_nuclear 1 181 0.0 0.0 +it 06_coal 1 181 0.0 0.0 +it 07_gas 1 181 0.0 0.0 +it 08_non-res 1 181 0.0 0.0 +it 09_hydro_pump 1 181 0.0 0.0 +it 01_solar 1 182 1.0 0.0 +it 02_wind_on 1 182 0.0 0.0 +it 03_wind_off 1 182 0.0 0.0 +it 04_res 1 182 0.0 0.0 +it 05_nuclear 1 182 0.0 0.0 +it 06_coal 1 182 0.0 0.0 +it 07_gas 1 182 0.0 0.0 +it 08_non-res 1 182 0.0 0.0 +it 09_hydro_pump 1 182 0.0 0.0 +it 01_solar 1 183 1.0 0.0 +it 02_wind_on 1 183 0.0 0.0 +it 03_wind_off 1 183 0.0 0.0 +it 04_res 1 183 0.0 0.0 +it 05_nuclear 1 183 0.0 0.0 +it 06_coal 1 183 0.0 0.0 +it 07_gas 1 183 0.0 0.0 +it 08_non-res 1 183 0.0 0.0 +it 09_hydro_pump 1 183 0.0 0.0 +it 01_solar 1 184 1.0 0.0 +it 02_wind_on 1 184 0.0 0.0 +it 03_wind_off 1 184 0.0 0.0 +it 04_res 1 184 0.0 0.0 +it 05_nuclear 1 184 0.0 0.0 +it 06_coal 1 184 0.0 0.0 +it 07_gas 1 184 0.0 0.0 +it 08_non-res 1 184 0.0 0.0 +it 09_hydro_pump 1 184 0.0 0.0 +it 01_solar 1 185 1.0 0.0 +it 02_wind_on 1 185 0.0 0.0 +it 03_wind_off 1 185 0.0 0.0 +it 04_res 1 185 0.0 0.0 +it 05_nuclear 1 185 0.0 0.0 +it 06_coal 1 185 0.0 0.0 +it 07_gas 1 185 0.0 0.0 +it 08_non-res 1 185 0.0 0.0 +it 09_hydro_pump 1 185 0.0 0.0 +it 01_solar 1 186 1.0 0.0 +it 02_wind_on 1 186 0.0 0.0 +it 03_wind_off 1 186 0.0 0.0 +it 04_res 1 186 0.0 0.0 +it 05_nuclear 1 186 0.0 0.0 +it 06_coal 1 186 0.0 0.0 +it 07_gas 1 186 0.0 0.0 +it 08_non-res 1 186 0.0 0.0 +it 09_hydro_pump 1 186 0.0 0.0 +it 01_solar 1 187 1.0 0.0 +it 02_wind_on 1 187 0.0 0.0 +it 03_wind_off 1 187 0.0 0.0 +it 04_res 1 187 0.0 0.0 +it 05_nuclear 1 187 0.0 0.0 +it 06_coal 1 187 0.0 0.0 +it 07_gas 1 187 0.0 0.0 +it 08_non-res 1 187 0.0 0.0 +it 09_hydro_pump 1 187 0.0 0.0 +it 01_solar 1 188 1.0 0.0 +it 02_wind_on 1 188 0.0 0.0 +it 03_wind_off 1 188 0.0 0.0 +it 04_res 1 188 0.0 0.0 +it 05_nuclear 1 188 0.0 0.0 +it 06_coal 1 188 0.0 0.0 +it 07_gas 1 188 0.0 0.0 +it 08_non-res 1 188 0.0 0.0 +it 09_hydro_pump 1 188 0.0 0.0 +it 01_solar 1 189 1.0 0.0 +it 02_wind_on 1 189 0.0 0.0 +it 03_wind_off 1 189 0.0 0.0 +it 04_res 1 189 0.0 0.0 +it 05_nuclear 1 189 0.0 0.0 +it 06_coal 1 189 0.0 0.0 +it 07_gas 1 189 0.0 0.0 +it 08_non-res 1 189 0.0 0.0 +it 09_hydro_pump 1 189 0.0 0.0 +it 01_solar 1 190 1.0 0.0 +it 02_wind_on 1 190 1.0 0.0 +it 03_wind_off 1 190 0.0 0.0 +it 04_res 1 190 0.0 0.0 +it 05_nuclear 1 190 0.0 0.0 +it 06_coal 1 190 0.0 0.0 +it 07_gas 1 190 0.0 0.0 +it 08_non-res 1 190 0.0 0.0 +it 09_hydro_pump 1 190 0.0 0.0 +it 01_solar 1 191 1.0 0.0 +it 02_wind_on 1 191 1.0 0.0 +it 03_wind_off 1 191 0.0 0.0 +it 04_res 1 191 0.0 0.0 +it 05_nuclear 1 191 0.0 0.0 +it 06_coal 1 191 0.0 0.0 +it 07_gas 1 191 0.0 0.0 +it 08_non-res 1 191 0.0 0.0 +it 09_hydro_pump 1 191 0.0 0.0 +it 01_solar 1 192 1.0 0.0 +it 02_wind_on 1 192 1.0 0.0 +it 03_wind_off 1 192 0.0 0.0 +it 04_res 1 192 0.0 0.0 +it 05_nuclear 1 192 0.0 0.0 +it 06_coal 1 192 0.0 0.0 +it 07_gas 1 192 0.0 0.0 +it 08_non-res 1 192 0.0 0.0 +it 09_hydro_pump 1 192 0.0 0.0 +it 01_solar 1 193 1.0 0.0 +it 02_wind_on 1 193 1.0 0.0 +it 03_wind_off 1 193 0.0 0.0 +it 04_res 1 193 0.0 0.0 +it 05_nuclear 1 193 0.0 0.0 +it 06_coal 1 193 0.0 0.0 +it 07_gas 1 193 0.0 0.0 +it 08_non-res 1 193 0.0 0.0 +it 09_hydro_pump 1 193 0.0 0.0 +it 01_solar 1 194 1.0 0.0 +it 02_wind_on 1 194 1.0 0.0 +it 03_wind_off 1 194 0.0 0.0 +it 04_res 1 194 0.0 0.0 +it 05_nuclear 1 194 0.0 0.0 +it 06_coal 1 194 0.0 0.0 +it 07_gas 1 194 0.0 0.0 +it 08_non-res 1 194 0.0 0.0 +it 09_hydro_pump 1 194 0.0 0.0 +it 01_solar 1 195 1.0 0.0 +it 02_wind_on 1 195 1.0 0.0 +it 03_wind_off 1 195 0.0 0.0 +it 04_res 1 195 0.0 0.0 +it 05_nuclear 1 195 0.0 0.0 +it 06_coal 1 195 0.0 0.0 +it 07_gas 1 195 0.0 0.0 +it 08_non-res 1 195 0.0 0.0 +it 09_hydro_pump 1 195 0.0 0.0 +it 01_solar 1 196 1.0 0.0 +it 02_wind_on 1 196 1.0 0.0 +it 03_wind_off 1 196 0.0 0.0 +it 04_res 1 196 0.0 0.0 +it 05_nuclear 1 196 0.0 0.0 +it 06_coal 1 196 0.0 0.0 +it 07_gas 1 196 0.0 0.0 +it 08_non-res 1 196 0.0 0.0 +it 09_hydro_pump 1 196 0.0 0.0 +it 01_solar 1 197 1.0 0.0 +it 02_wind_on 1 197 1.0 0.0 +it 03_wind_off 1 197 0.0 0.0 +it 04_res 1 197 0.0 0.0 +it 05_nuclear 1 197 0.0 0.0 +it 06_coal 1 197 0.0 0.0 +it 07_gas 1 197 0.0 0.0 +it 08_non-res 1 197 0.0 0.0 +it 09_hydro_pump 1 197 0.0 0.0 +it 01_solar 1 198 1.0 0.0 +it 02_wind_on 1 198 1.0 0.0 +it 03_wind_off 1 198 0.0 0.0 +it 04_res 1 198 0.0 0.0 +it 05_nuclear 1 198 0.0 0.0 +it 06_coal 1 198 0.0 0.0 +it 07_gas 1 198 0.0 0.0 +it 08_non-res 1 198 0.0 0.0 +it 09_hydro_pump 1 198 0.0 0.0 +it 01_solar 1 199 1.0 0.0 +it 02_wind_on 1 199 1.0 0.0 +it 03_wind_off 1 199 0.0 0.0 +it 04_res 1 199 0.0 0.0 +it 05_nuclear 1 199 0.0 0.0 +it 06_coal 1 199 0.0 0.0 +it 07_gas 1 199 0.0 0.0 +it 08_non-res 1 199 0.0 0.0 +it 09_hydro_pump 1 199 0.0 0.0 +it 01_solar 1 200 1.0 0.0 +it 02_wind_on 1 200 1.0 0.0 +it 03_wind_off 1 200 0.0 0.0 +it 04_res 1 200 0.0 0.0 +it 05_nuclear 1 200 0.0 0.0 +it 06_coal 1 200 0.0 0.0 +it 07_gas 1 200 0.0 0.0 +it 08_non-res 1 200 0.0 0.0 +it 09_hydro_pump 1 200 0.0 0.0 +it 01_solar 1 201 1.0 0.0 +it 02_wind_on 1 201 1.0 0.0 +it 03_wind_off 1 201 0.0 0.0 +it 04_res 1 201 0.0 0.0 +it 05_nuclear 1 201 0.0 0.0 +it 06_coal 1 201 0.0 0.0 +it 07_gas 1 201 0.0 0.0 +it 08_non-res 1 201 0.0 0.0 +it 09_hydro_pump 1 201 0.0 0.0 +it 01_solar 1 202 1.0 0.0 +it 02_wind_on 1 202 1.0 0.0 +it 03_wind_off 1 202 0.0 0.0 +it 04_res 1 202 0.0 0.0 +it 05_nuclear 1 202 0.0 0.0 +it 06_coal 1 202 0.0 0.0 +it 07_gas 1 202 0.0 0.0 +it 08_non-res 1 202 0.0 0.0 +it 09_hydro_pump 1 202 0.0 0.0 +it 01_solar 1 203 1.0 0.0 +it 02_wind_on 1 203 1.0 0.0 +it 03_wind_off 1 203 0.0 0.0 +it 04_res 1 203 0.0 0.0 +it 05_nuclear 1 203 0.0 0.0 +it 06_coal 1 203 0.0 0.0 +it 07_gas 1 203 0.0 0.0 +it 08_non-res 1 203 0.0 0.0 +it 09_hydro_pump 1 203 0.0 0.0 +it 01_solar 1 204 1.0 0.0 +it 02_wind_on 1 204 1.0 0.0 +it 03_wind_off 1 204 0.0 0.0 +it 04_res 1 204 0.0 0.0 +it 05_nuclear 1 204 0.0 0.0 +it 06_coal 1 204 0.0 0.0 +it 07_gas 1 204 0.0 0.0 +it 08_non-res 1 204 0.0 0.0 +it 09_hydro_pump 1 204 0.0 0.0 +it 01_solar 1 205 1.0 0.0 +it 02_wind_on 1 205 1.0 0.0 +it 03_wind_off 1 205 0.0 0.0 +it 04_res 1 205 0.0 0.0 +it 05_nuclear 1 205 0.0 0.0 +it 06_coal 1 205 0.0 0.0 +it 07_gas 1 205 0.0 0.0 +it 08_non-res 1 205 0.0 0.0 +it 09_hydro_pump 1 205 0.0 0.0 +it 01_solar 1 206 1.0 0.0 +it 02_wind_on 1 206 1.0 0.0 +it 03_wind_off 1 206 0.0 0.0 +it 04_res 1 206 0.0 0.0 +it 05_nuclear 1 206 0.0 0.0 +it 06_coal 1 206 0.0 0.0 +it 07_gas 1 206 0.0 0.0 +it 08_non-res 1 206 0.0 0.0 +it 09_hydro_pump 1 206 0.0 0.0 +it 01_solar 1 207 1.0 0.0 +it 02_wind_on 1 207 1.0 0.0 +it 03_wind_off 1 207 0.0 0.0 +it 04_res 1 207 0.0 0.0 +it 05_nuclear 1 207 0.0 0.0 +it 06_coal 1 207 0.0 0.0 +it 07_gas 1 207 0.0 0.0 +it 08_non-res 1 207 0.0 0.0 +it 09_hydro_pump 1 207 0.0 0.0 +it 01_solar 1 208 1.0 0.0 +it 02_wind_on 1 208 1.0 0.0 +it 03_wind_off 1 208 0.0 0.0 +it 04_res 1 208 0.0 0.0 +it 05_nuclear 1 208 0.0 0.0 +it 06_coal 1 208 0.0 0.0 +it 07_gas 1 208 0.0 0.0 +it 08_non-res 1 208 0.0 0.0 +it 09_hydro_pump 1 208 0.0 0.0 +it 01_solar 1 209 1.0 0.0 +it 02_wind_on 1 209 1.0 0.0 +it 03_wind_off 1 209 0.0 0.0 +it 04_res 1 209 0.0 0.0 +it 05_nuclear 1 209 0.0 0.0 +it 06_coal 1 209 0.0 0.0 +it 07_gas 1 209 0.0 0.0 +it 08_non-res 1 209 0.0 0.0 +it 09_hydro_pump 1 209 0.0 0.0 +it 01_solar 1 210 1.0 0.0 +it 02_wind_on 1 210 1.0 0.0 +it 03_wind_off 1 210 1.0 0.0 +it 04_res 1 210 0.0 0.0 +it 05_nuclear 1 210 0.0 0.0 +it 06_coal 1 210 0.0 0.0 +it 07_gas 1 210 0.0 0.0 +it 08_non-res 1 210 0.0 0.0 +it 09_hydro_pump 1 210 0.0 0.0 +it 01_solar 1 211 1.0 0.0 +it 02_wind_on 1 211 1.0 0.0 +it 03_wind_off 1 211 1.0 0.0 +it 04_res 1 211 0.0 0.0 +it 05_nuclear 1 211 0.0 0.0 +it 06_coal 1 211 0.0 0.0 +it 07_gas 1 211 0.0 0.0 +it 08_non-res 1 211 0.0 0.0 +it 09_hydro_pump 1 211 0.0 0.0 +it 01_solar 1 212 1.0 0.0 +it 02_wind_on 1 212 1.0 0.0 +it 03_wind_off 1 212 1.0 0.0 +it 04_res 1 212 0.0 0.0 +it 05_nuclear 1 212 0.0 0.0 +it 06_coal 1 212 0.0 0.0 +it 07_gas 1 212 0.0 0.0 +it 08_non-res 1 212 0.0 0.0 +it 09_hydro_pump 1 212 0.0 0.0 +it 01_solar 1 213 1.0 0.0 +it 02_wind_on 1 213 1.0 0.0 +it 03_wind_off 1 213 1.0 0.0 +it 04_res 1 213 0.0 0.0 +it 05_nuclear 1 213 0.0 0.0 +it 06_coal 1 213 0.0 0.0 +it 07_gas 1 213 0.0 0.0 +it 08_non-res 1 213 0.0 0.0 +it 09_hydro_pump 1 213 0.0 0.0 +it 01_solar 1 214 1.0 0.0 +it 02_wind_on 1 214 1.0 0.0 +it 03_wind_off 1 214 1.0 0.0 +it 04_res 1 214 0.0 0.0 +it 05_nuclear 1 214 0.0 0.0 +it 06_coal 1 214 0.0 0.0 +it 07_gas 1 214 0.0 0.0 +it 08_non-res 1 214 0.0 0.0 +it 09_hydro_pump 1 214 0.0 0.0 +it 01_solar 1 215 1.0 0.0 +it 02_wind_on 1 215 1.0 0.0 +it 03_wind_off 1 215 1.0 0.0 +it 04_res 1 215 0.0 0.0 +it 05_nuclear 1 215 0.0 0.0 +it 06_coal 1 215 0.0 0.0 +it 07_gas 1 215 0.0 0.0 +it 08_non-res 1 215 0.0 0.0 +it 09_hydro_pump 1 215 0.0 0.0 +it 01_solar 1 216 1.0 0.0 +it 02_wind_on 1 216 1.0 0.0 +it 03_wind_off 1 216 1.0 0.0 +it 04_res 1 216 0.0 0.0 +it 05_nuclear 1 216 0.0 0.0 +it 06_coal 1 216 0.0 0.0 +it 07_gas 1 216 0.0 0.0 +it 08_non-res 1 216 0.0 0.0 +it 09_hydro_pump 1 216 0.0 0.0 +it 01_solar 1 217 1.0 0.0 +it 02_wind_on 1 217 1.0 0.0 +it 03_wind_off 1 217 1.0 0.0 +it 04_res 1 217 0.0 0.0 +it 05_nuclear 1 217 0.0 0.0 +it 06_coal 1 217 0.0 0.0 +it 07_gas 1 217 0.0 0.0 +it 08_non-res 1 217 0.0 0.0 +it 09_hydro_pump 1 217 0.0 0.0 +it 01_solar 1 218 1.0 0.0 +it 02_wind_on 1 218 1.0 0.0 +it 03_wind_off 1 218 1.0 0.0 +it 04_res 1 218 0.0 0.0 +it 05_nuclear 1 218 0.0 0.0 +it 06_coal 1 218 0.0 0.0 +it 07_gas 1 218 0.0 0.0 +it 08_non-res 1 218 0.0 0.0 +it 09_hydro_pump 1 218 0.0 0.0 +it 01_solar 1 219 1.0 0.0 +it 02_wind_on 1 219 1.0 0.0 +it 03_wind_off 1 219 1.0 0.0 +it 04_res 1 219 0.0 0.0 +it 05_nuclear 1 219 0.0 0.0 +it 06_coal 1 219 0.0 0.0 +it 07_gas 1 219 0.0 0.0 +it 08_non-res 1 219 0.0 0.0 +it 09_hydro_pump 1 219 0.0 0.0 +it 01_solar 1 220 1.0 0.0 +it 02_wind_on 1 220 1.0 0.0 +it 03_wind_off 1 220 1.0 0.0 +it 04_res 1 220 0.0 0.0 +it 05_nuclear 1 220 0.0 0.0 +it 06_coal 1 220 0.0 0.0 +it 07_gas 1 220 0.0 0.0 +it 08_non-res 1 220 0.0 0.0 +it 09_hydro_pump 1 220 0.0 0.0 +it 01_solar 1 221 1.0 0.0 +it 02_wind_on 1 221 1.0 0.0 +it 03_wind_off 1 221 1.0 0.0 +it 04_res 1 221 0.0 0.0 +it 05_nuclear 1 221 0.0 0.0 +it 06_coal 1 221 0.0 0.0 +it 07_gas 1 221 0.0 0.0 +it 08_non-res 1 221 0.0 0.0 +it 09_hydro_pump 1 221 0.0 0.0 +it 01_solar 1 222 1.0 0.0 +it 02_wind_on 1 222 1.0 0.0 +it 03_wind_off 1 222 1.0 0.0 +it 04_res 1 222 0.0 0.0 +it 05_nuclear 1 222 0.0 0.0 +it 06_coal 1 222 0.0 0.0 +it 07_gas 1 222 0.0 0.0 +it 08_non-res 1 222 0.0 0.0 +it 09_hydro_pump 1 222 0.0 0.0 +it 01_solar 1 223 1.0 0.0 +it 02_wind_on 1 223 1.0 0.0 +it 03_wind_off 1 223 1.0 0.0 +it 04_res 1 223 0.0 0.0 +it 05_nuclear 1 223 0.0 0.0 +it 06_coal 1 223 0.0 0.0 +it 07_gas 1 223 0.0 0.0 +it 08_non-res 1 223 0.0 0.0 +it 09_hydro_pump 1 223 0.0 0.0 +it 01_solar 1 224 1.0 0.0 +it 02_wind_on 1 224 1.0 0.0 +it 03_wind_off 1 224 1.0 0.0 +it 04_res 1 224 0.0 0.0 +it 05_nuclear 1 224 0.0 0.0 +it 06_coal 1 224 0.0 0.0 +it 07_gas 1 224 0.0 0.0 +it 08_non-res 1 224 0.0 0.0 +it 09_hydro_pump 1 224 0.0 0.0 +it 01_solar 1 225 1.0 0.0 +it 02_wind_on 1 225 1.0 0.0 +it 03_wind_off 1 225 1.0 0.0 +it 04_res 1 225 0.0 0.0 +it 05_nuclear 1 225 0.0 0.0 +it 06_coal 1 225 0.0 0.0 +it 07_gas 1 225 0.0 0.0 +it 08_non-res 1 225 0.0 0.0 +it 09_hydro_pump 1 225 0.0 0.0 +it 01_solar 1 226 1.0 0.0 +it 02_wind_on 1 226 1.0 0.0 +it 03_wind_off 1 226 1.0 0.0 +it 04_res 1 226 0.0 0.0 +it 05_nuclear 1 226 0.0 0.0 +it 06_coal 1 226 0.0 0.0 +it 07_gas 1 226 0.0 0.0 +it 08_non-res 1 226 0.0 0.0 +it 09_hydro_pump 1 226 0.0 0.0 +it 01_solar 1 227 1.0 0.0 +it 02_wind_on 1 227 1.0 0.0 +it 03_wind_off 1 227 1.0 0.0 +it 04_res 1 227 0.0 0.0 +it 05_nuclear 1 227 0.0 0.0 +it 06_coal 1 227 0.0 0.0 +it 07_gas 1 227 0.0 0.0 +it 08_non-res 1 227 0.0 0.0 +it 09_hydro_pump 1 227 0.0 0.0 +it 01_solar 1 228 1.0 0.0 +it 02_wind_on 1 228 1.0 0.0 +it 03_wind_off 1 228 1.0 0.0 +it 04_res 1 228 0.0 0.0 +it 05_nuclear 1 228 0.0 0.0 +it 06_coal 1 228 0.0 0.0 +it 07_gas 1 228 0.0 0.0 +it 08_non-res 1 228 0.0 0.0 +it 09_hydro_pump 1 228 0.0 0.0 +it 01_solar 1 229 1.0 0.0 +it 02_wind_on 1 229 1.0 0.0 +it 03_wind_off 1 229 1.0 0.0 +it 04_res 1 229 0.0 0.0 +it 05_nuclear 1 229 0.0 0.0 +it 06_coal 1 229 0.0 0.0 +it 07_gas 1 229 0.0 0.0 +it 08_non-res 1 229 0.0 0.0 +it 09_hydro_pump 1 229 0.0 0.0 +it 01_solar 1 230 1.0 0.0 +it 02_wind_on 1 230 1.0 0.0 +it 03_wind_off 1 230 1.0 0.0 +it 04_res 1 230 1.0 0.0 +it 05_nuclear 1 230 0.0 0.0 +it 06_coal 1 230 0.0 0.0 +it 07_gas 1 230 0.0 0.0 +it 08_non-res 1 230 0.0 0.0 +it 09_hydro_pump 1 230 0.0 0.0 +it 01_solar 1 231 1.0 0.0 +it 02_wind_on 1 231 1.0 0.0 +it 03_wind_off 1 231 1.0 0.0 +it 04_res 1 231 1.0 0.0 +it 05_nuclear 1 231 0.0 0.0 +it 06_coal 1 231 0.0 0.0 +it 07_gas 1 231 0.0 0.0 +it 08_non-res 1 231 0.0 0.0 +it 09_hydro_pump 1 231 0.0 0.0 +it 01_solar 1 232 1.0 0.0 +it 02_wind_on 1 232 1.0 0.0 +it 03_wind_off 1 232 1.0 0.0 +it 04_res 1 232 1.0 0.0 +it 05_nuclear 1 232 0.0 0.0 +it 06_coal 1 232 0.0 0.0 +it 07_gas 1 232 0.0 0.0 +it 08_non-res 1 232 0.0 0.0 +it 09_hydro_pump 1 232 0.0 0.0 +it 01_solar 1 233 1.0 0.0 +it 02_wind_on 1 233 1.0 0.0 +it 03_wind_off 1 233 1.0 0.0 +it 04_res 1 233 1.0 0.0 +it 05_nuclear 1 233 0.0 0.0 +it 06_coal 1 233 0.0 0.0 +it 07_gas 1 233 0.0 0.0 +it 08_non-res 1 233 0.0 0.0 +it 09_hydro_pump 1 233 0.0 0.0 +it 01_solar 1 234 1.0 0.0 +it 02_wind_on 1 234 1.0 0.0 +it 03_wind_off 1 234 1.0 0.0 +it 04_res 1 234 1.0 0.0 +it 05_nuclear 1 234 0.0 0.0 +it 06_coal 1 234 0.0 0.0 +it 07_gas 1 234 0.0 0.0 +it 08_non-res 1 234 0.0 0.0 +it 09_hydro_pump 1 234 0.0 0.0 +it 01_solar 1 235 1.0 0.0 +it 02_wind_on 1 235 1.0 0.0 +it 03_wind_off 1 235 1.0 0.0 +it 04_res 1 235 1.0 0.0 +it 05_nuclear 1 235 0.0 0.0 +it 06_coal 1 235 0.0 0.0 +it 07_gas 1 235 0.0 0.0 +it 08_non-res 1 235 0.0 0.0 +it 09_hydro_pump 1 235 0.0 0.0 +it 01_solar 1 236 1.0 0.0 +it 02_wind_on 1 236 1.0 0.0 +it 03_wind_off 1 236 1.0 0.0 +it 04_res 1 236 1.0 0.0 +it 05_nuclear 1 236 0.0 0.0 +it 06_coal 1 236 0.0 0.0 +it 07_gas 1 236 0.0 0.0 +it 08_non-res 1 236 0.0 0.0 +it 09_hydro_pump 1 236 0.0 0.0 +it 01_solar 1 237 1.0 0.0 +it 02_wind_on 1 237 1.0 0.0 +it 03_wind_off 1 237 1.0 0.0 +it 04_res 1 237 1.0 0.0 +it 05_nuclear 1 237 0.0 0.0 +it 06_coal 1 237 0.0 0.0 +it 07_gas 1 237 0.0 0.0 +it 08_non-res 1 237 0.0 0.0 +it 09_hydro_pump 1 237 0.0 0.0 +it 01_solar 1 238 1.0 0.0 +it 02_wind_on 1 238 1.0 0.0 +it 03_wind_off 1 238 1.0 0.0 +it 04_res 1 238 1.0 0.0 +it 05_nuclear 1 238 0.0 0.0 +it 06_coal 1 238 0.0 0.0 +it 07_gas 1 238 0.0 0.0 +it 08_non-res 1 238 0.0 0.0 +it 09_hydro_pump 1 238 0.0 0.0 +it 01_solar 1 239 1.0 0.0 +it 02_wind_on 1 239 1.0 0.0 +it 03_wind_off 1 239 1.0 0.0 +it 04_res 1 239 1.0 0.0 +it 05_nuclear 1 239 0.0 0.0 +it 06_coal 1 239 0.0 0.0 +it 07_gas 1 239 0.0 0.0 +it 08_non-res 1 239 0.0 0.0 +it 09_hydro_pump 1 239 0.0 0.0 +it 01_solar 1 240 1.0 0.0 +it 02_wind_on 1 240 1.0 0.0 +it 03_wind_off 1 240 1.0 0.0 +it 04_res 1 240 1.0 0.0 +it 05_nuclear 1 240 0.0 0.0 +it 06_coal 1 240 0.0 0.0 +it 07_gas 1 240 0.0 0.0 +it 08_non-res 1 240 0.0 0.0 +it 09_hydro_pump 1 240 0.0 0.0 +it 01_solar 1 241 1.0 0.0 +it 02_wind_on 1 241 1.0 0.0 +it 03_wind_off 1 241 1.0 0.0 +it 04_res 1 241 1.0 0.0 +it 05_nuclear 1 241 0.0 0.0 +it 06_coal 1 241 0.0 0.0 +it 07_gas 1 241 0.0 0.0 +it 08_non-res 1 241 0.0 0.0 +it 09_hydro_pump 1 241 0.0 0.0 +it 01_solar 1 242 1.0 0.0 +it 02_wind_on 1 242 1.0 0.0 +it 03_wind_off 1 242 1.0 0.0 +it 04_res 1 242 1.0 0.0 +it 05_nuclear 1 242 0.0 0.0 +it 06_coal 1 242 0.0 0.0 +it 07_gas 1 242 0.0 0.0 +it 08_non-res 1 242 0.0 0.0 +it 09_hydro_pump 1 242 0.0 0.0 +it 01_solar 1 243 1.0 0.0 +it 02_wind_on 1 243 1.0 0.0 +it 03_wind_off 1 243 1.0 0.0 +it 04_res 1 243 1.0 0.0 +it 05_nuclear 1 243 0.0 0.0 +it 06_coal 1 243 0.0 0.0 +it 07_gas 1 243 0.0 0.0 +it 08_non-res 1 243 0.0 0.0 +it 09_hydro_pump 1 243 0.0 0.0 +it 01_solar 1 244 1.0 0.0 +it 02_wind_on 1 244 1.0 0.0 +it 03_wind_off 1 244 1.0 0.0 +it 04_res 1 244 1.0 0.0 +it 05_nuclear 1 244 0.0 0.0 +it 06_coal 1 244 0.0 0.0 +it 07_gas 1 244 0.0 0.0 +it 08_non-res 1 244 0.0 0.0 +it 09_hydro_pump 1 244 0.0 0.0 +it 01_solar 1 245 1.0 0.0 +it 02_wind_on 1 245 1.0 0.0 +it 03_wind_off 1 245 1.0 0.0 +it 04_res 1 245 1.0 0.0 +it 05_nuclear 1 245 0.0 0.0 +it 06_coal 1 245 0.0 0.0 +it 07_gas 1 245 0.0 0.0 +it 08_non-res 1 245 0.0 0.0 +it 09_hydro_pump 1 245 0.0 0.0 +it 01_solar 1 246 1.0 0.0 +it 02_wind_on 1 246 1.0 0.0 +it 03_wind_off 1 246 1.0 0.0 +it 04_res 1 246 1.0 0.0 +it 05_nuclear 1 246 0.0 0.0 +it 06_coal 1 246 0.0 0.0 +it 07_gas 1 246 0.0 0.0 +it 08_non-res 1 246 0.0 0.0 +it 09_hydro_pump 1 246 0.0 0.0 +it 01_solar 1 247 1.0 0.0 +it 02_wind_on 1 247 1.0 0.0 +it 03_wind_off 1 247 1.0 0.0 +it 04_res 1 247 1.0 0.0 +it 05_nuclear 1 247 0.0 0.0 +it 06_coal 1 247 0.0 0.0 +it 07_gas 1 247 0.0 0.0 +it 08_non-res 1 247 0.0 0.0 +it 09_hydro_pump 1 247 0.0 0.0 +it 01_solar 1 248 1.0 0.0 +it 02_wind_on 1 248 1.0 0.0 +it 03_wind_off 1 248 1.0 0.0 +it 04_res 1 248 1.0 0.0 +it 05_nuclear 1 248 0.0 0.0 +it 06_coal 1 248 0.0 0.0 +it 07_gas 1 248 0.0 0.0 +it 08_non-res 1 248 0.0 0.0 +it 09_hydro_pump 1 248 0.0 0.0 +it 01_solar 1 249 1.0 0.0 +it 02_wind_on 1 249 1.0 0.0 +it 03_wind_off 1 249 1.0 0.0 +it 04_res 1 249 1.0 0.0 +it 05_nuclear 1 249 0.0 0.0 +it 06_coal 1 249 0.0 0.0 +it 07_gas 1 249 0.0 0.0 +it 08_non-res 1 249 0.0 0.0 +it 09_hydro_pump 1 249 0.0 0.0 +it 01_solar 1 250 1.0 0.0 +it 02_wind_on 1 250 1.0 0.0 +it 03_wind_off 1 250 1.0 0.0 +it 04_res 1 250 1.0 0.0 +it 05_nuclear 1 250 1.0 0.0 +it 06_coal 1 250 0.0 0.0 +it 07_gas 1 250 0.0 0.0 +it 08_non-res 1 250 0.0 0.0 +it 09_hydro_pump 1 250 0.0 0.0 +it 01_solar 1 251 1.0 0.0 +it 02_wind_on 1 251 1.0 0.0 +it 03_wind_off 1 251 1.0 0.0 +it 04_res 1 251 1.0 0.0 +it 05_nuclear 1 251 1.0 0.0 +it 06_coal 1 251 0.0 0.0 +it 07_gas 1 251 0.0 0.0 +it 08_non-res 1 251 0.0 0.0 +it 09_hydro_pump 1 251 0.0 0.0 +it 01_solar 1 252 1.0 0.0 +it 02_wind_on 1 252 1.0 0.0 +it 03_wind_off 1 252 1.0 0.0 +it 04_res 1 252 1.0 0.0 +it 05_nuclear 1 252 1.0 0.0 +it 06_coal 1 252 0.0 0.0 +it 07_gas 1 252 0.0 0.0 +it 08_non-res 1 252 0.0 0.0 +it 09_hydro_pump 1 252 0.0 0.0 +it 01_solar 1 253 1.0 0.0 +it 02_wind_on 1 253 1.0 0.0 +it 03_wind_off 1 253 1.0 0.0 +it 04_res 1 253 1.0 0.0 +it 05_nuclear 1 253 1.0 0.0 +it 06_coal 1 253 0.0 0.0 +it 07_gas 1 253 0.0 0.0 +it 08_non-res 1 253 0.0 0.0 +it 09_hydro_pump 1 253 0.0 0.0 +it 01_solar 1 254 1.0 0.0 +it 02_wind_on 1 254 1.0 0.0 +it 03_wind_off 1 254 1.0 0.0 +it 04_res 1 254 1.0 0.0 +it 05_nuclear 1 254 1.0 0.0 +it 06_coal 1 254 0.0 0.0 +it 07_gas 1 254 0.0 0.0 +it 08_non-res 1 254 0.0 0.0 +it 09_hydro_pump 1 254 0.0 0.0 +it 01_solar 1 255 1.0 0.0 +it 02_wind_on 1 255 1.0 0.0 +it 03_wind_off 1 255 1.0 0.0 +it 04_res 1 255 1.0 0.0 +it 05_nuclear 1 255 1.0 0.0 +it 06_coal 1 255 0.0 0.0 +it 07_gas 1 255 0.0 0.0 +it 08_non-res 1 255 0.0 0.0 +it 09_hydro_pump 1 255 0.0 0.0 +it 01_solar 1 256 1.0 0.0 +it 02_wind_on 1 256 1.0 0.0 +it 03_wind_off 1 256 1.0 0.0 +it 04_res 1 256 1.0 0.0 +it 05_nuclear 1 256 1.0 0.0 +it 06_coal 1 256 0.0 0.0 +it 07_gas 1 256 0.0 0.0 +it 08_non-res 1 256 0.0 0.0 +it 09_hydro_pump 1 256 0.0 0.0 +it 01_solar 1 257 1.0 0.0 +it 02_wind_on 1 257 1.0 0.0 +it 03_wind_off 1 257 1.0 0.0 +it 04_res 1 257 1.0 0.0 +it 05_nuclear 1 257 1.0 0.0 +it 06_coal 1 257 0.0 0.0 +it 07_gas 1 257 0.0 0.0 +it 08_non-res 1 257 0.0 0.0 +it 09_hydro_pump 1 257 0.0 0.0 +it 01_solar 1 258 1.0 0.0 +it 02_wind_on 1 258 1.0 0.0 +it 03_wind_off 1 258 1.0 0.0 +it 04_res 1 258 1.0 0.0 +it 05_nuclear 1 258 1.0 0.0 +it 06_coal 1 258 0.0 0.0 +it 07_gas 1 258 0.0 0.0 +it 08_non-res 1 258 0.0 0.0 +it 09_hydro_pump 1 258 0.0 0.0 +it 01_solar 1 259 1.0 0.0 +it 02_wind_on 1 259 1.0 0.0 +it 03_wind_off 1 259 1.0 0.0 +it 04_res 1 259 1.0 0.0 +it 05_nuclear 1 259 1.0 0.0 +it 06_coal 1 259 0.0 0.0 +it 07_gas 1 259 0.0 0.0 +it 08_non-res 1 259 0.0 0.0 +it 09_hydro_pump 1 259 0.0 0.0 +it 01_solar 1 260 1.0 0.0 +it 02_wind_on 1 260 1.0 0.0 +it 03_wind_off 1 260 1.0 0.0 +it 04_res 1 260 1.0 0.0 +it 05_nuclear 1 260 1.0 0.0 +it 06_coal 1 260 0.0 0.0 +it 07_gas 1 260 0.0 0.0 +it 08_non-res 1 260 0.0 0.0 +it 09_hydro_pump 1 260 0.0 0.0 +it 01_solar 1 261 1.0 0.0 +it 02_wind_on 1 261 1.0 0.0 +it 03_wind_off 1 261 1.0 0.0 +it 04_res 1 261 1.0 0.0 +it 05_nuclear 1 261 1.0 0.0 +it 06_coal 1 261 0.0 0.0 +it 07_gas 1 261 0.0 0.0 +it 08_non-res 1 261 0.0 0.0 +it 09_hydro_pump 1 261 0.0 0.0 +it 01_solar 1 262 1.0 0.0 +it 02_wind_on 1 262 1.0 0.0 +it 03_wind_off 1 262 1.0 0.0 +it 04_res 1 262 1.0 0.0 +it 05_nuclear 1 262 1.0 0.0 +it 06_coal 1 262 0.0 0.0 +it 07_gas 1 262 0.0 0.0 +it 08_non-res 1 262 0.0 0.0 +it 09_hydro_pump 1 262 0.0 0.0 +it 01_solar 1 263 1.0 0.0 +it 02_wind_on 1 263 1.0 0.0 +it 03_wind_off 1 263 1.0 0.0 +it 04_res 1 263 1.0 0.0 +it 05_nuclear 1 263 1.0 0.0 +it 06_coal 1 263 0.0 0.0 +it 07_gas 1 263 0.0 0.0 +it 08_non-res 1 263 0.0 0.0 +it 09_hydro_pump 1 263 0.0 0.0 +it 01_solar 1 264 1.0 0.0 +it 02_wind_on 1 264 1.0 0.0 +it 03_wind_off 1 264 1.0 0.0 +it 04_res 1 264 1.0 0.0 +it 05_nuclear 1 264 1.0 0.0 +it 06_coal 1 264 0.0 0.0 +it 07_gas 1 264 0.0 0.0 +it 08_non-res 1 264 0.0 0.0 +it 09_hydro_pump 1 264 0.0 0.0 +it 01_solar 1 265 1.0 0.0 +it 02_wind_on 1 265 1.0 0.0 +it 03_wind_off 1 265 1.0 0.0 +it 04_res 1 265 1.0 0.0 +it 05_nuclear 1 265 1.0 0.0 +it 06_coal 1 265 0.0 0.0 +it 07_gas 1 265 0.0 0.0 +it 08_non-res 1 265 0.0 0.0 +it 09_hydro_pump 1 265 0.0 0.0 +it 01_solar 1 266 1.0 0.0 +it 02_wind_on 1 266 1.0 0.0 +it 03_wind_off 1 266 1.0 0.0 +it 04_res 1 266 1.0 0.0 +it 05_nuclear 1 266 1.0 0.0 +it 06_coal 1 266 0.0 0.0 +it 07_gas 1 266 0.0 0.0 +it 08_non-res 1 266 0.0 0.0 +it 09_hydro_pump 1 266 0.0 0.0 +it 01_solar 1 267 1.0 0.0 +it 02_wind_on 1 267 1.0 0.0 +it 03_wind_off 1 267 1.0 0.0 +it 04_res 1 267 1.0 0.0 +it 05_nuclear 1 267 1.0 0.0 +it 06_coal 1 267 0.0 0.0 +it 07_gas 1 267 0.0 0.0 +it 08_non-res 1 267 0.0 0.0 +it 09_hydro_pump 1 267 0.0 0.0 +it 01_solar 1 268 1.0 0.0 +it 02_wind_on 1 268 1.0 0.0 +it 03_wind_off 1 268 1.0 0.0 +it 04_res 1 268 1.0 0.0 +it 05_nuclear 1 268 1.0 0.0 +it 06_coal 1 268 0.0 0.0 +it 07_gas 1 268 0.0 0.0 +it 08_non-res 1 268 0.0 0.0 +it 09_hydro_pump 1 268 0.0 0.0 +it 01_solar 1 269 1.0 0.0 +it 02_wind_on 1 269 1.0 0.0 +it 03_wind_off 1 269 1.0 0.0 +it 04_res 1 269 1.0 0.0 +it 05_nuclear 1 269 1.0 0.0 +it 06_coal 1 269 0.0 0.0 +it 07_gas 1 269 0.0 0.0 +it 08_non-res 1 269 0.0 0.0 +it 09_hydro_pump 1 269 0.0 0.0 +it 01_solar 1 270 1.0 0.0 +it 02_wind_on 1 270 1.0 0.0 +it 03_wind_off 1 270 1.0 0.0 +it 04_res 1 270 1.0 0.0 +it 05_nuclear 1 270 1.0 0.0 +it 06_coal 1 270 1.0 0.0 +it 07_gas 1 270 0.0 0.0 +it 08_non-res 1 270 0.0 0.0 +it 09_hydro_pump 1 270 0.0 0.0 +it 01_solar 1 271 1.0 0.0 +it 02_wind_on 1 271 1.0 0.0 +it 03_wind_off 1 271 1.0 0.0 +it 04_res 1 271 1.0 0.0 +it 05_nuclear 1 271 1.0 0.0 +it 06_coal 1 271 1.0 0.0 +it 07_gas 1 271 0.0 0.0 +it 08_non-res 1 271 0.0 0.0 +it 09_hydro_pump 1 271 0.0 0.0 +it 01_solar 1 272 1.0 0.0 +it 02_wind_on 1 272 1.0 0.0 +it 03_wind_off 1 272 1.0 0.0 +it 04_res 1 272 1.0 0.0 +it 05_nuclear 1 272 1.0 0.0 +it 06_coal 1 272 1.0 0.0 +it 07_gas 1 272 0.0 0.0 +it 08_non-res 1 272 0.0 0.0 +it 09_hydro_pump 1 272 0.0 0.0 +it 01_solar 1 273 1.0 0.0 +it 02_wind_on 1 273 1.0 0.0 +it 03_wind_off 1 273 1.0 0.0 +it 04_res 1 273 1.0 0.0 +it 05_nuclear 1 273 1.0 0.0 +it 06_coal 1 273 1.0 0.0 +it 07_gas 1 273 0.0 0.0 +it 08_non-res 1 273 0.0 0.0 +it 09_hydro_pump 1 273 0.0 0.0 +it 01_solar 1 274 1.0 0.0 +it 02_wind_on 1 274 1.0 0.0 +it 03_wind_off 1 274 1.0 0.0 +it 04_res 1 274 1.0 0.0 +it 05_nuclear 1 274 1.0 0.0 +it 06_coal 1 274 1.0 0.0 +it 07_gas 1 274 0.0 0.0 +it 08_non-res 1 274 0.0 0.0 +it 09_hydro_pump 1 274 0.0 0.0 +it 01_solar 1 275 1.0 0.0 +it 02_wind_on 1 275 1.0 0.0 +it 03_wind_off 1 275 1.0 0.0 +it 04_res 1 275 1.0 0.0 +it 05_nuclear 1 275 1.0 0.0 +it 06_coal 1 275 1.0 0.0 +it 07_gas 1 275 0.0 0.0 +it 08_non-res 1 275 0.0 0.0 +it 09_hydro_pump 1 275 0.0 0.0 +it 01_solar 1 276 1.0 0.0 +it 02_wind_on 1 276 1.0 0.0 +it 03_wind_off 1 276 1.0 0.0 +it 04_res 1 276 1.0 0.0 +it 05_nuclear 1 276 1.0 0.0 +it 06_coal 1 276 1.0 0.0 +it 07_gas 1 276 0.0 0.0 +it 08_non-res 1 276 0.0 0.0 +it 09_hydro_pump 1 276 0.0 0.0 +it 01_solar 1 277 1.0 0.0 +it 02_wind_on 1 277 1.0 0.0 +it 03_wind_off 1 277 1.0 0.0 +it 04_res 1 277 1.0 0.0 +it 05_nuclear 1 277 1.0 0.0 +it 06_coal 1 277 1.0 0.0 +it 07_gas 1 277 0.0 0.0 +it 08_non-res 1 277 0.0 0.0 +it 09_hydro_pump 1 277 0.0 0.0 +it 01_solar 1 278 1.0 0.0 +it 02_wind_on 1 278 1.0 0.0 +it 03_wind_off 1 278 1.0 0.0 +it 04_res 1 278 1.0 0.0 +it 05_nuclear 1 278 1.0 0.0 +it 06_coal 1 278 1.0 0.0 +it 07_gas 1 278 0.0 0.0 +it 08_non-res 1 278 0.0 0.0 +it 09_hydro_pump 1 278 0.0 0.0 +it 01_solar 1 279 1.0 0.0 +it 02_wind_on 1 279 1.0 0.0 +it 03_wind_off 1 279 1.0 0.0 +it 04_res 1 279 1.0 0.0 +it 05_nuclear 1 279 1.0 0.0 +it 06_coal 1 279 1.0 0.0 +it 07_gas 1 279 0.0 0.0 +it 08_non-res 1 279 0.0 0.0 +it 09_hydro_pump 1 279 0.0 0.0 +it 01_solar 1 280 1.0 0.0 +it 02_wind_on 1 280 1.0 0.0 +it 03_wind_off 1 280 1.0 0.0 +it 04_res 1 280 1.0 0.0 +it 05_nuclear 1 280 1.0 0.0 +it 06_coal 1 280 1.0 0.0 +it 07_gas 1 280 0.0 0.0 +it 08_non-res 1 280 0.0 0.0 +it 09_hydro_pump 1 280 0.0 0.0 +it 01_solar 1 281 1.0 0.0 +it 02_wind_on 1 281 1.0 0.0 +it 03_wind_off 1 281 1.0 0.0 +it 04_res 1 281 1.0 0.0 +it 05_nuclear 1 281 1.0 0.0 +it 06_coal 1 281 1.0 0.0 +it 07_gas 1 281 0.0 0.0 +it 08_non-res 1 281 0.0 0.0 +it 09_hydro_pump 1 281 0.0 0.0 +it 01_solar 1 282 1.0 0.0 +it 02_wind_on 1 282 1.0 0.0 +it 03_wind_off 1 282 1.0 0.0 +it 04_res 1 282 1.0 0.0 +it 05_nuclear 1 282 1.0 0.0 +it 06_coal 1 282 1.0 0.0 +it 07_gas 1 282 0.0 0.0 +it 08_non-res 1 282 0.0 0.0 +it 09_hydro_pump 1 282 0.0 0.0 +it 01_solar 1 283 1.0 0.0 +it 02_wind_on 1 283 1.0 0.0 +it 03_wind_off 1 283 1.0 0.0 +it 04_res 1 283 1.0 0.0 +it 05_nuclear 1 283 1.0 0.0 +it 06_coal 1 283 1.0 0.0 +it 07_gas 1 283 0.0 0.0 +it 08_non-res 1 283 0.0 0.0 +it 09_hydro_pump 1 283 0.0 0.0 +it 01_solar 1 284 1.0 0.0 +it 02_wind_on 1 284 1.0 0.0 +it 03_wind_off 1 284 1.0 0.0 +it 04_res 1 284 1.0 0.0 +it 05_nuclear 1 284 1.0 0.0 +it 06_coal 1 284 1.0 0.0 +it 07_gas 1 284 0.0 0.0 +it 08_non-res 1 284 0.0 0.0 +it 09_hydro_pump 1 284 0.0 0.0 +it 01_solar 1 285 1.0 0.0 +it 02_wind_on 1 285 1.0 0.0 +it 03_wind_off 1 285 1.0 0.0 +it 04_res 1 285 1.0 0.0 +it 05_nuclear 1 285 1.0 0.0 +it 06_coal 1 285 1.0 0.0 +it 07_gas 1 285 0.0 0.0 +it 08_non-res 1 285 0.0 0.0 +it 09_hydro_pump 1 285 0.0 0.0 +it 01_solar 1 286 1.0 0.0 +it 02_wind_on 1 286 1.0 0.0 +it 03_wind_off 1 286 1.0 0.0 +it 04_res 1 286 1.0 0.0 +it 05_nuclear 1 286 1.0 0.0 +it 06_coal 1 286 1.0 0.0 +it 07_gas 1 286 0.0 0.0 +it 08_non-res 1 286 0.0 0.0 +it 09_hydro_pump 1 286 0.0 0.0 +it 01_solar 1 287 1.0 0.0 +it 02_wind_on 1 287 1.0 0.0 +it 03_wind_off 1 287 1.0 0.0 +it 04_res 1 287 1.0 0.0 +it 05_nuclear 1 287 1.0 0.0 +it 06_coal 1 287 1.0 0.0 +it 07_gas 1 287 0.0 0.0 +it 08_non-res 1 287 0.0 0.0 +it 09_hydro_pump 1 287 0.0 0.0 +it 01_solar 1 288 1.0 0.0 +it 02_wind_on 1 288 1.0 0.0 +it 03_wind_off 1 288 1.0 0.0 +it 04_res 1 288 1.0 0.0 +it 05_nuclear 1 288 1.0 0.0 +it 06_coal 1 288 1.0 0.0 +it 07_gas 1 288 0.0 0.0 +it 08_non-res 1 288 0.0 0.0 +it 09_hydro_pump 1 288 0.0 0.0 +it 01_solar 1 289 1.0 0.0 +it 02_wind_on 1 289 1.0 0.0 +it 03_wind_off 1 289 1.0 0.0 +it 04_res 1 289 1.0 0.0 +it 05_nuclear 1 289 1.0 0.0 +it 06_coal 1 289 1.0 0.0 +it 07_gas 1 289 0.0 0.0 +it 08_non-res 1 289 0.0 0.0 +it 09_hydro_pump 1 289 0.0 0.0 +it 01_solar 1 290 1.0 0.0 +it 02_wind_on 1 290 1.0 0.0 +it 03_wind_off 1 290 1.0 0.0 +it 04_res 1 290 1.0 0.0 +it 05_nuclear 1 290 1.0 0.0 +it 06_coal 1 290 1.0 0.0 +it 07_gas 1 290 1.0 0.0 +it 08_non-res 1 290 0.0 0.0 +it 09_hydro_pump 1 290 0.0 0.0 +it 01_solar 1 291 1.0 0.0 +it 02_wind_on 1 291 1.0 0.0 +it 03_wind_off 1 291 1.0 0.0 +it 04_res 1 291 1.0 0.0 +it 05_nuclear 1 291 1.0 0.0 +it 06_coal 1 291 1.0 0.0 +it 07_gas 1 291 1.0 0.0 +it 08_non-res 1 291 0.0 0.0 +it 09_hydro_pump 1 291 0.0 0.0 +it 01_solar 1 292 1.0 0.0 +it 02_wind_on 1 292 1.0 0.0 +it 03_wind_off 1 292 1.0 0.0 +it 04_res 1 292 1.0 0.0 +it 05_nuclear 1 292 1.0 0.0 +it 06_coal 1 292 1.0 0.0 +it 07_gas 1 292 1.0 0.0 +it 08_non-res 1 292 0.0 0.0 +it 09_hydro_pump 1 292 0.0 0.0 +it 01_solar 1 293 1.0 0.0 +it 02_wind_on 1 293 1.0 0.0 +it 03_wind_off 1 293 1.0 0.0 +it 04_res 1 293 1.0 0.0 +it 05_nuclear 1 293 1.0 0.0 +it 06_coal 1 293 1.0 0.0 +it 07_gas 1 293 1.0 0.0 +it 08_non-res 1 293 0.0 0.0 +it 09_hydro_pump 1 293 0.0 0.0 +it 01_solar 1 294 1.0 0.0 +it 02_wind_on 1 294 1.0 0.0 +it 03_wind_off 1 294 1.0 0.0 +it 04_res 1 294 1.0 0.0 +it 05_nuclear 1 294 1.0 0.0 +it 06_coal 1 294 1.0 0.0 +it 07_gas 1 294 1.0 0.0 +it 08_non-res 1 294 0.0 0.0 +it 09_hydro_pump 1 294 0.0 0.0 +it 01_solar 1 295 1.0 0.0 +it 02_wind_on 1 295 1.0 0.0 +it 03_wind_off 1 295 1.0 0.0 +it 04_res 1 295 1.0 0.0 +it 05_nuclear 1 295 1.0 0.0 +it 06_coal 1 295 1.0 0.0 +it 07_gas 1 295 1.0 0.0 +it 08_non-res 1 295 0.0 0.0 +it 09_hydro_pump 1 295 0.0 0.0 +it 01_solar 1 296 1.0 0.0 +it 02_wind_on 1 296 1.0 0.0 +it 03_wind_off 1 296 1.0 0.0 +it 04_res 1 296 1.0 0.0 +it 05_nuclear 1 296 1.0 0.0 +it 06_coal 1 296 1.0 0.0 +it 07_gas 1 296 1.0 0.0 +it 08_non-res 1 296 0.0 0.0 +it 09_hydro_pump 1 296 0.0 0.0 +it 01_solar 1 297 1.0 0.0 +it 02_wind_on 1 297 1.0 0.0 +it 03_wind_off 1 297 1.0 0.0 +it 04_res 1 297 1.0 0.0 +it 05_nuclear 1 297 1.0 0.0 +it 06_coal 1 297 1.0 0.0 +it 07_gas 1 297 1.0 0.0 +it 08_non-res 1 297 0.0 0.0 +it 09_hydro_pump 1 297 0.0 0.0 +it 01_solar 1 298 1.0 0.0 +it 02_wind_on 1 298 1.0 0.0 +it 03_wind_off 1 298 1.0 0.0 +it 04_res 1 298 1.0 0.0 +it 05_nuclear 1 298 1.0 0.0 +it 06_coal 1 298 1.0 0.0 +it 07_gas 1 298 1.0 0.0 +it 08_non-res 1 298 0.0 0.0 +it 09_hydro_pump 1 298 0.0 0.0 +it 01_solar 1 299 1.0 0.0 +it 02_wind_on 1 299 1.0 0.0 +it 03_wind_off 1 299 1.0 0.0 +it 04_res 1 299 1.0 0.0 +it 05_nuclear 1 299 1.0 0.0 +it 06_coal 1 299 1.0 0.0 +it 07_gas 1 299 1.0 0.0 +it 08_non-res 1 299 0.0 0.0 +it 09_hydro_pump 1 299 0.0 0.0 +it 01_solar 1 300 1.0 0.0 +it 02_wind_on 1 300 1.0 0.0 +it 03_wind_off 1 300 1.0 0.0 +it 04_res 1 300 1.0 0.0 +it 05_nuclear 1 300 1.0 0.0 +it 06_coal 1 300 1.0 0.0 +it 07_gas 1 300 1.0 0.0 +it 08_non-res 1 300 0.0 0.0 +it 09_hydro_pump 1 300 0.0 0.0 +it 01_solar 1 301 1.0 0.0 +it 02_wind_on 1 301 1.0 0.0 +it 03_wind_off 1 301 1.0 0.0 +it 04_res 1 301 1.0 0.0 +it 05_nuclear 1 301 1.0 0.0 +it 06_coal 1 301 1.0 0.0 +it 07_gas 1 301 1.0 0.0 +it 08_non-res 1 301 0.0 0.0 +it 09_hydro_pump 1 301 0.0 0.0 +it 01_solar 1 302 1.0 0.0 +it 02_wind_on 1 302 1.0 0.0 +it 03_wind_off 1 302 1.0 0.0 +it 04_res 1 302 1.0 0.0 +it 05_nuclear 1 302 1.0 0.0 +it 06_coal 1 302 1.0 0.0 +it 07_gas 1 302 1.0 0.0 +it 08_non-res 1 302 0.0 0.0 +it 09_hydro_pump 1 302 0.0 0.0 +it 01_solar 1 303 1.0 0.0 +it 02_wind_on 1 303 1.0 0.0 +it 03_wind_off 1 303 1.0 0.0 +it 04_res 1 303 1.0 0.0 +it 05_nuclear 1 303 1.0 0.0 +it 06_coal 1 303 1.0 0.0 +it 07_gas 1 303 1.0 0.0 +it 08_non-res 1 303 0.0 0.0 +it 09_hydro_pump 1 303 0.0 0.0 +it 01_solar 1 304 1.0 0.0 +it 02_wind_on 1 304 1.0 0.0 +it 03_wind_off 1 304 1.0 0.0 +it 04_res 1 304 1.0 0.0 +it 05_nuclear 1 304 1.0 0.0 +it 06_coal 1 304 1.0 0.0 +it 07_gas 1 304 1.0 0.0 +it 08_non-res 1 304 0.0 0.0 +it 09_hydro_pump 1 304 0.0 0.0 +it 01_solar 1 305 1.0 0.0 +it 02_wind_on 1 305 1.0 0.0 +it 03_wind_off 1 305 1.0 0.0 +it 04_res 1 305 1.0 0.0 +it 05_nuclear 1 305 1.0 0.0 +it 06_coal 1 305 1.0 0.0 +it 07_gas 1 305 1.0 0.0 +it 08_non-res 1 305 0.0 0.0 +it 09_hydro_pump 1 305 0.0 0.0 +it 01_solar 1 306 1.0 0.0 +it 02_wind_on 1 306 1.0 0.0 +it 03_wind_off 1 306 1.0 0.0 +it 04_res 1 306 1.0 0.0 +it 05_nuclear 1 306 1.0 0.0 +it 06_coal 1 306 1.0 0.0 +it 07_gas 1 306 1.0 0.0 +it 08_non-res 1 306 0.0 0.0 +it 09_hydro_pump 1 306 0.0 0.0 +it 01_solar 1 307 1.0 0.0 +it 02_wind_on 1 307 1.0 0.0 +it 03_wind_off 1 307 1.0 0.0 +it 04_res 1 307 1.0 0.0 +it 05_nuclear 1 307 1.0 0.0 +it 06_coal 1 307 1.0 0.0 +it 07_gas 1 307 1.0 0.0 +it 08_non-res 1 307 0.0 0.0 +it 09_hydro_pump 1 307 0.0 0.0 +it 01_solar 1 308 1.0 0.0 +it 02_wind_on 1 308 1.0 0.0 +it 03_wind_off 1 308 1.0 0.0 +it 04_res 1 308 1.0 0.0 +it 05_nuclear 1 308 1.0 0.0 +it 06_coal 1 308 1.0 0.0 +it 07_gas 1 308 1.0 0.0 +it 08_non-res 1 308 0.0 0.0 +it 09_hydro_pump 1 308 0.0 0.0 +it 01_solar 1 309 1.0 0.0 +it 02_wind_on 1 309 1.0 0.0 +it 03_wind_off 1 309 1.0 0.0 +it 04_res 1 309 1.0 0.0 +it 05_nuclear 1 309 1.0 0.0 +it 06_coal 1 309 1.0 0.0 +it 07_gas 1 309 1.0 0.0 +it 08_non-res 1 309 0.0 0.0 +it 09_hydro_pump 1 309 0.0 0.0 +it 01_solar 1 310 1.0 0.0 +it 02_wind_on 1 310 1.0 0.0 +it 03_wind_off 1 310 1.0 0.0 +it 04_res 1 310 1.0 0.0 +it 05_nuclear 1 310 1.0 0.0 +it 06_coal 1 310 1.0 0.0 +it 07_gas 1 310 1.0 0.0 +it 08_non-res 1 310 1.0 0.0 +it 09_hydro_pump 1 310 0.0 0.0 +it 01_solar 1 311 1.0 0.0 +it 02_wind_on 1 311 1.0 0.0 +it 03_wind_off 1 311 1.0 0.0 +it 04_res 1 311 1.0 0.0 +it 05_nuclear 1 311 1.0 0.0 +it 06_coal 1 311 1.0 0.0 +it 07_gas 1 311 1.0 0.0 +it 08_non-res 1 311 1.0 0.0 +it 09_hydro_pump 1 311 0.0 0.0 +it 01_solar 1 312 1.0 0.0 +it 02_wind_on 1 312 1.0 0.0 +it 03_wind_off 1 312 1.0 0.0 +it 04_res 1 312 1.0 0.0 +it 05_nuclear 1 312 1.0 0.0 +it 06_coal 1 312 1.0 0.0 +it 07_gas 1 312 1.0 0.0 +it 08_non-res 1 312 1.0 0.0 +it 09_hydro_pump 1 312 0.0 0.0 +it 01_solar 1 313 1.0 0.0 +it 02_wind_on 1 313 1.0 0.0 +it 03_wind_off 1 313 1.0 0.0 +it 04_res 1 313 1.0 0.0 +it 05_nuclear 1 313 1.0 0.0 +it 06_coal 1 313 1.0 0.0 +it 07_gas 1 313 1.0 0.0 +it 08_non-res 1 313 1.0 0.0 +it 09_hydro_pump 1 313 0.0 0.0 +it 01_solar 1 314 1.0 0.0 +it 02_wind_on 1 314 1.0 0.0 +it 03_wind_off 1 314 1.0 0.0 +it 04_res 1 314 1.0 0.0 +it 05_nuclear 1 314 1.0 0.0 +it 06_coal 1 314 1.0 0.0 +it 07_gas 1 314 1.0 0.0 +it 08_non-res 1 314 1.0 0.0 +it 09_hydro_pump 1 314 0.0 0.0 +it 01_solar 1 315 1.0 0.0 +it 02_wind_on 1 315 1.0 0.0 +it 03_wind_off 1 315 1.0 0.0 +it 04_res 1 315 1.0 0.0 +it 05_nuclear 1 315 1.0 0.0 +it 06_coal 1 315 1.0 0.0 +it 07_gas 1 315 1.0 0.0 +it 08_non-res 1 315 1.0 0.0 +it 09_hydro_pump 1 315 0.0 0.0 +it 01_solar 1 316 1.0 0.0 +it 02_wind_on 1 316 1.0 0.0 +it 03_wind_off 1 316 1.0 0.0 +it 04_res 1 316 1.0 0.0 +it 05_nuclear 1 316 1.0 0.0 +it 06_coal 1 316 1.0 0.0 +it 07_gas 1 316 1.0 0.0 +it 08_non-res 1 316 1.0 0.0 +it 09_hydro_pump 1 316 0.0 0.0 +it 01_solar 1 317 1.0 0.0 +it 02_wind_on 1 317 1.0 0.0 +it 03_wind_off 1 317 1.0 0.0 +it 04_res 1 317 1.0 0.0 +it 05_nuclear 1 317 1.0 0.0 +it 06_coal 1 317 1.0 0.0 +it 07_gas 1 317 1.0 0.0 +it 08_non-res 1 317 1.0 0.0 +it 09_hydro_pump 1 317 0.0 0.0 +it 01_solar 1 318 1.0 0.0 +it 02_wind_on 1 318 1.0 0.0 +it 03_wind_off 1 318 1.0 0.0 +it 04_res 1 318 1.0 0.0 +it 05_nuclear 1 318 1.0 0.0 +it 06_coal 1 318 1.0 0.0 +it 07_gas 1 318 1.0 0.0 +it 08_non-res 1 318 1.0 0.0 +it 09_hydro_pump 1 318 0.0 0.0 +it 01_solar 1 319 1.0 0.0 +it 02_wind_on 1 319 1.0 0.0 +it 03_wind_off 1 319 1.0 0.0 +it 04_res 1 319 1.0 0.0 +it 05_nuclear 1 319 1.0 0.0 +it 06_coal 1 319 1.0 0.0 +it 07_gas 1 319 1.0 0.0 +it 08_non-res 1 319 1.0 0.0 +it 09_hydro_pump 1 319 0.0 0.0 +it 01_solar 1 320 1.0 0.0 +it 02_wind_on 1 320 1.0 0.0 +it 03_wind_off 1 320 1.0 0.0 +it 04_res 1 320 1.0 0.0 +it 05_nuclear 1 320 1.0 0.0 +it 06_coal 1 320 1.0 0.0 +it 07_gas 1 320 1.0 0.0 +it 08_non-res 1 320 1.0 0.0 +it 09_hydro_pump 1 320 0.0 0.0 +it 01_solar 1 321 1.0 0.0 +it 02_wind_on 1 321 1.0 0.0 +it 03_wind_off 1 321 1.0 0.0 +it 04_res 1 321 1.0 0.0 +it 05_nuclear 1 321 1.0 0.0 +it 06_coal 1 321 1.0 0.0 +it 07_gas 1 321 1.0 0.0 +it 08_non-res 1 321 1.0 0.0 +it 09_hydro_pump 1 321 0.0 0.0 +it 01_solar 1 322 1.0 0.0 +it 02_wind_on 1 322 1.0 0.0 +it 03_wind_off 1 322 1.0 0.0 +it 04_res 1 322 1.0 0.0 +it 05_nuclear 1 322 1.0 0.0 +it 06_coal 1 322 1.0 0.0 +it 07_gas 1 322 1.0 0.0 +it 08_non-res 1 322 1.0 0.0 +it 09_hydro_pump 1 322 0.0 0.0 +it 01_solar 1 323 1.0 0.0 +it 02_wind_on 1 323 1.0 0.0 +it 03_wind_off 1 323 1.0 0.0 +it 04_res 1 323 1.0 0.0 +it 05_nuclear 1 323 1.0 0.0 +it 06_coal 1 323 1.0 0.0 +it 07_gas 1 323 1.0 0.0 +it 08_non-res 1 323 1.0 0.0 +it 09_hydro_pump 1 323 0.0 0.0 +it 01_solar 1 324 1.0 0.0 +it 02_wind_on 1 324 1.0 0.0 +it 03_wind_off 1 324 1.0 0.0 +it 04_res 1 324 1.0 0.0 +it 05_nuclear 1 324 1.0 0.0 +it 06_coal 1 324 1.0 0.0 +it 07_gas 1 324 1.0 0.0 +it 08_non-res 1 324 1.0 0.0 +it 09_hydro_pump 1 324 0.0 0.0 +it 01_solar 1 325 1.0 0.0 +it 02_wind_on 1 325 1.0 0.0 +it 03_wind_off 1 325 1.0 0.0 +it 04_res 1 325 1.0 0.0 +it 05_nuclear 1 325 1.0 0.0 +it 06_coal 1 325 1.0 0.0 +it 07_gas 1 325 1.0 0.0 +it 08_non-res 1 325 1.0 0.0 +it 09_hydro_pump 1 325 0.0 0.0 +it 01_solar 1 326 1.0 0.0 +it 02_wind_on 1 326 1.0 0.0 +it 03_wind_off 1 326 1.0 0.0 +it 04_res 1 326 1.0 0.0 +it 05_nuclear 1 326 1.0 0.0 +it 06_coal 1 326 1.0 0.0 +it 07_gas 1 326 1.0 0.0 +it 08_non-res 1 326 1.0 0.0 +it 09_hydro_pump 1 326 0.0 0.0 +it 01_solar 1 327 1.0 0.0 +it 02_wind_on 1 327 1.0 0.0 +it 03_wind_off 1 327 1.0 0.0 +it 04_res 1 327 1.0 0.0 +it 05_nuclear 1 327 1.0 0.0 +it 06_coal 1 327 1.0 0.0 +it 07_gas 1 327 1.0 0.0 +it 08_non-res 1 327 1.0 0.0 +it 09_hydro_pump 1 327 0.0 0.0 +it 01_solar 1 328 1.0 0.0 +it 02_wind_on 1 328 1.0 0.0 +it 03_wind_off 1 328 1.0 0.0 +it 04_res 1 328 1.0 0.0 +it 05_nuclear 1 328 1.0 0.0 +it 06_coal 1 328 1.0 0.0 +it 07_gas 1 328 1.0 0.0 +it 08_non-res 1 328 1.0 0.0 +it 09_hydro_pump 1 328 0.0 0.0 +it 01_solar 1 329 1.0 0.0 +it 02_wind_on 1 329 1.0 0.0 +it 03_wind_off 1 329 1.0 0.0 +it 04_res 1 329 1.0 0.0 +it 05_nuclear 1 329 1.0 0.0 +it 06_coal 1 329 1.0 0.0 +it 07_gas 1 329 1.0 0.0 +it 08_non-res 1 329 1.0 0.0 +it 09_hydro_pump 1 329 0.0 0.0 +it 01_solar 1 330 1.0 0.0 +it 02_wind_on 1 330 1.0 0.0 +it 03_wind_off 1 330 1.0 0.0 +it 04_res 1 330 1.0 0.0 +it 05_nuclear 1 330 1.0 0.0 +it 06_coal 1 330 1.0 0.0 +it 07_gas 1 330 1.0 0.0 +it 08_non-res 1 330 1.0 0.0 +it 09_hydro_pump 1 330 1.0 0.0 +it 01_solar 1 331 1.0 0.0 +it 02_wind_on 1 331 1.0 0.0 +it 03_wind_off 1 331 1.0 0.0 +it 04_res 1 331 1.0 0.0 +it 05_nuclear 1 331 1.0 0.0 +it 06_coal 1 331 1.0 0.0 +it 07_gas 1 331 1.0 0.0 +it 08_non-res 1 331 1.0 0.0 +it 09_hydro_pump 1 331 1.0 0.0 +it 01_solar 1 332 1.0 0.0 +it 02_wind_on 1 332 1.0 0.0 +it 03_wind_off 1 332 1.0 0.0 +it 04_res 1 332 1.0 0.0 +it 05_nuclear 1 332 1.0 0.0 +it 06_coal 1 332 1.0 0.0 +it 07_gas 1 332 1.0 0.0 +it 08_non-res 1 332 1.0 0.0 +it 09_hydro_pump 1 332 1.0 0.0 +it 01_solar 1 333 1.0 0.0 +it 02_wind_on 1 333 1.0 0.0 +it 03_wind_off 1 333 1.0 0.0 +it 04_res 1 333 1.0 0.0 +it 05_nuclear 1 333 1.0 0.0 +it 06_coal 1 333 1.0 0.0 +it 07_gas 1 333 1.0 0.0 +it 08_non-res 1 333 1.0 0.0 +it 09_hydro_pump 1 333 1.0 0.0 +it 01_solar 1 334 1.0 0.0 +it 02_wind_on 1 334 1.0 0.0 +it 03_wind_off 1 334 1.0 0.0 +it 04_res 1 334 1.0 0.0 +it 05_nuclear 1 334 1.0 0.0 +it 06_coal 1 334 1.0 0.0 +it 07_gas 1 334 1.0 0.0 +it 08_non-res 1 334 1.0 0.0 +it 09_hydro_pump 1 334 1.0 0.0 +it 01_solar 1 335 1.0 0.0 +it 02_wind_on 1 335 1.0 0.0 +it 03_wind_off 1 335 1.0 0.0 +it 04_res 1 335 1.0 0.0 +it 05_nuclear 1 335 1.0 0.0 +it 06_coal 1 335 1.0 0.0 +it 07_gas 1 335 1.0 0.0 +it 08_non-res 1 335 1.0 0.0 +it 09_hydro_pump 1 335 1.0 0.0 +it 01_solar 1 336 1.0 0.0 +it 02_wind_on 1 336 1.0 0.0 +it 03_wind_off 1 336 1.0 0.0 +it 04_res 1 336 1.0 0.0 +it 05_nuclear 1 336 1.0 0.0 +it 06_coal 1 336 1.0 0.0 +it 07_gas 1 336 1.0 0.0 +it 08_non-res 1 336 1.0 0.0 +it 09_hydro_pump 1 336 1.0 0.0 +de 01_solar 2 1 0.0 0.0 +de 02_wind_on 2 1 0.0 0.0 +de 03_wind_off 2 1 0.0 0.0 +de 04_res 2 1 0.0 0.0 +de 05_nuclear 2 1 0.0 0.0 +de 06_coal 2 1 0.0 0.0 +de 07_gas 2 1 0.0 0.0 +de 08_non-res 2 1 0.0 0.0 +de 09_hydro_pump 2 1 0.0 0.0 +de 01_solar 2 2 1.0 0.0 +de 02_wind_on 2 2 0.0 0.0 +de 03_wind_off 2 2 0.0 0.0 +de 04_res 2 2 0.0 0.0 +de 05_nuclear 2 2 0.0 0.0 +de 06_coal 2 2 0.0 0.0 +de 07_gas 2 2 0.0 0.0 +de 08_non-res 2 2 0.0 0.0 +de 09_hydro_pump 2 2 0.0 0.0 +de 01_solar 2 3 1.0 0.0 +de 02_wind_on 2 3 0.0 0.0 +de 03_wind_off 2 3 0.0 0.0 +de 04_res 2 3 0.0 0.0 +de 05_nuclear 2 3 0.0 0.0 +de 06_coal 2 3 0.0 0.0 +de 07_gas 2 3 0.0 0.0 +de 08_non-res 2 3 0.0 0.0 +de 09_hydro_pump 2 3 0.0 0.0 +de 01_solar 2 4 1.0 0.0 +de 02_wind_on 2 4 0.0 0.0 +de 03_wind_off 2 4 0.0 0.0 +de 04_res 2 4 0.0 0.0 +de 05_nuclear 2 4 0.0 0.0 +de 06_coal 2 4 0.0 0.0 +de 07_gas 2 4 0.0 0.0 +de 08_non-res 2 4 0.0 0.0 +de 09_hydro_pump 2 4 0.0 0.0 +de 01_solar 2 5 1.0 0.0 +de 02_wind_on 2 5 0.0 0.0 +de 03_wind_off 2 5 0.0 0.0 +de 04_res 2 5 0.0 0.0 +de 05_nuclear 2 5 0.0 0.0 +de 06_coal 2 5 0.0 0.0 +de 07_gas 2 5 0.0 0.0 +de 08_non-res 2 5 0.0 0.0 +de 09_hydro_pump 2 5 0.0 0.0 +de 01_solar 2 6 1.0 0.0 +de 02_wind_on 2 6 0.0 0.0 +de 03_wind_off 2 6 0.0 0.0 +de 04_res 2 6 0.0 0.0 +de 05_nuclear 2 6 0.0 0.0 +de 06_coal 2 6 0.0 0.0 +de 07_gas 2 6 0.0 0.0 +de 08_non-res 2 6 0.0 0.0 +de 09_hydro_pump 2 6 0.0 0.0 +de 01_solar 2 7 1.0 0.0 +de 02_wind_on 2 7 0.0 0.0 +de 03_wind_off 2 7 0.0 0.0 +de 04_res 2 7 0.0 0.0 +de 05_nuclear 2 7 0.0 0.0 +de 06_coal 2 7 0.0 0.0 +de 07_gas 2 7 0.0 0.0 +de 08_non-res 2 7 0.0 0.0 +de 09_hydro_pump 2 7 0.0 0.0 +de 01_solar 2 8 1.0 0.0 +de 02_wind_on 2 8 0.0 0.0 +de 03_wind_off 2 8 0.0 0.0 +de 04_res 2 8 0.0 0.0 +de 05_nuclear 2 8 0.0 0.0 +de 06_coal 2 8 0.0 0.0 +de 07_gas 2 8 0.0 0.0 +de 08_non-res 2 8 0.0 0.0 +de 09_hydro_pump 2 8 0.0 0.0 +de 01_solar 2 9 1.0 0.0 +de 02_wind_on 2 9 0.0 0.0 +de 03_wind_off 2 9 0.0 0.0 +de 04_res 2 9 0.0 0.0 +de 05_nuclear 2 9 0.0 0.0 +de 06_coal 2 9 0.0 0.0 +de 07_gas 2 9 0.0 0.0 +de 08_non-res 2 9 0.0 0.0 +de 09_hydro_pump 2 9 0.0 0.0 +de 01_solar 2 10 1.0 0.0 +de 02_wind_on 2 10 0.0 0.0 +de 03_wind_off 2 10 0.0 0.0 +de 04_res 2 10 0.0 0.0 +de 05_nuclear 2 10 0.0 0.0 +de 06_coal 2 10 0.0 0.0 +de 07_gas 2 10 0.0 0.0 +de 08_non-res 2 10 0.0 0.0 +de 09_hydro_pump 2 10 0.0 0.0 +de 01_solar 2 11 1.0 0.0 +de 02_wind_on 2 11 0.0 0.0 +de 03_wind_off 2 11 0.0 0.0 +de 04_res 2 11 0.0 0.0 +de 05_nuclear 2 11 0.0 0.0 +de 06_coal 2 11 0.0 0.0 +de 07_gas 2 11 0.0 0.0 +de 08_non-res 2 11 0.0 0.0 +de 09_hydro_pump 2 11 0.0 0.0 +de 01_solar 2 12 1.0 0.0 +de 02_wind_on 2 12 0.0 0.0 +de 03_wind_off 2 12 0.0 0.0 +de 04_res 2 12 0.0 0.0 +de 05_nuclear 2 12 0.0 0.0 +de 06_coal 2 12 0.0 0.0 +de 07_gas 2 12 0.0 0.0 +de 08_non-res 2 12 0.0 0.0 +de 09_hydro_pump 2 12 0.0 0.0 +de 01_solar 2 13 1.0 0.0 +de 02_wind_on 2 13 0.0 0.0 +de 03_wind_off 2 13 0.0 0.0 +de 04_res 2 13 0.0 0.0 +de 05_nuclear 2 13 0.0 0.0 +de 06_coal 2 13 0.0 0.0 +de 07_gas 2 13 0.0 0.0 +de 08_non-res 2 13 0.0 0.0 +de 09_hydro_pump 2 13 0.0 0.0 +de 01_solar 2 14 1.0 0.0 +de 02_wind_on 2 14 0.0 0.0 +de 03_wind_off 2 14 0.0 0.0 +de 04_res 2 14 0.0 0.0 +de 05_nuclear 2 14 0.0 0.0 +de 06_coal 2 14 0.0 0.0 +de 07_gas 2 14 0.0 0.0 +de 08_non-res 2 14 0.0 0.0 +de 09_hydro_pump 2 14 0.0 0.0 +de 01_solar 2 15 1.0 0.0 +de 02_wind_on 2 15 0.0 0.0 +de 03_wind_off 2 15 0.0 0.0 +de 04_res 2 15 0.0 0.0 +de 05_nuclear 2 15 0.0 0.0 +de 06_coal 2 15 0.0 0.0 +de 07_gas 2 15 0.0 0.0 +de 08_non-res 2 15 0.0 0.0 +de 09_hydro_pump 2 15 0.0 0.0 +de 01_solar 2 16 1.0 0.0 +de 02_wind_on 2 16 0.0 0.0 +de 03_wind_off 2 16 0.0 0.0 +de 04_res 2 16 0.0 0.0 +de 05_nuclear 2 16 0.0 0.0 +de 06_coal 2 16 0.0 0.0 +de 07_gas 2 16 0.0 0.0 +de 08_non-res 2 16 0.0 0.0 +de 09_hydro_pump 2 16 0.0 0.0 +de 01_solar 2 17 1.0 0.0 +de 02_wind_on 2 17 0.0 0.0 +de 03_wind_off 2 17 0.0 0.0 +de 04_res 2 17 0.0 0.0 +de 05_nuclear 2 17 0.0 0.0 +de 06_coal 2 17 0.0 0.0 +de 07_gas 2 17 0.0 0.0 +de 08_non-res 2 17 0.0 0.0 +de 09_hydro_pump 2 17 0.0 0.0 +de 01_solar 2 18 1.0 0.0 +de 02_wind_on 2 18 0.0 0.0 +de 03_wind_off 2 18 0.0 0.0 +de 04_res 2 18 0.0 0.0 +de 05_nuclear 2 18 0.0 0.0 +de 06_coal 2 18 0.0 0.0 +de 07_gas 2 18 0.0 0.0 +de 08_non-res 2 18 0.0 0.0 +de 09_hydro_pump 2 18 0.0 0.0 +de 01_solar 2 19 1.0 0.0 +de 02_wind_on 2 19 0.0 0.0 +de 03_wind_off 2 19 0.0 0.0 +de 04_res 2 19 0.0 0.0 +de 05_nuclear 2 19 0.0 0.0 +de 06_coal 2 19 0.0 0.0 +de 07_gas 2 19 0.0 0.0 +de 08_non-res 2 19 0.0 0.0 +de 09_hydro_pump 2 19 0.0 0.0 +de 01_solar 2 20 1.0 0.0 +de 02_wind_on 2 20 0.0 0.0 +de 03_wind_off 2 20 0.0 0.0 +de 04_res 2 20 0.0 0.0 +de 05_nuclear 2 20 0.0 0.0 +de 06_coal 2 20 0.0 0.0 +de 07_gas 2 20 0.0 0.0 +de 08_non-res 2 20 0.0 0.0 +de 09_hydro_pump 2 20 0.0 0.0 +de 01_solar 2 21 1.0 0.0 +de 02_wind_on 2 21 0.0 0.0 +de 03_wind_off 2 21 0.0 0.0 +de 04_res 2 21 0.0 0.0 +de 05_nuclear 2 21 0.0 0.0 +de 06_coal 2 21 0.0 0.0 +de 07_gas 2 21 0.0 0.0 +de 08_non-res 2 21 0.0 0.0 +de 09_hydro_pump 2 21 0.0 0.0 +de 01_solar 2 22 1.0 0.0 +de 02_wind_on 2 22 1.0 0.0 +de 03_wind_off 2 22 0.0 0.0 +de 04_res 2 22 0.0 0.0 +de 05_nuclear 2 22 0.0 0.0 +de 06_coal 2 22 0.0 0.0 +de 07_gas 2 22 0.0 0.0 +de 08_non-res 2 22 0.0 0.0 +de 09_hydro_pump 2 22 0.0 0.0 +de 01_solar 2 23 1.0 0.0 +de 02_wind_on 2 23 1.0 0.0 +de 03_wind_off 2 23 0.0 0.0 +de 04_res 2 23 0.0 0.0 +de 05_nuclear 2 23 0.0 0.0 +de 06_coal 2 23 0.0 0.0 +de 07_gas 2 23 0.0 0.0 +de 08_non-res 2 23 0.0 0.0 +de 09_hydro_pump 2 23 0.0 0.0 +de 01_solar 2 24 1.0 0.0 +de 02_wind_on 2 24 1.0 0.0 +de 03_wind_off 2 24 0.0 0.0 +de 04_res 2 24 0.0 0.0 +de 05_nuclear 2 24 0.0 0.0 +de 06_coal 2 24 0.0 0.0 +de 07_gas 2 24 0.0 0.0 +de 08_non-res 2 24 0.0 0.0 +de 09_hydro_pump 2 24 0.0 0.0 +de 01_solar 2 25 1.0 0.0 +de 02_wind_on 2 25 1.0 0.0 +de 03_wind_off 2 25 0.0 0.0 +de 04_res 2 25 0.0 0.0 +de 05_nuclear 2 25 0.0 0.0 +de 06_coal 2 25 0.0 0.0 +de 07_gas 2 25 0.0 0.0 +de 08_non-res 2 25 0.0 0.0 +de 09_hydro_pump 2 25 0.0 0.0 +de 01_solar 2 26 1.0 0.0 +de 02_wind_on 2 26 1.0 0.0 +de 03_wind_off 2 26 0.0 0.0 +de 04_res 2 26 0.0 0.0 +de 05_nuclear 2 26 0.0 0.0 +de 06_coal 2 26 0.0 0.0 +de 07_gas 2 26 0.0 0.0 +de 08_non-res 2 26 0.0 0.0 +de 09_hydro_pump 2 26 0.0 0.0 +de 01_solar 2 27 1.0 0.0 +de 02_wind_on 2 27 1.0 0.0 +de 03_wind_off 2 27 0.0 0.0 +de 04_res 2 27 0.0 0.0 +de 05_nuclear 2 27 0.0 0.0 +de 06_coal 2 27 0.0 0.0 +de 07_gas 2 27 0.0 0.0 +de 08_non-res 2 27 0.0 0.0 +de 09_hydro_pump 2 27 0.0 0.0 +de 01_solar 2 28 1.0 0.0 +de 02_wind_on 2 28 1.0 0.0 +de 03_wind_off 2 28 0.0 0.0 +de 04_res 2 28 0.0 0.0 +de 05_nuclear 2 28 0.0 0.0 +de 06_coal 2 28 0.0 0.0 +de 07_gas 2 28 0.0 0.0 +de 08_non-res 2 28 0.0 0.0 +de 09_hydro_pump 2 28 0.0 0.0 +de 01_solar 2 29 1.0 0.0 +de 02_wind_on 2 29 1.0 0.0 +de 03_wind_off 2 29 0.0 0.0 +de 04_res 2 29 0.0 0.0 +de 05_nuclear 2 29 0.0 0.0 +de 06_coal 2 29 0.0 0.0 +de 07_gas 2 29 0.0 0.0 +de 08_non-res 2 29 0.0 0.0 +de 09_hydro_pump 2 29 0.0 0.0 +de 01_solar 2 30 1.0 0.0 +de 02_wind_on 2 30 1.0 0.0 +de 03_wind_off 2 30 0.0 0.0 +de 04_res 2 30 0.0 0.0 +de 05_nuclear 2 30 0.0 0.0 +de 06_coal 2 30 0.0 0.0 +de 07_gas 2 30 0.0 0.0 +de 08_non-res 2 30 0.0 0.0 +de 09_hydro_pump 2 30 0.0 0.0 +de 01_solar 2 31 1.0 0.0 +de 02_wind_on 2 31 1.0 0.0 +de 03_wind_off 2 31 0.0 0.0 +de 04_res 2 31 0.0 0.0 +de 05_nuclear 2 31 0.0 0.0 +de 06_coal 2 31 0.0 0.0 +de 07_gas 2 31 0.0 0.0 +de 08_non-res 2 31 0.0 0.0 +de 09_hydro_pump 2 31 0.0 0.0 +de 01_solar 2 32 1.0 0.0 +de 02_wind_on 2 32 1.0 0.0 +de 03_wind_off 2 32 0.0 0.0 +de 04_res 2 32 0.0 0.0 +de 05_nuclear 2 32 0.0 0.0 +de 06_coal 2 32 0.0 0.0 +de 07_gas 2 32 0.0 0.0 +de 08_non-res 2 32 0.0 0.0 +de 09_hydro_pump 2 32 0.0 0.0 +de 01_solar 2 33 1.0 0.0 +de 02_wind_on 2 33 1.0 0.0 +de 03_wind_off 2 33 0.0 0.0 +de 04_res 2 33 0.0 0.0 +de 05_nuclear 2 33 0.0 0.0 +de 06_coal 2 33 0.0 0.0 +de 07_gas 2 33 0.0 0.0 +de 08_non-res 2 33 0.0 0.0 +de 09_hydro_pump 2 33 0.0 0.0 +de 01_solar 2 34 1.0 0.0 +de 02_wind_on 2 34 1.0 0.0 +de 03_wind_off 2 34 0.0 0.0 +de 04_res 2 34 0.0 0.0 +de 05_nuclear 2 34 0.0 0.0 +de 06_coal 2 34 0.0 0.0 +de 07_gas 2 34 0.0 0.0 +de 08_non-res 2 34 0.0 0.0 +de 09_hydro_pump 2 34 0.0 0.0 +de 01_solar 2 35 1.0 0.0 +de 02_wind_on 2 35 1.0 0.0 +de 03_wind_off 2 35 0.0 0.0 +de 04_res 2 35 0.0 0.0 +de 05_nuclear 2 35 0.0 0.0 +de 06_coal 2 35 0.0 0.0 +de 07_gas 2 35 0.0 0.0 +de 08_non-res 2 35 0.0 0.0 +de 09_hydro_pump 2 35 0.0 0.0 +de 01_solar 2 36 1.0 0.0 +de 02_wind_on 2 36 1.0 0.0 +de 03_wind_off 2 36 0.0 0.0 +de 04_res 2 36 0.0 0.0 +de 05_nuclear 2 36 0.0 0.0 +de 06_coal 2 36 0.0 0.0 +de 07_gas 2 36 0.0 0.0 +de 08_non-res 2 36 0.0 0.0 +de 09_hydro_pump 2 36 0.0 0.0 +de 01_solar 2 37 1.0 0.0 +de 02_wind_on 2 37 1.0 0.0 +de 03_wind_off 2 37 0.0 0.0 +de 04_res 2 37 0.0 0.0 +de 05_nuclear 2 37 0.0 0.0 +de 06_coal 2 37 0.0 0.0 +de 07_gas 2 37 0.0 0.0 +de 08_non-res 2 37 0.0 0.0 +de 09_hydro_pump 2 37 0.0 0.0 +de 01_solar 2 38 1.0 0.0 +de 02_wind_on 2 38 1.0 0.0 +de 03_wind_off 2 38 0.0 0.0 +de 04_res 2 38 0.0 0.0 +de 05_nuclear 2 38 0.0 0.0 +de 06_coal 2 38 0.0 0.0 +de 07_gas 2 38 0.0 0.0 +de 08_non-res 2 38 0.0 0.0 +de 09_hydro_pump 2 38 0.0 0.0 +de 01_solar 2 39 1.0 0.0 +de 02_wind_on 2 39 1.0 0.0 +de 03_wind_off 2 39 0.0 0.0 +de 04_res 2 39 0.0 0.0 +de 05_nuclear 2 39 0.0 0.0 +de 06_coal 2 39 0.0 0.0 +de 07_gas 2 39 0.0 0.0 +de 08_non-res 2 39 0.0 0.0 +de 09_hydro_pump 2 39 0.0 0.0 +de 01_solar 2 40 1.0 0.0 +de 02_wind_on 2 40 1.0 0.0 +de 03_wind_off 2 40 0.0 0.0 +de 04_res 2 40 0.0 0.0 +de 05_nuclear 2 40 0.0 0.0 +de 06_coal 2 40 0.0 0.0 +de 07_gas 2 40 0.0 0.0 +de 08_non-res 2 40 0.0 0.0 +de 09_hydro_pump 2 40 0.0 0.0 +de 01_solar 2 41 1.0 0.0 +de 02_wind_on 2 41 1.0 0.0 +de 03_wind_off 2 41 0.0 0.0 +de 04_res 2 41 0.0 0.0 +de 05_nuclear 2 41 0.0 0.0 +de 06_coal 2 41 0.0 0.0 +de 07_gas 2 41 0.0 0.0 +de 08_non-res 2 41 0.0 0.0 +de 09_hydro_pump 2 41 0.0 0.0 +de 01_solar 2 42 1.0 0.0 +de 02_wind_on 2 42 1.0 0.0 +de 03_wind_off 2 42 1.0 0.0 +de 04_res 2 42 0.0 0.0 +de 05_nuclear 2 42 0.0 0.0 +de 06_coal 2 42 0.0 0.0 +de 07_gas 2 42 0.0 0.0 +de 08_non-res 2 42 0.0 0.0 +de 09_hydro_pump 2 42 0.0 0.0 +de 01_solar 2 43 1.0 0.0 +de 02_wind_on 2 43 1.0 0.0 +de 03_wind_off 2 43 1.0 0.0 +de 04_res 2 43 0.0 0.0 +de 05_nuclear 2 43 0.0 0.0 +de 06_coal 2 43 0.0 0.0 +de 07_gas 2 43 0.0 0.0 +de 08_non-res 2 43 0.0 0.0 +de 09_hydro_pump 2 43 0.0 0.0 +de 01_solar 2 44 1.0 0.0 +de 02_wind_on 2 44 1.0 0.0 +de 03_wind_off 2 44 1.0 0.0 +de 04_res 2 44 0.0 0.0 +de 05_nuclear 2 44 0.0 0.0 +de 06_coal 2 44 0.0 0.0 +de 07_gas 2 44 0.0 0.0 +de 08_non-res 2 44 0.0 0.0 +de 09_hydro_pump 2 44 0.0 0.0 +de 01_solar 2 45 1.0 0.0 +de 02_wind_on 2 45 1.0 0.0 +de 03_wind_off 2 45 1.0 0.0 +de 04_res 2 45 0.0 0.0 +de 05_nuclear 2 45 0.0 0.0 +de 06_coal 2 45 0.0 0.0 +de 07_gas 2 45 0.0 0.0 +de 08_non-res 2 45 0.0 0.0 +de 09_hydro_pump 2 45 0.0 0.0 +de 01_solar 2 46 1.0 0.0 +de 02_wind_on 2 46 1.0 0.0 +de 03_wind_off 2 46 1.0 0.0 +de 04_res 2 46 0.0 0.0 +de 05_nuclear 2 46 0.0 0.0 +de 06_coal 2 46 0.0 0.0 +de 07_gas 2 46 0.0 0.0 +de 08_non-res 2 46 0.0 0.0 +de 09_hydro_pump 2 46 0.0 0.0 +de 01_solar 2 47 1.0 0.0 +de 02_wind_on 2 47 1.0 0.0 +de 03_wind_off 2 47 1.0 0.0 +de 04_res 2 47 0.0 0.0 +de 05_nuclear 2 47 0.0 0.0 +de 06_coal 2 47 0.0 0.0 +de 07_gas 2 47 0.0 0.0 +de 08_non-res 2 47 0.0 0.0 +de 09_hydro_pump 2 47 0.0 0.0 +de 01_solar 2 48 1.0 0.0 +de 02_wind_on 2 48 1.0 0.0 +de 03_wind_off 2 48 1.0 0.0 +de 04_res 2 48 0.0 0.0 +de 05_nuclear 2 48 0.0 0.0 +de 06_coal 2 48 0.0 0.0 +de 07_gas 2 48 0.0 0.0 +de 08_non-res 2 48 0.0 0.0 +de 09_hydro_pump 2 48 0.0 0.0 +de 01_solar 2 49 1.0 0.0 +de 02_wind_on 2 49 1.0 0.0 +de 03_wind_off 2 49 1.0 0.0 +de 04_res 2 49 0.0 0.0 +de 05_nuclear 2 49 0.0 0.0 +de 06_coal 2 49 0.0 0.0 +de 07_gas 2 49 0.0 0.0 +de 08_non-res 2 49 0.0 0.0 +de 09_hydro_pump 2 49 0.0 0.0 +de 01_solar 2 50 1.0 0.0 +de 02_wind_on 2 50 1.0 0.0 +de 03_wind_off 2 50 1.0 0.0 +de 04_res 2 50 0.0 0.0 +de 05_nuclear 2 50 0.0 0.0 +de 06_coal 2 50 0.0 0.0 +de 07_gas 2 50 0.0 0.0 +de 08_non-res 2 50 0.0 0.0 +de 09_hydro_pump 2 50 0.0 0.0 +de 01_solar 2 51 1.0 0.0 +de 02_wind_on 2 51 1.0 0.0 +de 03_wind_off 2 51 1.0 0.0 +de 04_res 2 51 0.0 0.0 +de 05_nuclear 2 51 0.0 0.0 +de 06_coal 2 51 0.0 0.0 +de 07_gas 2 51 0.0 0.0 +de 08_non-res 2 51 0.0 0.0 +de 09_hydro_pump 2 51 0.0 0.0 +de 01_solar 2 52 1.0 0.0 +de 02_wind_on 2 52 1.0 0.0 +de 03_wind_off 2 52 1.0 0.0 +de 04_res 2 52 0.0 0.0 +de 05_nuclear 2 52 0.0 0.0 +de 06_coal 2 52 0.0 0.0 +de 07_gas 2 52 0.0 0.0 +de 08_non-res 2 52 0.0 0.0 +de 09_hydro_pump 2 52 0.0 0.0 +de 01_solar 2 53 1.0 0.0 +de 02_wind_on 2 53 1.0 0.0 +de 03_wind_off 2 53 1.0 0.0 +de 04_res 2 53 0.0 0.0 +de 05_nuclear 2 53 0.0 0.0 +de 06_coal 2 53 0.0 0.0 +de 07_gas 2 53 0.0 0.0 +de 08_non-res 2 53 0.0 0.0 +de 09_hydro_pump 2 53 0.0 0.0 +de 01_solar 2 54 1.0 0.0 +de 02_wind_on 2 54 1.0 0.0 +de 03_wind_off 2 54 1.0 0.0 +de 04_res 2 54 0.0 0.0 +de 05_nuclear 2 54 0.0 0.0 +de 06_coal 2 54 0.0 0.0 +de 07_gas 2 54 0.0 0.0 +de 08_non-res 2 54 0.0 0.0 +de 09_hydro_pump 2 54 0.0 0.0 +de 01_solar 2 55 1.0 0.0 +de 02_wind_on 2 55 1.0 0.0 +de 03_wind_off 2 55 1.0 0.0 +de 04_res 2 55 0.0 0.0 +de 05_nuclear 2 55 0.0 0.0 +de 06_coal 2 55 0.0 0.0 +de 07_gas 2 55 0.0 0.0 +de 08_non-res 2 55 0.0 0.0 +de 09_hydro_pump 2 55 0.0 0.0 +de 01_solar 2 56 1.0 0.0 +de 02_wind_on 2 56 1.0 0.0 +de 03_wind_off 2 56 1.0 0.0 +de 04_res 2 56 0.0 0.0 +de 05_nuclear 2 56 0.0 0.0 +de 06_coal 2 56 0.0 0.0 +de 07_gas 2 56 0.0 0.0 +de 08_non-res 2 56 0.0 0.0 +de 09_hydro_pump 2 56 0.0 0.0 +de 01_solar 2 57 1.0 0.0 +de 02_wind_on 2 57 1.0 0.0 +de 03_wind_off 2 57 1.0 0.0 +de 04_res 2 57 0.0 0.0 +de 05_nuclear 2 57 0.0 0.0 +de 06_coal 2 57 0.0 0.0 +de 07_gas 2 57 0.0 0.0 +de 08_non-res 2 57 0.0 0.0 +de 09_hydro_pump 2 57 0.0 0.0 +de 01_solar 2 58 1.0 0.0 +de 02_wind_on 2 58 1.0 0.0 +de 03_wind_off 2 58 1.0 0.0 +de 04_res 2 58 0.0 0.0 +de 05_nuclear 2 58 0.0 0.0 +de 06_coal 2 58 0.0 0.0 +de 07_gas 2 58 0.0 0.0 +de 08_non-res 2 58 0.0 0.0 +de 09_hydro_pump 2 58 0.0 0.0 +de 01_solar 2 59 1.0 0.0 +de 02_wind_on 2 59 1.0 0.0 +de 03_wind_off 2 59 1.0 0.0 +de 04_res 2 59 0.0 0.0 +de 05_nuclear 2 59 0.0 0.0 +de 06_coal 2 59 0.0 0.0 +de 07_gas 2 59 0.0 0.0 +de 08_non-res 2 59 0.0 0.0 +de 09_hydro_pump 2 59 0.0 0.0 +de 01_solar 2 60 1.0 0.0 +de 02_wind_on 2 60 1.0 0.0 +de 03_wind_off 2 60 1.0 0.0 +de 04_res 2 60 0.0 0.0 +de 05_nuclear 2 60 0.0 0.0 +de 06_coal 2 60 0.0 0.0 +de 07_gas 2 60 0.0 0.0 +de 08_non-res 2 60 0.0 0.0 +de 09_hydro_pump 2 60 0.0 0.0 +de 01_solar 2 61 1.0 0.0 +de 02_wind_on 2 61 1.0 0.0 +de 03_wind_off 2 61 1.0 0.0 +de 04_res 2 61 0.0 0.0 +de 05_nuclear 2 61 0.0 0.0 +de 06_coal 2 61 0.0 0.0 +de 07_gas 2 61 0.0 0.0 +de 08_non-res 2 61 0.0 0.0 +de 09_hydro_pump 2 61 0.0 0.0 +de 01_solar 2 62 1.0 0.0 +de 02_wind_on 2 62 1.0 0.0 +de 03_wind_off 2 62 1.0 0.0 +de 04_res 2 62 1.0 0.0 +de 05_nuclear 2 62 0.0 0.0 +de 06_coal 2 62 0.0 0.0 +de 07_gas 2 62 0.0 0.0 +de 08_non-res 2 62 0.0 0.0 +de 09_hydro_pump 2 62 0.0 0.0 +de 01_solar 2 63 1.0 0.0 +de 02_wind_on 2 63 1.0 0.0 +de 03_wind_off 2 63 1.0 0.0 +de 04_res 2 63 1.0 0.0 +de 05_nuclear 2 63 0.0 0.0 +de 06_coal 2 63 0.0 0.0 +de 07_gas 2 63 0.0 0.0 +de 08_non-res 2 63 0.0 0.0 +de 09_hydro_pump 2 63 0.0 0.0 +de 01_solar 2 64 1.0 0.0 +de 02_wind_on 2 64 1.0 0.0 +de 03_wind_off 2 64 1.0 0.0 +de 04_res 2 64 1.0 0.0 +de 05_nuclear 2 64 0.0 0.0 +de 06_coal 2 64 0.0 0.0 +de 07_gas 2 64 0.0 0.0 +de 08_non-res 2 64 0.0 0.0 +de 09_hydro_pump 2 64 0.0 0.0 +de 01_solar 2 65 1.0 0.0 +de 02_wind_on 2 65 1.0 0.0 +de 03_wind_off 2 65 1.0 0.0 +de 04_res 2 65 1.0 0.0 +de 05_nuclear 2 65 0.0 0.0 +de 06_coal 2 65 0.0 0.0 +de 07_gas 2 65 0.0 0.0 +de 08_non-res 2 65 0.0 0.0 +de 09_hydro_pump 2 65 0.0 0.0 +de 01_solar 2 66 1.0 0.0 +de 02_wind_on 2 66 1.0 0.0 +de 03_wind_off 2 66 1.0 0.0 +de 04_res 2 66 1.0 0.0 +de 05_nuclear 2 66 0.0 0.0 +de 06_coal 2 66 0.0 0.0 +de 07_gas 2 66 0.0 0.0 +de 08_non-res 2 66 0.0 0.0 +de 09_hydro_pump 2 66 0.0 0.0 +de 01_solar 2 67 1.0 0.0 +de 02_wind_on 2 67 1.0 0.0 +de 03_wind_off 2 67 1.0 0.0 +de 04_res 2 67 1.0 0.0 +de 05_nuclear 2 67 0.0 0.0 +de 06_coal 2 67 0.0 0.0 +de 07_gas 2 67 0.0 0.0 +de 08_non-res 2 67 0.0 0.0 +de 09_hydro_pump 2 67 0.0 0.0 +de 01_solar 2 68 1.0 0.0 +de 02_wind_on 2 68 1.0 0.0 +de 03_wind_off 2 68 1.0 0.0 +de 04_res 2 68 1.0 0.0 +de 05_nuclear 2 68 0.0 0.0 +de 06_coal 2 68 0.0 0.0 +de 07_gas 2 68 0.0 0.0 +de 08_non-res 2 68 0.0 0.0 +de 09_hydro_pump 2 68 0.0 0.0 +de 01_solar 2 69 1.0 0.0 +de 02_wind_on 2 69 1.0 0.0 +de 03_wind_off 2 69 1.0 0.0 +de 04_res 2 69 1.0 0.0 +de 05_nuclear 2 69 0.0 0.0 +de 06_coal 2 69 0.0 0.0 +de 07_gas 2 69 0.0 0.0 +de 08_non-res 2 69 0.0 0.0 +de 09_hydro_pump 2 69 0.0 0.0 +de 01_solar 2 70 1.0 0.0 +de 02_wind_on 2 70 1.0 0.0 +de 03_wind_off 2 70 1.0 0.0 +de 04_res 2 70 1.0 0.0 +de 05_nuclear 2 70 0.0 0.0 +de 06_coal 2 70 0.0 0.0 +de 07_gas 2 70 0.0 0.0 +de 08_non-res 2 70 0.0 0.0 +de 09_hydro_pump 2 70 0.0 0.0 +de 01_solar 2 71 1.0 0.0 +de 02_wind_on 2 71 1.0 0.0 +de 03_wind_off 2 71 1.0 0.0 +de 04_res 2 71 1.0 0.0 +de 05_nuclear 2 71 0.0 0.0 +de 06_coal 2 71 0.0 0.0 +de 07_gas 2 71 0.0 0.0 +de 08_non-res 2 71 0.0 0.0 +de 09_hydro_pump 2 71 0.0 0.0 +de 01_solar 2 72 1.0 0.0 +de 02_wind_on 2 72 1.0 0.0 +de 03_wind_off 2 72 1.0 0.0 +de 04_res 2 72 1.0 0.0 +de 05_nuclear 2 72 0.0 0.0 +de 06_coal 2 72 0.0 0.0 +de 07_gas 2 72 0.0 0.0 +de 08_non-res 2 72 0.0 0.0 +de 09_hydro_pump 2 72 0.0 0.0 +de 01_solar 2 73 1.0 0.0 +de 02_wind_on 2 73 1.0 0.0 +de 03_wind_off 2 73 1.0 0.0 +de 04_res 2 73 1.0 0.0 +de 05_nuclear 2 73 0.0 0.0 +de 06_coal 2 73 0.0 0.0 +de 07_gas 2 73 0.0 0.0 +de 08_non-res 2 73 0.0 0.0 +de 09_hydro_pump 2 73 0.0 0.0 +de 01_solar 2 74 1.0 0.0 +de 02_wind_on 2 74 1.0 0.0 +de 03_wind_off 2 74 1.0 0.0 +de 04_res 2 74 1.0 0.0 +de 05_nuclear 2 74 0.0 0.0 +de 06_coal 2 74 0.0 0.0 +de 07_gas 2 74 0.0 0.0 +de 08_non-res 2 74 0.0 0.0 +de 09_hydro_pump 2 74 0.0 0.0 +de 01_solar 2 75 1.0 0.0 +de 02_wind_on 2 75 1.0 0.0 +de 03_wind_off 2 75 1.0 0.0 +de 04_res 2 75 1.0 0.0 +de 05_nuclear 2 75 0.0 0.0 +de 06_coal 2 75 0.0 0.0 +de 07_gas 2 75 0.0 0.0 +de 08_non-res 2 75 0.0 0.0 +de 09_hydro_pump 2 75 0.0 0.0 +de 01_solar 2 76 1.0 0.0 +de 02_wind_on 2 76 1.0 0.0 +de 03_wind_off 2 76 1.0 0.0 +de 04_res 2 76 1.0 0.0 +de 05_nuclear 2 76 0.0 0.0 +de 06_coal 2 76 0.0 0.0 +de 07_gas 2 76 0.0 0.0 +de 08_non-res 2 76 0.0 0.0 +de 09_hydro_pump 2 76 0.0 0.0 +de 01_solar 2 77 1.0 0.0 +de 02_wind_on 2 77 1.0 0.0 +de 03_wind_off 2 77 1.0 0.0 +de 04_res 2 77 1.0 0.0 +de 05_nuclear 2 77 0.0 0.0 +de 06_coal 2 77 0.0 0.0 +de 07_gas 2 77 0.0 0.0 +de 08_non-res 2 77 0.0 0.0 +de 09_hydro_pump 2 77 0.0 0.0 +de 01_solar 2 78 1.0 0.0 +de 02_wind_on 2 78 1.0 0.0 +de 03_wind_off 2 78 1.0 0.0 +de 04_res 2 78 1.0 0.0 +de 05_nuclear 2 78 0.0 0.0 +de 06_coal 2 78 0.0 0.0 +de 07_gas 2 78 0.0 0.0 +de 08_non-res 2 78 0.0 0.0 +de 09_hydro_pump 2 78 0.0 0.0 +de 01_solar 2 79 1.0 0.0 +de 02_wind_on 2 79 1.0 0.0 +de 03_wind_off 2 79 1.0 0.0 +de 04_res 2 79 1.0 0.0 +de 05_nuclear 2 79 0.0 0.0 +de 06_coal 2 79 0.0 0.0 +de 07_gas 2 79 0.0 0.0 +de 08_non-res 2 79 0.0 0.0 +de 09_hydro_pump 2 79 0.0 0.0 +de 01_solar 2 80 1.0 0.0 +de 02_wind_on 2 80 1.0 0.0 +de 03_wind_off 2 80 1.0 0.0 +de 04_res 2 80 1.0 0.0 +de 05_nuclear 2 80 0.0 0.0 +de 06_coal 2 80 0.0 0.0 +de 07_gas 2 80 0.0 0.0 +de 08_non-res 2 80 0.0 0.0 +de 09_hydro_pump 2 80 0.0 0.0 +de 01_solar 2 81 1.0 0.0 +de 02_wind_on 2 81 1.0 0.0 +de 03_wind_off 2 81 1.0 0.0 +de 04_res 2 81 1.0 0.0 +de 05_nuclear 2 81 0.0 0.0 +de 06_coal 2 81 0.0 0.0 +de 07_gas 2 81 0.0 0.0 +de 08_non-res 2 81 0.0 0.0 +de 09_hydro_pump 2 81 0.0 0.0 +de 01_solar 2 82 1.0 0.0 +de 02_wind_on 2 82 1.0 0.0 +de 03_wind_off 2 82 1.0 0.0 +de 04_res 2 82 1.0 0.0 +de 05_nuclear 2 82 1.0 0.0 +de 06_coal 2 82 0.0 0.0 +de 07_gas 2 82 0.0 0.0 +de 08_non-res 2 82 0.0 0.0 +de 09_hydro_pump 2 82 0.0 0.0 +de 01_solar 2 83 1.0 0.0 +de 02_wind_on 2 83 1.0 0.0 +de 03_wind_off 2 83 1.0 0.0 +de 04_res 2 83 1.0 0.0 +de 05_nuclear 2 83 1.0 0.0 +de 06_coal 2 83 0.0 0.0 +de 07_gas 2 83 0.0 0.0 +de 08_non-res 2 83 0.0 0.0 +de 09_hydro_pump 2 83 0.0 0.0 +de 01_solar 2 84 1.0 0.0 +de 02_wind_on 2 84 1.0 0.0 +de 03_wind_off 2 84 1.0 0.0 +de 04_res 2 84 1.0 0.0 +de 05_nuclear 2 84 1.0 0.0 +de 06_coal 2 84 0.0 0.0 +de 07_gas 2 84 0.0 0.0 +de 08_non-res 2 84 0.0 0.0 +de 09_hydro_pump 2 84 0.0 0.0 +de 01_solar 2 85 1.0 0.0 +de 02_wind_on 2 85 1.0 0.0 +de 03_wind_off 2 85 1.0 0.0 +de 04_res 2 85 1.0 0.0 +de 05_nuclear 2 85 1.0 0.0 +de 06_coal 2 85 0.0 0.0 +de 07_gas 2 85 0.0 0.0 +de 08_non-res 2 85 0.0 0.0 +de 09_hydro_pump 2 85 0.0 0.0 +de 01_solar 2 86 1.0 0.0 +de 02_wind_on 2 86 1.0 0.0 +de 03_wind_off 2 86 1.0 0.0 +de 04_res 2 86 1.0 0.0 +de 05_nuclear 2 86 1.0 0.0 +de 06_coal 2 86 0.0 0.0 +de 07_gas 2 86 0.0 0.0 +de 08_non-res 2 86 0.0 0.0 +de 09_hydro_pump 2 86 0.0 0.0 +de 01_solar 2 87 1.0 0.0 +de 02_wind_on 2 87 1.0 0.0 +de 03_wind_off 2 87 1.0 0.0 +de 04_res 2 87 1.0 0.0 +de 05_nuclear 2 87 1.0 0.0 +de 06_coal 2 87 0.0 0.0 +de 07_gas 2 87 0.0 0.0 +de 08_non-res 2 87 0.0 0.0 +de 09_hydro_pump 2 87 0.0 0.0 +de 01_solar 2 88 1.0 0.0 +de 02_wind_on 2 88 1.0 0.0 +de 03_wind_off 2 88 1.0 0.0 +de 04_res 2 88 1.0 0.0 +de 05_nuclear 2 88 1.0 0.0 +de 06_coal 2 88 0.0 0.0 +de 07_gas 2 88 0.0 0.0 +de 08_non-res 2 88 0.0 0.0 +de 09_hydro_pump 2 88 0.0 0.0 +de 01_solar 2 89 1.0 0.0 +de 02_wind_on 2 89 1.0 0.0 +de 03_wind_off 2 89 1.0 0.0 +de 04_res 2 89 1.0 0.0 +de 05_nuclear 2 89 1.0 0.0 +de 06_coal 2 89 0.0 0.0 +de 07_gas 2 89 0.0 0.0 +de 08_non-res 2 89 0.0 0.0 +de 09_hydro_pump 2 89 0.0 0.0 +de 01_solar 2 90 1.0 0.0 +de 02_wind_on 2 90 1.0 0.0 +de 03_wind_off 2 90 1.0 0.0 +de 04_res 2 90 1.0 0.0 +de 05_nuclear 2 90 1.0 0.0 +de 06_coal 2 90 0.0 0.0 +de 07_gas 2 90 0.0 0.0 +de 08_non-res 2 90 0.0 0.0 +de 09_hydro_pump 2 90 0.0 0.0 +de 01_solar 2 91 1.0 0.0 +de 02_wind_on 2 91 1.0 0.0 +de 03_wind_off 2 91 1.0 0.0 +de 04_res 2 91 1.0 0.0 +de 05_nuclear 2 91 1.0 0.0 +de 06_coal 2 91 0.0 0.0 +de 07_gas 2 91 0.0 0.0 +de 08_non-res 2 91 0.0 0.0 +de 09_hydro_pump 2 91 0.0 0.0 +de 01_solar 2 92 1.0 0.0 +de 02_wind_on 2 92 1.0 0.0 +de 03_wind_off 2 92 1.0 0.0 +de 04_res 2 92 1.0 0.0 +de 05_nuclear 2 92 1.0 0.0 +de 06_coal 2 92 0.0 0.0 +de 07_gas 2 92 0.0 0.0 +de 08_non-res 2 92 0.0 0.0 +de 09_hydro_pump 2 92 0.0 0.0 +de 01_solar 2 93 1.0 0.0 +de 02_wind_on 2 93 1.0 0.0 +de 03_wind_off 2 93 1.0 0.0 +de 04_res 2 93 1.0 0.0 +de 05_nuclear 2 93 1.0 0.0 +de 06_coal 2 93 0.0 0.0 +de 07_gas 2 93 0.0 0.0 +de 08_non-res 2 93 0.0 0.0 +de 09_hydro_pump 2 93 0.0 0.0 +de 01_solar 2 94 1.0 0.0 +de 02_wind_on 2 94 1.0 0.0 +de 03_wind_off 2 94 1.0 0.0 +de 04_res 2 94 1.0 0.0 +de 05_nuclear 2 94 1.0 0.0 +de 06_coal 2 94 0.0 0.0 +de 07_gas 2 94 0.0 0.0 +de 08_non-res 2 94 0.0 0.0 +de 09_hydro_pump 2 94 0.0 0.0 +de 01_solar 2 95 1.0 0.0 +de 02_wind_on 2 95 1.0 0.0 +de 03_wind_off 2 95 1.0 0.0 +de 04_res 2 95 1.0 0.0 +de 05_nuclear 2 95 1.0 0.0 +de 06_coal 2 95 0.0 0.0 +de 07_gas 2 95 0.0 0.0 +de 08_non-res 2 95 0.0 0.0 +de 09_hydro_pump 2 95 0.0 0.0 +de 01_solar 2 96 1.0 0.0 +de 02_wind_on 2 96 1.0 0.0 +de 03_wind_off 2 96 1.0 0.0 +de 04_res 2 96 1.0 0.0 +de 05_nuclear 2 96 1.0 0.0 +de 06_coal 2 96 0.0 0.0 +de 07_gas 2 96 0.0 0.0 +de 08_non-res 2 96 0.0 0.0 +de 09_hydro_pump 2 96 0.0 0.0 +de 01_solar 2 97 1.0 0.0 +de 02_wind_on 2 97 1.0 0.0 +de 03_wind_off 2 97 1.0 0.0 +de 04_res 2 97 1.0 0.0 +de 05_nuclear 2 97 1.0 0.0 +de 06_coal 2 97 0.0 0.0 +de 07_gas 2 97 0.0 0.0 +de 08_non-res 2 97 0.0 0.0 +de 09_hydro_pump 2 97 0.0 0.0 +de 01_solar 2 98 1.0 0.0 +de 02_wind_on 2 98 1.0 0.0 +de 03_wind_off 2 98 1.0 0.0 +de 04_res 2 98 1.0 0.0 +de 05_nuclear 2 98 1.0 0.0 +de 06_coal 2 98 0.0 0.0 +de 07_gas 2 98 0.0 0.0 +de 08_non-res 2 98 0.0 0.0 +de 09_hydro_pump 2 98 0.0 0.0 +de 01_solar 2 99 1.0 0.0 +de 02_wind_on 2 99 1.0 0.0 +de 03_wind_off 2 99 1.0 0.0 +de 04_res 2 99 1.0 0.0 +de 05_nuclear 2 99 1.0 0.0 +de 06_coal 2 99 0.0 0.0 +de 07_gas 2 99 0.0 0.0 +de 08_non-res 2 99 0.0 0.0 +de 09_hydro_pump 2 99 0.0 0.0 +de 01_solar 2 100 1.0 0.0 +de 02_wind_on 2 100 1.0 0.0 +de 03_wind_off 2 100 1.0 0.0 +de 04_res 2 100 1.0 0.0 +de 05_nuclear 2 100 1.0 0.0 +de 06_coal 2 100 0.0 0.0 +de 07_gas 2 100 0.0 0.0 +de 08_non-res 2 100 0.0 0.0 +de 09_hydro_pump 2 100 0.0 0.0 +de 01_solar 2 101 1.0 0.0 +de 02_wind_on 2 101 1.0 0.0 +de 03_wind_off 2 101 1.0 0.0 +de 04_res 2 101 1.0 0.0 +de 05_nuclear 2 101 1.0 0.0 +de 06_coal 2 101 0.0 0.0 +de 07_gas 2 101 0.0 0.0 +de 08_non-res 2 101 0.0 0.0 +de 09_hydro_pump 2 101 0.0 0.0 +de 01_solar 2 102 1.0 0.0 +de 02_wind_on 2 102 1.0 0.0 +de 03_wind_off 2 102 1.0 0.0 +de 04_res 2 102 1.0 0.0 +de 05_nuclear 2 102 1.0 0.0 +de 06_coal 2 102 1.0 0.0 +de 07_gas 2 102 0.0 0.0 +de 08_non-res 2 102 0.0 0.0 +de 09_hydro_pump 2 102 0.0 0.0 +de 01_solar 2 103 1.0 0.0 +de 02_wind_on 2 103 1.0 0.0 +de 03_wind_off 2 103 1.0 0.0 +de 04_res 2 103 1.0 0.0 +de 05_nuclear 2 103 1.0 0.0 +de 06_coal 2 103 1.0 0.0 +de 07_gas 2 103 0.0 0.0 +de 08_non-res 2 103 0.0 0.0 +de 09_hydro_pump 2 103 0.0 0.0 +de 01_solar 2 104 1.0 0.0 +de 02_wind_on 2 104 1.0 0.0 +de 03_wind_off 2 104 1.0 0.0 +de 04_res 2 104 1.0 0.0 +de 05_nuclear 2 104 1.0 0.0 +de 06_coal 2 104 1.0 0.0 +de 07_gas 2 104 0.0 0.0 +de 08_non-res 2 104 0.0 0.0 +de 09_hydro_pump 2 104 0.0 0.0 +de 01_solar 2 105 1.0 0.0 +de 02_wind_on 2 105 1.0 0.0 +de 03_wind_off 2 105 1.0 0.0 +de 04_res 2 105 1.0 0.0 +de 05_nuclear 2 105 1.0 0.0 +de 06_coal 2 105 1.0 0.0 +de 07_gas 2 105 0.0 0.0 +de 08_non-res 2 105 0.0 0.0 +de 09_hydro_pump 2 105 0.0 0.0 +de 01_solar 2 106 1.0 0.0 +de 02_wind_on 2 106 1.0 0.0 +de 03_wind_off 2 106 1.0 0.0 +de 04_res 2 106 1.0 0.0 +de 05_nuclear 2 106 1.0 0.0 +de 06_coal 2 106 1.0 0.0 +de 07_gas 2 106 0.0 0.0 +de 08_non-res 2 106 0.0 0.0 +de 09_hydro_pump 2 106 0.0 0.0 +de 01_solar 2 107 1.0 0.0 +de 02_wind_on 2 107 1.0 0.0 +de 03_wind_off 2 107 1.0 0.0 +de 04_res 2 107 1.0 0.0 +de 05_nuclear 2 107 1.0 0.0 +de 06_coal 2 107 1.0 0.0 +de 07_gas 2 107 0.0 0.0 +de 08_non-res 2 107 0.0 0.0 +de 09_hydro_pump 2 107 0.0 0.0 +de 01_solar 2 108 1.0 0.0 +de 02_wind_on 2 108 1.0 0.0 +de 03_wind_off 2 108 1.0 0.0 +de 04_res 2 108 1.0 0.0 +de 05_nuclear 2 108 1.0 0.0 +de 06_coal 2 108 1.0 0.0 +de 07_gas 2 108 0.0 0.0 +de 08_non-res 2 108 0.0 0.0 +de 09_hydro_pump 2 108 0.0 0.0 +de 01_solar 2 109 1.0 0.0 +de 02_wind_on 2 109 1.0 0.0 +de 03_wind_off 2 109 1.0 0.0 +de 04_res 2 109 1.0 0.0 +de 05_nuclear 2 109 1.0 0.0 +de 06_coal 2 109 1.0 0.0 +de 07_gas 2 109 0.0 0.0 +de 08_non-res 2 109 0.0 0.0 +de 09_hydro_pump 2 109 0.0 0.0 +de 01_solar 2 110 1.0 0.0 +de 02_wind_on 2 110 1.0 0.0 +de 03_wind_off 2 110 1.0 0.0 +de 04_res 2 110 1.0 0.0 +de 05_nuclear 2 110 1.0 0.0 +de 06_coal 2 110 1.0 0.0 +de 07_gas 2 110 0.0 0.0 +de 08_non-res 2 110 0.0 0.0 +de 09_hydro_pump 2 110 0.0 0.0 +de 01_solar 2 111 1.0 0.0 +de 02_wind_on 2 111 1.0 0.0 +de 03_wind_off 2 111 1.0 0.0 +de 04_res 2 111 1.0 0.0 +de 05_nuclear 2 111 1.0 0.0 +de 06_coal 2 111 1.0 0.0 +de 07_gas 2 111 0.0 0.0 +de 08_non-res 2 111 0.0 0.0 +de 09_hydro_pump 2 111 0.0 0.0 +de 01_solar 2 112 1.0 0.0 +de 02_wind_on 2 112 1.0 0.0 +de 03_wind_off 2 112 1.0 0.0 +de 04_res 2 112 1.0 0.0 +de 05_nuclear 2 112 1.0 0.0 +de 06_coal 2 112 1.0 0.0 +de 07_gas 2 112 0.0 0.0 +de 08_non-res 2 112 0.0 0.0 +de 09_hydro_pump 2 112 0.0 0.0 +de 01_solar 2 113 1.0 0.0 +de 02_wind_on 2 113 1.0 0.0 +de 03_wind_off 2 113 1.0 0.0 +de 04_res 2 113 1.0 0.0 +de 05_nuclear 2 113 1.0 0.0 +de 06_coal 2 113 1.0 0.0 +de 07_gas 2 113 0.0 0.0 +de 08_non-res 2 113 0.0 0.0 +de 09_hydro_pump 2 113 0.0 0.0 +de 01_solar 2 114 1.0 0.0 +de 02_wind_on 2 114 1.0 0.0 +de 03_wind_off 2 114 1.0 0.0 +de 04_res 2 114 1.0 0.0 +de 05_nuclear 2 114 1.0 0.0 +de 06_coal 2 114 1.0 0.0 +de 07_gas 2 114 0.0 0.0 +de 08_non-res 2 114 0.0 0.0 +de 09_hydro_pump 2 114 0.0 0.0 +de 01_solar 2 115 1.0 0.0 +de 02_wind_on 2 115 1.0 0.0 +de 03_wind_off 2 115 1.0 0.0 +de 04_res 2 115 1.0 0.0 +de 05_nuclear 2 115 1.0 0.0 +de 06_coal 2 115 1.0 0.0 +de 07_gas 2 115 0.0 0.0 +de 08_non-res 2 115 0.0 0.0 +de 09_hydro_pump 2 115 0.0 0.0 +de 01_solar 2 116 1.0 0.0 +de 02_wind_on 2 116 1.0 0.0 +de 03_wind_off 2 116 1.0 0.0 +de 04_res 2 116 1.0 0.0 +de 05_nuclear 2 116 1.0 0.0 +de 06_coal 2 116 1.0 0.0 +de 07_gas 2 116 0.0 0.0 +de 08_non-res 2 116 0.0 0.0 +de 09_hydro_pump 2 116 0.0 0.0 +de 01_solar 2 117 1.0 0.0 +de 02_wind_on 2 117 1.0 0.0 +de 03_wind_off 2 117 1.0 0.0 +de 04_res 2 117 1.0 0.0 +de 05_nuclear 2 117 1.0 0.0 +de 06_coal 2 117 1.0 0.0 +de 07_gas 2 117 0.0 0.0 +de 08_non-res 2 117 0.0 0.0 +de 09_hydro_pump 2 117 0.0 0.0 +de 01_solar 2 118 1.0 0.0 +de 02_wind_on 2 118 1.0 0.0 +de 03_wind_off 2 118 1.0 0.0 +de 04_res 2 118 1.0 0.0 +de 05_nuclear 2 118 1.0 0.0 +de 06_coal 2 118 1.0 0.0 +de 07_gas 2 118 0.0 0.0 +de 08_non-res 2 118 0.0 0.0 +de 09_hydro_pump 2 118 0.0 0.0 +de 01_solar 2 119 1.0 0.0 +de 02_wind_on 2 119 1.0 0.0 +de 03_wind_off 2 119 1.0 0.0 +de 04_res 2 119 1.0 0.0 +de 05_nuclear 2 119 1.0 0.0 +de 06_coal 2 119 1.0 0.0 +de 07_gas 2 119 0.0 0.0 +de 08_non-res 2 119 0.0 0.0 +de 09_hydro_pump 2 119 0.0 0.0 +de 01_solar 2 120 1.0 0.0 +de 02_wind_on 2 120 1.0 0.0 +de 03_wind_off 2 120 1.0 0.0 +de 04_res 2 120 1.0 0.0 +de 05_nuclear 2 120 1.0 0.0 +de 06_coal 2 120 1.0 0.0 +de 07_gas 2 120 0.0 0.0 +de 08_non-res 2 120 0.0 0.0 +de 09_hydro_pump 2 120 0.0 0.0 +de 01_solar 2 121 1.0 0.0 +de 02_wind_on 2 121 1.0 0.0 +de 03_wind_off 2 121 1.0 0.0 +de 04_res 2 121 1.0 0.0 +de 05_nuclear 2 121 1.0 0.0 +de 06_coal 2 121 1.0 0.0 +de 07_gas 2 121 0.0 0.0 +de 08_non-res 2 121 0.0 0.0 +de 09_hydro_pump 2 121 0.0 0.0 +de 01_solar 2 122 1.0 0.0 +de 02_wind_on 2 122 1.0 0.0 +de 03_wind_off 2 122 1.0 0.0 +de 04_res 2 122 1.0 0.0 +de 05_nuclear 2 122 1.0 0.0 +de 06_coal 2 122 1.0 0.0 +de 07_gas 2 122 1.0 0.0 +de 08_non-res 2 122 0.0 0.0 +de 09_hydro_pump 2 122 0.0 0.0 +de 01_solar 2 123 1.0 0.0 +de 02_wind_on 2 123 1.0 0.0 +de 03_wind_off 2 123 1.0 0.0 +de 04_res 2 123 1.0 0.0 +de 05_nuclear 2 123 1.0 0.0 +de 06_coal 2 123 1.0 0.0 +de 07_gas 2 123 1.0 0.0 +de 08_non-res 2 123 0.0 0.0 +de 09_hydro_pump 2 123 0.0 0.0 +de 01_solar 2 124 1.0 0.0 +de 02_wind_on 2 124 1.0 0.0 +de 03_wind_off 2 124 1.0 0.0 +de 04_res 2 124 1.0 0.0 +de 05_nuclear 2 124 1.0 0.0 +de 06_coal 2 124 1.0 0.0 +de 07_gas 2 124 1.0 0.0 +de 08_non-res 2 124 0.0 0.0 +de 09_hydro_pump 2 124 0.0 0.0 +de 01_solar 2 125 1.0 0.0 +de 02_wind_on 2 125 1.0 0.0 +de 03_wind_off 2 125 1.0 0.0 +de 04_res 2 125 1.0 0.0 +de 05_nuclear 2 125 1.0 0.0 +de 06_coal 2 125 1.0 0.0 +de 07_gas 2 125 1.0 0.0 +de 08_non-res 2 125 0.0 0.0 +de 09_hydro_pump 2 125 0.0 0.0 +de 01_solar 2 126 1.0 0.0 +de 02_wind_on 2 126 1.0 0.0 +de 03_wind_off 2 126 1.0 0.0 +de 04_res 2 126 1.0 0.0 +de 05_nuclear 2 126 1.0 0.0 +de 06_coal 2 126 1.0 0.0 +de 07_gas 2 126 1.0 0.0 +de 08_non-res 2 126 0.0 0.0 +de 09_hydro_pump 2 126 0.0 0.0 +de 01_solar 2 127 1.0 0.0 +de 02_wind_on 2 127 1.0 0.0 +de 03_wind_off 2 127 1.0 0.0 +de 04_res 2 127 1.0 0.0 +de 05_nuclear 2 127 1.0 0.0 +de 06_coal 2 127 1.0 0.0 +de 07_gas 2 127 1.0 0.0 +de 08_non-res 2 127 0.0 0.0 +de 09_hydro_pump 2 127 0.0 0.0 +de 01_solar 2 128 1.0 0.0 +de 02_wind_on 2 128 1.0 0.0 +de 03_wind_off 2 128 1.0 0.0 +de 04_res 2 128 1.0 0.0 +de 05_nuclear 2 128 1.0 0.0 +de 06_coal 2 128 1.0 0.0 +de 07_gas 2 128 1.0 0.0 +de 08_non-res 2 128 0.0 0.0 +de 09_hydro_pump 2 128 0.0 0.0 +de 01_solar 2 129 1.0 0.0 +de 02_wind_on 2 129 1.0 0.0 +de 03_wind_off 2 129 1.0 0.0 +de 04_res 2 129 1.0 0.0 +de 05_nuclear 2 129 1.0 0.0 +de 06_coal 2 129 1.0 0.0 +de 07_gas 2 129 1.0 0.0 +de 08_non-res 2 129 0.0 0.0 +de 09_hydro_pump 2 129 0.0 0.0 +de 01_solar 2 130 1.0 0.0 +de 02_wind_on 2 130 1.0 0.0 +de 03_wind_off 2 130 1.0 0.0 +de 04_res 2 130 1.0 0.0 +de 05_nuclear 2 130 1.0 0.0 +de 06_coal 2 130 1.0 0.0 +de 07_gas 2 130 1.0 0.0 +de 08_non-res 2 130 0.0 0.0 +de 09_hydro_pump 2 130 0.0 0.0 +de 01_solar 2 131 1.0 0.0 +de 02_wind_on 2 131 1.0 0.0 +de 03_wind_off 2 131 1.0 0.0 +de 04_res 2 131 1.0 0.0 +de 05_nuclear 2 131 1.0 0.0 +de 06_coal 2 131 1.0 0.0 +de 07_gas 2 131 1.0 0.0 +de 08_non-res 2 131 0.0 0.0 +de 09_hydro_pump 2 131 0.0 0.0 +de 01_solar 2 132 1.0 0.0 +de 02_wind_on 2 132 1.0 0.0 +de 03_wind_off 2 132 1.0 0.0 +de 04_res 2 132 1.0 0.0 +de 05_nuclear 2 132 1.0 0.0 +de 06_coal 2 132 1.0 0.0 +de 07_gas 2 132 1.0 0.0 +de 08_non-res 2 132 0.0 0.0 +de 09_hydro_pump 2 132 0.0 0.0 +de 01_solar 2 133 1.0 0.0 +de 02_wind_on 2 133 1.0 0.0 +de 03_wind_off 2 133 1.0 0.0 +de 04_res 2 133 1.0 0.0 +de 05_nuclear 2 133 1.0 0.0 +de 06_coal 2 133 1.0 0.0 +de 07_gas 2 133 1.0 0.0 +de 08_non-res 2 133 0.0 0.0 +de 09_hydro_pump 2 133 0.0 0.0 +de 01_solar 2 134 1.0 0.0 +de 02_wind_on 2 134 1.0 0.0 +de 03_wind_off 2 134 1.0 0.0 +de 04_res 2 134 1.0 0.0 +de 05_nuclear 2 134 1.0 0.0 +de 06_coal 2 134 1.0 0.0 +de 07_gas 2 134 1.0 0.0 +de 08_non-res 2 134 0.0 0.0 +de 09_hydro_pump 2 134 0.0 0.0 +de 01_solar 2 135 1.0 0.0 +de 02_wind_on 2 135 1.0 0.0 +de 03_wind_off 2 135 1.0 0.0 +de 04_res 2 135 1.0 0.0 +de 05_nuclear 2 135 1.0 0.0 +de 06_coal 2 135 1.0 0.0 +de 07_gas 2 135 1.0 0.0 +de 08_non-res 2 135 0.0 0.0 +de 09_hydro_pump 2 135 0.0 0.0 +de 01_solar 2 136 1.0 0.0 +de 02_wind_on 2 136 1.0 0.0 +de 03_wind_off 2 136 1.0 0.0 +de 04_res 2 136 1.0 0.0 +de 05_nuclear 2 136 1.0 0.0 +de 06_coal 2 136 1.0 0.0 +de 07_gas 2 136 1.0 0.0 +de 08_non-res 2 136 0.0 0.0 +de 09_hydro_pump 2 136 0.0 0.0 +de 01_solar 2 137 1.0 0.0 +de 02_wind_on 2 137 1.0 0.0 +de 03_wind_off 2 137 1.0 0.0 +de 04_res 2 137 1.0 0.0 +de 05_nuclear 2 137 1.0 0.0 +de 06_coal 2 137 1.0 0.0 +de 07_gas 2 137 1.0 0.0 +de 08_non-res 2 137 0.0 0.0 +de 09_hydro_pump 2 137 0.0 0.0 +de 01_solar 2 138 1.0 0.0 +de 02_wind_on 2 138 1.0 0.0 +de 03_wind_off 2 138 1.0 0.0 +de 04_res 2 138 1.0 0.0 +de 05_nuclear 2 138 1.0 0.0 +de 06_coal 2 138 1.0 0.0 +de 07_gas 2 138 1.0 0.0 +de 08_non-res 2 138 0.0 0.0 +de 09_hydro_pump 2 138 0.0 0.0 +de 01_solar 2 139 1.0 0.0 +de 02_wind_on 2 139 1.0 0.0 +de 03_wind_off 2 139 1.0 0.0 +de 04_res 2 139 1.0 0.0 +de 05_nuclear 2 139 1.0 0.0 +de 06_coal 2 139 1.0 0.0 +de 07_gas 2 139 1.0 0.0 +de 08_non-res 2 139 0.0 0.0 +de 09_hydro_pump 2 139 0.0 0.0 +de 01_solar 2 140 1.0 0.0 +de 02_wind_on 2 140 1.0 0.0 +de 03_wind_off 2 140 1.0 0.0 +de 04_res 2 140 1.0 0.0 +de 05_nuclear 2 140 1.0 0.0 +de 06_coal 2 140 1.0 0.0 +de 07_gas 2 140 1.0 0.0 +de 08_non-res 2 140 0.0 0.0 +de 09_hydro_pump 2 140 0.0 0.0 +de 01_solar 2 141 1.0 0.0 +de 02_wind_on 2 141 1.0 0.0 +de 03_wind_off 2 141 1.0 0.0 +de 04_res 2 141 1.0 0.0 +de 05_nuclear 2 141 1.0 0.0 +de 06_coal 2 141 1.0 0.0 +de 07_gas 2 141 1.0 0.0 +de 08_non-res 2 141 0.0 0.0 +de 09_hydro_pump 2 141 0.0 0.0 +de 01_solar 2 142 1.0 0.0 +de 02_wind_on 2 142 1.0 0.0 +de 03_wind_off 2 142 1.0 0.0 +de 04_res 2 142 1.0 0.0 +de 05_nuclear 2 142 1.0 0.0 +de 06_coal 2 142 1.0 0.0 +de 07_gas 2 142 1.0 0.0 +de 08_non-res 2 142 1.0 0.0 +de 09_hydro_pump 2 142 0.0 0.0 +de 01_solar 2 143 1.0 0.0 +de 02_wind_on 2 143 1.0 0.0 +de 03_wind_off 2 143 1.0 0.0 +de 04_res 2 143 1.0 0.0 +de 05_nuclear 2 143 1.0 0.0 +de 06_coal 2 143 1.0 0.0 +de 07_gas 2 143 1.0 0.0 +de 08_non-res 2 143 1.0 0.0 +de 09_hydro_pump 2 143 0.0 0.0 +de 01_solar 2 144 1.0 0.0 +de 02_wind_on 2 144 1.0 0.0 +de 03_wind_off 2 144 1.0 0.0 +de 04_res 2 144 1.0 0.0 +de 05_nuclear 2 144 1.0 0.0 +de 06_coal 2 144 1.0 0.0 +de 07_gas 2 144 1.0 0.0 +de 08_non-res 2 144 1.0 0.0 +de 09_hydro_pump 2 144 0.0 0.0 +de 01_solar 2 145 1.0 0.0 +de 02_wind_on 2 145 1.0 0.0 +de 03_wind_off 2 145 1.0 0.0 +de 04_res 2 145 1.0 0.0 +de 05_nuclear 2 145 1.0 0.0 +de 06_coal 2 145 1.0 0.0 +de 07_gas 2 145 1.0 0.0 +de 08_non-res 2 145 1.0 0.0 +de 09_hydro_pump 2 145 0.0 0.0 +de 01_solar 2 146 1.0 0.0 +de 02_wind_on 2 146 1.0 0.0 +de 03_wind_off 2 146 1.0 0.0 +de 04_res 2 146 1.0 0.0 +de 05_nuclear 2 146 1.0 0.0 +de 06_coal 2 146 1.0 0.0 +de 07_gas 2 146 1.0 0.0 +de 08_non-res 2 146 1.0 0.0 +de 09_hydro_pump 2 146 0.0 0.0 +de 01_solar 2 147 1.0 0.0 +de 02_wind_on 2 147 1.0 0.0 +de 03_wind_off 2 147 1.0 0.0 +de 04_res 2 147 1.0 0.0 +de 05_nuclear 2 147 1.0 0.0 +de 06_coal 2 147 1.0 0.0 +de 07_gas 2 147 1.0 0.0 +de 08_non-res 2 147 1.0 0.0 +de 09_hydro_pump 2 147 0.0 0.0 +de 01_solar 2 148 1.0 0.0 +de 02_wind_on 2 148 1.0 0.0 +de 03_wind_off 2 148 1.0 0.0 +de 04_res 2 148 1.0 0.0 +de 05_nuclear 2 148 1.0 0.0 +de 06_coal 2 148 1.0 0.0 +de 07_gas 2 148 1.0 0.0 +de 08_non-res 2 148 1.0 0.0 +de 09_hydro_pump 2 148 0.0 0.0 +de 01_solar 2 149 1.0 0.0 +de 02_wind_on 2 149 1.0 0.0 +de 03_wind_off 2 149 1.0 0.0 +de 04_res 2 149 1.0 0.0 +de 05_nuclear 2 149 1.0 0.0 +de 06_coal 2 149 1.0 0.0 +de 07_gas 2 149 1.0 0.0 +de 08_non-res 2 149 1.0 0.0 +de 09_hydro_pump 2 149 0.0 0.0 +de 01_solar 2 150 1.0 0.0 +de 02_wind_on 2 150 1.0 0.0 +de 03_wind_off 2 150 1.0 0.0 +de 04_res 2 150 1.0 0.0 +de 05_nuclear 2 150 1.0 0.0 +de 06_coal 2 150 1.0 0.0 +de 07_gas 2 150 1.0 0.0 +de 08_non-res 2 150 1.0 0.0 +de 09_hydro_pump 2 150 0.0 0.0 +de 01_solar 2 151 1.0 0.0 +de 02_wind_on 2 151 1.0 0.0 +de 03_wind_off 2 151 1.0 0.0 +de 04_res 2 151 1.0 0.0 +de 05_nuclear 2 151 1.0 0.0 +de 06_coal 2 151 1.0 0.0 +de 07_gas 2 151 1.0 0.0 +de 08_non-res 2 151 1.0 0.0 +de 09_hydro_pump 2 151 0.0 0.0 +de 01_solar 2 152 1.0 0.0 +de 02_wind_on 2 152 1.0 0.0 +de 03_wind_off 2 152 1.0 0.0 +de 04_res 2 152 1.0 0.0 +de 05_nuclear 2 152 1.0 0.0 +de 06_coal 2 152 1.0 0.0 +de 07_gas 2 152 1.0 0.0 +de 08_non-res 2 152 1.0 0.0 +de 09_hydro_pump 2 152 0.0 0.0 +de 01_solar 2 153 1.0 0.0 +de 02_wind_on 2 153 1.0 0.0 +de 03_wind_off 2 153 1.0 0.0 +de 04_res 2 153 1.0 0.0 +de 05_nuclear 2 153 1.0 0.0 +de 06_coal 2 153 1.0 0.0 +de 07_gas 2 153 1.0 0.0 +de 08_non-res 2 153 1.0 0.0 +de 09_hydro_pump 2 153 0.0 0.0 +de 01_solar 2 154 1.0 0.0 +de 02_wind_on 2 154 1.0 0.0 +de 03_wind_off 2 154 1.0 0.0 +de 04_res 2 154 1.0 0.0 +de 05_nuclear 2 154 1.0 0.0 +de 06_coal 2 154 1.0 0.0 +de 07_gas 2 154 1.0 0.0 +de 08_non-res 2 154 1.0 0.0 +de 09_hydro_pump 2 154 0.0 0.0 +de 01_solar 2 155 1.0 0.0 +de 02_wind_on 2 155 1.0 0.0 +de 03_wind_off 2 155 1.0 0.0 +de 04_res 2 155 1.0 0.0 +de 05_nuclear 2 155 1.0 0.0 +de 06_coal 2 155 1.0 0.0 +de 07_gas 2 155 1.0 0.0 +de 08_non-res 2 155 1.0 0.0 +de 09_hydro_pump 2 155 0.0 0.0 +de 01_solar 2 156 1.0 0.0 +de 02_wind_on 2 156 1.0 0.0 +de 03_wind_off 2 156 1.0 0.0 +de 04_res 2 156 1.0 0.0 +de 05_nuclear 2 156 1.0 0.0 +de 06_coal 2 156 1.0 0.0 +de 07_gas 2 156 1.0 0.0 +de 08_non-res 2 156 1.0 0.0 +de 09_hydro_pump 2 156 0.0 0.0 +de 01_solar 2 157 1.0 0.0 +de 02_wind_on 2 157 1.0 0.0 +de 03_wind_off 2 157 1.0 0.0 +de 04_res 2 157 1.0 0.0 +de 05_nuclear 2 157 1.0 0.0 +de 06_coal 2 157 1.0 0.0 +de 07_gas 2 157 1.0 0.0 +de 08_non-res 2 157 1.0 0.0 +de 09_hydro_pump 2 157 0.0 0.0 +de 01_solar 2 158 1.0 0.0 +de 02_wind_on 2 158 1.0 0.0 +de 03_wind_off 2 158 1.0 0.0 +de 04_res 2 158 1.0 0.0 +de 05_nuclear 2 158 1.0 0.0 +de 06_coal 2 158 1.0 0.0 +de 07_gas 2 158 1.0 0.0 +de 08_non-res 2 158 1.0 0.0 +de 09_hydro_pump 2 158 0.0 0.0 +de 01_solar 2 159 1.0 0.0 +de 02_wind_on 2 159 1.0 0.0 +de 03_wind_off 2 159 1.0 0.0 +de 04_res 2 159 1.0 0.0 +de 05_nuclear 2 159 1.0 0.0 +de 06_coal 2 159 1.0 0.0 +de 07_gas 2 159 1.0 0.0 +de 08_non-res 2 159 1.0 0.0 +de 09_hydro_pump 2 159 0.0 0.0 +de 01_solar 2 160 1.0 0.0 +de 02_wind_on 2 160 1.0 0.0 +de 03_wind_off 2 160 1.0 0.0 +de 04_res 2 160 1.0 0.0 +de 05_nuclear 2 160 1.0 0.0 +de 06_coal 2 160 1.0 0.0 +de 07_gas 2 160 1.0 0.0 +de 08_non-res 2 160 1.0 0.0 +de 09_hydro_pump 2 160 0.0 0.0 +de 01_solar 2 161 1.0 0.0 +de 02_wind_on 2 161 1.0 0.0 +de 03_wind_off 2 161 1.0 0.0 +de 04_res 2 161 1.0 0.0 +de 05_nuclear 2 161 1.0 0.0 +de 06_coal 2 161 1.0 0.0 +de 07_gas 2 161 1.0 0.0 +de 08_non-res 2 161 1.0 0.0 +de 09_hydro_pump 2 161 0.0 0.0 +de 01_solar 2 162 1.0 0.0 +de 02_wind_on 2 162 1.0 0.0 +de 03_wind_off 2 162 1.0 0.0 +de 04_res 2 162 1.0 0.0 +de 05_nuclear 2 162 1.0 0.0 +de 06_coal 2 162 1.0 0.0 +de 07_gas 2 162 1.0 0.0 +de 08_non-res 2 162 1.0 0.0 +de 09_hydro_pump 2 162 1.0 0.0 +de 01_solar 2 163 1.0 0.0 +de 02_wind_on 2 163 1.0 0.0 +de 03_wind_off 2 163 1.0 0.0 +de 04_res 2 163 1.0 0.0 +de 05_nuclear 2 163 1.0 0.0 +de 06_coal 2 163 1.0 0.0 +de 07_gas 2 163 1.0 0.0 +de 08_non-res 2 163 1.0 0.0 +de 09_hydro_pump 2 163 1.0 0.0 +de 01_solar 2 164 1.0 0.0 +de 02_wind_on 2 164 1.0 0.0 +de 03_wind_off 2 164 1.0 0.0 +de 04_res 2 164 1.0 0.0 +de 05_nuclear 2 164 1.0 0.0 +de 06_coal 2 164 1.0 0.0 +de 07_gas 2 164 1.0 0.0 +de 08_non-res 2 164 1.0 0.0 +de 09_hydro_pump 2 164 1.0 0.0 +de 01_solar 2 165 1.0 0.0 +de 02_wind_on 2 165 1.0 0.0 +de 03_wind_off 2 165 1.0 0.0 +de 04_res 2 165 1.0 0.0 +de 05_nuclear 2 165 1.0 0.0 +de 06_coal 2 165 1.0 0.0 +de 07_gas 2 165 1.0 0.0 +de 08_non-res 2 165 1.0 0.0 +de 09_hydro_pump 2 165 1.0 0.0 +de 01_solar 2 166 1.0 0.0 +de 02_wind_on 2 166 1.0 0.0 +de 03_wind_off 2 166 1.0 0.0 +de 04_res 2 166 1.0 0.0 +de 05_nuclear 2 166 1.0 0.0 +de 06_coal 2 166 1.0 0.0 +de 07_gas 2 166 1.0 0.0 +de 08_non-res 2 166 1.0 0.0 +de 09_hydro_pump 2 166 1.0 0.0 +de 01_solar 2 167 1.0 0.0 +de 02_wind_on 2 167 1.0 0.0 +de 03_wind_off 2 167 1.0 0.0 +de 04_res 2 167 1.0 0.0 +de 05_nuclear 2 167 1.0 0.0 +de 06_coal 2 167 1.0 0.0 +de 07_gas 2 167 1.0 0.0 +de 08_non-res 2 167 1.0 0.0 +de 09_hydro_pump 2 167 1.0 0.0 +de 01_solar 2 168 1.0 0.0 +de 02_wind_on 2 168 1.0 0.0 +de 03_wind_off 2 168 1.0 0.0 +de 04_res 2 168 1.0 0.0 +de 05_nuclear 2 168 1.0 0.0 +de 06_coal 2 168 1.0 0.0 +de 07_gas 2 168 1.0 0.0 +de 08_non-res 2 168 1.0 0.0 +de 09_hydro_pump 2 168 1.0 0.0 +de 01_solar 2 169 0.0 0.0 +de 02_wind_on 2 169 0.0 0.0 +de 03_wind_off 2 169 0.0 0.0 +de 04_res 2 169 0.0 0.0 +de 05_nuclear 2 169 0.0 0.0 +de 06_coal 2 169 0.0 0.0 +de 07_gas 2 169 0.0 0.0 +de 08_non-res 2 169 0.0 0.0 +de 09_hydro_pump 2 169 0.0 0.0 +de 01_solar 2 170 1.0 0.0 +de 02_wind_on 2 170 0.0 0.0 +de 03_wind_off 2 170 0.0 0.0 +de 04_res 2 170 0.0 0.0 +de 05_nuclear 2 170 0.0 0.0 +de 06_coal 2 170 0.0 0.0 +de 07_gas 2 170 0.0 0.0 +de 08_non-res 2 170 0.0 0.0 +de 09_hydro_pump 2 170 0.0 0.0 +de 01_solar 2 171 1.0 0.0 +de 02_wind_on 2 171 0.0 0.0 +de 03_wind_off 2 171 0.0 0.0 +de 04_res 2 171 0.0 0.0 +de 05_nuclear 2 171 0.0 0.0 +de 06_coal 2 171 0.0 0.0 +de 07_gas 2 171 0.0 0.0 +de 08_non-res 2 171 0.0 0.0 +de 09_hydro_pump 2 171 0.0 0.0 +de 01_solar 2 172 1.0 0.0 +de 02_wind_on 2 172 0.0 0.0 +de 03_wind_off 2 172 0.0 0.0 +de 04_res 2 172 0.0 0.0 +de 05_nuclear 2 172 0.0 0.0 +de 06_coal 2 172 0.0 0.0 +de 07_gas 2 172 0.0 0.0 +de 08_non-res 2 172 0.0 0.0 +de 09_hydro_pump 2 172 0.0 0.0 +de 01_solar 2 173 1.0 0.0 +de 02_wind_on 2 173 0.0 0.0 +de 03_wind_off 2 173 0.0 0.0 +de 04_res 2 173 0.0 0.0 +de 05_nuclear 2 173 0.0 0.0 +de 06_coal 2 173 0.0 0.0 +de 07_gas 2 173 0.0 0.0 +de 08_non-res 2 173 0.0 0.0 +de 09_hydro_pump 2 173 0.0 0.0 +de 01_solar 2 174 1.0 0.0 +de 02_wind_on 2 174 0.0 0.0 +de 03_wind_off 2 174 0.0 0.0 +de 04_res 2 174 0.0 0.0 +de 05_nuclear 2 174 0.0 0.0 +de 06_coal 2 174 0.0 0.0 +de 07_gas 2 174 0.0 0.0 +de 08_non-res 2 174 0.0 0.0 +de 09_hydro_pump 2 174 0.0 0.0 +de 01_solar 2 175 1.0 0.0 +de 02_wind_on 2 175 0.0 0.0 +de 03_wind_off 2 175 0.0 0.0 +de 04_res 2 175 0.0 0.0 +de 05_nuclear 2 175 0.0 0.0 +de 06_coal 2 175 0.0 0.0 +de 07_gas 2 175 0.0 0.0 +de 08_non-res 2 175 0.0 0.0 +de 09_hydro_pump 2 175 0.0 0.0 +de 01_solar 2 176 1.0 0.0 +de 02_wind_on 2 176 0.0 0.0 +de 03_wind_off 2 176 0.0 0.0 +de 04_res 2 176 0.0 0.0 +de 05_nuclear 2 176 0.0 0.0 +de 06_coal 2 176 0.0 0.0 +de 07_gas 2 176 0.0 0.0 +de 08_non-res 2 176 0.0 0.0 +de 09_hydro_pump 2 176 0.0 0.0 +de 01_solar 2 177 1.0 0.0 +de 02_wind_on 2 177 0.0 0.0 +de 03_wind_off 2 177 0.0 0.0 +de 04_res 2 177 0.0 0.0 +de 05_nuclear 2 177 0.0 0.0 +de 06_coal 2 177 0.0 0.0 +de 07_gas 2 177 0.0 0.0 +de 08_non-res 2 177 0.0 0.0 +de 09_hydro_pump 2 177 0.0 0.0 +de 01_solar 2 178 1.0 0.0 +de 02_wind_on 2 178 0.0 0.0 +de 03_wind_off 2 178 0.0 0.0 +de 04_res 2 178 0.0 0.0 +de 05_nuclear 2 178 0.0 0.0 +de 06_coal 2 178 0.0 0.0 +de 07_gas 2 178 0.0 0.0 +de 08_non-res 2 178 0.0 0.0 +de 09_hydro_pump 2 178 0.0 0.0 +de 01_solar 2 179 1.0 0.0 +de 02_wind_on 2 179 0.0 0.0 +de 03_wind_off 2 179 0.0 0.0 +de 04_res 2 179 0.0 0.0 +de 05_nuclear 2 179 0.0 0.0 +de 06_coal 2 179 0.0 0.0 +de 07_gas 2 179 0.0 0.0 +de 08_non-res 2 179 0.0 0.0 +de 09_hydro_pump 2 179 0.0 0.0 +de 01_solar 2 180 1.0 0.0 +de 02_wind_on 2 180 0.0 0.0 +de 03_wind_off 2 180 0.0 0.0 +de 04_res 2 180 0.0 0.0 +de 05_nuclear 2 180 0.0 0.0 +de 06_coal 2 180 0.0 0.0 +de 07_gas 2 180 0.0 0.0 +de 08_non-res 2 180 0.0 0.0 +de 09_hydro_pump 2 180 0.0 0.0 +de 01_solar 2 181 1.0 0.0 +de 02_wind_on 2 181 0.0 0.0 +de 03_wind_off 2 181 0.0 0.0 +de 04_res 2 181 0.0 0.0 +de 05_nuclear 2 181 0.0 0.0 +de 06_coal 2 181 0.0 0.0 +de 07_gas 2 181 0.0 0.0 +de 08_non-res 2 181 0.0 0.0 +de 09_hydro_pump 2 181 0.0 0.0 +de 01_solar 2 182 1.0 0.0 +de 02_wind_on 2 182 0.0 0.0 +de 03_wind_off 2 182 0.0 0.0 +de 04_res 2 182 0.0 0.0 +de 05_nuclear 2 182 0.0 0.0 +de 06_coal 2 182 0.0 0.0 +de 07_gas 2 182 0.0 0.0 +de 08_non-res 2 182 0.0 0.0 +de 09_hydro_pump 2 182 0.0 0.0 +de 01_solar 2 183 1.0 0.0 +de 02_wind_on 2 183 0.0 0.0 +de 03_wind_off 2 183 0.0 0.0 +de 04_res 2 183 0.0 0.0 +de 05_nuclear 2 183 0.0 0.0 +de 06_coal 2 183 0.0 0.0 +de 07_gas 2 183 0.0 0.0 +de 08_non-res 2 183 0.0 0.0 +de 09_hydro_pump 2 183 0.0 0.0 +de 01_solar 2 184 1.0 0.0 +de 02_wind_on 2 184 0.0 0.0 +de 03_wind_off 2 184 0.0 0.0 +de 04_res 2 184 0.0 0.0 +de 05_nuclear 2 184 0.0 0.0 +de 06_coal 2 184 0.0 0.0 +de 07_gas 2 184 0.0 0.0 +de 08_non-res 2 184 0.0 0.0 +de 09_hydro_pump 2 184 0.0 0.0 +de 01_solar 2 185 1.0 0.0 +de 02_wind_on 2 185 0.0 0.0 +de 03_wind_off 2 185 0.0 0.0 +de 04_res 2 185 0.0 0.0 +de 05_nuclear 2 185 0.0 0.0 +de 06_coal 2 185 0.0 0.0 +de 07_gas 2 185 0.0 0.0 +de 08_non-res 2 185 0.0 0.0 +de 09_hydro_pump 2 185 0.0 0.0 +de 01_solar 2 186 1.0 0.0 +de 02_wind_on 2 186 0.0 0.0 +de 03_wind_off 2 186 0.0 0.0 +de 04_res 2 186 0.0 0.0 +de 05_nuclear 2 186 0.0 0.0 +de 06_coal 2 186 0.0 0.0 +de 07_gas 2 186 0.0 0.0 +de 08_non-res 2 186 0.0 0.0 +de 09_hydro_pump 2 186 0.0 0.0 +de 01_solar 2 187 1.0 0.0 +de 02_wind_on 2 187 0.0 0.0 +de 03_wind_off 2 187 0.0 0.0 +de 04_res 2 187 0.0 0.0 +de 05_nuclear 2 187 0.0 0.0 +de 06_coal 2 187 0.0 0.0 +de 07_gas 2 187 0.0 0.0 +de 08_non-res 2 187 0.0 0.0 +de 09_hydro_pump 2 187 0.0 0.0 +de 01_solar 2 188 1.0 0.0 +de 02_wind_on 2 188 0.0 0.0 +de 03_wind_off 2 188 0.0 0.0 +de 04_res 2 188 0.0 0.0 +de 05_nuclear 2 188 0.0 0.0 +de 06_coal 2 188 0.0 0.0 +de 07_gas 2 188 0.0 0.0 +de 08_non-res 2 188 0.0 0.0 +de 09_hydro_pump 2 188 0.0 0.0 +de 01_solar 2 189 1.0 0.0 +de 02_wind_on 2 189 0.0 0.0 +de 03_wind_off 2 189 0.0 0.0 +de 04_res 2 189 0.0 0.0 +de 05_nuclear 2 189 0.0 0.0 +de 06_coal 2 189 0.0 0.0 +de 07_gas 2 189 0.0 0.0 +de 08_non-res 2 189 0.0 0.0 +de 09_hydro_pump 2 189 0.0 0.0 +de 01_solar 2 190 1.0 0.0 +de 02_wind_on 2 190 1.0 0.0 +de 03_wind_off 2 190 0.0 0.0 +de 04_res 2 190 0.0 0.0 +de 05_nuclear 2 190 0.0 0.0 +de 06_coal 2 190 0.0 0.0 +de 07_gas 2 190 0.0 0.0 +de 08_non-res 2 190 0.0 0.0 +de 09_hydro_pump 2 190 0.0 0.0 +de 01_solar 2 191 1.0 0.0 +de 02_wind_on 2 191 1.0 0.0 +de 03_wind_off 2 191 0.0 0.0 +de 04_res 2 191 0.0 0.0 +de 05_nuclear 2 191 0.0 0.0 +de 06_coal 2 191 0.0 0.0 +de 07_gas 2 191 0.0 0.0 +de 08_non-res 2 191 0.0 0.0 +de 09_hydro_pump 2 191 0.0 0.0 +de 01_solar 2 192 1.0 0.0 +de 02_wind_on 2 192 1.0 0.0 +de 03_wind_off 2 192 0.0 0.0 +de 04_res 2 192 0.0 0.0 +de 05_nuclear 2 192 0.0 0.0 +de 06_coal 2 192 0.0 0.0 +de 07_gas 2 192 0.0 0.0 +de 08_non-res 2 192 0.0 0.0 +de 09_hydro_pump 2 192 0.0 0.0 +de 01_solar 2 193 1.0 0.0 +de 02_wind_on 2 193 1.0 0.0 +de 03_wind_off 2 193 0.0 0.0 +de 04_res 2 193 0.0 0.0 +de 05_nuclear 2 193 0.0 0.0 +de 06_coal 2 193 0.0 0.0 +de 07_gas 2 193 0.0 0.0 +de 08_non-res 2 193 0.0 0.0 +de 09_hydro_pump 2 193 0.0 0.0 +de 01_solar 2 194 1.0 0.0 +de 02_wind_on 2 194 1.0 0.0 +de 03_wind_off 2 194 0.0 0.0 +de 04_res 2 194 0.0 0.0 +de 05_nuclear 2 194 0.0 0.0 +de 06_coal 2 194 0.0 0.0 +de 07_gas 2 194 0.0 0.0 +de 08_non-res 2 194 0.0 0.0 +de 09_hydro_pump 2 194 0.0 0.0 +de 01_solar 2 195 1.0 0.0 +de 02_wind_on 2 195 1.0 0.0 +de 03_wind_off 2 195 0.0 0.0 +de 04_res 2 195 0.0 0.0 +de 05_nuclear 2 195 0.0 0.0 +de 06_coal 2 195 0.0 0.0 +de 07_gas 2 195 0.0 0.0 +de 08_non-res 2 195 0.0 0.0 +de 09_hydro_pump 2 195 0.0 0.0 +de 01_solar 2 196 1.0 0.0 +de 02_wind_on 2 196 1.0 0.0 +de 03_wind_off 2 196 0.0 0.0 +de 04_res 2 196 0.0 0.0 +de 05_nuclear 2 196 0.0 0.0 +de 06_coal 2 196 0.0 0.0 +de 07_gas 2 196 0.0 0.0 +de 08_non-res 2 196 0.0 0.0 +de 09_hydro_pump 2 196 0.0 0.0 +de 01_solar 2 197 1.0 0.0 +de 02_wind_on 2 197 1.0 0.0 +de 03_wind_off 2 197 0.0 0.0 +de 04_res 2 197 0.0 0.0 +de 05_nuclear 2 197 0.0 0.0 +de 06_coal 2 197 0.0 0.0 +de 07_gas 2 197 0.0 0.0 +de 08_non-res 2 197 0.0 0.0 +de 09_hydro_pump 2 197 0.0 0.0 +de 01_solar 2 198 1.0 0.0 +de 02_wind_on 2 198 1.0 0.0 +de 03_wind_off 2 198 0.0 0.0 +de 04_res 2 198 0.0 0.0 +de 05_nuclear 2 198 0.0 0.0 +de 06_coal 2 198 0.0 0.0 +de 07_gas 2 198 0.0 0.0 +de 08_non-res 2 198 0.0 0.0 +de 09_hydro_pump 2 198 0.0 0.0 +de 01_solar 2 199 1.0 0.0 +de 02_wind_on 2 199 1.0 0.0 +de 03_wind_off 2 199 0.0 0.0 +de 04_res 2 199 0.0 0.0 +de 05_nuclear 2 199 0.0 0.0 +de 06_coal 2 199 0.0 0.0 +de 07_gas 2 199 0.0 0.0 +de 08_non-res 2 199 0.0 0.0 +de 09_hydro_pump 2 199 0.0 0.0 +de 01_solar 2 200 1.0 0.0 +de 02_wind_on 2 200 1.0 0.0 +de 03_wind_off 2 200 0.0 0.0 +de 04_res 2 200 0.0 0.0 +de 05_nuclear 2 200 0.0 0.0 +de 06_coal 2 200 0.0 0.0 +de 07_gas 2 200 0.0 0.0 +de 08_non-res 2 200 0.0 0.0 +de 09_hydro_pump 2 200 0.0 0.0 +de 01_solar 2 201 1.0 0.0 +de 02_wind_on 2 201 1.0 0.0 +de 03_wind_off 2 201 0.0 0.0 +de 04_res 2 201 0.0 0.0 +de 05_nuclear 2 201 0.0 0.0 +de 06_coal 2 201 0.0 0.0 +de 07_gas 2 201 0.0 0.0 +de 08_non-res 2 201 0.0 0.0 +de 09_hydro_pump 2 201 0.0 0.0 +de 01_solar 2 202 1.0 0.0 +de 02_wind_on 2 202 1.0 0.0 +de 03_wind_off 2 202 0.0 0.0 +de 04_res 2 202 0.0 0.0 +de 05_nuclear 2 202 0.0 0.0 +de 06_coal 2 202 0.0 0.0 +de 07_gas 2 202 0.0 0.0 +de 08_non-res 2 202 0.0 0.0 +de 09_hydro_pump 2 202 0.0 0.0 +de 01_solar 2 203 1.0 0.0 +de 02_wind_on 2 203 1.0 0.0 +de 03_wind_off 2 203 0.0 0.0 +de 04_res 2 203 0.0 0.0 +de 05_nuclear 2 203 0.0 0.0 +de 06_coal 2 203 0.0 0.0 +de 07_gas 2 203 0.0 0.0 +de 08_non-res 2 203 0.0 0.0 +de 09_hydro_pump 2 203 0.0 0.0 +de 01_solar 2 204 1.0 0.0 +de 02_wind_on 2 204 1.0 0.0 +de 03_wind_off 2 204 0.0 0.0 +de 04_res 2 204 0.0 0.0 +de 05_nuclear 2 204 0.0 0.0 +de 06_coal 2 204 0.0 0.0 +de 07_gas 2 204 0.0 0.0 +de 08_non-res 2 204 0.0 0.0 +de 09_hydro_pump 2 204 0.0 0.0 +de 01_solar 2 205 1.0 0.0 +de 02_wind_on 2 205 1.0 0.0 +de 03_wind_off 2 205 0.0 0.0 +de 04_res 2 205 0.0 0.0 +de 05_nuclear 2 205 0.0 0.0 +de 06_coal 2 205 0.0 0.0 +de 07_gas 2 205 0.0 0.0 +de 08_non-res 2 205 0.0 0.0 +de 09_hydro_pump 2 205 0.0 0.0 +de 01_solar 2 206 1.0 0.0 +de 02_wind_on 2 206 1.0 0.0 +de 03_wind_off 2 206 0.0 0.0 +de 04_res 2 206 0.0 0.0 +de 05_nuclear 2 206 0.0 0.0 +de 06_coal 2 206 0.0 0.0 +de 07_gas 2 206 0.0 0.0 +de 08_non-res 2 206 0.0 0.0 +de 09_hydro_pump 2 206 0.0 0.0 +de 01_solar 2 207 1.0 0.0 +de 02_wind_on 2 207 1.0 0.0 +de 03_wind_off 2 207 0.0 0.0 +de 04_res 2 207 0.0 0.0 +de 05_nuclear 2 207 0.0 0.0 +de 06_coal 2 207 0.0 0.0 +de 07_gas 2 207 0.0 0.0 +de 08_non-res 2 207 0.0 0.0 +de 09_hydro_pump 2 207 0.0 0.0 +de 01_solar 2 208 1.0 0.0 +de 02_wind_on 2 208 1.0 0.0 +de 03_wind_off 2 208 0.0 0.0 +de 04_res 2 208 0.0 0.0 +de 05_nuclear 2 208 0.0 0.0 +de 06_coal 2 208 0.0 0.0 +de 07_gas 2 208 0.0 0.0 +de 08_non-res 2 208 0.0 0.0 +de 09_hydro_pump 2 208 0.0 0.0 +de 01_solar 2 209 1.0 0.0 +de 02_wind_on 2 209 1.0 0.0 +de 03_wind_off 2 209 0.0 0.0 +de 04_res 2 209 0.0 0.0 +de 05_nuclear 2 209 0.0 0.0 +de 06_coal 2 209 0.0 0.0 +de 07_gas 2 209 0.0 0.0 +de 08_non-res 2 209 0.0 0.0 +de 09_hydro_pump 2 209 0.0 0.0 +de 01_solar 2 210 1.0 0.0 +de 02_wind_on 2 210 1.0 0.0 +de 03_wind_off 2 210 1.0 0.0 +de 04_res 2 210 0.0 0.0 +de 05_nuclear 2 210 0.0 0.0 +de 06_coal 2 210 0.0 0.0 +de 07_gas 2 210 0.0 0.0 +de 08_non-res 2 210 0.0 0.0 +de 09_hydro_pump 2 210 0.0 0.0 +de 01_solar 2 211 1.0 0.0 +de 02_wind_on 2 211 1.0 0.0 +de 03_wind_off 2 211 1.0 0.0 +de 04_res 2 211 0.0 0.0 +de 05_nuclear 2 211 0.0 0.0 +de 06_coal 2 211 0.0 0.0 +de 07_gas 2 211 0.0 0.0 +de 08_non-res 2 211 0.0 0.0 +de 09_hydro_pump 2 211 0.0 0.0 +de 01_solar 2 212 1.0 0.0 +de 02_wind_on 2 212 1.0 0.0 +de 03_wind_off 2 212 1.0 0.0 +de 04_res 2 212 0.0 0.0 +de 05_nuclear 2 212 0.0 0.0 +de 06_coal 2 212 0.0 0.0 +de 07_gas 2 212 0.0 0.0 +de 08_non-res 2 212 0.0 0.0 +de 09_hydro_pump 2 212 0.0 0.0 +de 01_solar 2 213 1.0 0.0 +de 02_wind_on 2 213 1.0 0.0 +de 03_wind_off 2 213 1.0 0.0 +de 04_res 2 213 0.0 0.0 +de 05_nuclear 2 213 0.0 0.0 +de 06_coal 2 213 0.0 0.0 +de 07_gas 2 213 0.0 0.0 +de 08_non-res 2 213 0.0 0.0 +de 09_hydro_pump 2 213 0.0 0.0 +de 01_solar 2 214 1.0 0.0 +de 02_wind_on 2 214 1.0 0.0 +de 03_wind_off 2 214 1.0 0.0 +de 04_res 2 214 0.0 0.0 +de 05_nuclear 2 214 0.0 0.0 +de 06_coal 2 214 0.0 0.0 +de 07_gas 2 214 0.0 0.0 +de 08_non-res 2 214 0.0 0.0 +de 09_hydro_pump 2 214 0.0 0.0 +de 01_solar 2 215 1.0 0.0 +de 02_wind_on 2 215 1.0 0.0 +de 03_wind_off 2 215 1.0 0.0 +de 04_res 2 215 0.0 0.0 +de 05_nuclear 2 215 0.0 0.0 +de 06_coal 2 215 0.0 0.0 +de 07_gas 2 215 0.0 0.0 +de 08_non-res 2 215 0.0 0.0 +de 09_hydro_pump 2 215 0.0 0.0 +de 01_solar 2 216 1.0 0.0 +de 02_wind_on 2 216 1.0 0.0 +de 03_wind_off 2 216 1.0 0.0 +de 04_res 2 216 0.0 0.0 +de 05_nuclear 2 216 0.0 0.0 +de 06_coal 2 216 0.0 0.0 +de 07_gas 2 216 0.0 0.0 +de 08_non-res 2 216 0.0 0.0 +de 09_hydro_pump 2 216 0.0 0.0 +de 01_solar 2 217 1.0 0.0 +de 02_wind_on 2 217 1.0 0.0 +de 03_wind_off 2 217 1.0 0.0 +de 04_res 2 217 0.0 0.0 +de 05_nuclear 2 217 0.0 0.0 +de 06_coal 2 217 0.0 0.0 +de 07_gas 2 217 0.0 0.0 +de 08_non-res 2 217 0.0 0.0 +de 09_hydro_pump 2 217 0.0 0.0 +de 01_solar 2 218 1.0 0.0 +de 02_wind_on 2 218 1.0 0.0 +de 03_wind_off 2 218 1.0 0.0 +de 04_res 2 218 0.0 0.0 +de 05_nuclear 2 218 0.0 0.0 +de 06_coal 2 218 0.0 0.0 +de 07_gas 2 218 0.0 0.0 +de 08_non-res 2 218 0.0 0.0 +de 09_hydro_pump 2 218 0.0 0.0 +de 01_solar 2 219 1.0 0.0 +de 02_wind_on 2 219 1.0 0.0 +de 03_wind_off 2 219 1.0 0.0 +de 04_res 2 219 0.0 0.0 +de 05_nuclear 2 219 0.0 0.0 +de 06_coal 2 219 0.0 0.0 +de 07_gas 2 219 0.0 0.0 +de 08_non-res 2 219 0.0 0.0 +de 09_hydro_pump 2 219 0.0 0.0 +de 01_solar 2 220 1.0 0.0 +de 02_wind_on 2 220 1.0 0.0 +de 03_wind_off 2 220 1.0 0.0 +de 04_res 2 220 0.0 0.0 +de 05_nuclear 2 220 0.0 0.0 +de 06_coal 2 220 0.0 0.0 +de 07_gas 2 220 0.0 0.0 +de 08_non-res 2 220 0.0 0.0 +de 09_hydro_pump 2 220 0.0 0.0 +de 01_solar 2 221 1.0 0.0 +de 02_wind_on 2 221 1.0 0.0 +de 03_wind_off 2 221 1.0 0.0 +de 04_res 2 221 0.0 0.0 +de 05_nuclear 2 221 0.0 0.0 +de 06_coal 2 221 0.0 0.0 +de 07_gas 2 221 0.0 0.0 +de 08_non-res 2 221 0.0 0.0 +de 09_hydro_pump 2 221 0.0 0.0 +de 01_solar 2 222 1.0 0.0 +de 02_wind_on 2 222 1.0 0.0 +de 03_wind_off 2 222 1.0 0.0 +de 04_res 2 222 0.0 0.0 +de 05_nuclear 2 222 0.0 0.0 +de 06_coal 2 222 0.0 0.0 +de 07_gas 2 222 0.0 0.0 +de 08_non-res 2 222 0.0 0.0 +de 09_hydro_pump 2 222 0.0 0.0 +de 01_solar 2 223 1.0 0.0 +de 02_wind_on 2 223 1.0 0.0 +de 03_wind_off 2 223 1.0 0.0 +de 04_res 2 223 0.0 0.0 +de 05_nuclear 2 223 0.0 0.0 +de 06_coal 2 223 0.0 0.0 +de 07_gas 2 223 0.0 0.0 +de 08_non-res 2 223 0.0 0.0 +de 09_hydro_pump 2 223 0.0 0.0 +de 01_solar 2 224 1.0 0.0 +de 02_wind_on 2 224 1.0 0.0 +de 03_wind_off 2 224 1.0 0.0 +de 04_res 2 224 0.0 0.0 +de 05_nuclear 2 224 0.0 0.0 +de 06_coal 2 224 0.0 0.0 +de 07_gas 2 224 0.0 0.0 +de 08_non-res 2 224 0.0 0.0 +de 09_hydro_pump 2 224 0.0 0.0 +de 01_solar 2 225 1.0 0.0 +de 02_wind_on 2 225 1.0 0.0 +de 03_wind_off 2 225 1.0 0.0 +de 04_res 2 225 0.0 0.0 +de 05_nuclear 2 225 0.0 0.0 +de 06_coal 2 225 0.0 0.0 +de 07_gas 2 225 0.0 0.0 +de 08_non-res 2 225 0.0 0.0 +de 09_hydro_pump 2 225 0.0 0.0 +de 01_solar 2 226 1.0 0.0 +de 02_wind_on 2 226 1.0 0.0 +de 03_wind_off 2 226 1.0 0.0 +de 04_res 2 226 0.0 0.0 +de 05_nuclear 2 226 0.0 0.0 +de 06_coal 2 226 0.0 0.0 +de 07_gas 2 226 0.0 0.0 +de 08_non-res 2 226 0.0 0.0 +de 09_hydro_pump 2 226 0.0 0.0 +de 01_solar 2 227 1.0 0.0 +de 02_wind_on 2 227 1.0 0.0 +de 03_wind_off 2 227 1.0 0.0 +de 04_res 2 227 0.0 0.0 +de 05_nuclear 2 227 0.0 0.0 +de 06_coal 2 227 0.0 0.0 +de 07_gas 2 227 0.0 0.0 +de 08_non-res 2 227 0.0 0.0 +de 09_hydro_pump 2 227 0.0 0.0 +de 01_solar 2 228 1.0 0.0 +de 02_wind_on 2 228 1.0 0.0 +de 03_wind_off 2 228 1.0 0.0 +de 04_res 2 228 0.0 0.0 +de 05_nuclear 2 228 0.0 0.0 +de 06_coal 2 228 0.0 0.0 +de 07_gas 2 228 0.0 0.0 +de 08_non-res 2 228 0.0 0.0 +de 09_hydro_pump 2 228 0.0 0.0 +de 01_solar 2 229 1.0 0.0 +de 02_wind_on 2 229 1.0 0.0 +de 03_wind_off 2 229 1.0 0.0 +de 04_res 2 229 0.0 0.0 +de 05_nuclear 2 229 0.0 0.0 +de 06_coal 2 229 0.0 0.0 +de 07_gas 2 229 0.0 0.0 +de 08_non-res 2 229 0.0 0.0 +de 09_hydro_pump 2 229 0.0 0.0 +de 01_solar 2 230 1.0 0.0 +de 02_wind_on 2 230 1.0 0.0 +de 03_wind_off 2 230 1.0 0.0 +de 04_res 2 230 1.0 0.0 +de 05_nuclear 2 230 0.0 0.0 +de 06_coal 2 230 0.0 0.0 +de 07_gas 2 230 0.0 0.0 +de 08_non-res 2 230 0.0 0.0 +de 09_hydro_pump 2 230 0.0 0.0 +de 01_solar 2 231 1.0 0.0 +de 02_wind_on 2 231 1.0 0.0 +de 03_wind_off 2 231 1.0 0.0 +de 04_res 2 231 1.0 0.0 +de 05_nuclear 2 231 0.0 0.0 +de 06_coal 2 231 0.0 0.0 +de 07_gas 2 231 0.0 0.0 +de 08_non-res 2 231 0.0 0.0 +de 09_hydro_pump 2 231 0.0 0.0 +de 01_solar 2 232 1.0 0.0 +de 02_wind_on 2 232 1.0 0.0 +de 03_wind_off 2 232 1.0 0.0 +de 04_res 2 232 1.0 0.0 +de 05_nuclear 2 232 0.0 0.0 +de 06_coal 2 232 0.0 0.0 +de 07_gas 2 232 0.0 0.0 +de 08_non-res 2 232 0.0 0.0 +de 09_hydro_pump 2 232 0.0 0.0 +de 01_solar 2 233 1.0 0.0 +de 02_wind_on 2 233 1.0 0.0 +de 03_wind_off 2 233 1.0 0.0 +de 04_res 2 233 1.0 0.0 +de 05_nuclear 2 233 0.0 0.0 +de 06_coal 2 233 0.0 0.0 +de 07_gas 2 233 0.0 0.0 +de 08_non-res 2 233 0.0 0.0 +de 09_hydro_pump 2 233 0.0 0.0 +de 01_solar 2 234 1.0 0.0 +de 02_wind_on 2 234 1.0 0.0 +de 03_wind_off 2 234 1.0 0.0 +de 04_res 2 234 1.0 0.0 +de 05_nuclear 2 234 0.0 0.0 +de 06_coal 2 234 0.0 0.0 +de 07_gas 2 234 0.0 0.0 +de 08_non-res 2 234 0.0 0.0 +de 09_hydro_pump 2 234 0.0 0.0 +de 01_solar 2 235 1.0 0.0 +de 02_wind_on 2 235 1.0 0.0 +de 03_wind_off 2 235 1.0 0.0 +de 04_res 2 235 1.0 0.0 +de 05_nuclear 2 235 0.0 0.0 +de 06_coal 2 235 0.0 0.0 +de 07_gas 2 235 0.0 0.0 +de 08_non-res 2 235 0.0 0.0 +de 09_hydro_pump 2 235 0.0 0.0 +de 01_solar 2 236 1.0 0.0 +de 02_wind_on 2 236 1.0 0.0 +de 03_wind_off 2 236 1.0 0.0 +de 04_res 2 236 1.0 0.0 +de 05_nuclear 2 236 0.0 0.0 +de 06_coal 2 236 0.0 0.0 +de 07_gas 2 236 0.0 0.0 +de 08_non-res 2 236 0.0 0.0 +de 09_hydro_pump 2 236 0.0 0.0 +de 01_solar 2 237 1.0 0.0 +de 02_wind_on 2 237 1.0 0.0 +de 03_wind_off 2 237 1.0 0.0 +de 04_res 2 237 1.0 0.0 +de 05_nuclear 2 237 0.0 0.0 +de 06_coal 2 237 0.0 0.0 +de 07_gas 2 237 0.0 0.0 +de 08_non-res 2 237 0.0 0.0 +de 09_hydro_pump 2 237 0.0 0.0 +de 01_solar 2 238 1.0 0.0 +de 02_wind_on 2 238 1.0 0.0 +de 03_wind_off 2 238 1.0 0.0 +de 04_res 2 238 1.0 0.0 +de 05_nuclear 2 238 0.0 0.0 +de 06_coal 2 238 0.0 0.0 +de 07_gas 2 238 0.0 0.0 +de 08_non-res 2 238 0.0 0.0 +de 09_hydro_pump 2 238 0.0 0.0 +de 01_solar 2 239 1.0 0.0 +de 02_wind_on 2 239 1.0 0.0 +de 03_wind_off 2 239 1.0 0.0 +de 04_res 2 239 1.0 0.0 +de 05_nuclear 2 239 0.0 0.0 +de 06_coal 2 239 0.0 0.0 +de 07_gas 2 239 0.0 0.0 +de 08_non-res 2 239 0.0 0.0 +de 09_hydro_pump 2 239 0.0 0.0 +de 01_solar 2 240 1.0 0.0 +de 02_wind_on 2 240 1.0 0.0 +de 03_wind_off 2 240 1.0 0.0 +de 04_res 2 240 1.0 0.0 +de 05_nuclear 2 240 0.0 0.0 +de 06_coal 2 240 0.0 0.0 +de 07_gas 2 240 0.0 0.0 +de 08_non-res 2 240 0.0 0.0 +de 09_hydro_pump 2 240 0.0 0.0 +de 01_solar 2 241 1.0 0.0 +de 02_wind_on 2 241 1.0 0.0 +de 03_wind_off 2 241 1.0 0.0 +de 04_res 2 241 1.0 0.0 +de 05_nuclear 2 241 0.0 0.0 +de 06_coal 2 241 0.0 0.0 +de 07_gas 2 241 0.0 0.0 +de 08_non-res 2 241 0.0 0.0 +de 09_hydro_pump 2 241 0.0 0.0 +de 01_solar 2 242 1.0 0.0 +de 02_wind_on 2 242 1.0 0.0 +de 03_wind_off 2 242 1.0 0.0 +de 04_res 2 242 1.0 0.0 +de 05_nuclear 2 242 0.0 0.0 +de 06_coal 2 242 0.0 0.0 +de 07_gas 2 242 0.0 0.0 +de 08_non-res 2 242 0.0 0.0 +de 09_hydro_pump 2 242 0.0 0.0 +de 01_solar 2 243 1.0 0.0 +de 02_wind_on 2 243 1.0 0.0 +de 03_wind_off 2 243 1.0 0.0 +de 04_res 2 243 1.0 0.0 +de 05_nuclear 2 243 0.0 0.0 +de 06_coal 2 243 0.0 0.0 +de 07_gas 2 243 0.0 0.0 +de 08_non-res 2 243 0.0 0.0 +de 09_hydro_pump 2 243 0.0 0.0 +de 01_solar 2 244 1.0 0.0 +de 02_wind_on 2 244 1.0 0.0 +de 03_wind_off 2 244 1.0 0.0 +de 04_res 2 244 1.0 0.0 +de 05_nuclear 2 244 0.0 0.0 +de 06_coal 2 244 0.0 0.0 +de 07_gas 2 244 0.0 0.0 +de 08_non-res 2 244 0.0 0.0 +de 09_hydro_pump 2 244 0.0 0.0 +de 01_solar 2 245 1.0 0.0 +de 02_wind_on 2 245 1.0 0.0 +de 03_wind_off 2 245 1.0 0.0 +de 04_res 2 245 1.0 0.0 +de 05_nuclear 2 245 0.0 0.0 +de 06_coal 2 245 0.0 0.0 +de 07_gas 2 245 0.0 0.0 +de 08_non-res 2 245 0.0 0.0 +de 09_hydro_pump 2 245 0.0 0.0 +de 01_solar 2 246 1.0 0.0 +de 02_wind_on 2 246 1.0 0.0 +de 03_wind_off 2 246 1.0 0.0 +de 04_res 2 246 1.0 0.0 +de 05_nuclear 2 246 0.0 0.0 +de 06_coal 2 246 0.0 0.0 +de 07_gas 2 246 0.0 0.0 +de 08_non-res 2 246 0.0 0.0 +de 09_hydro_pump 2 246 0.0 0.0 +de 01_solar 2 247 1.0 0.0 +de 02_wind_on 2 247 1.0 0.0 +de 03_wind_off 2 247 1.0 0.0 +de 04_res 2 247 1.0 0.0 +de 05_nuclear 2 247 0.0 0.0 +de 06_coal 2 247 0.0 0.0 +de 07_gas 2 247 0.0 0.0 +de 08_non-res 2 247 0.0 0.0 +de 09_hydro_pump 2 247 0.0 0.0 +de 01_solar 2 248 1.0 0.0 +de 02_wind_on 2 248 1.0 0.0 +de 03_wind_off 2 248 1.0 0.0 +de 04_res 2 248 1.0 0.0 +de 05_nuclear 2 248 0.0 0.0 +de 06_coal 2 248 0.0 0.0 +de 07_gas 2 248 0.0 0.0 +de 08_non-res 2 248 0.0 0.0 +de 09_hydro_pump 2 248 0.0 0.0 +de 01_solar 2 249 1.0 0.0 +de 02_wind_on 2 249 1.0 0.0 +de 03_wind_off 2 249 1.0 0.0 +de 04_res 2 249 1.0 0.0 +de 05_nuclear 2 249 0.0 0.0 +de 06_coal 2 249 0.0 0.0 +de 07_gas 2 249 0.0 0.0 +de 08_non-res 2 249 0.0 0.0 +de 09_hydro_pump 2 249 0.0 0.0 +de 01_solar 2 250 1.0 0.0 +de 02_wind_on 2 250 1.0 0.0 +de 03_wind_off 2 250 1.0 0.0 +de 04_res 2 250 1.0 0.0 +de 05_nuclear 2 250 1.0 0.0 +de 06_coal 2 250 0.0 0.0 +de 07_gas 2 250 0.0 0.0 +de 08_non-res 2 250 0.0 0.0 +de 09_hydro_pump 2 250 0.0 0.0 +de 01_solar 2 251 1.0 0.0 +de 02_wind_on 2 251 1.0 0.0 +de 03_wind_off 2 251 1.0 0.0 +de 04_res 2 251 1.0 0.0 +de 05_nuclear 2 251 1.0 0.0 +de 06_coal 2 251 0.0 0.0 +de 07_gas 2 251 0.0 0.0 +de 08_non-res 2 251 0.0 0.0 +de 09_hydro_pump 2 251 0.0 0.0 +de 01_solar 2 252 1.0 0.0 +de 02_wind_on 2 252 1.0 0.0 +de 03_wind_off 2 252 1.0 0.0 +de 04_res 2 252 1.0 0.0 +de 05_nuclear 2 252 1.0 0.0 +de 06_coal 2 252 0.0 0.0 +de 07_gas 2 252 0.0 0.0 +de 08_non-res 2 252 0.0 0.0 +de 09_hydro_pump 2 252 0.0 0.0 +de 01_solar 2 253 1.0 0.0 +de 02_wind_on 2 253 1.0 0.0 +de 03_wind_off 2 253 1.0 0.0 +de 04_res 2 253 1.0 0.0 +de 05_nuclear 2 253 1.0 0.0 +de 06_coal 2 253 0.0 0.0 +de 07_gas 2 253 0.0 0.0 +de 08_non-res 2 253 0.0 0.0 +de 09_hydro_pump 2 253 0.0 0.0 +de 01_solar 2 254 1.0 0.0 +de 02_wind_on 2 254 1.0 0.0 +de 03_wind_off 2 254 1.0 0.0 +de 04_res 2 254 1.0 0.0 +de 05_nuclear 2 254 1.0 0.0 +de 06_coal 2 254 0.0 0.0 +de 07_gas 2 254 0.0 0.0 +de 08_non-res 2 254 0.0 0.0 +de 09_hydro_pump 2 254 0.0 0.0 +de 01_solar 2 255 1.0 0.0 +de 02_wind_on 2 255 1.0 0.0 +de 03_wind_off 2 255 1.0 0.0 +de 04_res 2 255 1.0 0.0 +de 05_nuclear 2 255 1.0 0.0 +de 06_coal 2 255 0.0 0.0 +de 07_gas 2 255 0.0 0.0 +de 08_non-res 2 255 0.0 0.0 +de 09_hydro_pump 2 255 0.0 0.0 +de 01_solar 2 256 1.0 0.0 +de 02_wind_on 2 256 1.0 0.0 +de 03_wind_off 2 256 1.0 0.0 +de 04_res 2 256 1.0 0.0 +de 05_nuclear 2 256 1.0 0.0 +de 06_coal 2 256 0.0 0.0 +de 07_gas 2 256 0.0 0.0 +de 08_non-res 2 256 0.0 0.0 +de 09_hydro_pump 2 256 0.0 0.0 +de 01_solar 2 257 1.0 0.0 +de 02_wind_on 2 257 1.0 0.0 +de 03_wind_off 2 257 1.0 0.0 +de 04_res 2 257 1.0 0.0 +de 05_nuclear 2 257 1.0 0.0 +de 06_coal 2 257 0.0 0.0 +de 07_gas 2 257 0.0 0.0 +de 08_non-res 2 257 0.0 0.0 +de 09_hydro_pump 2 257 0.0 0.0 +de 01_solar 2 258 1.0 0.0 +de 02_wind_on 2 258 1.0 0.0 +de 03_wind_off 2 258 1.0 0.0 +de 04_res 2 258 1.0 0.0 +de 05_nuclear 2 258 1.0 0.0 +de 06_coal 2 258 0.0 0.0 +de 07_gas 2 258 0.0 0.0 +de 08_non-res 2 258 0.0 0.0 +de 09_hydro_pump 2 258 0.0 0.0 +de 01_solar 2 259 1.0 0.0 +de 02_wind_on 2 259 1.0 0.0 +de 03_wind_off 2 259 1.0 0.0 +de 04_res 2 259 1.0 0.0 +de 05_nuclear 2 259 1.0 0.0 +de 06_coal 2 259 0.0 0.0 +de 07_gas 2 259 0.0 0.0 +de 08_non-res 2 259 0.0 0.0 +de 09_hydro_pump 2 259 0.0 0.0 +de 01_solar 2 260 1.0 0.0 +de 02_wind_on 2 260 1.0 0.0 +de 03_wind_off 2 260 1.0 0.0 +de 04_res 2 260 1.0 0.0 +de 05_nuclear 2 260 1.0 0.0 +de 06_coal 2 260 0.0 0.0 +de 07_gas 2 260 0.0 0.0 +de 08_non-res 2 260 0.0 0.0 +de 09_hydro_pump 2 260 0.0 0.0 +de 01_solar 2 261 1.0 0.0 +de 02_wind_on 2 261 1.0 0.0 +de 03_wind_off 2 261 1.0 0.0 +de 04_res 2 261 1.0 0.0 +de 05_nuclear 2 261 1.0 0.0 +de 06_coal 2 261 0.0 0.0 +de 07_gas 2 261 0.0 0.0 +de 08_non-res 2 261 0.0 0.0 +de 09_hydro_pump 2 261 0.0 0.0 +de 01_solar 2 262 1.0 0.0 +de 02_wind_on 2 262 1.0 0.0 +de 03_wind_off 2 262 1.0 0.0 +de 04_res 2 262 1.0 0.0 +de 05_nuclear 2 262 1.0 0.0 +de 06_coal 2 262 0.0 0.0 +de 07_gas 2 262 0.0 0.0 +de 08_non-res 2 262 0.0 0.0 +de 09_hydro_pump 2 262 0.0 0.0 +de 01_solar 2 263 1.0 0.0 +de 02_wind_on 2 263 1.0 0.0 +de 03_wind_off 2 263 1.0 0.0 +de 04_res 2 263 1.0 0.0 +de 05_nuclear 2 263 1.0 0.0 +de 06_coal 2 263 0.0 0.0 +de 07_gas 2 263 0.0 0.0 +de 08_non-res 2 263 0.0 0.0 +de 09_hydro_pump 2 263 0.0 0.0 +de 01_solar 2 264 1.0 0.0 +de 02_wind_on 2 264 1.0 0.0 +de 03_wind_off 2 264 1.0 0.0 +de 04_res 2 264 1.0 0.0 +de 05_nuclear 2 264 1.0 0.0 +de 06_coal 2 264 0.0 0.0 +de 07_gas 2 264 0.0 0.0 +de 08_non-res 2 264 0.0 0.0 +de 09_hydro_pump 2 264 0.0 0.0 +de 01_solar 2 265 1.0 0.0 +de 02_wind_on 2 265 1.0 0.0 +de 03_wind_off 2 265 1.0 0.0 +de 04_res 2 265 1.0 0.0 +de 05_nuclear 2 265 1.0 0.0 +de 06_coal 2 265 0.0 0.0 +de 07_gas 2 265 0.0 0.0 +de 08_non-res 2 265 0.0 0.0 +de 09_hydro_pump 2 265 0.0 0.0 +de 01_solar 2 266 1.0 0.0 +de 02_wind_on 2 266 1.0 0.0 +de 03_wind_off 2 266 1.0 0.0 +de 04_res 2 266 1.0 0.0 +de 05_nuclear 2 266 1.0 0.0 +de 06_coal 2 266 0.0 0.0 +de 07_gas 2 266 0.0 0.0 +de 08_non-res 2 266 0.0 0.0 +de 09_hydro_pump 2 266 0.0 0.0 +de 01_solar 2 267 1.0 0.0 +de 02_wind_on 2 267 1.0 0.0 +de 03_wind_off 2 267 1.0 0.0 +de 04_res 2 267 1.0 0.0 +de 05_nuclear 2 267 1.0 0.0 +de 06_coal 2 267 0.0 0.0 +de 07_gas 2 267 0.0 0.0 +de 08_non-res 2 267 0.0 0.0 +de 09_hydro_pump 2 267 0.0 0.0 +de 01_solar 2 268 1.0 0.0 +de 02_wind_on 2 268 1.0 0.0 +de 03_wind_off 2 268 1.0 0.0 +de 04_res 2 268 1.0 0.0 +de 05_nuclear 2 268 1.0 0.0 +de 06_coal 2 268 0.0 0.0 +de 07_gas 2 268 0.0 0.0 +de 08_non-res 2 268 0.0 0.0 +de 09_hydro_pump 2 268 0.0 0.0 +de 01_solar 2 269 1.0 0.0 +de 02_wind_on 2 269 1.0 0.0 +de 03_wind_off 2 269 1.0 0.0 +de 04_res 2 269 1.0 0.0 +de 05_nuclear 2 269 1.0 0.0 +de 06_coal 2 269 0.0 0.0 +de 07_gas 2 269 0.0 0.0 +de 08_non-res 2 269 0.0 0.0 +de 09_hydro_pump 2 269 0.0 0.0 +de 01_solar 2 270 1.0 0.0 +de 02_wind_on 2 270 1.0 0.0 +de 03_wind_off 2 270 1.0 0.0 +de 04_res 2 270 1.0 0.0 +de 05_nuclear 2 270 1.0 0.0 +de 06_coal 2 270 1.0 0.0 +de 07_gas 2 270 0.0 0.0 +de 08_non-res 2 270 0.0 0.0 +de 09_hydro_pump 2 270 0.0 0.0 +de 01_solar 2 271 1.0 0.0 +de 02_wind_on 2 271 1.0 0.0 +de 03_wind_off 2 271 1.0 0.0 +de 04_res 2 271 1.0 0.0 +de 05_nuclear 2 271 1.0 0.0 +de 06_coal 2 271 1.0 0.0 +de 07_gas 2 271 0.0 0.0 +de 08_non-res 2 271 0.0 0.0 +de 09_hydro_pump 2 271 0.0 0.0 +de 01_solar 2 272 1.0 0.0 +de 02_wind_on 2 272 1.0 0.0 +de 03_wind_off 2 272 1.0 0.0 +de 04_res 2 272 1.0 0.0 +de 05_nuclear 2 272 1.0 0.0 +de 06_coal 2 272 1.0 0.0 +de 07_gas 2 272 0.0 0.0 +de 08_non-res 2 272 0.0 0.0 +de 09_hydro_pump 2 272 0.0 0.0 +de 01_solar 2 273 1.0 0.0 +de 02_wind_on 2 273 1.0 0.0 +de 03_wind_off 2 273 1.0 0.0 +de 04_res 2 273 1.0 0.0 +de 05_nuclear 2 273 1.0 0.0 +de 06_coal 2 273 1.0 0.0 +de 07_gas 2 273 0.0 0.0 +de 08_non-res 2 273 0.0 0.0 +de 09_hydro_pump 2 273 0.0 0.0 +de 01_solar 2 274 1.0 0.0 +de 02_wind_on 2 274 1.0 0.0 +de 03_wind_off 2 274 1.0 0.0 +de 04_res 2 274 1.0 0.0 +de 05_nuclear 2 274 1.0 0.0 +de 06_coal 2 274 1.0 0.0 +de 07_gas 2 274 0.0 0.0 +de 08_non-res 2 274 0.0 0.0 +de 09_hydro_pump 2 274 0.0 0.0 +de 01_solar 2 275 1.0 0.0 +de 02_wind_on 2 275 1.0 0.0 +de 03_wind_off 2 275 1.0 0.0 +de 04_res 2 275 1.0 0.0 +de 05_nuclear 2 275 1.0 0.0 +de 06_coal 2 275 1.0 0.0 +de 07_gas 2 275 0.0 0.0 +de 08_non-res 2 275 0.0 0.0 +de 09_hydro_pump 2 275 0.0 0.0 +de 01_solar 2 276 1.0 0.0 +de 02_wind_on 2 276 1.0 0.0 +de 03_wind_off 2 276 1.0 0.0 +de 04_res 2 276 1.0 0.0 +de 05_nuclear 2 276 1.0 0.0 +de 06_coal 2 276 1.0 0.0 +de 07_gas 2 276 0.0 0.0 +de 08_non-res 2 276 0.0 0.0 +de 09_hydro_pump 2 276 0.0 0.0 +de 01_solar 2 277 1.0 0.0 +de 02_wind_on 2 277 1.0 0.0 +de 03_wind_off 2 277 1.0 0.0 +de 04_res 2 277 1.0 0.0 +de 05_nuclear 2 277 1.0 0.0 +de 06_coal 2 277 1.0 0.0 +de 07_gas 2 277 0.0 0.0 +de 08_non-res 2 277 0.0 0.0 +de 09_hydro_pump 2 277 0.0 0.0 +de 01_solar 2 278 1.0 0.0 +de 02_wind_on 2 278 1.0 0.0 +de 03_wind_off 2 278 1.0 0.0 +de 04_res 2 278 1.0 0.0 +de 05_nuclear 2 278 1.0 0.0 +de 06_coal 2 278 1.0 0.0 +de 07_gas 2 278 0.0 0.0 +de 08_non-res 2 278 0.0 0.0 +de 09_hydro_pump 2 278 0.0 0.0 +de 01_solar 2 279 1.0 0.0 +de 02_wind_on 2 279 1.0 0.0 +de 03_wind_off 2 279 1.0 0.0 +de 04_res 2 279 1.0 0.0 +de 05_nuclear 2 279 1.0 0.0 +de 06_coal 2 279 1.0 0.0 +de 07_gas 2 279 0.0 0.0 +de 08_non-res 2 279 0.0 0.0 +de 09_hydro_pump 2 279 0.0 0.0 +de 01_solar 2 280 1.0 0.0 +de 02_wind_on 2 280 1.0 0.0 +de 03_wind_off 2 280 1.0 0.0 +de 04_res 2 280 1.0 0.0 +de 05_nuclear 2 280 1.0 0.0 +de 06_coal 2 280 1.0 0.0 +de 07_gas 2 280 0.0 0.0 +de 08_non-res 2 280 0.0 0.0 +de 09_hydro_pump 2 280 0.0 0.0 +de 01_solar 2 281 1.0 0.0 +de 02_wind_on 2 281 1.0 0.0 +de 03_wind_off 2 281 1.0 0.0 +de 04_res 2 281 1.0 0.0 +de 05_nuclear 2 281 1.0 0.0 +de 06_coal 2 281 1.0 0.0 +de 07_gas 2 281 0.0 0.0 +de 08_non-res 2 281 0.0 0.0 +de 09_hydro_pump 2 281 0.0 0.0 +de 01_solar 2 282 1.0 0.0 +de 02_wind_on 2 282 1.0 0.0 +de 03_wind_off 2 282 1.0 0.0 +de 04_res 2 282 1.0 0.0 +de 05_nuclear 2 282 1.0 0.0 +de 06_coal 2 282 1.0 0.0 +de 07_gas 2 282 0.0 0.0 +de 08_non-res 2 282 0.0 0.0 +de 09_hydro_pump 2 282 0.0 0.0 +de 01_solar 2 283 1.0 0.0 +de 02_wind_on 2 283 1.0 0.0 +de 03_wind_off 2 283 1.0 0.0 +de 04_res 2 283 1.0 0.0 +de 05_nuclear 2 283 1.0 0.0 +de 06_coal 2 283 1.0 0.0 +de 07_gas 2 283 0.0 0.0 +de 08_non-res 2 283 0.0 0.0 +de 09_hydro_pump 2 283 0.0 0.0 +de 01_solar 2 284 1.0 0.0 +de 02_wind_on 2 284 1.0 0.0 +de 03_wind_off 2 284 1.0 0.0 +de 04_res 2 284 1.0 0.0 +de 05_nuclear 2 284 1.0 0.0 +de 06_coal 2 284 1.0 0.0 +de 07_gas 2 284 0.0 0.0 +de 08_non-res 2 284 0.0 0.0 +de 09_hydro_pump 2 284 0.0 0.0 +de 01_solar 2 285 1.0 0.0 +de 02_wind_on 2 285 1.0 0.0 +de 03_wind_off 2 285 1.0 0.0 +de 04_res 2 285 1.0 0.0 +de 05_nuclear 2 285 1.0 0.0 +de 06_coal 2 285 1.0 0.0 +de 07_gas 2 285 0.0 0.0 +de 08_non-res 2 285 0.0 0.0 +de 09_hydro_pump 2 285 0.0 0.0 +de 01_solar 2 286 1.0 0.0 +de 02_wind_on 2 286 1.0 0.0 +de 03_wind_off 2 286 1.0 0.0 +de 04_res 2 286 1.0 0.0 +de 05_nuclear 2 286 1.0 0.0 +de 06_coal 2 286 1.0 0.0 +de 07_gas 2 286 0.0 0.0 +de 08_non-res 2 286 0.0 0.0 +de 09_hydro_pump 2 286 0.0 0.0 +de 01_solar 2 287 1.0 0.0 +de 02_wind_on 2 287 1.0 0.0 +de 03_wind_off 2 287 1.0 0.0 +de 04_res 2 287 1.0 0.0 +de 05_nuclear 2 287 1.0 0.0 +de 06_coal 2 287 1.0 0.0 +de 07_gas 2 287 0.0 0.0 +de 08_non-res 2 287 0.0 0.0 +de 09_hydro_pump 2 287 0.0 0.0 +de 01_solar 2 288 1.0 0.0 +de 02_wind_on 2 288 1.0 0.0 +de 03_wind_off 2 288 1.0 0.0 +de 04_res 2 288 1.0 0.0 +de 05_nuclear 2 288 1.0 0.0 +de 06_coal 2 288 1.0 0.0 +de 07_gas 2 288 0.0 0.0 +de 08_non-res 2 288 0.0 0.0 +de 09_hydro_pump 2 288 0.0 0.0 +de 01_solar 2 289 1.0 0.0 +de 02_wind_on 2 289 1.0 0.0 +de 03_wind_off 2 289 1.0 0.0 +de 04_res 2 289 1.0 0.0 +de 05_nuclear 2 289 1.0 0.0 +de 06_coal 2 289 1.0 0.0 +de 07_gas 2 289 0.0 0.0 +de 08_non-res 2 289 0.0 0.0 +de 09_hydro_pump 2 289 0.0 0.0 +de 01_solar 2 290 1.0 0.0 +de 02_wind_on 2 290 1.0 0.0 +de 03_wind_off 2 290 1.0 0.0 +de 04_res 2 290 1.0 0.0 +de 05_nuclear 2 290 1.0 0.0 +de 06_coal 2 290 1.0 0.0 +de 07_gas 2 290 1.0 0.0 +de 08_non-res 2 290 0.0 0.0 +de 09_hydro_pump 2 290 0.0 0.0 +de 01_solar 2 291 1.0 0.0 +de 02_wind_on 2 291 1.0 0.0 +de 03_wind_off 2 291 1.0 0.0 +de 04_res 2 291 1.0 0.0 +de 05_nuclear 2 291 1.0 0.0 +de 06_coal 2 291 1.0 0.0 +de 07_gas 2 291 1.0 0.0 +de 08_non-res 2 291 0.0 0.0 +de 09_hydro_pump 2 291 0.0 0.0 +de 01_solar 2 292 1.0 0.0 +de 02_wind_on 2 292 1.0 0.0 +de 03_wind_off 2 292 1.0 0.0 +de 04_res 2 292 1.0 0.0 +de 05_nuclear 2 292 1.0 0.0 +de 06_coal 2 292 1.0 0.0 +de 07_gas 2 292 1.0 0.0 +de 08_non-res 2 292 0.0 0.0 +de 09_hydro_pump 2 292 0.0 0.0 +de 01_solar 2 293 1.0 0.0 +de 02_wind_on 2 293 1.0 0.0 +de 03_wind_off 2 293 1.0 0.0 +de 04_res 2 293 1.0 0.0 +de 05_nuclear 2 293 1.0 0.0 +de 06_coal 2 293 1.0 0.0 +de 07_gas 2 293 1.0 0.0 +de 08_non-res 2 293 0.0 0.0 +de 09_hydro_pump 2 293 0.0 0.0 +de 01_solar 2 294 1.0 0.0 +de 02_wind_on 2 294 1.0 0.0 +de 03_wind_off 2 294 1.0 0.0 +de 04_res 2 294 1.0 0.0 +de 05_nuclear 2 294 1.0 0.0 +de 06_coal 2 294 1.0 0.0 +de 07_gas 2 294 1.0 0.0 +de 08_non-res 2 294 0.0 0.0 +de 09_hydro_pump 2 294 0.0 0.0 +de 01_solar 2 295 1.0 0.0 +de 02_wind_on 2 295 1.0 0.0 +de 03_wind_off 2 295 1.0 0.0 +de 04_res 2 295 1.0 0.0 +de 05_nuclear 2 295 1.0 0.0 +de 06_coal 2 295 1.0 0.0 +de 07_gas 2 295 1.0 0.0 +de 08_non-res 2 295 0.0 0.0 +de 09_hydro_pump 2 295 0.0 0.0 +de 01_solar 2 296 1.0 0.0 +de 02_wind_on 2 296 1.0 0.0 +de 03_wind_off 2 296 1.0 0.0 +de 04_res 2 296 1.0 0.0 +de 05_nuclear 2 296 1.0 0.0 +de 06_coal 2 296 1.0 0.0 +de 07_gas 2 296 1.0 0.0 +de 08_non-res 2 296 0.0 0.0 +de 09_hydro_pump 2 296 0.0 0.0 +de 01_solar 2 297 1.0 0.0 +de 02_wind_on 2 297 1.0 0.0 +de 03_wind_off 2 297 1.0 0.0 +de 04_res 2 297 1.0 0.0 +de 05_nuclear 2 297 1.0 0.0 +de 06_coal 2 297 1.0 0.0 +de 07_gas 2 297 1.0 0.0 +de 08_non-res 2 297 0.0 0.0 +de 09_hydro_pump 2 297 0.0 0.0 +de 01_solar 2 298 1.0 0.0 +de 02_wind_on 2 298 1.0 0.0 +de 03_wind_off 2 298 1.0 0.0 +de 04_res 2 298 1.0 0.0 +de 05_nuclear 2 298 1.0 0.0 +de 06_coal 2 298 1.0 0.0 +de 07_gas 2 298 1.0 0.0 +de 08_non-res 2 298 0.0 0.0 +de 09_hydro_pump 2 298 0.0 0.0 +de 01_solar 2 299 1.0 0.0 +de 02_wind_on 2 299 1.0 0.0 +de 03_wind_off 2 299 1.0 0.0 +de 04_res 2 299 1.0 0.0 +de 05_nuclear 2 299 1.0 0.0 +de 06_coal 2 299 1.0 0.0 +de 07_gas 2 299 1.0 0.0 +de 08_non-res 2 299 0.0 0.0 +de 09_hydro_pump 2 299 0.0 0.0 +de 01_solar 2 300 1.0 0.0 +de 02_wind_on 2 300 1.0 0.0 +de 03_wind_off 2 300 1.0 0.0 +de 04_res 2 300 1.0 0.0 +de 05_nuclear 2 300 1.0 0.0 +de 06_coal 2 300 1.0 0.0 +de 07_gas 2 300 1.0 0.0 +de 08_non-res 2 300 0.0 0.0 +de 09_hydro_pump 2 300 0.0 0.0 +de 01_solar 2 301 1.0 0.0 +de 02_wind_on 2 301 1.0 0.0 +de 03_wind_off 2 301 1.0 0.0 +de 04_res 2 301 1.0 0.0 +de 05_nuclear 2 301 1.0 0.0 +de 06_coal 2 301 1.0 0.0 +de 07_gas 2 301 1.0 0.0 +de 08_non-res 2 301 0.0 0.0 +de 09_hydro_pump 2 301 0.0 0.0 +de 01_solar 2 302 1.0 0.0 +de 02_wind_on 2 302 1.0 0.0 +de 03_wind_off 2 302 1.0 0.0 +de 04_res 2 302 1.0 0.0 +de 05_nuclear 2 302 1.0 0.0 +de 06_coal 2 302 1.0 0.0 +de 07_gas 2 302 1.0 0.0 +de 08_non-res 2 302 0.0 0.0 +de 09_hydro_pump 2 302 0.0 0.0 +de 01_solar 2 303 1.0 0.0 +de 02_wind_on 2 303 1.0 0.0 +de 03_wind_off 2 303 1.0 0.0 +de 04_res 2 303 1.0 0.0 +de 05_nuclear 2 303 1.0 0.0 +de 06_coal 2 303 1.0 0.0 +de 07_gas 2 303 1.0 0.0 +de 08_non-res 2 303 0.0 0.0 +de 09_hydro_pump 2 303 0.0 0.0 +de 01_solar 2 304 1.0 0.0 +de 02_wind_on 2 304 1.0 0.0 +de 03_wind_off 2 304 1.0 0.0 +de 04_res 2 304 1.0 0.0 +de 05_nuclear 2 304 1.0 0.0 +de 06_coal 2 304 1.0 0.0 +de 07_gas 2 304 1.0 0.0 +de 08_non-res 2 304 0.0 0.0 +de 09_hydro_pump 2 304 0.0 0.0 +de 01_solar 2 305 1.0 0.0 +de 02_wind_on 2 305 1.0 0.0 +de 03_wind_off 2 305 1.0 0.0 +de 04_res 2 305 1.0 0.0 +de 05_nuclear 2 305 1.0 0.0 +de 06_coal 2 305 1.0 0.0 +de 07_gas 2 305 1.0 0.0 +de 08_non-res 2 305 0.0 0.0 +de 09_hydro_pump 2 305 0.0 0.0 +de 01_solar 2 306 1.0 0.0 +de 02_wind_on 2 306 1.0 0.0 +de 03_wind_off 2 306 1.0 0.0 +de 04_res 2 306 1.0 0.0 +de 05_nuclear 2 306 1.0 0.0 +de 06_coal 2 306 1.0 0.0 +de 07_gas 2 306 1.0 0.0 +de 08_non-res 2 306 0.0 0.0 +de 09_hydro_pump 2 306 0.0 0.0 +de 01_solar 2 307 1.0 0.0 +de 02_wind_on 2 307 1.0 0.0 +de 03_wind_off 2 307 1.0 0.0 +de 04_res 2 307 1.0 0.0 +de 05_nuclear 2 307 1.0 0.0 +de 06_coal 2 307 1.0 0.0 +de 07_gas 2 307 1.0 0.0 +de 08_non-res 2 307 0.0 0.0 +de 09_hydro_pump 2 307 0.0 0.0 +de 01_solar 2 308 1.0 0.0 +de 02_wind_on 2 308 1.0 0.0 +de 03_wind_off 2 308 1.0 0.0 +de 04_res 2 308 1.0 0.0 +de 05_nuclear 2 308 1.0 0.0 +de 06_coal 2 308 1.0 0.0 +de 07_gas 2 308 1.0 0.0 +de 08_non-res 2 308 0.0 0.0 +de 09_hydro_pump 2 308 0.0 0.0 +de 01_solar 2 309 1.0 0.0 +de 02_wind_on 2 309 1.0 0.0 +de 03_wind_off 2 309 1.0 0.0 +de 04_res 2 309 1.0 0.0 +de 05_nuclear 2 309 1.0 0.0 +de 06_coal 2 309 1.0 0.0 +de 07_gas 2 309 1.0 0.0 +de 08_non-res 2 309 0.0 0.0 +de 09_hydro_pump 2 309 0.0 0.0 +de 01_solar 2 310 1.0 0.0 +de 02_wind_on 2 310 1.0 0.0 +de 03_wind_off 2 310 1.0 0.0 +de 04_res 2 310 1.0 0.0 +de 05_nuclear 2 310 1.0 0.0 +de 06_coal 2 310 1.0 0.0 +de 07_gas 2 310 1.0 0.0 +de 08_non-res 2 310 1.0 0.0 +de 09_hydro_pump 2 310 0.0 0.0 +de 01_solar 2 311 1.0 0.0 +de 02_wind_on 2 311 1.0 0.0 +de 03_wind_off 2 311 1.0 0.0 +de 04_res 2 311 1.0 0.0 +de 05_nuclear 2 311 1.0 0.0 +de 06_coal 2 311 1.0 0.0 +de 07_gas 2 311 1.0 0.0 +de 08_non-res 2 311 1.0 0.0 +de 09_hydro_pump 2 311 0.0 0.0 +de 01_solar 2 312 1.0 0.0 +de 02_wind_on 2 312 1.0 0.0 +de 03_wind_off 2 312 1.0 0.0 +de 04_res 2 312 1.0 0.0 +de 05_nuclear 2 312 1.0 0.0 +de 06_coal 2 312 1.0 0.0 +de 07_gas 2 312 1.0 0.0 +de 08_non-res 2 312 1.0 0.0 +de 09_hydro_pump 2 312 0.0 0.0 +de 01_solar 2 313 1.0 0.0 +de 02_wind_on 2 313 1.0 0.0 +de 03_wind_off 2 313 1.0 0.0 +de 04_res 2 313 1.0 0.0 +de 05_nuclear 2 313 1.0 0.0 +de 06_coal 2 313 1.0 0.0 +de 07_gas 2 313 1.0 0.0 +de 08_non-res 2 313 1.0 0.0 +de 09_hydro_pump 2 313 0.0 0.0 +de 01_solar 2 314 1.0 0.0 +de 02_wind_on 2 314 1.0 0.0 +de 03_wind_off 2 314 1.0 0.0 +de 04_res 2 314 1.0 0.0 +de 05_nuclear 2 314 1.0 0.0 +de 06_coal 2 314 1.0 0.0 +de 07_gas 2 314 1.0 0.0 +de 08_non-res 2 314 1.0 0.0 +de 09_hydro_pump 2 314 0.0 0.0 +de 01_solar 2 315 1.0 0.0 +de 02_wind_on 2 315 1.0 0.0 +de 03_wind_off 2 315 1.0 0.0 +de 04_res 2 315 1.0 0.0 +de 05_nuclear 2 315 1.0 0.0 +de 06_coal 2 315 1.0 0.0 +de 07_gas 2 315 1.0 0.0 +de 08_non-res 2 315 1.0 0.0 +de 09_hydro_pump 2 315 0.0 0.0 +de 01_solar 2 316 1.0 0.0 +de 02_wind_on 2 316 1.0 0.0 +de 03_wind_off 2 316 1.0 0.0 +de 04_res 2 316 1.0 0.0 +de 05_nuclear 2 316 1.0 0.0 +de 06_coal 2 316 1.0 0.0 +de 07_gas 2 316 1.0 0.0 +de 08_non-res 2 316 1.0 0.0 +de 09_hydro_pump 2 316 0.0 0.0 +de 01_solar 2 317 1.0 0.0 +de 02_wind_on 2 317 1.0 0.0 +de 03_wind_off 2 317 1.0 0.0 +de 04_res 2 317 1.0 0.0 +de 05_nuclear 2 317 1.0 0.0 +de 06_coal 2 317 1.0 0.0 +de 07_gas 2 317 1.0 0.0 +de 08_non-res 2 317 1.0 0.0 +de 09_hydro_pump 2 317 0.0 0.0 +de 01_solar 2 318 1.0 0.0 +de 02_wind_on 2 318 1.0 0.0 +de 03_wind_off 2 318 1.0 0.0 +de 04_res 2 318 1.0 0.0 +de 05_nuclear 2 318 1.0 0.0 +de 06_coal 2 318 1.0 0.0 +de 07_gas 2 318 1.0 0.0 +de 08_non-res 2 318 1.0 0.0 +de 09_hydro_pump 2 318 0.0 0.0 +de 01_solar 2 319 1.0 0.0 +de 02_wind_on 2 319 1.0 0.0 +de 03_wind_off 2 319 1.0 0.0 +de 04_res 2 319 1.0 0.0 +de 05_nuclear 2 319 1.0 0.0 +de 06_coal 2 319 1.0 0.0 +de 07_gas 2 319 1.0 0.0 +de 08_non-res 2 319 1.0 0.0 +de 09_hydro_pump 2 319 0.0 0.0 +de 01_solar 2 320 1.0 0.0 +de 02_wind_on 2 320 1.0 0.0 +de 03_wind_off 2 320 1.0 0.0 +de 04_res 2 320 1.0 0.0 +de 05_nuclear 2 320 1.0 0.0 +de 06_coal 2 320 1.0 0.0 +de 07_gas 2 320 1.0 0.0 +de 08_non-res 2 320 1.0 0.0 +de 09_hydro_pump 2 320 0.0 0.0 +de 01_solar 2 321 1.0 0.0 +de 02_wind_on 2 321 1.0 0.0 +de 03_wind_off 2 321 1.0 0.0 +de 04_res 2 321 1.0 0.0 +de 05_nuclear 2 321 1.0 0.0 +de 06_coal 2 321 1.0 0.0 +de 07_gas 2 321 1.0 0.0 +de 08_non-res 2 321 1.0 0.0 +de 09_hydro_pump 2 321 0.0 0.0 +de 01_solar 2 322 1.0 0.0 +de 02_wind_on 2 322 1.0 0.0 +de 03_wind_off 2 322 1.0 0.0 +de 04_res 2 322 1.0 0.0 +de 05_nuclear 2 322 1.0 0.0 +de 06_coal 2 322 1.0 0.0 +de 07_gas 2 322 1.0 0.0 +de 08_non-res 2 322 1.0 0.0 +de 09_hydro_pump 2 322 0.0 0.0 +de 01_solar 2 323 1.0 0.0 +de 02_wind_on 2 323 1.0 0.0 +de 03_wind_off 2 323 1.0 0.0 +de 04_res 2 323 1.0 0.0 +de 05_nuclear 2 323 1.0 0.0 +de 06_coal 2 323 1.0 0.0 +de 07_gas 2 323 1.0 0.0 +de 08_non-res 2 323 1.0 0.0 +de 09_hydro_pump 2 323 0.0 0.0 +de 01_solar 2 324 1.0 0.0 +de 02_wind_on 2 324 1.0 0.0 +de 03_wind_off 2 324 1.0 0.0 +de 04_res 2 324 1.0 0.0 +de 05_nuclear 2 324 1.0 0.0 +de 06_coal 2 324 1.0 0.0 +de 07_gas 2 324 1.0 0.0 +de 08_non-res 2 324 1.0 0.0 +de 09_hydro_pump 2 324 0.0 0.0 +de 01_solar 2 325 1.0 0.0 +de 02_wind_on 2 325 1.0 0.0 +de 03_wind_off 2 325 1.0 0.0 +de 04_res 2 325 1.0 0.0 +de 05_nuclear 2 325 1.0 0.0 +de 06_coal 2 325 1.0 0.0 +de 07_gas 2 325 1.0 0.0 +de 08_non-res 2 325 1.0 0.0 +de 09_hydro_pump 2 325 0.0 0.0 +de 01_solar 2 326 1.0 0.0 +de 02_wind_on 2 326 1.0 0.0 +de 03_wind_off 2 326 1.0 0.0 +de 04_res 2 326 1.0 0.0 +de 05_nuclear 2 326 1.0 0.0 +de 06_coal 2 326 1.0 0.0 +de 07_gas 2 326 1.0 0.0 +de 08_non-res 2 326 1.0 0.0 +de 09_hydro_pump 2 326 0.0 0.0 +de 01_solar 2 327 1.0 0.0 +de 02_wind_on 2 327 1.0 0.0 +de 03_wind_off 2 327 1.0 0.0 +de 04_res 2 327 1.0 0.0 +de 05_nuclear 2 327 1.0 0.0 +de 06_coal 2 327 1.0 0.0 +de 07_gas 2 327 1.0 0.0 +de 08_non-res 2 327 1.0 0.0 +de 09_hydro_pump 2 327 0.0 0.0 +de 01_solar 2 328 1.0 0.0 +de 02_wind_on 2 328 1.0 0.0 +de 03_wind_off 2 328 1.0 0.0 +de 04_res 2 328 1.0 0.0 +de 05_nuclear 2 328 1.0 0.0 +de 06_coal 2 328 1.0 0.0 +de 07_gas 2 328 1.0 0.0 +de 08_non-res 2 328 1.0 0.0 +de 09_hydro_pump 2 328 0.0 0.0 +de 01_solar 2 329 1.0 0.0 +de 02_wind_on 2 329 1.0 0.0 +de 03_wind_off 2 329 1.0 0.0 +de 04_res 2 329 1.0 0.0 +de 05_nuclear 2 329 1.0 0.0 +de 06_coal 2 329 1.0 0.0 +de 07_gas 2 329 1.0 0.0 +de 08_non-res 2 329 1.0 0.0 +de 09_hydro_pump 2 329 0.0 0.0 +de 01_solar 2 330 1.0 0.0 +de 02_wind_on 2 330 1.0 0.0 +de 03_wind_off 2 330 1.0 0.0 +de 04_res 2 330 1.0 0.0 +de 05_nuclear 2 330 1.0 0.0 +de 06_coal 2 330 1.0 0.0 +de 07_gas 2 330 1.0 0.0 +de 08_non-res 2 330 1.0 0.0 +de 09_hydro_pump 2 330 1.0 0.0 +de 01_solar 2 331 1.0 0.0 +de 02_wind_on 2 331 1.0 0.0 +de 03_wind_off 2 331 1.0 0.0 +de 04_res 2 331 1.0 0.0 +de 05_nuclear 2 331 1.0 0.0 +de 06_coal 2 331 1.0 0.0 +de 07_gas 2 331 1.0 0.0 +de 08_non-res 2 331 1.0 0.0 +de 09_hydro_pump 2 331 1.0 0.0 +de 01_solar 2 332 1.0 0.0 +de 02_wind_on 2 332 1.0 0.0 +de 03_wind_off 2 332 1.0 0.0 +de 04_res 2 332 1.0 0.0 +de 05_nuclear 2 332 1.0 0.0 +de 06_coal 2 332 1.0 0.0 +de 07_gas 2 332 1.0 0.0 +de 08_non-res 2 332 1.0 0.0 +de 09_hydro_pump 2 332 1.0 0.0 +de 01_solar 2 333 1.0 0.0 +de 02_wind_on 2 333 1.0 0.0 +de 03_wind_off 2 333 1.0 0.0 +de 04_res 2 333 1.0 0.0 +de 05_nuclear 2 333 1.0 0.0 +de 06_coal 2 333 1.0 0.0 +de 07_gas 2 333 1.0 0.0 +de 08_non-res 2 333 1.0 0.0 +de 09_hydro_pump 2 333 1.0 0.0 +de 01_solar 2 334 1.0 0.0 +de 02_wind_on 2 334 1.0 0.0 +de 03_wind_off 2 334 1.0 0.0 +de 04_res 2 334 1.0 0.0 +de 05_nuclear 2 334 1.0 0.0 +de 06_coal 2 334 1.0 0.0 +de 07_gas 2 334 1.0 0.0 +de 08_non-res 2 334 1.0 0.0 +de 09_hydro_pump 2 334 1.0 0.0 +de 01_solar 2 335 1.0 0.0 +de 02_wind_on 2 335 1.0 0.0 +de 03_wind_off 2 335 1.0 0.0 +de 04_res 2 335 1.0 0.0 +de 05_nuclear 2 335 1.0 0.0 +de 06_coal 2 335 1.0 0.0 +de 07_gas 2 335 1.0 0.0 +de 08_non-res 2 335 1.0 0.0 +de 09_hydro_pump 2 335 1.0 0.0 +de 01_solar 2 336 1.0 0.0 +de 02_wind_on 2 336 1.0 0.0 +de 03_wind_off 2 336 1.0 0.0 +de 04_res 2 336 1.0 0.0 +de 05_nuclear 2 336 1.0 0.0 +de 06_coal 2 336 1.0 0.0 +de 07_gas 2 336 1.0 0.0 +de 08_non-res 2 336 1.0 0.0 +de 09_hydro_pump 2 336 1.0 0.0 +es 01_solar 2 1 0.0 0.0 +es 02_wind_on 2 1 0.0 0.0 +es 03_wind_off 2 1 0.0 0.0 +es 04_res 2 1 0.0 0.0 +es 05_nuclear 2 1 0.0 0.0 +es 06_coal 2 1 0.0 0.0 +es 07_gas 2 1 0.0 0.0 +es 08_non-res 2 1 0.0 0.0 +es 09_hydro_pump 2 1 0.0 0.0 +es 01_solar 2 2 1.0 0.0 +es 02_wind_on 2 2 0.0 0.0 +es 03_wind_off 2 2 0.0 0.0 +es 04_res 2 2 0.0 0.0 +es 05_nuclear 2 2 0.0 0.0 +es 06_coal 2 2 0.0 0.0 +es 07_gas 2 2 0.0 0.0 +es 08_non-res 2 2 0.0 0.0 +es 09_hydro_pump 2 2 0.0 0.0 +es 01_solar 2 3 1.0 0.0 +es 02_wind_on 2 3 0.0 0.0 +es 03_wind_off 2 3 0.0 0.0 +es 04_res 2 3 0.0 0.0 +es 05_nuclear 2 3 0.0 0.0 +es 06_coal 2 3 0.0 0.0 +es 07_gas 2 3 0.0 0.0 +es 08_non-res 2 3 0.0 0.0 +es 09_hydro_pump 2 3 0.0 0.0 +es 01_solar 2 4 1.0 0.0 +es 02_wind_on 2 4 0.0 0.0 +es 03_wind_off 2 4 0.0 0.0 +es 04_res 2 4 0.0 0.0 +es 05_nuclear 2 4 0.0 0.0 +es 06_coal 2 4 0.0 0.0 +es 07_gas 2 4 0.0 0.0 +es 08_non-res 2 4 0.0 0.0 +es 09_hydro_pump 2 4 0.0 0.0 +es 01_solar 2 5 1.0 0.0 +es 02_wind_on 2 5 0.0 0.0 +es 03_wind_off 2 5 0.0 0.0 +es 04_res 2 5 0.0 0.0 +es 05_nuclear 2 5 0.0 0.0 +es 06_coal 2 5 0.0 0.0 +es 07_gas 2 5 0.0 0.0 +es 08_non-res 2 5 0.0 0.0 +es 09_hydro_pump 2 5 0.0 0.0 +es 01_solar 2 6 1.0 0.0 +es 02_wind_on 2 6 0.0 0.0 +es 03_wind_off 2 6 0.0 0.0 +es 04_res 2 6 0.0 0.0 +es 05_nuclear 2 6 0.0 0.0 +es 06_coal 2 6 0.0 0.0 +es 07_gas 2 6 0.0 0.0 +es 08_non-res 2 6 0.0 0.0 +es 09_hydro_pump 2 6 0.0 0.0 +es 01_solar 2 7 1.0 0.0 +es 02_wind_on 2 7 0.0 0.0 +es 03_wind_off 2 7 0.0 0.0 +es 04_res 2 7 0.0 0.0 +es 05_nuclear 2 7 0.0 0.0 +es 06_coal 2 7 0.0 0.0 +es 07_gas 2 7 0.0 0.0 +es 08_non-res 2 7 0.0 0.0 +es 09_hydro_pump 2 7 0.0 0.0 +es 01_solar 2 8 1.0 0.0 +es 02_wind_on 2 8 0.0 0.0 +es 03_wind_off 2 8 0.0 0.0 +es 04_res 2 8 0.0 0.0 +es 05_nuclear 2 8 0.0 0.0 +es 06_coal 2 8 0.0 0.0 +es 07_gas 2 8 0.0 0.0 +es 08_non-res 2 8 0.0 0.0 +es 09_hydro_pump 2 8 0.0 0.0 +es 01_solar 2 9 1.0 0.0 +es 02_wind_on 2 9 0.0 0.0 +es 03_wind_off 2 9 0.0 0.0 +es 04_res 2 9 0.0 0.0 +es 05_nuclear 2 9 0.0 0.0 +es 06_coal 2 9 0.0 0.0 +es 07_gas 2 9 0.0 0.0 +es 08_non-res 2 9 0.0 0.0 +es 09_hydro_pump 2 9 0.0 0.0 +es 01_solar 2 10 1.0 0.0 +es 02_wind_on 2 10 0.0 0.0 +es 03_wind_off 2 10 0.0 0.0 +es 04_res 2 10 0.0 0.0 +es 05_nuclear 2 10 0.0 0.0 +es 06_coal 2 10 0.0 0.0 +es 07_gas 2 10 0.0 0.0 +es 08_non-res 2 10 0.0 0.0 +es 09_hydro_pump 2 10 0.0 0.0 +es 01_solar 2 11 1.0 0.0 +es 02_wind_on 2 11 0.0 0.0 +es 03_wind_off 2 11 0.0 0.0 +es 04_res 2 11 0.0 0.0 +es 05_nuclear 2 11 0.0 0.0 +es 06_coal 2 11 0.0 0.0 +es 07_gas 2 11 0.0 0.0 +es 08_non-res 2 11 0.0 0.0 +es 09_hydro_pump 2 11 0.0 0.0 +es 01_solar 2 12 1.0 0.0 +es 02_wind_on 2 12 0.0 0.0 +es 03_wind_off 2 12 0.0 0.0 +es 04_res 2 12 0.0 0.0 +es 05_nuclear 2 12 0.0 0.0 +es 06_coal 2 12 0.0 0.0 +es 07_gas 2 12 0.0 0.0 +es 08_non-res 2 12 0.0 0.0 +es 09_hydro_pump 2 12 0.0 0.0 +es 01_solar 2 13 1.0 0.0 +es 02_wind_on 2 13 0.0 0.0 +es 03_wind_off 2 13 0.0 0.0 +es 04_res 2 13 0.0 0.0 +es 05_nuclear 2 13 0.0 0.0 +es 06_coal 2 13 0.0 0.0 +es 07_gas 2 13 0.0 0.0 +es 08_non-res 2 13 0.0 0.0 +es 09_hydro_pump 2 13 0.0 0.0 +es 01_solar 2 14 1.0 0.0 +es 02_wind_on 2 14 0.0 0.0 +es 03_wind_off 2 14 0.0 0.0 +es 04_res 2 14 0.0 0.0 +es 05_nuclear 2 14 0.0 0.0 +es 06_coal 2 14 0.0 0.0 +es 07_gas 2 14 0.0 0.0 +es 08_non-res 2 14 0.0 0.0 +es 09_hydro_pump 2 14 0.0 0.0 +es 01_solar 2 15 1.0 0.0 +es 02_wind_on 2 15 0.0 0.0 +es 03_wind_off 2 15 0.0 0.0 +es 04_res 2 15 0.0 0.0 +es 05_nuclear 2 15 0.0 0.0 +es 06_coal 2 15 0.0 0.0 +es 07_gas 2 15 0.0 0.0 +es 08_non-res 2 15 0.0 0.0 +es 09_hydro_pump 2 15 0.0 0.0 +es 01_solar 2 16 1.0 0.0 +es 02_wind_on 2 16 0.0 0.0 +es 03_wind_off 2 16 0.0 0.0 +es 04_res 2 16 0.0 0.0 +es 05_nuclear 2 16 0.0 0.0 +es 06_coal 2 16 0.0 0.0 +es 07_gas 2 16 0.0 0.0 +es 08_non-res 2 16 0.0 0.0 +es 09_hydro_pump 2 16 0.0 0.0 +es 01_solar 2 17 1.0 0.0 +es 02_wind_on 2 17 0.0 0.0 +es 03_wind_off 2 17 0.0 0.0 +es 04_res 2 17 0.0 0.0 +es 05_nuclear 2 17 0.0 0.0 +es 06_coal 2 17 0.0 0.0 +es 07_gas 2 17 0.0 0.0 +es 08_non-res 2 17 0.0 0.0 +es 09_hydro_pump 2 17 0.0 0.0 +es 01_solar 2 18 1.0 0.0 +es 02_wind_on 2 18 0.0 0.0 +es 03_wind_off 2 18 0.0 0.0 +es 04_res 2 18 0.0 0.0 +es 05_nuclear 2 18 0.0 0.0 +es 06_coal 2 18 0.0 0.0 +es 07_gas 2 18 0.0 0.0 +es 08_non-res 2 18 0.0 0.0 +es 09_hydro_pump 2 18 0.0 0.0 +es 01_solar 2 19 1.0 0.0 +es 02_wind_on 2 19 0.0 0.0 +es 03_wind_off 2 19 0.0 0.0 +es 04_res 2 19 0.0 0.0 +es 05_nuclear 2 19 0.0 0.0 +es 06_coal 2 19 0.0 0.0 +es 07_gas 2 19 0.0 0.0 +es 08_non-res 2 19 0.0 0.0 +es 09_hydro_pump 2 19 0.0 0.0 +es 01_solar 2 20 1.0 0.0 +es 02_wind_on 2 20 0.0 0.0 +es 03_wind_off 2 20 0.0 0.0 +es 04_res 2 20 0.0 0.0 +es 05_nuclear 2 20 0.0 0.0 +es 06_coal 2 20 0.0 0.0 +es 07_gas 2 20 0.0 0.0 +es 08_non-res 2 20 0.0 0.0 +es 09_hydro_pump 2 20 0.0 0.0 +es 01_solar 2 21 1.0 0.0 +es 02_wind_on 2 21 0.0 0.0 +es 03_wind_off 2 21 0.0 0.0 +es 04_res 2 21 0.0 0.0 +es 05_nuclear 2 21 0.0 0.0 +es 06_coal 2 21 0.0 0.0 +es 07_gas 2 21 0.0 0.0 +es 08_non-res 2 21 0.0 0.0 +es 09_hydro_pump 2 21 0.0 0.0 +es 01_solar 2 22 1.0 0.0 +es 02_wind_on 2 22 1.0 0.0 +es 03_wind_off 2 22 0.0 0.0 +es 04_res 2 22 0.0 0.0 +es 05_nuclear 2 22 0.0 0.0 +es 06_coal 2 22 0.0 0.0 +es 07_gas 2 22 0.0 0.0 +es 08_non-res 2 22 0.0 0.0 +es 09_hydro_pump 2 22 0.0 0.0 +es 01_solar 2 23 1.0 0.0 +es 02_wind_on 2 23 1.0 0.0 +es 03_wind_off 2 23 0.0 0.0 +es 04_res 2 23 0.0 0.0 +es 05_nuclear 2 23 0.0 0.0 +es 06_coal 2 23 0.0 0.0 +es 07_gas 2 23 0.0 0.0 +es 08_non-res 2 23 0.0 0.0 +es 09_hydro_pump 2 23 0.0 0.0 +es 01_solar 2 24 1.0 0.0 +es 02_wind_on 2 24 1.0 0.0 +es 03_wind_off 2 24 0.0 0.0 +es 04_res 2 24 0.0 0.0 +es 05_nuclear 2 24 0.0 0.0 +es 06_coal 2 24 0.0 0.0 +es 07_gas 2 24 0.0 0.0 +es 08_non-res 2 24 0.0 0.0 +es 09_hydro_pump 2 24 0.0 0.0 +es 01_solar 2 25 1.0 0.0 +es 02_wind_on 2 25 1.0 0.0 +es 03_wind_off 2 25 0.0 0.0 +es 04_res 2 25 0.0 0.0 +es 05_nuclear 2 25 0.0 0.0 +es 06_coal 2 25 0.0 0.0 +es 07_gas 2 25 0.0 0.0 +es 08_non-res 2 25 0.0 0.0 +es 09_hydro_pump 2 25 0.0 0.0 +es 01_solar 2 26 1.0 0.0 +es 02_wind_on 2 26 1.0 0.0 +es 03_wind_off 2 26 0.0 0.0 +es 04_res 2 26 0.0 0.0 +es 05_nuclear 2 26 0.0 0.0 +es 06_coal 2 26 0.0 0.0 +es 07_gas 2 26 0.0 0.0 +es 08_non-res 2 26 0.0 0.0 +es 09_hydro_pump 2 26 0.0 0.0 +es 01_solar 2 27 1.0 0.0 +es 02_wind_on 2 27 1.0 0.0 +es 03_wind_off 2 27 0.0 0.0 +es 04_res 2 27 0.0 0.0 +es 05_nuclear 2 27 0.0 0.0 +es 06_coal 2 27 0.0 0.0 +es 07_gas 2 27 0.0 0.0 +es 08_non-res 2 27 0.0 0.0 +es 09_hydro_pump 2 27 0.0 0.0 +es 01_solar 2 28 1.0 0.0 +es 02_wind_on 2 28 1.0 0.0 +es 03_wind_off 2 28 0.0 0.0 +es 04_res 2 28 0.0 0.0 +es 05_nuclear 2 28 0.0 0.0 +es 06_coal 2 28 0.0 0.0 +es 07_gas 2 28 0.0 0.0 +es 08_non-res 2 28 0.0 0.0 +es 09_hydro_pump 2 28 0.0 0.0 +es 01_solar 2 29 1.0 0.0 +es 02_wind_on 2 29 1.0 0.0 +es 03_wind_off 2 29 0.0 0.0 +es 04_res 2 29 0.0 0.0 +es 05_nuclear 2 29 0.0 0.0 +es 06_coal 2 29 0.0 0.0 +es 07_gas 2 29 0.0 0.0 +es 08_non-res 2 29 0.0 0.0 +es 09_hydro_pump 2 29 0.0 0.0 +es 01_solar 2 30 1.0 0.0 +es 02_wind_on 2 30 1.0 0.0 +es 03_wind_off 2 30 0.0 0.0 +es 04_res 2 30 0.0 0.0 +es 05_nuclear 2 30 0.0 0.0 +es 06_coal 2 30 0.0 0.0 +es 07_gas 2 30 0.0 0.0 +es 08_non-res 2 30 0.0 0.0 +es 09_hydro_pump 2 30 0.0 0.0 +es 01_solar 2 31 1.0 0.0 +es 02_wind_on 2 31 1.0 0.0 +es 03_wind_off 2 31 0.0 0.0 +es 04_res 2 31 0.0 0.0 +es 05_nuclear 2 31 0.0 0.0 +es 06_coal 2 31 0.0 0.0 +es 07_gas 2 31 0.0 0.0 +es 08_non-res 2 31 0.0 0.0 +es 09_hydro_pump 2 31 0.0 0.0 +es 01_solar 2 32 1.0 0.0 +es 02_wind_on 2 32 1.0 0.0 +es 03_wind_off 2 32 0.0 0.0 +es 04_res 2 32 0.0 0.0 +es 05_nuclear 2 32 0.0 0.0 +es 06_coal 2 32 0.0 0.0 +es 07_gas 2 32 0.0 0.0 +es 08_non-res 2 32 0.0 0.0 +es 09_hydro_pump 2 32 0.0 0.0 +es 01_solar 2 33 1.0 0.0 +es 02_wind_on 2 33 1.0 0.0 +es 03_wind_off 2 33 0.0 0.0 +es 04_res 2 33 0.0 0.0 +es 05_nuclear 2 33 0.0 0.0 +es 06_coal 2 33 0.0 0.0 +es 07_gas 2 33 0.0 0.0 +es 08_non-res 2 33 0.0 0.0 +es 09_hydro_pump 2 33 0.0 0.0 +es 01_solar 2 34 1.0 0.0 +es 02_wind_on 2 34 1.0 0.0 +es 03_wind_off 2 34 0.0 0.0 +es 04_res 2 34 0.0 0.0 +es 05_nuclear 2 34 0.0 0.0 +es 06_coal 2 34 0.0 0.0 +es 07_gas 2 34 0.0 0.0 +es 08_non-res 2 34 0.0 0.0 +es 09_hydro_pump 2 34 0.0 0.0 +es 01_solar 2 35 1.0 0.0 +es 02_wind_on 2 35 1.0 0.0 +es 03_wind_off 2 35 0.0 0.0 +es 04_res 2 35 0.0 0.0 +es 05_nuclear 2 35 0.0 0.0 +es 06_coal 2 35 0.0 0.0 +es 07_gas 2 35 0.0 0.0 +es 08_non-res 2 35 0.0 0.0 +es 09_hydro_pump 2 35 0.0 0.0 +es 01_solar 2 36 1.0 0.0 +es 02_wind_on 2 36 1.0 0.0 +es 03_wind_off 2 36 0.0 0.0 +es 04_res 2 36 0.0 0.0 +es 05_nuclear 2 36 0.0 0.0 +es 06_coal 2 36 0.0 0.0 +es 07_gas 2 36 0.0 0.0 +es 08_non-res 2 36 0.0 0.0 +es 09_hydro_pump 2 36 0.0 0.0 +es 01_solar 2 37 1.0 0.0 +es 02_wind_on 2 37 1.0 0.0 +es 03_wind_off 2 37 0.0 0.0 +es 04_res 2 37 0.0 0.0 +es 05_nuclear 2 37 0.0 0.0 +es 06_coal 2 37 0.0 0.0 +es 07_gas 2 37 0.0 0.0 +es 08_non-res 2 37 0.0 0.0 +es 09_hydro_pump 2 37 0.0 0.0 +es 01_solar 2 38 1.0 0.0 +es 02_wind_on 2 38 1.0 0.0 +es 03_wind_off 2 38 0.0 0.0 +es 04_res 2 38 0.0 0.0 +es 05_nuclear 2 38 0.0 0.0 +es 06_coal 2 38 0.0 0.0 +es 07_gas 2 38 0.0 0.0 +es 08_non-res 2 38 0.0 0.0 +es 09_hydro_pump 2 38 0.0 0.0 +es 01_solar 2 39 1.0 0.0 +es 02_wind_on 2 39 1.0 0.0 +es 03_wind_off 2 39 0.0 0.0 +es 04_res 2 39 0.0 0.0 +es 05_nuclear 2 39 0.0 0.0 +es 06_coal 2 39 0.0 0.0 +es 07_gas 2 39 0.0 0.0 +es 08_non-res 2 39 0.0 0.0 +es 09_hydro_pump 2 39 0.0 0.0 +es 01_solar 2 40 1.0 0.0 +es 02_wind_on 2 40 1.0 0.0 +es 03_wind_off 2 40 0.0 0.0 +es 04_res 2 40 0.0 0.0 +es 05_nuclear 2 40 0.0 0.0 +es 06_coal 2 40 0.0 0.0 +es 07_gas 2 40 0.0 0.0 +es 08_non-res 2 40 0.0 0.0 +es 09_hydro_pump 2 40 0.0 0.0 +es 01_solar 2 41 1.0 0.0 +es 02_wind_on 2 41 1.0 0.0 +es 03_wind_off 2 41 0.0 0.0 +es 04_res 2 41 0.0 0.0 +es 05_nuclear 2 41 0.0 0.0 +es 06_coal 2 41 0.0 0.0 +es 07_gas 2 41 0.0 0.0 +es 08_non-res 2 41 0.0 0.0 +es 09_hydro_pump 2 41 0.0 0.0 +es 01_solar 2 42 1.0 0.0 +es 02_wind_on 2 42 1.0 0.0 +es 03_wind_off 2 42 1.0 0.0 +es 04_res 2 42 0.0 0.0 +es 05_nuclear 2 42 0.0 0.0 +es 06_coal 2 42 0.0 0.0 +es 07_gas 2 42 0.0 0.0 +es 08_non-res 2 42 0.0 0.0 +es 09_hydro_pump 2 42 0.0 0.0 +es 01_solar 2 43 1.0 0.0 +es 02_wind_on 2 43 1.0 0.0 +es 03_wind_off 2 43 1.0 0.0 +es 04_res 2 43 0.0 0.0 +es 05_nuclear 2 43 0.0 0.0 +es 06_coal 2 43 0.0 0.0 +es 07_gas 2 43 0.0 0.0 +es 08_non-res 2 43 0.0 0.0 +es 09_hydro_pump 2 43 0.0 0.0 +es 01_solar 2 44 1.0 0.0 +es 02_wind_on 2 44 1.0 0.0 +es 03_wind_off 2 44 1.0 0.0 +es 04_res 2 44 0.0 0.0 +es 05_nuclear 2 44 0.0 0.0 +es 06_coal 2 44 0.0 0.0 +es 07_gas 2 44 0.0 0.0 +es 08_non-res 2 44 0.0 0.0 +es 09_hydro_pump 2 44 0.0 0.0 +es 01_solar 2 45 1.0 0.0 +es 02_wind_on 2 45 1.0 0.0 +es 03_wind_off 2 45 1.0 0.0 +es 04_res 2 45 0.0 0.0 +es 05_nuclear 2 45 0.0 0.0 +es 06_coal 2 45 0.0 0.0 +es 07_gas 2 45 0.0 0.0 +es 08_non-res 2 45 0.0 0.0 +es 09_hydro_pump 2 45 0.0 0.0 +es 01_solar 2 46 1.0 0.0 +es 02_wind_on 2 46 1.0 0.0 +es 03_wind_off 2 46 1.0 0.0 +es 04_res 2 46 0.0 0.0 +es 05_nuclear 2 46 0.0 0.0 +es 06_coal 2 46 0.0 0.0 +es 07_gas 2 46 0.0 0.0 +es 08_non-res 2 46 0.0 0.0 +es 09_hydro_pump 2 46 0.0 0.0 +es 01_solar 2 47 1.0 0.0 +es 02_wind_on 2 47 1.0 0.0 +es 03_wind_off 2 47 1.0 0.0 +es 04_res 2 47 0.0 0.0 +es 05_nuclear 2 47 0.0 0.0 +es 06_coal 2 47 0.0 0.0 +es 07_gas 2 47 0.0 0.0 +es 08_non-res 2 47 0.0 0.0 +es 09_hydro_pump 2 47 0.0 0.0 +es 01_solar 2 48 1.0 0.0 +es 02_wind_on 2 48 1.0 0.0 +es 03_wind_off 2 48 1.0 0.0 +es 04_res 2 48 0.0 0.0 +es 05_nuclear 2 48 0.0 0.0 +es 06_coal 2 48 0.0 0.0 +es 07_gas 2 48 0.0 0.0 +es 08_non-res 2 48 0.0 0.0 +es 09_hydro_pump 2 48 0.0 0.0 +es 01_solar 2 49 1.0 0.0 +es 02_wind_on 2 49 1.0 0.0 +es 03_wind_off 2 49 1.0 0.0 +es 04_res 2 49 0.0 0.0 +es 05_nuclear 2 49 0.0 0.0 +es 06_coal 2 49 0.0 0.0 +es 07_gas 2 49 0.0 0.0 +es 08_non-res 2 49 0.0 0.0 +es 09_hydro_pump 2 49 0.0 0.0 +es 01_solar 2 50 1.0 0.0 +es 02_wind_on 2 50 1.0 0.0 +es 03_wind_off 2 50 1.0 0.0 +es 04_res 2 50 0.0 0.0 +es 05_nuclear 2 50 0.0 0.0 +es 06_coal 2 50 0.0 0.0 +es 07_gas 2 50 0.0 0.0 +es 08_non-res 2 50 0.0 0.0 +es 09_hydro_pump 2 50 0.0 0.0 +es 01_solar 2 51 1.0 0.0 +es 02_wind_on 2 51 1.0 0.0 +es 03_wind_off 2 51 1.0 0.0 +es 04_res 2 51 0.0 0.0 +es 05_nuclear 2 51 0.0 0.0 +es 06_coal 2 51 0.0 0.0 +es 07_gas 2 51 0.0 0.0 +es 08_non-res 2 51 0.0 0.0 +es 09_hydro_pump 2 51 0.0 0.0 +es 01_solar 2 52 1.0 0.0 +es 02_wind_on 2 52 1.0 0.0 +es 03_wind_off 2 52 1.0 0.0 +es 04_res 2 52 0.0 0.0 +es 05_nuclear 2 52 0.0 0.0 +es 06_coal 2 52 0.0 0.0 +es 07_gas 2 52 0.0 0.0 +es 08_non-res 2 52 0.0 0.0 +es 09_hydro_pump 2 52 0.0 0.0 +es 01_solar 2 53 1.0 0.0 +es 02_wind_on 2 53 1.0 0.0 +es 03_wind_off 2 53 1.0 0.0 +es 04_res 2 53 0.0 0.0 +es 05_nuclear 2 53 0.0 0.0 +es 06_coal 2 53 0.0 0.0 +es 07_gas 2 53 0.0 0.0 +es 08_non-res 2 53 0.0 0.0 +es 09_hydro_pump 2 53 0.0 0.0 +es 01_solar 2 54 1.0 0.0 +es 02_wind_on 2 54 1.0 0.0 +es 03_wind_off 2 54 1.0 0.0 +es 04_res 2 54 0.0 0.0 +es 05_nuclear 2 54 0.0 0.0 +es 06_coal 2 54 0.0 0.0 +es 07_gas 2 54 0.0 0.0 +es 08_non-res 2 54 0.0 0.0 +es 09_hydro_pump 2 54 0.0 0.0 +es 01_solar 2 55 1.0 0.0 +es 02_wind_on 2 55 1.0 0.0 +es 03_wind_off 2 55 1.0 0.0 +es 04_res 2 55 0.0 0.0 +es 05_nuclear 2 55 0.0 0.0 +es 06_coal 2 55 0.0 0.0 +es 07_gas 2 55 0.0 0.0 +es 08_non-res 2 55 0.0 0.0 +es 09_hydro_pump 2 55 0.0 0.0 +es 01_solar 2 56 1.0 0.0 +es 02_wind_on 2 56 1.0 0.0 +es 03_wind_off 2 56 1.0 0.0 +es 04_res 2 56 0.0 0.0 +es 05_nuclear 2 56 0.0 0.0 +es 06_coal 2 56 0.0 0.0 +es 07_gas 2 56 0.0 0.0 +es 08_non-res 2 56 0.0 0.0 +es 09_hydro_pump 2 56 0.0 0.0 +es 01_solar 2 57 1.0 0.0 +es 02_wind_on 2 57 1.0 0.0 +es 03_wind_off 2 57 1.0 0.0 +es 04_res 2 57 0.0 0.0 +es 05_nuclear 2 57 0.0 0.0 +es 06_coal 2 57 0.0 0.0 +es 07_gas 2 57 0.0 0.0 +es 08_non-res 2 57 0.0 0.0 +es 09_hydro_pump 2 57 0.0 0.0 +es 01_solar 2 58 1.0 0.0 +es 02_wind_on 2 58 1.0 0.0 +es 03_wind_off 2 58 1.0 0.0 +es 04_res 2 58 0.0 0.0 +es 05_nuclear 2 58 0.0 0.0 +es 06_coal 2 58 0.0 0.0 +es 07_gas 2 58 0.0 0.0 +es 08_non-res 2 58 0.0 0.0 +es 09_hydro_pump 2 58 0.0 0.0 +es 01_solar 2 59 1.0 0.0 +es 02_wind_on 2 59 1.0 0.0 +es 03_wind_off 2 59 1.0 0.0 +es 04_res 2 59 0.0 0.0 +es 05_nuclear 2 59 0.0 0.0 +es 06_coal 2 59 0.0 0.0 +es 07_gas 2 59 0.0 0.0 +es 08_non-res 2 59 0.0 0.0 +es 09_hydro_pump 2 59 0.0 0.0 +es 01_solar 2 60 1.0 0.0 +es 02_wind_on 2 60 1.0 0.0 +es 03_wind_off 2 60 1.0 0.0 +es 04_res 2 60 0.0 0.0 +es 05_nuclear 2 60 0.0 0.0 +es 06_coal 2 60 0.0 0.0 +es 07_gas 2 60 0.0 0.0 +es 08_non-res 2 60 0.0 0.0 +es 09_hydro_pump 2 60 0.0 0.0 +es 01_solar 2 61 1.0 0.0 +es 02_wind_on 2 61 1.0 0.0 +es 03_wind_off 2 61 1.0 0.0 +es 04_res 2 61 0.0 0.0 +es 05_nuclear 2 61 0.0 0.0 +es 06_coal 2 61 0.0 0.0 +es 07_gas 2 61 0.0 0.0 +es 08_non-res 2 61 0.0 0.0 +es 09_hydro_pump 2 61 0.0 0.0 +es 01_solar 2 62 1.0 0.0 +es 02_wind_on 2 62 1.0 0.0 +es 03_wind_off 2 62 1.0 0.0 +es 04_res 2 62 1.0 0.0 +es 05_nuclear 2 62 0.0 0.0 +es 06_coal 2 62 0.0 0.0 +es 07_gas 2 62 0.0 0.0 +es 08_non-res 2 62 0.0 0.0 +es 09_hydro_pump 2 62 0.0 0.0 +es 01_solar 2 63 1.0 0.0 +es 02_wind_on 2 63 1.0 0.0 +es 03_wind_off 2 63 1.0 0.0 +es 04_res 2 63 1.0 0.0 +es 05_nuclear 2 63 0.0 0.0 +es 06_coal 2 63 0.0 0.0 +es 07_gas 2 63 0.0 0.0 +es 08_non-res 2 63 0.0 0.0 +es 09_hydro_pump 2 63 0.0 0.0 +es 01_solar 2 64 1.0 0.0 +es 02_wind_on 2 64 1.0 0.0 +es 03_wind_off 2 64 1.0 0.0 +es 04_res 2 64 1.0 0.0 +es 05_nuclear 2 64 0.0 0.0 +es 06_coal 2 64 0.0 0.0 +es 07_gas 2 64 0.0 0.0 +es 08_non-res 2 64 0.0 0.0 +es 09_hydro_pump 2 64 0.0 0.0 +es 01_solar 2 65 1.0 0.0 +es 02_wind_on 2 65 1.0 0.0 +es 03_wind_off 2 65 1.0 0.0 +es 04_res 2 65 1.0 0.0 +es 05_nuclear 2 65 0.0 0.0 +es 06_coal 2 65 0.0 0.0 +es 07_gas 2 65 0.0 0.0 +es 08_non-res 2 65 0.0 0.0 +es 09_hydro_pump 2 65 0.0 0.0 +es 01_solar 2 66 1.0 0.0 +es 02_wind_on 2 66 1.0 0.0 +es 03_wind_off 2 66 1.0 0.0 +es 04_res 2 66 1.0 0.0 +es 05_nuclear 2 66 0.0 0.0 +es 06_coal 2 66 0.0 0.0 +es 07_gas 2 66 0.0 0.0 +es 08_non-res 2 66 0.0 0.0 +es 09_hydro_pump 2 66 0.0 0.0 +es 01_solar 2 67 1.0 0.0 +es 02_wind_on 2 67 1.0 0.0 +es 03_wind_off 2 67 1.0 0.0 +es 04_res 2 67 1.0 0.0 +es 05_nuclear 2 67 0.0 0.0 +es 06_coal 2 67 0.0 0.0 +es 07_gas 2 67 0.0 0.0 +es 08_non-res 2 67 0.0 0.0 +es 09_hydro_pump 2 67 0.0 0.0 +es 01_solar 2 68 1.0 0.0 +es 02_wind_on 2 68 1.0 0.0 +es 03_wind_off 2 68 1.0 0.0 +es 04_res 2 68 1.0 0.0 +es 05_nuclear 2 68 0.0 0.0 +es 06_coal 2 68 0.0 0.0 +es 07_gas 2 68 0.0 0.0 +es 08_non-res 2 68 0.0 0.0 +es 09_hydro_pump 2 68 0.0 0.0 +es 01_solar 2 69 1.0 0.0 +es 02_wind_on 2 69 1.0 0.0 +es 03_wind_off 2 69 1.0 0.0 +es 04_res 2 69 1.0 0.0 +es 05_nuclear 2 69 0.0 0.0 +es 06_coal 2 69 0.0 0.0 +es 07_gas 2 69 0.0 0.0 +es 08_non-res 2 69 0.0 0.0 +es 09_hydro_pump 2 69 0.0 0.0 +es 01_solar 2 70 1.0 0.0 +es 02_wind_on 2 70 1.0 0.0 +es 03_wind_off 2 70 1.0 0.0 +es 04_res 2 70 1.0 0.0 +es 05_nuclear 2 70 0.0 0.0 +es 06_coal 2 70 0.0 0.0 +es 07_gas 2 70 0.0 0.0 +es 08_non-res 2 70 0.0 0.0 +es 09_hydro_pump 2 70 0.0 0.0 +es 01_solar 2 71 1.0 0.0 +es 02_wind_on 2 71 1.0 0.0 +es 03_wind_off 2 71 1.0 0.0 +es 04_res 2 71 1.0 0.0 +es 05_nuclear 2 71 0.0 0.0 +es 06_coal 2 71 0.0 0.0 +es 07_gas 2 71 0.0 0.0 +es 08_non-res 2 71 0.0 0.0 +es 09_hydro_pump 2 71 0.0 0.0 +es 01_solar 2 72 1.0 0.0 +es 02_wind_on 2 72 1.0 0.0 +es 03_wind_off 2 72 1.0 0.0 +es 04_res 2 72 1.0 0.0 +es 05_nuclear 2 72 0.0 0.0 +es 06_coal 2 72 0.0 0.0 +es 07_gas 2 72 0.0 0.0 +es 08_non-res 2 72 0.0 0.0 +es 09_hydro_pump 2 72 0.0 0.0 +es 01_solar 2 73 1.0 0.0 +es 02_wind_on 2 73 1.0 0.0 +es 03_wind_off 2 73 1.0 0.0 +es 04_res 2 73 1.0 0.0 +es 05_nuclear 2 73 0.0 0.0 +es 06_coal 2 73 0.0 0.0 +es 07_gas 2 73 0.0 0.0 +es 08_non-res 2 73 0.0 0.0 +es 09_hydro_pump 2 73 0.0 0.0 +es 01_solar 2 74 1.0 0.0 +es 02_wind_on 2 74 1.0 0.0 +es 03_wind_off 2 74 1.0 0.0 +es 04_res 2 74 1.0 0.0 +es 05_nuclear 2 74 0.0 0.0 +es 06_coal 2 74 0.0 0.0 +es 07_gas 2 74 0.0 0.0 +es 08_non-res 2 74 0.0 0.0 +es 09_hydro_pump 2 74 0.0 0.0 +es 01_solar 2 75 1.0 0.0 +es 02_wind_on 2 75 1.0 0.0 +es 03_wind_off 2 75 1.0 0.0 +es 04_res 2 75 1.0 0.0 +es 05_nuclear 2 75 0.0 0.0 +es 06_coal 2 75 0.0 0.0 +es 07_gas 2 75 0.0 0.0 +es 08_non-res 2 75 0.0 0.0 +es 09_hydro_pump 2 75 0.0 0.0 +es 01_solar 2 76 1.0 0.0 +es 02_wind_on 2 76 1.0 0.0 +es 03_wind_off 2 76 1.0 0.0 +es 04_res 2 76 1.0 0.0 +es 05_nuclear 2 76 0.0 0.0 +es 06_coal 2 76 0.0 0.0 +es 07_gas 2 76 0.0 0.0 +es 08_non-res 2 76 0.0 0.0 +es 09_hydro_pump 2 76 0.0 0.0 +es 01_solar 2 77 1.0 0.0 +es 02_wind_on 2 77 1.0 0.0 +es 03_wind_off 2 77 1.0 0.0 +es 04_res 2 77 1.0 0.0 +es 05_nuclear 2 77 0.0 0.0 +es 06_coal 2 77 0.0 0.0 +es 07_gas 2 77 0.0 0.0 +es 08_non-res 2 77 0.0 0.0 +es 09_hydro_pump 2 77 0.0 0.0 +es 01_solar 2 78 1.0 0.0 +es 02_wind_on 2 78 1.0 0.0 +es 03_wind_off 2 78 1.0 0.0 +es 04_res 2 78 1.0 0.0 +es 05_nuclear 2 78 0.0 0.0 +es 06_coal 2 78 0.0 0.0 +es 07_gas 2 78 0.0 0.0 +es 08_non-res 2 78 0.0 0.0 +es 09_hydro_pump 2 78 0.0 0.0 +es 01_solar 2 79 1.0 0.0 +es 02_wind_on 2 79 1.0 0.0 +es 03_wind_off 2 79 1.0 0.0 +es 04_res 2 79 1.0 0.0 +es 05_nuclear 2 79 0.0 0.0 +es 06_coal 2 79 0.0 0.0 +es 07_gas 2 79 0.0 0.0 +es 08_non-res 2 79 0.0 0.0 +es 09_hydro_pump 2 79 0.0 0.0 +es 01_solar 2 80 1.0 0.0 +es 02_wind_on 2 80 1.0 0.0 +es 03_wind_off 2 80 1.0 0.0 +es 04_res 2 80 1.0 0.0 +es 05_nuclear 2 80 0.0 0.0 +es 06_coal 2 80 0.0 0.0 +es 07_gas 2 80 0.0 0.0 +es 08_non-res 2 80 0.0 0.0 +es 09_hydro_pump 2 80 0.0 0.0 +es 01_solar 2 81 1.0 0.0 +es 02_wind_on 2 81 1.0 0.0 +es 03_wind_off 2 81 1.0 0.0 +es 04_res 2 81 1.0 0.0 +es 05_nuclear 2 81 0.0 0.0 +es 06_coal 2 81 0.0 0.0 +es 07_gas 2 81 0.0 0.0 +es 08_non-res 2 81 0.0 0.0 +es 09_hydro_pump 2 81 0.0 0.0 +es 01_solar 2 82 1.0 0.0 +es 02_wind_on 2 82 1.0 0.0 +es 03_wind_off 2 82 1.0 0.0 +es 04_res 2 82 1.0 0.0 +es 05_nuclear 2 82 1.0 0.0 +es 06_coal 2 82 0.0 0.0 +es 07_gas 2 82 0.0 0.0 +es 08_non-res 2 82 0.0 0.0 +es 09_hydro_pump 2 82 0.0 0.0 +es 01_solar 2 83 1.0 0.0 +es 02_wind_on 2 83 1.0 0.0 +es 03_wind_off 2 83 1.0 0.0 +es 04_res 2 83 1.0 0.0 +es 05_nuclear 2 83 1.0 0.0 +es 06_coal 2 83 0.0 0.0 +es 07_gas 2 83 0.0 0.0 +es 08_non-res 2 83 0.0 0.0 +es 09_hydro_pump 2 83 0.0 0.0 +es 01_solar 2 84 1.0 0.0 +es 02_wind_on 2 84 1.0 0.0 +es 03_wind_off 2 84 1.0 0.0 +es 04_res 2 84 1.0 0.0 +es 05_nuclear 2 84 1.0 0.0 +es 06_coal 2 84 0.0 0.0 +es 07_gas 2 84 0.0 0.0 +es 08_non-res 2 84 0.0 0.0 +es 09_hydro_pump 2 84 0.0 0.0 +es 01_solar 2 85 1.0 0.0 +es 02_wind_on 2 85 1.0 0.0 +es 03_wind_off 2 85 1.0 0.0 +es 04_res 2 85 1.0 0.0 +es 05_nuclear 2 85 1.0 0.0 +es 06_coal 2 85 0.0 0.0 +es 07_gas 2 85 0.0 0.0 +es 08_non-res 2 85 0.0 0.0 +es 09_hydro_pump 2 85 0.0 0.0 +es 01_solar 2 86 1.0 0.0 +es 02_wind_on 2 86 1.0 0.0 +es 03_wind_off 2 86 1.0 0.0 +es 04_res 2 86 1.0 0.0 +es 05_nuclear 2 86 1.0 0.0 +es 06_coal 2 86 0.0 0.0 +es 07_gas 2 86 0.0 0.0 +es 08_non-res 2 86 0.0 0.0 +es 09_hydro_pump 2 86 0.0 0.0 +es 01_solar 2 87 1.0 0.0 +es 02_wind_on 2 87 1.0 0.0 +es 03_wind_off 2 87 1.0 0.0 +es 04_res 2 87 1.0 0.0 +es 05_nuclear 2 87 1.0 0.0 +es 06_coal 2 87 0.0 0.0 +es 07_gas 2 87 0.0 0.0 +es 08_non-res 2 87 0.0 0.0 +es 09_hydro_pump 2 87 0.0 0.0 +es 01_solar 2 88 1.0 0.0 +es 02_wind_on 2 88 1.0 0.0 +es 03_wind_off 2 88 1.0 0.0 +es 04_res 2 88 1.0 0.0 +es 05_nuclear 2 88 1.0 0.0 +es 06_coal 2 88 0.0 0.0 +es 07_gas 2 88 0.0 0.0 +es 08_non-res 2 88 0.0 0.0 +es 09_hydro_pump 2 88 0.0 0.0 +es 01_solar 2 89 1.0 0.0 +es 02_wind_on 2 89 1.0 0.0 +es 03_wind_off 2 89 1.0 0.0 +es 04_res 2 89 1.0 0.0 +es 05_nuclear 2 89 1.0 0.0 +es 06_coal 2 89 0.0 0.0 +es 07_gas 2 89 0.0 0.0 +es 08_non-res 2 89 0.0 0.0 +es 09_hydro_pump 2 89 0.0 0.0 +es 01_solar 2 90 1.0 0.0 +es 02_wind_on 2 90 1.0 0.0 +es 03_wind_off 2 90 1.0 0.0 +es 04_res 2 90 1.0 0.0 +es 05_nuclear 2 90 1.0 0.0 +es 06_coal 2 90 0.0 0.0 +es 07_gas 2 90 0.0 0.0 +es 08_non-res 2 90 0.0 0.0 +es 09_hydro_pump 2 90 0.0 0.0 +es 01_solar 2 91 1.0 0.0 +es 02_wind_on 2 91 1.0 0.0 +es 03_wind_off 2 91 1.0 0.0 +es 04_res 2 91 1.0 0.0 +es 05_nuclear 2 91 1.0 0.0 +es 06_coal 2 91 0.0 0.0 +es 07_gas 2 91 0.0 0.0 +es 08_non-res 2 91 0.0 0.0 +es 09_hydro_pump 2 91 0.0 0.0 +es 01_solar 2 92 1.0 0.0 +es 02_wind_on 2 92 1.0 0.0 +es 03_wind_off 2 92 1.0 0.0 +es 04_res 2 92 1.0 0.0 +es 05_nuclear 2 92 1.0 0.0 +es 06_coal 2 92 0.0 0.0 +es 07_gas 2 92 0.0 0.0 +es 08_non-res 2 92 0.0 0.0 +es 09_hydro_pump 2 92 0.0 0.0 +es 01_solar 2 93 1.0 0.0 +es 02_wind_on 2 93 1.0 0.0 +es 03_wind_off 2 93 1.0 0.0 +es 04_res 2 93 1.0 0.0 +es 05_nuclear 2 93 1.0 0.0 +es 06_coal 2 93 0.0 0.0 +es 07_gas 2 93 0.0 0.0 +es 08_non-res 2 93 0.0 0.0 +es 09_hydro_pump 2 93 0.0 0.0 +es 01_solar 2 94 1.0 0.0 +es 02_wind_on 2 94 1.0 0.0 +es 03_wind_off 2 94 1.0 0.0 +es 04_res 2 94 1.0 0.0 +es 05_nuclear 2 94 1.0 0.0 +es 06_coal 2 94 0.0 0.0 +es 07_gas 2 94 0.0 0.0 +es 08_non-res 2 94 0.0 0.0 +es 09_hydro_pump 2 94 0.0 0.0 +es 01_solar 2 95 1.0 0.0 +es 02_wind_on 2 95 1.0 0.0 +es 03_wind_off 2 95 1.0 0.0 +es 04_res 2 95 1.0 0.0 +es 05_nuclear 2 95 1.0 0.0 +es 06_coal 2 95 0.0 0.0 +es 07_gas 2 95 0.0 0.0 +es 08_non-res 2 95 0.0 0.0 +es 09_hydro_pump 2 95 0.0 0.0 +es 01_solar 2 96 1.0 0.0 +es 02_wind_on 2 96 1.0 0.0 +es 03_wind_off 2 96 1.0 0.0 +es 04_res 2 96 1.0 0.0 +es 05_nuclear 2 96 1.0 0.0 +es 06_coal 2 96 0.0 0.0 +es 07_gas 2 96 0.0 0.0 +es 08_non-res 2 96 0.0 0.0 +es 09_hydro_pump 2 96 0.0 0.0 +es 01_solar 2 97 1.0 0.0 +es 02_wind_on 2 97 1.0 0.0 +es 03_wind_off 2 97 1.0 0.0 +es 04_res 2 97 1.0 0.0 +es 05_nuclear 2 97 1.0 0.0 +es 06_coal 2 97 0.0 0.0 +es 07_gas 2 97 0.0 0.0 +es 08_non-res 2 97 0.0 0.0 +es 09_hydro_pump 2 97 0.0 0.0 +es 01_solar 2 98 1.0 0.0 +es 02_wind_on 2 98 1.0 0.0 +es 03_wind_off 2 98 1.0 0.0 +es 04_res 2 98 1.0 0.0 +es 05_nuclear 2 98 1.0 0.0 +es 06_coal 2 98 0.0 0.0 +es 07_gas 2 98 0.0 0.0 +es 08_non-res 2 98 0.0 0.0 +es 09_hydro_pump 2 98 0.0 0.0 +es 01_solar 2 99 1.0 0.0 +es 02_wind_on 2 99 1.0 0.0 +es 03_wind_off 2 99 1.0 0.0 +es 04_res 2 99 1.0 0.0 +es 05_nuclear 2 99 1.0 0.0 +es 06_coal 2 99 0.0 0.0 +es 07_gas 2 99 0.0 0.0 +es 08_non-res 2 99 0.0 0.0 +es 09_hydro_pump 2 99 0.0 0.0 +es 01_solar 2 100 1.0 0.0 +es 02_wind_on 2 100 1.0 0.0 +es 03_wind_off 2 100 1.0 0.0 +es 04_res 2 100 1.0 0.0 +es 05_nuclear 2 100 1.0 0.0 +es 06_coal 2 100 0.0 0.0 +es 07_gas 2 100 0.0 0.0 +es 08_non-res 2 100 0.0 0.0 +es 09_hydro_pump 2 100 0.0 0.0 +es 01_solar 2 101 1.0 0.0 +es 02_wind_on 2 101 1.0 0.0 +es 03_wind_off 2 101 1.0 0.0 +es 04_res 2 101 1.0 0.0 +es 05_nuclear 2 101 1.0 0.0 +es 06_coal 2 101 0.0 0.0 +es 07_gas 2 101 0.0 0.0 +es 08_non-res 2 101 0.0 0.0 +es 09_hydro_pump 2 101 0.0 0.0 +es 01_solar 2 102 1.0 0.0 +es 02_wind_on 2 102 1.0 0.0 +es 03_wind_off 2 102 1.0 0.0 +es 04_res 2 102 1.0 0.0 +es 05_nuclear 2 102 1.0 0.0 +es 06_coal 2 102 1.0 0.0 +es 07_gas 2 102 0.0 0.0 +es 08_non-res 2 102 0.0 0.0 +es 09_hydro_pump 2 102 0.0 0.0 +es 01_solar 2 103 1.0 0.0 +es 02_wind_on 2 103 1.0 0.0 +es 03_wind_off 2 103 1.0 0.0 +es 04_res 2 103 1.0 0.0 +es 05_nuclear 2 103 1.0 0.0 +es 06_coal 2 103 1.0 0.0 +es 07_gas 2 103 0.0 0.0 +es 08_non-res 2 103 0.0 0.0 +es 09_hydro_pump 2 103 0.0 0.0 +es 01_solar 2 104 1.0 0.0 +es 02_wind_on 2 104 1.0 0.0 +es 03_wind_off 2 104 1.0 0.0 +es 04_res 2 104 1.0 0.0 +es 05_nuclear 2 104 1.0 0.0 +es 06_coal 2 104 1.0 0.0 +es 07_gas 2 104 0.0 0.0 +es 08_non-res 2 104 0.0 0.0 +es 09_hydro_pump 2 104 0.0 0.0 +es 01_solar 2 105 1.0 0.0 +es 02_wind_on 2 105 1.0 0.0 +es 03_wind_off 2 105 1.0 0.0 +es 04_res 2 105 1.0 0.0 +es 05_nuclear 2 105 1.0 0.0 +es 06_coal 2 105 1.0 0.0 +es 07_gas 2 105 0.0 0.0 +es 08_non-res 2 105 0.0 0.0 +es 09_hydro_pump 2 105 0.0 0.0 +es 01_solar 2 106 1.0 0.0 +es 02_wind_on 2 106 1.0 0.0 +es 03_wind_off 2 106 1.0 0.0 +es 04_res 2 106 1.0 0.0 +es 05_nuclear 2 106 1.0 0.0 +es 06_coal 2 106 1.0 0.0 +es 07_gas 2 106 0.0 0.0 +es 08_non-res 2 106 0.0 0.0 +es 09_hydro_pump 2 106 0.0 0.0 +es 01_solar 2 107 1.0 0.0 +es 02_wind_on 2 107 1.0 0.0 +es 03_wind_off 2 107 1.0 0.0 +es 04_res 2 107 1.0 0.0 +es 05_nuclear 2 107 1.0 0.0 +es 06_coal 2 107 1.0 0.0 +es 07_gas 2 107 0.0 0.0 +es 08_non-res 2 107 0.0 0.0 +es 09_hydro_pump 2 107 0.0 0.0 +es 01_solar 2 108 1.0 0.0 +es 02_wind_on 2 108 1.0 0.0 +es 03_wind_off 2 108 1.0 0.0 +es 04_res 2 108 1.0 0.0 +es 05_nuclear 2 108 1.0 0.0 +es 06_coal 2 108 1.0 0.0 +es 07_gas 2 108 0.0 0.0 +es 08_non-res 2 108 0.0 0.0 +es 09_hydro_pump 2 108 0.0 0.0 +es 01_solar 2 109 1.0 0.0 +es 02_wind_on 2 109 1.0 0.0 +es 03_wind_off 2 109 1.0 0.0 +es 04_res 2 109 1.0 0.0 +es 05_nuclear 2 109 1.0 0.0 +es 06_coal 2 109 1.0 0.0 +es 07_gas 2 109 0.0 0.0 +es 08_non-res 2 109 0.0 0.0 +es 09_hydro_pump 2 109 0.0 0.0 +es 01_solar 2 110 1.0 0.0 +es 02_wind_on 2 110 1.0 0.0 +es 03_wind_off 2 110 1.0 0.0 +es 04_res 2 110 1.0 0.0 +es 05_nuclear 2 110 1.0 0.0 +es 06_coal 2 110 1.0 0.0 +es 07_gas 2 110 0.0 0.0 +es 08_non-res 2 110 0.0 0.0 +es 09_hydro_pump 2 110 0.0 0.0 +es 01_solar 2 111 1.0 0.0 +es 02_wind_on 2 111 1.0 0.0 +es 03_wind_off 2 111 1.0 0.0 +es 04_res 2 111 1.0 0.0 +es 05_nuclear 2 111 1.0 0.0 +es 06_coal 2 111 1.0 0.0 +es 07_gas 2 111 0.0 0.0 +es 08_non-res 2 111 0.0 0.0 +es 09_hydro_pump 2 111 0.0 0.0 +es 01_solar 2 112 1.0 0.0 +es 02_wind_on 2 112 1.0 0.0 +es 03_wind_off 2 112 1.0 0.0 +es 04_res 2 112 1.0 0.0 +es 05_nuclear 2 112 1.0 0.0 +es 06_coal 2 112 1.0 0.0 +es 07_gas 2 112 0.0 0.0 +es 08_non-res 2 112 0.0 0.0 +es 09_hydro_pump 2 112 0.0 0.0 +es 01_solar 2 113 1.0 0.0 +es 02_wind_on 2 113 1.0 0.0 +es 03_wind_off 2 113 1.0 0.0 +es 04_res 2 113 1.0 0.0 +es 05_nuclear 2 113 1.0 0.0 +es 06_coal 2 113 1.0 0.0 +es 07_gas 2 113 0.0 0.0 +es 08_non-res 2 113 0.0 0.0 +es 09_hydro_pump 2 113 0.0 0.0 +es 01_solar 2 114 1.0 0.0 +es 02_wind_on 2 114 1.0 0.0 +es 03_wind_off 2 114 1.0 0.0 +es 04_res 2 114 1.0 0.0 +es 05_nuclear 2 114 1.0 0.0 +es 06_coal 2 114 1.0 0.0 +es 07_gas 2 114 0.0 0.0 +es 08_non-res 2 114 0.0 0.0 +es 09_hydro_pump 2 114 0.0 0.0 +es 01_solar 2 115 1.0 0.0 +es 02_wind_on 2 115 1.0 0.0 +es 03_wind_off 2 115 1.0 0.0 +es 04_res 2 115 1.0 0.0 +es 05_nuclear 2 115 1.0 0.0 +es 06_coal 2 115 1.0 0.0 +es 07_gas 2 115 0.0 0.0 +es 08_non-res 2 115 0.0 0.0 +es 09_hydro_pump 2 115 0.0 0.0 +es 01_solar 2 116 1.0 0.0 +es 02_wind_on 2 116 1.0 0.0 +es 03_wind_off 2 116 1.0 0.0 +es 04_res 2 116 1.0 0.0 +es 05_nuclear 2 116 1.0 0.0 +es 06_coal 2 116 1.0 0.0 +es 07_gas 2 116 0.0 0.0 +es 08_non-res 2 116 0.0 0.0 +es 09_hydro_pump 2 116 0.0 0.0 +es 01_solar 2 117 1.0 0.0 +es 02_wind_on 2 117 1.0 0.0 +es 03_wind_off 2 117 1.0 0.0 +es 04_res 2 117 1.0 0.0 +es 05_nuclear 2 117 1.0 0.0 +es 06_coal 2 117 1.0 0.0 +es 07_gas 2 117 0.0 0.0 +es 08_non-res 2 117 0.0 0.0 +es 09_hydro_pump 2 117 0.0 0.0 +es 01_solar 2 118 1.0 0.0 +es 02_wind_on 2 118 1.0 0.0 +es 03_wind_off 2 118 1.0 0.0 +es 04_res 2 118 1.0 0.0 +es 05_nuclear 2 118 1.0 0.0 +es 06_coal 2 118 1.0 0.0 +es 07_gas 2 118 0.0 0.0 +es 08_non-res 2 118 0.0 0.0 +es 09_hydro_pump 2 118 0.0 0.0 +es 01_solar 2 119 1.0 0.0 +es 02_wind_on 2 119 1.0 0.0 +es 03_wind_off 2 119 1.0 0.0 +es 04_res 2 119 1.0 0.0 +es 05_nuclear 2 119 1.0 0.0 +es 06_coal 2 119 1.0 0.0 +es 07_gas 2 119 0.0 0.0 +es 08_non-res 2 119 0.0 0.0 +es 09_hydro_pump 2 119 0.0 0.0 +es 01_solar 2 120 1.0 0.0 +es 02_wind_on 2 120 1.0 0.0 +es 03_wind_off 2 120 1.0 0.0 +es 04_res 2 120 1.0 0.0 +es 05_nuclear 2 120 1.0 0.0 +es 06_coal 2 120 1.0 0.0 +es 07_gas 2 120 0.0 0.0 +es 08_non-res 2 120 0.0 0.0 +es 09_hydro_pump 2 120 0.0 0.0 +es 01_solar 2 121 1.0 0.0 +es 02_wind_on 2 121 1.0 0.0 +es 03_wind_off 2 121 1.0 0.0 +es 04_res 2 121 1.0 0.0 +es 05_nuclear 2 121 1.0 0.0 +es 06_coal 2 121 1.0 0.0 +es 07_gas 2 121 0.0 0.0 +es 08_non-res 2 121 0.0 0.0 +es 09_hydro_pump 2 121 0.0 0.0 +es 01_solar 2 122 1.0 0.0 +es 02_wind_on 2 122 1.0 0.0 +es 03_wind_off 2 122 1.0 0.0 +es 04_res 2 122 1.0 0.0 +es 05_nuclear 2 122 1.0 0.0 +es 06_coal 2 122 1.0 0.0 +es 07_gas 2 122 1.0 0.0 +es 08_non-res 2 122 0.0 0.0 +es 09_hydro_pump 2 122 0.0 0.0 +es 01_solar 2 123 1.0 0.0 +es 02_wind_on 2 123 1.0 0.0 +es 03_wind_off 2 123 1.0 0.0 +es 04_res 2 123 1.0 0.0 +es 05_nuclear 2 123 1.0 0.0 +es 06_coal 2 123 1.0 0.0 +es 07_gas 2 123 1.0 0.0 +es 08_non-res 2 123 0.0 0.0 +es 09_hydro_pump 2 123 0.0 0.0 +es 01_solar 2 124 1.0 0.0 +es 02_wind_on 2 124 1.0 0.0 +es 03_wind_off 2 124 1.0 0.0 +es 04_res 2 124 1.0 0.0 +es 05_nuclear 2 124 1.0 0.0 +es 06_coal 2 124 1.0 0.0 +es 07_gas 2 124 1.0 0.0 +es 08_non-res 2 124 0.0 0.0 +es 09_hydro_pump 2 124 0.0 0.0 +es 01_solar 2 125 1.0 0.0 +es 02_wind_on 2 125 1.0 0.0 +es 03_wind_off 2 125 1.0 0.0 +es 04_res 2 125 1.0 0.0 +es 05_nuclear 2 125 1.0 0.0 +es 06_coal 2 125 1.0 0.0 +es 07_gas 2 125 1.0 0.0 +es 08_non-res 2 125 0.0 0.0 +es 09_hydro_pump 2 125 0.0 0.0 +es 01_solar 2 126 1.0 0.0 +es 02_wind_on 2 126 1.0 0.0 +es 03_wind_off 2 126 1.0 0.0 +es 04_res 2 126 1.0 0.0 +es 05_nuclear 2 126 1.0 0.0 +es 06_coal 2 126 1.0 0.0 +es 07_gas 2 126 1.0 0.0 +es 08_non-res 2 126 0.0 0.0 +es 09_hydro_pump 2 126 0.0 0.0 +es 01_solar 2 127 1.0 0.0 +es 02_wind_on 2 127 1.0 0.0 +es 03_wind_off 2 127 1.0 0.0 +es 04_res 2 127 1.0 0.0 +es 05_nuclear 2 127 1.0 0.0 +es 06_coal 2 127 1.0 0.0 +es 07_gas 2 127 1.0 0.0 +es 08_non-res 2 127 0.0 0.0 +es 09_hydro_pump 2 127 0.0 0.0 +es 01_solar 2 128 1.0 0.0 +es 02_wind_on 2 128 1.0 0.0 +es 03_wind_off 2 128 1.0 0.0 +es 04_res 2 128 1.0 0.0 +es 05_nuclear 2 128 1.0 0.0 +es 06_coal 2 128 1.0 0.0 +es 07_gas 2 128 1.0 0.0 +es 08_non-res 2 128 0.0 0.0 +es 09_hydro_pump 2 128 0.0 0.0 +es 01_solar 2 129 1.0 0.0 +es 02_wind_on 2 129 1.0 0.0 +es 03_wind_off 2 129 1.0 0.0 +es 04_res 2 129 1.0 0.0 +es 05_nuclear 2 129 1.0 0.0 +es 06_coal 2 129 1.0 0.0 +es 07_gas 2 129 1.0 0.0 +es 08_non-res 2 129 0.0 0.0 +es 09_hydro_pump 2 129 0.0 0.0 +es 01_solar 2 130 1.0 0.0 +es 02_wind_on 2 130 1.0 0.0 +es 03_wind_off 2 130 1.0 0.0 +es 04_res 2 130 1.0 0.0 +es 05_nuclear 2 130 1.0 0.0 +es 06_coal 2 130 1.0 0.0 +es 07_gas 2 130 1.0 0.0 +es 08_non-res 2 130 0.0 0.0 +es 09_hydro_pump 2 130 0.0 0.0 +es 01_solar 2 131 1.0 0.0 +es 02_wind_on 2 131 1.0 0.0 +es 03_wind_off 2 131 1.0 0.0 +es 04_res 2 131 1.0 0.0 +es 05_nuclear 2 131 1.0 0.0 +es 06_coal 2 131 1.0 0.0 +es 07_gas 2 131 1.0 0.0 +es 08_non-res 2 131 0.0 0.0 +es 09_hydro_pump 2 131 0.0 0.0 +es 01_solar 2 132 1.0 0.0 +es 02_wind_on 2 132 1.0 0.0 +es 03_wind_off 2 132 1.0 0.0 +es 04_res 2 132 1.0 0.0 +es 05_nuclear 2 132 1.0 0.0 +es 06_coal 2 132 1.0 0.0 +es 07_gas 2 132 1.0 0.0 +es 08_non-res 2 132 0.0 0.0 +es 09_hydro_pump 2 132 0.0 0.0 +es 01_solar 2 133 1.0 0.0 +es 02_wind_on 2 133 1.0 0.0 +es 03_wind_off 2 133 1.0 0.0 +es 04_res 2 133 1.0 0.0 +es 05_nuclear 2 133 1.0 0.0 +es 06_coal 2 133 1.0 0.0 +es 07_gas 2 133 1.0 0.0 +es 08_non-res 2 133 0.0 0.0 +es 09_hydro_pump 2 133 0.0 0.0 +es 01_solar 2 134 1.0 0.0 +es 02_wind_on 2 134 1.0 0.0 +es 03_wind_off 2 134 1.0 0.0 +es 04_res 2 134 1.0 0.0 +es 05_nuclear 2 134 1.0 0.0 +es 06_coal 2 134 1.0 0.0 +es 07_gas 2 134 1.0 0.0 +es 08_non-res 2 134 0.0 0.0 +es 09_hydro_pump 2 134 0.0 0.0 +es 01_solar 2 135 1.0 0.0 +es 02_wind_on 2 135 1.0 0.0 +es 03_wind_off 2 135 1.0 0.0 +es 04_res 2 135 1.0 0.0 +es 05_nuclear 2 135 1.0 0.0 +es 06_coal 2 135 1.0 0.0 +es 07_gas 2 135 1.0 0.0 +es 08_non-res 2 135 0.0 0.0 +es 09_hydro_pump 2 135 0.0 0.0 +es 01_solar 2 136 1.0 0.0 +es 02_wind_on 2 136 1.0 0.0 +es 03_wind_off 2 136 1.0 0.0 +es 04_res 2 136 1.0 0.0 +es 05_nuclear 2 136 1.0 0.0 +es 06_coal 2 136 1.0 0.0 +es 07_gas 2 136 1.0 0.0 +es 08_non-res 2 136 0.0 0.0 +es 09_hydro_pump 2 136 0.0 0.0 +es 01_solar 2 137 1.0 0.0 +es 02_wind_on 2 137 1.0 0.0 +es 03_wind_off 2 137 1.0 0.0 +es 04_res 2 137 1.0 0.0 +es 05_nuclear 2 137 1.0 0.0 +es 06_coal 2 137 1.0 0.0 +es 07_gas 2 137 1.0 0.0 +es 08_non-res 2 137 0.0 0.0 +es 09_hydro_pump 2 137 0.0 0.0 +es 01_solar 2 138 1.0 0.0 +es 02_wind_on 2 138 1.0 0.0 +es 03_wind_off 2 138 1.0 0.0 +es 04_res 2 138 1.0 0.0 +es 05_nuclear 2 138 1.0 0.0 +es 06_coal 2 138 1.0 0.0 +es 07_gas 2 138 1.0 0.0 +es 08_non-res 2 138 0.0 0.0 +es 09_hydro_pump 2 138 0.0 0.0 +es 01_solar 2 139 1.0 0.0 +es 02_wind_on 2 139 1.0 0.0 +es 03_wind_off 2 139 1.0 0.0 +es 04_res 2 139 1.0 0.0 +es 05_nuclear 2 139 1.0 0.0 +es 06_coal 2 139 1.0 0.0 +es 07_gas 2 139 1.0 0.0 +es 08_non-res 2 139 0.0 0.0 +es 09_hydro_pump 2 139 0.0 0.0 +es 01_solar 2 140 1.0 0.0 +es 02_wind_on 2 140 1.0 0.0 +es 03_wind_off 2 140 1.0 0.0 +es 04_res 2 140 1.0 0.0 +es 05_nuclear 2 140 1.0 0.0 +es 06_coal 2 140 1.0 0.0 +es 07_gas 2 140 1.0 0.0 +es 08_non-res 2 140 0.0 0.0 +es 09_hydro_pump 2 140 0.0 0.0 +es 01_solar 2 141 1.0 0.0 +es 02_wind_on 2 141 1.0 0.0 +es 03_wind_off 2 141 1.0 0.0 +es 04_res 2 141 1.0 0.0 +es 05_nuclear 2 141 1.0 0.0 +es 06_coal 2 141 1.0 0.0 +es 07_gas 2 141 1.0 0.0 +es 08_non-res 2 141 0.0 0.0 +es 09_hydro_pump 2 141 0.0 0.0 +es 01_solar 2 142 1.0 0.0 +es 02_wind_on 2 142 1.0 0.0 +es 03_wind_off 2 142 1.0 0.0 +es 04_res 2 142 1.0 0.0 +es 05_nuclear 2 142 1.0 0.0 +es 06_coal 2 142 1.0 0.0 +es 07_gas 2 142 1.0 0.0 +es 08_non-res 2 142 1.0 0.0 +es 09_hydro_pump 2 142 0.0 0.0 +es 01_solar 2 143 1.0 0.0 +es 02_wind_on 2 143 1.0 0.0 +es 03_wind_off 2 143 1.0 0.0 +es 04_res 2 143 1.0 0.0 +es 05_nuclear 2 143 1.0 0.0 +es 06_coal 2 143 1.0 0.0 +es 07_gas 2 143 1.0 0.0 +es 08_non-res 2 143 1.0 0.0 +es 09_hydro_pump 2 143 0.0 0.0 +es 01_solar 2 144 1.0 0.0 +es 02_wind_on 2 144 1.0 0.0 +es 03_wind_off 2 144 1.0 0.0 +es 04_res 2 144 1.0 0.0 +es 05_nuclear 2 144 1.0 0.0 +es 06_coal 2 144 1.0 0.0 +es 07_gas 2 144 1.0 0.0 +es 08_non-res 2 144 1.0 0.0 +es 09_hydro_pump 2 144 0.0 0.0 +es 01_solar 2 145 1.0 0.0 +es 02_wind_on 2 145 1.0 0.0 +es 03_wind_off 2 145 1.0 0.0 +es 04_res 2 145 1.0 0.0 +es 05_nuclear 2 145 1.0 0.0 +es 06_coal 2 145 1.0 0.0 +es 07_gas 2 145 1.0 0.0 +es 08_non-res 2 145 1.0 0.0 +es 09_hydro_pump 2 145 0.0 0.0 +es 01_solar 2 146 1.0 0.0 +es 02_wind_on 2 146 1.0 0.0 +es 03_wind_off 2 146 1.0 0.0 +es 04_res 2 146 1.0 0.0 +es 05_nuclear 2 146 1.0 0.0 +es 06_coal 2 146 1.0 0.0 +es 07_gas 2 146 1.0 0.0 +es 08_non-res 2 146 1.0 0.0 +es 09_hydro_pump 2 146 0.0 0.0 +es 01_solar 2 147 1.0 0.0 +es 02_wind_on 2 147 1.0 0.0 +es 03_wind_off 2 147 1.0 0.0 +es 04_res 2 147 1.0 0.0 +es 05_nuclear 2 147 1.0 0.0 +es 06_coal 2 147 1.0 0.0 +es 07_gas 2 147 1.0 0.0 +es 08_non-res 2 147 1.0 0.0 +es 09_hydro_pump 2 147 0.0 0.0 +es 01_solar 2 148 1.0 0.0 +es 02_wind_on 2 148 1.0 0.0 +es 03_wind_off 2 148 1.0 0.0 +es 04_res 2 148 1.0 0.0 +es 05_nuclear 2 148 1.0 0.0 +es 06_coal 2 148 1.0 0.0 +es 07_gas 2 148 1.0 0.0 +es 08_non-res 2 148 1.0 0.0 +es 09_hydro_pump 2 148 0.0 0.0 +es 01_solar 2 149 1.0 0.0 +es 02_wind_on 2 149 1.0 0.0 +es 03_wind_off 2 149 1.0 0.0 +es 04_res 2 149 1.0 0.0 +es 05_nuclear 2 149 1.0 0.0 +es 06_coal 2 149 1.0 0.0 +es 07_gas 2 149 1.0 0.0 +es 08_non-res 2 149 1.0 0.0 +es 09_hydro_pump 2 149 0.0 0.0 +es 01_solar 2 150 1.0 0.0 +es 02_wind_on 2 150 1.0 0.0 +es 03_wind_off 2 150 1.0 0.0 +es 04_res 2 150 1.0 0.0 +es 05_nuclear 2 150 1.0 0.0 +es 06_coal 2 150 1.0 0.0 +es 07_gas 2 150 1.0 0.0 +es 08_non-res 2 150 1.0 0.0 +es 09_hydro_pump 2 150 0.0 0.0 +es 01_solar 2 151 1.0 0.0 +es 02_wind_on 2 151 1.0 0.0 +es 03_wind_off 2 151 1.0 0.0 +es 04_res 2 151 1.0 0.0 +es 05_nuclear 2 151 1.0 0.0 +es 06_coal 2 151 1.0 0.0 +es 07_gas 2 151 1.0 0.0 +es 08_non-res 2 151 1.0 0.0 +es 09_hydro_pump 2 151 0.0 0.0 +es 01_solar 2 152 1.0 0.0 +es 02_wind_on 2 152 1.0 0.0 +es 03_wind_off 2 152 1.0 0.0 +es 04_res 2 152 1.0 0.0 +es 05_nuclear 2 152 1.0 0.0 +es 06_coal 2 152 1.0 0.0 +es 07_gas 2 152 1.0 0.0 +es 08_non-res 2 152 1.0 0.0 +es 09_hydro_pump 2 152 0.0 0.0 +es 01_solar 2 153 1.0 0.0 +es 02_wind_on 2 153 1.0 0.0 +es 03_wind_off 2 153 1.0 0.0 +es 04_res 2 153 1.0 0.0 +es 05_nuclear 2 153 1.0 0.0 +es 06_coal 2 153 1.0 0.0 +es 07_gas 2 153 1.0 0.0 +es 08_non-res 2 153 1.0 0.0 +es 09_hydro_pump 2 153 0.0 0.0 +es 01_solar 2 154 1.0 0.0 +es 02_wind_on 2 154 1.0 0.0 +es 03_wind_off 2 154 1.0 0.0 +es 04_res 2 154 1.0 0.0 +es 05_nuclear 2 154 1.0 0.0 +es 06_coal 2 154 1.0 0.0 +es 07_gas 2 154 1.0 0.0 +es 08_non-res 2 154 1.0 0.0 +es 09_hydro_pump 2 154 0.0 0.0 +es 01_solar 2 155 1.0 0.0 +es 02_wind_on 2 155 1.0 0.0 +es 03_wind_off 2 155 1.0 0.0 +es 04_res 2 155 1.0 0.0 +es 05_nuclear 2 155 1.0 0.0 +es 06_coal 2 155 1.0 0.0 +es 07_gas 2 155 1.0 0.0 +es 08_non-res 2 155 1.0 0.0 +es 09_hydro_pump 2 155 0.0 0.0 +es 01_solar 2 156 1.0 0.0 +es 02_wind_on 2 156 1.0 0.0 +es 03_wind_off 2 156 1.0 0.0 +es 04_res 2 156 1.0 0.0 +es 05_nuclear 2 156 1.0 0.0 +es 06_coal 2 156 1.0 0.0 +es 07_gas 2 156 1.0 0.0 +es 08_non-res 2 156 1.0 0.0 +es 09_hydro_pump 2 156 0.0 0.0 +es 01_solar 2 157 1.0 0.0 +es 02_wind_on 2 157 1.0 0.0 +es 03_wind_off 2 157 1.0 0.0 +es 04_res 2 157 1.0 0.0 +es 05_nuclear 2 157 1.0 0.0 +es 06_coal 2 157 1.0 0.0 +es 07_gas 2 157 1.0 0.0 +es 08_non-res 2 157 1.0 0.0 +es 09_hydro_pump 2 157 0.0 0.0 +es 01_solar 2 158 1.0 0.0 +es 02_wind_on 2 158 1.0 0.0 +es 03_wind_off 2 158 1.0 0.0 +es 04_res 2 158 1.0 0.0 +es 05_nuclear 2 158 1.0 0.0 +es 06_coal 2 158 1.0 0.0 +es 07_gas 2 158 1.0 0.0 +es 08_non-res 2 158 1.0 0.0 +es 09_hydro_pump 2 158 0.0 0.0 +es 01_solar 2 159 1.0 0.0 +es 02_wind_on 2 159 1.0 0.0 +es 03_wind_off 2 159 1.0 0.0 +es 04_res 2 159 1.0 0.0 +es 05_nuclear 2 159 1.0 0.0 +es 06_coal 2 159 1.0 0.0 +es 07_gas 2 159 1.0 0.0 +es 08_non-res 2 159 1.0 0.0 +es 09_hydro_pump 2 159 0.0 0.0 +es 01_solar 2 160 1.0 0.0 +es 02_wind_on 2 160 1.0 0.0 +es 03_wind_off 2 160 1.0 0.0 +es 04_res 2 160 1.0 0.0 +es 05_nuclear 2 160 1.0 0.0 +es 06_coal 2 160 1.0 0.0 +es 07_gas 2 160 1.0 0.0 +es 08_non-res 2 160 1.0 0.0 +es 09_hydro_pump 2 160 0.0 0.0 +es 01_solar 2 161 1.0 0.0 +es 02_wind_on 2 161 1.0 0.0 +es 03_wind_off 2 161 1.0 0.0 +es 04_res 2 161 1.0 0.0 +es 05_nuclear 2 161 1.0 0.0 +es 06_coal 2 161 1.0 0.0 +es 07_gas 2 161 1.0 0.0 +es 08_non-res 2 161 1.0 0.0 +es 09_hydro_pump 2 161 0.0 0.0 +es 01_solar 2 162 1.0 0.0 +es 02_wind_on 2 162 1.0 0.0 +es 03_wind_off 2 162 1.0 0.0 +es 04_res 2 162 1.0 0.0 +es 05_nuclear 2 162 1.0 0.0 +es 06_coal 2 162 1.0 0.0 +es 07_gas 2 162 1.0 0.0 +es 08_non-res 2 162 1.0 0.0 +es 09_hydro_pump 2 162 1.0 0.0 +es 01_solar 2 163 1.0 0.0 +es 02_wind_on 2 163 1.0 0.0 +es 03_wind_off 2 163 1.0 0.0 +es 04_res 2 163 1.0 0.0 +es 05_nuclear 2 163 1.0 0.0 +es 06_coal 2 163 1.0 0.0 +es 07_gas 2 163 1.0 0.0 +es 08_non-res 2 163 1.0 0.0 +es 09_hydro_pump 2 163 1.0 0.0 +es 01_solar 2 164 1.0 0.0 +es 02_wind_on 2 164 1.0 0.0 +es 03_wind_off 2 164 1.0 0.0 +es 04_res 2 164 1.0 0.0 +es 05_nuclear 2 164 1.0 0.0 +es 06_coal 2 164 1.0 0.0 +es 07_gas 2 164 1.0 0.0 +es 08_non-res 2 164 1.0 0.0 +es 09_hydro_pump 2 164 1.0 0.0 +es 01_solar 2 165 1.0 0.0 +es 02_wind_on 2 165 1.0 0.0 +es 03_wind_off 2 165 1.0 0.0 +es 04_res 2 165 1.0 0.0 +es 05_nuclear 2 165 1.0 0.0 +es 06_coal 2 165 1.0 0.0 +es 07_gas 2 165 1.0 0.0 +es 08_non-res 2 165 1.0 0.0 +es 09_hydro_pump 2 165 1.0 0.0 +es 01_solar 2 166 1.0 0.0 +es 02_wind_on 2 166 1.0 0.0 +es 03_wind_off 2 166 1.0 0.0 +es 04_res 2 166 1.0 0.0 +es 05_nuclear 2 166 1.0 0.0 +es 06_coal 2 166 1.0 0.0 +es 07_gas 2 166 1.0 0.0 +es 08_non-res 2 166 1.0 0.0 +es 09_hydro_pump 2 166 1.0 0.0 +es 01_solar 2 167 1.0 0.0 +es 02_wind_on 2 167 1.0 0.0 +es 03_wind_off 2 167 1.0 0.0 +es 04_res 2 167 1.0 0.0 +es 05_nuclear 2 167 1.0 0.0 +es 06_coal 2 167 1.0 0.0 +es 07_gas 2 167 1.0 0.0 +es 08_non-res 2 167 1.0 0.0 +es 09_hydro_pump 2 167 1.0 0.0 +es 01_solar 2 168 1.0 0.0 +es 02_wind_on 2 168 1.0 0.0 +es 03_wind_off 2 168 1.0 0.0 +es 04_res 2 168 1.0 0.0 +es 05_nuclear 2 168 1.0 0.0 +es 06_coal 2 168 1.0 0.0 +es 07_gas 2 168 1.0 0.0 +es 08_non-res 2 168 1.0 0.0 +es 09_hydro_pump 2 168 1.0 0.0 +es 01_solar 2 169 0.0 0.0 +es 02_wind_on 2 169 0.0 0.0 +es 03_wind_off 2 169 0.0 0.0 +es 04_res 2 169 0.0 0.0 +es 05_nuclear 2 169 0.0 0.0 +es 06_coal 2 169 0.0 0.0 +es 07_gas 2 169 0.0 0.0 +es 08_non-res 2 169 0.0 0.0 +es 09_hydro_pump 2 169 0.0 0.0 +es 01_solar 2 170 1.0 0.0 +es 02_wind_on 2 170 0.0 0.0 +es 03_wind_off 2 170 0.0 0.0 +es 04_res 2 170 0.0 0.0 +es 05_nuclear 2 170 0.0 0.0 +es 06_coal 2 170 0.0 0.0 +es 07_gas 2 170 0.0 0.0 +es 08_non-res 2 170 0.0 0.0 +es 09_hydro_pump 2 170 0.0 0.0 +es 01_solar 2 171 1.0 0.0 +es 02_wind_on 2 171 0.0 0.0 +es 03_wind_off 2 171 0.0 0.0 +es 04_res 2 171 0.0 0.0 +es 05_nuclear 2 171 0.0 0.0 +es 06_coal 2 171 0.0 0.0 +es 07_gas 2 171 0.0 0.0 +es 08_non-res 2 171 0.0 0.0 +es 09_hydro_pump 2 171 0.0 0.0 +es 01_solar 2 172 1.0 0.0 +es 02_wind_on 2 172 0.0 0.0 +es 03_wind_off 2 172 0.0 0.0 +es 04_res 2 172 0.0 0.0 +es 05_nuclear 2 172 0.0 0.0 +es 06_coal 2 172 0.0 0.0 +es 07_gas 2 172 0.0 0.0 +es 08_non-res 2 172 0.0 0.0 +es 09_hydro_pump 2 172 0.0 0.0 +es 01_solar 2 173 1.0 0.0 +es 02_wind_on 2 173 0.0 0.0 +es 03_wind_off 2 173 0.0 0.0 +es 04_res 2 173 0.0 0.0 +es 05_nuclear 2 173 0.0 0.0 +es 06_coal 2 173 0.0 0.0 +es 07_gas 2 173 0.0 0.0 +es 08_non-res 2 173 0.0 0.0 +es 09_hydro_pump 2 173 0.0 0.0 +es 01_solar 2 174 1.0 0.0 +es 02_wind_on 2 174 0.0 0.0 +es 03_wind_off 2 174 0.0 0.0 +es 04_res 2 174 0.0 0.0 +es 05_nuclear 2 174 0.0 0.0 +es 06_coal 2 174 0.0 0.0 +es 07_gas 2 174 0.0 0.0 +es 08_non-res 2 174 0.0 0.0 +es 09_hydro_pump 2 174 0.0 0.0 +es 01_solar 2 175 1.0 0.0 +es 02_wind_on 2 175 0.0 0.0 +es 03_wind_off 2 175 0.0 0.0 +es 04_res 2 175 0.0 0.0 +es 05_nuclear 2 175 0.0 0.0 +es 06_coal 2 175 0.0 0.0 +es 07_gas 2 175 0.0 0.0 +es 08_non-res 2 175 0.0 0.0 +es 09_hydro_pump 2 175 0.0 0.0 +es 01_solar 2 176 1.0 0.0 +es 02_wind_on 2 176 0.0 0.0 +es 03_wind_off 2 176 0.0 0.0 +es 04_res 2 176 0.0 0.0 +es 05_nuclear 2 176 0.0 0.0 +es 06_coal 2 176 0.0 0.0 +es 07_gas 2 176 0.0 0.0 +es 08_non-res 2 176 0.0 0.0 +es 09_hydro_pump 2 176 0.0 0.0 +es 01_solar 2 177 1.0 0.0 +es 02_wind_on 2 177 0.0 0.0 +es 03_wind_off 2 177 0.0 0.0 +es 04_res 2 177 0.0 0.0 +es 05_nuclear 2 177 0.0 0.0 +es 06_coal 2 177 0.0 0.0 +es 07_gas 2 177 0.0 0.0 +es 08_non-res 2 177 0.0 0.0 +es 09_hydro_pump 2 177 0.0 0.0 +es 01_solar 2 178 1.0 0.0 +es 02_wind_on 2 178 0.0 0.0 +es 03_wind_off 2 178 0.0 0.0 +es 04_res 2 178 0.0 0.0 +es 05_nuclear 2 178 0.0 0.0 +es 06_coal 2 178 0.0 0.0 +es 07_gas 2 178 0.0 0.0 +es 08_non-res 2 178 0.0 0.0 +es 09_hydro_pump 2 178 0.0 0.0 +es 01_solar 2 179 1.0 0.0 +es 02_wind_on 2 179 0.0 0.0 +es 03_wind_off 2 179 0.0 0.0 +es 04_res 2 179 0.0 0.0 +es 05_nuclear 2 179 0.0 0.0 +es 06_coal 2 179 0.0 0.0 +es 07_gas 2 179 0.0 0.0 +es 08_non-res 2 179 0.0 0.0 +es 09_hydro_pump 2 179 0.0 0.0 +es 01_solar 2 180 1.0 0.0 +es 02_wind_on 2 180 0.0 0.0 +es 03_wind_off 2 180 0.0 0.0 +es 04_res 2 180 0.0 0.0 +es 05_nuclear 2 180 0.0 0.0 +es 06_coal 2 180 0.0 0.0 +es 07_gas 2 180 0.0 0.0 +es 08_non-res 2 180 0.0 0.0 +es 09_hydro_pump 2 180 0.0 0.0 +es 01_solar 2 181 1.0 0.0 +es 02_wind_on 2 181 0.0 0.0 +es 03_wind_off 2 181 0.0 0.0 +es 04_res 2 181 0.0 0.0 +es 05_nuclear 2 181 0.0 0.0 +es 06_coal 2 181 0.0 0.0 +es 07_gas 2 181 0.0 0.0 +es 08_non-res 2 181 0.0 0.0 +es 09_hydro_pump 2 181 0.0 0.0 +es 01_solar 2 182 1.0 0.0 +es 02_wind_on 2 182 0.0 0.0 +es 03_wind_off 2 182 0.0 0.0 +es 04_res 2 182 0.0 0.0 +es 05_nuclear 2 182 0.0 0.0 +es 06_coal 2 182 0.0 0.0 +es 07_gas 2 182 0.0 0.0 +es 08_non-res 2 182 0.0 0.0 +es 09_hydro_pump 2 182 0.0 0.0 +es 01_solar 2 183 1.0 0.0 +es 02_wind_on 2 183 0.0 0.0 +es 03_wind_off 2 183 0.0 0.0 +es 04_res 2 183 0.0 0.0 +es 05_nuclear 2 183 0.0 0.0 +es 06_coal 2 183 0.0 0.0 +es 07_gas 2 183 0.0 0.0 +es 08_non-res 2 183 0.0 0.0 +es 09_hydro_pump 2 183 0.0 0.0 +es 01_solar 2 184 1.0 0.0 +es 02_wind_on 2 184 0.0 0.0 +es 03_wind_off 2 184 0.0 0.0 +es 04_res 2 184 0.0 0.0 +es 05_nuclear 2 184 0.0 0.0 +es 06_coal 2 184 0.0 0.0 +es 07_gas 2 184 0.0 0.0 +es 08_non-res 2 184 0.0 0.0 +es 09_hydro_pump 2 184 0.0 0.0 +es 01_solar 2 185 1.0 0.0 +es 02_wind_on 2 185 0.0 0.0 +es 03_wind_off 2 185 0.0 0.0 +es 04_res 2 185 0.0 0.0 +es 05_nuclear 2 185 0.0 0.0 +es 06_coal 2 185 0.0 0.0 +es 07_gas 2 185 0.0 0.0 +es 08_non-res 2 185 0.0 0.0 +es 09_hydro_pump 2 185 0.0 0.0 +es 01_solar 2 186 1.0 0.0 +es 02_wind_on 2 186 0.0 0.0 +es 03_wind_off 2 186 0.0 0.0 +es 04_res 2 186 0.0 0.0 +es 05_nuclear 2 186 0.0 0.0 +es 06_coal 2 186 0.0 0.0 +es 07_gas 2 186 0.0 0.0 +es 08_non-res 2 186 0.0 0.0 +es 09_hydro_pump 2 186 0.0 0.0 +es 01_solar 2 187 1.0 0.0 +es 02_wind_on 2 187 0.0 0.0 +es 03_wind_off 2 187 0.0 0.0 +es 04_res 2 187 0.0 0.0 +es 05_nuclear 2 187 0.0 0.0 +es 06_coal 2 187 0.0 0.0 +es 07_gas 2 187 0.0 0.0 +es 08_non-res 2 187 0.0 0.0 +es 09_hydro_pump 2 187 0.0 0.0 +es 01_solar 2 188 1.0 0.0 +es 02_wind_on 2 188 0.0 0.0 +es 03_wind_off 2 188 0.0 0.0 +es 04_res 2 188 0.0 0.0 +es 05_nuclear 2 188 0.0 0.0 +es 06_coal 2 188 0.0 0.0 +es 07_gas 2 188 0.0 0.0 +es 08_non-res 2 188 0.0 0.0 +es 09_hydro_pump 2 188 0.0 0.0 +es 01_solar 2 189 1.0 0.0 +es 02_wind_on 2 189 0.0 0.0 +es 03_wind_off 2 189 0.0 0.0 +es 04_res 2 189 0.0 0.0 +es 05_nuclear 2 189 0.0 0.0 +es 06_coal 2 189 0.0 0.0 +es 07_gas 2 189 0.0 0.0 +es 08_non-res 2 189 0.0 0.0 +es 09_hydro_pump 2 189 0.0 0.0 +es 01_solar 2 190 1.0 0.0 +es 02_wind_on 2 190 1.0 0.0 +es 03_wind_off 2 190 0.0 0.0 +es 04_res 2 190 0.0 0.0 +es 05_nuclear 2 190 0.0 0.0 +es 06_coal 2 190 0.0 0.0 +es 07_gas 2 190 0.0 0.0 +es 08_non-res 2 190 0.0 0.0 +es 09_hydro_pump 2 190 0.0 0.0 +es 01_solar 2 191 1.0 0.0 +es 02_wind_on 2 191 1.0 0.0 +es 03_wind_off 2 191 0.0 0.0 +es 04_res 2 191 0.0 0.0 +es 05_nuclear 2 191 0.0 0.0 +es 06_coal 2 191 0.0 0.0 +es 07_gas 2 191 0.0 0.0 +es 08_non-res 2 191 0.0 0.0 +es 09_hydro_pump 2 191 0.0 0.0 +es 01_solar 2 192 1.0 0.0 +es 02_wind_on 2 192 1.0 0.0 +es 03_wind_off 2 192 0.0 0.0 +es 04_res 2 192 0.0 0.0 +es 05_nuclear 2 192 0.0 0.0 +es 06_coal 2 192 0.0 0.0 +es 07_gas 2 192 0.0 0.0 +es 08_non-res 2 192 0.0 0.0 +es 09_hydro_pump 2 192 0.0 0.0 +es 01_solar 2 193 1.0 0.0 +es 02_wind_on 2 193 1.0 0.0 +es 03_wind_off 2 193 0.0 0.0 +es 04_res 2 193 0.0 0.0 +es 05_nuclear 2 193 0.0 0.0 +es 06_coal 2 193 0.0 0.0 +es 07_gas 2 193 0.0 0.0 +es 08_non-res 2 193 0.0 0.0 +es 09_hydro_pump 2 193 0.0 0.0 +es 01_solar 2 194 1.0 0.0 +es 02_wind_on 2 194 1.0 0.0 +es 03_wind_off 2 194 0.0 0.0 +es 04_res 2 194 0.0 0.0 +es 05_nuclear 2 194 0.0 0.0 +es 06_coal 2 194 0.0 0.0 +es 07_gas 2 194 0.0 0.0 +es 08_non-res 2 194 0.0 0.0 +es 09_hydro_pump 2 194 0.0 0.0 +es 01_solar 2 195 1.0 0.0 +es 02_wind_on 2 195 1.0 0.0 +es 03_wind_off 2 195 0.0 0.0 +es 04_res 2 195 0.0 0.0 +es 05_nuclear 2 195 0.0 0.0 +es 06_coal 2 195 0.0 0.0 +es 07_gas 2 195 0.0 0.0 +es 08_non-res 2 195 0.0 0.0 +es 09_hydro_pump 2 195 0.0 0.0 +es 01_solar 2 196 1.0 0.0 +es 02_wind_on 2 196 1.0 0.0 +es 03_wind_off 2 196 0.0 0.0 +es 04_res 2 196 0.0 0.0 +es 05_nuclear 2 196 0.0 0.0 +es 06_coal 2 196 0.0 0.0 +es 07_gas 2 196 0.0 0.0 +es 08_non-res 2 196 0.0 0.0 +es 09_hydro_pump 2 196 0.0 0.0 +es 01_solar 2 197 1.0 0.0 +es 02_wind_on 2 197 1.0 0.0 +es 03_wind_off 2 197 0.0 0.0 +es 04_res 2 197 0.0 0.0 +es 05_nuclear 2 197 0.0 0.0 +es 06_coal 2 197 0.0 0.0 +es 07_gas 2 197 0.0 0.0 +es 08_non-res 2 197 0.0 0.0 +es 09_hydro_pump 2 197 0.0 0.0 +es 01_solar 2 198 1.0 0.0 +es 02_wind_on 2 198 1.0 0.0 +es 03_wind_off 2 198 0.0 0.0 +es 04_res 2 198 0.0 0.0 +es 05_nuclear 2 198 0.0 0.0 +es 06_coal 2 198 0.0 0.0 +es 07_gas 2 198 0.0 0.0 +es 08_non-res 2 198 0.0 0.0 +es 09_hydro_pump 2 198 0.0 0.0 +es 01_solar 2 199 1.0 0.0 +es 02_wind_on 2 199 1.0 0.0 +es 03_wind_off 2 199 0.0 0.0 +es 04_res 2 199 0.0 0.0 +es 05_nuclear 2 199 0.0 0.0 +es 06_coal 2 199 0.0 0.0 +es 07_gas 2 199 0.0 0.0 +es 08_non-res 2 199 0.0 0.0 +es 09_hydro_pump 2 199 0.0 0.0 +es 01_solar 2 200 1.0 0.0 +es 02_wind_on 2 200 1.0 0.0 +es 03_wind_off 2 200 0.0 0.0 +es 04_res 2 200 0.0 0.0 +es 05_nuclear 2 200 0.0 0.0 +es 06_coal 2 200 0.0 0.0 +es 07_gas 2 200 0.0 0.0 +es 08_non-res 2 200 0.0 0.0 +es 09_hydro_pump 2 200 0.0 0.0 +es 01_solar 2 201 1.0 0.0 +es 02_wind_on 2 201 1.0 0.0 +es 03_wind_off 2 201 0.0 0.0 +es 04_res 2 201 0.0 0.0 +es 05_nuclear 2 201 0.0 0.0 +es 06_coal 2 201 0.0 0.0 +es 07_gas 2 201 0.0 0.0 +es 08_non-res 2 201 0.0 0.0 +es 09_hydro_pump 2 201 0.0 0.0 +es 01_solar 2 202 1.0 0.0 +es 02_wind_on 2 202 1.0 0.0 +es 03_wind_off 2 202 0.0 0.0 +es 04_res 2 202 0.0 0.0 +es 05_nuclear 2 202 0.0 0.0 +es 06_coal 2 202 0.0 0.0 +es 07_gas 2 202 0.0 0.0 +es 08_non-res 2 202 0.0 0.0 +es 09_hydro_pump 2 202 0.0 0.0 +es 01_solar 2 203 1.0 0.0 +es 02_wind_on 2 203 1.0 0.0 +es 03_wind_off 2 203 0.0 0.0 +es 04_res 2 203 0.0 0.0 +es 05_nuclear 2 203 0.0 0.0 +es 06_coal 2 203 0.0 0.0 +es 07_gas 2 203 0.0 0.0 +es 08_non-res 2 203 0.0 0.0 +es 09_hydro_pump 2 203 0.0 0.0 +es 01_solar 2 204 1.0 0.0 +es 02_wind_on 2 204 1.0 0.0 +es 03_wind_off 2 204 0.0 0.0 +es 04_res 2 204 0.0 0.0 +es 05_nuclear 2 204 0.0 0.0 +es 06_coal 2 204 0.0 0.0 +es 07_gas 2 204 0.0 0.0 +es 08_non-res 2 204 0.0 0.0 +es 09_hydro_pump 2 204 0.0 0.0 +es 01_solar 2 205 1.0 0.0 +es 02_wind_on 2 205 1.0 0.0 +es 03_wind_off 2 205 0.0 0.0 +es 04_res 2 205 0.0 0.0 +es 05_nuclear 2 205 0.0 0.0 +es 06_coal 2 205 0.0 0.0 +es 07_gas 2 205 0.0 0.0 +es 08_non-res 2 205 0.0 0.0 +es 09_hydro_pump 2 205 0.0 0.0 +es 01_solar 2 206 1.0 0.0 +es 02_wind_on 2 206 1.0 0.0 +es 03_wind_off 2 206 0.0 0.0 +es 04_res 2 206 0.0 0.0 +es 05_nuclear 2 206 0.0 0.0 +es 06_coal 2 206 0.0 0.0 +es 07_gas 2 206 0.0 0.0 +es 08_non-res 2 206 0.0 0.0 +es 09_hydro_pump 2 206 0.0 0.0 +es 01_solar 2 207 1.0 0.0 +es 02_wind_on 2 207 1.0 0.0 +es 03_wind_off 2 207 0.0 0.0 +es 04_res 2 207 0.0 0.0 +es 05_nuclear 2 207 0.0 0.0 +es 06_coal 2 207 0.0 0.0 +es 07_gas 2 207 0.0 0.0 +es 08_non-res 2 207 0.0 0.0 +es 09_hydro_pump 2 207 0.0 0.0 +es 01_solar 2 208 1.0 0.0 +es 02_wind_on 2 208 1.0 0.0 +es 03_wind_off 2 208 0.0 0.0 +es 04_res 2 208 0.0 0.0 +es 05_nuclear 2 208 0.0 0.0 +es 06_coal 2 208 0.0 0.0 +es 07_gas 2 208 0.0 0.0 +es 08_non-res 2 208 0.0 0.0 +es 09_hydro_pump 2 208 0.0 0.0 +es 01_solar 2 209 1.0 0.0 +es 02_wind_on 2 209 1.0 0.0 +es 03_wind_off 2 209 0.0 0.0 +es 04_res 2 209 0.0 0.0 +es 05_nuclear 2 209 0.0 0.0 +es 06_coal 2 209 0.0 0.0 +es 07_gas 2 209 0.0 0.0 +es 08_non-res 2 209 0.0 0.0 +es 09_hydro_pump 2 209 0.0 0.0 +es 01_solar 2 210 1.0 0.0 +es 02_wind_on 2 210 1.0 0.0 +es 03_wind_off 2 210 1.0 0.0 +es 04_res 2 210 0.0 0.0 +es 05_nuclear 2 210 0.0 0.0 +es 06_coal 2 210 0.0 0.0 +es 07_gas 2 210 0.0 0.0 +es 08_non-res 2 210 0.0 0.0 +es 09_hydro_pump 2 210 0.0 0.0 +es 01_solar 2 211 1.0 0.0 +es 02_wind_on 2 211 1.0 0.0 +es 03_wind_off 2 211 1.0 0.0 +es 04_res 2 211 0.0 0.0 +es 05_nuclear 2 211 0.0 0.0 +es 06_coal 2 211 0.0 0.0 +es 07_gas 2 211 0.0 0.0 +es 08_non-res 2 211 0.0 0.0 +es 09_hydro_pump 2 211 0.0 0.0 +es 01_solar 2 212 1.0 0.0 +es 02_wind_on 2 212 1.0 0.0 +es 03_wind_off 2 212 1.0 0.0 +es 04_res 2 212 0.0 0.0 +es 05_nuclear 2 212 0.0 0.0 +es 06_coal 2 212 0.0 0.0 +es 07_gas 2 212 0.0 0.0 +es 08_non-res 2 212 0.0 0.0 +es 09_hydro_pump 2 212 0.0 0.0 +es 01_solar 2 213 1.0 0.0 +es 02_wind_on 2 213 1.0 0.0 +es 03_wind_off 2 213 1.0 0.0 +es 04_res 2 213 0.0 0.0 +es 05_nuclear 2 213 0.0 0.0 +es 06_coal 2 213 0.0 0.0 +es 07_gas 2 213 0.0 0.0 +es 08_non-res 2 213 0.0 0.0 +es 09_hydro_pump 2 213 0.0 0.0 +es 01_solar 2 214 1.0 0.0 +es 02_wind_on 2 214 1.0 0.0 +es 03_wind_off 2 214 1.0 0.0 +es 04_res 2 214 0.0 0.0 +es 05_nuclear 2 214 0.0 0.0 +es 06_coal 2 214 0.0 0.0 +es 07_gas 2 214 0.0 0.0 +es 08_non-res 2 214 0.0 0.0 +es 09_hydro_pump 2 214 0.0 0.0 +es 01_solar 2 215 1.0 0.0 +es 02_wind_on 2 215 1.0 0.0 +es 03_wind_off 2 215 1.0 0.0 +es 04_res 2 215 0.0 0.0 +es 05_nuclear 2 215 0.0 0.0 +es 06_coal 2 215 0.0 0.0 +es 07_gas 2 215 0.0 0.0 +es 08_non-res 2 215 0.0 0.0 +es 09_hydro_pump 2 215 0.0 0.0 +es 01_solar 2 216 1.0 0.0 +es 02_wind_on 2 216 1.0 0.0 +es 03_wind_off 2 216 1.0 0.0 +es 04_res 2 216 0.0 0.0 +es 05_nuclear 2 216 0.0 0.0 +es 06_coal 2 216 0.0 0.0 +es 07_gas 2 216 0.0 0.0 +es 08_non-res 2 216 0.0 0.0 +es 09_hydro_pump 2 216 0.0 0.0 +es 01_solar 2 217 1.0 0.0 +es 02_wind_on 2 217 1.0 0.0 +es 03_wind_off 2 217 1.0 0.0 +es 04_res 2 217 0.0 0.0 +es 05_nuclear 2 217 0.0 0.0 +es 06_coal 2 217 0.0 0.0 +es 07_gas 2 217 0.0 0.0 +es 08_non-res 2 217 0.0 0.0 +es 09_hydro_pump 2 217 0.0 0.0 +es 01_solar 2 218 1.0 0.0 +es 02_wind_on 2 218 1.0 0.0 +es 03_wind_off 2 218 1.0 0.0 +es 04_res 2 218 0.0 0.0 +es 05_nuclear 2 218 0.0 0.0 +es 06_coal 2 218 0.0 0.0 +es 07_gas 2 218 0.0 0.0 +es 08_non-res 2 218 0.0 0.0 +es 09_hydro_pump 2 218 0.0 0.0 +es 01_solar 2 219 1.0 0.0 +es 02_wind_on 2 219 1.0 0.0 +es 03_wind_off 2 219 1.0 0.0 +es 04_res 2 219 0.0 0.0 +es 05_nuclear 2 219 0.0 0.0 +es 06_coal 2 219 0.0 0.0 +es 07_gas 2 219 0.0 0.0 +es 08_non-res 2 219 0.0 0.0 +es 09_hydro_pump 2 219 0.0 0.0 +es 01_solar 2 220 1.0 0.0 +es 02_wind_on 2 220 1.0 0.0 +es 03_wind_off 2 220 1.0 0.0 +es 04_res 2 220 0.0 0.0 +es 05_nuclear 2 220 0.0 0.0 +es 06_coal 2 220 0.0 0.0 +es 07_gas 2 220 0.0 0.0 +es 08_non-res 2 220 0.0 0.0 +es 09_hydro_pump 2 220 0.0 0.0 +es 01_solar 2 221 1.0 0.0 +es 02_wind_on 2 221 1.0 0.0 +es 03_wind_off 2 221 1.0 0.0 +es 04_res 2 221 0.0 0.0 +es 05_nuclear 2 221 0.0 0.0 +es 06_coal 2 221 0.0 0.0 +es 07_gas 2 221 0.0 0.0 +es 08_non-res 2 221 0.0 0.0 +es 09_hydro_pump 2 221 0.0 0.0 +es 01_solar 2 222 1.0 0.0 +es 02_wind_on 2 222 1.0 0.0 +es 03_wind_off 2 222 1.0 0.0 +es 04_res 2 222 0.0 0.0 +es 05_nuclear 2 222 0.0 0.0 +es 06_coal 2 222 0.0 0.0 +es 07_gas 2 222 0.0 0.0 +es 08_non-res 2 222 0.0 0.0 +es 09_hydro_pump 2 222 0.0 0.0 +es 01_solar 2 223 1.0 0.0 +es 02_wind_on 2 223 1.0 0.0 +es 03_wind_off 2 223 1.0 0.0 +es 04_res 2 223 0.0 0.0 +es 05_nuclear 2 223 0.0 0.0 +es 06_coal 2 223 0.0 0.0 +es 07_gas 2 223 0.0 0.0 +es 08_non-res 2 223 0.0 0.0 +es 09_hydro_pump 2 223 0.0 0.0 +es 01_solar 2 224 1.0 0.0 +es 02_wind_on 2 224 1.0 0.0 +es 03_wind_off 2 224 1.0 0.0 +es 04_res 2 224 0.0 0.0 +es 05_nuclear 2 224 0.0 0.0 +es 06_coal 2 224 0.0 0.0 +es 07_gas 2 224 0.0 0.0 +es 08_non-res 2 224 0.0 0.0 +es 09_hydro_pump 2 224 0.0 0.0 +es 01_solar 2 225 1.0 0.0 +es 02_wind_on 2 225 1.0 0.0 +es 03_wind_off 2 225 1.0 0.0 +es 04_res 2 225 0.0 0.0 +es 05_nuclear 2 225 0.0 0.0 +es 06_coal 2 225 0.0 0.0 +es 07_gas 2 225 0.0 0.0 +es 08_non-res 2 225 0.0 0.0 +es 09_hydro_pump 2 225 0.0 0.0 +es 01_solar 2 226 1.0 0.0 +es 02_wind_on 2 226 1.0 0.0 +es 03_wind_off 2 226 1.0 0.0 +es 04_res 2 226 0.0 0.0 +es 05_nuclear 2 226 0.0 0.0 +es 06_coal 2 226 0.0 0.0 +es 07_gas 2 226 0.0 0.0 +es 08_non-res 2 226 0.0 0.0 +es 09_hydro_pump 2 226 0.0 0.0 +es 01_solar 2 227 1.0 0.0 +es 02_wind_on 2 227 1.0 0.0 +es 03_wind_off 2 227 1.0 0.0 +es 04_res 2 227 0.0 0.0 +es 05_nuclear 2 227 0.0 0.0 +es 06_coal 2 227 0.0 0.0 +es 07_gas 2 227 0.0 0.0 +es 08_non-res 2 227 0.0 0.0 +es 09_hydro_pump 2 227 0.0 0.0 +es 01_solar 2 228 1.0 0.0 +es 02_wind_on 2 228 1.0 0.0 +es 03_wind_off 2 228 1.0 0.0 +es 04_res 2 228 0.0 0.0 +es 05_nuclear 2 228 0.0 0.0 +es 06_coal 2 228 0.0 0.0 +es 07_gas 2 228 0.0 0.0 +es 08_non-res 2 228 0.0 0.0 +es 09_hydro_pump 2 228 0.0 0.0 +es 01_solar 2 229 1.0 0.0 +es 02_wind_on 2 229 1.0 0.0 +es 03_wind_off 2 229 1.0 0.0 +es 04_res 2 229 0.0 0.0 +es 05_nuclear 2 229 0.0 0.0 +es 06_coal 2 229 0.0 0.0 +es 07_gas 2 229 0.0 0.0 +es 08_non-res 2 229 0.0 0.0 +es 09_hydro_pump 2 229 0.0 0.0 +es 01_solar 2 230 1.0 0.0 +es 02_wind_on 2 230 1.0 0.0 +es 03_wind_off 2 230 1.0 0.0 +es 04_res 2 230 1.0 0.0 +es 05_nuclear 2 230 0.0 0.0 +es 06_coal 2 230 0.0 0.0 +es 07_gas 2 230 0.0 0.0 +es 08_non-res 2 230 0.0 0.0 +es 09_hydro_pump 2 230 0.0 0.0 +es 01_solar 2 231 1.0 0.0 +es 02_wind_on 2 231 1.0 0.0 +es 03_wind_off 2 231 1.0 0.0 +es 04_res 2 231 1.0 0.0 +es 05_nuclear 2 231 0.0 0.0 +es 06_coal 2 231 0.0 0.0 +es 07_gas 2 231 0.0 0.0 +es 08_non-res 2 231 0.0 0.0 +es 09_hydro_pump 2 231 0.0 0.0 +es 01_solar 2 232 1.0 0.0 +es 02_wind_on 2 232 1.0 0.0 +es 03_wind_off 2 232 1.0 0.0 +es 04_res 2 232 1.0 0.0 +es 05_nuclear 2 232 0.0 0.0 +es 06_coal 2 232 0.0 0.0 +es 07_gas 2 232 0.0 0.0 +es 08_non-res 2 232 0.0 0.0 +es 09_hydro_pump 2 232 0.0 0.0 +es 01_solar 2 233 1.0 0.0 +es 02_wind_on 2 233 1.0 0.0 +es 03_wind_off 2 233 1.0 0.0 +es 04_res 2 233 1.0 0.0 +es 05_nuclear 2 233 0.0 0.0 +es 06_coal 2 233 0.0 0.0 +es 07_gas 2 233 0.0 0.0 +es 08_non-res 2 233 0.0 0.0 +es 09_hydro_pump 2 233 0.0 0.0 +es 01_solar 2 234 1.0 0.0 +es 02_wind_on 2 234 1.0 0.0 +es 03_wind_off 2 234 1.0 0.0 +es 04_res 2 234 1.0 0.0 +es 05_nuclear 2 234 0.0 0.0 +es 06_coal 2 234 0.0 0.0 +es 07_gas 2 234 0.0 0.0 +es 08_non-res 2 234 0.0 0.0 +es 09_hydro_pump 2 234 0.0 0.0 +es 01_solar 2 235 1.0 0.0 +es 02_wind_on 2 235 1.0 0.0 +es 03_wind_off 2 235 1.0 0.0 +es 04_res 2 235 1.0 0.0 +es 05_nuclear 2 235 0.0 0.0 +es 06_coal 2 235 0.0 0.0 +es 07_gas 2 235 0.0 0.0 +es 08_non-res 2 235 0.0 0.0 +es 09_hydro_pump 2 235 0.0 0.0 +es 01_solar 2 236 1.0 0.0 +es 02_wind_on 2 236 1.0 0.0 +es 03_wind_off 2 236 1.0 0.0 +es 04_res 2 236 1.0 0.0 +es 05_nuclear 2 236 0.0 0.0 +es 06_coal 2 236 0.0 0.0 +es 07_gas 2 236 0.0 0.0 +es 08_non-res 2 236 0.0 0.0 +es 09_hydro_pump 2 236 0.0 0.0 +es 01_solar 2 237 1.0 0.0 +es 02_wind_on 2 237 1.0 0.0 +es 03_wind_off 2 237 1.0 0.0 +es 04_res 2 237 1.0 0.0 +es 05_nuclear 2 237 0.0 0.0 +es 06_coal 2 237 0.0 0.0 +es 07_gas 2 237 0.0 0.0 +es 08_non-res 2 237 0.0 0.0 +es 09_hydro_pump 2 237 0.0 0.0 +es 01_solar 2 238 1.0 0.0 +es 02_wind_on 2 238 1.0 0.0 +es 03_wind_off 2 238 1.0 0.0 +es 04_res 2 238 1.0 0.0 +es 05_nuclear 2 238 0.0 0.0 +es 06_coal 2 238 0.0 0.0 +es 07_gas 2 238 0.0 0.0 +es 08_non-res 2 238 0.0 0.0 +es 09_hydro_pump 2 238 0.0 0.0 +es 01_solar 2 239 1.0 0.0 +es 02_wind_on 2 239 1.0 0.0 +es 03_wind_off 2 239 1.0 0.0 +es 04_res 2 239 1.0 0.0 +es 05_nuclear 2 239 0.0 0.0 +es 06_coal 2 239 0.0 0.0 +es 07_gas 2 239 0.0 0.0 +es 08_non-res 2 239 0.0 0.0 +es 09_hydro_pump 2 239 0.0 0.0 +es 01_solar 2 240 1.0 0.0 +es 02_wind_on 2 240 1.0 0.0 +es 03_wind_off 2 240 1.0 0.0 +es 04_res 2 240 1.0 0.0 +es 05_nuclear 2 240 0.0 0.0 +es 06_coal 2 240 0.0 0.0 +es 07_gas 2 240 0.0 0.0 +es 08_non-res 2 240 0.0 0.0 +es 09_hydro_pump 2 240 0.0 0.0 +es 01_solar 2 241 1.0 0.0 +es 02_wind_on 2 241 1.0 0.0 +es 03_wind_off 2 241 1.0 0.0 +es 04_res 2 241 1.0 0.0 +es 05_nuclear 2 241 0.0 0.0 +es 06_coal 2 241 0.0 0.0 +es 07_gas 2 241 0.0 0.0 +es 08_non-res 2 241 0.0 0.0 +es 09_hydro_pump 2 241 0.0 0.0 +es 01_solar 2 242 1.0 0.0 +es 02_wind_on 2 242 1.0 0.0 +es 03_wind_off 2 242 1.0 0.0 +es 04_res 2 242 1.0 0.0 +es 05_nuclear 2 242 0.0 0.0 +es 06_coal 2 242 0.0 0.0 +es 07_gas 2 242 0.0 0.0 +es 08_non-res 2 242 0.0 0.0 +es 09_hydro_pump 2 242 0.0 0.0 +es 01_solar 2 243 1.0 0.0 +es 02_wind_on 2 243 1.0 0.0 +es 03_wind_off 2 243 1.0 0.0 +es 04_res 2 243 1.0 0.0 +es 05_nuclear 2 243 0.0 0.0 +es 06_coal 2 243 0.0 0.0 +es 07_gas 2 243 0.0 0.0 +es 08_non-res 2 243 0.0 0.0 +es 09_hydro_pump 2 243 0.0 0.0 +es 01_solar 2 244 1.0 0.0 +es 02_wind_on 2 244 1.0 0.0 +es 03_wind_off 2 244 1.0 0.0 +es 04_res 2 244 1.0 0.0 +es 05_nuclear 2 244 0.0 0.0 +es 06_coal 2 244 0.0 0.0 +es 07_gas 2 244 0.0 0.0 +es 08_non-res 2 244 0.0 0.0 +es 09_hydro_pump 2 244 0.0 0.0 +es 01_solar 2 245 1.0 0.0 +es 02_wind_on 2 245 1.0 0.0 +es 03_wind_off 2 245 1.0 0.0 +es 04_res 2 245 1.0 0.0 +es 05_nuclear 2 245 0.0 0.0 +es 06_coal 2 245 0.0 0.0 +es 07_gas 2 245 0.0 0.0 +es 08_non-res 2 245 0.0 0.0 +es 09_hydro_pump 2 245 0.0 0.0 +es 01_solar 2 246 1.0 0.0 +es 02_wind_on 2 246 1.0 0.0 +es 03_wind_off 2 246 1.0 0.0 +es 04_res 2 246 1.0 0.0 +es 05_nuclear 2 246 0.0 0.0 +es 06_coal 2 246 0.0 0.0 +es 07_gas 2 246 0.0 0.0 +es 08_non-res 2 246 0.0 0.0 +es 09_hydro_pump 2 246 0.0 0.0 +es 01_solar 2 247 1.0 0.0 +es 02_wind_on 2 247 1.0 0.0 +es 03_wind_off 2 247 1.0 0.0 +es 04_res 2 247 1.0 0.0 +es 05_nuclear 2 247 0.0 0.0 +es 06_coal 2 247 0.0 0.0 +es 07_gas 2 247 0.0 0.0 +es 08_non-res 2 247 0.0 0.0 +es 09_hydro_pump 2 247 0.0 0.0 +es 01_solar 2 248 1.0 0.0 +es 02_wind_on 2 248 1.0 0.0 +es 03_wind_off 2 248 1.0 0.0 +es 04_res 2 248 1.0 0.0 +es 05_nuclear 2 248 0.0 0.0 +es 06_coal 2 248 0.0 0.0 +es 07_gas 2 248 0.0 0.0 +es 08_non-res 2 248 0.0 0.0 +es 09_hydro_pump 2 248 0.0 0.0 +es 01_solar 2 249 1.0 0.0 +es 02_wind_on 2 249 1.0 0.0 +es 03_wind_off 2 249 1.0 0.0 +es 04_res 2 249 1.0 0.0 +es 05_nuclear 2 249 0.0 0.0 +es 06_coal 2 249 0.0 0.0 +es 07_gas 2 249 0.0 0.0 +es 08_non-res 2 249 0.0 0.0 +es 09_hydro_pump 2 249 0.0 0.0 +es 01_solar 2 250 1.0 0.0 +es 02_wind_on 2 250 1.0 0.0 +es 03_wind_off 2 250 1.0 0.0 +es 04_res 2 250 1.0 0.0 +es 05_nuclear 2 250 1.0 0.0 +es 06_coal 2 250 0.0 0.0 +es 07_gas 2 250 0.0 0.0 +es 08_non-res 2 250 0.0 0.0 +es 09_hydro_pump 2 250 0.0 0.0 +es 01_solar 2 251 1.0 0.0 +es 02_wind_on 2 251 1.0 0.0 +es 03_wind_off 2 251 1.0 0.0 +es 04_res 2 251 1.0 0.0 +es 05_nuclear 2 251 1.0 0.0 +es 06_coal 2 251 0.0 0.0 +es 07_gas 2 251 0.0 0.0 +es 08_non-res 2 251 0.0 0.0 +es 09_hydro_pump 2 251 0.0 0.0 +es 01_solar 2 252 1.0 0.0 +es 02_wind_on 2 252 1.0 0.0 +es 03_wind_off 2 252 1.0 0.0 +es 04_res 2 252 1.0 0.0 +es 05_nuclear 2 252 1.0 0.0 +es 06_coal 2 252 0.0 0.0 +es 07_gas 2 252 0.0 0.0 +es 08_non-res 2 252 0.0 0.0 +es 09_hydro_pump 2 252 0.0 0.0 +es 01_solar 2 253 1.0 0.0 +es 02_wind_on 2 253 1.0 0.0 +es 03_wind_off 2 253 1.0 0.0 +es 04_res 2 253 1.0 0.0 +es 05_nuclear 2 253 1.0 0.0 +es 06_coal 2 253 0.0 0.0 +es 07_gas 2 253 0.0 0.0 +es 08_non-res 2 253 0.0 0.0 +es 09_hydro_pump 2 253 0.0 0.0 +es 01_solar 2 254 1.0 0.0 +es 02_wind_on 2 254 1.0 0.0 +es 03_wind_off 2 254 1.0 0.0 +es 04_res 2 254 1.0 0.0 +es 05_nuclear 2 254 1.0 0.0 +es 06_coal 2 254 0.0 0.0 +es 07_gas 2 254 0.0 0.0 +es 08_non-res 2 254 0.0 0.0 +es 09_hydro_pump 2 254 0.0 0.0 +es 01_solar 2 255 1.0 0.0 +es 02_wind_on 2 255 1.0 0.0 +es 03_wind_off 2 255 1.0 0.0 +es 04_res 2 255 1.0 0.0 +es 05_nuclear 2 255 1.0 0.0 +es 06_coal 2 255 0.0 0.0 +es 07_gas 2 255 0.0 0.0 +es 08_non-res 2 255 0.0 0.0 +es 09_hydro_pump 2 255 0.0 0.0 +es 01_solar 2 256 1.0 0.0 +es 02_wind_on 2 256 1.0 0.0 +es 03_wind_off 2 256 1.0 0.0 +es 04_res 2 256 1.0 0.0 +es 05_nuclear 2 256 1.0 0.0 +es 06_coal 2 256 0.0 0.0 +es 07_gas 2 256 0.0 0.0 +es 08_non-res 2 256 0.0 0.0 +es 09_hydro_pump 2 256 0.0 0.0 +es 01_solar 2 257 1.0 0.0 +es 02_wind_on 2 257 1.0 0.0 +es 03_wind_off 2 257 1.0 0.0 +es 04_res 2 257 1.0 0.0 +es 05_nuclear 2 257 1.0 0.0 +es 06_coal 2 257 0.0 0.0 +es 07_gas 2 257 0.0 0.0 +es 08_non-res 2 257 0.0 0.0 +es 09_hydro_pump 2 257 0.0 0.0 +es 01_solar 2 258 1.0 0.0 +es 02_wind_on 2 258 1.0 0.0 +es 03_wind_off 2 258 1.0 0.0 +es 04_res 2 258 1.0 0.0 +es 05_nuclear 2 258 1.0 0.0 +es 06_coal 2 258 0.0 0.0 +es 07_gas 2 258 0.0 0.0 +es 08_non-res 2 258 0.0 0.0 +es 09_hydro_pump 2 258 0.0 0.0 +es 01_solar 2 259 1.0 0.0 +es 02_wind_on 2 259 1.0 0.0 +es 03_wind_off 2 259 1.0 0.0 +es 04_res 2 259 1.0 0.0 +es 05_nuclear 2 259 1.0 0.0 +es 06_coal 2 259 0.0 0.0 +es 07_gas 2 259 0.0 0.0 +es 08_non-res 2 259 0.0 0.0 +es 09_hydro_pump 2 259 0.0 0.0 +es 01_solar 2 260 1.0 0.0 +es 02_wind_on 2 260 1.0 0.0 +es 03_wind_off 2 260 1.0 0.0 +es 04_res 2 260 1.0 0.0 +es 05_nuclear 2 260 1.0 0.0 +es 06_coal 2 260 0.0 0.0 +es 07_gas 2 260 0.0 0.0 +es 08_non-res 2 260 0.0 0.0 +es 09_hydro_pump 2 260 0.0 0.0 +es 01_solar 2 261 1.0 0.0 +es 02_wind_on 2 261 1.0 0.0 +es 03_wind_off 2 261 1.0 0.0 +es 04_res 2 261 1.0 0.0 +es 05_nuclear 2 261 1.0 0.0 +es 06_coal 2 261 0.0 0.0 +es 07_gas 2 261 0.0 0.0 +es 08_non-res 2 261 0.0 0.0 +es 09_hydro_pump 2 261 0.0 0.0 +es 01_solar 2 262 1.0 0.0 +es 02_wind_on 2 262 1.0 0.0 +es 03_wind_off 2 262 1.0 0.0 +es 04_res 2 262 1.0 0.0 +es 05_nuclear 2 262 1.0 0.0 +es 06_coal 2 262 0.0 0.0 +es 07_gas 2 262 0.0 0.0 +es 08_non-res 2 262 0.0 0.0 +es 09_hydro_pump 2 262 0.0 0.0 +es 01_solar 2 263 1.0 0.0 +es 02_wind_on 2 263 1.0 0.0 +es 03_wind_off 2 263 1.0 0.0 +es 04_res 2 263 1.0 0.0 +es 05_nuclear 2 263 1.0 0.0 +es 06_coal 2 263 0.0 0.0 +es 07_gas 2 263 0.0 0.0 +es 08_non-res 2 263 0.0 0.0 +es 09_hydro_pump 2 263 0.0 0.0 +es 01_solar 2 264 1.0 0.0 +es 02_wind_on 2 264 1.0 0.0 +es 03_wind_off 2 264 1.0 0.0 +es 04_res 2 264 1.0 0.0 +es 05_nuclear 2 264 1.0 0.0 +es 06_coal 2 264 0.0 0.0 +es 07_gas 2 264 0.0 0.0 +es 08_non-res 2 264 0.0 0.0 +es 09_hydro_pump 2 264 0.0 0.0 +es 01_solar 2 265 1.0 0.0 +es 02_wind_on 2 265 1.0 0.0 +es 03_wind_off 2 265 1.0 0.0 +es 04_res 2 265 1.0 0.0 +es 05_nuclear 2 265 1.0 0.0 +es 06_coal 2 265 0.0 0.0 +es 07_gas 2 265 0.0 0.0 +es 08_non-res 2 265 0.0 0.0 +es 09_hydro_pump 2 265 0.0 0.0 +es 01_solar 2 266 1.0 0.0 +es 02_wind_on 2 266 1.0 0.0 +es 03_wind_off 2 266 1.0 0.0 +es 04_res 2 266 1.0 0.0 +es 05_nuclear 2 266 1.0 0.0 +es 06_coal 2 266 0.0 0.0 +es 07_gas 2 266 0.0 0.0 +es 08_non-res 2 266 0.0 0.0 +es 09_hydro_pump 2 266 0.0 0.0 +es 01_solar 2 267 1.0 0.0 +es 02_wind_on 2 267 1.0 0.0 +es 03_wind_off 2 267 1.0 0.0 +es 04_res 2 267 1.0 0.0 +es 05_nuclear 2 267 1.0 0.0 +es 06_coal 2 267 0.0 0.0 +es 07_gas 2 267 0.0 0.0 +es 08_non-res 2 267 0.0 0.0 +es 09_hydro_pump 2 267 0.0 0.0 +es 01_solar 2 268 1.0 0.0 +es 02_wind_on 2 268 1.0 0.0 +es 03_wind_off 2 268 1.0 0.0 +es 04_res 2 268 1.0 0.0 +es 05_nuclear 2 268 1.0 0.0 +es 06_coal 2 268 0.0 0.0 +es 07_gas 2 268 0.0 0.0 +es 08_non-res 2 268 0.0 0.0 +es 09_hydro_pump 2 268 0.0 0.0 +es 01_solar 2 269 1.0 0.0 +es 02_wind_on 2 269 1.0 0.0 +es 03_wind_off 2 269 1.0 0.0 +es 04_res 2 269 1.0 0.0 +es 05_nuclear 2 269 1.0 0.0 +es 06_coal 2 269 0.0 0.0 +es 07_gas 2 269 0.0 0.0 +es 08_non-res 2 269 0.0 0.0 +es 09_hydro_pump 2 269 0.0 0.0 +es 01_solar 2 270 1.0 0.0 +es 02_wind_on 2 270 1.0 0.0 +es 03_wind_off 2 270 1.0 0.0 +es 04_res 2 270 1.0 0.0 +es 05_nuclear 2 270 1.0 0.0 +es 06_coal 2 270 1.0 0.0 +es 07_gas 2 270 0.0 0.0 +es 08_non-res 2 270 0.0 0.0 +es 09_hydro_pump 2 270 0.0 0.0 +es 01_solar 2 271 1.0 0.0 +es 02_wind_on 2 271 1.0 0.0 +es 03_wind_off 2 271 1.0 0.0 +es 04_res 2 271 1.0 0.0 +es 05_nuclear 2 271 1.0 0.0 +es 06_coal 2 271 1.0 0.0 +es 07_gas 2 271 0.0 0.0 +es 08_non-res 2 271 0.0 0.0 +es 09_hydro_pump 2 271 0.0 0.0 +es 01_solar 2 272 1.0 0.0 +es 02_wind_on 2 272 1.0 0.0 +es 03_wind_off 2 272 1.0 0.0 +es 04_res 2 272 1.0 0.0 +es 05_nuclear 2 272 1.0 0.0 +es 06_coal 2 272 1.0 0.0 +es 07_gas 2 272 0.0 0.0 +es 08_non-res 2 272 0.0 0.0 +es 09_hydro_pump 2 272 0.0 0.0 +es 01_solar 2 273 1.0 0.0 +es 02_wind_on 2 273 1.0 0.0 +es 03_wind_off 2 273 1.0 0.0 +es 04_res 2 273 1.0 0.0 +es 05_nuclear 2 273 1.0 0.0 +es 06_coal 2 273 1.0 0.0 +es 07_gas 2 273 0.0 0.0 +es 08_non-res 2 273 0.0 0.0 +es 09_hydro_pump 2 273 0.0 0.0 +es 01_solar 2 274 1.0 0.0 +es 02_wind_on 2 274 1.0 0.0 +es 03_wind_off 2 274 1.0 0.0 +es 04_res 2 274 1.0 0.0 +es 05_nuclear 2 274 1.0 0.0 +es 06_coal 2 274 1.0 0.0 +es 07_gas 2 274 0.0 0.0 +es 08_non-res 2 274 0.0 0.0 +es 09_hydro_pump 2 274 0.0 0.0 +es 01_solar 2 275 1.0 0.0 +es 02_wind_on 2 275 1.0 0.0 +es 03_wind_off 2 275 1.0 0.0 +es 04_res 2 275 1.0 0.0 +es 05_nuclear 2 275 1.0 0.0 +es 06_coal 2 275 1.0 0.0 +es 07_gas 2 275 0.0 0.0 +es 08_non-res 2 275 0.0 0.0 +es 09_hydro_pump 2 275 0.0 0.0 +es 01_solar 2 276 1.0 0.0 +es 02_wind_on 2 276 1.0 0.0 +es 03_wind_off 2 276 1.0 0.0 +es 04_res 2 276 1.0 0.0 +es 05_nuclear 2 276 1.0 0.0 +es 06_coal 2 276 1.0 0.0 +es 07_gas 2 276 0.0 0.0 +es 08_non-res 2 276 0.0 0.0 +es 09_hydro_pump 2 276 0.0 0.0 +es 01_solar 2 277 1.0 0.0 +es 02_wind_on 2 277 1.0 0.0 +es 03_wind_off 2 277 1.0 0.0 +es 04_res 2 277 1.0 0.0 +es 05_nuclear 2 277 1.0 0.0 +es 06_coal 2 277 1.0 0.0 +es 07_gas 2 277 0.0 0.0 +es 08_non-res 2 277 0.0 0.0 +es 09_hydro_pump 2 277 0.0 0.0 +es 01_solar 2 278 1.0 0.0 +es 02_wind_on 2 278 1.0 0.0 +es 03_wind_off 2 278 1.0 0.0 +es 04_res 2 278 1.0 0.0 +es 05_nuclear 2 278 1.0 0.0 +es 06_coal 2 278 1.0 0.0 +es 07_gas 2 278 0.0 0.0 +es 08_non-res 2 278 0.0 0.0 +es 09_hydro_pump 2 278 0.0 0.0 +es 01_solar 2 279 1.0 0.0 +es 02_wind_on 2 279 1.0 0.0 +es 03_wind_off 2 279 1.0 0.0 +es 04_res 2 279 1.0 0.0 +es 05_nuclear 2 279 1.0 0.0 +es 06_coal 2 279 1.0 0.0 +es 07_gas 2 279 0.0 0.0 +es 08_non-res 2 279 0.0 0.0 +es 09_hydro_pump 2 279 0.0 0.0 +es 01_solar 2 280 1.0 0.0 +es 02_wind_on 2 280 1.0 0.0 +es 03_wind_off 2 280 1.0 0.0 +es 04_res 2 280 1.0 0.0 +es 05_nuclear 2 280 1.0 0.0 +es 06_coal 2 280 1.0 0.0 +es 07_gas 2 280 0.0 0.0 +es 08_non-res 2 280 0.0 0.0 +es 09_hydro_pump 2 280 0.0 0.0 +es 01_solar 2 281 1.0 0.0 +es 02_wind_on 2 281 1.0 0.0 +es 03_wind_off 2 281 1.0 0.0 +es 04_res 2 281 1.0 0.0 +es 05_nuclear 2 281 1.0 0.0 +es 06_coal 2 281 1.0 0.0 +es 07_gas 2 281 0.0 0.0 +es 08_non-res 2 281 0.0 0.0 +es 09_hydro_pump 2 281 0.0 0.0 +es 01_solar 2 282 1.0 0.0 +es 02_wind_on 2 282 1.0 0.0 +es 03_wind_off 2 282 1.0 0.0 +es 04_res 2 282 1.0 0.0 +es 05_nuclear 2 282 1.0 0.0 +es 06_coal 2 282 1.0 0.0 +es 07_gas 2 282 0.0 0.0 +es 08_non-res 2 282 0.0 0.0 +es 09_hydro_pump 2 282 0.0 0.0 +es 01_solar 2 283 1.0 0.0 +es 02_wind_on 2 283 1.0 0.0 +es 03_wind_off 2 283 1.0 0.0 +es 04_res 2 283 1.0 0.0 +es 05_nuclear 2 283 1.0 0.0 +es 06_coal 2 283 1.0 0.0 +es 07_gas 2 283 0.0 0.0 +es 08_non-res 2 283 0.0 0.0 +es 09_hydro_pump 2 283 0.0 0.0 +es 01_solar 2 284 1.0 0.0 +es 02_wind_on 2 284 1.0 0.0 +es 03_wind_off 2 284 1.0 0.0 +es 04_res 2 284 1.0 0.0 +es 05_nuclear 2 284 1.0 0.0 +es 06_coal 2 284 1.0 0.0 +es 07_gas 2 284 0.0 0.0 +es 08_non-res 2 284 0.0 0.0 +es 09_hydro_pump 2 284 0.0 0.0 +es 01_solar 2 285 1.0 0.0 +es 02_wind_on 2 285 1.0 0.0 +es 03_wind_off 2 285 1.0 0.0 +es 04_res 2 285 1.0 0.0 +es 05_nuclear 2 285 1.0 0.0 +es 06_coal 2 285 1.0 0.0 +es 07_gas 2 285 0.0 0.0 +es 08_non-res 2 285 0.0 0.0 +es 09_hydro_pump 2 285 0.0 0.0 +es 01_solar 2 286 1.0 0.0 +es 02_wind_on 2 286 1.0 0.0 +es 03_wind_off 2 286 1.0 0.0 +es 04_res 2 286 1.0 0.0 +es 05_nuclear 2 286 1.0 0.0 +es 06_coal 2 286 1.0 0.0 +es 07_gas 2 286 0.0 0.0 +es 08_non-res 2 286 0.0 0.0 +es 09_hydro_pump 2 286 0.0 0.0 +es 01_solar 2 287 1.0 0.0 +es 02_wind_on 2 287 1.0 0.0 +es 03_wind_off 2 287 1.0 0.0 +es 04_res 2 287 1.0 0.0 +es 05_nuclear 2 287 1.0 0.0 +es 06_coal 2 287 1.0 0.0 +es 07_gas 2 287 0.0 0.0 +es 08_non-res 2 287 0.0 0.0 +es 09_hydro_pump 2 287 0.0 0.0 +es 01_solar 2 288 1.0 0.0 +es 02_wind_on 2 288 1.0 0.0 +es 03_wind_off 2 288 1.0 0.0 +es 04_res 2 288 1.0 0.0 +es 05_nuclear 2 288 1.0 0.0 +es 06_coal 2 288 1.0 0.0 +es 07_gas 2 288 0.0 0.0 +es 08_non-res 2 288 0.0 0.0 +es 09_hydro_pump 2 288 0.0 0.0 +es 01_solar 2 289 1.0 0.0 +es 02_wind_on 2 289 1.0 0.0 +es 03_wind_off 2 289 1.0 0.0 +es 04_res 2 289 1.0 0.0 +es 05_nuclear 2 289 1.0 0.0 +es 06_coal 2 289 1.0 0.0 +es 07_gas 2 289 0.0 0.0 +es 08_non-res 2 289 0.0 0.0 +es 09_hydro_pump 2 289 0.0 0.0 +es 01_solar 2 290 1.0 0.0 +es 02_wind_on 2 290 1.0 0.0 +es 03_wind_off 2 290 1.0 0.0 +es 04_res 2 290 1.0 0.0 +es 05_nuclear 2 290 1.0 0.0 +es 06_coal 2 290 1.0 0.0 +es 07_gas 2 290 1.0 0.0 +es 08_non-res 2 290 0.0 0.0 +es 09_hydro_pump 2 290 0.0 0.0 +es 01_solar 2 291 1.0 0.0 +es 02_wind_on 2 291 1.0 0.0 +es 03_wind_off 2 291 1.0 0.0 +es 04_res 2 291 1.0 0.0 +es 05_nuclear 2 291 1.0 0.0 +es 06_coal 2 291 1.0 0.0 +es 07_gas 2 291 1.0 0.0 +es 08_non-res 2 291 0.0 0.0 +es 09_hydro_pump 2 291 0.0 0.0 +es 01_solar 2 292 1.0 0.0 +es 02_wind_on 2 292 1.0 0.0 +es 03_wind_off 2 292 1.0 0.0 +es 04_res 2 292 1.0 0.0 +es 05_nuclear 2 292 1.0 0.0 +es 06_coal 2 292 1.0 0.0 +es 07_gas 2 292 1.0 0.0 +es 08_non-res 2 292 0.0 0.0 +es 09_hydro_pump 2 292 0.0 0.0 +es 01_solar 2 293 1.0 0.0 +es 02_wind_on 2 293 1.0 0.0 +es 03_wind_off 2 293 1.0 0.0 +es 04_res 2 293 1.0 0.0 +es 05_nuclear 2 293 1.0 0.0 +es 06_coal 2 293 1.0 0.0 +es 07_gas 2 293 1.0 0.0 +es 08_non-res 2 293 0.0 0.0 +es 09_hydro_pump 2 293 0.0 0.0 +es 01_solar 2 294 1.0 0.0 +es 02_wind_on 2 294 1.0 0.0 +es 03_wind_off 2 294 1.0 0.0 +es 04_res 2 294 1.0 0.0 +es 05_nuclear 2 294 1.0 0.0 +es 06_coal 2 294 1.0 0.0 +es 07_gas 2 294 1.0 0.0 +es 08_non-res 2 294 0.0 0.0 +es 09_hydro_pump 2 294 0.0 0.0 +es 01_solar 2 295 1.0 0.0 +es 02_wind_on 2 295 1.0 0.0 +es 03_wind_off 2 295 1.0 0.0 +es 04_res 2 295 1.0 0.0 +es 05_nuclear 2 295 1.0 0.0 +es 06_coal 2 295 1.0 0.0 +es 07_gas 2 295 1.0 0.0 +es 08_non-res 2 295 0.0 0.0 +es 09_hydro_pump 2 295 0.0 0.0 +es 01_solar 2 296 1.0 0.0 +es 02_wind_on 2 296 1.0 0.0 +es 03_wind_off 2 296 1.0 0.0 +es 04_res 2 296 1.0 0.0 +es 05_nuclear 2 296 1.0 0.0 +es 06_coal 2 296 1.0 0.0 +es 07_gas 2 296 1.0 0.0 +es 08_non-res 2 296 0.0 0.0 +es 09_hydro_pump 2 296 0.0 0.0 +es 01_solar 2 297 1.0 0.0 +es 02_wind_on 2 297 1.0 0.0 +es 03_wind_off 2 297 1.0 0.0 +es 04_res 2 297 1.0 0.0 +es 05_nuclear 2 297 1.0 0.0 +es 06_coal 2 297 1.0 0.0 +es 07_gas 2 297 1.0 0.0 +es 08_non-res 2 297 0.0 0.0 +es 09_hydro_pump 2 297 0.0 0.0 +es 01_solar 2 298 1.0 0.0 +es 02_wind_on 2 298 1.0 0.0 +es 03_wind_off 2 298 1.0 0.0 +es 04_res 2 298 1.0 0.0 +es 05_nuclear 2 298 1.0 0.0 +es 06_coal 2 298 1.0 0.0 +es 07_gas 2 298 1.0 0.0 +es 08_non-res 2 298 0.0 0.0 +es 09_hydro_pump 2 298 0.0 0.0 +es 01_solar 2 299 1.0 0.0 +es 02_wind_on 2 299 1.0 0.0 +es 03_wind_off 2 299 1.0 0.0 +es 04_res 2 299 1.0 0.0 +es 05_nuclear 2 299 1.0 0.0 +es 06_coal 2 299 1.0 0.0 +es 07_gas 2 299 1.0 0.0 +es 08_non-res 2 299 0.0 0.0 +es 09_hydro_pump 2 299 0.0 0.0 +es 01_solar 2 300 1.0 0.0 +es 02_wind_on 2 300 1.0 0.0 +es 03_wind_off 2 300 1.0 0.0 +es 04_res 2 300 1.0 0.0 +es 05_nuclear 2 300 1.0 0.0 +es 06_coal 2 300 1.0 0.0 +es 07_gas 2 300 1.0 0.0 +es 08_non-res 2 300 0.0 0.0 +es 09_hydro_pump 2 300 0.0 0.0 +es 01_solar 2 301 1.0 0.0 +es 02_wind_on 2 301 1.0 0.0 +es 03_wind_off 2 301 1.0 0.0 +es 04_res 2 301 1.0 0.0 +es 05_nuclear 2 301 1.0 0.0 +es 06_coal 2 301 1.0 0.0 +es 07_gas 2 301 1.0 0.0 +es 08_non-res 2 301 0.0 0.0 +es 09_hydro_pump 2 301 0.0 0.0 +es 01_solar 2 302 1.0 0.0 +es 02_wind_on 2 302 1.0 0.0 +es 03_wind_off 2 302 1.0 0.0 +es 04_res 2 302 1.0 0.0 +es 05_nuclear 2 302 1.0 0.0 +es 06_coal 2 302 1.0 0.0 +es 07_gas 2 302 1.0 0.0 +es 08_non-res 2 302 0.0 0.0 +es 09_hydro_pump 2 302 0.0 0.0 +es 01_solar 2 303 1.0 0.0 +es 02_wind_on 2 303 1.0 0.0 +es 03_wind_off 2 303 1.0 0.0 +es 04_res 2 303 1.0 0.0 +es 05_nuclear 2 303 1.0 0.0 +es 06_coal 2 303 1.0 0.0 +es 07_gas 2 303 1.0 0.0 +es 08_non-res 2 303 0.0 0.0 +es 09_hydro_pump 2 303 0.0 0.0 +es 01_solar 2 304 1.0 0.0 +es 02_wind_on 2 304 1.0 0.0 +es 03_wind_off 2 304 1.0 0.0 +es 04_res 2 304 1.0 0.0 +es 05_nuclear 2 304 1.0 0.0 +es 06_coal 2 304 1.0 0.0 +es 07_gas 2 304 1.0 0.0 +es 08_non-res 2 304 0.0 0.0 +es 09_hydro_pump 2 304 0.0 0.0 +es 01_solar 2 305 1.0 0.0 +es 02_wind_on 2 305 1.0 0.0 +es 03_wind_off 2 305 1.0 0.0 +es 04_res 2 305 1.0 0.0 +es 05_nuclear 2 305 1.0 0.0 +es 06_coal 2 305 1.0 0.0 +es 07_gas 2 305 1.0 0.0 +es 08_non-res 2 305 0.0 0.0 +es 09_hydro_pump 2 305 0.0 0.0 +es 01_solar 2 306 1.0 0.0 +es 02_wind_on 2 306 1.0 0.0 +es 03_wind_off 2 306 1.0 0.0 +es 04_res 2 306 1.0 0.0 +es 05_nuclear 2 306 1.0 0.0 +es 06_coal 2 306 1.0 0.0 +es 07_gas 2 306 1.0 0.0 +es 08_non-res 2 306 0.0 0.0 +es 09_hydro_pump 2 306 0.0 0.0 +es 01_solar 2 307 1.0 0.0 +es 02_wind_on 2 307 1.0 0.0 +es 03_wind_off 2 307 1.0 0.0 +es 04_res 2 307 1.0 0.0 +es 05_nuclear 2 307 1.0 0.0 +es 06_coal 2 307 1.0 0.0 +es 07_gas 2 307 1.0 0.0 +es 08_non-res 2 307 0.0 0.0 +es 09_hydro_pump 2 307 0.0 0.0 +es 01_solar 2 308 1.0 0.0 +es 02_wind_on 2 308 1.0 0.0 +es 03_wind_off 2 308 1.0 0.0 +es 04_res 2 308 1.0 0.0 +es 05_nuclear 2 308 1.0 0.0 +es 06_coal 2 308 1.0 0.0 +es 07_gas 2 308 1.0 0.0 +es 08_non-res 2 308 0.0 0.0 +es 09_hydro_pump 2 308 0.0 0.0 +es 01_solar 2 309 1.0 0.0 +es 02_wind_on 2 309 1.0 0.0 +es 03_wind_off 2 309 1.0 0.0 +es 04_res 2 309 1.0 0.0 +es 05_nuclear 2 309 1.0 0.0 +es 06_coal 2 309 1.0 0.0 +es 07_gas 2 309 1.0 0.0 +es 08_non-res 2 309 0.0 0.0 +es 09_hydro_pump 2 309 0.0 0.0 +es 01_solar 2 310 1.0 0.0 +es 02_wind_on 2 310 1.0 0.0 +es 03_wind_off 2 310 1.0 0.0 +es 04_res 2 310 1.0 0.0 +es 05_nuclear 2 310 1.0 0.0 +es 06_coal 2 310 1.0 0.0 +es 07_gas 2 310 1.0 0.0 +es 08_non-res 2 310 1.0 0.0 +es 09_hydro_pump 2 310 0.0 0.0 +es 01_solar 2 311 1.0 0.0 +es 02_wind_on 2 311 1.0 0.0 +es 03_wind_off 2 311 1.0 0.0 +es 04_res 2 311 1.0 0.0 +es 05_nuclear 2 311 1.0 0.0 +es 06_coal 2 311 1.0 0.0 +es 07_gas 2 311 1.0 0.0 +es 08_non-res 2 311 1.0 0.0 +es 09_hydro_pump 2 311 0.0 0.0 +es 01_solar 2 312 1.0 0.0 +es 02_wind_on 2 312 1.0 0.0 +es 03_wind_off 2 312 1.0 0.0 +es 04_res 2 312 1.0 0.0 +es 05_nuclear 2 312 1.0 0.0 +es 06_coal 2 312 1.0 0.0 +es 07_gas 2 312 1.0 0.0 +es 08_non-res 2 312 1.0 0.0 +es 09_hydro_pump 2 312 0.0 0.0 +es 01_solar 2 313 1.0 0.0 +es 02_wind_on 2 313 1.0 0.0 +es 03_wind_off 2 313 1.0 0.0 +es 04_res 2 313 1.0 0.0 +es 05_nuclear 2 313 1.0 0.0 +es 06_coal 2 313 1.0 0.0 +es 07_gas 2 313 1.0 0.0 +es 08_non-res 2 313 1.0 0.0 +es 09_hydro_pump 2 313 0.0 0.0 +es 01_solar 2 314 1.0 0.0 +es 02_wind_on 2 314 1.0 0.0 +es 03_wind_off 2 314 1.0 0.0 +es 04_res 2 314 1.0 0.0 +es 05_nuclear 2 314 1.0 0.0 +es 06_coal 2 314 1.0 0.0 +es 07_gas 2 314 1.0 0.0 +es 08_non-res 2 314 1.0 0.0 +es 09_hydro_pump 2 314 0.0 0.0 +es 01_solar 2 315 1.0 0.0 +es 02_wind_on 2 315 1.0 0.0 +es 03_wind_off 2 315 1.0 0.0 +es 04_res 2 315 1.0 0.0 +es 05_nuclear 2 315 1.0 0.0 +es 06_coal 2 315 1.0 0.0 +es 07_gas 2 315 1.0 0.0 +es 08_non-res 2 315 1.0 0.0 +es 09_hydro_pump 2 315 0.0 0.0 +es 01_solar 2 316 1.0 0.0 +es 02_wind_on 2 316 1.0 0.0 +es 03_wind_off 2 316 1.0 0.0 +es 04_res 2 316 1.0 0.0 +es 05_nuclear 2 316 1.0 0.0 +es 06_coal 2 316 1.0 0.0 +es 07_gas 2 316 1.0 0.0 +es 08_non-res 2 316 1.0 0.0 +es 09_hydro_pump 2 316 0.0 0.0 +es 01_solar 2 317 1.0 0.0 +es 02_wind_on 2 317 1.0 0.0 +es 03_wind_off 2 317 1.0 0.0 +es 04_res 2 317 1.0 0.0 +es 05_nuclear 2 317 1.0 0.0 +es 06_coal 2 317 1.0 0.0 +es 07_gas 2 317 1.0 0.0 +es 08_non-res 2 317 1.0 0.0 +es 09_hydro_pump 2 317 0.0 0.0 +es 01_solar 2 318 1.0 0.0 +es 02_wind_on 2 318 1.0 0.0 +es 03_wind_off 2 318 1.0 0.0 +es 04_res 2 318 1.0 0.0 +es 05_nuclear 2 318 1.0 0.0 +es 06_coal 2 318 1.0 0.0 +es 07_gas 2 318 1.0 0.0 +es 08_non-res 2 318 1.0 0.0 +es 09_hydro_pump 2 318 0.0 0.0 +es 01_solar 2 319 1.0 0.0 +es 02_wind_on 2 319 1.0 0.0 +es 03_wind_off 2 319 1.0 0.0 +es 04_res 2 319 1.0 0.0 +es 05_nuclear 2 319 1.0 0.0 +es 06_coal 2 319 1.0 0.0 +es 07_gas 2 319 1.0 0.0 +es 08_non-res 2 319 1.0 0.0 +es 09_hydro_pump 2 319 0.0 0.0 +es 01_solar 2 320 1.0 0.0 +es 02_wind_on 2 320 1.0 0.0 +es 03_wind_off 2 320 1.0 0.0 +es 04_res 2 320 1.0 0.0 +es 05_nuclear 2 320 1.0 0.0 +es 06_coal 2 320 1.0 0.0 +es 07_gas 2 320 1.0 0.0 +es 08_non-res 2 320 1.0 0.0 +es 09_hydro_pump 2 320 0.0 0.0 +es 01_solar 2 321 1.0 0.0 +es 02_wind_on 2 321 1.0 0.0 +es 03_wind_off 2 321 1.0 0.0 +es 04_res 2 321 1.0 0.0 +es 05_nuclear 2 321 1.0 0.0 +es 06_coal 2 321 1.0 0.0 +es 07_gas 2 321 1.0 0.0 +es 08_non-res 2 321 1.0 0.0 +es 09_hydro_pump 2 321 0.0 0.0 +es 01_solar 2 322 1.0 0.0 +es 02_wind_on 2 322 1.0 0.0 +es 03_wind_off 2 322 1.0 0.0 +es 04_res 2 322 1.0 0.0 +es 05_nuclear 2 322 1.0 0.0 +es 06_coal 2 322 1.0 0.0 +es 07_gas 2 322 1.0 0.0 +es 08_non-res 2 322 1.0 0.0 +es 09_hydro_pump 2 322 0.0 0.0 +es 01_solar 2 323 1.0 0.0 +es 02_wind_on 2 323 1.0 0.0 +es 03_wind_off 2 323 1.0 0.0 +es 04_res 2 323 1.0 0.0 +es 05_nuclear 2 323 1.0 0.0 +es 06_coal 2 323 1.0 0.0 +es 07_gas 2 323 1.0 0.0 +es 08_non-res 2 323 1.0 0.0 +es 09_hydro_pump 2 323 0.0 0.0 +es 01_solar 2 324 1.0 0.0 +es 02_wind_on 2 324 1.0 0.0 +es 03_wind_off 2 324 1.0 0.0 +es 04_res 2 324 1.0 0.0 +es 05_nuclear 2 324 1.0 0.0 +es 06_coal 2 324 1.0 0.0 +es 07_gas 2 324 1.0 0.0 +es 08_non-res 2 324 1.0 0.0 +es 09_hydro_pump 2 324 0.0 0.0 +es 01_solar 2 325 1.0 0.0 +es 02_wind_on 2 325 1.0 0.0 +es 03_wind_off 2 325 1.0 0.0 +es 04_res 2 325 1.0 0.0 +es 05_nuclear 2 325 1.0 0.0 +es 06_coal 2 325 1.0 0.0 +es 07_gas 2 325 1.0 0.0 +es 08_non-res 2 325 1.0 0.0 +es 09_hydro_pump 2 325 0.0 0.0 +es 01_solar 2 326 1.0 0.0 +es 02_wind_on 2 326 1.0 0.0 +es 03_wind_off 2 326 1.0 0.0 +es 04_res 2 326 1.0 0.0 +es 05_nuclear 2 326 1.0 0.0 +es 06_coal 2 326 1.0 0.0 +es 07_gas 2 326 1.0 0.0 +es 08_non-res 2 326 1.0 0.0 +es 09_hydro_pump 2 326 0.0 0.0 +es 01_solar 2 327 1.0 0.0 +es 02_wind_on 2 327 1.0 0.0 +es 03_wind_off 2 327 1.0 0.0 +es 04_res 2 327 1.0 0.0 +es 05_nuclear 2 327 1.0 0.0 +es 06_coal 2 327 1.0 0.0 +es 07_gas 2 327 1.0 0.0 +es 08_non-res 2 327 1.0 0.0 +es 09_hydro_pump 2 327 0.0 0.0 +es 01_solar 2 328 1.0 0.0 +es 02_wind_on 2 328 1.0 0.0 +es 03_wind_off 2 328 1.0 0.0 +es 04_res 2 328 1.0 0.0 +es 05_nuclear 2 328 1.0 0.0 +es 06_coal 2 328 1.0 0.0 +es 07_gas 2 328 1.0 0.0 +es 08_non-res 2 328 1.0 0.0 +es 09_hydro_pump 2 328 0.0 0.0 +es 01_solar 2 329 1.0 0.0 +es 02_wind_on 2 329 1.0 0.0 +es 03_wind_off 2 329 1.0 0.0 +es 04_res 2 329 1.0 0.0 +es 05_nuclear 2 329 1.0 0.0 +es 06_coal 2 329 1.0 0.0 +es 07_gas 2 329 1.0 0.0 +es 08_non-res 2 329 1.0 0.0 +es 09_hydro_pump 2 329 0.0 0.0 +es 01_solar 2 330 1.0 0.0 +es 02_wind_on 2 330 1.0 0.0 +es 03_wind_off 2 330 1.0 0.0 +es 04_res 2 330 1.0 0.0 +es 05_nuclear 2 330 1.0 0.0 +es 06_coal 2 330 1.0 0.0 +es 07_gas 2 330 1.0 0.0 +es 08_non-res 2 330 1.0 0.0 +es 09_hydro_pump 2 330 1.0 0.0 +es 01_solar 2 331 1.0 0.0 +es 02_wind_on 2 331 1.0 0.0 +es 03_wind_off 2 331 1.0 0.0 +es 04_res 2 331 1.0 0.0 +es 05_nuclear 2 331 1.0 0.0 +es 06_coal 2 331 1.0 0.0 +es 07_gas 2 331 1.0 0.0 +es 08_non-res 2 331 1.0 0.0 +es 09_hydro_pump 2 331 1.0 0.0 +es 01_solar 2 332 1.0 0.0 +es 02_wind_on 2 332 1.0 0.0 +es 03_wind_off 2 332 1.0 0.0 +es 04_res 2 332 1.0 0.0 +es 05_nuclear 2 332 1.0 0.0 +es 06_coal 2 332 1.0 0.0 +es 07_gas 2 332 1.0 0.0 +es 08_non-res 2 332 1.0 0.0 +es 09_hydro_pump 2 332 1.0 0.0 +es 01_solar 2 333 1.0 0.0 +es 02_wind_on 2 333 1.0 0.0 +es 03_wind_off 2 333 1.0 0.0 +es 04_res 2 333 1.0 0.0 +es 05_nuclear 2 333 1.0 0.0 +es 06_coal 2 333 1.0 0.0 +es 07_gas 2 333 1.0 0.0 +es 08_non-res 2 333 1.0 0.0 +es 09_hydro_pump 2 333 1.0 0.0 +es 01_solar 2 334 1.0 0.0 +es 02_wind_on 2 334 1.0 0.0 +es 03_wind_off 2 334 1.0 0.0 +es 04_res 2 334 1.0 0.0 +es 05_nuclear 2 334 1.0 0.0 +es 06_coal 2 334 1.0 0.0 +es 07_gas 2 334 1.0 0.0 +es 08_non-res 2 334 1.0 0.0 +es 09_hydro_pump 2 334 1.0 0.0 +es 01_solar 2 335 1.0 0.0 +es 02_wind_on 2 335 1.0 0.0 +es 03_wind_off 2 335 1.0 0.0 +es 04_res 2 335 1.0 0.0 +es 05_nuclear 2 335 1.0 0.0 +es 06_coal 2 335 1.0 0.0 +es 07_gas 2 335 1.0 0.0 +es 08_non-res 2 335 1.0 0.0 +es 09_hydro_pump 2 335 1.0 0.0 +es 01_solar 2 336 1.0 0.0 +es 02_wind_on 2 336 1.0 0.0 +es 03_wind_off 2 336 1.0 0.0 +es 04_res 2 336 1.0 0.0 +es 05_nuclear 2 336 1.0 0.0 +es 06_coal 2 336 1.0 0.0 +es 07_gas 2 336 1.0 0.0 +es 08_non-res 2 336 1.0 0.0 +es 09_hydro_pump 2 336 1.0 0.0 +fr 01_solar 2 1 0.0 0.0 +fr 02_wind_on 2 1 0.0 0.0 +fr 03_wind_off 2 1 0.0 0.0 +fr 04_res 2 1 0.0 0.0 +fr 05_nuclear 2 1 0.0 0.0 +fr 06_coal 2 1 0.0 0.0 +fr 07_gas 2 1 0.0 0.0 +fr 08_non-res 2 1 0.0 0.0 +fr 09_hydro_pump 2 1 0.0 0.0 +fr 01_solar 2 2 1.0 0.0 +fr 02_wind_on 2 2 0.0 0.0 +fr 03_wind_off 2 2 0.0 0.0 +fr 04_res 2 2 0.0 0.0 +fr 05_nuclear 2 2 0.0 0.0 +fr 06_coal 2 2 0.0 0.0 +fr 07_gas 2 2 0.0 0.0 +fr 08_non-res 2 2 0.0 0.0 +fr 09_hydro_pump 2 2 0.0 0.0 +fr 01_solar 2 3 1.0 0.0 +fr 02_wind_on 2 3 0.0 0.0 +fr 03_wind_off 2 3 0.0 0.0 +fr 04_res 2 3 0.0 0.0 +fr 05_nuclear 2 3 0.0 0.0 +fr 06_coal 2 3 0.0 0.0 +fr 07_gas 2 3 0.0 0.0 +fr 08_non-res 2 3 0.0 0.0 +fr 09_hydro_pump 2 3 0.0 0.0 +fr 01_solar 2 4 1.0 0.0 +fr 02_wind_on 2 4 0.0 0.0 +fr 03_wind_off 2 4 0.0 0.0 +fr 04_res 2 4 0.0 0.0 +fr 05_nuclear 2 4 0.0 0.0 +fr 06_coal 2 4 0.0 0.0 +fr 07_gas 2 4 0.0 0.0 +fr 08_non-res 2 4 0.0 0.0 +fr 09_hydro_pump 2 4 0.0 0.0 +fr 01_solar 2 5 1.0 0.0 +fr 02_wind_on 2 5 0.0 0.0 +fr 03_wind_off 2 5 0.0 0.0 +fr 04_res 2 5 0.0 0.0 +fr 05_nuclear 2 5 0.0 0.0 +fr 06_coal 2 5 0.0 0.0 +fr 07_gas 2 5 0.0 0.0 +fr 08_non-res 2 5 0.0 0.0 +fr 09_hydro_pump 2 5 0.0 0.0 +fr 01_solar 2 6 1.0 0.0 +fr 02_wind_on 2 6 0.0 0.0 +fr 03_wind_off 2 6 0.0 0.0 +fr 04_res 2 6 0.0 0.0 +fr 05_nuclear 2 6 0.0 0.0 +fr 06_coal 2 6 0.0 0.0 +fr 07_gas 2 6 0.0 0.0 +fr 08_non-res 2 6 0.0 0.0 +fr 09_hydro_pump 2 6 0.0 0.0 +fr 01_solar 2 7 1.0 0.0 +fr 02_wind_on 2 7 0.0 0.0 +fr 03_wind_off 2 7 0.0 0.0 +fr 04_res 2 7 0.0 0.0 +fr 05_nuclear 2 7 0.0 0.0 +fr 06_coal 2 7 0.0 0.0 +fr 07_gas 2 7 0.0 0.0 +fr 08_non-res 2 7 0.0 0.0 +fr 09_hydro_pump 2 7 0.0 0.0 +fr 01_solar 2 8 1.0 0.0 +fr 02_wind_on 2 8 0.0 0.0 +fr 03_wind_off 2 8 0.0 0.0 +fr 04_res 2 8 0.0 0.0 +fr 05_nuclear 2 8 0.0 0.0 +fr 06_coal 2 8 0.0 0.0 +fr 07_gas 2 8 0.0 0.0 +fr 08_non-res 2 8 0.0 0.0 +fr 09_hydro_pump 2 8 0.0 0.0 +fr 01_solar 2 9 1.0 0.0 +fr 02_wind_on 2 9 0.0 0.0 +fr 03_wind_off 2 9 0.0 0.0 +fr 04_res 2 9 0.0 0.0 +fr 05_nuclear 2 9 0.0 0.0 +fr 06_coal 2 9 0.0 0.0 +fr 07_gas 2 9 0.0 0.0 +fr 08_non-res 2 9 0.0 0.0 +fr 09_hydro_pump 2 9 0.0 0.0 +fr 01_solar 2 10 1.0 0.0 +fr 02_wind_on 2 10 0.0 0.0 +fr 03_wind_off 2 10 0.0 0.0 +fr 04_res 2 10 0.0 0.0 +fr 05_nuclear 2 10 0.0 0.0 +fr 06_coal 2 10 0.0 0.0 +fr 07_gas 2 10 0.0 0.0 +fr 08_non-res 2 10 0.0 0.0 +fr 09_hydro_pump 2 10 0.0 0.0 +fr 01_solar 2 11 1.0 0.0 +fr 02_wind_on 2 11 0.0 0.0 +fr 03_wind_off 2 11 0.0 0.0 +fr 04_res 2 11 0.0 0.0 +fr 05_nuclear 2 11 0.0 0.0 +fr 06_coal 2 11 0.0 0.0 +fr 07_gas 2 11 0.0 0.0 +fr 08_non-res 2 11 0.0 0.0 +fr 09_hydro_pump 2 11 0.0 0.0 +fr 01_solar 2 12 1.0 0.0 +fr 02_wind_on 2 12 0.0 0.0 +fr 03_wind_off 2 12 0.0 0.0 +fr 04_res 2 12 0.0 0.0 +fr 05_nuclear 2 12 0.0 0.0 +fr 06_coal 2 12 0.0 0.0 +fr 07_gas 2 12 0.0 0.0 +fr 08_non-res 2 12 0.0 0.0 +fr 09_hydro_pump 2 12 0.0 0.0 +fr 01_solar 2 13 1.0 0.0 +fr 02_wind_on 2 13 0.0 0.0 +fr 03_wind_off 2 13 0.0 0.0 +fr 04_res 2 13 0.0 0.0 +fr 05_nuclear 2 13 0.0 0.0 +fr 06_coal 2 13 0.0 0.0 +fr 07_gas 2 13 0.0 0.0 +fr 08_non-res 2 13 0.0 0.0 +fr 09_hydro_pump 2 13 0.0 0.0 +fr 01_solar 2 14 1.0 0.0 +fr 02_wind_on 2 14 0.0 0.0 +fr 03_wind_off 2 14 0.0 0.0 +fr 04_res 2 14 0.0 0.0 +fr 05_nuclear 2 14 0.0 0.0 +fr 06_coal 2 14 0.0 0.0 +fr 07_gas 2 14 0.0 0.0 +fr 08_non-res 2 14 0.0 0.0 +fr 09_hydro_pump 2 14 0.0 0.0 +fr 01_solar 2 15 1.0 0.0 +fr 02_wind_on 2 15 0.0 0.0 +fr 03_wind_off 2 15 0.0 0.0 +fr 04_res 2 15 0.0 0.0 +fr 05_nuclear 2 15 0.0 0.0 +fr 06_coal 2 15 0.0 0.0 +fr 07_gas 2 15 0.0 0.0 +fr 08_non-res 2 15 0.0 0.0 +fr 09_hydro_pump 2 15 0.0 0.0 +fr 01_solar 2 16 1.0 0.0 +fr 02_wind_on 2 16 0.0 0.0 +fr 03_wind_off 2 16 0.0 0.0 +fr 04_res 2 16 0.0 0.0 +fr 05_nuclear 2 16 0.0 0.0 +fr 06_coal 2 16 0.0 0.0 +fr 07_gas 2 16 0.0 0.0 +fr 08_non-res 2 16 0.0 0.0 +fr 09_hydro_pump 2 16 0.0 0.0 +fr 01_solar 2 17 1.0 0.0 +fr 02_wind_on 2 17 0.0 0.0 +fr 03_wind_off 2 17 0.0 0.0 +fr 04_res 2 17 0.0 0.0 +fr 05_nuclear 2 17 0.0 0.0 +fr 06_coal 2 17 0.0 0.0 +fr 07_gas 2 17 0.0 0.0 +fr 08_non-res 2 17 0.0 0.0 +fr 09_hydro_pump 2 17 0.0 0.0 +fr 01_solar 2 18 1.0 0.0 +fr 02_wind_on 2 18 0.0 0.0 +fr 03_wind_off 2 18 0.0 0.0 +fr 04_res 2 18 0.0 0.0 +fr 05_nuclear 2 18 0.0 0.0 +fr 06_coal 2 18 0.0 0.0 +fr 07_gas 2 18 0.0 0.0 +fr 08_non-res 2 18 0.0 0.0 +fr 09_hydro_pump 2 18 0.0 0.0 +fr 01_solar 2 19 1.0 0.0 +fr 02_wind_on 2 19 0.0 0.0 +fr 03_wind_off 2 19 0.0 0.0 +fr 04_res 2 19 0.0 0.0 +fr 05_nuclear 2 19 0.0 0.0 +fr 06_coal 2 19 0.0 0.0 +fr 07_gas 2 19 0.0 0.0 +fr 08_non-res 2 19 0.0 0.0 +fr 09_hydro_pump 2 19 0.0 0.0 +fr 01_solar 2 20 1.0 0.0 +fr 02_wind_on 2 20 0.0 0.0 +fr 03_wind_off 2 20 0.0 0.0 +fr 04_res 2 20 0.0 0.0 +fr 05_nuclear 2 20 0.0 0.0 +fr 06_coal 2 20 0.0 0.0 +fr 07_gas 2 20 0.0 0.0 +fr 08_non-res 2 20 0.0 0.0 +fr 09_hydro_pump 2 20 0.0 0.0 +fr 01_solar 2 21 1.0 0.0 +fr 02_wind_on 2 21 0.0 0.0 +fr 03_wind_off 2 21 0.0 0.0 +fr 04_res 2 21 0.0 0.0 +fr 05_nuclear 2 21 0.0 0.0 +fr 06_coal 2 21 0.0 0.0 +fr 07_gas 2 21 0.0 0.0 +fr 08_non-res 2 21 0.0 0.0 +fr 09_hydro_pump 2 21 0.0 0.0 +fr 01_solar 2 22 1.0 0.0 +fr 02_wind_on 2 22 1.0 0.0 +fr 03_wind_off 2 22 0.0 0.0 +fr 04_res 2 22 0.0 0.0 +fr 05_nuclear 2 22 0.0 0.0 +fr 06_coal 2 22 0.0 0.0 +fr 07_gas 2 22 0.0 0.0 +fr 08_non-res 2 22 0.0 0.0 +fr 09_hydro_pump 2 22 0.0 0.0 +fr 01_solar 2 23 1.0 0.0 +fr 02_wind_on 2 23 1.0 0.0 +fr 03_wind_off 2 23 0.0 0.0 +fr 04_res 2 23 0.0 0.0 +fr 05_nuclear 2 23 0.0 0.0 +fr 06_coal 2 23 0.0 0.0 +fr 07_gas 2 23 0.0 0.0 +fr 08_non-res 2 23 0.0 0.0 +fr 09_hydro_pump 2 23 0.0 0.0 +fr 01_solar 2 24 1.0 0.0 +fr 02_wind_on 2 24 1.0 0.0 +fr 03_wind_off 2 24 0.0 0.0 +fr 04_res 2 24 0.0 0.0 +fr 05_nuclear 2 24 0.0 0.0 +fr 06_coal 2 24 0.0 0.0 +fr 07_gas 2 24 0.0 0.0 +fr 08_non-res 2 24 0.0 0.0 +fr 09_hydro_pump 2 24 0.0 0.0 +fr 01_solar 2 25 1.0 0.0 +fr 02_wind_on 2 25 1.0 0.0 +fr 03_wind_off 2 25 0.0 0.0 +fr 04_res 2 25 0.0 0.0 +fr 05_nuclear 2 25 0.0 0.0 +fr 06_coal 2 25 0.0 0.0 +fr 07_gas 2 25 0.0 0.0 +fr 08_non-res 2 25 0.0 0.0 +fr 09_hydro_pump 2 25 0.0 0.0 +fr 01_solar 2 26 1.0 0.0 +fr 02_wind_on 2 26 1.0 0.0 +fr 03_wind_off 2 26 0.0 0.0 +fr 04_res 2 26 0.0 0.0 +fr 05_nuclear 2 26 0.0 0.0 +fr 06_coal 2 26 0.0 0.0 +fr 07_gas 2 26 0.0 0.0 +fr 08_non-res 2 26 0.0 0.0 +fr 09_hydro_pump 2 26 0.0 0.0 +fr 01_solar 2 27 1.0 0.0 +fr 02_wind_on 2 27 1.0 0.0 +fr 03_wind_off 2 27 0.0 0.0 +fr 04_res 2 27 0.0 0.0 +fr 05_nuclear 2 27 0.0 0.0 +fr 06_coal 2 27 0.0 0.0 +fr 07_gas 2 27 0.0 0.0 +fr 08_non-res 2 27 0.0 0.0 +fr 09_hydro_pump 2 27 0.0 0.0 +fr 01_solar 2 28 1.0 0.0 +fr 02_wind_on 2 28 1.0 0.0 +fr 03_wind_off 2 28 0.0 0.0 +fr 04_res 2 28 0.0 0.0 +fr 05_nuclear 2 28 0.0 0.0 +fr 06_coal 2 28 0.0 0.0 +fr 07_gas 2 28 0.0 0.0 +fr 08_non-res 2 28 0.0 0.0 +fr 09_hydro_pump 2 28 0.0 0.0 +fr 01_solar 2 29 1.0 0.0 +fr 02_wind_on 2 29 1.0 0.0 +fr 03_wind_off 2 29 0.0 0.0 +fr 04_res 2 29 0.0 0.0 +fr 05_nuclear 2 29 0.0 0.0 +fr 06_coal 2 29 0.0 0.0 +fr 07_gas 2 29 0.0 0.0 +fr 08_non-res 2 29 0.0 0.0 +fr 09_hydro_pump 2 29 0.0 0.0 +fr 01_solar 2 30 1.0 0.0 +fr 02_wind_on 2 30 1.0 0.0 +fr 03_wind_off 2 30 0.0 0.0 +fr 04_res 2 30 0.0 0.0 +fr 05_nuclear 2 30 0.0 0.0 +fr 06_coal 2 30 0.0 0.0 +fr 07_gas 2 30 0.0 0.0 +fr 08_non-res 2 30 0.0 0.0 +fr 09_hydro_pump 2 30 0.0 0.0 +fr 01_solar 2 31 1.0 0.0 +fr 02_wind_on 2 31 1.0 0.0 +fr 03_wind_off 2 31 0.0 0.0 +fr 04_res 2 31 0.0 0.0 +fr 05_nuclear 2 31 0.0 0.0 +fr 06_coal 2 31 0.0 0.0 +fr 07_gas 2 31 0.0 0.0 +fr 08_non-res 2 31 0.0 0.0 +fr 09_hydro_pump 2 31 0.0 0.0 +fr 01_solar 2 32 1.0 0.0 +fr 02_wind_on 2 32 1.0 0.0 +fr 03_wind_off 2 32 0.0 0.0 +fr 04_res 2 32 0.0 0.0 +fr 05_nuclear 2 32 0.0 0.0 +fr 06_coal 2 32 0.0 0.0 +fr 07_gas 2 32 0.0 0.0 +fr 08_non-res 2 32 0.0 0.0 +fr 09_hydro_pump 2 32 0.0 0.0 +fr 01_solar 2 33 1.0 0.0 +fr 02_wind_on 2 33 1.0 0.0 +fr 03_wind_off 2 33 0.0 0.0 +fr 04_res 2 33 0.0 0.0 +fr 05_nuclear 2 33 0.0 0.0 +fr 06_coal 2 33 0.0 0.0 +fr 07_gas 2 33 0.0 0.0 +fr 08_non-res 2 33 0.0 0.0 +fr 09_hydro_pump 2 33 0.0 0.0 +fr 01_solar 2 34 1.0 0.0 +fr 02_wind_on 2 34 1.0 0.0 +fr 03_wind_off 2 34 0.0 0.0 +fr 04_res 2 34 0.0 0.0 +fr 05_nuclear 2 34 0.0 0.0 +fr 06_coal 2 34 0.0 0.0 +fr 07_gas 2 34 0.0 0.0 +fr 08_non-res 2 34 0.0 0.0 +fr 09_hydro_pump 2 34 0.0 0.0 +fr 01_solar 2 35 1.0 0.0 +fr 02_wind_on 2 35 1.0 0.0 +fr 03_wind_off 2 35 0.0 0.0 +fr 04_res 2 35 0.0 0.0 +fr 05_nuclear 2 35 0.0 0.0 +fr 06_coal 2 35 0.0 0.0 +fr 07_gas 2 35 0.0 0.0 +fr 08_non-res 2 35 0.0 0.0 +fr 09_hydro_pump 2 35 0.0 0.0 +fr 01_solar 2 36 1.0 0.0 +fr 02_wind_on 2 36 1.0 0.0 +fr 03_wind_off 2 36 0.0 0.0 +fr 04_res 2 36 0.0 0.0 +fr 05_nuclear 2 36 0.0 0.0 +fr 06_coal 2 36 0.0 0.0 +fr 07_gas 2 36 0.0 0.0 +fr 08_non-res 2 36 0.0 0.0 +fr 09_hydro_pump 2 36 0.0 0.0 +fr 01_solar 2 37 1.0 0.0 +fr 02_wind_on 2 37 1.0 0.0 +fr 03_wind_off 2 37 0.0 0.0 +fr 04_res 2 37 0.0 0.0 +fr 05_nuclear 2 37 0.0 0.0 +fr 06_coal 2 37 0.0 0.0 +fr 07_gas 2 37 0.0 0.0 +fr 08_non-res 2 37 0.0 0.0 +fr 09_hydro_pump 2 37 0.0 0.0 +fr 01_solar 2 38 1.0 0.0 +fr 02_wind_on 2 38 1.0 0.0 +fr 03_wind_off 2 38 0.0 0.0 +fr 04_res 2 38 0.0 0.0 +fr 05_nuclear 2 38 0.0 0.0 +fr 06_coal 2 38 0.0 0.0 +fr 07_gas 2 38 0.0 0.0 +fr 08_non-res 2 38 0.0 0.0 +fr 09_hydro_pump 2 38 0.0 0.0 +fr 01_solar 2 39 1.0 0.0 +fr 02_wind_on 2 39 1.0 0.0 +fr 03_wind_off 2 39 0.0 0.0 +fr 04_res 2 39 0.0 0.0 +fr 05_nuclear 2 39 0.0 0.0 +fr 06_coal 2 39 0.0 0.0 +fr 07_gas 2 39 0.0 0.0 +fr 08_non-res 2 39 0.0 0.0 +fr 09_hydro_pump 2 39 0.0 0.0 +fr 01_solar 2 40 1.0 0.0 +fr 02_wind_on 2 40 1.0 0.0 +fr 03_wind_off 2 40 0.0 0.0 +fr 04_res 2 40 0.0 0.0 +fr 05_nuclear 2 40 0.0 0.0 +fr 06_coal 2 40 0.0 0.0 +fr 07_gas 2 40 0.0 0.0 +fr 08_non-res 2 40 0.0 0.0 +fr 09_hydro_pump 2 40 0.0 0.0 +fr 01_solar 2 41 1.0 0.0 +fr 02_wind_on 2 41 1.0 0.0 +fr 03_wind_off 2 41 0.0 0.0 +fr 04_res 2 41 0.0 0.0 +fr 05_nuclear 2 41 0.0 0.0 +fr 06_coal 2 41 0.0 0.0 +fr 07_gas 2 41 0.0 0.0 +fr 08_non-res 2 41 0.0 0.0 +fr 09_hydro_pump 2 41 0.0 0.0 +fr 01_solar 2 42 1.0 0.0 +fr 02_wind_on 2 42 1.0 0.0 +fr 03_wind_off 2 42 1.0 0.0 +fr 04_res 2 42 0.0 0.0 +fr 05_nuclear 2 42 0.0 0.0 +fr 06_coal 2 42 0.0 0.0 +fr 07_gas 2 42 0.0 0.0 +fr 08_non-res 2 42 0.0 0.0 +fr 09_hydro_pump 2 42 0.0 0.0 +fr 01_solar 2 43 1.0 0.0 +fr 02_wind_on 2 43 1.0 0.0 +fr 03_wind_off 2 43 1.0 0.0 +fr 04_res 2 43 0.0 0.0 +fr 05_nuclear 2 43 0.0 0.0 +fr 06_coal 2 43 0.0 0.0 +fr 07_gas 2 43 0.0 0.0 +fr 08_non-res 2 43 0.0 0.0 +fr 09_hydro_pump 2 43 0.0 0.0 +fr 01_solar 2 44 1.0 0.0 +fr 02_wind_on 2 44 1.0 0.0 +fr 03_wind_off 2 44 1.0 0.0 +fr 04_res 2 44 0.0 0.0 +fr 05_nuclear 2 44 0.0 0.0 +fr 06_coal 2 44 0.0 0.0 +fr 07_gas 2 44 0.0 0.0 +fr 08_non-res 2 44 0.0 0.0 +fr 09_hydro_pump 2 44 0.0 0.0 +fr 01_solar 2 45 1.0 0.0 +fr 02_wind_on 2 45 1.0 0.0 +fr 03_wind_off 2 45 1.0 0.0 +fr 04_res 2 45 0.0 0.0 +fr 05_nuclear 2 45 0.0 0.0 +fr 06_coal 2 45 0.0 0.0 +fr 07_gas 2 45 0.0 0.0 +fr 08_non-res 2 45 0.0 0.0 +fr 09_hydro_pump 2 45 0.0 0.0 +fr 01_solar 2 46 1.0 0.0 +fr 02_wind_on 2 46 1.0 0.0 +fr 03_wind_off 2 46 1.0 0.0 +fr 04_res 2 46 0.0 0.0 +fr 05_nuclear 2 46 0.0 0.0 +fr 06_coal 2 46 0.0 0.0 +fr 07_gas 2 46 0.0 0.0 +fr 08_non-res 2 46 0.0 0.0 +fr 09_hydro_pump 2 46 0.0 0.0 +fr 01_solar 2 47 1.0 0.0 +fr 02_wind_on 2 47 1.0 0.0 +fr 03_wind_off 2 47 1.0 0.0 +fr 04_res 2 47 0.0 0.0 +fr 05_nuclear 2 47 0.0 0.0 +fr 06_coal 2 47 0.0 0.0 +fr 07_gas 2 47 0.0 0.0 +fr 08_non-res 2 47 0.0 0.0 +fr 09_hydro_pump 2 47 0.0 0.0 +fr 01_solar 2 48 1.0 0.0 +fr 02_wind_on 2 48 1.0 0.0 +fr 03_wind_off 2 48 1.0 0.0 +fr 04_res 2 48 0.0 0.0 +fr 05_nuclear 2 48 0.0 0.0 +fr 06_coal 2 48 0.0 0.0 +fr 07_gas 2 48 0.0 0.0 +fr 08_non-res 2 48 0.0 0.0 +fr 09_hydro_pump 2 48 0.0 0.0 +fr 01_solar 2 49 1.0 0.0 +fr 02_wind_on 2 49 1.0 0.0 +fr 03_wind_off 2 49 1.0 0.0 +fr 04_res 2 49 0.0 0.0 +fr 05_nuclear 2 49 0.0 0.0 +fr 06_coal 2 49 0.0 0.0 +fr 07_gas 2 49 0.0 0.0 +fr 08_non-res 2 49 0.0 0.0 +fr 09_hydro_pump 2 49 0.0 0.0 +fr 01_solar 2 50 1.0 0.0 +fr 02_wind_on 2 50 1.0 0.0 +fr 03_wind_off 2 50 1.0 0.0 +fr 04_res 2 50 0.0 0.0 +fr 05_nuclear 2 50 0.0 0.0 +fr 06_coal 2 50 0.0 0.0 +fr 07_gas 2 50 0.0 0.0 +fr 08_non-res 2 50 0.0 0.0 +fr 09_hydro_pump 2 50 0.0 0.0 +fr 01_solar 2 51 1.0 0.0 +fr 02_wind_on 2 51 1.0 0.0 +fr 03_wind_off 2 51 1.0 0.0 +fr 04_res 2 51 0.0 0.0 +fr 05_nuclear 2 51 0.0 0.0 +fr 06_coal 2 51 0.0 0.0 +fr 07_gas 2 51 0.0 0.0 +fr 08_non-res 2 51 0.0 0.0 +fr 09_hydro_pump 2 51 0.0 0.0 +fr 01_solar 2 52 1.0 0.0 +fr 02_wind_on 2 52 1.0 0.0 +fr 03_wind_off 2 52 1.0 0.0 +fr 04_res 2 52 0.0 0.0 +fr 05_nuclear 2 52 0.0 0.0 +fr 06_coal 2 52 0.0 0.0 +fr 07_gas 2 52 0.0 0.0 +fr 08_non-res 2 52 0.0 0.0 +fr 09_hydro_pump 2 52 0.0 0.0 +fr 01_solar 2 53 1.0 0.0 +fr 02_wind_on 2 53 1.0 0.0 +fr 03_wind_off 2 53 1.0 0.0 +fr 04_res 2 53 0.0 0.0 +fr 05_nuclear 2 53 0.0 0.0 +fr 06_coal 2 53 0.0 0.0 +fr 07_gas 2 53 0.0 0.0 +fr 08_non-res 2 53 0.0 0.0 +fr 09_hydro_pump 2 53 0.0 0.0 +fr 01_solar 2 54 1.0 0.0 +fr 02_wind_on 2 54 1.0 0.0 +fr 03_wind_off 2 54 1.0 0.0 +fr 04_res 2 54 0.0 0.0 +fr 05_nuclear 2 54 0.0 0.0 +fr 06_coal 2 54 0.0 0.0 +fr 07_gas 2 54 0.0 0.0 +fr 08_non-res 2 54 0.0 0.0 +fr 09_hydro_pump 2 54 0.0 0.0 +fr 01_solar 2 55 1.0 0.0 +fr 02_wind_on 2 55 1.0 0.0 +fr 03_wind_off 2 55 1.0 0.0 +fr 04_res 2 55 0.0 0.0 +fr 05_nuclear 2 55 0.0 0.0 +fr 06_coal 2 55 0.0 0.0 +fr 07_gas 2 55 0.0 0.0 +fr 08_non-res 2 55 0.0 0.0 +fr 09_hydro_pump 2 55 0.0 0.0 +fr 01_solar 2 56 1.0 0.0 +fr 02_wind_on 2 56 1.0 0.0 +fr 03_wind_off 2 56 1.0 0.0 +fr 04_res 2 56 0.0 0.0 +fr 05_nuclear 2 56 0.0 0.0 +fr 06_coal 2 56 0.0 0.0 +fr 07_gas 2 56 0.0 0.0 +fr 08_non-res 2 56 0.0 0.0 +fr 09_hydro_pump 2 56 0.0 0.0 +fr 01_solar 2 57 1.0 0.0 +fr 02_wind_on 2 57 1.0 0.0 +fr 03_wind_off 2 57 1.0 0.0 +fr 04_res 2 57 0.0 0.0 +fr 05_nuclear 2 57 0.0 0.0 +fr 06_coal 2 57 0.0 0.0 +fr 07_gas 2 57 0.0 0.0 +fr 08_non-res 2 57 0.0 0.0 +fr 09_hydro_pump 2 57 0.0 0.0 +fr 01_solar 2 58 1.0 0.0 +fr 02_wind_on 2 58 1.0 0.0 +fr 03_wind_off 2 58 1.0 0.0 +fr 04_res 2 58 0.0 0.0 +fr 05_nuclear 2 58 0.0 0.0 +fr 06_coal 2 58 0.0 0.0 +fr 07_gas 2 58 0.0 0.0 +fr 08_non-res 2 58 0.0 0.0 +fr 09_hydro_pump 2 58 0.0 0.0 +fr 01_solar 2 59 1.0 0.0 +fr 02_wind_on 2 59 1.0 0.0 +fr 03_wind_off 2 59 1.0 0.0 +fr 04_res 2 59 0.0 0.0 +fr 05_nuclear 2 59 0.0 0.0 +fr 06_coal 2 59 0.0 0.0 +fr 07_gas 2 59 0.0 0.0 +fr 08_non-res 2 59 0.0 0.0 +fr 09_hydro_pump 2 59 0.0 0.0 +fr 01_solar 2 60 1.0 0.0 +fr 02_wind_on 2 60 1.0 0.0 +fr 03_wind_off 2 60 1.0 0.0 +fr 04_res 2 60 0.0 0.0 +fr 05_nuclear 2 60 0.0 0.0 +fr 06_coal 2 60 0.0 0.0 +fr 07_gas 2 60 0.0 0.0 +fr 08_non-res 2 60 0.0 0.0 +fr 09_hydro_pump 2 60 0.0 0.0 +fr 01_solar 2 61 1.0 0.0 +fr 02_wind_on 2 61 1.0 0.0 +fr 03_wind_off 2 61 1.0 0.0 +fr 04_res 2 61 0.0 0.0 +fr 05_nuclear 2 61 0.0 0.0 +fr 06_coal 2 61 0.0 0.0 +fr 07_gas 2 61 0.0 0.0 +fr 08_non-res 2 61 0.0 0.0 +fr 09_hydro_pump 2 61 0.0 0.0 +fr 01_solar 2 62 1.0 0.0 +fr 02_wind_on 2 62 1.0 0.0 +fr 03_wind_off 2 62 1.0 0.0 +fr 04_res 2 62 1.0 0.0 +fr 05_nuclear 2 62 0.0 0.0 +fr 06_coal 2 62 0.0 0.0 +fr 07_gas 2 62 0.0 0.0 +fr 08_non-res 2 62 0.0 0.0 +fr 09_hydro_pump 2 62 0.0 0.0 +fr 01_solar 2 63 1.0 0.0 +fr 02_wind_on 2 63 1.0 0.0 +fr 03_wind_off 2 63 1.0 0.0 +fr 04_res 2 63 1.0 0.0 +fr 05_nuclear 2 63 0.0 0.0 +fr 06_coal 2 63 0.0 0.0 +fr 07_gas 2 63 0.0 0.0 +fr 08_non-res 2 63 0.0 0.0 +fr 09_hydro_pump 2 63 0.0 0.0 +fr 01_solar 2 64 1.0 0.0 +fr 02_wind_on 2 64 1.0 0.0 +fr 03_wind_off 2 64 1.0 0.0 +fr 04_res 2 64 1.0 0.0 +fr 05_nuclear 2 64 0.0 0.0 +fr 06_coal 2 64 0.0 0.0 +fr 07_gas 2 64 0.0 0.0 +fr 08_non-res 2 64 0.0 0.0 +fr 09_hydro_pump 2 64 0.0 0.0 +fr 01_solar 2 65 1.0 0.0 +fr 02_wind_on 2 65 1.0 0.0 +fr 03_wind_off 2 65 1.0 0.0 +fr 04_res 2 65 1.0 0.0 +fr 05_nuclear 2 65 0.0 0.0 +fr 06_coal 2 65 0.0 0.0 +fr 07_gas 2 65 0.0 0.0 +fr 08_non-res 2 65 0.0 0.0 +fr 09_hydro_pump 2 65 0.0 0.0 +fr 01_solar 2 66 1.0 0.0 +fr 02_wind_on 2 66 1.0 0.0 +fr 03_wind_off 2 66 1.0 0.0 +fr 04_res 2 66 1.0 0.0 +fr 05_nuclear 2 66 0.0 0.0 +fr 06_coal 2 66 0.0 0.0 +fr 07_gas 2 66 0.0 0.0 +fr 08_non-res 2 66 0.0 0.0 +fr 09_hydro_pump 2 66 0.0 0.0 +fr 01_solar 2 67 1.0 0.0 +fr 02_wind_on 2 67 1.0 0.0 +fr 03_wind_off 2 67 1.0 0.0 +fr 04_res 2 67 1.0 0.0 +fr 05_nuclear 2 67 0.0 0.0 +fr 06_coal 2 67 0.0 0.0 +fr 07_gas 2 67 0.0 0.0 +fr 08_non-res 2 67 0.0 0.0 +fr 09_hydro_pump 2 67 0.0 0.0 +fr 01_solar 2 68 1.0 0.0 +fr 02_wind_on 2 68 1.0 0.0 +fr 03_wind_off 2 68 1.0 0.0 +fr 04_res 2 68 1.0 0.0 +fr 05_nuclear 2 68 0.0 0.0 +fr 06_coal 2 68 0.0 0.0 +fr 07_gas 2 68 0.0 0.0 +fr 08_non-res 2 68 0.0 0.0 +fr 09_hydro_pump 2 68 0.0 0.0 +fr 01_solar 2 69 1.0 0.0 +fr 02_wind_on 2 69 1.0 0.0 +fr 03_wind_off 2 69 1.0 0.0 +fr 04_res 2 69 1.0 0.0 +fr 05_nuclear 2 69 0.0 0.0 +fr 06_coal 2 69 0.0 0.0 +fr 07_gas 2 69 0.0 0.0 +fr 08_non-res 2 69 0.0 0.0 +fr 09_hydro_pump 2 69 0.0 0.0 +fr 01_solar 2 70 1.0 0.0 +fr 02_wind_on 2 70 1.0 0.0 +fr 03_wind_off 2 70 1.0 0.0 +fr 04_res 2 70 1.0 0.0 +fr 05_nuclear 2 70 0.0 0.0 +fr 06_coal 2 70 0.0 0.0 +fr 07_gas 2 70 0.0 0.0 +fr 08_non-res 2 70 0.0 0.0 +fr 09_hydro_pump 2 70 0.0 0.0 +fr 01_solar 2 71 1.0 0.0 +fr 02_wind_on 2 71 1.0 0.0 +fr 03_wind_off 2 71 1.0 0.0 +fr 04_res 2 71 1.0 0.0 +fr 05_nuclear 2 71 0.0 0.0 +fr 06_coal 2 71 0.0 0.0 +fr 07_gas 2 71 0.0 0.0 +fr 08_non-res 2 71 0.0 0.0 +fr 09_hydro_pump 2 71 0.0 0.0 +fr 01_solar 2 72 1.0 0.0 +fr 02_wind_on 2 72 1.0 0.0 +fr 03_wind_off 2 72 1.0 0.0 +fr 04_res 2 72 1.0 0.0 +fr 05_nuclear 2 72 0.0 0.0 +fr 06_coal 2 72 0.0 0.0 +fr 07_gas 2 72 0.0 0.0 +fr 08_non-res 2 72 0.0 0.0 +fr 09_hydro_pump 2 72 0.0 0.0 +fr 01_solar 2 73 1.0 0.0 +fr 02_wind_on 2 73 1.0 0.0 +fr 03_wind_off 2 73 1.0 0.0 +fr 04_res 2 73 1.0 0.0 +fr 05_nuclear 2 73 0.0 0.0 +fr 06_coal 2 73 0.0 0.0 +fr 07_gas 2 73 0.0 0.0 +fr 08_non-res 2 73 0.0 0.0 +fr 09_hydro_pump 2 73 0.0 0.0 +fr 01_solar 2 74 1.0 0.0 +fr 02_wind_on 2 74 1.0 0.0 +fr 03_wind_off 2 74 1.0 0.0 +fr 04_res 2 74 1.0 0.0 +fr 05_nuclear 2 74 0.0 0.0 +fr 06_coal 2 74 0.0 0.0 +fr 07_gas 2 74 0.0 0.0 +fr 08_non-res 2 74 0.0 0.0 +fr 09_hydro_pump 2 74 0.0 0.0 +fr 01_solar 2 75 1.0 0.0 +fr 02_wind_on 2 75 1.0 0.0 +fr 03_wind_off 2 75 1.0 0.0 +fr 04_res 2 75 1.0 0.0 +fr 05_nuclear 2 75 0.0 0.0 +fr 06_coal 2 75 0.0 0.0 +fr 07_gas 2 75 0.0 0.0 +fr 08_non-res 2 75 0.0 0.0 +fr 09_hydro_pump 2 75 0.0 0.0 +fr 01_solar 2 76 1.0 0.0 +fr 02_wind_on 2 76 1.0 0.0 +fr 03_wind_off 2 76 1.0 0.0 +fr 04_res 2 76 1.0 0.0 +fr 05_nuclear 2 76 0.0 0.0 +fr 06_coal 2 76 0.0 0.0 +fr 07_gas 2 76 0.0 0.0 +fr 08_non-res 2 76 0.0 0.0 +fr 09_hydro_pump 2 76 0.0 0.0 +fr 01_solar 2 77 1.0 0.0 +fr 02_wind_on 2 77 1.0 0.0 +fr 03_wind_off 2 77 1.0 0.0 +fr 04_res 2 77 1.0 0.0 +fr 05_nuclear 2 77 0.0 0.0 +fr 06_coal 2 77 0.0 0.0 +fr 07_gas 2 77 0.0 0.0 +fr 08_non-res 2 77 0.0 0.0 +fr 09_hydro_pump 2 77 0.0 0.0 +fr 01_solar 2 78 1.0 0.0 +fr 02_wind_on 2 78 1.0 0.0 +fr 03_wind_off 2 78 1.0 0.0 +fr 04_res 2 78 1.0 0.0 +fr 05_nuclear 2 78 0.0 0.0 +fr 06_coal 2 78 0.0 0.0 +fr 07_gas 2 78 0.0 0.0 +fr 08_non-res 2 78 0.0 0.0 +fr 09_hydro_pump 2 78 0.0 0.0 +fr 01_solar 2 79 1.0 0.0 +fr 02_wind_on 2 79 1.0 0.0 +fr 03_wind_off 2 79 1.0 0.0 +fr 04_res 2 79 1.0 0.0 +fr 05_nuclear 2 79 0.0 0.0 +fr 06_coal 2 79 0.0 0.0 +fr 07_gas 2 79 0.0 0.0 +fr 08_non-res 2 79 0.0 0.0 +fr 09_hydro_pump 2 79 0.0 0.0 +fr 01_solar 2 80 1.0 0.0 +fr 02_wind_on 2 80 1.0 0.0 +fr 03_wind_off 2 80 1.0 0.0 +fr 04_res 2 80 1.0 0.0 +fr 05_nuclear 2 80 0.0 0.0 +fr 06_coal 2 80 0.0 0.0 +fr 07_gas 2 80 0.0 0.0 +fr 08_non-res 2 80 0.0 0.0 +fr 09_hydro_pump 2 80 0.0 0.0 +fr 01_solar 2 81 1.0 0.0 +fr 02_wind_on 2 81 1.0 0.0 +fr 03_wind_off 2 81 1.0 0.0 +fr 04_res 2 81 1.0 0.0 +fr 05_nuclear 2 81 0.0 0.0 +fr 06_coal 2 81 0.0 0.0 +fr 07_gas 2 81 0.0 0.0 +fr 08_non-res 2 81 0.0 0.0 +fr 09_hydro_pump 2 81 0.0 0.0 +fr 01_solar 2 82 1.0 0.0 +fr 02_wind_on 2 82 1.0 0.0 +fr 03_wind_off 2 82 1.0 0.0 +fr 04_res 2 82 1.0 0.0 +fr 05_nuclear 2 82 1.0 0.0 +fr 06_coal 2 82 0.0 0.0 +fr 07_gas 2 82 0.0 0.0 +fr 08_non-res 2 82 0.0 0.0 +fr 09_hydro_pump 2 82 0.0 0.0 +fr 01_solar 2 83 1.0 0.0 +fr 02_wind_on 2 83 1.0 0.0 +fr 03_wind_off 2 83 1.0 0.0 +fr 04_res 2 83 1.0 0.0 +fr 05_nuclear 2 83 1.0 0.0 +fr 06_coal 2 83 0.0 0.0 +fr 07_gas 2 83 0.0 0.0 +fr 08_non-res 2 83 0.0 0.0 +fr 09_hydro_pump 2 83 0.0 0.0 +fr 01_solar 2 84 1.0 0.0 +fr 02_wind_on 2 84 1.0 0.0 +fr 03_wind_off 2 84 1.0 0.0 +fr 04_res 2 84 1.0 0.0 +fr 05_nuclear 2 84 1.0 0.0 +fr 06_coal 2 84 0.0 0.0 +fr 07_gas 2 84 0.0 0.0 +fr 08_non-res 2 84 0.0 0.0 +fr 09_hydro_pump 2 84 0.0 0.0 +fr 01_solar 2 85 1.0 0.0 +fr 02_wind_on 2 85 1.0 0.0 +fr 03_wind_off 2 85 1.0 0.0 +fr 04_res 2 85 1.0 0.0 +fr 05_nuclear 2 85 1.0 0.0 +fr 06_coal 2 85 0.0 0.0 +fr 07_gas 2 85 0.0 0.0 +fr 08_non-res 2 85 0.0 0.0 +fr 09_hydro_pump 2 85 0.0 0.0 +fr 01_solar 2 86 1.0 0.0 +fr 02_wind_on 2 86 1.0 0.0 +fr 03_wind_off 2 86 1.0 0.0 +fr 04_res 2 86 1.0 0.0 +fr 05_nuclear 2 86 1.0 0.0 +fr 06_coal 2 86 0.0 0.0 +fr 07_gas 2 86 0.0 0.0 +fr 08_non-res 2 86 0.0 0.0 +fr 09_hydro_pump 2 86 0.0 0.0 +fr 01_solar 2 87 1.0 0.0 +fr 02_wind_on 2 87 1.0 0.0 +fr 03_wind_off 2 87 1.0 0.0 +fr 04_res 2 87 1.0 0.0 +fr 05_nuclear 2 87 1.0 0.0 +fr 06_coal 2 87 0.0 0.0 +fr 07_gas 2 87 0.0 0.0 +fr 08_non-res 2 87 0.0 0.0 +fr 09_hydro_pump 2 87 0.0 0.0 +fr 01_solar 2 88 1.0 0.0 +fr 02_wind_on 2 88 1.0 0.0 +fr 03_wind_off 2 88 1.0 0.0 +fr 04_res 2 88 1.0 0.0 +fr 05_nuclear 2 88 1.0 0.0 +fr 06_coal 2 88 0.0 0.0 +fr 07_gas 2 88 0.0 0.0 +fr 08_non-res 2 88 0.0 0.0 +fr 09_hydro_pump 2 88 0.0 0.0 +fr 01_solar 2 89 1.0 0.0 +fr 02_wind_on 2 89 1.0 0.0 +fr 03_wind_off 2 89 1.0 0.0 +fr 04_res 2 89 1.0 0.0 +fr 05_nuclear 2 89 1.0 0.0 +fr 06_coal 2 89 0.0 0.0 +fr 07_gas 2 89 0.0 0.0 +fr 08_non-res 2 89 0.0 0.0 +fr 09_hydro_pump 2 89 0.0 0.0 +fr 01_solar 2 90 1.0 0.0 +fr 02_wind_on 2 90 1.0 0.0 +fr 03_wind_off 2 90 1.0 0.0 +fr 04_res 2 90 1.0 0.0 +fr 05_nuclear 2 90 1.0 0.0 +fr 06_coal 2 90 0.0 0.0 +fr 07_gas 2 90 0.0 0.0 +fr 08_non-res 2 90 0.0 0.0 +fr 09_hydro_pump 2 90 0.0 0.0 +fr 01_solar 2 91 1.0 0.0 +fr 02_wind_on 2 91 1.0 0.0 +fr 03_wind_off 2 91 1.0 0.0 +fr 04_res 2 91 1.0 0.0 +fr 05_nuclear 2 91 1.0 0.0 +fr 06_coal 2 91 0.0 0.0 +fr 07_gas 2 91 0.0 0.0 +fr 08_non-res 2 91 0.0 0.0 +fr 09_hydro_pump 2 91 0.0 0.0 +fr 01_solar 2 92 1.0 0.0 +fr 02_wind_on 2 92 1.0 0.0 +fr 03_wind_off 2 92 1.0 0.0 +fr 04_res 2 92 1.0 0.0 +fr 05_nuclear 2 92 1.0 0.0 +fr 06_coal 2 92 0.0 0.0 +fr 07_gas 2 92 0.0 0.0 +fr 08_non-res 2 92 0.0 0.0 +fr 09_hydro_pump 2 92 0.0 0.0 +fr 01_solar 2 93 1.0 0.0 +fr 02_wind_on 2 93 1.0 0.0 +fr 03_wind_off 2 93 1.0 0.0 +fr 04_res 2 93 1.0 0.0 +fr 05_nuclear 2 93 1.0 0.0 +fr 06_coal 2 93 0.0 0.0 +fr 07_gas 2 93 0.0 0.0 +fr 08_non-res 2 93 0.0 0.0 +fr 09_hydro_pump 2 93 0.0 0.0 +fr 01_solar 2 94 1.0 0.0 +fr 02_wind_on 2 94 1.0 0.0 +fr 03_wind_off 2 94 1.0 0.0 +fr 04_res 2 94 1.0 0.0 +fr 05_nuclear 2 94 1.0 0.0 +fr 06_coal 2 94 0.0 0.0 +fr 07_gas 2 94 0.0 0.0 +fr 08_non-res 2 94 0.0 0.0 +fr 09_hydro_pump 2 94 0.0 0.0 +fr 01_solar 2 95 1.0 0.0 +fr 02_wind_on 2 95 1.0 0.0 +fr 03_wind_off 2 95 1.0 0.0 +fr 04_res 2 95 1.0 0.0 +fr 05_nuclear 2 95 1.0 0.0 +fr 06_coal 2 95 0.0 0.0 +fr 07_gas 2 95 0.0 0.0 +fr 08_non-res 2 95 0.0 0.0 +fr 09_hydro_pump 2 95 0.0 0.0 +fr 01_solar 2 96 1.0 0.0 +fr 02_wind_on 2 96 1.0 0.0 +fr 03_wind_off 2 96 1.0 0.0 +fr 04_res 2 96 1.0 0.0 +fr 05_nuclear 2 96 1.0 0.0 +fr 06_coal 2 96 0.0 0.0 +fr 07_gas 2 96 0.0 0.0 +fr 08_non-res 2 96 0.0 0.0 +fr 09_hydro_pump 2 96 0.0 0.0 +fr 01_solar 2 97 1.0 0.0 +fr 02_wind_on 2 97 1.0 0.0 +fr 03_wind_off 2 97 1.0 0.0 +fr 04_res 2 97 1.0 0.0 +fr 05_nuclear 2 97 1.0 0.0 +fr 06_coal 2 97 0.0 0.0 +fr 07_gas 2 97 0.0 0.0 +fr 08_non-res 2 97 0.0 0.0 +fr 09_hydro_pump 2 97 0.0 0.0 +fr 01_solar 2 98 1.0 0.0 +fr 02_wind_on 2 98 1.0 0.0 +fr 03_wind_off 2 98 1.0 0.0 +fr 04_res 2 98 1.0 0.0 +fr 05_nuclear 2 98 1.0 0.0 +fr 06_coal 2 98 0.0 0.0 +fr 07_gas 2 98 0.0 0.0 +fr 08_non-res 2 98 0.0 0.0 +fr 09_hydro_pump 2 98 0.0 0.0 +fr 01_solar 2 99 1.0 0.0 +fr 02_wind_on 2 99 1.0 0.0 +fr 03_wind_off 2 99 1.0 0.0 +fr 04_res 2 99 1.0 0.0 +fr 05_nuclear 2 99 1.0 0.0 +fr 06_coal 2 99 0.0 0.0 +fr 07_gas 2 99 0.0 0.0 +fr 08_non-res 2 99 0.0 0.0 +fr 09_hydro_pump 2 99 0.0 0.0 +fr 01_solar 2 100 1.0 0.0 +fr 02_wind_on 2 100 1.0 0.0 +fr 03_wind_off 2 100 1.0 0.0 +fr 04_res 2 100 1.0 0.0 +fr 05_nuclear 2 100 1.0 0.0 +fr 06_coal 2 100 0.0 0.0 +fr 07_gas 2 100 0.0 0.0 +fr 08_non-res 2 100 0.0 0.0 +fr 09_hydro_pump 2 100 0.0 0.0 +fr 01_solar 2 101 1.0 0.0 +fr 02_wind_on 2 101 1.0 0.0 +fr 03_wind_off 2 101 1.0 0.0 +fr 04_res 2 101 1.0 0.0 +fr 05_nuclear 2 101 1.0 0.0 +fr 06_coal 2 101 0.0 0.0 +fr 07_gas 2 101 0.0 0.0 +fr 08_non-res 2 101 0.0 0.0 +fr 09_hydro_pump 2 101 0.0 0.0 +fr 01_solar 2 102 1.0 0.0 +fr 02_wind_on 2 102 1.0 0.0 +fr 03_wind_off 2 102 1.0 0.0 +fr 04_res 2 102 1.0 0.0 +fr 05_nuclear 2 102 1.0 0.0 +fr 06_coal 2 102 1.0 0.0 +fr 07_gas 2 102 0.0 0.0 +fr 08_non-res 2 102 0.0 0.0 +fr 09_hydro_pump 2 102 0.0 0.0 +fr 01_solar 2 103 1.0 0.0 +fr 02_wind_on 2 103 1.0 0.0 +fr 03_wind_off 2 103 1.0 0.0 +fr 04_res 2 103 1.0 0.0 +fr 05_nuclear 2 103 1.0 0.0 +fr 06_coal 2 103 1.0 0.0 +fr 07_gas 2 103 0.0 0.0 +fr 08_non-res 2 103 0.0 0.0 +fr 09_hydro_pump 2 103 0.0 0.0 +fr 01_solar 2 104 1.0 0.0 +fr 02_wind_on 2 104 1.0 0.0 +fr 03_wind_off 2 104 1.0 0.0 +fr 04_res 2 104 1.0 0.0 +fr 05_nuclear 2 104 1.0 0.0 +fr 06_coal 2 104 1.0 0.0 +fr 07_gas 2 104 0.0 0.0 +fr 08_non-res 2 104 0.0 0.0 +fr 09_hydro_pump 2 104 0.0 0.0 +fr 01_solar 2 105 1.0 0.0 +fr 02_wind_on 2 105 1.0 0.0 +fr 03_wind_off 2 105 1.0 0.0 +fr 04_res 2 105 1.0 0.0 +fr 05_nuclear 2 105 1.0 0.0 +fr 06_coal 2 105 1.0 0.0 +fr 07_gas 2 105 0.0 0.0 +fr 08_non-res 2 105 0.0 0.0 +fr 09_hydro_pump 2 105 0.0 0.0 +fr 01_solar 2 106 1.0 0.0 +fr 02_wind_on 2 106 1.0 0.0 +fr 03_wind_off 2 106 1.0 0.0 +fr 04_res 2 106 1.0 0.0 +fr 05_nuclear 2 106 1.0 0.0 +fr 06_coal 2 106 1.0 0.0 +fr 07_gas 2 106 0.0 0.0 +fr 08_non-res 2 106 0.0 0.0 +fr 09_hydro_pump 2 106 0.0 0.0 +fr 01_solar 2 107 1.0 0.0 +fr 02_wind_on 2 107 1.0 0.0 +fr 03_wind_off 2 107 1.0 0.0 +fr 04_res 2 107 1.0 0.0 +fr 05_nuclear 2 107 1.0 0.0 +fr 06_coal 2 107 1.0 0.0 +fr 07_gas 2 107 0.0 0.0 +fr 08_non-res 2 107 0.0 0.0 +fr 09_hydro_pump 2 107 0.0 0.0 +fr 01_solar 2 108 1.0 0.0 +fr 02_wind_on 2 108 1.0 0.0 +fr 03_wind_off 2 108 1.0 0.0 +fr 04_res 2 108 1.0 0.0 +fr 05_nuclear 2 108 1.0 0.0 +fr 06_coal 2 108 1.0 0.0 +fr 07_gas 2 108 0.0 0.0 +fr 08_non-res 2 108 0.0 0.0 +fr 09_hydro_pump 2 108 0.0 0.0 +fr 01_solar 2 109 1.0 0.0 +fr 02_wind_on 2 109 1.0 0.0 +fr 03_wind_off 2 109 1.0 0.0 +fr 04_res 2 109 1.0 0.0 +fr 05_nuclear 2 109 1.0 0.0 +fr 06_coal 2 109 1.0 0.0 +fr 07_gas 2 109 0.0 0.0 +fr 08_non-res 2 109 0.0 0.0 +fr 09_hydro_pump 2 109 0.0 0.0 +fr 01_solar 2 110 1.0 0.0 +fr 02_wind_on 2 110 1.0 0.0 +fr 03_wind_off 2 110 1.0 0.0 +fr 04_res 2 110 1.0 0.0 +fr 05_nuclear 2 110 1.0 0.0 +fr 06_coal 2 110 1.0 0.0 +fr 07_gas 2 110 0.0 0.0 +fr 08_non-res 2 110 0.0 0.0 +fr 09_hydro_pump 2 110 0.0 0.0 +fr 01_solar 2 111 1.0 0.0 +fr 02_wind_on 2 111 1.0 0.0 +fr 03_wind_off 2 111 1.0 0.0 +fr 04_res 2 111 1.0 0.0 +fr 05_nuclear 2 111 1.0 0.0 +fr 06_coal 2 111 1.0 0.0 +fr 07_gas 2 111 0.0 0.0 +fr 08_non-res 2 111 0.0 0.0 +fr 09_hydro_pump 2 111 0.0 0.0 +fr 01_solar 2 112 1.0 0.0 +fr 02_wind_on 2 112 1.0 0.0 +fr 03_wind_off 2 112 1.0 0.0 +fr 04_res 2 112 1.0 0.0 +fr 05_nuclear 2 112 1.0 0.0 +fr 06_coal 2 112 1.0 0.0 +fr 07_gas 2 112 0.0 0.0 +fr 08_non-res 2 112 0.0 0.0 +fr 09_hydro_pump 2 112 0.0 0.0 +fr 01_solar 2 113 1.0 0.0 +fr 02_wind_on 2 113 1.0 0.0 +fr 03_wind_off 2 113 1.0 0.0 +fr 04_res 2 113 1.0 0.0 +fr 05_nuclear 2 113 1.0 0.0 +fr 06_coal 2 113 1.0 0.0 +fr 07_gas 2 113 0.0 0.0 +fr 08_non-res 2 113 0.0 0.0 +fr 09_hydro_pump 2 113 0.0 0.0 +fr 01_solar 2 114 1.0 0.0 +fr 02_wind_on 2 114 1.0 0.0 +fr 03_wind_off 2 114 1.0 0.0 +fr 04_res 2 114 1.0 0.0 +fr 05_nuclear 2 114 1.0 0.0 +fr 06_coal 2 114 1.0 0.0 +fr 07_gas 2 114 0.0 0.0 +fr 08_non-res 2 114 0.0 0.0 +fr 09_hydro_pump 2 114 0.0 0.0 +fr 01_solar 2 115 1.0 0.0 +fr 02_wind_on 2 115 1.0 0.0 +fr 03_wind_off 2 115 1.0 0.0 +fr 04_res 2 115 1.0 0.0 +fr 05_nuclear 2 115 1.0 0.0 +fr 06_coal 2 115 1.0 0.0 +fr 07_gas 2 115 0.0 0.0 +fr 08_non-res 2 115 0.0 0.0 +fr 09_hydro_pump 2 115 0.0 0.0 +fr 01_solar 2 116 1.0 0.0 +fr 02_wind_on 2 116 1.0 0.0 +fr 03_wind_off 2 116 1.0 0.0 +fr 04_res 2 116 1.0 0.0 +fr 05_nuclear 2 116 1.0 0.0 +fr 06_coal 2 116 1.0 0.0 +fr 07_gas 2 116 0.0 0.0 +fr 08_non-res 2 116 0.0 0.0 +fr 09_hydro_pump 2 116 0.0 0.0 +fr 01_solar 2 117 1.0 0.0 +fr 02_wind_on 2 117 1.0 0.0 +fr 03_wind_off 2 117 1.0 0.0 +fr 04_res 2 117 1.0 0.0 +fr 05_nuclear 2 117 1.0 0.0 +fr 06_coal 2 117 1.0 0.0 +fr 07_gas 2 117 0.0 0.0 +fr 08_non-res 2 117 0.0 0.0 +fr 09_hydro_pump 2 117 0.0 0.0 +fr 01_solar 2 118 1.0 0.0 +fr 02_wind_on 2 118 1.0 0.0 +fr 03_wind_off 2 118 1.0 0.0 +fr 04_res 2 118 1.0 0.0 +fr 05_nuclear 2 118 1.0 0.0 +fr 06_coal 2 118 1.0 0.0 +fr 07_gas 2 118 0.0 0.0 +fr 08_non-res 2 118 0.0 0.0 +fr 09_hydro_pump 2 118 0.0 0.0 +fr 01_solar 2 119 1.0 0.0 +fr 02_wind_on 2 119 1.0 0.0 +fr 03_wind_off 2 119 1.0 0.0 +fr 04_res 2 119 1.0 0.0 +fr 05_nuclear 2 119 1.0 0.0 +fr 06_coal 2 119 1.0 0.0 +fr 07_gas 2 119 0.0 0.0 +fr 08_non-res 2 119 0.0 0.0 +fr 09_hydro_pump 2 119 0.0 0.0 +fr 01_solar 2 120 1.0 0.0 +fr 02_wind_on 2 120 1.0 0.0 +fr 03_wind_off 2 120 1.0 0.0 +fr 04_res 2 120 1.0 0.0 +fr 05_nuclear 2 120 1.0 0.0 +fr 06_coal 2 120 1.0 0.0 +fr 07_gas 2 120 0.0 0.0 +fr 08_non-res 2 120 0.0 0.0 +fr 09_hydro_pump 2 120 0.0 0.0 +fr 01_solar 2 121 1.0 0.0 +fr 02_wind_on 2 121 1.0 0.0 +fr 03_wind_off 2 121 1.0 0.0 +fr 04_res 2 121 1.0 0.0 +fr 05_nuclear 2 121 1.0 0.0 +fr 06_coal 2 121 1.0 0.0 +fr 07_gas 2 121 0.0 0.0 +fr 08_non-res 2 121 0.0 0.0 +fr 09_hydro_pump 2 121 0.0 0.0 +fr 01_solar 2 122 1.0 0.0 +fr 02_wind_on 2 122 1.0 0.0 +fr 03_wind_off 2 122 1.0 0.0 +fr 04_res 2 122 1.0 0.0 +fr 05_nuclear 2 122 1.0 0.0 +fr 06_coal 2 122 1.0 0.0 +fr 07_gas 2 122 1.0 0.0 +fr 08_non-res 2 122 0.0 0.0 +fr 09_hydro_pump 2 122 0.0 0.0 +fr 01_solar 2 123 1.0 0.0 +fr 02_wind_on 2 123 1.0 0.0 +fr 03_wind_off 2 123 1.0 0.0 +fr 04_res 2 123 1.0 0.0 +fr 05_nuclear 2 123 1.0 0.0 +fr 06_coal 2 123 1.0 0.0 +fr 07_gas 2 123 1.0 0.0 +fr 08_non-res 2 123 0.0 0.0 +fr 09_hydro_pump 2 123 0.0 0.0 +fr 01_solar 2 124 1.0 0.0 +fr 02_wind_on 2 124 1.0 0.0 +fr 03_wind_off 2 124 1.0 0.0 +fr 04_res 2 124 1.0 0.0 +fr 05_nuclear 2 124 1.0 0.0 +fr 06_coal 2 124 1.0 0.0 +fr 07_gas 2 124 1.0 0.0 +fr 08_non-res 2 124 0.0 0.0 +fr 09_hydro_pump 2 124 0.0 0.0 +fr 01_solar 2 125 1.0 0.0 +fr 02_wind_on 2 125 1.0 0.0 +fr 03_wind_off 2 125 1.0 0.0 +fr 04_res 2 125 1.0 0.0 +fr 05_nuclear 2 125 1.0 0.0 +fr 06_coal 2 125 1.0 0.0 +fr 07_gas 2 125 1.0 0.0 +fr 08_non-res 2 125 0.0 0.0 +fr 09_hydro_pump 2 125 0.0 0.0 +fr 01_solar 2 126 1.0 0.0 +fr 02_wind_on 2 126 1.0 0.0 +fr 03_wind_off 2 126 1.0 0.0 +fr 04_res 2 126 1.0 0.0 +fr 05_nuclear 2 126 1.0 0.0 +fr 06_coal 2 126 1.0 0.0 +fr 07_gas 2 126 1.0 0.0 +fr 08_non-res 2 126 0.0 0.0 +fr 09_hydro_pump 2 126 0.0 0.0 +fr 01_solar 2 127 1.0 0.0 +fr 02_wind_on 2 127 1.0 0.0 +fr 03_wind_off 2 127 1.0 0.0 +fr 04_res 2 127 1.0 0.0 +fr 05_nuclear 2 127 1.0 0.0 +fr 06_coal 2 127 1.0 0.0 +fr 07_gas 2 127 1.0 0.0 +fr 08_non-res 2 127 0.0 0.0 +fr 09_hydro_pump 2 127 0.0 0.0 +fr 01_solar 2 128 1.0 0.0 +fr 02_wind_on 2 128 1.0 0.0 +fr 03_wind_off 2 128 1.0 0.0 +fr 04_res 2 128 1.0 0.0 +fr 05_nuclear 2 128 1.0 0.0 +fr 06_coal 2 128 1.0 0.0 +fr 07_gas 2 128 1.0 0.0 +fr 08_non-res 2 128 0.0 0.0 +fr 09_hydro_pump 2 128 0.0 0.0 +fr 01_solar 2 129 1.0 0.0 +fr 02_wind_on 2 129 1.0 0.0 +fr 03_wind_off 2 129 1.0 0.0 +fr 04_res 2 129 1.0 0.0 +fr 05_nuclear 2 129 1.0 0.0 +fr 06_coal 2 129 1.0 0.0 +fr 07_gas 2 129 1.0 0.0 +fr 08_non-res 2 129 0.0 0.0 +fr 09_hydro_pump 2 129 0.0 0.0 +fr 01_solar 2 130 1.0 0.0 +fr 02_wind_on 2 130 1.0 0.0 +fr 03_wind_off 2 130 1.0 0.0 +fr 04_res 2 130 1.0 0.0 +fr 05_nuclear 2 130 1.0 0.0 +fr 06_coal 2 130 1.0 0.0 +fr 07_gas 2 130 1.0 0.0 +fr 08_non-res 2 130 0.0 0.0 +fr 09_hydro_pump 2 130 0.0 0.0 +fr 01_solar 2 131 1.0 0.0 +fr 02_wind_on 2 131 1.0 0.0 +fr 03_wind_off 2 131 1.0 0.0 +fr 04_res 2 131 1.0 0.0 +fr 05_nuclear 2 131 1.0 0.0 +fr 06_coal 2 131 1.0 0.0 +fr 07_gas 2 131 1.0 0.0 +fr 08_non-res 2 131 0.0 0.0 +fr 09_hydro_pump 2 131 0.0 0.0 +fr 01_solar 2 132 1.0 0.0 +fr 02_wind_on 2 132 1.0 0.0 +fr 03_wind_off 2 132 1.0 0.0 +fr 04_res 2 132 1.0 0.0 +fr 05_nuclear 2 132 1.0 0.0 +fr 06_coal 2 132 1.0 0.0 +fr 07_gas 2 132 1.0 0.0 +fr 08_non-res 2 132 0.0 0.0 +fr 09_hydro_pump 2 132 0.0 0.0 +fr 01_solar 2 133 1.0 0.0 +fr 02_wind_on 2 133 1.0 0.0 +fr 03_wind_off 2 133 1.0 0.0 +fr 04_res 2 133 1.0 0.0 +fr 05_nuclear 2 133 1.0 0.0 +fr 06_coal 2 133 1.0 0.0 +fr 07_gas 2 133 1.0 0.0 +fr 08_non-res 2 133 0.0 0.0 +fr 09_hydro_pump 2 133 0.0 0.0 +fr 01_solar 2 134 1.0 0.0 +fr 02_wind_on 2 134 1.0 0.0 +fr 03_wind_off 2 134 1.0 0.0 +fr 04_res 2 134 1.0 0.0 +fr 05_nuclear 2 134 1.0 0.0 +fr 06_coal 2 134 1.0 0.0 +fr 07_gas 2 134 1.0 0.0 +fr 08_non-res 2 134 0.0 0.0 +fr 09_hydro_pump 2 134 0.0 0.0 +fr 01_solar 2 135 1.0 0.0 +fr 02_wind_on 2 135 1.0 0.0 +fr 03_wind_off 2 135 1.0 0.0 +fr 04_res 2 135 1.0 0.0 +fr 05_nuclear 2 135 1.0 0.0 +fr 06_coal 2 135 1.0 0.0 +fr 07_gas 2 135 1.0 0.0 +fr 08_non-res 2 135 0.0 0.0 +fr 09_hydro_pump 2 135 0.0 0.0 +fr 01_solar 2 136 1.0 0.0 +fr 02_wind_on 2 136 1.0 0.0 +fr 03_wind_off 2 136 1.0 0.0 +fr 04_res 2 136 1.0 0.0 +fr 05_nuclear 2 136 1.0 0.0 +fr 06_coal 2 136 1.0 0.0 +fr 07_gas 2 136 1.0 0.0 +fr 08_non-res 2 136 0.0 0.0 +fr 09_hydro_pump 2 136 0.0 0.0 +fr 01_solar 2 137 1.0 0.0 +fr 02_wind_on 2 137 1.0 0.0 +fr 03_wind_off 2 137 1.0 0.0 +fr 04_res 2 137 1.0 0.0 +fr 05_nuclear 2 137 1.0 0.0 +fr 06_coal 2 137 1.0 0.0 +fr 07_gas 2 137 1.0 0.0 +fr 08_non-res 2 137 0.0 0.0 +fr 09_hydro_pump 2 137 0.0 0.0 +fr 01_solar 2 138 1.0 0.0 +fr 02_wind_on 2 138 1.0 0.0 +fr 03_wind_off 2 138 1.0 0.0 +fr 04_res 2 138 1.0 0.0 +fr 05_nuclear 2 138 1.0 0.0 +fr 06_coal 2 138 1.0 0.0 +fr 07_gas 2 138 1.0 0.0 +fr 08_non-res 2 138 0.0 0.0 +fr 09_hydro_pump 2 138 0.0 0.0 +fr 01_solar 2 139 1.0 0.0 +fr 02_wind_on 2 139 1.0 0.0 +fr 03_wind_off 2 139 1.0 0.0 +fr 04_res 2 139 1.0 0.0 +fr 05_nuclear 2 139 1.0 0.0 +fr 06_coal 2 139 1.0 0.0 +fr 07_gas 2 139 1.0 0.0 +fr 08_non-res 2 139 0.0 0.0 +fr 09_hydro_pump 2 139 0.0 0.0 +fr 01_solar 2 140 1.0 0.0 +fr 02_wind_on 2 140 1.0 0.0 +fr 03_wind_off 2 140 1.0 0.0 +fr 04_res 2 140 1.0 0.0 +fr 05_nuclear 2 140 1.0 0.0 +fr 06_coal 2 140 1.0 0.0 +fr 07_gas 2 140 1.0 0.0 +fr 08_non-res 2 140 0.0 0.0 +fr 09_hydro_pump 2 140 0.0 0.0 +fr 01_solar 2 141 1.0 0.0 +fr 02_wind_on 2 141 1.0 0.0 +fr 03_wind_off 2 141 1.0 0.0 +fr 04_res 2 141 1.0 0.0 +fr 05_nuclear 2 141 1.0 0.0 +fr 06_coal 2 141 1.0 0.0 +fr 07_gas 2 141 1.0 0.0 +fr 08_non-res 2 141 0.0 0.0 +fr 09_hydro_pump 2 141 0.0 0.0 +fr 01_solar 2 142 1.0 0.0 +fr 02_wind_on 2 142 1.0 0.0 +fr 03_wind_off 2 142 1.0 0.0 +fr 04_res 2 142 1.0 0.0 +fr 05_nuclear 2 142 1.0 0.0 +fr 06_coal 2 142 1.0 0.0 +fr 07_gas 2 142 1.0 0.0 +fr 08_non-res 2 142 1.0 0.0 +fr 09_hydro_pump 2 142 0.0 0.0 +fr 01_solar 2 143 1.0 0.0 +fr 02_wind_on 2 143 1.0 0.0 +fr 03_wind_off 2 143 1.0 0.0 +fr 04_res 2 143 1.0 0.0 +fr 05_nuclear 2 143 1.0 0.0 +fr 06_coal 2 143 1.0 0.0 +fr 07_gas 2 143 1.0 0.0 +fr 08_non-res 2 143 1.0 0.0 +fr 09_hydro_pump 2 143 0.0 0.0 +fr 01_solar 2 144 1.0 0.0 +fr 02_wind_on 2 144 1.0 0.0 +fr 03_wind_off 2 144 1.0 0.0 +fr 04_res 2 144 1.0 0.0 +fr 05_nuclear 2 144 1.0 0.0 +fr 06_coal 2 144 1.0 0.0 +fr 07_gas 2 144 1.0 0.0 +fr 08_non-res 2 144 1.0 0.0 +fr 09_hydro_pump 2 144 0.0 0.0 +fr 01_solar 2 145 1.0 0.0 +fr 02_wind_on 2 145 1.0 0.0 +fr 03_wind_off 2 145 1.0 0.0 +fr 04_res 2 145 1.0 0.0 +fr 05_nuclear 2 145 1.0 0.0 +fr 06_coal 2 145 1.0 0.0 +fr 07_gas 2 145 1.0 0.0 +fr 08_non-res 2 145 1.0 0.0 +fr 09_hydro_pump 2 145 0.0 0.0 +fr 01_solar 2 146 1.0 0.0 +fr 02_wind_on 2 146 1.0 0.0 +fr 03_wind_off 2 146 1.0 0.0 +fr 04_res 2 146 1.0 0.0 +fr 05_nuclear 2 146 1.0 0.0 +fr 06_coal 2 146 1.0 0.0 +fr 07_gas 2 146 1.0 0.0 +fr 08_non-res 2 146 1.0 0.0 +fr 09_hydro_pump 2 146 0.0 0.0 +fr 01_solar 2 147 1.0 0.0 +fr 02_wind_on 2 147 1.0 0.0 +fr 03_wind_off 2 147 1.0 0.0 +fr 04_res 2 147 1.0 0.0 +fr 05_nuclear 2 147 1.0 0.0 +fr 06_coal 2 147 1.0 0.0 +fr 07_gas 2 147 1.0 0.0 +fr 08_non-res 2 147 1.0 0.0 +fr 09_hydro_pump 2 147 0.0 0.0 +fr 01_solar 2 148 1.0 0.0 +fr 02_wind_on 2 148 1.0 0.0 +fr 03_wind_off 2 148 1.0 0.0 +fr 04_res 2 148 1.0 0.0 +fr 05_nuclear 2 148 1.0 0.0 +fr 06_coal 2 148 1.0 0.0 +fr 07_gas 2 148 1.0 0.0 +fr 08_non-res 2 148 1.0 0.0 +fr 09_hydro_pump 2 148 0.0 0.0 +fr 01_solar 2 149 1.0 0.0 +fr 02_wind_on 2 149 1.0 0.0 +fr 03_wind_off 2 149 1.0 0.0 +fr 04_res 2 149 1.0 0.0 +fr 05_nuclear 2 149 1.0 0.0 +fr 06_coal 2 149 1.0 0.0 +fr 07_gas 2 149 1.0 0.0 +fr 08_non-res 2 149 1.0 0.0 +fr 09_hydro_pump 2 149 0.0 0.0 +fr 01_solar 2 150 1.0 0.0 +fr 02_wind_on 2 150 1.0 0.0 +fr 03_wind_off 2 150 1.0 0.0 +fr 04_res 2 150 1.0 0.0 +fr 05_nuclear 2 150 1.0 0.0 +fr 06_coal 2 150 1.0 0.0 +fr 07_gas 2 150 1.0 0.0 +fr 08_non-res 2 150 1.0 0.0 +fr 09_hydro_pump 2 150 0.0 0.0 +fr 01_solar 2 151 1.0 0.0 +fr 02_wind_on 2 151 1.0 0.0 +fr 03_wind_off 2 151 1.0 0.0 +fr 04_res 2 151 1.0 0.0 +fr 05_nuclear 2 151 1.0 0.0 +fr 06_coal 2 151 1.0 0.0 +fr 07_gas 2 151 1.0 0.0 +fr 08_non-res 2 151 1.0 0.0 +fr 09_hydro_pump 2 151 0.0 0.0 +fr 01_solar 2 152 1.0 0.0 +fr 02_wind_on 2 152 1.0 0.0 +fr 03_wind_off 2 152 1.0 0.0 +fr 04_res 2 152 1.0 0.0 +fr 05_nuclear 2 152 1.0 0.0 +fr 06_coal 2 152 1.0 0.0 +fr 07_gas 2 152 1.0 0.0 +fr 08_non-res 2 152 1.0 0.0 +fr 09_hydro_pump 2 152 0.0 0.0 +fr 01_solar 2 153 1.0 0.0 +fr 02_wind_on 2 153 1.0 0.0 +fr 03_wind_off 2 153 1.0 0.0 +fr 04_res 2 153 1.0 0.0 +fr 05_nuclear 2 153 1.0 0.0 +fr 06_coal 2 153 1.0 0.0 +fr 07_gas 2 153 1.0 0.0 +fr 08_non-res 2 153 1.0 0.0 +fr 09_hydro_pump 2 153 0.0 0.0 +fr 01_solar 2 154 1.0 0.0 +fr 02_wind_on 2 154 1.0 0.0 +fr 03_wind_off 2 154 1.0 0.0 +fr 04_res 2 154 1.0 0.0 +fr 05_nuclear 2 154 1.0 0.0 +fr 06_coal 2 154 1.0 0.0 +fr 07_gas 2 154 1.0 0.0 +fr 08_non-res 2 154 1.0 0.0 +fr 09_hydro_pump 2 154 0.0 0.0 +fr 01_solar 2 155 1.0 0.0 +fr 02_wind_on 2 155 1.0 0.0 +fr 03_wind_off 2 155 1.0 0.0 +fr 04_res 2 155 1.0 0.0 +fr 05_nuclear 2 155 1.0 0.0 +fr 06_coal 2 155 1.0 0.0 +fr 07_gas 2 155 1.0 0.0 +fr 08_non-res 2 155 1.0 0.0 +fr 09_hydro_pump 2 155 0.0 0.0 +fr 01_solar 2 156 1.0 0.0 +fr 02_wind_on 2 156 1.0 0.0 +fr 03_wind_off 2 156 1.0 0.0 +fr 04_res 2 156 1.0 0.0 +fr 05_nuclear 2 156 1.0 0.0 +fr 06_coal 2 156 1.0 0.0 +fr 07_gas 2 156 1.0 0.0 +fr 08_non-res 2 156 1.0 0.0 +fr 09_hydro_pump 2 156 0.0 0.0 +fr 01_solar 2 157 1.0 0.0 +fr 02_wind_on 2 157 1.0 0.0 +fr 03_wind_off 2 157 1.0 0.0 +fr 04_res 2 157 1.0 0.0 +fr 05_nuclear 2 157 1.0 0.0 +fr 06_coal 2 157 1.0 0.0 +fr 07_gas 2 157 1.0 0.0 +fr 08_non-res 2 157 1.0 0.0 +fr 09_hydro_pump 2 157 0.0 0.0 +fr 01_solar 2 158 1.0 0.0 +fr 02_wind_on 2 158 1.0 0.0 +fr 03_wind_off 2 158 1.0 0.0 +fr 04_res 2 158 1.0 0.0 +fr 05_nuclear 2 158 1.0 0.0 +fr 06_coal 2 158 1.0 0.0 +fr 07_gas 2 158 1.0 0.0 +fr 08_non-res 2 158 1.0 0.0 +fr 09_hydro_pump 2 158 0.0 0.0 +fr 01_solar 2 159 1.0 0.0 +fr 02_wind_on 2 159 1.0 0.0 +fr 03_wind_off 2 159 1.0 0.0 +fr 04_res 2 159 1.0 0.0 +fr 05_nuclear 2 159 1.0 0.0 +fr 06_coal 2 159 1.0 0.0 +fr 07_gas 2 159 1.0 0.0 +fr 08_non-res 2 159 1.0 0.0 +fr 09_hydro_pump 2 159 0.0 0.0 +fr 01_solar 2 160 1.0 0.0 +fr 02_wind_on 2 160 1.0 0.0 +fr 03_wind_off 2 160 1.0 0.0 +fr 04_res 2 160 1.0 0.0 +fr 05_nuclear 2 160 1.0 0.0 +fr 06_coal 2 160 1.0 0.0 +fr 07_gas 2 160 1.0 0.0 +fr 08_non-res 2 160 1.0 0.0 +fr 09_hydro_pump 2 160 0.0 0.0 +fr 01_solar 2 161 1.0 0.0 +fr 02_wind_on 2 161 1.0 0.0 +fr 03_wind_off 2 161 1.0 0.0 +fr 04_res 2 161 1.0 0.0 +fr 05_nuclear 2 161 1.0 0.0 +fr 06_coal 2 161 1.0 0.0 +fr 07_gas 2 161 1.0 0.0 +fr 08_non-res 2 161 1.0 0.0 +fr 09_hydro_pump 2 161 0.0 0.0 +fr 01_solar 2 162 1.0 0.0 +fr 02_wind_on 2 162 1.0 0.0 +fr 03_wind_off 2 162 1.0 0.0 +fr 04_res 2 162 1.0 0.0 +fr 05_nuclear 2 162 1.0 0.0 +fr 06_coal 2 162 1.0 0.0 +fr 07_gas 2 162 1.0 0.0 +fr 08_non-res 2 162 1.0 0.0 +fr 09_hydro_pump 2 162 1.0 0.0 +fr 01_solar 2 163 1.0 0.0 +fr 02_wind_on 2 163 1.0 0.0 +fr 03_wind_off 2 163 1.0 0.0 +fr 04_res 2 163 1.0 0.0 +fr 05_nuclear 2 163 1.0 0.0 +fr 06_coal 2 163 1.0 0.0 +fr 07_gas 2 163 1.0 0.0 +fr 08_non-res 2 163 1.0 0.0 +fr 09_hydro_pump 2 163 1.0 0.0 +fr 01_solar 2 164 1.0 0.0 +fr 02_wind_on 2 164 1.0 0.0 +fr 03_wind_off 2 164 1.0 0.0 +fr 04_res 2 164 1.0 0.0 +fr 05_nuclear 2 164 1.0 0.0 +fr 06_coal 2 164 1.0 0.0 +fr 07_gas 2 164 1.0 0.0 +fr 08_non-res 2 164 1.0 0.0 +fr 09_hydro_pump 2 164 1.0 0.0 +fr 01_solar 2 165 1.0 0.0 +fr 02_wind_on 2 165 1.0 0.0 +fr 03_wind_off 2 165 1.0 0.0 +fr 04_res 2 165 1.0 0.0 +fr 05_nuclear 2 165 1.0 0.0 +fr 06_coal 2 165 1.0 0.0 +fr 07_gas 2 165 1.0 0.0 +fr 08_non-res 2 165 1.0 0.0 +fr 09_hydro_pump 2 165 1.0 0.0 +fr 01_solar 2 166 1.0 0.0 +fr 02_wind_on 2 166 1.0 0.0 +fr 03_wind_off 2 166 1.0 0.0 +fr 04_res 2 166 1.0 0.0 +fr 05_nuclear 2 166 1.0 0.0 +fr 06_coal 2 166 1.0 0.0 +fr 07_gas 2 166 1.0 0.0 +fr 08_non-res 2 166 1.0 0.0 +fr 09_hydro_pump 2 166 1.0 0.0 +fr 01_solar 2 167 1.0 0.0 +fr 02_wind_on 2 167 1.0 0.0 +fr 03_wind_off 2 167 1.0 0.0 +fr 04_res 2 167 1.0 0.0 +fr 05_nuclear 2 167 1.0 0.0 +fr 06_coal 2 167 1.0 0.0 +fr 07_gas 2 167 1.0 0.0 +fr 08_non-res 2 167 1.0 0.0 +fr 09_hydro_pump 2 167 1.0 0.0 +fr 01_solar 2 168 1.0 0.0 +fr 02_wind_on 2 168 1.0 0.0 +fr 03_wind_off 2 168 1.0 0.0 +fr 04_res 2 168 1.0 0.0 +fr 05_nuclear 2 168 1.0 0.0 +fr 06_coal 2 168 1.0 0.0 +fr 07_gas 2 168 1.0 0.0 +fr 08_non-res 2 168 1.0 0.0 +fr 09_hydro_pump 2 168 1.0 0.0 +fr 01_solar 2 169 0.0 0.0 +fr 02_wind_on 2 169 0.0 0.0 +fr 03_wind_off 2 169 0.0 0.0 +fr 04_res 2 169 0.0 0.0 +fr 05_nuclear 2 169 0.0 0.0 +fr 06_coal 2 169 0.0 0.0 +fr 07_gas 2 169 0.0 0.0 +fr 08_non-res 2 169 0.0 0.0 +fr 09_hydro_pump 2 169 0.0 0.0 +fr 01_solar 2 170 1.0 0.0 +fr 02_wind_on 2 170 0.0 0.0 +fr 03_wind_off 2 170 0.0 0.0 +fr 04_res 2 170 0.0 0.0 +fr 05_nuclear 2 170 0.0 0.0 +fr 06_coal 2 170 0.0 0.0 +fr 07_gas 2 170 0.0 0.0 +fr 08_non-res 2 170 0.0 0.0 +fr 09_hydro_pump 2 170 0.0 0.0 +fr 01_solar 2 171 1.0 0.0 +fr 02_wind_on 2 171 0.0 0.0 +fr 03_wind_off 2 171 0.0 0.0 +fr 04_res 2 171 0.0 0.0 +fr 05_nuclear 2 171 0.0 0.0 +fr 06_coal 2 171 0.0 0.0 +fr 07_gas 2 171 0.0 0.0 +fr 08_non-res 2 171 0.0 0.0 +fr 09_hydro_pump 2 171 0.0 0.0 +fr 01_solar 2 172 1.0 0.0 +fr 02_wind_on 2 172 0.0 0.0 +fr 03_wind_off 2 172 0.0 0.0 +fr 04_res 2 172 0.0 0.0 +fr 05_nuclear 2 172 0.0 0.0 +fr 06_coal 2 172 0.0 0.0 +fr 07_gas 2 172 0.0 0.0 +fr 08_non-res 2 172 0.0 0.0 +fr 09_hydro_pump 2 172 0.0 0.0 +fr 01_solar 2 173 1.0 0.0 +fr 02_wind_on 2 173 0.0 0.0 +fr 03_wind_off 2 173 0.0 0.0 +fr 04_res 2 173 0.0 0.0 +fr 05_nuclear 2 173 0.0 0.0 +fr 06_coal 2 173 0.0 0.0 +fr 07_gas 2 173 0.0 0.0 +fr 08_non-res 2 173 0.0 0.0 +fr 09_hydro_pump 2 173 0.0 0.0 +fr 01_solar 2 174 1.0 0.0 +fr 02_wind_on 2 174 0.0 0.0 +fr 03_wind_off 2 174 0.0 0.0 +fr 04_res 2 174 0.0 0.0 +fr 05_nuclear 2 174 0.0 0.0 +fr 06_coal 2 174 0.0 0.0 +fr 07_gas 2 174 0.0 0.0 +fr 08_non-res 2 174 0.0 0.0 +fr 09_hydro_pump 2 174 0.0 0.0 +fr 01_solar 2 175 1.0 0.0 +fr 02_wind_on 2 175 0.0 0.0 +fr 03_wind_off 2 175 0.0 0.0 +fr 04_res 2 175 0.0 0.0 +fr 05_nuclear 2 175 0.0 0.0 +fr 06_coal 2 175 0.0 0.0 +fr 07_gas 2 175 0.0 0.0 +fr 08_non-res 2 175 0.0 0.0 +fr 09_hydro_pump 2 175 0.0 0.0 +fr 01_solar 2 176 1.0 0.0 +fr 02_wind_on 2 176 0.0 0.0 +fr 03_wind_off 2 176 0.0 0.0 +fr 04_res 2 176 0.0 0.0 +fr 05_nuclear 2 176 0.0 0.0 +fr 06_coal 2 176 0.0 0.0 +fr 07_gas 2 176 0.0 0.0 +fr 08_non-res 2 176 0.0 0.0 +fr 09_hydro_pump 2 176 0.0 0.0 +fr 01_solar 2 177 1.0 0.0 +fr 02_wind_on 2 177 0.0 0.0 +fr 03_wind_off 2 177 0.0 0.0 +fr 04_res 2 177 0.0 0.0 +fr 05_nuclear 2 177 0.0 0.0 +fr 06_coal 2 177 0.0 0.0 +fr 07_gas 2 177 0.0 0.0 +fr 08_non-res 2 177 0.0 0.0 +fr 09_hydro_pump 2 177 0.0 0.0 +fr 01_solar 2 178 1.0 0.0 +fr 02_wind_on 2 178 0.0 0.0 +fr 03_wind_off 2 178 0.0 0.0 +fr 04_res 2 178 0.0 0.0 +fr 05_nuclear 2 178 0.0 0.0 +fr 06_coal 2 178 0.0 0.0 +fr 07_gas 2 178 0.0 0.0 +fr 08_non-res 2 178 0.0 0.0 +fr 09_hydro_pump 2 178 0.0 0.0 +fr 01_solar 2 179 1.0 0.0 +fr 02_wind_on 2 179 0.0 0.0 +fr 03_wind_off 2 179 0.0 0.0 +fr 04_res 2 179 0.0 0.0 +fr 05_nuclear 2 179 0.0 0.0 +fr 06_coal 2 179 0.0 0.0 +fr 07_gas 2 179 0.0 0.0 +fr 08_non-res 2 179 0.0 0.0 +fr 09_hydro_pump 2 179 0.0 0.0 +fr 01_solar 2 180 1.0 0.0 +fr 02_wind_on 2 180 0.0 0.0 +fr 03_wind_off 2 180 0.0 0.0 +fr 04_res 2 180 0.0 0.0 +fr 05_nuclear 2 180 0.0 0.0 +fr 06_coal 2 180 0.0 0.0 +fr 07_gas 2 180 0.0 0.0 +fr 08_non-res 2 180 0.0 0.0 +fr 09_hydro_pump 2 180 0.0 0.0 +fr 01_solar 2 181 1.0 0.0 +fr 02_wind_on 2 181 0.0 0.0 +fr 03_wind_off 2 181 0.0 0.0 +fr 04_res 2 181 0.0 0.0 +fr 05_nuclear 2 181 0.0 0.0 +fr 06_coal 2 181 0.0 0.0 +fr 07_gas 2 181 0.0 0.0 +fr 08_non-res 2 181 0.0 0.0 +fr 09_hydro_pump 2 181 0.0 0.0 +fr 01_solar 2 182 1.0 0.0 +fr 02_wind_on 2 182 0.0 0.0 +fr 03_wind_off 2 182 0.0 0.0 +fr 04_res 2 182 0.0 0.0 +fr 05_nuclear 2 182 0.0 0.0 +fr 06_coal 2 182 0.0 0.0 +fr 07_gas 2 182 0.0 0.0 +fr 08_non-res 2 182 0.0 0.0 +fr 09_hydro_pump 2 182 0.0 0.0 +fr 01_solar 2 183 1.0 0.0 +fr 02_wind_on 2 183 0.0 0.0 +fr 03_wind_off 2 183 0.0 0.0 +fr 04_res 2 183 0.0 0.0 +fr 05_nuclear 2 183 0.0 0.0 +fr 06_coal 2 183 0.0 0.0 +fr 07_gas 2 183 0.0 0.0 +fr 08_non-res 2 183 0.0 0.0 +fr 09_hydro_pump 2 183 0.0 0.0 +fr 01_solar 2 184 1.0 0.0 +fr 02_wind_on 2 184 0.0 0.0 +fr 03_wind_off 2 184 0.0 0.0 +fr 04_res 2 184 0.0 0.0 +fr 05_nuclear 2 184 0.0 0.0 +fr 06_coal 2 184 0.0 0.0 +fr 07_gas 2 184 0.0 0.0 +fr 08_non-res 2 184 0.0 0.0 +fr 09_hydro_pump 2 184 0.0 0.0 +fr 01_solar 2 185 1.0 0.0 +fr 02_wind_on 2 185 0.0 0.0 +fr 03_wind_off 2 185 0.0 0.0 +fr 04_res 2 185 0.0 0.0 +fr 05_nuclear 2 185 0.0 0.0 +fr 06_coal 2 185 0.0 0.0 +fr 07_gas 2 185 0.0 0.0 +fr 08_non-res 2 185 0.0 0.0 +fr 09_hydro_pump 2 185 0.0 0.0 +fr 01_solar 2 186 1.0 0.0 +fr 02_wind_on 2 186 0.0 0.0 +fr 03_wind_off 2 186 0.0 0.0 +fr 04_res 2 186 0.0 0.0 +fr 05_nuclear 2 186 0.0 0.0 +fr 06_coal 2 186 0.0 0.0 +fr 07_gas 2 186 0.0 0.0 +fr 08_non-res 2 186 0.0 0.0 +fr 09_hydro_pump 2 186 0.0 0.0 +fr 01_solar 2 187 1.0 0.0 +fr 02_wind_on 2 187 0.0 0.0 +fr 03_wind_off 2 187 0.0 0.0 +fr 04_res 2 187 0.0 0.0 +fr 05_nuclear 2 187 0.0 0.0 +fr 06_coal 2 187 0.0 0.0 +fr 07_gas 2 187 0.0 0.0 +fr 08_non-res 2 187 0.0 0.0 +fr 09_hydro_pump 2 187 0.0 0.0 +fr 01_solar 2 188 1.0 0.0 +fr 02_wind_on 2 188 0.0 0.0 +fr 03_wind_off 2 188 0.0 0.0 +fr 04_res 2 188 0.0 0.0 +fr 05_nuclear 2 188 0.0 0.0 +fr 06_coal 2 188 0.0 0.0 +fr 07_gas 2 188 0.0 0.0 +fr 08_non-res 2 188 0.0 0.0 +fr 09_hydro_pump 2 188 0.0 0.0 +fr 01_solar 2 189 1.0 0.0 +fr 02_wind_on 2 189 0.0 0.0 +fr 03_wind_off 2 189 0.0 0.0 +fr 04_res 2 189 0.0 0.0 +fr 05_nuclear 2 189 0.0 0.0 +fr 06_coal 2 189 0.0 0.0 +fr 07_gas 2 189 0.0 0.0 +fr 08_non-res 2 189 0.0 0.0 +fr 09_hydro_pump 2 189 0.0 0.0 +fr 01_solar 2 190 1.0 0.0 +fr 02_wind_on 2 190 1.0 0.0 +fr 03_wind_off 2 190 0.0 0.0 +fr 04_res 2 190 0.0 0.0 +fr 05_nuclear 2 190 0.0 0.0 +fr 06_coal 2 190 0.0 0.0 +fr 07_gas 2 190 0.0 0.0 +fr 08_non-res 2 190 0.0 0.0 +fr 09_hydro_pump 2 190 0.0 0.0 +fr 01_solar 2 191 1.0 0.0 +fr 02_wind_on 2 191 1.0 0.0 +fr 03_wind_off 2 191 0.0 0.0 +fr 04_res 2 191 0.0 0.0 +fr 05_nuclear 2 191 0.0 0.0 +fr 06_coal 2 191 0.0 0.0 +fr 07_gas 2 191 0.0 0.0 +fr 08_non-res 2 191 0.0 0.0 +fr 09_hydro_pump 2 191 0.0 0.0 +fr 01_solar 2 192 1.0 0.0 +fr 02_wind_on 2 192 1.0 0.0 +fr 03_wind_off 2 192 0.0 0.0 +fr 04_res 2 192 0.0 0.0 +fr 05_nuclear 2 192 0.0 0.0 +fr 06_coal 2 192 0.0 0.0 +fr 07_gas 2 192 0.0 0.0 +fr 08_non-res 2 192 0.0 0.0 +fr 09_hydro_pump 2 192 0.0 0.0 +fr 01_solar 2 193 1.0 0.0 +fr 02_wind_on 2 193 1.0 0.0 +fr 03_wind_off 2 193 0.0 0.0 +fr 04_res 2 193 0.0 0.0 +fr 05_nuclear 2 193 0.0 0.0 +fr 06_coal 2 193 0.0 0.0 +fr 07_gas 2 193 0.0 0.0 +fr 08_non-res 2 193 0.0 0.0 +fr 09_hydro_pump 2 193 0.0 0.0 +fr 01_solar 2 194 1.0 0.0 +fr 02_wind_on 2 194 1.0 0.0 +fr 03_wind_off 2 194 0.0 0.0 +fr 04_res 2 194 0.0 0.0 +fr 05_nuclear 2 194 0.0 0.0 +fr 06_coal 2 194 0.0 0.0 +fr 07_gas 2 194 0.0 0.0 +fr 08_non-res 2 194 0.0 0.0 +fr 09_hydro_pump 2 194 0.0 0.0 +fr 01_solar 2 195 1.0 0.0 +fr 02_wind_on 2 195 1.0 0.0 +fr 03_wind_off 2 195 0.0 0.0 +fr 04_res 2 195 0.0 0.0 +fr 05_nuclear 2 195 0.0 0.0 +fr 06_coal 2 195 0.0 0.0 +fr 07_gas 2 195 0.0 0.0 +fr 08_non-res 2 195 0.0 0.0 +fr 09_hydro_pump 2 195 0.0 0.0 +fr 01_solar 2 196 1.0 0.0 +fr 02_wind_on 2 196 1.0 0.0 +fr 03_wind_off 2 196 0.0 0.0 +fr 04_res 2 196 0.0 0.0 +fr 05_nuclear 2 196 0.0 0.0 +fr 06_coal 2 196 0.0 0.0 +fr 07_gas 2 196 0.0 0.0 +fr 08_non-res 2 196 0.0 0.0 +fr 09_hydro_pump 2 196 0.0 0.0 +fr 01_solar 2 197 1.0 0.0 +fr 02_wind_on 2 197 1.0 0.0 +fr 03_wind_off 2 197 0.0 0.0 +fr 04_res 2 197 0.0 0.0 +fr 05_nuclear 2 197 0.0 0.0 +fr 06_coal 2 197 0.0 0.0 +fr 07_gas 2 197 0.0 0.0 +fr 08_non-res 2 197 0.0 0.0 +fr 09_hydro_pump 2 197 0.0 0.0 +fr 01_solar 2 198 1.0 0.0 +fr 02_wind_on 2 198 1.0 0.0 +fr 03_wind_off 2 198 0.0 0.0 +fr 04_res 2 198 0.0 0.0 +fr 05_nuclear 2 198 0.0 0.0 +fr 06_coal 2 198 0.0 0.0 +fr 07_gas 2 198 0.0 0.0 +fr 08_non-res 2 198 0.0 0.0 +fr 09_hydro_pump 2 198 0.0 0.0 +fr 01_solar 2 199 1.0 0.0 +fr 02_wind_on 2 199 1.0 0.0 +fr 03_wind_off 2 199 0.0 0.0 +fr 04_res 2 199 0.0 0.0 +fr 05_nuclear 2 199 0.0 0.0 +fr 06_coal 2 199 0.0 0.0 +fr 07_gas 2 199 0.0 0.0 +fr 08_non-res 2 199 0.0 0.0 +fr 09_hydro_pump 2 199 0.0 0.0 +fr 01_solar 2 200 1.0 0.0 +fr 02_wind_on 2 200 1.0 0.0 +fr 03_wind_off 2 200 0.0 0.0 +fr 04_res 2 200 0.0 0.0 +fr 05_nuclear 2 200 0.0 0.0 +fr 06_coal 2 200 0.0 0.0 +fr 07_gas 2 200 0.0 0.0 +fr 08_non-res 2 200 0.0 0.0 +fr 09_hydro_pump 2 200 0.0 0.0 +fr 01_solar 2 201 1.0 0.0 +fr 02_wind_on 2 201 1.0 0.0 +fr 03_wind_off 2 201 0.0 0.0 +fr 04_res 2 201 0.0 0.0 +fr 05_nuclear 2 201 0.0 0.0 +fr 06_coal 2 201 0.0 0.0 +fr 07_gas 2 201 0.0 0.0 +fr 08_non-res 2 201 0.0 0.0 +fr 09_hydro_pump 2 201 0.0 0.0 +fr 01_solar 2 202 1.0 0.0 +fr 02_wind_on 2 202 1.0 0.0 +fr 03_wind_off 2 202 0.0 0.0 +fr 04_res 2 202 0.0 0.0 +fr 05_nuclear 2 202 0.0 0.0 +fr 06_coal 2 202 0.0 0.0 +fr 07_gas 2 202 0.0 0.0 +fr 08_non-res 2 202 0.0 0.0 +fr 09_hydro_pump 2 202 0.0 0.0 +fr 01_solar 2 203 1.0 0.0 +fr 02_wind_on 2 203 1.0 0.0 +fr 03_wind_off 2 203 0.0 0.0 +fr 04_res 2 203 0.0 0.0 +fr 05_nuclear 2 203 0.0 0.0 +fr 06_coal 2 203 0.0 0.0 +fr 07_gas 2 203 0.0 0.0 +fr 08_non-res 2 203 0.0 0.0 +fr 09_hydro_pump 2 203 0.0 0.0 +fr 01_solar 2 204 1.0 0.0 +fr 02_wind_on 2 204 1.0 0.0 +fr 03_wind_off 2 204 0.0 0.0 +fr 04_res 2 204 0.0 0.0 +fr 05_nuclear 2 204 0.0 0.0 +fr 06_coal 2 204 0.0 0.0 +fr 07_gas 2 204 0.0 0.0 +fr 08_non-res 2 204 0.0 0.0 +fr 09_hydro_pump 2 204 0.0 0.0 +fr 01_solar 2 205 1.0 0.0 +fr 02_wind_on 2 205 1.0 0.0 +fr 03_wind_off 2 205 0.0 0.0 +fr 04_res 2 205 0.0 0.0 +fr 05_nuclear 2 205 0.0 0.0 +fr 06_coal 2 205 0.0 0.0 +fr 07_gas 2 205 0.0 0.0 +fr 08_non-res 2 205 0.0 0.0 +fr 09_hydro_pump 2 205 0.0 0.0 +fr 01_solar 2 206 1.0 0.0 +fr 02_wind_on 2 206 1.0 0.0 +fr 03_wind_off 2 206 0.0 0.0 +fr 04_res 2 206 0.0 0.0 +fr 05_nuclear 2 206 0.0 0.0 +fr 06_coal 2 206 0.0 0.0 +fr 07_gas 2 206 0.0 0.0 +fr 08_non-res 2 206 0.0 0.0 +fr 09_hydro_pump 2 206 0.0 0.0 +fr 01_solar 2 207 1.0 0.0 +fr 02_wind_on 2 207 1.0 0.0 +fr 03_wind_off 2 207 0.0 0.0 +fr 04_res 2 207 0.0 0.0 +fr 05_nuclear 2 207 0.0 0.0 +fr 06_coal 2 207 0.0 0.0 +fr 07_gas 2 207 0.0 0.0 +fr 08_non-res 2 207 0.0 0.0 +fr 09_hydro_pump 2 207 0.0 0.0 +fr 01_solar 2 208 1.0 0.0 +fr 02_wind_on 2 208 1.0 0.0 +fr 03_wind_off 2 208 0.0 0.0 +fr 04_res 2 208 0.0 0.0 +fr 05_nuclear 2 208 0.0 0.0 +fr 06_coal 2 208 0.0 0.0 +fr 07_gas 2 208 0.0 0.0 +fr 08_non-res 2 208 0.0 0.0 +fr 09_hydro_pump 2 208 0.0 0.0 +fr 01_solar 2 209 1.0 0.0 +fr 02_wind_on 2 209 1.0 0.0 +fr 03_wind_off 2 209 0.0 0.0 +fr 04_res 2 209 0.0 0.0 +fr 05_nuclear 2 209 0.0 0.0 +fr 06_coal 2 209 0.0 0.0 +fr 07_gas 2 209 0.0 0.0 +fr 08_non-res 2 209 0.0 0.0 +fr 09_hydro_pump 2 209 0.0 0.0 +fr 01_solar 2 210 1.0 0.0 +fr 02_wind_on 2 210 1.0 0.0 +fr 03_wind_off 2 210 1.0 0.0 +fr 04_res 2 210 0.0 0.0 +fr 05_nuclear 2 210 0.0 0.0 +fr 06_coal 2 210 0.0 0.0 +fr 07_gas 2 210 0.0 0.0 +fr 08_non-res 2 210 0.0 0.0 +fr 09_hydro_pump 2 210 0.0 0.0 +fr 01_solar 2 211 1.0 0.0 +fr 02_wind_on 2 211 1.0 0.0 +fr 03_wind_off 2 211 1.0 0.0 +fr 04_res 2 211 0.0 0.0 +fr 05_nuclear 2 211 0.0 0.0 +fr 06_coal 2 211 0.0 0.0 +fr 07_gas 2 211 0.0 0.0 +fr 08_non-res 2 211 0.0 0.0 +fr 09_hydro_pump 2 211 0.0 0.0 +fr 01_solar 2 212 1.0 0.0 +fr 02_wind_on 2 212 1.0 0.0 +fr 03_wind_off 2 212 1.0 0.0 +fr 04_res 2 212 0.0 0.0 +fr 05_nuclear 2 212 0.0 0.0 +fr 06_coal 2 212 0.0 0.0 +fr 07_gas 2 212 0.0 0.0 +fr 08_non-res 2 212 0.0 0.0 +fr 09_hydro_pump 2 212 0.0 0.0 +fr 01_solar 2 213 1.0 0.0 +fr 02_wind_on 2 213 1.0 0.0 +fr 03_wind_off 2 213 1.0 0.0 +fr 04_res 2 213 0.0 0.0 +fr 05_nuclear 2 213 0.0 0.0 +fr 06_coal 2 213 0.0 0.0 +fr 07_gas 2 213 0.0 0.0 +fr 08_non-res 2 213 0.0 0.0 +fr 09_hydro_pump 2 213 0.0 0.0 +fr 01_solar 2 214 1.0 0.0 +fr 02_wind_on 2 214 1.0 0.0 +fr 03_wind_off 2 214 1.0 0.0 +fr 04_res 2 214 0.0 0.0 +fr 05_nuclear 2 214 0.0 0.0 +fr 06_coal 2 214 0.0 0.0 +fr 07_gas 2 214 0.0 0.0 +fr 08_non-res 2 214 0.0 0.0 +fr 09_hydro_pump 2 214 0.0 0.0 +fr 01_solar 2 215 1.0 0.0 +fr 02_wind_on 2 215 1.0 0.0 +fr 03_wind_off 2 215 1.0 0.0 +fr 04_res 2 215 0.0 0.0 +fr 05_nuclear 2 215 0.0 0.0 +fr 06_coal 2 215 0.0 0.0 +fr 07_gas 2 215 0.0 0.0 +fr 08_non-res 2 215 0.0 0.0 +fr 09_hydro_pump 2 215 0.0 0.0 +fr 01_solar 2 216 1.0 0.0 +fr 02_wind_on 2 216 1.0 0.0 +fr 03_wind_off 2 216 1.0 0.0 +fr 04_res 2 216 0.0 0.0 +fr 05_nuclear 2 216 0.0 0.0 +fr 06_coal 2 216 0.0 0.0 +fr 07_gas 2 216 0.0 0.0 +fr 08_non-res 2 216 0.0 0.0 +fr 09_hydro_pump 2 216 0.0 0.0 +fr 01_solar 2 217 1.0 0.0 +fr 02_wind_on 2 217 1.0 0.0 +fr 03_wind_off 2 217 1.0 0.0 +fr 04_res 2 217 0.0 0.0 +fr 05_nuclear 2 217 0.0 0.0 +fr 06_coal 2 217 0.0 0.0 +fr 07_gas 2 217 0.0 0.0 +fr 08_non-res 2 217 0.0 0.0 +fr 09_hydro_pump 2 217 0.0 0.0 +fr 01_solar 2 218 1.0 0.0 +fr 02_wind_on 2 218 1.0 0.0 +fr 03_wind_off 2 218 1.0 0.0 +fr 04_res 2 218 0.0 0.0 +fr 05_nuclear 2 218 0.0 0.0 +fr 06_coal 2 218 0.0 0.0 +fr 07_gas 2 218 0.0 0.0 +fr 08_non-res 2 218 0.0 0.0 +fr 09_hydro_pump 2 218 0.0 0.0 +fr 01_solar 2 219 1.0 0.0 +fr 02_wind_on 2 219 1.0 0.0 +fr 03_wind_off 2 219 1.0 0.0 +fr 04_res 2 219 0.0 0.0 +fr 05_nuclear 2 219 0.0 0.0 +fr 06_coal 2 219 0.0 0.0 +fr 07_gas 2 219 0.0 0.0 +fr 08_non-res 2 219 0.0 0.0 +fr 09_hydro_pump 2 219 0.0 0.0 +fr 01_solar 2 220 1.0 0.0 +fr 02_wind_on 2 220 1.0 0.0 +fr 03_wind_off 2 220 1.0 0.0 +fr 04_res 2 220 0.0 0.0 +fr 05_nuclear 2 220 0.0 0.0 +fr 06_coal 2 220 0.0 0.0 +fr 07_gas 2 220 0.0 0.0 +fr 08_non-res 2 220 0.0 0.0 +fr 09_hydro_pump 2 220 0.0 0.0 +fr 01_solar 2 221 1.0 0.0 +fr 02_wind_on 2 221 1.0 0.0 +fr 03_wind_off 2 221 1.0 0.0 +fr 04_res 2 221 0.0 0.0 +fr 05_nuclear 2 221 0.0 0.0 +fr 06_coal 2 221 0.0 0.0 +fr 07_gas 2 221 0.0 0.0 +fr 08_non-res 2 221 0.0 0.0 +fr 09_hydro_pump 2 221 0.0 0.0 +fr 01_solar 2 222 1.0 0.0 +fr 02_wind_on 2 222 1.0 0.0 +fr 03_wind_off 2 222 1.0 0.0 +fr 04_res 2 222 0.0 0.0 +fr 05_nuclear 2 222 0.0 0.0 +fr 06_coal 2 222 0.0 0.0 +fr 07_gas 2 222 0.0 0.0 +fr 08_non-res 2 222 0.0 0.0 +fr 09_hydro_pump 2 222 0.0 0.0 +fr 01_solar 2 223 1.0 0.0 +fr 02_wind_on 2 223 1.0 0.0 +fr 03_wind_off 2 223 1.0 0.0 +fr 04_res 2 223 0.0 0.0 +fr 05_nuclear 2 223 0.0 0.0 +fr 06_coal 2 223 0.0 0.0 +fr 07_gas 2 223 0.0 0.0 +fr 08_non-res 2 223 0.0 0.0 +fr 09_hydro_pump 2 223 0.0 0.0 +fr 01_solar 2 224 1.0 0.0 +fr 02_wind_on 2 224 1.0 0.0 +fr 03_wind_off 2 224 1.0 0.0 +fr 04_res 2 224 0.0 0.0 +fr 05_nuclear 2 224 0.0 0.0 +fr 06_coal 2 224 0.0 0.0 +fr 07_gas 2 224 0.0 0.0 +fr 08_non-res 2 224 0.0 0.0 +fr 09_hydro_pump 2 224 0.0 0.0 +fr 01_solar 2 225 1.0 0.0 +fr 02_wind_on 2 225 1.0 0.0 +fr 03_wind_off 2 225 1.0 0.0 +fr 04_res 2 225 0.0 0.0 +fr 05_nuclear 2 225 0.0 0.0 +fr 06_coal 2 225 0.0 0.0 +fr 07_gas 2 225 0.0 0.0 +fr 08_non-res 2 225 0.0 0.0 +fr 09_hydro_pump 2 225 0.0 0.0 +fr 01_solar 2 226 1.0 0.0 +fr 02_wind_on 2 226 1.0 0.0 +fr 03_wind_off 2 226 1.0 0.0 +fr 04_res 2 226 0.0 0.0 +fr 05_nuclear 2 226 0.0 0.0 +fr 06_coal 2 226 0.0 0.0 +fr 07_gas 2 226 0.0 0.0 +fr 08_non-res 2 226 0.0 0.0 +fr 09_hydro_pump 2 226 0.0 0.0 +fr 01_solar 2 227 1.0 0.0 +fr 02_wind_on 2 227 1.0 0.0 +fr 03_wind_off 2 227 1.0 0.0 +fr 04_res 2 227 0.0 0.0 +fr 05_nuclear 2 227 0.0 0.0 +fr 06_coal 2 227 0.0 0.0 +fr 07_gas 2 227 0.0 0.0 +fr 08_non-res 2 227 0.0 0.0 +fr 09_hydro_pump 2 227 0.0 0.0 +fr 01_solar 2 228 1.0 0.0 +fr 02_wind_on 2 228 1.0 0.0 +fr 03_wind_off 2 228 1.0 0.0 +fr 04_res 2 228 0.0 0.0 +fr 05_nuclear 2 228 0.0 0.0 +fr 06_coal 2 228 0.0 0.0 +fr 07_gas 2 228 0.0 0.0 +fr 08_non-res 2 228 0.0 0.0 +fr 09_hydro_pump 2 228 0.0 0.0 +fr 01_solar 2 229 1.0 0.0 +fr 02_wind_on 2 229 1.0 0.0 +fr 03_wind_off 2 229 1.0 0.0 +fr 04_res 2 229 0.0 0.0 +fr 05_nuclear 2 229 0.0 0.0 +fr 06_coal 2 229 0.0 0.0 +fr 07_gas 2 229 0.0 0.0 +fr 08_non-res 2 229 0.0 0.0 +fr 09_hydro_pump 2 229 0.0 0.0 +fr 01_solar 2 230 1.0 0.0 +fr 02_wind_on 2 230 1.0 0.0 +fr 03_wind_off 2 230 1.0 0.0 +fr 04_res 2 230 1.0 0.0 +fr 05_nuclear 2 230 0.0 0.0 +fr 06_coal 2 230 0.0 0.0 +fr 07_gas 2 230 0.0 0.0 +fr 08_non-res 2 230 0.0 0.0 +fr 09_hydro_pump 2 230 0.0 0.0 +fr 01_solar 2 231 1.0 0.0 +fr 02_wind_on 2 231 1.0 0.0 +fr 03_wind_off 2 231 1.0 0.0 +fr 04_res 2 231 1.0 0.0 +fr 05_nuclear 2 231 0.0 0.0 +fr 06_coal 2 231 0.0 0.0 +fr 07_gas 2 231 0.0 0.0 +fr 08_non-res 2 231 0.0 0.0 +fr 09_hydro_pump 2 231 0.0 0.0 +fr 01_solar 2 232 1.0 0.0 +fr 02_wind_on 2 232 1.0 0.0 +fr 03_wind_off 2 232 1.0 0.0 +fr 04_res 2 232 1.0 0.0 +fr 05_nuclear 2 232 0.0 0.0 +fr 06_coal 2 232 0.0 0.0 +fr 07_gas 2 232 0.0 0.0 +fr 08_non-res 2 232 0.0 0.0 +fr 09_hydro_pump 2 232 0.0 0.0 +fr 01_solar 2 233 1.0 0.0 +fr 02_wind_on 2 233 1.0 0.0 +fr 03_wind_off 2 233 1.0 0.0 +fr 04_res 2 233 1.0 0.0 +fr 05_nuclear 2 233 0.0 0.0 +fr 06_coal 2 233 0.0 0.0 +fr 07_gas 2 233 0.0 0.0 +fr 08_non-res 2 233 0.0 0.0 +fr 09_hydro_pump 2 233 0.0 0.0 +fr 01_solar 2 234 1.0 0.0 +fr 02_wind_on 2 234 1.0 0.0 +fr 03_wind_off 2 234 1.0 0.0 +fr 04_res 2 234 1.0 0.0 +fr 05_nuclear 2 234 0.0 0.0 +fr 06_coal 2 234 0.0 0.0 +fr 07_gas 2 234 0.0 0.0 +fr 08_non-res 2 234 0.0 0.0 +fr 09_hydro_pump 2 234 0.0 0.0 +fr 01_solar 2 235 1.0 0.0 +fr 02_wind_on 2 235 1.0 0.0 +fr 03_wind_off 2 235 1.0 0.0 +fr 04_res 2 235 1.0 0.0 +fr 05_nuclear 2 235 0.0 0.0 +fr 06_coal 2 235 0.0 0.0 +fr 07_gas 2 235 0.0 0.0 +fr 08_non-res 2 235 0.0 0.0 +fr 09_hydro_pump 2 235 0.0 0.0 +fr 01_solar 2 236 1.0 0.0 +fr 02_wind_on 2 236 1.0 0.0 +fr 03_wind_off 2 236 1.0 0.0 +fr 04_res 2 236 1.0 0.0 +fr 05_nuclear 2 236 0.0 0.0 +fr 06_coal 2 236 0.0 0.0 +fr 07_gas 2 236 0.0 0.0 +fr 08_non-res 2 236 0.0 0.0 +fr 09_hydro_pump 2 236 0.0 0.0 +fr 01_solar 2 237 1.0 0.0 +fr 02_wind_on 2 237 1.0 0.0 +fr 03_wind_off 2 237 1.0 0.0 +fr 04_res 2 237 1.0 0.0 +fr 05_nuclear 2 237 0.0 0.0 +fr 06_coal 2 237 0.0 0.0 +fr 07_gas 2 237 0.0 0.0 +fr 08_non-res 2 237 0.0 0.0 +fr 09_hydro_pump 2 237 0.0 0.0 +fr 01_solar 2 238 1.0 0.0 +fr 02_wind_on 2 238 1.0 0.0 +fr 03_wind_off 2 238 1.0 0.0 +fr 04_res 2 238 1.0 0.0 +fr 05_nuclear 2 238 0.0 0.0 +fr 06_coal 2 238 0.0 0.0 +fr 07_gas 2 238 0.0 0.0 +fr 08_non-res 2 238 0.0 0.0 +fr 09_hydro_pump 2 238 0.0 0.0 +fr 01_solar 2 239 1.0 0.0 +fr 02_wind_on 2 239 1.0 0.0 +fr 03_wind_off 2 239 1.0 0.0 +fr 04_res 2 239 1.0 0.0 +fr 05_nuclear 2 239 0.0 0.0 +fr 06_coal 2 239 0.0 0.0 +fr 07_gas 2 239 0.0 0.0 +fr 08_non-res 2 239 0.0 0.0 +fr 09_hydro_pump 2 239 0.0 0.0 +fr 01_solar 2 240 1.0 0.0 +fr 02_wind_on 2 240 1.0 0.0 +fr 03_wind_off 2 240 1.0 0.0 +fr 04_res 2 240 1.0 0.0 +fr 05_nuclear 2 240 0.0 0.0 +fr 06_coal 2 240 0.0 0.0 +fr 07_gas 2 240 0.0 0.0 +fr 08_non-res 2 240 0.0 0.0 +fr 09_hydro_pump 2 240 0.0 0.0 +fr 01_solar 2 241 1.0 0.0 +fr 02_wind_on 2 241 1.0 0.0 +fr 03_wind_off 2 241 1.0 0.0 +fr 04_res 2 241 1.0 0.0 +fr 05_nuclear 2 241 0.0 0.0 +fr 06_coal 2 241 0.0 0.0 +fr 07_gas 2 241 0.0 0.0 +fr 08_non-res 2 241 0.0 0.0 +fr 09_hydro_pump 2 241 0.0 0.0 +fr 01_solar 2 242 1.0 0.0 +fr 02_wind_on 2 242 1.0 0.0 +fr 03_wind_off 2 242 1.0 0.0 +fr 04_res 2 242 1.0 0.0 +fr 05_nuclear 2 242 0.0 0.0 +fr 06_coal 2 242 0.0 0.0 +fr 07_gas 2 242 0.0 0.0 +fr 08_non-res 2 242 0.0 0.0 +fr 09_hydro_pump 2 242 0.0 0.0 +fr 01_solar 2 243 1.0 0.0 +fr 02_wind_on 2 243 1.0 0.0 +fr 03_wind_off 2 243 1.0 0.0 +fr 04_res 2 243 1.0 0.0 +fr 05_nuclear 2 243 0.0 0.0 +fr 06_coal 2 243 0.0 0.0 +fr 07_gas 2 243 0.0 0.0 +fr 08_non-res 2 243 0.0 0.0 +fr 09_hydro_pump 2 243 0.0 0.0 +fr 01_solar 2 244 1.0 0.0 +fr 02_wind_on 2 244 1.0 0.0 +fr 03_wind_off 2 244 1.0 0.0 +fr 04_res 2 244 1.0 0.0 +fr 05_nuclear 2 244 0.0 0.0 +fr 06_coal 2 244 0.0 0.0 +fr 07_gas 2 244 0.0 0.0 +fr 08_non-res 2 244 0.0 0.0 +fr 09_hydro_pump 2 244 0.0 0.0 +fr 01_solar 2 245 1.0 0.0 +fr 02_wind_on 2 245 1.0 0.0 +fr 03_wind_off 2 245 1.0 0.0 +fr 04_res 2 245 1.0 0.0 +fr 05_nuclear 2 245 0.0 0.0 +fr 06_coal 2 245 0.0 0.0 +fr 07_gas 2 245 0.0 0.0 +fr 08_non-res 2 245 0.0 0.0 +fr 09_hydro_pump 2 245 0.0 0.0 +fr 01_solar 2 246 1.0 0.0 +fr 02_wind_on 2 246 1.0 0.0 +fr 03_wind_off 2 246 1.0 0.0 +fr 04_res 2 246 1.0 0.0 +fr 05_nuclear 2 246 0.0 0.0 +fr 06_coal 2 246 0.0 0.0 +fr 07_gas 2 246 0.0 0.0 +fr 08_non-res 2 246 0.0 0.0 +fr 09_hydro_pump 2 246 0.0 0.0 +fr 01_solar 2 247 1.0 0.0 +fr 02_wind_on 2 247 1.0 0.0 +fr 03_wind_off 2 247 1.0 0.0 +fr 04_res 2 247 1.0 0.0 +fr 05_nuclear 2 247 0.0 0.0 +fr 06_coal 2 247 0.0 0.0 +fr 07_gas 2 247 0.0 0.0 +fr 08_non-res 2 247 0.0 0.0 +fr 09_hydro_pump 2 247 0.0 0.0 +fr 01_solar 2 248 1.0 0.0 +fr 02_wind_on 2 248 1.0 0.0 +fr 03_wind_off 2 248 1.0 0.0 +fr 04_res 2 248 1.0 0.0 +fr 05_nuclear 2 248 0.0 0.0 +fr 06_coal 2 248 0.0 0.0 +fr 07_gas 2 248 0.0 0.0 +fr 08_non-res 2 248 0.0 0.0 +fr 09_hydro_pump 2 248 0.0 0.0 +fr 01_solar 2 249 1.0 0.0 +fr 02_wind_on 2 249 1.0 0.0 +fr 03_wind_off 2 249 1.0 0.0 +fr 04_res 2 249 1.0 0.0 +fr 05_nuclear 2 249 0.0 0.0 +fr 06_coal 2 249 0.0 0.0 +fr 07_gas 2 249 0.0 0.0 +fr 08_non-res 2 249 0.0 0.0 +fr 09_hydro_pump 2 249 0.0 0.0 +fr 01_solar 2 250 1.0 0.0 +fr 02_wind_on 2 250 1.0 0.0 +fr 03_wind_off 2 250 1.0 0.0 +fr 04_res 2 250 1.0 0.0 +fr 05_nuclear 2 250 1.0 0.0 +fr 06_coal 2 250 0.0 0.0 +fr 07_gas 2 250 0.0 0.0 +fr 08_non-res 2 250 0.0 0.0 +fr 09_hydro_pump 2 250 0.0 0.0 +fr 01_solar 2 251 1.0 0.0 +fr 02_wind_on 2 251 1.0 0.0 +fr 03_wind_off 2 251 1.0 0.0 +fr 04_res 2 251 1.0 0.0 +fr 05_nuclear 2 251 1.0 0.0 +fr 06_coal 2 251 0.0 0.0 +fr 07_gas 2 251 0.0 0.0 +fr 08_non-res 2 251 0.0 0.0 +fr 09_hydro_pump 2 251 0.0 0.0 +fr 01_solar 2 252 1.0 0.0 +fr 02_wind_on 2 252 1.0 0.0 +fr 03_wind_off 2 252 1.0 0.0 +fr 04_res 2 252 1.0 0.0 +fr 05_nuclear 2 252 1.0 0.0 +fr 06_coal 2 252 0.0 0.0 +fr 07_gas 2 252 0.0 0.0 +fr 08_non-res 2 252 0.0 0.0 +fr 09_hydro_pump 2 252 0.0 0.0 +fr 01_solar 2 253 1.0 0.0 +fr 02_wind_on 2 253 1.0 0.0 +fr 03_wind_off 2 253 1.0 0.0 +fr 04_res 2 253 1.0 0.0 +fr 05_nuclear 2 253 1.0 0.0 +fr 06_coal 2 253 0.0 0.0 +fr 07_gas 2 253 0.0 0.0 +fr 08_non-res 2 253 0.0 0.0 +fr 09_hydro_pump 2 253 0.0 0.0 +fr 01_solar 2 254 1.0 0.0 +fr 02_wind_on 2 254 1.0 0.0 +fr 03_wind_off 2 254 1.0 0.0 +fr 04_res 2 254 1.0 0.0 +fr 05_nuclear 2 254 1.0 0.0 +fr 06_coal 2 254 0.0 0.0 +fr 07_gas 2 254 0.0 0.0 +fr 08_non-res 2 254 0.0 0.0 +fr 09_hydro_pump 2 254 0.0 0.0 +fr 01_solar 2 255 1.0 0.0 +fr 02_wind_on 2 255 1.0 0.0 +fr 03_wind_off 2 255 1.0 0.0 +fr 04_res 2 255 1.0 0.0 +fr 05_nuclear 2 255 1.0 0.0 +fr 06_coal 2 255 0.0 0.0 +fr 07_gas 2 255 0.0 0.0 +fr 08_non-res 2 255 0.0 0.0 +fr 09_hydro_pump 2 255 0.0 0.0 +fr 01_solar 2 256 1.0 0.0 +fr 02_wind_on 2 256 1.0 0.0 +fr 03_wind_off 2 256 1.0 0.0 +fr 04_res 2 256 1.0 0.0 +fr 05_nuclear 2 256 1.0 0.0 +fr 06_coal 2 256 0.0 0.0 +fr 07_gas 2 256 0.0 0.0 +fr 08_non-res 2 256 0.0 0.0 +fr 09_hydro_pump 2 256 0.0 0.0 +fr 01_solar 2 257 1.0 0.0 +fr 02_wind_on 2 257 1.0 0.0 +fr 03_wind_off 2 257 1.0 0.0 +fr 04_res 2 257 1.0 0.0 +fr 05_nuclear 2 257 1.0 0.0 +fr 06_coal 2 257 0.0 0.0 +fr 07_gas 2 257 0.0 0.0 +fr 08_non-res 2 257 0.0 0.0 +fr 09_hydro_pump 2 257 0.0 0.0 +fr 01_solar 2 258 1.0 0.0 +fr 02_wind_on 2 258 1.0 0.0 +fr 03_wind_off 2 258 1.0 0.0 +fr 04_res 2 258 1.0 0.0 +fr 05_nuclear 2 258 1.0 0.0 +fr 06_coal 2 258 0.0 0.0 +fr 07_gas 2 258 0.0 0.0 +fr 08_non-res 2 258 0.0 0.0 +fr 09_hydro_pump 2 258 0.0 0.0 +fr 01_solar 2 259 1.0 0.0 +fr 02_wind_on 2 259 1.0 0.0 +fr 03_wind_off 2 259 1.0 0.0 +fr 04_res 2 259 1.0 0.0 +fr 05_nuclear 2 259 1.0 0.0 +fr 06_coal 2 259 0.0 0.0 +fr 07_gas 2 259 0.0 0.0 +fr 08_non-res 2 259 0.0 0.0 +fr 09_hydro_pump 2 259 0.0 0.0 +fr 01_solar 2 260 1.0 0.0 +fr 02_wind_on 2 260 1.0 0.0 +fr 03_wind_off 2 260 1.0 0.0 +fr 04_res 2 260 1.0 0.0 +fr 05_nuclear 2 260 1.0 0.0 +fr 06_coal 2 260 0.0 0.0 +fr 07_gas 2 260 0.0 0.0 +fr 08_non-res 2 260 0.0 0.0 +fr 09_hydro_pump 2 260 0.0 0.0 +fr 01_solar 2 261 1.0 0.0 +fr 02_wind_on 2 261 1.0 0.0 +fr 03_wind_off 2 261 1.0 0.0 +fr 04_res 2 261 1.0 0.0 +fr 05_nuclear 2 261 1.0 0.0 +fr 06_coal 2 261 0.0 0.0 +fr 07_gas 2 261 0.0 0.0 +fr 08_non-res 2 261 0.0 0.0 +fr 09_hydro_pump 2 261 0.0 0.0 +fr 01_solar 2 262 1.0 0.0 +fr 02_wind_on 2 262 1.0 0.0 +fr 03_wind_off 2 262 1.0 0.0 +fr 04_res 2 262 1.0 0.0 +fr 05_nuclear 2 262 1.0 0.0 +fr 06_coal 2 262 0.0 0.0 +fr 07_gas 2 262 0.0 0.0 +fr 08_non-res 2 262 0.0 0.0 +fr 09_hydro_pump 2 262 0.0 0.0 +fr 01_solar 2 263 1.0 0.0 +fr 02_wind_on 2 263 1.0 0.0 +fr 03_wind_off 2 263 1.0 0.0 +fr 04_res 2 263 1.0 0.0 +fr 05_nuclear 2 263 1.0 0.0 +fr 06_coal 2 263 0.0 0.0 +fr 07_gas 2 263 0.0 0.0 +fr 08_non-res 2 263 0.0 0.0 +fr 09_hydro_pump 2 263 0.0 0.0 +fr 01_solar 2 264 1.0 0.0 +fr 02_wind_on 2 264 1.0 0.0 +fr 03_wind_off 2 264 1.0 0.0 +fr 04_res 2 264 1.0 0.0 +fr 05_nuclear 2 264 1.0 0.0 +fr 06_coal 2 264 0.0 0.0 +fr 07_gas 2 264 0.0 0.0 +fr 08_non-res 2 264 0.0 0.0 +fr 09_hydro_pump 2 264 0.0 0.0 +fr 01_solar 2 265 1.0 0.0 +fr 02_wind_on 2 265 1.0 0.0 +fr 03_wind_off 2 265 1.0 0.0 +fr 04_res 2 265 1.0 0.0 +fr 05_nuclear 2 265 1.0 0.0 +fr 06_coal 2 265 0.0 0.0 +fr 07_gas 2 265 0.0 0.0 +fr 08_non-res 2 265 0.0 0.0 +fr 09_hydro_pump 2 265 0.0 0.0 +fr 01_solar 2 266 1.0 0.0 +fr 02_wind_on 2 266 1.0 0.0 +fr 03_wind_off 2 266 1.0 0.0 +fr 04_res 2 266 1.0 0.0 +fr 05_nuclear 2 266 1.0 0.0 +fr 06_coal 2 266 0.0 0.0 +fr 07_gas 2 266 0.0 0.0 +fr 08_non-res 2 266 0.0 0.0 +fr 09_hydro_pump 2 266 0.0 0.0 +fr 01_solar 2 267 1.0 0.0 +fr 02_wind_on 2 267 1.0 0.0 +fr 03_wind_off 2 267 1.0 0.0 +fr 04_res 2 267 1.0 0.0 +fr 05_nuclear 2 267 1.0 0.0 +fr 06_coal 2 267 0.0 0.0 +fr 07_gas 2 267 0.0 0.0 +fr 08_non-res 2 267 0.0 0.0 +fr 09_hydro_pump 2 267 0.0 0.0 +fr 01_solar 2 268 1.0 0.0 +fr 02_wind_on 2 268 1.0 0.0 +fr 03_wind_off 2 268 1.0 0.0 +fr 04_res 2 268 1.0 0.0 +fr 05_nuclear 2 268 1.0 0.0 +fr 06_coal 2 268 0.0 0.0 +fr 07_gas 2 268 0.0 0.0 +fr 08_non-res 2 268 0.0 0.0 +fr 09_hydro_pump 2 268 0.0 0.0 +fr 01_solar 2 269 1.0 0.0 +fr 02_wind_on 2 269 1.0 0.0 +fr 03_wind_off 2 269 1.0 0.0 +fr 04_res 2 269 1.0 0.0 +fr 05_nuclear 2 269 1.0 0.0 +fr 06_coal 2 269 0.0 0.0 +fr 07_gas 2 269 0.0 0.0 +fr 08_non-res 2 269 0.0 0.0 +fr 09_hydro_pump 2 269 0.0 0.0 +fr 01_solar 2 270 1.0 0.0 +fr 02_wind_on 2 270 1.0 0.0 +fr 03_wind_off 2 270 1.0 0.0 +fr 04_res 2 270 1.0 0.0 +fr 05_nuclear 2 270 1.0 0.0 +fr 06_coal 2 270 1.0 0.0 +fr 07_gas 2 270 0.0 0.0 +fr 08_non-res 2 270 0.0 0.0 +fr 09_hydro_pump 2 270 0.0 0.0 +fr 01_solar 2 271 1.0 0.0 +fr 02_wind_on 2 271 1.0 0.0 +fr 03_wind_off 2 271 1.0 0.0 +fr 04_res 2 271 1.0 0.0 +fr 05_nuclear 2 271 1.0 0.0 +fr 06_coal 2 271 1.0 0.0 +fr 07_gas 2 271 0.0 0.0 +fr 08_non-res 2 271 0.0 0.0 +fr 09_hydro_pump 2 271 0.0 0.0 +fr 01_solar 2 272 1.0 0.0 +fr 02_wind_on 2 272 1.0 0.0 +fr 03_wind_off 2 272 1.0 0.0 +fr 04_res 2 272 1.0 0.0 +fr 05_nuclear 2 272 1.0 0.0 +fr 06_coal 2 272 1.0 0.0 +fr 07_gas 2 272 0.0 0.0 +fr 08_non-res 2 272 0.0 0.0 +fr 09_hydro_pump 2 272 0.0 0.0 +fr 01_solar 2 273 1.0 0.0 +fr 02_wind_on 2 273 1.0 0.0 +fr 03_wind_off 2 273 1.0 0.0 +fr 04_res 2 273 1.0 0.0 +fr 05_nuclear 2 273 1.0 0.0 +fr 06_coal 2 273 1.0 0.0 +fr 07_gas 2 273 0.0 0.0 +fr 08_non-res 2 273 0.0 0.0 +fr 09_hydro_pump 2 273 0.0 0.0 +fr 01_solar 2 274 1.0 0.0 +fr 02_wind_on 2 274 1.0 0.0 +fr 03_wind_off 2 274 1.0 0.0 +fr 04_res 2 274 1.0 0.0 +fr 05_nuclear 2 274 1.0 0.0 +fr 06_coal 2 274 1.0 0.0 +fr 07_gas 2 274 0.0 0.0 +fr 08_non-res 2 274 0.0 0.0 +fr 09_hydro_pump 2 274 0.0 0.0 +fr 01_solar 2 275 1.0 0.0 +fr 02_wind_on 2 275 1.0 0.0 +fr 03_wind_off 2 275 1.0 0.0 +fr 04_res 2 275 1.0 0.0 +fr 05_nuclear 2 275 1.0 0.0 +fr 06_coal 2 275 1.0 0.0 +fr 07_gas 2 275 0.0 0.0 +fr 08_non-res 2 275 0.0 0.0 +fr 09_hydro_pump 2 275 0.0 0.0 +fr 01_solar 2 276 1.0 0.0 +fr 02_wind_on 2 276 1.0 0.0 +fr 03_wind_off 2 276 1.0 0.0 +fr 04_res 2 276 1.0 0.0 +fr 05_nuclear 2 276 1.0 0.0 +fr 06_coal 2 276 1.0 0.0 +fr 07_gas 2 276 0.0 0.0 +fr 08_non-res 2 276 0.0 0.0 +fr 09_hydro_pump 2 276 0.0 0.0 +fr 01_solar 2 277 1.0 0.0 +fr 02_wind_on 2 277 1.0 0.0 +fr 03_wind_off 2 277 1.0 0.0 +fr 04_res 2 277 1.0 0.0 +fr 05_nuclear 2 277 1.0 0.0 +fr 06_coal 2 277 1.0 0.0 +fr 07_gas 2 277 0.0 0.0 +fr 08_non-res 2 277 0.0 0.0 +fr 09_hydro_pump 2 277 0.0 0.0 +fr 01_solar 2 278 1.0 0.0 +fr 02_wind_on 2 278 1.0 0.0 +fr 03_wind_off 2 278 1.0 0.0 +fr 04_res 2 278 1.0 0.0 +fr 05_nuclear 2 278 1.0 0.0 +fr 06_coal 2 278 1.0 0.0 +fr 07_gas 2 278 0.0 0.0 +fr 08_non-res 2 278 0.0 0.0 +fr 09_hydro_pump 2 278 0.0 0.0 +fr 01_solar 2 279 1.0 0.0 +fr 02_wind_on 2 279 1.0 0.0 +fr 03_wind_off 2 279 1.0 0.0 +fr 04_res 2 279 1.0 0.0 +fr 05_nuclear 2 279 1.0 0.0 +fr 06_coal 2 279 1.0 0.0 +fr 07_gas 2 279 0.0 0.0 +fr 08_non-res 2 279 0.0 0.0 +fr 09_hydro_pump 2 279 0.0 0.0 +fr 01_solar 2 280 1.0 0.0 +fr 02_wind_on 2 280 1.0 0.0 +fr 03_wind_off 2 280 1.0 0.0 +fr 04_res 2 280 1.0 0.0 +fr 05_nuclear 2 280 1.0 0.0 +fr 06_coal 2 280 1.0 0.0 +fr 07_gas 2 280 0.0 0.0 +fr 08_non-res 2 280 0.0 0.0 +fr 09_hydro_pump 2 280 0.0 0.0 +fr 01_solar 2 281 1.0 0.0 +fr 02_wind_on 2 281 1.0 0.0 +fr 03_wind_off 2 281 1.0 0.0 +fr 04_res 2 281 1.0 0.0 +fr 05_nuclear 2 281 1.0 0.0 +fr 06_coal 2 281 1.0 0.0 +fr 07_gas 2 281 0.0 0.0 +fr 08_non-res 2 281 0.0 0.0 +fr 09_hydro_pump 2 281 0.0 0.0 +fr 01_solar 2 282 1.0 0.0 +fr 02_wind_on 2 282 1.0 0.0 +fr 03_wind_off 2 282 1.0 0.0 +fr 04_res 2 282 1.0 0.0 +fr 05_nuclear 2 282 1.0 0.0 +fr 06_coal 2 282 1.0 0.0 +fr 07_gas 2 282 0.0 0.0 +fr 08_non-res 2 282 0.0 0.0 +fr 09_hydro_pump 2 282 0.0 0.0 +fr 01_solar 2 283 1.0 0.0 +fr 02_wind_on 2 283 1.0 0.0 +fr 03_wind_off 2 283 1.0 0.0 +fr 04_res 2 283 1.0 0.0 +fr 05_nuclear 2 283 1.0 0.0 +fr 06_coal 2 283 1.0 0.0 +fr 07_gas 2 283 0.0 0.0 +fr 08_non-res 2 283 0.0 0.0 +fr 09_hydro_pump 2 283 0.0 0.0 +fr 01_solar 2 284 1.0 0.0 +fr 02_wind_on 2 284 1.0 0.0 +fr 03_wind_off 2 284 1.0 0.0 +fr 04_res 2 284 1.0 0.0 +fr 05_nuclear 2 284 1.0 0.0 +fr 06_coal 2 284 1.0 0.0 +fr 07_gas 2 284 0.0 0.0 +fr 08_non-res 2 284 0.0 0.0 +fr 09_hydro_pump 2 284 0.0 0.0 +fr 01_solar 2 285 1.0 0.0 +fr 02_wind_on 2 285 1.0 0.0 +fr 03_wind_off 2 285 1.0 0.0 +fr 04_res 2 285 1.0 0.0 +fr 05_nuclear 2 285 1.0 0.0 +fr 06_coal 2 285 1.0 0.0 +fr 07_gas 2 285 0.0 0.0 +fr 08_non-res 2 285 0.0 0.0 +fr 09_hydro_pump 2 285 0.0 0.0 +fr 01_solar 2 286 1.0 0.0 +fr 02_wind_on 2 286 1.0 0.0 +fr 03_wind_off 2 286 1.0 0.0 +fr 04_res 2 286 1.0 0.0 +fr 05_nuclear 2 286 1.0 0.0 +fr 06_coal 2 286 1.0 0.0 +fr 07_gas 2 286 0.0 0.0 +fr 08_non-res 2 286 0.0 0.0 +fr 09_hydro_pump 2 286 0.0 0.0 +fr 01_solar 2 287 1.0 0.0 +fr 02_wind_on 2 287 1.0 0.0 +fr 03_wind_off 2 287 1.0 0.0 +fr 04_res 2 287 1.0 0.0 +fr 05_nuclear 2 287 1.0 0.0 +fr 06_coal 2 287 1.0 0.0 +fr 07_gas 2 287 0.0 0.0 +fr 08_non-res 2 287 0.0 0.0 +fr 09_hydro_pump 2 287 0.0 0.0 +fr 01_solar 2 288 1.0 0.0 +fr 02_wind_on 2 288 1.0 0.0 +fr 03_wind_off 2 288 1.0 0.0 +fr 04_res 2 288 1.0 0.0 +fr 05_nuclear 2 288 1.0 0.0 +fr 06_coal 2 288 1.0 0.0 +fr 07_gas 2 288 0.0 0.0 +fr 08_non-res 2 288 0.0 0.0 +fr 09_hydro_pump 2 288 0.0 0.0 +fr 01_solar 2 289 1.0 0.0 +fr 02_wind_on 2 289 1.0 0.0 +fr 03_wind_off 2 289 1.0 0.0 +fr 04_res 2 289 1.0 0.0 +fr 05_nuclear 2 289 1.0 0.0 +fr 06_coal 2 289 1.0 0.0 +fr 07_gas 2 289 0.0 0.0 +fr 08_non-res 2 289 0.0 0.0 +fr 09_hydro_pump 2 289 0.0 0.0 +fr 01_solar 2 290 1.0 0.0 +fr 02_wind_on 2 290 1.0 0.0 +fr 03_wind_off 2 290 1.0 0.0 +fr 04_res 2 290 1.0 0.0 +fr 05_nuclear 2 290 1.0 0.0 +fr 06_coal 2 290 1.0 0.0 +fr 07_gas 2 290 1.0 0.0 +fr 08_non-res 2 290 0.0 0.0 +fr 09_hydro_pump 2 290 0.0 0.0 +fr 01_solar 2 291 1.0 0.0 +fr 02_wind_on 2 291 1.0 0.0 +fr 03_wind_off 2 291 1.0 0.0 +fr 04_res 2 291 1.0 0.0 +fr 05_nuclear 2 291 1.0 0.0 +fr 06_coal 2 291 1.0 0.0 +fr 07_gas 2 291 1.0 0.0 +fr 08_non-res 2 291 0.0 0.0 +fr 09_hydro_pump 2 291 0.0 0.0 +fr 01_solar 2 292 1.0 0.0 +fr 02_wind_on 2 292 1.0 0.0 +fr 03_wind_off 2 292 1.0 0.0 +fr 04_res 2 292 1.0 0.0 +fr 05_nuclear 2 292 1.0 0.0 +fr 06_coal 2 292 1.0 0.0 +fr 07_gas 2 292 1.0 0.0 +fr 08_non-res 2 292 0.0 0.0 +fr 09_hydro_pump 2 292 0.0 0.0 +fr 01_solar 2 293 1.0 0.0 +fr 02_wind_on 2 293 1.0 0.0 +fr 03_wind_off 2 293 1.0 0.0 +fr 04_res 2 293 1.0 0.0 +fr 05_nuclear 2 293 1.0 0.0 +fr 06_coal 2 293 1.0 0.0 +fr 07_gas 2 293 1.0 0.0 +fr 08_non-res 2 293 0.0 0.0 +fr 09_hydro_pump 2 293 0.0 0.0 +fr 01_solar 2 294 1.0 0.0 +fr 02_wind_on 2 294 1.0 0.0 +fr 03_wind_off 2 294 1.0 0.0 +fr 04_res 2 294 1.0 0.0 +fr 05_nuclear 2 294 1.0 0.0 +fr 06_coal 2 294 1.0 0.0 +fr 07_gas 2 294 1.0 0.0 +fr 08_non-res 2 294 0.0 0.0 +fr 09_hydro_pump 2 294 0.0 0.0 +fr 01_solar 2 295 1.0 0.0 +fr 02_wind_on 2 295 1.0 0.0 +fr 03_wind_off 2 295 1.0 0.0 +fr 04_res 2 295 1.0 0.0 +fr 05_nuclear 2 295 1.0 0.0 +fr 06_coal 2 295 1.0 0.0 +fr 07_gas 2 295 1.0 0.0 +fr 08_non-res 2 295 0.0 0.0 +fr 09_hydro_pump 2 295 0.0 0.0 +fr 01_solar 2 296 1.0 0.0 +fr 02_wind_on 2 296 1.0 0.0 +fr 03_wind_off 2 296 1.0 0.0 +fr 04_res 2 296 1.0 0.0 +fr 05_nuclear 2 296 1.0 0.0 +fr 06_coal 2 296 1.0 0.0 +fr 07_gas 2 296 1.0 0.0 +fr 08_non-res 2 296 0.0 0.0 +fr 09_hydro_pump 2 296 0.0 0.0 +fr 01_solar 2 297 1.0 0.0 +fr 02_wind_on 2 297 1.0 0.0 +fr 03_wind_off 2 297 1.0 0.0 +fr 04_res 2 297 1.0 0.0 +fr 05_nuclear 2 297 1.0 0.0 +fr 06_coal 2 297 1.0 0.0 +fr 07_gas 2 297 1.0 0.0 +fr 08_non-res 2 297 0.0 0.0 +fr 09_hydro_pump 2 297 0.0 0.0 +fr 01_solar 2 298 1.0 0.0 +fr 02_wind_on 2 298 1.0 0.0 +fr 03_wind_off 2 298 1.0 0.0 +fr 04_res 2 298 1.0 0.0 +fr 05_nuclear 2 298 1.0 0.0 +fr 06_coal 2 298 1.0 0.0 +fr 07_gas 2 298 1.0 0.0 +fr 08_non-res 2 298 0.0 0.0 +fr 09_hydro_pump 2 298 0.0 0.0 +fr 01_solar 2 299 1.0 0.0 +fr 02_wind_on 2 299 1.0 0.0 +fr 03_wind_off 2 299 1.0 0.0 +fr 04_res 2 299 1.0 0.0 +fr 05_nuclear 2 299 1.0 0.0 +fr 06_coal 2 299 1.0 0.0 +fr 07_gas 2 299 1.0 0.0 +fr 08_non-res 2 299 0.0 0.0 +fr 09_hydro_pump 2 299 0.0 0.0 +fr 01_solar 2 300 1.0 0.0 +fr 02_wind_on 2 300 1.0 0.0 +fr 03_wind_off 2 300 1.0 0.0 +fr 04_res 2 300 1.0 0.0 +fr 05_nuclear 2 300 1.0 0.0 +fr 06_coal 2 300 1.0 0.0 +fr 07_gas 2 300 1.0 0.0 +fr 08_non-res 2 300 0.0 0.0 +fr 09_hydro_pump 2 300 0.0 0.0 +fr 01_solar 2 301 1.0 0.0 +fr 02_wind_on 2 301 1.0 0.0 +fr 03_wind_off 2 301 1.0 0.0 +fr 04_res 2 301 1.0 0.0 +fr 05_nuclear 2 301 1.0 0.0 +fr 06_coal 2 301 1.0 0.0 +fr 07_gas 2 301 1.0 0.0 +fr 08_non-res 2 301 0.0 0.0 +fr 09_hydro_pump 2 301 0.0 0.0 +fr 01_solar 2 302 1.0 0.0 +fr 02_wind_on 2 302 1.0 0.0 +fr 03_wind_off 2 302 1.0 0.0 +fr 04_res 2 302 1.0 0.0 +fr 05_nuclear 2 302 1.0 0.0 +fr 06_coal 2 302 1.0 0.0 +fr 07_gas 2 302 1.0 0.0 +fr 08_non-res 2 302 0.0 0.0 +fr 09_hydro_pump 2 302 0.0 0.0 +fr 01_solar 2 303 1.0 0.0 +fr 02_wind_on 2 303 1.0 0.0 +fr 03_wind_off 2 303 1.0 0.0 +fr 04_res 2 303 1.0 0.0 +fr 05_nuclear 2 303 1.0 0.0 +fr 06_coal 2 303 1.0 0.0 +fr 07_gas 2 303 1.0 0.0 +fr 08_non-res 2 303 0.0 0.0 +fr 09_hydro_pump 2 303 0.0 0.0 +fr 01_solar 2 304 1.0 0.0 +fr 02_wind_on 2 304 1.0 0.0 +fr 03_wind_off 2 304 1.0 0.0 +fr 04_res 2 304 1.0 0.0 +fr 05_nuclear 2 304 1.0 0.0 +fr 06_coal 2 304 1.0 0.0 +fr 07_gas 2 304 1.0 0.0 +fr 08_non-res 2 304 0.0 0.0 +fr 09_hydro_pump 2 304 0.0 0.0 +fr 01_solar 2 305 1.0 0.0 +fr 02_wind_on 2 305 1.0 0.0 +fr 03_wind_off 2 305 1.0 0.0 +fr 04_res 2 305 1.0 0.0 +fr 05_nuclear 2 305 1.0 0.0 +fr 06_coal 2 305 1.0 0.0 +fr 07_gas 2 305 1.0 0.0 +fr 08_non-res 2 305 0.0 0.0 +fr 09_hydro_pump 2 305 0.0 0.0 +fr 01_solar 2 306 1.0 0.0 +fr 02_wind_on 2 306 1.0 0.0 +fr 03_wind_off 2 306 1.0 0.0 +fr 04_res 2 306 1.0 0.0 +fr 05_nuclear 2 306 1.0 0.0 +fr 06_coal 2 306 1.0 0.0 +fr 07_gas 2 306 1.0 0.0 +fr 08_non-res 2 306 0.0 0.0 +fr 09_hydro_pump 2 306 0.0 0.0 +fr 01_solar 2 307 1.0 0.0 +fr 02_wind_on 2 307 1.0 0.0 +fr 03_wind_off 2 307 1.0 0.0 +fr 04_res 2 307 1.0 0.0 +fr 05_nuclear 2 307 1.0 0.0 +fr 06_coal 2 307 1.0 0.0 +fr 07_gas 2 307 1.0 0.0 +fr 08_non-res 2 307 0.0 0.0 +fr 09_hydro_pump 2 307 0.0 0.0 +fr 01_solar 2 308 1.0 0.0 +fr 02_wind_on 2 308 1.0 0.0 +fr 03_wind_off 2 308 1.0 0.0 +fr 04_res 2 308 1.0 0.0 +fr 05_nuclear 2 308 1.0 0.0 +fr 06_coal 2 308 1.0 0.0 +fr 07_gas 2 308 1.0 0.0 +fr 08_non-res 2 308 0.0 0.0 +fr 09_hydro_pump 2 308 0.0 0.0 +fr 01_solar 2 309 1.0 0.0 +fr 02_wind_on 2 309 1.0 0.0 +fr 03_wind_off 2 309 1.0 0.0 +fr 04_res 2 309 1.0 0.0 +fr 05_nuclear 2 309 1.0 0.0 +fr 06_coal 2 309 1.0 0.0 +fr 07_gas 2 309 1.0 0.0 +fr 08_non-res 2 309 0.0 0.0 +fr 09_hydro_pump 2 309 0.0 0.0 +fr 01_solar 2 310 1.0 0.0 +fr 02_wind_on 2 310 1.0 0.0 +fr 03_wind_off 2 310 1.0 0.0 +fr 04_res 2 310 1.0 0.0 +fr 05_nuclear 2 310 1.0 0.0 +fr 06_coal 2 310 1.0 0.0 +fr 07_gas 2 310 1.0 0.0 +fr 08_non-res 2 310 1.0 0.0 +fr 09_hydro_pump 2 310 0.0 0.0 +fr 01_solar 2 311 1.0 0.0 +fr 02_wind_on 2 311 1.0 0.0 +fr 03_wind_off 2 311 1.0 0.0 +fr 04_res 2 311 1.0 0.0 +fr 05_nuclear 2 311 1.0 0.0 +fr 06_coal 2 311 1.0 0.0 +fr 07_gas 2 311 1.0 0.0 +fr 08_non-res 2 311 1.0 0.0 +fr 09_hydro_pump 2 311 0.0 0.0 +fr 01_solar 2 312 1.0 0.0 +fr 02_wind_on 2 312 1.0 0.0 +fr 03_wind_off 2 312 1.0 0.0 +fr 04_res 2 312 1.0 0.0 +fr 05_nuclear 2 312 1.0 0.0 +fr 06_coal 2 312 1.0 0.0 +fr 07_gas 2 312 1.0 0.0 +fr 08_non-res 2 312 1.0 0.0 +fr 09_hydro_pump 2 312 0.0 0.0 +fr 01_solar 2 313 1.0 0.0 +fr 02_wind_on 2 313 1.0 0.0 +fr 03_wind_off 2 313 1.0 0.0 +fr 04_res 2 313 1.0 0.0 +fr 05_nuclear 2 313 1.0 0.0 +fr 06_coal 2 313 1.0 0.0 +fr 07_gas 2 313 1.0 0.0 +fr 08_non-res 2 313 1.0 0.0 +fr 09_hydro_pump 2 313 0.0 0.0 +fr 01_solar 2 314 1.0 0.0 +fr 02_wind_on 2 314 1.0 0.0 +fr 03_wind_off 2 314 1.0 0.0 +fr 04_res 2 314 1.0 0.0 +fr 05_nuclear 2 314 1.0 0.0 +fr 06_coal 2 314 1.0 0.0 +fr 07_gas 2 314 1.0 0.0 +fr 08_non-res 2 314 1.0 0.0 +fr 09_hydro_pump 2 314 0.0 0.0 +fr 01_solar 2 315 1.0 0.0 +fr 02_wind_on 2 315 1.0 0.0 +fr 03_wind_off 2 315 1.0 0.0 +fr 04_res 2 315 1.0 0.0 +fr 05_nuclear 2 315 1.0 0.0 +fr 06_coal 2 315 1.0 0.0 +fr 07_gas 2 315 1.0 0.0 +fr 08_non-res 2 315 1.0 0.0 +fr 09_hydro_pump 2 315 0.0 0.0 +fr 01_solar 2 316 1.0 0.0 +fr 02_wind_on 2 316 1.0 0.0 +fr 03_wind_off 2 316 1.0 0.0 +fr 04_res 2 316 1.0 0.0 +fr 05_nuclear 2 316 1.0 0.0 +fr 06_coal 2 316 1.0 0.0 +fr 07_gas 2 316 1.0 0.0 +fr 08_non-res 2 316 1.0 0.0 +fr 09_hydro_pump 2 316 0.0 0.0 +fr 01_solar 2 317 1.0 0.0 +fr 02_wind_on 2 317 1.0 0.0 +fr 03_wind_off 2 317 1.0 0.0 +fr 04_res 2 317 1.0 0.0 +fr 05_nuclear 2 317 1.0 0.0 +fr 06_coal 2 317 1.0 0.0 +fr 07_gas 2 317 1.0 0.0 +fr 08_non-res 2 317 1.0 0.0 +fr 09_hydro_pump 2 317 0.0 0.0 +fr 01_solar 2 318 1.0 0.0 +fr 02_wind_on 2 318 1.0 0.0 +fr 03_wind_off 2 318 1.0 0.0 +fr 04_res 2 318 1.0 0.0 +fr 05_nuclear 2 318 1.0 0.0 +fr 06_coal 2 318 1.0 0.0 +fr 07_gas 2 318 1.0 0.0 +fr 08_non-res 2 318 1.0 0.0 +fr 09_hydro_pump 2 318 0.0 0.0 +fr 01_solar 2 319 1.0 0.0 +fr 02_wind_on 2 319 1.0 0.0 +fr 03_wind_off 2 319 1.0 0.0 +fr 04_res 2 319 1.0 0.0 +fr 05_nuclear 2 319 1.0 0.0 +fr 06_coal 2 319 1.0 0.0 +fr 07_gas 2 319 1.0 0.0 +fr 08_non-res 2 319 1.0 0.0 +fr 09_hydro_pump 2 319 0.0 0.0 +fr 01_solar 2 320 1.0 0.0 +fr 02_wind_on 2 320 1.0 0.0 +fr 03_wind_off 2 320 1.0 0.0 +fr 04_res 2 320 1.0 0.0 +fr 05_nuclear 2 320 1.0 0.0 +fr 06_coal 2 320 1.0 0.0 +fr 07_gas 2 320 1.0 0.0 +fr 08_non-res 2 320 1.0 0.0 +fr 09_hydro_pump 2 320 0.0 0.0 +fr 01_solar 2 321 1.0 0.0 +fr 02_wind_on 2 321 1.0 0.0 +fr 03_wind_off 2 321 1.0 0.0 +fr 04_res 2 321 1.0 0.0 +fr 05_nuclear 2 321 1.0 0.0 +fr 06_coal 2 321 1.0 0.0 +fr 07_gas 2 321 1.0 0.0 +fr 08_non-res 2 321 1.0 0.0 +fr 09_hydro_pump 2 321 0.0 0.0 +fr 01_solar 2 322 1.0 0.0 +fr 02_wind_on 2 322 1.0 0.0 +fr 03_wind_off 2 322 1.0 0.0 +fr 04_res 2 322 1.0 0.0 +fr 05_nuclear 2 322 1.0 0.0 +fr 06_coal 2 322 1.0 0.0 +fr 07_gas 2 322 1.0 0.0 +fr 08_non-res 2 322 1.0 0.0 +fr 09_hydro_pump 2 322 0.0 0.0 +fr 01_solar 2 323 1.0 0.0 +fr 02_wind_on 2 323 1.0 0.0 +fr 03_wind_off 2 323 1.0 0.0 +fr 04_res 2 323 1.0 0.0 +fr 05_nuclear 2 323 1.0 0.0 +fr 06_coal 2 323 1.0 0.0 +fr 07_gas 2 323 1.0 0.0 +fr 08_non-res 2 323 1.0 0.0 +fr 09_hydro_pump 2 323 0.0 0.0 +fr 01_solar 2 324 1.0 0.0 +fr 02_wind_on 2 324 1.0 0.0 +fr 03_wind_off 2 324 1.0 0.0 +fr 04_res 2 324 1.0 0.0 +fr 05_nuclear 2 324 1.0 0.0 +fr 06_coal 2 324 1.0 0.0 +fr 07_gas 2 324 1.0 0.0 +fr 08_non-res 2 324 1.0 0.0 +fr 09_hydro_pump 2 324 0.0 0.0 +fr 01_solar 2 325 1.0 0.0 +fr 02_wind_on 2 325 1.0 0.0 +fr 03_wind_off 2 325 1.0 0.0 +fr 04_res 2 325 1.0 0.0 +fr 05_nuclear 2 325 1.0 0.0 +fr 06_coal 2 325 1.0 0.0 +fr 07_gas 2 325 1.0 0.0 +fr 08_non-res 2 325 1.0 0.0 +fr 09_hydro_pump 2 325 0.0 0.0 +fr 01_solar 2 326 1.0 0.0 +fr 02_wind_on 2 326 1.0 0.0 +fr 03_wind_off 2 326 1.0 0.0 +fr 04_res 2 326 1.0 0.0 +fr 05_nuclear 2 326 1.0 0.0 +fr 06_coal 2 326 1.0 0.0 +fr 07_gas 2 326 1.0 0.0 +fr 08_non-res 2 326 1.0 0.0 +fr 09_hydro_pump 2 326 0.0 0.0 +fr 01_solar 2 327 1.0 0.0 +fr 02_wind_on 2 327 1.0 0.0 +fr 03_wind_off 2 327 1.0 0.0 +fr 04_res 2 327 1.0 0.0 +fr 05_nuclear 2 327 1.0 0.0 +fr 06_coal 2 327 1.0 0.0 +fr 07_gas 2 327 1.0 0.0 +fr 08_non-res 2 327 1.0 0.0 +fr 09_hydro_pump 2 327 0.0 0.0 +fr 01_solar 2 328 1.0 0.0 +fr 02_wind_on 2 328 1.0 0.0 +fr 03_wind_off 2 328 1.0 0.0 +fr 04_res 2 328 1.0 0.0 +fr 05_nuclear 2 328 1.0 0.0 +fr 06_coal 2 328 1.0 0.0 +fr 07_gas 2 328 1.0 0.0 +fr 08_non-res 2 328 1.0 0.0 +fr 09_hydro_pump 2 328 0.0 0.0 +fr 01_solar 2 329 1.0 0.0 +fr 02_wind_on 2 329 1.0 0.0 +fr 03_wind_off 2 329 1.0 0.0 +fr 04_res 2 329 1.0 0.0 +fr 05_nuclear 2 329 1.0 0.0 +fr 06_coal 2 329 1.0 0.0 +fr 07_gas 2 329 1.0 0.0 +fr 08_non-res 2 329 1.0 0.0 +fr 09_hydro_pump 2 329 0.0 0.0 +fr 01_solar 2 330 1.0 0.0 +fr 02_wind_on 2 330 1.0 0.0 +fr 03_wind_off 2 330 1.0 0.0 +fr 04_res 2 330 1.0 0.0 +fr 05_nuclear 2 330 1.0 0.0 +fr 06_coal 2 330 1.0 0.0 +fr 07_gas 2 330 1.0 0.0 +fr 08_non-res 2 330 1.0 0.0 +fr 09_hydro_pump 2 330 1.0 0.0 +fr 01_solar 2 331 1.0 0.0 +fr 02_wind_on 2 331 1.0 0.0 +fr 03_wind_off 2 331 1.0 0.0 +fr 04_res 2 331 1.0 0.0 +fr 05_nuclear 2 331 1.0 0.0 +fr 06_coal 2 331 1.0 0.0 +fr 07_gas 2 331 1.0 0.0 +fr 08_non-res 2 331 1.0 0.0 +fr 09_hydro_pump 2 331 1.0 0.0 +fr 01_solar 2 332 1.0 0.0 +fr 02_wind_on 2 332 1.0 0.0 +fr 03_wind_off 2 332 1.0 0.0 +fr 04_res 2 332 1.0 0.0 +fr 05_nuclear 2 332 1.0 0.0 +fr 06_coal 2 332 1.0 0.0 +fr 07_gas 2 332 1.0 0.0 +fr 08_non-res 2 332 1.0 0.0 +fr 09_hydro_pump 2 332 1.0 0.0 +fr 01_solar 2 333 1.0 0.0 +fr 02_wind_on 2 333 1.0 0.0 +fr 03_wind_off 2 333 1.0 0.0 +fr 04_res 2 333 1.0 0.0 +fr 05_nuclear 2 333 1.0 0.0 +fr 06_coal 2 333 1.0 0.0 +fr 07_gas 2 333 1.0 0.0 +fr 08_non-res 2 333 1.0 0.0 +fr 09_hydro_pump 2 333 1.0 0.0 +fr 01_solar 2 334 1.0 0.0 +fr 02_wind_on 2 334 1.0 0.0 +fr 03_wind_off 2 334 1.0 0.0 +fr 04_res 2 334 1.0 0.0 +fr 05_nuclear 2 334 1.0 0.0 +fr 06_coal 2 334 1.0 0.0 +fr 07_gas 2 334 1.0 0.0 +fr 08_non-res 2 334 1.0 0.0 +fr 09_hydro_pump 2 334 1.0 0.0 +fr 01_solar 2 335 1.0 0.0 +fr 02_wind_on 2 335 1.0 0.0 +fr 03_wind_off 2 335 1.0 0.0 +fr 04_res 2 335 1.0 0.0 +fr 05_nuclear 2 335 1.0 0.0 +fr 06_coal 2 335 1.0 0.0 +fr 07_gas 2 335 1.0 0.0 +fr 08_non-res 2 335 1.0 0.0 +fr 09_hydro_pump 2 335 1.0 0.0 +fr 01_solar 2 336 1.0 0.0 +fr 02_wind_on 2 336 1.0 0.0 +fr 03_wind_off 2 336 1.0 0.0 +fr 04_res 2 336 1.0 0.0 +fr 05_nuclear 2 336 1.0 0.0 +fr 06_coal 2 336 1.0 0.0 +fr 07_gas 2 336 1.0 0.0 +fr 08_non-res 2 336 1.0 0.0 +fr 09_hydro_pump 2 336 1.0 0.0 +it 01_solar 2 1 0.0 0.0 +it 02_wind_on 2 1 0.0 0.0 +it 03_wind_off 2 1 0.0 0.0 +it 04_res 2 1 0.0 0.0 +it 05_nuclear 2 1 0.0 0.0 +it 06_coal 2 1 0.0 0.0 +it 07_gas 2 1 0.0 0.0 +it 08_non-res 2 1 0.0 0.0 +it 09_hydro_pump 2 1 0.0 0.0 +it 01_solar 2 2 1.0 0.0 +it 02_wind_on 2 2 0.0 0.0 +it 03_wind_off 2 2 0.0 0.0 +it 04_res 2 2 0.0 0.0 +it 05_nuclear 2 2 0.0 0.0 +it 06_coal 2 2 0.0 0.0 +it 07_gas 2 2 0.0 0.0 +it 08_non-res 2 2 0.0 0.0 +it 09_hydro_pump 2 2 0.0 0.0 +it 01_solar 2 3 1.0 0.0 +it 02_wind_on 2 3 0.0 0.0 +it 03_wind_off 2 3 0.0 0.0 +it 04_res 2 3 0.0 0.0 +it 05_nuclear 2 3 0.0 0.0 +it 06_coal 2 3 0.0 0.0 +it 07_gas 2 3 0.0 0.0 +it 08_non-res 2 3 0.0 0.0 +it 09_hydro_pump 2 3 0.0 0.0 +it 01_solar 2 4 1.0 0.0 +it 02_wind_on 2 4 0.0 0.0 +it 03_wind_off 2 4 0.0 0.0 +it 04_res 2 4 0.0 0.0 +it 05_nuclear 2 4 0.0 0.0 +it 06_coal 2 4 0.0 0.0 +it 07_gas 2 4 0.0 0.0 +it 08_non-res 2 4 0.0 0.0 +it 09_hydro_pump 2 4 0.0 0.0 +it 01_solar 2 5 1.0 0.0 +it 02_wind_on 2 5 0.0 0.0 +it 03_wind_off 2 5 0.0 0.0 +it 04_res 2 5 0.0 0.0 +it 05_nuclear 2 5 0.0 0.0 +it 06_coal 2 5 0.0 0.0 +it 07_gas 2 5 0.0 0.0 +it 08_non-res 2 5 0.0 0.0 +it 09_hydro_pump 2 5 0.0 0.0 +it 01_solar 2 6 1.0 0.0 +it 02_wind_on 2 6 0.0 0.0 +it 03_wind_off 2 6 0.0 0.0 +it 04_res 2 6 0.0 0.0 +it 05_nuclear 2 6 0.0 0.0 +it 06_coal 2 6 0.0 0.0 +it 07_gas 2 6 0.0 0.0 +it 08_non-res 2 6 0.0 0.0 +it 09_hydro_pump 2 6 0.0 0.0 +it 01_solar 2 7 1.0 0.0 +it 02_wind_on 2 7 0.0 0.0 +it 03_wind_off 2 7 0.0 0.0 +it 04_res 2 7 0.0 0.0 +it 05_nuclear 2 7 0.0 0.0 +it 06_coal 2 7 0.0 0.0 +it 07_gas 2 7 0.0 0.0 +it 08_non-res 2 7 0.0 0.0 +it 09_hydro_pump 2 7 0.0 0.0 +it 01_solar 2 8 1.0 0.0 +it 02_wind_on 2 8 0.0 0.0 +it 03_wind_off 2 8 0.0 0.0 +it 04_res 2 8 0.0 0.0 +it 05_nuclear 2 8 0.0 0.0 +it 06_coal 2 8 0.0 0.0 +it 07_gas 2 8 0.0 0.0 +it 08_non-res 2 8 0.0 0.0 +it 09_hydro_pump 2 8 0.0 0.0 +it 01_solar 2 9 1.0 0.0 +it 02_wind_on 2 9 0.0 0.0 +it 03_wind_off 2 9 0.0 0.0 +it 04_res 2 9 0.0 0.0 +it 05_nuclear 2 9 0.0 0.0 +it 06_coal 2 9 0.0 0.0 +it 07_gas 2 9 0.0 0.0 +it 08_non-res 2 9 0.0 0.0 +it 09_hydro_pump 2 9 0.0 0.0 +it 01_solar 2 10 1.0 0.0 +it 02_wind_on 2 10 0.0 0.0 +it 03_wind_off 2 10 0.0 0.0 +it 04_res 2 10 0.0 0.0 +it 05_nuclear 2 10 0.0 0.0 +it 06_coal 2 10 0.0 0.0 +it 07_gas 2 10 0.0 0.0 +it 08_non-res 2 10 0.0 0.0 +it 09_hydro_pump 2 10 0.0 0.0 +it 01_solar 2 11 1.0 0.0 +it 02_wind_on 2 11 0.0 0.0 +it 03_wind_off 2 11 0.0 0.0 +it 04_res 2 11 0.0 0.0 +it 05_nuclear 2 11 0.0 0.0 +it 06_coal 2 11 0.0 0.0 +it 07_gas 2 11 0.0 0.0 +it 08_non-res 2 11 0.0 0.0 +it 09_hydro_pump 2 11 0.0 0.0 +it 01_solar 2 12 1.0 0.0 +it 02_wind_on 2 12 0.0 0.0 +it 03_wind_off 2 12 0.0 0.0 +it 04_res 2 12 0.0 0.0 +it 05_nuclear 2 12 0.0 0.0 +it 06_coal 2 12 0.0 0.0 +it 07_gas 2 12 0.0 0.0 +it 08_non-res 2 12 0.0 0.0 +it 09_hydro_pump 2 12 0.0 0.0 +it 01_solar 2 13 1.0 0.0 +it 02_wind_on 2 13 0.0 0.0 +it 03_wind_off 2 13 0.0 0.0 +it 04_res 2 13 0.0 0.0 +it 05_nuclear 2 13 0.0 0.0 +it 06_coal 2 13 0.0 0.0 +it 07_gas 2 13 0.0 0.0 +it 08_non-res 2 13 0.0 0.0 +it 09_hydro_pump 2 13 0.0 0.0 +it 01_solar 2 14 1.0 0.0 +it 02_wind_on 2 14 0.0 0.0 +it 03_wind_off 2 14 0.0 0.0 +it 04_res 2 14 0.0 0.0 +it 05_nuclear 2 14 0.0 0.0 +it 06_coal 2 14 0.0 0.0 +it 07_gas 2 14 0.0 0.0 +it 08_non-res 2 14 0.0 0.0 +it 09_hydro_pump 2 14 0.0 0.0 +it 01_solar 2 15 1.0 0.0 +it 02_wind_on 2 15 0.0 0.0 +it 03_wind_off 2 15 0.0 0.0 +it 04_res 2 15 0.0 0.0 +it 05_nuclear 2 15 0.0 0.0 +it 06_coal 2 15 0.0 0.0 +it 07_gas 2 15 0.0 0.0 +it 08_non-res 2 15 0.0 0.0 +it 09_hydro_pump 2 15 0.0 0.0 +it 01_solar 2 16 1.0 0.0 +it 02_wind_on 2 16 0.0 0.0 +it 03_wind_off 2 16 0.0 0.0 +it 04_res 2 16 0.0 0.0 +it 05_nuclear 2 16 0.0 0.0 +it 06_coal 2 16 0.0 0.0 +it 07_gas 2 16 0.0 0.0 +it 08_non-res 2 16 0.0 0.0 +it 09_hydro_pump 2 16 0.0 0.0 +it 01_solar 2 17 1.0 0.0 +it 02_wind_on 2 17 0.0 0.0 +it 03_wind_off 2 17 0.0 0.0 +it 04_res 2 17 0.0 0.0 +it 05_nuclear 2 17 0.0 0.0 +it 06_coal 2 17 0.0 0.0 +it 07_gas 2 17 0.0 0.0 +it 08_non-res 2 17 0.0 0.0 +it 09_hydro_pump 2 17 0.0 0.0 +it 01_solar 2 18 1.0 0.0 +it 02_wind_on 2 18 0.0 0.0 +it 03_wind_off 2 18 0.0 0.0 +it 04_res 2 18 0.0 0.0 +it 05_nuclear 2 18 0.0 0.0 +it 06_coal 2 18 0.0 0.0 +it 07_gas 2 18 0.0 0.0 +it 08_non-res 2 18 0.0 0.0 +it 09_hydro_pump 2 18 0.0 0.0 +it 01_solar 2 19 1.0 0.0 +it 02_wind_on 2 19 0.0 0.0 +it 03_wind_off 2 19 0.0 0.0 +it 04_res 2 19 0.0 0.0 +it 05_nuclear 2 19 0.0 0.0 +it 06_coal 2 19 0.0 0.0 +it 07_gas 2 19 0.0 0.0 +it 08_non-res 2 19 0.0 0.0 +it 09_hydro_pump 2 19 0.0 0.0 +it 01_solar 2 20 1.0 0.0 +it 02_wind_on 2 20 0.0 0.0 +it 03_wind_off 2 20 0.0 0.0 +it 04_res 2 20 0.0 0.0 +it 05_nuclear 2 20 0.0 0.0 +it 06_coal 2 20 0.0 0.0 +it 07_gas 2 20 0.0 0.0 +it 08_non-res 2 20 0.0 0.0 +it 09_hydro_pump 2 20 0.0 0.0 +it 01_solar 2 21 1.0 0.0 +it 02_wind_on 2 21 0.0 0.0 +it 03_wind_off 2 21 0.0 0.0 +it 04_res 2 21 0.0 0.0 +it 05_nuclear 2 21 0.0 0.0 +it 06_coal 2 21 0.0 0.0 +it 07_gas 2 21 0.0 0.0 +it 08_non-res 2 21 0.0 0.0 +it 09_hydro_pump 2 21 0.0 0.0 +it 01_solar 2 22 1.0 0.0 +it 02_wind_on 2 22 1.0 0.0 +it 03_wind_off 2 22 0.0 0.0 +it 04_res 2 22 0.0 0.0 +it 05_nuclear 2 22 0.0 0.0 +it 06_coal 2 22 0.0 0.0 +it 07_gas 2 22 0.0 0.0 +it 08_non-res 2 22 0.0 0.0 +it 09_hydro_pump 2 22 0.0 0.0 +it 01_solar 2 23 1.0 0.0 +it 02_wind_on 2 23 1.0 0.0 +it 03_wind_off 2 23 0.0 0.0 +it 04_res 2 23 0.0 0.0 +it 05_nuclear 2 23 0.0 0.0 +it 06_coal 2 23 0.0 0.0 +it 07_gas 2 23 0.0 0.0 +it 08_non-res 2 23 0.0 0.0 +it 09_hydro_pump 2 23 0.0 0.0 +it 01_solar 2 24 1.0 0.0 +it 02_wind_on 2 24 1.0 0.0 +it 03_wind_off 2 24 0.0 0.0 +it 04_res 2 24 0.0 0.0 +it 05_nuclear 2 24 0.0 0.0 +it 06_coal 2 24 0.0 0.0 +it 07_gas 2 24 0.0 0.0 +it 08_non-res 2 24 0.0 0.0 +it 09_hydro_pump 2 24 0.0 0.0 +it 01_solar 2 25 1.0 0.0 +it 02_wind_on 2 25 1.0 0.0 +it 03_wind_off 2 25 0.0 0.0 +it 04_res 2 25 0.0 0.0 +it 05_nuclear 2 25 0.0 0.0 +it 06_coal 2 25 0.0 0.0 +it 07_gas 2 25 0.0 0.0 +it 08_non-res 2 25 0.0 0.0 +it 09_hydro_pump 2 25 0.0 0.0 +it 01_solar 2 26 1.0 0.0 +it 02_wind_on 2 26 1.0 0.0 +it 03_wind_off 2 26 0.0 0.0 +it 04_res 2 26 0.0 0.0 +it 05_nuclear 2 26 0.0 0.0 +it 06_coal 2 26 0.0 0.0 +it 07_gas 2 26 0.0 0.0 +it 08_non-res 2 26 0.0 0.0 +it 09_hydro_pump 2 26 0.0 0.0 +it 01_solar 2 27 1.0 0.0 +it 02_wind_on 2 27 1.0 0.0 +it 03_wind_off 2 27 0.0 0.0 +it 04_res 2 27 0.0 0.0 +it 05_nuclear 2 27 0.0 0.0 +it 06_coal 2 27 0.0 0.0 +it 07_gas 2 27 0.0 0.0 +it 08_non-res 2 27 0.0 0.0 +it 09_hydro_pump 2 27 0.0 0.0 +it 01_solar 2 28 1.0 0.0 +it 02_wind_on 2 28 1.0 0.0 +it 03_wind_off 2 28 0.0 0.0 +it 04_res 2 28 0.0 0.0 +it 05_nuclear 2 28 0.0 0.0 +it 06_coal 2 28 0.0 0.0 +it 07_gas 2 28 0.0 0.0 +it 08_non-res 2 28 0.0 0.0 +it 09_hydro_pump 2 28 0.0 0.0 +it 01_solar 2 29 1.0 0.0 +it 02_wind_on 2 29 1.0 0.0 +it 03_wind_off 2 29 0.0 0.0 +it 04_res 2 29 0.0 0.0 +it 05_nuclear 2 29 0.0 0.0 +it 06_coal 2 29 0.0 0.0 +it 07_gas 2 29 0.0 0.0 +it 08_non-res 2 29 0.0 0.0 +it 09_hydro_pump 2 29 0.0 0.0 +it 01_solar 2 30 1.0 0.0 +it 02_wind_on 2 30 1.0 0.0 +it 03_wind_off 2 30 0.0 0.0 +it 04_res 2 30 0.0 0.0 +it 05_nuclear 2 30 0.0 0.0 +it 06_coal 2 30 0.0 0.0 +it 07_gas 2 30 0.0 0.0 +it 08_non-res 2 30 0.0 0.0 +it 09_hydro_pump 2 30 0.0 0.0 +it 01_solar 2 31 1.0 0.0 +it 02_wind_on 2 31 1.0 0.0 +it 03_wind_off 2 31 0.0 0.0 +it 04_res 2 31 0.0 0.0 +it 05_nuclear 2 31 0.0 0.0 +it 06_coal 2 31 0.0 0.0 +it 07_gas 2 31 0.0 0.0 +it 08_non-res 2 31 0.0 0.0 +it 09_hydro_pump 2 31 0.0 0.0 +it 01_solar 2 32 1.0 0.0 +it 02_wind_on 2 32 1.0 0.0 +it 03_wind_off 2 32 0.0 0.0 +it 04_res 2 32 0.0 0.0 +it 05_nuclear 2 32 0.0 0.0 +it 06_coal 2 32 0.0 0.0 +it 07_gas 2 32 0.0 0.0 +it 08_non-res 2 32 0.0 0.0 +it 09_hydro_pump 2 32 0.0 0.0 +it 01_solar 2 33 1.0 0.0 +it 02_wind_on 2 33 1.0 0.0 +it 03_wind_off 2 33 0.0 0.0 +it 04_res 2 33 0.0 0.0 +it 05_nuclear 2 33 0.0 0.0 +it 06_coal 2 33 0.0 0.0 +it 07_gas 2 33 0.0 0.0 +it 08_non-res 2 33 0.0 0.0 +it 09_hydro_pump 2 33 0.0 0.0 +it 01_solar 2 34 1.0 0.0 +it 02_wind_on 2 34 1.0 0.0 +it 03_wind_off 2 34 0.0 0.0 +it 04_res 2 34 0.0 0.0 +it 05_nuclear 2 34 0.0 0.0 +it 06_coal 2 34 0.0 0.0 +it 07_gas 2 34 0.0 0.0 +it 08_non-res 2 34 0.0 0.0 +it 09_hydro_pump 2 34 0.0 0.0 +it 01_solar 2 35 1.0 0.0 +it 02_wind_on 2 35 1.0 0.0 +it 03_wind_off 2 35 0.0 0.0 +it 04_res 2 35 0.0 0.0 +it 05_nuclear 2 35 0.0 0.0 +it 06_coal 2 35 0.0 0.0 +it 07_gas 2 35 0.0 0.0 +it 08_non-res 2 35 0.0 0.0 +it 09_hydro_pump 2 35 0.0 0.0 +it 01_solar 2 36 1.0 0.0 +it 02_wind_on 2 36 1.0 0.0 +it 03_wind_off 2 36 0.0 0.0 +it 04_res 2 36 0.0 0.0 +it 05_nuclear 2 36 0.0 0.0 +it 06_coal 2 36 0.0 0.0 +it 07_gas 2 36 0.0 0.0 +it 08_non-res 2 36 0.0 0.0 +it 09_hydro_pump 2 36 0.0 0.0 +it 01_solar 2 37 1.0 0.0 +it 02_wind_on 2 37 1.0 0.0 +it 03_wind_off 2 37 0.0 0.0 +it 04_res 2 37 0.0 0.0 +it 05_nuclear 2 37 0.0 0.0 +it 06_coal 2 37 0.0 0.0 +it 07_gas 2 37 0.0 0.0 +it 08_non-res 2 37 0.0 0.0 +it 09_hydro_pump 2 37 0.0 0.0 +it 01_solar 2 38 1.0 0.0 +it 02_wind_on 2 38 1.0 0.0 +it 03_wind_off 2 38 0.0 0.0 +it 04_res 2 38 0.0 0.0 +it 05_nuclear 2 38 0.0 0.0 +it 06_coal 2 38 0.0 0.0 +it 07_gas 2 38 0.0 0.0 +it 08_non-res 2 38 0.0 0.0 +it 09_hydro_pump 2 38 0.0 0.0 +it 01_solar 2 39 1.0 0.0 +it 02_wind_on 2 39 1.0 0.0 +it 03_wind_off 2 39 0.0 0.0 +it 04_res 2 39 0.0 0.0 +it 05_nuclear 2 39 0.0 0.0 +it 06_coal 2 39 0.0 0.0 +it 07_gas 2 39 0.0 0.0 +it 08_non-res 2 39 0.0 0.0 +it 09_hydro_pump 2 39 0.0 0.0 +it 01_solar 2 40 1.0 0.0 +it 02_wind_on 2 40 1.0 0.0 +it 03_wind_off 2 40 0.0 0.0 +it 04_res 2 40 0.0 0.0 +it 05_nuclear 2 40 0.0 0.0 +it 06_coal 2 40 0.0 0.0 +it 07_gas 2 40 0.0 0.0 +it 08_non-res 2 40 0.0 0.0 +it 09_hydro_pump 2 40 0.0 0.0 +it 01_solar 2 41 1.0 0.0 +it 02_wind_on 2 41 1.0 0.0 +it 03_wind_off 2 41 0.0 0.0 +it 04_res 2 41 0.0 0.0 +it 05_nuclear 2 41 0.0 0.0 +it 06_coal 2 41 0.0 0.0 +it 07_gas 2 41 0.0 0.0 +it 08_non-res 2 41 0.0 0.0 +it 09_hydro_pump 2 41 0.0 0.0 +it 01_solar 2 42 1.0 0.0 +it 02_wind_on 2 42 1.0 0.0 +it 03_wind_off 2 42 1.0 0.0 +it 04_res 2 42 0.0 0.0 +it 05_nuclear 2 42 0.0 0.0 +it 06_coal 2 42 0.0 0.0 +it 07_gas 2 42 0.0 0.0 +it 08_non-res 2 42 0.0 0.0 +it 09_hydro_pump 2 42 0.0 0.0 +it 01_solar 2 43 1.0 0.0 +it 02_wind_on 2 43 1.0 0.0 +it 03_wind_off 2 43 1.0 0.0 +it 04_res 2 43 0.0 0.0 +it 05_nuclear 2 43 0.0 0.0 +it 06_coal 2 43 0.0 0.0 +it 07_gas 2 43 0.0 0.0 +it 08_non-res 2 43 0.0 0.0 +it 09_hydro_pump 2 43 0.0 0.0 +it 01_solar 2 44 1.0 0.0 +it 02_wind_on 2 44 1.0 0.0 +it 03_wind_off 2 44 1.0 0.0 +it 04_res 2 44 0.0 0.0 +it 05_nuclear 2 44 0.0 0.0 +it 06_coal 2 44 0.0 0.0 +it 07_gas 2 44 0.0 0.0 +it 08_non-res 2 44 0.0 0.0 +it 09_hydro_pump 2 44 0.0 0.0 +it 01_solar 2 45 1.0 0.0 +it 02_wind_on 2 45 1.0 0.0 +it 03_wind_off 2 45 1.0 0.0 +it 04_res 2 45 0.0 0.0 +it 05_nuclear 2 45 0.0 0.0 +it 06_coal 2 45 0.0 0.0 +it 07_gas 2 45 0.0 0.0 +it 08_non-res 2 45 0.0 0.0 +it 09_hydro_pump 2 45 0.0 0.0 +it 01_solar 2 46 1.0 0.0 +it 02_wind_on 2 46 1.0 0.0 +it 03_wind_off 2 46 1.0 0.0 +it 04_res 2 46 0.0 0.0 +it 05_nuclear 2 46 0.0 0.0 +it 06_coal 2 46 0.0 0.0 +it 07_gas 2 46 0.0 0.0 +it 08_non-res 2 46 0.0 0.0 +it 09_hydro_pump 2 46 0.0 0.0 +it 01_solar 2 47 1.0 0.0 +it 02_wind_on 2 47 1.0 0.0 +it 03_wind_off 2 47 1.0 0.0 +it 04_res 2 47 0.0 0.0 +it 05_nuclear 2 47 0.0 0.0 +it 06_coal 2 47 0.0 0.0 +it 07_gas 2 47 0.0 0.0 +it 08_non-res 2 47 0.0 0.0 +it 09_hydro_pump 2 47 0.0 0.0 +it 01_solar 2 48 1.0 0.0 +it 02_wind_on 2 48 1.0 0.0 +it 03_wind_off 2 48 1.0 0.0 +it 04_res 2 48 0.0 0.0 +it 05_nuclear 2 48 0.0 0.0 +it 06_coal 2 48 0.0 0.0 +it 07_gas 2 48 0.0 0.0 +it 08_non-res 2 48 0.0 0.0 +it 09_hydro_pump 2 48 0.0 0.0 +it 01_solar 2 49 1.0 0.0 +it 02_wind_on 2 49 1.0 0.0 +it 03_wind_off 2 49 1.0 0.0 +it 04_res 2 49 0.0 0.0 +it 05_nuclear 2 49 0.0 0.0 +it 06_coal 2 49 0.0 0.0 +it 07_gas 2 49 0.0 0.0 +it 08_non-res 2 49 0.0 0.0 +it 09_hydro_pump 2 49 0.0 0.0 +it 01_solar 2 50 1.0 0.0 +it 02_wind_on 2 50 1.0 0.0 +it 03_wind_off 2 50 1.0 0.0 +it 04_res 2 50 0.0 0.0 +it 05_nuclear 2 50 0.0 0.0 +it 06_coal 2 50 0.0 0.0 +it 07_gas 2 50 0.0 0.0 +it 08_non-res 2 50 0.0 0.0 +it 09_hydro_pump 2 50 0.0 0.0 +it 01_solar 2 51 1.0 0.0 +it 02_wind_on 2 51 1.0 0.0 +it 03_wind_off 2 51 1.0 0.0 +it 04_res 2 51 0.0 0.0 +it 05_nuclear 2 51 0.0 0.0 +it 06_coal 2 51 0.0 0.0 +it 07_gas 2 51 0.0 0.0 +it 08_non-res 2 51 0.0 0.0 +it 09_hydro_pump 2 51 0.0 0.0 +it 01_solar 2 52 1.0 0.0 +it 02_wind_on 2 52 1.0 0.0 +it 03_wind_off 2 52 1.0 0.0 +it 04_res 2 52 0.0 0.0 +it 05_nuclear 2 52 0.0 0.0 +it 06_coal 2 52 0.0 0.0 +it 07_gas 2 52 0.0 0.0 +it 08_non-res 2 52 0.0 0.0 +it 09_hydro_pump 2 52 0.0 0.0 +it 01_solar 2 53 1.0 0.0 +it 02_wind_on 2 53 1.0 0.0 +it 03_wind_off 2 53 1.0 0.0 +it 04_res 2 53 0.0 0.0 +it 05_nuclear 2 53 0.0 0.0 +it 06_coal 2 53 0.0 0.0 +it 07_gas 2 53 0.0 0.0 +it 08_non-res 2 53 0.0 0.0 +it 09_hydro_pump 2 53 0.0 0.0 +it 01_solar 2 54 1.0 0.0 +it 02_wind_on 2 54 1.0 0.0 +it 03_wind_off 2 54 1.0 0.0 +it 04_res 2 54 0.0 0.0 +it 05_nuclear 2 54 0.0 0.0 +it 06_coal 2 54 0.0 0.0 +it 07_gas 2 54 0.0 0.0 +it 08_non-res 2 54 0.0 0.0 +it 09_hydro_pump 2 54 0.0 0.0 +it 01_solar 2 55 1.0 0.0 +it 02_wind_on 2 55 1.0 0.0 +it 03_wind_off 2 55 1.0 0.0 +it 04_res 2 55 0.0 0.0 +it 05_nuclear 2 55 0.0 0.0 +it 06_coal 2 55 0.0 0.0 +it 07_gas 2 55 0.0 0.0 +it 08_non-res 2 55 0.0 0.0 +it 09_hydro_pump 2 55 0.0 0.0 +it 01_solar 2 56 1.0 0.0 +it 02_wind_on 2 56 1.0 0.0 +it 03_wind_off 2 56 1.0 0.0 +it 04_res 2 56 0.0 0.0 +it 05_nuclear 2 56 0.0 0.0 +it 06_coal 2 56 0.0 0.0 +it 07_gas 2 56 0.0 0.0 +it 08_non-res 2 56 0.0 0.0 +it 09_hydro_pump 2 56 0.0 0.0 +it 01_solar 2 57 1.0 0.0 +it 02_wind_on 2 57 1.0 0.0 +it 03_wind_off 2 57 1.0 0.0 +it 04_res 2 57 0.0 0.0 +it 05_nuclear 2 57 0.0 0.0 +it 06_coal 2 57 0.0 0.0 +it 07_gas 2 57 0.0 0.0 +it 08_non-res 2 57 0.0 0.0 +it 09_hydro_pump 2 57 0.0 0.0 +it 01_solar 2 58 1.0 0.0 +it 02_wind_on 2 58 1.0 0.0 +it 03_wind_off 2 58 1.0 0.0 +it 04_res 2 58 0.0 0.0 +it 05_nuclear 2 58 0.0 0.0 +it 06_coal 2 58 0.0 0.0 +it 07_gas 2 58 0.0 0.0 +it 08_non-res 2 58 0.0 0.0 +it 09_hydro_pump 2 58 0.0 0.0 +it 01_solar 2 59 1.0 0.0 +it 02_wind_on 2 59 1.0 0.0 +it 03_wind_off 2 59 1.0 0.0 +it 04_res 2 59 0.0 0.0 +it 05_nuclear 2 59 0.0 0.0 +it 06_coal 2 59 0.0 0.0 +it 07_gas 2 59 0.0 0.0 +it 08_non-res 2 59 0.0 0.0 +it 09_hydro_pump 2 59 0.0 0.0 +it 01_solar 2 60 1.0 0.0 +it 02_wind_on 2 60 1.0 0.0 +it 03_wind_off 2 60 1.0 0.0 +it 04_res 2 60 0.0 0.0 +it 05_nuclear 2 60 0.0 0.0 +it 06_coal 2 60 0.0 0.0 +it 07_gas 2 60 0.0 0.0 +it 08_non-res 2 60 0.0 0.0 +it 09_hydro_pump 2 60 0.0 0.0 +it 01_solar 2 61 1.0 0.0 +it 02_wind_on 2 61 1.0 0.0 +it 03_wind_off 2 61 1.0 0.0 +it 04_res 2 61 0.0 0.0 +it 05_nuclear 2 61 0.0 0.0 +it 06_coal 2 61 0.0 0.0 +it 07_gas 2 61 0.0 0.0 +it 08_non-res 2 61 0.0 0.0 +it 09_hydro_pump 2 61 0.0 0.0 +it 01_solar 2 62 1.0 0.0 +it 02_wind_on 2 62 1.0 0.0 +it 03_wind_off 2 62 1.0 0.0 +it 04_res 2 62 1.0 0.0 +it 05_nuclear 2 62 0.0 0.0 +it 06_coal 2 62 0.0 0.0 +it 07_gas 2 62 0.0 0.0 +it 08_non-res 2 62 0.0 0.0 +it 09_hydro_pump 2 62 0.0 0.0 +it 01_solar 2 63 1.0 0.0 +it 02_wind_on 2 63 1.0 0.0 +it 03_wind_off 2 63 1.0 0.0 +it 04_res 2 63 1.0 0.0 +it 05_nuclear 2 63 0.0 0.0 +it 06_coal 2 63 0.0 0.0 +it 07_gas 2 63 0.0 0.0 +it 08_non-res 2 63 0.0 0.0 +it 09_hydro_pump 2 63 0.0 0.0 +it 01_solar 2 64 1.0 0.0 +it 02_wind_on 2 64 1.0 0.0 +it 03_wind_off 2 64 1.0 0.0 +it 04_res 2 64 1.0 0.0 +it 05_nuclear 2 64 0.0 0.0 +it 06_coal 2 64 0.0 0.0 +it 07_gas 2 64 0.0 0.0 +it 08_non-res 2 64 0.0 0.0 +it 09_hydro_pump 2 64 0.0 0.0 +it 01_solar 2 65 1.0 0.0 +it 02_wind_on 2 65 1.0 0.0 +it 03_wind_off 2 65 1.0 0.0 +it 04_res 2 65 1.0 0.0 +it 05_nuclear 2 65 0.0 0.0 +it 06_coal 2 65 0.0 0.0 +it 07_gas 2 65 0.0 0.0 +it 08_non-res 2 65 0.0 0.0 +it 09_hydro_pump 2 65 0.0 0.0 +it 01_solar 2 66 1.0 0.0 +it 02_wind_on 2 66 1.0 0.0 +it 03_wind_off 2 66 1.0 0.0 +it 04_res 2 66 1.0 0.0 +it 05_nuclear 2 66 0.0 0.0 +it 06_coal 2 66 0.0 0.0 +it 07_gas 2 66 0.0 0.0 +it 08_non-res 2 66 0.0 0.0 +it 09_hydro_pump 2 66 0.0 0.0 +it 01_solar 2 67 1.0 0.0 +it 02_wind_on 2 67 1.0 0.0 +it 03_wind_off 2 67 1.0 0.0 +it 04_res 2 67 1.0 0.0 +it 05_nuclear 2 67 0.0 0.0 +it 06_coal 2 67 0.0 0.0 +it 07_gas 2 67 0.0 0.0 +it 08_non-res 2 67 0.0 0.0 +it 09_hydro_pump 2 67 0.0 0.0 +it 01_solar 2 68 1.0 0.0 +it 02_wind_on 2 68 1.0 0.0 +it 03_wind_off 2 68 1.0 0.0 +it 04_res 2 68 1.0 0.0 +it 05_nuclear 2 68 0.0 0.0 +it 06_coal 2 68 0.0 0.0 +it 07_gas 2 68 0.0 0.0 +it 08_non-res 2 68 0.0 0.0 +it 09_hydro_pump 2 68 0.0 0.0 +it 01_solar 2 69 1.0 0.0 +it 02_wind_on 2 69 1.0 0.0 +it 03_wind_off 2 69 1.0 0.0 +it 04_res 2 69 1.0 0.0 +it 05_nuclear 2 69 0.0 0.0 +it 06_coal 2 69 0.0 0.0 +it 07_gas 2 69 0.0 0.0 +it 08_non-res 2 69 0.0 0.0 +it 09_hydro_pump 2 69 0.0 0.0 +it 01_solar 2 70 1.0 0.0 +it 02_wind_on 2 70 1.0 0.0 +it 03_wind_off 2 70 1.0 0.0 +it 04_res 2 70 1.0 0.0 +it 05_nuclear 2 70 0.0 0.0 +it 06_coal 2 70 0.0 0.0 +it 07_gas 2 70 0.0 0.0 +it 08_non-res 2 70 0.0 0.0 +it 09_hydro_pump 2 70 0.0 0.0 +it 01_solar 2 71 1.0 0.0 +it 02_wind_on 2 71 1.0 0.0 +it 03_wind_off 2 71 1.0 0.0 +it 04_res 2 71 1.0 0.0 +it 05_nuclear 2 71 0.0 0.0 +it 06_coal 2 71 0.0 0.0 +it 07_gas 2 71 0.0 0.0 +it 08_non-res 2 71 0.0 0.0 +it 09_hydro_pump 2 71 0.0 0.0 +it 01_solar 2 72 1.0 0.0 +it 02_wind_on 2 72 1.0 0.0 +it 03_wind_off 2 72 1.0 0.0 +it 04_res 2 72 1.0 0.0 +it 05_nuclear 2 72 0.0 0.0 +it 06_coal 2 72 0.0 0.0 +it 07_gas 2 72 0.0 0.0 +it 08_non-res 2 72 0.0 0.0 +it 09_hydro_pump 2 72 0.0 0.0 +it 01_solar 2 73 1.0 0.0 +it 02_wind_on 2 73 1.0 0.0 +it 03_wind_off 2 73 1.0 0.0 +it 04_res 2 73 1.0 0.0 +it 05_nuclear 2 73 0.0 0.0 +it 06_coal 2 73 0.0 0.0 +it 07_gas 2 73 0.0 0.0 +it 08_non-res 2 73 0.0 0.0 +it 09_hydro_pump 2 73 0.0 0.0 +it 01_solar 2 74 1.0 0.0 +it 02_wind_on 2 74 1.0 0.0 +it 03_wind_off 2 74 1.0 0.0 +it 04_res 2 74 1.0 0.0 +it 05_nuclear 2 74 0.0 0.0 +it 06_coal 2 74 0.0 0.0 +it 07_gas 2 74 0.0 0.0 +it 08_non-res 2 74 0.0 0.0 +it 09_hydro_pump 2 74 0.0 0.0 +it 01_solar 2 75 1.0 0.0 +it 02_wind_on 2 75 1.0 0.0 +it 03_wind_off 2 75 1.0 0.0 +it 04_res 2 75 1.0 0.0 +it 05_nuclear 2 75 0.0 0.0 +it 06_coal 2 75 0.0 0.0 +it 07_gas 2 75 0.0 0.0 +it 08_non-res 2 75 0.0 0.0 +it 09_hydro_pump 2 75 0.0 0.0 +it 01_solar 2 76 1.0 0.0 +it 02_wind_on 2 76 1.0 0.0 +it 03_wind_off 2 76 1.0 0.0 +it 04_res 2 76 1.0 0.0 +it 05_nuclear 2 76 0.0 0.0 +it 06_coal 2 76 0.0 0.0 +it 07_gas 2 76 0.0 0.0 +it 08_non-res 2 76 0.0 0.0 +it 09_hydro_pump 2 76 0.0 0.0 +it 01_solar 2 77 1.0 0.0 +it 02_wind_on 2 77 1.0 0.0 +it 03_wind_off 2 77 1.0 0.0 +it 04_res 2 77 1.0 0.0 +it 05_nuclear 2 77 0.0 0.0 +it 06_coal 2 77 0.0 0.0 +it 07_gas 2 77 0.0 0.0 +it 08_non-res 2 77 0.0 0.0 +it 09_hydro_pump 2 77 0.0 0.0 +it 01_solar 2 78 1.0 0.0 +it 02_wind_on 2 78 1.0 0.0 +it 03_wind_off 2 78 1.0 0.0 +it 04_res 2 78 1.0 0.0 +it 05_nuclear 2 78 0.0 0.0 +it 06_coal 2 78 0.0 0.0 +it 07_gas 2 78 0.0 0.0 +it 08_non-res 2 78 0.0 0.0 +it 09_hydro_pump 2 78 0.0 0.0 +it 01_solar 2 79 1.0 0.0 +it 02_wind_on 2 79 1.0 0.0 +it 03_wind_off 2 79 1.0 0.0 +it 04_res 2 79 1.0 0.0 +it 05_nuclear 2 79 0.0 0.0 +it 06_coal 2 79 0.0 0.0 +it 07_gas 2 79 0.0 0.0 +it 08_non-res 2 79 0.0 0.0 +it 09_hydro_pump 2 79 0.0 0.0 +it 01_solar 2 80 1.0 0.0 +it 02_wind_on 2 80 1.0 0.0 +it 03_wind_off 2 80 1.0 0.0 +it 04_res 2 80 1.0 0.0 +it 05_nuclear 2 80 0.0 0.0 +it 06_coal 2 80 0.0 0.0 +it 07_gas 2 80 0.0 0.0 +it 08_non-res 2 80 0.0 0.0 +it 09_hydro_pump 2 80 0.0 0.0 +it 01_solar 2 81 1.0 0.0 +it 02_wind_on 2 81 1.0 0.0 +it 03_wind_off 2 81 1.0 0.0 +it 04_res 2 81 1.0 0.0 +it 05_nuclear 2 81 0.0 0.0 +it 06_coal 2 81 0.0 0.0 +it 07_gas 2 81 0.0 0.0 +it 08_non-res 2 81 0.0 0.0 +it 09_hydro_pump 2 81 0.0 0.0 +it 01_solar 2 82 1.0 0.0 +it 02_wind_on 2 82 1.0 0.0 +it 03_wind_off 2 82 1.0 0.0 +it 04_res 2 82 1.0 0.0 +it 05_nuclear 2 82 1.0 0.0 +it 06_coal 2 82 0.0 0.0 +it 07_gas 2 82 0.0 0.0 +it 08_non-res 2 82 0.0 0.0 +it 09_hydro_pump 2 82 0.0 0.0 +it 01_solar 2 83 1.0 0.0 +it 02_wind_on 2 83 1.0 0.0 +it 03_wind_off 2 83 1.0 0.0 +it 04_res 2 83 1.0 0.0 +it 05_nuclear 2 83 1.0 0.0 +it 06_coal 2 83 0.0 0.0 +it 07_gas 2 83 0.0 0.0 +it 08_non-res 2 83 0.0 0.0 +it 09_hydro_pump 2 83 0.0 0.0 +it 01_solar 2 84 1.0 0.0 +it 02_wind_on 2 84 1.0 0.0 +it 03_wind_off 2 84 1.0 0.0 +it 04_res 2 84 1.0 0.0 +it 05_nuclear 2 84 1.0 0.0 +it 06_coal 2 84 0.0 0.0 +it 07_gas 2 84 0.0 0.0 +it 08_non-res 2 84 0.0 0.0 +it 09_hydro_pump 2 84 0.0 0.0 +it 01_solar 2 85 1.0 0.0 +it 02_wind_on 2 85 1.0 0.0 +it 03_wind_off 2 85 1.0 0.0 +it 04_res 2 85 1.0 0.0 +it 05_nuclear 2 85 1.0 0.0 +it 06_coal 2 85 0.0 0.0 +it 07_gas 2 85 0.0 0.0 +it 08_non-res 2 85 0.0 0.0 +it 09_hydro_pump 2 85 0.0 0.0 +it 01_solar 2 86 1.0 0.0 +it 02_wind_on 2 86 1.0 0.0 +it 03_wind_off 2 86 1.0 0.0 +it 04_res 2 86 1.0 0.0 +it 05_nuclear 2 86 1.0 0.0 +it 06_coal 2 86 0.0 0.0 +it 07_gas 2 86 0.0 0.0 +it 08_non-res 2 86 0.0 0.0 +it 09_hydro_pump 2 86 0.0 0.0 +it 01_solar 2 87 1.0 0.0 +it 02_wind_on 2 87 1.0 0.0 +it 03_wind_off 2 87 1.0 0.0 +it 04_res 2 87 1.0 0.0 +it 05_nuclear 2 87 1.0 0.0 +it 06_coal 2 87 0.0 0.0 +it 07_gas 2 87 0.0 0.0 +it 08_non-res 2 87 0.0 0.0 +it 09_hydro_pump 2 87 0.0 0.0 +it 01_solar 2 88 1.0 0.0 +it 02_wind_on 2 88 1.0 0.0 +it 03_wind_off 2 88 1.0 0.0 +it 04_res 2 88 1.0 0.0 +it 05_nuclear 2 88 1.0 0.0 +it 06_coal 2 88 0.0 0.0 +it 07_gas 2 88 0.0 0.0 +it 08_non-res 2 88 0.0 0.0 +it 09_hydro_pump 2 88 0.0 0.0 +it 01_solar 2 89 1.0 0.0 +it 02_wind_on 2 89 1.0 0.0 +it 03_wind_off 2 89 1.0 0.0 +it 04_res 2 89 1.0 0.0 +it 05_nuclear 2 89 1.0 0.0 +it 06_coal 2 89 0.0 0.0 +it 07_gas 2 89 0.0 0.0 +it 08_non-res 2 89 0.0 0.0 +it 09_hydro_pump 2 89 0.0 0.0 +it 01_solar 2 90 1.0 0.0 +it 02_wind_on 2 90 1.0 0.0 +it 03_wind_off 2 90 1.0 0.0 +it 04_res 2 90 1.0 0.0 +it 05_nuclear 2 90 1.0 0.0 +it 06_coal 2 90 0.0 0.0 +it 07_gas 2 90 0.0 0.0 +it 08_non-res 2 90 0.0 0.0 +it 09_hydro_pump 2 90 0.0 0.0 +it 01_solar 2 91 1.0 0.0 +it 02_wind_on 2 91 1.0 0.0 +it 03_wind_off 2 91 1.0 0.0 +it 04_res 2 91 1.0 0.0 +it 05_nuclear 2 91 1.0 0.0 +it 06_coal 2 91 0.0 0.0 +it 07_gas 2 91 0.0 0.0 +it 08_non-res 2 91 0.0 0.0 +it 09_hydro_pump 2 91 0.0 0.0 +it 01_solar 2 92 1.0 0.0 +it 02_wind_on 2 92 1.0 0.0 +it 03_wind_off 2 92 1.0 0.0 +it 04_res 2 92 1.0 0.0 +it 05_nuclear 2 92 1.0 0.0 +it 06_coal 2 92 0.0 0.0 +it 07_gas 2 92 0.0 0.0 +it 08_non-res 2 92 0.0 0.0 +it 09_hydro_pump 2 92 0.0 0.0 +it 01_solar 2 93 1.0 0.0 +it 02_wind_on 2 93 1.0 0.0 +it 03_wind_off 2 93 1.0 0.0 +it 04_res 2 93 1.0 0.0 +it 05_nuclear 2 93 1.0 0.0 +it 06_coal 2 93 0.0 0.0 +it 07_gas 2 93 0.0 0.0 +it 08_non-res 2 93 0.0 0.0 +it 09_hydro_pump 2 93 0.0 0.0 +it 01_solar 2 94 1.0 0.0 +it 02_wind_on 2 94 1.0 0.0 +it 03_wind_off 2 94 1.0 0.0 +it 04_res 2 94 1.0 0.0 +it 05_nuclear 2 94 1.0 0.0 +it 06_coal 2 94 0.0 0.0 +it 07_gas 2 94 0.0 0.0 +it 08_non-res 2 94 0.0 0.0 +it 09_hydro_pump 2 94 0.0 0.0 +it 01_solar 2 95 1.0 0.0 +it 02_wind_on 2 95 1.0 0.0 +it 03_wind_off 2 95 1.0 0.0 +it 04_res 2 95 1.0 0.0 +it 05_nuclear 2 95 1.0 0.0 +it 06_coal 2 95 0.0 0.0 +it 07_gas 2 95 0.0 0.0 +it 08_non-res 2 95 0.0 0.0 +it 09_hydro_pump 2 95 0.0 0.0 +it 01_solar 2 96 1.0 0.0 +it 02_wind_on 2 96 1.0 0.0 +it 03_wind_off 2 96 1.0 0.0 +it 04_res 2 96 1.0 0.0 +it 05_nuclear 2 96 1.0 0.0 +it 06_coal 2 96 0.0 0.0 +it 07_gas 2 96 0.0 0.0 +it 08_non-res 2 96 0.0 0.0 +it 09_hydro_pump 2 96 0.0 0.0 +it 01_solar 2 97 1.0 0.0 +it 02_wind_on 2 97 1.0 0.0 +it 03_wind_off 2 97 1.0 0.0 +it 04_res 2 97 1.0 0.0 +it 05_nuclear 2 97 1.0 0.0 +it 06_coal 2 97 0.0 0.0 +it 07_gas 2 97 0.0 0.0 +it 08_non-res 2 97 0.0 0.0 +it 09_hydro_pump 2 97 0.0 0.0 +it 01_solar 2 98 1.0 0.0 +it 02_wind_on 2 98 1.0 0.0 +it 03_wind_off 2 98 1.0 0.0 +it 04_res 2 98 1.0 0.0 +it 05_nuclear 2 98 1.0 0.0 +it 06_coal 2 98 0.0 0.0 +it 07_gas 2 98 0.0 0.0 +it 08_non-res 2 98 0.0 0.0 +it 09_hydro_pump 2 98 0.0 0.0 +it 01_solar 2 99 1.0 0.0 +it 02_wind_on 2 99 1.0 0.0 +it 03_wind_off 2 99 1.0 0.0 +it 04_res 2 99 1.0 0.0 +it 05_nuclear 2 99 1.0 0.0 +it 06_coal 2 99 0.0 0.0 +it 07_gas 2 99 0.0 0.0 +it 08_non-res 2 99 0.0 0.0 +it 09_hydro_pump 2 99 0.0 0.0 +it 01_solar 2 100 1.0 0.0 +it 02_wind_on 2 100 1.0 0.0 +it 03_wind_off 2 100 1.0 0.0 +it 04_res 2 100 1.0 0.0 +it 05_nuclear 2 100 1.0 0.0 +it 06_coal 2 100 0.0 0.0 +it 07_gas 2 100 0.0 0.0 +it 08_non-res 2 100 0.0 0.0 +it 09_hydro_pump 2 100 0.0 0.0 +it 01_solar 2 101 1.0 0.0 +it 02_wind_on 2 101 1.0 0.0 +it 03_wind_off 2 101 1.0 0.0 +it 04_res 2 101 1.0 0.0 +it 05_nuclear 2 101 1.0 0.0 +it 06_coal 2 101 0.0 0.0 +it 07_gas 2 101 0.0 0.0 +it 08_non-res 2 101 0.0 0.0 +it 09_hydro_pump 2 101 0.0 0.0 +it 01_solar 2 102 1.0 0.0 +it 02_wind_on 2 102 1.0 0.0 +it 03_wind_off 2 102 1.0 0.0 +it 04_res 2 102 1.0 0.0 +it 05_nuclear 2 102 1.0 0.0 +it 06_coal 2 102 1.0 0.0 +it 07_gas 2 102 0.0 0.0 +it 08_non-res 2 102 0.0 0.0 +it 09_hydro_pump 2 102 0.0 0.0 +it 01_solar 2 103 1.0 0.0 +it 02_wind_on 2 103 1.0 0.0 +it 03_wind_off 2 103 1.0 0.0 +it 04_res 2 103 1.0 0.0 +it 05_nuclear 2 103 1.0 0.0 +it 06_coal 2 103 1.0 0.0 +it 07_gas 2 103 0.0 0.0 +it 08_non-res 2 103 0.0 0.0 +it 09_hydro_pump 2 103 0.0 0.0 +it 01_solar 2 104 1.0 0.0 +it 02_wind_on 2 104 1.0 0.0 +it 03_wind_off 2 104 1.0 0.0 +it 04_res 2 104 1.0 0.0 +it 05_nuclear 2 104 1.0 0.0 +it 06_coal 2 104 1.0 0.0 +it 07_gas 2 104 0.0 0.0 +it 08_non-res 2 104 0.0 0.0 +it 09_hydro_pump 2 104 0.0 0.0 +it 01_solar 2 105 1.0 0.0 +it 02_wind_on 2 105 1.0 0.0 +it 03_wind_off 2 105 1.0 0.0 +it 04_res 2 105 1.0 0.0 +it 05_nuclear 2 105 1.0 0.0 +it 06_coal 2 105 1.0 0.0 +it 07_gas 2 105 0.0 0.0 +it 08_non-res 2 105 0.0 0.0 +it 09_hydro_pump 2 105 0.0 0.0 +it 01_solar 2 106 1.0 0.0 +it 02_wind_on 2 106 1.0 0.0 +it 03_wind_off 2 106 1.0 0.0 +it 04_res 2 106 1.0 0.0 +it 05_nuclear 2 106 1.0 0.0 +it 06_coal 2 106 1.0 0.0 +it 07_gas 2 106 0.0 0.0 +it 08_non-res 2 106 0.0 0.0 +it 09_hydro_pump 2 106 0.0 0.0 +it 01_solar 2 107 1.0 0.0 +it 02_wind_on 2 107 1.0 0.0 +it 03_wind_off 2 107 1.0 0.0 +it 04_res 2 107 1.0 0.0 +it 05_nuclear 2 107 1.0 0.0 +it 06_coal 2 107 1.0 0.0 +it 07_gas 2 107 0.0 0.0 +it 08_non-res 2 107 0.0 0.0 +it 09_hydro_pump 2 107 0.0 0.0 +it 01_solar 2 108 1.0 0.0 +it 02_wind_on 2 108 1.0 0.0 +it 03_wind_off 2 108 1.0 0.0 +it 04_res 2 108 1.0 0.0 +it 05_nuclear 2 108 1.0 0.0 +it 06_coal 2 108 1.0 0.0 +it 07_gas 2 108 0.0 0.0 +it 08_non-res 2 108 0.0 0.0 +it 09_hydro_pump 2 108 0.0 0.0 +it 01_solar 2 109 1.0 0.0 +it 02_wind_on 2 109 1.0 0.0 +it 03_wind_off 2 109 1.0 0.0 +it 04_res 2 109 1.0 0.0 +it 05_nuclear 2 109 1.0 0.0 +it 06_coal 2 109 1.0 0.0 +it 07_gas 2 109 0.0 0.0 +it 08_non-res 2 109 0.0 0.0 +it 09_hydro_pump 2 109 0.0 0.0 +it 01_solar 2 110 1.0 0.0 +it 02_wind_on 2 110 1.0 0.0 +it 03_wind_off 2 110 1.0 0.0 +it 04_res 2 110 1.0 0.0 +it 05_nuclear 2 110 1.0 0.0 +it 06_coal 2 110 1.0 0.0 +it 07_gas 2 110 0.0 0.0 +it 08_non-res 2 110 0.0 0.0 +it 09_hydro_pump 2 110 0.0 0.0 +it 01_solar 2 111 1.0 0.0 +it 02_wind_on 2 111 1.0 0.0 +it 03_wind_off 2 111 1.0 0.0 +it 04_res 2 111 1.0 0.0 +it 05_nuclear 2 111 1.0 0.0 +it 06_coal 2 111 1.0 0.0 +it 07_gas 2 111 0.0 0.0 +it 08_non-res 2 111 0.0 0.0 +it 09_hydro_pump 2 111 0.0 0.0 +it 01_solar 2 112 1.0 0.0 +it 02_wind_on 2 112 1.0 0.0 +it 03_wind_off 2 112 1.0 0.0 +it 04_res 2 112 1.0 0.0 +it 05_nuclear 2 112 1.0 0.0 +it 06_coal 2 112 1.0 0.0 +it 07_gas 2 112 0.0 0.0 +it 08_non-res 2 112 0.0 0.0 +it 09_hydro_pump 2 112 0.0 0.0 +it 01_solar 2 113 1.0 0.0 +it 02_wind_on 2 113 1.0 0.0 +it 03_wind_off 2 113 1.0 0.0 +it 04_res 2 113 1.0 0.0 +it 05_nuclear 2 113 1.0 0.0 +it 06_coal 2 113 1.0 0.0 +it 07_gas 2 113 0.0 0.0 +it 08_non-res 2 113 0.0 0.0 +it 09_hydro_pump 2 113 0.0 0.0 +it 01_solar 2 114 1.0 0.0 +it 02_wind_on 2 114 1.0 0.0 +it 03_wind_off 2 114 1.0 0.0 +it 04_res 2 114 1.0 0.0 +it 05_nuclear 2 114 1.0 0.0 +it 06_coal 2 114 1.0 0.0 +it 07_gas 2 114 0.0 0.0 +it 08_non-res 2 114 0.0 0.0 +it 09_hydro_pump 2 114 0.0 0.0 +it 01_solar 2 115 1.0 0.0 +it 02_wind_on 2 115 1.0 0.0 +it 03_wind_off 2 115 1.0 0.0 +it 04_res 2 115 1.0 0.0 +it 05_nuclear 2 115 1.0 0.0 +it 06_coal 2 115 1.0 0.0 +it 07_gas 2 115 0.0 0.0 +it 08_non-res 2 115 0.0 0.0 +it 09_hydro_pump 2 115 0.0 0.0 +it 01_solar 2 116 1.0 0.0 +it 02_wind_on 2 116 1.0 0.0 +it 03_wind_off 2 116 1.0 0.0 +it 04_res 2 116 1.0 0.0 +it 05_nuclear 2 116 1.0 0.0 +it 06_coal 2 116 1.0 0.0 +it 07_gas 2 116 0.0 0.0 +it 08_non-res 2 116 0.0 0.0 +it 09_hydro_pump 2 116 0.0 0.0 +it 01_solar 2 117 1.0 0.0 +it 02_wind_on 2 117 1.0 0.0 +it 03_wind_off 2 117 1.0 0.0 +it 04_res 2 117 1.0 0.0 +it 05_nuclear 2 117 1.0 0.0 +it 06_coal 2 117 1.0 0.0 +it 07_gas 2 117 0.0 0.0 +it 08_non-res 2 117 0.0 0.0 +it 09_hydro_pump 2 117 0.0 0.0 +it 01_solar 2 118 1.0 0.0 +it 02_wind_on 2 118 1.0 0.0 +it 03_wind_off 2 118 1.0 0.0 +it 04_res 2 118 1.0 0.0 +it 05_nuclear 2 118 1.0 0.0 +it 06_coal 2 118 1.0 0.0 +it 07_gas 2 118 0.0 0.0 +it 08_non-res 2 118 0.0 0.0 +it 09_hydro_pump 2 118 0.0 0.0 +it 01_solar 2 119 1.0 0.0 +it 02_wind_on 2 119 1.0 0.0 +it 03_wind_off 2 119 1.0 0.0 +it 04_res 2 119 1.0 0.0 +it 05_nuclear 2 119 1.0 0.0 +it 06_coal 2 119 1.0 0.0 +it 07_gas 2 119 0.0 0.0 +it 08_non-res 2 119 0.0 0.0 +it 09_hydro_pump 2 119 0.0 0.0 +it 01_solar 2 120 1.0 0.0 +it 02_wind_on 2 120 1.0 0.0 +it 03_wind_off 2 120 1.0 0.0 +it 04_res 2 120 1.0 0.0 +it 05_nuclear 2 120 1.0 0.0 +it 06_coal 2 120 1.0 0.0 +it 07_gas 2 120 0.0 0.0 +it 08_non-res 2 120 0.0 0.0 +it 09_hydro_pump 2 120 0.0 0.0 +it 01_solar 2 121 1.0 0.0 +it 02_wind_on 2 121 1.0 0.0 +it 03_wind_off 2 121 1.0 0.0 +it 04_res 2 121 1.0 0.0 +it 05_nuclear 2 121 1.0 0.0 +it 06_coal 2 121 1.0 0.0 +it 07_gas 2 121 0.0 0.0 +it 08_non-res 2 121 0.0 0.0 +it 09_hydro_pump 2 121 0.0 0.0 +it 01_solar 2 122 1.0 0.0 +it 02_wind_on 2 122 1.0 0.0 +it 03_wind_off 2 122 1.0 0.0 +it 04_res 2 122 1.0 0.0 +it 05_nuclear 2 122 1.0 0.0 +it 06_coal 2 122 1.0 0.0 +it 07_gas 2 122 1.0 0.0 +it 08_non-res 2 122 0.0 0.0 +it 09_hydro_pump 2 122 0.0 0.0 +it 01_solar 2 123 1.0 0.0 +it 02_wind_on 2 123 1.0 0.0 +it 03_wind_off 2 123 1.0 0.0 +it 04_res 2 123 1.0 0.0 +it 05_nuclear 2 123 1.0 0.0 +it 06_coal 2 123 1.0 0.0 +it 07_gas 2 123 1.0 0.0 +it 08_non-res 2 123 0.0 0.0 +it 09_hydro_pump 2 123 0.0 0.0 +it 01_solar 2 124 1.0 0.0 +it 02_wind_on 2 124 1.0 0.0 +it 03_wind_off 2 124 1.0 0.0 +it 04_res 2 124 1.0 0.0 +it 05_nuclear 2 124 1.0 0.0 +it 06_coal 2 124 1.0 0.0 +it 07_gas 2 124 1.0 0.0 +it 08_non-res 2 124 0.0 0.0 +it 09_hydro_pump 2 124 0.0 0.0 +it 01_solar 2 125 1.0 0.0 +it 02_wind_on 2 125 1.0 0.0 +it 03_wind_off 2 125 1.0 0.0 +it 04_res 2 125 1.0 0.0 +it 05_nuclear 2 125 1.0 0.0 +it 06_coal 2 125 1.0 0.0 +it 07_gas 2 125 1.0 0.0 +it 08_non-res 2 125 0.0 0.0 +it 09_hydro_pump 2 125 0.0 0.0 +it 01_solar 2 126 1.0 0.0 +it 02_wind_on 2 126 1.0 0.0 +it 03_wind_off 2 126 1.0 0.0 +it 04_res 2 126 1.0 0.0 +it 05_nuclear 2 126 1.0 0.0 +it 06_coal 2 126 1.0 0.0 +it 07_gas 2 126 1.0 0.0 +it 08_non-res 2 126 0.0 0.0 +it 09_hydro_pump 2 126 0.0 0.0 +it 01_solar 2 127 1.0 0.0 +it 02_wind_on 2 127 1.0 0.0 +it 03_wind_off 2 127 1.0 0.0 +it 04_res 2 127 1.0 0.0 +it 05_nuclear 2 127 1.0 0.0 +it 06_coal 2 127 1.0 0.0 +it 07_gas 2 127 1.0 0.0 +it 08_non-res 2 127 0.0 0.0 +it 09_hydro_pump 2 127 0.0 0.0 +it 01_solar 2 128 1.0 0.0 +it 02_wind_on 2 128 1.0 0.0 +it 03_wind_off 2 128 1.0 0.0 +it 04_res 2 128 1.0 0.0 +it 05_nuclear 2 128 1.0 0.0 +it 06_coal 2 128 1.0 0.0 +it 07_gas 2 128 1.0 0.0 +it 08_non-res 2 128 0.0 0.0 +it 09_hydro_pump 2 128 0.0 0.0 +it 01_solar 2 129 1.0 0.0 +it 02_wind_on 2 129 1.0 0.0 +it 03_wind_off 2 129 1.0 0.0 +it 04_res 2 129 1.0 0.0 +it 05_nuclear 2 129 1.0 0.0 +it 06_coal 2 129 1.0 0.0 +it 07_gas 2 129 1.0 0.0 +it 08_non-res 2 129 0.0 0.0 +it 09_hydro_pump 2 129 0.0 0.0 +it 01_solar 2 130 1.0 0.0 +it 02_wind_on 2 130 1.0 0.0 +it 03_wind_off 2 130 1.0 0.0 +it 04_res 2 130 1.0 0.0 +it 05_nuclear 2 130 1.0 0.0 +it 06_coal 2 130 1.0 0.0 +it 07_gas 2 130 1.0 0.0 +it 08_non-res 2 130 0.0 0.0 +it 09_hydro_pump 2 130 0.0 0.0 +it 01_solar 2 131 1.0 0.0 +it 02_wind_on 2 131 1.0 0.0 +it 03_wind_off 2 131 1.0 0.0 +it 04_res 2 131 1.0 0.0 +it 05_nuclear 2 131 1.0 0.0 +it 06_coal 2 131 1.0 0.0 +it 07_gas 2 131 1.0 0.0 +it 08_non-res 2 131 0.0 0.0 +it 09_hydro_pump 2 131 0.0 0.0 +it 01_solar 2 132 1.0 0.0 +it 02_wind_on 2 132 1.0 0.0 +it 03_wind_off 2 132 1.0 0.0 +it 04_res 2 132 1.0 0.0 +it 05_nuclear 2 132 1.0 0.0 +it 06_coal 2 132 1.0 0.0 +it 07_gas 2 132 1.0 0.0 +it 08_non-res 2 132 0.0 0.0 +it 09_hydro_pump 2 132 0.0 0.0 +it 01_solar 2 133 1.0 0.0 +it 02_wind_on 2 133 1.0 0.0 +it 03_wind_off 2 133 1.0 0.0 +it 04_res 2 133 1.0 0.0 +it 05_nuclear 2 133 1.0 0.0 +it 06_coal 2 133 1.0 0.0 +it 07_gas 2 133 1.0 0.0 +it 08_non-res 2 133 0.0 0.0 +it 09_hydro_pump 2 133 0.0 0.0 +it 01_solar 2 134 1.0 0.0 +it 02_wind_on 2 134 1.0 0.0 +it 03_wind_off 2 134 1.0 0.0 +it 04_res 2 134 1.0 0.0 +it 05_nuclear 2 134 1.0 0.0 +it 06_coal 2 134 1.0 0.0 +it 07_gas 2 134 1.0 0.0 +it 08_non-res 2 134 0.0 0.0 +it 09_hydro_pump 2 134 0.0 0.0 +it 01_solar 2 135 1.0 0.0 +it 02_wind_on 2 135 1.0 0.0 +it 03_wind_off 2 135 1.0 0.0 +it 04_res 2 135 1.0 0.0 +it 05_nuclear 2 135 1.0 0.0 +it 06_coal 2 135 1.0 0.0 +it 07_gas 2 135 1.0 0.0 +it 08_non-res 2 135 0.0 0.0 +it 09_hydro_pump 2 135 0.0 0.0 +it 01_solar 2 136 1.0 0.0 +it 02_wind_on 2 136 1.0 0.0 +it 03_wind_off 2 136 1.0 0.0 +it 04_res 2 136 1.0 0.0 +it 05_nuclear 2 136 1.0 0.0 +it 06_coal 2 136 1.0 0.0 +it 07_gas 2 136 1.0 0.0 +it 08_non-res 2 136 0.0 0.0 +it 09_hydro_pump 2 136 0.0 0.0 +it 01_solar 2 137 1.0 0.0 +it 02_wind_on 2 137 1.0 0.0 +it 03_wind_off 2 137 1.0 0.0 +it 04_res 2 137 1.0 0.0 +it 05_nuclear 2 137 1.0 0.0 +it 06_coal 2 137 1.0 0.0 +it 07_gas 2 137 1.0 0.0 +it 08_non-res 2 137 0.0 0.0 +it 09_hydro_pump 2 137 0.0 0.0 +it 01_solar 2 138 1.0 0.0 +it 02_wind_on 2 138 1.0 0.0 +it 03_wind_off 2 138 1.0 0.0 +it 04_res 2 138 1.0 0.0 +it 05_nuclear 2 138 1.0 0.0 +it 06_coal 2 138 1.0 0.0 +it 07_gas 2 138 1.0 0.0 +it 08_non-res 2 138 0.0 0.0 +it 09_hydro_pump 2 138 0.0 0.0 +it 01_solar 2 139 1.0 0.0 +it 02_wind_on 2 139 1.0 0.0 +it 03_wind_off 2 139 1.0 0.0 +it 04_res 2 139 1.0 0.0 +it 05_nuclear 2 139 1.0 0.0 +it 06_coal 2 139 1.0 0.0 +it 07_gas 2 139 1.0 0.0 +it 08_non-res 2 139 0.0 0.0 +it 09_hydro_pump 2 139 0.0 0.0 +it 01_solar 2 140 1.0 0.0 +it 02_wind_on 2 140 1.0 0.0 +it 03_wind_off 2 140 1.0 0.0 +it 04_res 2 140 1.0 0.0 +it 05_nuclear 2 140 1.0 0.0 +it 06_coal 2 140 1.0 0.0 +it 07_gas 2 140 1.0 0.0 +it 08_non-res 2 140 0.0 0.0 +it 09_hydro_pump 2 140 0.0 0.0 +it 01_solar 2 141 1.0 0.0 +it 02_wind_on 2 141 1.0 0.0 +it 03_wind_off 2 141 1.0 0.0 +it 04_res 2 141 1.0 0.0 +it 05_nuclear 2 141 1.0 0.0 +it 06_coal 2 141 1.0 0.0 +it 07_gas 2 141 1.0 0.0 +it 08_non-res 2 141 0.0 0.0 +it 09_hydro_pump 2 141 0.0 0.0 +it 01_solar 2 142 1.0 0.0 +it 02_wind_on 2 142 1.0 0.0 +it 03_wind_off 2 142 1.0 0.0 +it 04_res 2 142 1.0 0.0 +it 05_nuclear 2 142 1.0 0.0 +it 06_coal 2 142 1.0 0.0 +it 07_gas 2 142 1.0 0.0 +it 08_non-res 2 142 1.0 0.0 +it 09_hydro_pump 2 142 0.0 0.0 +it 01_solar 2 143 1.0 0.0 +it 02_wind_on 2 143 1.0 0.0 +it 03_wind_off 2 143 1.0 0.0 +it 04_res 2 143 1.0 0.0 +it 05_nuclear 2 143 1.0 0.0 +it 06_coal 2 143 1.0 0.0 +it 07_gas 2 143 1.0 0.0 +it 08_non-res 2 143 1.0 0.0 +it 09_hydro_pump 2 143 0.0 0.0 +it 01_solar 2 144 1.0 0.0 +it 02_wind_on 2 144 1.0 0.0 +it 03_wind_off 2 144 1.0 0.0 +it 04_res 2 144 1.0 0.0 +it 05_nuclear 2 144 1.0 0.0 +it 06_coal 2 144 1.0 0.0 +it 07_gas 2 144 1.0 0.0 +it 08_non-res 2 144 1.0 0.0 +it 09_hydro_pump 2 144 0.0 0.0 +it 01_solar 2 145 1.0 0.0 +it 02_wind_on 2 145 1.0 0.0 +it 03_wind_off 2 145 1.0 0.0 +it 04_res 2 145 1.0 0.0 +it 05_nuclear 2 145 1.0 0.0 +it 06_coal 2 145 1.0 0.0 +it 07_gas 2 145 1.0 0.0 +it 08_non-res 2 145 1.0 0.0 +it 09_hydro_pump 2 145 0.0 0.0 +it 01_solar 2 146 1.0 0.0 +it 02_wind_on 2 146 1.0 0.0 +it 03_wind_off 2 146 1.0 0.0 +it 04_res 2 146 1.0 0.0 +it 05_nuclear 2 146 1.0 0.0 +it 06_coal 2 146 1.0 0.0 +it 07_gas 2 146 1.0 0.0 +it 08_non-res 2 146 1.0 0.0 +it 09_hydro_pump 2 146 0.0 0.0 +it 01_solar 2 147 1.0 0.0 +it 02_wind_on 2 147 1.0 0.0 +it 03_wind_off 2 147 1.0 0.0 +it 04_res 2 147 1.0 0.0 +it 05_nuclear 2 147 1.0 0.0 +it 06_coal 2 147 1.0 0.0 +it 07_gas 2 147 1.0 0.0 +it 08_non-res 2 147 1.0 0.0 +it 09_hydro_pump 2 147 0.0 0.0 +it 01_solar 2 148 1.0 0.0 +it 02_wind_on 2 148 1.0 0.0 +it 03_wind_off 2 148 1.0 0.0 +it 04_res 2 148 1.0 0.0 +it 05_nuclear 2 148 1.0 0.0 +it 06_coal 2 148 1.0 0.0 +it 07_gas 2 148 1.0 0.0 +it 08_non-res 2 148 1.0 0.0 +it 09_hydro_pump 2 148 0.0 0.0 +it 01_solar 2 149 1.0 0.0 +it 02_wind_on 2 149 1.0 0.0 +it 03_wind_off 2 149 1.0 0.0 +it 04_res 2 149 1.0 0.0 +it 05_nuclear 2 149 1.0 0.0 +it 06_coal 2 149 1.0 0.0 +it 07_gas 2 149 1.0 0.0 +it 08_non-res 2 149 1.0 0.0 +it 09_hydro_pump 2 149 0.0 0.0 +it 01_solar 2 150 1.0 0.0 +it 02_wind_on 2 150 1.0 0.0 +it 03_wind_off 2 150 1.0 0.0 +it 04_res 2 150 1.0 0.0 +it 05_nuclear 2 150 1.0 0.0 +it 06_coal 2 150 1.0 0.0 +it 07_gas 2 150 1.0 0.0 +it 08_non-res 2 150 1.0 0.0 +it 09_hydro_pump 2 150 0.0 0.0 +it 01_solar 2 151 1.0 0.0 +it 02_wind_on 2 151 1.0 0.0 +it 03_wind_off 2 151 1.0 0.0 +it 04_res 2 151 1.0 0.0 +it 05_nuclear 2 151 1.0 0.0 +it 06_coal 2 151 1.0 0.0 +it 07_gas 2 151 1.0 0.0 +it 08_non-res 2 151 1.0 0.0 +it 09_hydro_pump 2 151 0.0 0.0 +it 01_solar 2 152 1.0 0.0 +it 02_wind_on 2 152 1.0 0.0 +it 03_wind_off 2 152 1.0 0.0 +it 04_res 2 152 1.0 0.0 +it 05_nuclear 2 152 1.0 0.0 +it 06_coal 2 152 1.0 0.0 +it 07_gas 2 152 1.0 0.0 +it 08_non-res 2 152 1.0 0.0 +it 09_hydro_pump 2 152 0.0 0.0 +it 01_solar 2 153 1.0 0.0 +it 02_wind_on 2 153 1.0 0.0 +it 03_wind_off 2 153 1.0 0.0 +it 04_res 2 153 1.0 0.0 +it 05_nuclear 2 153 1.0 0.0 +it 06_coal 2 153 1.0 0.0 +it 07_gas 2 153 1.0 0.0 +it 08_non-res 2 153 1.0 0.0 +it 09_hydro_pump 2 153 0.0 0.0 +it 01_solar 2 154 1.0 0.0 +it 02_wind_on 2 154 1.0 0.0 +it 03_wind_off 2 154 1.0 0.0 +it 04_res 2 154 1.0 0.0 +it 05_nuclear 2 154 1.0 0.0 +it 06_coal 2 154 1.0 0.0 +it 07_gas 2 154 1.0 0.0 +it 08_non-res 2 154 1.0 0.0 +it 09_hydro_pump 2 154 0.0 0.0 +it 01_solar 2 155 1.0 0.0 +it 02_wind_on 2 155 1.0 0.0 +it 03_wind_off 2 155 1.0 0.0 +it 04_res 2 155 1.0 0.0 +it 05_nuclear 2 155 1.0 0.0 +it 06_coal 2 155 1.0 0.0 +it 07_gas 2 155 1.0 0.0 +it 08_non-res 2 155 1.0 0.0 +it 09_hydro_pump 2 155 0.0 0.0 +it 01_solar 2 156 1.0 0.0 +it 02_wind_on 2 156 1.0 0.0 +it 03_wind_off 2 156 1.0 0.0 +it 04_res 2 156 1.0 0.0 +it 05_nuclear 2 156 1.0 0.0 +it 06_coal 2 156 1.0 0.0 +it 07_gas 2 156 1.0 0.0 +it 08_non-res 2 156 1.0 0.0 +it 09_hydro_pump 2 156 0.0 0.0 +it 01_solar 2 157 1.0 0.0 +it 02_wind_on 2 157 1.0 0.0 +it 03_wind_off 2 157 1.0 0.0 +it 04_res 2 157 1.0 0.0 +it 05_nuclear 2 157 1.0 0.0 +it 06_coal 2 157 1.0 0.0 +it 07_gas 2 157 1.0 0.0 +it 08_non-res 2 157 1.0 0.0 +it 09_hydro_pump 2 157 0.0 0.0 +it 01_solar 2 158 1.0 0.0 +it 02_wind_on 2 158 1.0 0.0 +it 03_wind_off 2 158 1.0 0.0 +it 04_res 2 158 1.0 0.0 +it 05_nuclear 2 158 1.0 0.0 +it 06_coal 2 158 1.0 0.0 +it 07_gas 2 158 1.0 0.0 +it 08_non-res 2 158 1.0 0.0 +it 09_hydro_pump 2 158 0.0 0.0 +it 01_solar 2 159 1.0 0.0 +it 02_wind_on 2 159 1.0 0.0 +it 03_wind_off 2 159 1.0 0.0 +it 04_res 2 159 1.0 0.0 +it 05_nuclear 2 159 1.0 0.0 +it 06_coal 2 159 1.0 0.0 +it 07_gas 2 159 1.0 0.0 +it 08_non-res 2 159 1.0 0.0 +it 09_hydro_pump 2 159 0.0 0.0 +it 01_solar 2 160 1.0 0.0 +it 02_wind_on 2 160 1.0 0.0 +it 03_wind_off 2 160 1.0 0.0 +it 04_res 2 160 1.0 0.0 +it 05_nuclear 2 160 1.0 0.0 +it 06_coal 2 160 1.0 0.0 +it 07_gas 2 160 1.0 0.0 +it 08_non-res 2 160 1.0 0.0 +it 09_hydro_pump 2 160 0.0 0.0 +it 01_solar 2 161 1.0 0.0 +it 02_wind_on 2 161 1.0 0.0 +it 03_wind_off 2 161 1.0 0.0 +it 04_res 2 161 1.0 0.0 +it 05_nuclear 2 161 1.0 0.0 +it 06_coal 2 161 1.0 0.0 +it 07_gas 2 161 1.0 0.0 +it 08_non-res 2 161 1.0 0.0 +it 09_hydro_pump 2 161 0.0 0.0 +it 01_solar 2 162 1.0 0.0 +it 02_wind_on 2 162 1.0 0.0 +it 03_wind_off 2 162 1.0 0.0 +it 04_res 2 162 1.0 0.0 +it 05_nuclear 2 162 1.0 0.0 +it 06_coal 2 162 1.0 0.0 +it 07_gas 2 162 1.0 0.0 +it 08_non-res 2 162 1.0 0.0 +it 09_hydro_pump 2 162 1.0 0.0 +it 01_solar 2 163 1.0 0.0 +it 02_wind_on 2 163 1.0 0.0 +it 03_wind_off 2 163 1.0 0.0 +it 04_res 2 163 1.0 0.0 +it 05_nuclear 2 163 1.0 0.0 +it 06_coal 2 163 1.0 0.0 +it 07_gas 2 163 1.0 0.0 +it 08_non-res 2 163 1.0 0.0 +it 09_hydro_pump 2 163 1.0 0.0 +it 01_solar 2 164 1.0 0.0 +it 02_wind_on 2 164 1.0 0.0 +it 03_wind_off 2 164 1.0 0.0 +it 04_res 2 164 1.0 0.0 +it 05_nuclear 2 164 1.0 0.0 +it 06_coal 2 164 1.0 0.0 +it 07_gas 2 164 1.0 0.0 +it 08_non-res 2 164 1.0 0.0 +it 09_hydro_pump 2 164 1.0 0.0 +it 01_solar 2 165 1.0 0.0 +it 02_wind_on 2 165 1.0 0.0 +it 03_wind_off 2 165 1.0 0.0 +it 04_res 2 165 1.0 0.0 +it 05_nuclear 2 165 1.0 0.0 +it 06_coal 2 165 1.0 0.0 +it 07_gas 2 165 1.0 0.0 +it 08_non-res 2 165 1.0 0.0 +it 09_hydro_pump 2 165 1.0 0.0 +it 01_solar 2 166 1.0 0.0 +it 02_wind_on 2 166 1.0 0.0 +it 03_wind_off 2 166 1.0 0.0 +it 04_res 2 166 1.0 0.0 +it 05_nuclear 2 166 1.0 0.0 +it 06_coal 2 166 1.0 0.0 +it 07_gas 2 166 1.0 0.0 +it 08_non-res 2 166 1.0 0.0 +it 09_hydro_pump 2 166 1.0 0.0 +it 01_solar 2 167 1.0 0.0 +it 02_wind_on 2 167 1.0 0.0 +it 03_wind_off 2 167 1.0 0.0 +it 04_res 2 167 1.0 0.0 +it 05_nuclear 2 167 1.0 0.0 +it 06_coal 2 167 1.0 0.0 +it 07_gas 2 167 1.0 0.0 +it 08_non-res 2 167 1.0 0.0 +it 09_hydro_pump 2 167 1.0 0.0 +it 01_solar 2 168 1.0 0.0 +it 02_wind_on 2 168 1.0 0.0 +it 03_wind_off 2 168 1.0 0.0 +it 04_res 2 168 1.0 0.0 +it 05_nuclear 2 168 1.0 0.0 +it 06_coal 2 168 1.0 0.0 +it 07_gas 2 168 1.0 0.0 +it 08_non-res 2 168 1.0 0.0 +it 09_hydro_pump 2 168 1.0 0.0 +it 01_solar 2 169 0.0 0.0 +it 02_wind_on 2 169 0.0 0.0 +it 03_wind_off 2 169 0.0 0.0 +it 04_res 2 169 0.0 0.0 +it 05_nuclear 2 169 0.0 0.0 +it 06_coal 2 169 0.0 0.0 +it 07_gas 2 169 0.0 0.0 +it 08_non-res 2 169 0.0 0.0 +it 09_hydro_pump 2 169 0.0 0.0 +it 01_solar 2 170 1.0 0.0 +it 02_wind_on 2 170 0.0 0.0 +it 03_wind_off 2 170 0.0 0.0 +it 04_res 2 170 0.0 0.0 +it 05_nuclear 2 170 0.0 0.0 +it 06_coal 2 170 0.0 0.0 +it 07_gas 2 170 0.0 0.0 +it 08_non-res 2 170 0.0 0.0 +it 09_hydro_pump 2 170 0.0 0.0 +it 01_solar 2 171 1.0 0.0 +it 02_wind_on 2 171 0.0 0.0 +it 03_wind_off 2 171 0.0 0.0 +it 04_res 2 171 0.0 0.0 +it 05_nuclear 2 171 0.0 0.0 +it 06_coal 2 171 0.0 0.0 +it 07_gas 2 171 0.0 0.0 +it 08_non-res 2 171 0.0 0.0 +it 09_hydro_pump 2 171 0.0 0.0 +it 01_solar 2 172 1.0 0.0 +it 02_wind_on 2 172 0.0 0.0 +it 03_wind_off 2 172 0.0 0.0 +it 04_res 2 172 0.0 0.0 +it 05_nuclear 2 172 0.0 0.0 +it 06_coal 2 172 0.0 0.0 +it 07_gas 2 172 0.0 0.0 +it 08_non-res 2 172 0.0 0.0 +it 09_hydro_pump 2 172 0.0 0.0 +it 01_solar 2 173 1.0 0.0 +it 02_wind_on 2 173 0.0 0.0 +it 03_wind_off 2 173 0.0 0.0 +it 04_res 2 173 0.0 0.0 +it 05_nuclear 2 173 0.0 0.0 +it 06_coal 2 173 0.0 0.0 +it 07_gas 2 173 0.0 0.0 +it 08_non-res 2 173 0.0 0.0 +it 09_hydro_pump 2 173 0.0 0.0 +it 01_solar 2 174 1.0 0.0 +it 02_wind_on 2 174 0.0 0.0 +it 03_wind_off 2 174 0.0 0.0 +it 04_res 2 174 0.0 0.0 +it 05_nuclear 2 174 0.0 0.0 +it 06_coal 2 174 0.0 0.0 +it 07_gas 2 174 0.0 0.0 +it 08_non-res 2 174 0.0 0.0 +it 09_hydro_pump 2 174 0.0 0.0 +it 01_solar 2 175 1.0 0.0 +it 02_wind_on 2 175 0.0 0.0 +it 03_wind_off 2 175 0.0 0.0 +it 04_res 2 175 0.0 0.0 +it 05_nuclear 2 175 0.0 0.0 +it 06_coal 2 175 0.0 0.0 +it 07_gas 2 175 0.0 0.0 +it 08_non-res 2 175 0.0 0.0 +it 09_hydro_pump 2 175 0.0 0.0 +it 01_solar 2 176 1.0 0.0 +it 02_wind_on 2 176 0.0 0.0 +it 03_wind_off 2 176 0.0 0.0 +it 04_res 2 176 0.0 0.0 +it 05_nuclear 2 176 0.0 0.0 +it 06_coal 2 176 0.0 0.0 +it 07_gas 2 176 0.0 0.0 +it 08_non-res 2 176 0.0 0.0 +it 09_hydro_pump 2 176 0.0 0.0 +it 01_solar 2 177 1.0 0.0 +it 02_wind_on 2 177 0.0 0.0 +it 03_wind_off 2 177 0.0 0.0 +it 04_res 2 177 0.0 0.0 +it 05_nuclear 2 177 0.0 0.0 +it 06_coal 2 177 0.0 0.0 +it 07_gas 2 177 0.0 0.0 +it 08_non-res 2 177 0.0 0.0 +it 09_hydro_pump 2 177 0.0 0.0 +it 01_solar 2 178 1.0 0.0 +it 02_wind_on 2 178 0.0 0.0 +it 03_wind_off 2 178 0.0 0.0 +it 04_res 2 178 0.0 0.0 +it 05_nuclear 2 178 0.0 0.0 +it 06_coal 2 178 0.0 0.0 +it 07_gas 2 178 0.0 0.0 +it 08_non-res 2 178 0.0 0.0 +it 09_hydro_pump 2 178 0.0 0.0 +it 01_solar 2 179 1.0 0.0 +it 02_wind_on 2 179 0.0 0.0 +it 03_wind_off 2 179 0.0 0.0 +it 04_res 2 179 0.0 0.0 +it 05_nuclear 2 179 0.0 0.0 +it 06_coal 2 179 0.0 0.0 +it 07_gas 2 179 0.0 0.0 +it 08_non-res 2 179 0.0 0.0 +it 09_hydro_pump 2 179 0.0 0.0 +it 01_solar 2 180 1.0 0.0 +it 02_wind_on 2 180 0.0 0.0 +it 03_wind_off 2 180 0.0 0.0 +it 04_res 2 180 0.0 0.0 +it 05_nuclear 2 180 0.0 0.0 +it 06_coal 2 180 0.0 0.0 +it 07_gas 2 180 0.0 0.0 +it 08_non-res 2 180 0.0 0.0 +it 09_hydro_pump 2 180 0.0 0.0 +it 01_solar 2 181 1.0 0.0 +it 02_wind_on 2 181 0.0 0.0 +it 03_wind_off 2 181 0.0 0.0 +it 04_res 2 181 0.0 0.0 +it 05_nuclear 2 181 0.0 0.0 +it 06_coal 2 181 0.0 0.0 +it 07_gas 2 181 0.0 0.0 +it 08_non-res 2 181 0.0 0.0 +it 09_hydro_pump 2 181 0.0 0.0 +it 01_solar 2 182 1.0 0.0 +it 02_wind_on 2 182 0.0 0.0 +it 03_wind_off 2 182 0.0 0.0 +it 04_res 2 182 0.0 0.0 +it 05_nuclear 2 182 0.0 0.0 +it 06_coal 2 182 0.0 0.0 +it 07_gas 2 182 0.0 0.0 +it 08_non-res 2 182 0.0 0.0 +it 09_hydro_pump 2 182 0.0 0.0 +it 01_solar 2 183 1.0 0.0 +it 02_wind_on 2 183 0.0 0.0 +it 03_wind_off 2 183 0.0 0.0 +it 04_res 2 183 0.0 0.0 +it 05_nuclear 2 183 0.0 0.0 +it 06_coal 2 183 0.0 0.0 +it 07_gas 2 183 0.0 0.0 +it 08_non-res 2 183 0.0 0.0 +it 09_hydro_pump 2 183 0.0 0.0 +it 01_solar 2 184 1.0 0.0 +it 02_wind_on 2 184 0.0 0.0 +it 03_wind_off 2 184 0.0 0.0 +it 04_res 2 184 0.0 0.0 +it 05_nuclear 2 184 0.0 0.0 +it 06_coal 2 184 0.0 0.0 +it 07_gas 2 184 0.0 0.0 +it 08_non-res 2 184 0.0 0.0 +it 09_hydro_pump 2 184 0.0 0.0 +it 01_solar 2 185 1.0 0.0 +it 02_wind_on 2 185 0.0 0.0 +it 03_wind_off 2 185 0.0 0.0 +it 04_res 2 185 0.0 0.0 +it 05_nuclear 2 185 0.0 0.0 +it 06_coal 2 185 0.0 0.0 +it 07_gas 2 185 0.0 0.0 +it 08_non-res 2 185 0.0 0.0 +it 09_hydro_pump 2 185 0.0 0.0 +it 01_solar 2 186 1.0 0.0 +it 02_wind_on 2 186 0.0 0.0 +it 03_wind_off 2 186 0.0 0.0 +it 04_res 2 186 0.0 0.0 +it 05_nuclear 2 186 0.0 0.0 +it 06_coal 2 186 0.0 0.0 +it 07_gas 2 186 0.0 0.0 +it 08_non-res 2 186 0.0 0.0 +it 09_hydro_pump 2 186 0.0 0.0 +it 01_solar 2 187 1.0 0.0 +it 02_wind_on 2 187 0.0 0.0 +it 03_wind_off 2 187 0.0 0.0 +it 04_res 2 187 0.0 0.0 +it 05_nuclear 2 187 0.0 0.0 +it 06_coal 2 187 0.0 0.0 +it 07_gas 2 187 0.0 0.0 +it 08_non-res 2 187 0.0 0.0 +it 09_hydro_pump 2 187 0.0 0.0 +it 01_solar 2 188 1.0 0.0 +it 02_wind_on 2 188 0.0 0.0 +it 03_wind_off 2 188 0.0 0.0 +it 04_res 2 188 0.0 0.0 +it 05_nuclear 2 188 0.0 0.0 +it 06_coal 2 188 0.0 0.0 +it 07_gas 2 188 0.0 0.0 +it 08_non-res 2 188 0.0 0.0 +it 09_hydro_pump 2 188 0.0 0.0 +it 01_solar 2 189 1.0 0.0 +it 02_wind_on 2 189 0.0 0.0 +it 03_wind_off 2 189 0.0 0.0 +it 04_res 2 189 0.0 0.0 +it 05_nuclear 2 189 0.0 0.0 +it 06_coal 2 189 0.0 0.0 +it 07_gas 2 189 0.0 0.0 +it 08_non-res 2 189 0.0 0.0 +it 09_hydro_pump 2 189 0.0 0.0 +it 01_solar 2 190 1.0 0.0 +it 02_wind_on 2 190 1.0 0.0 +it 03_wind_off 2 190 0.0 0.0 +it 04_res 2 190 0.0 0.0 +it 05_nuclear 2 190 0.0 0.0 +it 06_coal 2 190 0.0 0.0 +it 07_gas 2 190 0.0 0.0 +it 08_non-res 2 190 0.0 0.0 +it 09_hydro_pump 2 190 0.0 0.0 +it 01_solar 2 191 1.0 0.0 +it 02_wind_on 2 191 1.0 0.0 +it 03_wind_off 2 191 0.0 0.0 +it 04_res 2 191 0.0 0.0 +it 05_nuclear 2 191 0.0 0.0 +it 06_coal 2 191 0.0 0.0 +it 07_gas 2 191 0.0 0.0 +it 08_non-res 2 191 0.0 0.0 +it 09_hydro_pump 2 191 0.0 0.0 +it 01_solar 2 192 1.0 0.0 +it 02_wind_on 2 192 1.0 0.0 +it 03_wind_off 2 192 0.0 0.0 +it 04_res 2 192 0.0 0.0 +it 05_nuclear 2 192 0.0 0.0 +it 06_coal 2 192 0.0 0.0 +it 07_gas 2 192 0.0 0.0 +it 08_non-res 2 192 0.0 0.0 +it 09_hydro_pump 2 192 0.0 0.0 +it 01_solar 2 193 1.0 0.0 +it 02_wind_on 2 193 1.0 0.0 +it 03_wind_off 2 193 0.0 0.0 +it 04_res 2 193 0.0 0.0 +it 05_nuclear 2 193 0.0 0.0 +it 06_coal 2 193 0.0 0.0 +it 07_gas 2 193 0.0 0.0 +it 08_non-res 2 193 0.0 0.0 +it 09_hydro_pump 2 193 0.0 0.0 +it 01_solar 2 194 1.0 0.0 +it 02_wind_on 2 194 1.0 0.0 +it 03_wind_off 2 194 0.0 0.0 +it 04_res 2 194 0.0 0.0 +it 05_nuclear 2 194 0.0 0.0 +it 06_coal 2 194 0.0 0.0 +it 07_gas 2 194 0.0 0.0 +it 08_non-res 2 194 0.0 0.0 +it 09_hydro_pump 2 194 0.0 0.0 +it 01_solar 2 195 1.0 0.0 +it 02_wind_on 2 195 1.0 0.0 +it 03_wind_off 2 195 0.0 0.0 +it 04_res 2 195 0.0 0.0 +it 05_nuclear 2 195 0.0 0.0 +it 06_coal 2 195 0.0 0.0 +it 07_gas 2 195 0.0 0.0 +it 08_non-res 2 195 0.0 0.0 +it 09_hydro_pump 2 195 0.0 0.0 +it 01_solar 2 196 1.0 0.0 +it 02_wind_on 2 196 1.0 0.0 +it 03_wind_off 2 196 0.0 0.0 +it 04_res 2 196 0.0 0.0 +it 05_nuclear 2 196 0.0 0.0 +it 06_coal 2 196 0.0 0.0 +it 07_gas 2 196 0.0 0.0 +it 08_non-res 2 196 0.0 0.0 +it 09_hydro_pump 2 196 0.0 0.0 +it 01_solar 2 197 1.0 0.0 +it 02_wind_on 2 197 1.0 0.0 +it 03_wind_off 2 197 0.0 0.0 +it 04_res 2 197 0.0 0.0 +it 05_nuclear 2 197 0.0 0.0 +it 06_coal 2 197 0.0 0.0 +it 07_gas 2 197 0.0 0.0 +it 08_non-res 2 197 0.0 0.0 +it 09_hydro_pump 2 197 0.0 0.0 +it 01_solar 2 198 1.0 0.0 +it 02_wind_on 2 198 1.0 0.0 +it 03_wind_off 2 198 0.0 0.0 +it 04_res 2 198 0.0 0.0 +it 05_nuclear 2 198 0.0 0.0 +it 06_coal 2 198 0.0 0.0 +it 07_gas 2 198 0.0 0.0 +it 08_non-res 2 198 0.0 0.0 +it 09_hydro_pump 2 198 0.0 0.0 +it 01_solar 2 199 1.0 0.0 +it 02_wind_on 2 199 1.0 0.0 +it 03_wind_off 2 199 0.0 0.0 +it 04_res 2 199 0.0 0.0 +it 05_nuclear 2 199 0.0 0.0 +it 06_coal 2 199 0.0 0.0 +it 07_gas 2 199 0.0 0.0 +it 08_non-res 2 199 0.0 0.0 +it 09_hydro_pump 2 199 0.0 0.0 +it 01_solar 2 200 1.0 0.0 +it 02_wind_on 2 200 1.0 0.0 +it 03_wind_off 2 200 0.0 0.0 +it 04_res 2 200 0.0 0.0 +it 05_nuclear 2 200 0.0 0.0 +it 06_coal 2 200 0.0 0.0 +it 07_gas 2 200 0.0 0.0 +it 08_non-res 2 200 0.0 0.0 +it 09_hydro_pump 2 200 0.0 0.0 +it 01_solar 2 201 1.0 0.0 +it 02_wind_on 2 201 1.0 0.0 +it 03_wind_off 2 201 0.0 0.0 +it 04_res 2 201 0.0 0.0 +it 05_nuclear 2 201 0.0 0.0 +it 06_coal 2 201 0.0 0.0 +it 07_gas 2 201 0.0 0.0 +it 08_non-res 2 201 0.0 0.0 +it 09_hydro_pump 2 201 0.0 0.0 +it 01_solar 2 202 1.0 0.0 +it 02_wind_on 2 202 1.0 0.0 +it 03_wind_off 2 202 0.0 0.0 +it 04_res 2 202 0.0 0.0 +it 05_nuclear 2 202 0.0 0.0 +it 06_coal 2 202 0.0 0.0 +it 07_gas 2 202 0.0 0.0 +it 08_non-res 2 202 0.0 0.0 +it 09_hydro_pump 2 202 0.0 0.0 +it 01_solar 2 203 1.0 0.0 +it 02_wind_on 2 203 1.0 0.0 +it 03_wind_off 2 203 0.0 0.0 +it 04_res 2 203 0.0 0.0 +it 05_nuclear 2 203 0.0 0.0 +it 06_coal 2 203 0.0 0.0 +it 07_gas 2 203 0.0 0.0 +it 08_non-res 2 203 0.0 0.0 +it 09_hydro_pump 2 203 0.0 0.0 +it 01_solar 2 204 1.0 0.0 +it 02_wind_on 2 204 1.0 0.0 +it 03_wind_off 2 204 0.0 0.0 +it 04_res 2 204 0.0 0.0 +it 05_nuclear 2 204 0.0 0.0 +it 06_coal 2 204 0.0 0.0 +it 07_gas 2 204 0.0 0.0 +it 08_non-res 2 204 0.0 0.0 +it 09_hydro_pump 2 204 0.0 0.0 +it 01_solar 2 205 1.0 0.0 +it 02_wind_on 2 205 1.0 0.0 +it 03_wind_off 2 205 0.0 0.0 +it 04_res 2 205 0.0 0.0 +it 05_nuclear 2 205 0.0 0.0 +it 06_coal 2 205 0.0 0.0 +it 07_gas 2 205 0.0 0.0 +it 08_non-res 2 205 0.0 0.0 +it 09_hydro_pump 2 205 0.0 0.0 +it 01_solar 2 206 1.0 0.0 +it 02_wind_on 2 206 1.0 0.0 +it 03_wind_off 2 206 0.0 0.0 +it 04_res 2 206 0.0 0.0 +it 05_nuclear 2 206 0.0 0.0 +it 06_coal 2 206 0.0 0.0 +it 07_gas 2 206 0.0 0.0 +it 08_non-res 2 206 0.0 0.0 +it 09_hydro_pump 2 206 0.0 0.0 +it 01_solar 2 207 1.0 0.0 +it 02_wind_on 2 207 1.0 0.0 +it 03_wind_off 2 207 0.0 0.0 +it 04_res 2 207 0.0 0.0 +it 05_nuclear 2 207 0.0 0.0 +it 06_coal 2 207 0.0 0.0 +it 07_gas 2 207 0.0 0.0 +it 08_non-res 2 207 0.0 0.0 +it 09_hydro_pump 2 207 0.0 0.0 +it 01_solar 2 208 1.0 0.0 +it 02_wind_on 2 208 1.0 0.0 +it 03_wind_off 2 208 0.0 0.0 +it 04_res 2 208 0.0 0.0 +it 05_nuclear 2 208 0.0 0.0 +it 06_coal 2 208 0.0 0.0 +it 07_gas 2 208 0.0 0.0 +it 08_non-res 2 208 0.0 0.0 +it 09_hydro_pump 2 208 0.0 0.0 +it 01_solar 2 209 1.0 0.0 +it 02_wind_on 2 209 1.0 0.0 +it 03_wind_off 2 209 0.0 0.0 +it 04_res 2 209 0.0 0.0 +it 05_nuclear 2 209 0.0 0.0 +it 06_coal 2 209 0.0 0.0 +it 07_gas 2 209 0.0 0.0 +it 08_non-res 2 209 0.0 0.0 +it 09_hydro_pump 2 209 0.0 0.0 +it 01_solar 2 210 1.0 0.0 +it 02_wind_on 2 210 1.0 0.0 +it 03_wind_off 2 210 1.0 0.0 +it 04_res 2 210 0.0 0.0 +it 05_nuclear 2 210 0.0 0.0 +it 06_coal 2 210 0.0 0.0 +it 07_gas 2 210 0.0 0.0 +it 08_non-res 2 210 0.0 0.0 +it 09_hydro_pump 2 210 0.0 0.0 +it 01_solar 2 211 1.0 0.0 +it 02_wind_on 2 211 1.0 0.0 +it 03_wind_off 2 211 1.0 0.0 +it 04_res 2 211 0.0 0.0 +it 05_nuclear 2 211 0.0 0.0 +it 06_coal 2 211 0.0 0.0 +it 07_gas 2 211 0.0 0.0 +it 08_non-res 2 211 0.0 0.0 +it 09_hydro_pump 2 211 0.0 0.0 +it 01_solar 2 212 1.0 0.0 +it 02_wind_on 2 212 1.0 0.0 +it 03_wind_off 2 212 1.0 0.0 +it 04_res 2 212 0.0 0.0 +it 05_nuclear 2 212 0.0 0.0 +it 06_coal 2 212 0.0 0.0 +it 07_gas 2 212 0.0 0.0 +it 08_non-res 2 212 0.0 0.0 +it 09_hydro_pump 2 212 0.0 0.0 +it 01_solar 2 213 1.0 0.0 +it 02_wind_on 2 213 1.0 0.0 +it 03_wind_off 2 213 1.0 0.0 +it 04_res 2 213 0.0 0.0 +it 05_nuclear 2 213 0.0 0.0 +it 06_coal 2 213 0.0 0.0 +it 07_gas 2 213 0.0 0.0 +it 08_non-res 2 213 0.0 0.0 +it 09_hydro_pump 2 213 0.0 0.0 +it 01_solar 2 214 1.0 0.0 +it 02_wind_on 2 214 1.0 0.0 +it 03_wind_off 2 214 1.0 0.0 +it 04_res 2 214 0.0 0.0 +it 05_nuclear 2 214 0.0 0.0 +it 06_coal 2 214 0.0 0.0 +it 07_gas 2 214 0.0 0.0 +it 08_non-res 2 214 0.0 0.0 +it 09_hydro_pump 2 214 0.0 0.0 +it 01_solar 2 215 1.0 0.0 +it 02_wind_on 2 215 1.0 0.0 +it 03_wind_off 2 215 1.0 0.0 +it 04_res 2 215 0.0 0.0 +it 05_nuclear 2 215 0.0 0.0 +it 06_coal 2 215 0.0 0.0 +it 07_gas 2 215 0.0 0.0 +it 08_non-res 2 215 0.0 0.0 +it 09_hydro_pump 2 215 0.0 0.0 +it 01_solar 2 216 1.0 0.0 +it 02_wind_on 2 216 1.0 0.0 +it 03_wind_off 2 216 1.0 0.0 +it 04_res 2 216 0.0 0.0 +it 05_nuclear 2 216 0.0 0.0 +it 06_coal 2 216 0.0 0.0 +it 07_gas 2 216 0.0 0.0 +it 08_non-res 2 216 0.0 0.0 +it 09_hydro_pump 2 216 0.0 0.0 +it 01_solar 2 217 1.0 0.0 +it 02_wind_on 2 217 1.0 0.0 +it 03_wind_off 2 217 1.0 0.0 +it 04_res 2 217 0.0 0.0 +it 05_nuclear 2 217 0.0 0.0 +it 06_coal 2 217 0.0 0.0 +it 07_gas 2 217 0.0 0.0 +it 08_non-res 2 217 0.0 0.0 +it 09_hydro_pump 2 217 0.0 0.0 +it 01_solar 2 218 1.0 0.0 +it 02_wind_on 2 218 1.0 0.0 +it 03_wind_off 2 218 1.0 0.0 +it 04_res 2 218 0.0 0.0 +it 05_nuclear 2 218 0.0 0.0 +it 06_coal 2 218 0.0 0.0 +it 07_gas 2 218 0.0 0.0 +it 08_non-res 2 218 0.0 0.0 +it 09_hydro_pump 2 218 0.0 0.0 +it 01_solar 2 219 1.0 0.0 +it 02_wind_on 2 219 1.0 0.0 +it 03_wind_off 2 219 1.0 0.0 +it 04_res 2 219 0.0 0.0 +it 05_nuclear 2 219 0.0 0.0 +it 06_coal 2 219 0.0 0.0 +it 07_gas 2 219 0.0 0.0 +it 08_non-res 2 219 0.0 0.0 +it 09_hydro_pump 2 219 0.0 0.0 +it 01_solar 2 220 1.0 0.0 +it 02_wind_on 2 220 1.0 0.0 +it 03_wind_off 2 220 1.0 0.0 +it 04_res 2 220 0.0 0.0 +it 05_nuclear 2 220 0.0 0.0 +it 06_coal 2 220 0.0 0.0 +it 07_gas 2 220 0.0 0.0 +it 08_non-res 2 220 0.0 0.0 +it 09_hydro_pump 2 220 0.0 0.0 +it 01_solar 2 221 1.0 0.0 +it 02_wind_on 2 221 1.0 0.0 +it 03_wind_off 2 221 1.0 0.0 +it 04_res 2 221 0.0 0.0 +it 05_nuclear 2 221 0.0 0.0 +it 06_coal 2 221 0.0 0.0 +it 07_gas 2 221 0.0 0.0 +it 08_non-res 2 221 0.0 0.0 +it 09_hydro_pump 2 221 0.0 0.0 +it 01_solar 2 222 1.0 0.0 +it 02_wind_on 2 222 1.0 0.0 +it 03_wind_off 2 222 1.0 0.0 +it 04_res 2 222 0.0 0.0 +it 05_nuclear 2 222 0.0 0.0 +it 06_coal 2 222 0.0 0.0 +it 07_gas 2 222 0.0 0.0 +it 08_non-res 2 222 0.0 0.0 +it 09_hydro_pump 2 222 0.0 0.0 +it 01_solar 2 223 1.0 0.0 +it 02_wind_on 2 223 1.0 0.0 +it 03_wind_off 2 223 1.0 0.0 +it 04_res 2 223 0.0 0.0 +it 05_nuclear 2 223 0.0 0.0 +it 06_coal 2 223 0.0 0.0 +it 07_gas 2 223 0.0 0.0 +it 08_non-res 2 223 0.0 0.0 +it 09_hydro_pump 2 223 0.0 0.0 +it 01_solar 2 224 1.0 0.0 +it 02_wind_on 2 224 1.0 0.0 +it 03_wind_off 2 224 1.0 0.0 +it 04_res 2 224 0.0 0.0 +it 05_nuclear 2 224 0.0 0.0 +it 06_coal 2 224 0.0 0.0 +it 07_gas 2 224 0.0 0.0 +it 08_non-res 2 224 0.0 0.0 +it 09_hydro_pump 2 224 0.0 0.0 +it 01_solar 2 225 1.0 0.0 +it 02_wind_on 2 225 1.0 0.0 +it 03_wind_off 2 225 1.0 0.0 +it 04_res 2 225 0.0 0.0 +it 05_nuclear 2 225 0.0 0.0 +it 06_coal 2 225 0.0 0.0 +it 07_gas 2 225 0.0 0.0 +it 08_non-res 2 225 0.0 0.0 +it 09_hydro_pump 2 225 0.0 0.0 +it 01_solar 2 226 1.0 0.0 +it 02_wind_on 2 226 1.0 0.0 +it 03_wind_off 2 226 1.0 0.0 +it 04_res 2 226 0.0 0.0 +it 05_nuclear 2 226 0.0 0.0 +it 06_coal 2 226 0.0 0.0 +it 07_gas 2 226 0.0 0.0 +it 08_non-res 2 226 0.0 0.0 +it 09_hydro_pump 2 226 0.0 0.0 +it 01_solar 2 227 1.0 0.0 +it 02_wind_on 2 227 1.0 0.0 +it 03_wind_off 2 227 1.0 0.0 +it 04_res 2 227 0.0 0.0 +it 05_nuclear 2 227 0.0 0.0 +it 06_coal 2 227 0.0 0.0 +it 07_gas 2 227 0.0 0.0 +it 08_non-res 2 227 0.0 0.0 +it 09_hydro_pump 2 227 0.0 0.0 +it 01_solar 2 228 1.0 0.0 +it 02_wind_on 2 228 1.0 0.0 +it 03_wind_off 2 228 1.0 0.0 +it 04_res 2 228 0.0 0.0 +it 05_nuclear 2 228 0.0 0.0 +it 06_coal 2 228 0.0 0.0 +it 07_gas 2 228 0.0 0.0 +it 08_non-res 2 228 0.0 0.0 +it 09_hydro_pump 2 228 0.0 0.0 +it 01_solar 2 229 1.0 0.0 +it 02_wind_on 2 229 1.0 0.0 +it 03_wind_off 2 229 1.0 0.0 +it 04_res 2 229 0.0 0.0 +it 05_nuclear 2 229 0.0 0.0 +it 06_coal 2 229 0.0 0.0 +it 07_gas 2 229 0.0 0.0 +it 08_non-res 2 229 0.0 0.0 +it 09_hydro_pump 2 229 0.0 0.0 +it 01_solar 2 230 1.0 0.0 +it 02_wind_on 2 230 1.0 0.0 +it 03_wind_off 2 230 1.0 0.0 +it 04_res 2 230 1.0 0.0 +it 05_nuclear 2 230 0.0 0.0 +it 06_coal 2 230 0.0 0.0 +it 07_gas 2 230 0.0 0.0 +it 08_non-res 2 230 0.0 0.0 +it 09_hydro_pump 2 230 0.0 0.0 +it 01_solar 2 231 1.0 0.0 +it 02_wind_on 2 231 1.0 0.0 +it 03_wind_off 2 231 1.0 0.0 +it 04_res 2 231 1.0 0.0 +it 05_nuclear 2 231 0.0 0.0 +it 06_coal 2 231 0.0 0.0 +it 07_gas 2 231 0.0 0.0 +it 08_non-res 2 231 0.0 0.0 +it 09_hydro_pump 2 231 0.0 0.0 +it 01_solar 2 232 1.0 0.0 +it 02_wind_on 2 232 1.0 0.0 +it 03_wind_off 2 232 1.0 0.0 +it 04_res 2 232 1.0 0.0 +it 05_nuclear 2 232 0.0 0.0 +it 06_coal 2 232 0.0 0.0 +it 07_gas 2 232 0.0 0.0 +it 08_non-res 2 232 0.0 0.0 +it 09_hydro_pump 2 232 0.0 0.0 +it 01_solar 2 233 1.0 0.0 +it 02_wind_on 2 233 1.0 0.0 +it 03_wind_off 2 233 1.0 0.0 +it 04_res 2 233 1.0 0.0 +it 05_nuclear 2 233 0.0 0.0 +it 06_coal 2 233 0.0 0.0 +it 07_gas 2 233 0.0 0.0 +it 08_non-res 2 233 0.0 0.0 +it 09_hydro_pump 2 233 0.0 0.0 +it 01_solar 2 234 1.0 0.0 +it 02_wind_on 2 234 1.0 0.0 +it 03_wind_off 2 234 1.0 0.0 +it 04_res 2 234 1.0 0.0 +it 05_nuclear 2 234 0.0 0.0 +it 06_coal 2 234 0.0 0.0 +it 07_gas 2 234 0.0 0.0 +it 08_non-res 2 234 0.0 0.0 +it 09_hydro_pump 2 234 0.0 0.0 +it 01_solar 2 235 1.0 0.0 +it 02_wind_on 2 235 1.0 0.0 +it 03_wind_off 2 235 1.0 0.0 +it 04_res 2 235 1.0 0.0 +it 05_nuclear 2 235 0.0 0.0 +it 06_coal 2 235 0.0 0.0 +it 07_gas 2 235 0.0 0.0 +it 08_non-res 2 235 0.0 0.0 +it 09_hydro_pump 2 235 0.0 0.0 +it 01_solar 2 236 1.0 0.0 +it 02_wind_on 2 236 1.0 0.0 +it 03_wind_off 2 236 1.0 0.0 +it 04_res 2 236 1.0 0.0 +it 05_nuclear 2 236 0.0 0.0 +it 06_coal 2 236 0.0 0.0 +it 07_gas 2 236 0.0 0.0 +it 08_non-res 2 236 0.0 0.0 +it 09_hydro_pump 2 236 0.0 0.0 +it 01_solar 2 237 1.0 0.0 +it 02_wind_on 2 237 1.0 0.0 +it 03_wind_off 2 237 1.0 0.0 +it 04_res 2 237 1.0 0.0 +it 05_nuclear 2 237 0.0 0.0 +it 06_coal 2 237 0.0 0.0 +it 07_gas 2 237 0.0 0.0 +it 08_non-res 2 237 0.0 0.0 +it 09_hydro_pump 2 237 0.0 0.0 +it 01_solar 2 238 1.0 0.0 +it 02_wind_on 2 238 1.0 0.0 +it 03_wind_off 2 238 1.0 0.0 +it 04_res 2 238 1.0 0.0 +it 05_nuclear 2 238 0.0 0.0 +it 06_coal 2 238 0.0 0.0 +it 07_gas 2 238 0.0 0.0 +it 08_non-res 2 238 0.0 0.0 +it 09_hydro_pump 2 238 0.0 0.0 +it 01_solar 2 239 1.0 0.0 +it 02_wind_on 2 239 1.0 0.0 +it 03_wind_off 2 239 1.0 0.0 +it 04_res 2 239 1.0 0.0 +it 05_nuclear 2 239 0.0 0.0 +it 06_coal 2 239 0.0 0.0 +it 07_gas 2 239 0.0 0.0 +it 08_non-res 2 239 0.0 0.0 +it 09_hydro_pump 2 239 0.0 0.0 +it 01_solar 2 240 1.0 0.0 +it 02_wind_on 2 240 1.0 0.0 +it 03_wind_off 2 240 1.0 0.0 +it 04_res 2 240 1.0 0.0 +it 05_nuclear 2 240 0.0 0.0 +it 06_coal 2 240 0.0 0.0 +it 07_gas 2 240 0.0 0.0 +it 08_non-res 2 240 0.0 0.0 +it 09_hydro_pump 2 240 0.0 0.0 +it 01_solar 2 241 1.0 0.0 +it 02_wind_on 2 241 1.0 0.0 +it 03_wind_off 2 241 1.0 0.0 +it 04_res 2 241 1.0 0.0 +it 05_nuclear 2 241 0.0 0.0 +it 06_coal 2 241 0.0 0.0 +it 07_gas 2 241 0.0 0.0 +it 08_non-res 2 241 0.0 0.0 +it 09_hydro_pump 2 241 0.0 0.0 +it 01_solar 2 242 1.0 0.0 +it 02_wind_on 2 242 1.0 0.0 +it 03_wind_off 2 242 1.0 0.0 +it 04_res 2 242 1.0 0.0 +it 05_nuclear 2 242 0.0 0.0 +it 06_coal 2 242 0.0 0.0 +it 07_gas 2 242 0.0 0.0 +it 08_non-res 2 242 0.0 0.0 +it 09_hydro_pump 2 242 0.0 0.0 +it 01_solar 2 243 1.0 0.0 +it 02_wind_on 2 243 1.0 0.0 +it 03_wind_off 2 243 1.0 0.0 +it 04_res 2 243 1.0 0.0 +it 05_nuclear 2 243 0.0 0.0 +it 06_coal 2 243 0.0 0.0 +it 07_gas 2 243 0.0 0.0 +it 08_non-res 2 243 0.0 0.0 +it 09_hydro_pump 2 243 0.0 0.0 +it 01_solar 2 244 1.0 0.0 +it 02_wind_on 2 244 1.0 0.0 +it 03_wind_off 2 244 1.0 0.0 +it 04_res 2 244 1.0 0.0 +it 05_nuclear 2 244 0.0 0.0 +it 06_coal 2 244 0.0 0.0 +it 07_gas 2 244 0.0 0.0 +it 08_non-res 2 244 0.0 0.0 +it 09_hydro_pump 2 244 0.0 0.0 +it 01_solar 2 245 1.0 0.0 +it 02_wind_on 2 245 1.0 0.0 +it 03_wind_off 2 245 1.0 0.0 +it 04_res 2 245 1.0 0.0 +it 05_nuclear 2 245 0.0 0.0 +it 06_coal 2 245 0.0 0.0 +it 07_gas 2 245 0.0 0.0 +it 08_non-res 2 245 0.0 0.0 +it 09_hydro_pump 2 245 0.0 0.0 +it 01_solar 2 246 1.0 0.0 +it 02_wind_on 2 246 1.0 0.0 +it 03_wind_off 2 246 1.0 0.0 +it 04_res 2 246 1.0 0.0 +it 05_nuclear 2 246 0.0 0.0 +it 06_coal 2 246 0.0 0.0 +it 07_gas 2 246 0.0 0.0 +it 08_non-res 2 246 0.0 0.0 +it 09_hydro_pump 2 246 0.0 0.0 +it 01_solar 2 247 1.0 0.0 +it 02_wind_on 2 247 1.0 0.0 +it 03_wind_off 2 247 1.0 0.0 +it 04_res 2 247 1.0 0.0 +it 05_nuclear 2 247 0.0 0.0 +it 06_coal 2 247 0.0 0.0 +it 07_gas 2 247 0.0 0.0 +it 08_non-res 2 247 0.0 0.0 +it 09_hydro_pump 2 247 0.0 0.0 +it 01_solar 2 248 1.0 0.0 +it 02_wind_on 2 248 1.0 0.0 +it 03_wind_off 2 248 1.0 0.0 +it 04_res 2 248 1.0 0.0 +it 05_nuclear 2 248 0.0 0.0 +it 06_coal 2 248 0.0 0.0 +it 07_gas 2 248 0.0 0.0 +it 08_non-res 2 248 0.0 0.0 +it 09_hydro_pump 2 248 0.0 0.0 +it 01_solar 2 249 1.0 0.0 +it 02_wind_on 2 249 1.0 0.0 +it 03_wind_off 2 249 1.0 0.0 +it 04_res 2 249 1.0 0.0 +it 05_nuclear 2 249 0.0 0.0 +it 06_coal 2 249 0.0 0.0 +it 07_gas 2 249 0.0 0.0 +it 08_non-res 2 249 0.0 0.0 +it 09_hydro_pump 2 249 0.0 0.0 +it 01_solar 2 250 1.0 0.0 +it 02_wind_on 2 250 1.0 0.0 +it 03_wind_off 2 250 1.0 0.0 +it 04_res 2 250 1.0 0.0 +it 05_nuclear 2 250 1.0 0.0 +it 06_coal 2 250 0.0 0.0 +it 07_gas 2 250 0.0 0.0 +it 08_non-res 2 250 0.0 0.0 +it 09_hydro_pump 2 250 0.0 0.0 +it 01_solar 2 251 1.0 0.0 +it 02_wind_on 2 251 1.0 0.0 +it 03_wind_off 2 251 1.0 0.0 +it 04_res 2 251 1.0 0.0 +it 05_nuclear 2 251 1.0 0.0 +it 06_coal 2 251 0.0 0.0 +it 07_gas 2 251 0.0 0.0 +it 08_non-res 2 251 0.0 0.0 +it 09_hydro_pump 2 251 0.0 0.0 +it 01_solar 2 252 1.0 0.0 +it 02_wind_on 2 252 1.0 0.0 +it 03_wind_off 2 252 1.0 0.0 +it 04_res 2 252 1.0 0.0 +it 05_nuclear 2 252 1.0 0.0 +it 06_coal 2 252 0.0 0.0 +it 07_gas 2 252 0.0 0.0 +it 08_non-res 2 252 0.0 0.0 +it 09_hydro_pump 2 252 0.0 0.0 +it 01_solar 2 253 1.0 0.0 +it 02_wind_on 2 253 1.0 0.0 +it 03_wind_off 2 253 1.0 0.0 +it 04_res 2 253 1.0 0.0 +it 05_nuclear 2 253 1.0 0.0 +it 06_coal 2 253 0.0 0.0 +it 07_gas 2 253 0.0 0.0 +it 08_non-res 2 253 0.0 0.0 +it 09_hydro_pump 2 253 0.0 0.0 +it 01_solar 2 254 1.0 0.0 +it 02_wind_on 2 254 1.0 0.0 +it 03_wind_off 2 254 1.0 0.0 +it 04_res 2 254 1.0 0.0 +it 05_nuclear 2 254 1.0 0.0 +it 06_coal 2 254 0.0 0.0 +it 07_gas 2 254 0.0 0.0 +it 08_non-res 2 254 0.0 0.0 +it 09_hydro_pump 2 254 0.0 0.0 +it 01_solar 2 255 1.0 0.0 +it 02_wind_on 2 255 1.0 0.0 +it 03_wind_off 2 255 1.0 0.0 +it 04_res 2 255 1.0 0.0 +it 05_nuclear 2 255 1.0 0.0 +it 06_coal 2 255 0.0 0.0 +it 07_gas 2 255 0.0 0.0 +it 08_non-res 2 255 0.0 0.0 +it 09_hydro_pump 2 255 0.0 0.0 +it 01_solar 2 256 1.0 0.0 +it 02_wind_on 2 256 1.0 0.0 +it 03_wind_off 2 256 1.0 0.0 +it 04_res 2 256 1.0 0.0 +it 05_nuclear 2 256 1.0 0.0 +it 06_coal 2 256 0.0 0.0 +it 07_gas 2 256 0.0 0.0 +it 08_non-res 2 256 0.0 0.0 +it 09_hydro_pump 2 256 0.0 0.0 +it 01_solar 2 257 1.0 0.0 +it 02_wind_on 2 257 1.0 0.0 +it 03_wind_off 2 257 1.0 0.0 +it 04_res 2 257 1.0 0.0 +it 05_nuclear 2 257 1.0 0.0 +it 06_coal 2 257 0.0 0.0 +it 07_gas 2 257 0.0 0.0 +it 08_non-res 2 257 0.0 0.0 +it 09_hydro_pump 2 257 0.0 0.0 +it 01_solar 2 258 1.0 0.0 +it 02_wind_on 2 258 1.0 0.0 +it 03_wind_off 2 258 1.0 0.0 +it 04_res 2 258 1.0 0.0 +it 05_nuclear 2 258 1.0 0.0 +it 06_coal 2 258 0.0 0.0 +it 07_gas 2 258 0.0 0.0 +it 08_non-res 2 258 0.0 0.0 +it 09_hydro_pump 2 258 0.0 0.0 +it 01_solar 2 259 1.0 0.0 +it 02_wind_on 2 259 1.0 0.0 +it 03_wind_off 2 259 1.0 0.0 +it 04_res 2 259 1.0 0.0 +it 05_nuclear 2 259 1.0 0.0 +it 06_coal 2 259 0.0 0.0 +it 07_gas 2 259 0.0 0.0 +it 08_non-res 2 259 0.0 0.0 +it 09_hydro_pump 2 259 0.0 0.0 +it 01_solar 2 260 1.0 0.0 +it 02_wind_on 2 260 1.0 0.0 +it 03_wind_off 2 260 1.0 0.0 +it 04_res 2 260 1.0 0.0 +it 05_nuclear 2 260 1.0 0.0 +it 06_coal 2 260 0.0 0.0 +it 07_gas 2 260 0.0 0.0 +it 08_non-res 2 260 0.0 0.0 +it 09_hydro_pump 2 260 0.0 0.0 +it 01_solar 2 261 1.0 0.0 +it 02_wind_on 2 261 1.0 0.0 +it 03_wind_off 2 261 1.0 0.0 +it 04_res 2 261 1.0 0.0 +it 05_nuclear 2 261 1.0 0.0 +it 06_coal 2 261 0.0 0.0 +it 07_gas 2 261 0.0 0.0 +it 08_non-res 2 261 0.0 0.0 +it 09_hydro_pump 2 261 0.0 0.0 +it 01_solar 2 262 1.0 0.0 +it 02_wind_on 2 262 1.0 0.0 +it 03_wind_off 2 262 1.0 0.0 +it 04_res 2 262 1.0 0.0 +it 05_nuclear 2 262 1.0 0.0 +it 06_coal 2 262 0.0 0.0 +it 07_gas 2 262 0.0 0.0 +it 08_non-res 2 262 0.0 0.0 +it 09_hydro_pump 2 262 0.0 0.0 +it 01_solar 2 263 1.0 0.0 +it 02_wind_on 2 263 1.0 0.0 +it 03_wind_off 2 263 1.0 0.0 +it 04_res 2 263 1.0 0.0 +it 05_nuclear 2 263 1.0 0.0 +it 06_coal 2 263 0.0 0.0 +it 07_gas 2 263 0.0 0.0 +it 08_non-res 2 263 0.0 0.0 +it 09_hydro_pump 2 263 0.0 0.0 +it 01_solar 2 264 1.0 0.0 +it 02_wind_on 2 264 1.0 0.0 +it 03_wind_off 2 264 1.0 0.0 +it 04_res 2 264 1.0 0.0 +it 05_nuclear 2 264 1.0 0.0 +it 06_coal 2 264 0.0 0.0 +it 07_gas 2 264 0.0 0.0 +it 08_non-res 2 264 0.0 0.0 +it 09_hydro_pump 2 264 0.0 0.0 +it 01_solar 2 265 1.0 0.0 +it 02_wind_on 2 265 1.0 0.0 +it 03_wind_off 2 265 1.0 0.0 +it 04_res 2 265 1.0 0.0 +it 05_nuclear 2 265 1.0 0.0 +it 06_coal 2 265 0.0 0.0 +it 07_gas 2 265 0.0 0.0 +it 08_non-res 2 265 0.0 0.0 +it 09_hydro_pump 2 265 0.0 0.0 +it 01_solar 2 266 1.0 0.0 +it 02_wind_on 2 266 1.0 0.0 +it 03_wind_off 2 266 1.0 0.0 +it 04_res 2 266 1.0 0.0 +it 05_nuclear 2 266 1.0 0.0 +it 06_coal 2 266 0.0 0.0 +it 07_gas 2 266 0.0 0.0 +it 08_non-res 2 266 0.0 0.0 +it 09_hydro_pump 2 266 0.0 0.0 +it 01_solar 2 267 1.0 0.0 +it 02_wind_on 2 267 1.0 0.0 +it 03_wind_off 2 267 1.0 0.0 +it 04_res 2 267 1.0 0.0 +it 05_nuclear 2 267 1.0 0.0 +it 06_coal 2 267 0.0 0.0 +it 07_gas 2 267 0.0 0.0 +it 08_non-res 2 267 0.0 0.0 +it 09_hydro_pump 2 267 0.0 0.0 +it 01_solar 2 268 1.0 0.0 +it 02_wind_on 2 268 1.0 0.0 +it 03_wind_off 2 268 1.0 0.0 +it 04_res 2 268 1.0 0.0 +it 05_nuclear 2 268 1.0 0.0 +it 06_coal 2 268 0.0 0.0 +it 07_gas 2 268 0.0 0.0 +it 08_non-res 2 268 0.0 0.0 +it 09_hydro_pump 2 268 0.0 0.0 +it 01_solar 2 269 1.0 0.0 +it 02_wind_on 2 269 1.0 0.0 +it 03_wind_off 2 269 1.0 0.0 +it 04_res 2 269 1.0 0.0 +it 05_nuclear 2 269 1.0 0.0 +it 06_coal 2 269 0.0 0.0 +it 07_gas 2 269 0.0 0.0 +it 08_non-res 2 269 0.0 0.0 +it 09_hydro_pump 2 269 0.0 0.0 +it 01_solar 2 270 1.0 0.0 +it 02_wind_on 2 270 1.0 0.0 +it 03_wind_off 2 270 1.0 0.0 +it 04_res 2 270 1.0 0.0 +it 05_nuclear 2 270 1.0 0.0 +it 06_coal 2 270 1.0 0.0 +it 07_gas 2 270 0.0 0.0 +it 08_non-res 2 270 0.0 0.0 +it 09_hydro_pump 2 270 0.0 0.0 +it 01_solar 2 271 1.0 0.0 +it 02_wind_on 2 271 1.0 0.0 +it 03_wind_off 2 271 1.0 0.0 +it 04_res 2 271 1.0 0.0 +it 05_nuclear 2 271 1.0 0.0 +it 06_coal 2 271 1.0 0.0 +it 07_gas 2 271 0.0 0.0 +it 08_non-res 2 271 0.0 0.0 +it 09_hydro_pump 2 271 0.0 0.0 +it 01_solar 2 272 1.0 0.0 +it 02_wind_on 2 272 1.0 0.0 +it 03_wind_off 2 272 1.0 0.0 +it 04_res 2 272 1.0 0.0 +it 05_nuclear 2 272 1.0 0.0 +it 06_coal 2 272 1.0 0.0 +it 07_gas 2 272 0.0 0.0 +it 08_non-res 2 272 0.0 0.0 +it 09_hydro_pump 2 272 0.0 0.0 +it 01_solar 2 273 1.0 0.0 +it 02_wind_on 2 273 1.0 0.0 +it 03_wind_off 2 273 1.0 0.0 +it 04_res 2 273 1.0 0.0 +it 05_nuclear 2 273 1.0 0.0 +it 06_coal 2 273 1.0 0.0 +it 07_gas 2 273 0.0 0.0 +it 08_non-res 2 273 0.0 0.0 +it 09_hydro_pump 2 273 0.0 0.0 +it 01_solar 2 274 1.0 0.0 +it 02_wind_on 2 274 1.0 0.0 +it 03_wind_off 2 274 1.0 0.0 +it 04_res 2 274 1.0 0.0 +it 05_nuclear 2 274 1.0 0.0 +it 06_coal 2 274 1.0 0.0 +it 07_gas 2 274 0.0 0.0 +it 08_non-res 2 274 0.0 0.0 +it 09_hydro_pump 2 274 0.0 0.0 +it 01_solar 2 275 1.0 0.0 +it 02_wind_on 2 275 1.0 0.0 +it 03_wind_off 2 275 1.0 0.0 +it 04_res 2 275 1.0 0.0 +it 05_nuclear 2 275 1.0 0.0 +it 06_coal 2 275 1.0 0.0 +it 07_gas 2 275 0.0 0.0 +it 08_non-res 2 275 0.0 0.0 +it 09_hydro_pump 2 275 0.0 0.0 +it 01_solar 2 276 1.0 0.0 +it 02_wind_on 2 276 1.0 0.0 +it 03_wind_off 2 276 1.0 0.0 +it 04_res 2 276 1.0 0.0 +it 05_nuclear 2 276 1.0 0.0 +it 06_coal 2 276 1.0 0.0 +it 07_gas 2 276 0.0 0.0 +it 08_non-res 2 276 0.0 0.0 +it 09_hydro_pump 2 276 0.0 0.0 +it 01_solar 2 277 1.0 0.0 +it 02_wind_on 2 277 1.0 0.0 +it 03_wind_off 2 277 1.0 0.0 +it 04_res 2 277 1.0 0.0 +it 05_nuclear 2 277 1.0 0.0 +it 06_coal 2 277 1.0 0.0 +it 07_gas 2 277 0.0 0.0 +it 08_non-res 2 277 0.0 0.0 +it 09_hydro_pump 2 277 0.0 0.0 +it 01_solar 2 278 1.0 0.0 +it 02_wind_on 2 278 1.0 0.0 +it 03_wind_off 2 278 1.0 0.0 +it 04_res 2 278 1.0 0.0 +it 05_nuclear 2 278 1.0 0.0 +it 06_coal 2 278 1.0 0.0 +it 07_gas 2 278 0.0 0.0 +it 08_non-res 2 278 0.0 0.0 +it 09_hydro_pump 2 278 0.0 0.0 +it 01_solar 2 279 1.0 0.0 +it 02_wind_on 2 279 1.0 0.0 +it 03_wind_off 2 279 1.0 0.0 +it 04_res 2 279 1.0 0.0 +it 05_nuclear 2 279 1.0 0.0 +it 06_coal 2 279 1.0 0.0 +it 07_gas 2 279 0.0 0.0 +it 08_non-res 2 279 0.0 0.0 +it 09_hydro_pump 2 279 0.0 0.0 +it 01_solar 2 280 1.0 0.0 +it 02_wind_on 2 280 1.0 0.0 +it 03_wind_off 2 280 1.0 0.0 +it 04_res 2 280 1.0 0.0 +it 05_nuclear 2 280 1.0 0.0 +it 06_coal 2 280 1.0 0.0 +it 07_gas 2 280 0.0 0.0 +it 08_non-res 2 280 0.0 0.0 +it 09_hydro_pump 2 280 0.0 0.0 +it 01_solar 2 281 1.0 0.0 +it 02_wind_on 2 281 1.0 0.0 +it 03_wind_off 2 281 1.0 0.0 +it 04_res 2 281 1.0 0.0 +it 05_nuclear 2 281 1.0 0.0 +it 06_coal 2 281 1.0 0.0 +it 07_gas 2 281 0.0 0.0 +it 08_non-res 2 281 0.0 0.0 +it 09_hydro_pump 2 281 0.0 0.0 +it 01_solar 2 282 1.0 0.0 +it 02_wind_on 2 282 1.0 0.0 +it 03_wind_off 2 282 1.0 0.0 +it 04_res 2 282 1.0 0.0 +it 05_nuclear 2 282 1.0 0.0 +it 06_coal 2 282 1.0 0.0 +it 07_gas 2 282 0.0 0.0 +it 08_non-res 2 282 0.0 0.0 +it 09_hydro_pump 2 282 0.0 0.0 +it 01_solar 2 283 1.0 0.0 +it 02_wind_on 2 283 1.0 0.0 +it 03_wind_off 2 283 1.0 0.0 +it 04_res 2 283 1.0 0.0 +it 05_nuclear 2 283 1.0 0.0 +it 06_coal 2 283 1.0 0.0 +it 07_gas 2 283 0.0 0.0 +it 08_non-res 2 283 0.0 0.0 +it 09_hydro_pump 2 283 0.0 0.0 +it 01_solar 2 284 1.0 0.0 +it 02_wind_on 2 284 1.0 0.0 +it 03_wind_off 2 284 1.0 0.0 +it 04_res 2 284 1.0 0.0 +it 05_nuclear 2 284 1.0 0.0 +it 06_coal 2 284 1.0 0.0 +it 07_gas 2 284 0.0 0.0 +it 08_non-res 2 284 0.0 0.0 +it 09_hydro_pump 2 284 0.0 0.0 +it 01_solar 2 285 1.0 0.0 +it 02_wind_on 2 285 1.0 0.0 +it 03_wind_off 2 285 1.0 0.0 +it 04_res 2 285 1.0 0.0 +it 05_nuclear 2 285 1.0 0.0 +it 06_coal 2 285 1.0 0.0 +it 07_gas 2 285 0.0 0.0 +it 08_non-res 2 285 0.0 0.0 +it 09_hydro_pump 2 285 0.0 0.0 +it 01_solar 2 286 1.0 0.0 +it 02_wind_on 2 286 1.0 0.0 +it 03_wind_off 2 286 1.0 0.0 +it 04_res 2 286 1.0 0.0 +it 05_nuclear 2 286 1.0 0.0 +it 06_coal 2 286 1.0 0.0 +it 07_gas 2 286 0.0 0.0 +it 08_non-res 2 286 0.0 0.0 +it 09_hydro_pump 2 286 0.0 0.0 +it 01_solar 2 287 1.0 0.0 +it 02_wind_on 2 287 1.0 0.0 +it 03_wind_off 2 287 1.0 0.0 +it 04_res 2 287 1.0 0.0 +it 05_nuclear 2 287 1.0 0.0 +it 06_coal 2 287 1.0 0.0 +it 07_gas 2 287 0.0 0.0 +it 08_non-res 2 287 0.0 0.0 +it 09_hydro_pump 2 287 0.0 0.0 +it 01_solar 2 288 1.0 0.0 +it 02_wind_on 2 288 1.0 0.0 +it 03_wind_off 2 288 1.0 0.0 +it 04_res 2 288 1.0 0.0 +it 05_nuclear 2 288 1.0 0.0 +it 06_coal 2 288 1.0 0.0 +it 07_gas 2 288 0.0 0.0 +it 08_non-res 2 288 0.0 0.0 +it 09_hydro_pump 2 288 0.0 0.0 +it 01_solar 2 289 1.0 0.0 +it 02_wind_on 2 289 1.0 0.0 +it 03_wind_off 2 289 1.0 0.0 +it 04_res 2 289 1.0 0.0 +it 05_nuclear 2 289 1.0 0.0 +it 06_coal 2 289 1.0 0.0 +it 07_gas 2 289 0.0 0.0 +it 08_non-res 2 289 0.0 0.0 +it 09_hydro_pump 2 289 0.0 0.0 +it 01_solar 2 290 1.0 0.0 +it 02_wind_on 2 290 1.0 0.0 +it 03_wind_off 2 290 1.0 0.0 +it 04_res 2 290 1.0 0.0 +it 05_nuclear 2 290 1.0 0.0 +it 06_coal 2 290 1.0 0.0 +it 07_gas 2 290 1.0 0.0 +it 08_non-res 2 290 0.0 0.0 +it 09_hydro_pump 2 290 0.0 0.0 +it 01_solar 2 291 1.0 0.0 +it 02_wind_on 2 291 1.0 0.0 +it 03_wind_off 2 291 1.0 0.0 +it 04_res 2 291 1.0 0.0 +it 05_nuclear 2 291 1.0 0.0 +it 06_coal 2 291 1.0 0.0 +it 07_gas 2 291 1.0 0.0 +it 08_non-res 2 291 0.0 0.0 +it 09_hydro_pump 2 291 0.0 0.0 +it 01_solar 2 292 1.0 0.0 +it 02_wind_on 2 292 1.0 0.0 +it 03_wind_off 2 292 1.0 0.0 +it 04_res 2 292 1.0 0.0 +it 05_nuclear 2 292 1.0 0.0 +it 06_coal 2 292 1.0 0.0 +it 07_gas 2 292 1.0 0.0 +it 08_non-res 2 292 0.0 0.0 +it 09_hydro_pump 2 292 0.0 0.0 +it 01_solar 2 293 1.0 0.0 +it 02_wind_on 2 293 1.0 0.0 +it 03_wind_off 2 293 1.0 0.0 +it 04_res 2 293 1.0 0.0 +it 05_nuclear 2 293 1.0 0.0 +it 06_coal 2 293 1.0 0.0 +it 07_gas 2 293 1.0 0.0 +it 08_non-res 2 293 0.0 0.0 +it 09_hydro_pump 2 293 0.0 0.0 +it 01_solar 2 294 1.0 0.0 +it 02_wind_on 2 294 1.0 0.0 +it 03_wind_off 2 294 1.0 0.0 +it 04_res 2 294 1.0 0.0 +it 05_nuclear 2 294 1.0 0.0 +it 06_coal 2 294 1.0 0.0 +it 07_gas 2 294 1.0 0.0 +it 08_non-res 2 294 0.0 0.0 +it 09_hydro_pump 2 294 0.0 0.0 +it 01_solar 2 295 1.0 0.0 +it 02_wind_on 2 295 1.0 0.0 +it 03_wind_off 2 295 1.0 0.0 +it 04_res 2 295 1.0 0.0 +it 05_nuclear 2 295 1.0 0.0 +it 06_coal 2 295 1.0 0.0 +it 07_gas 2 295 1.0 0.0 +it 08_non-res 2 295 0.0 0.0 +it 09_hydro_pump 2 295 0.0 0.0 +it 01_solar 2 296 1.0 0.0 +it 02_wind_on 2 296 1.0 0.0 +it 03_wind_off 2 296 1.0 0.0 +it 04_res 2 296 1.0 0.0 +it 05_nuclear 2 296 1.0 0.0 +it 06_coal 2 296 1.0 0.0 +it 07_gas 2 296 1.0 0.0 +it 08_non-res 2 296 0.0 0.0 +it 09_hydro_pump 2 296 0.0 0.0 +it 01_solar 2 297 1.0 0.0 +it 02_wind_on 2 297 1.0 0.0 +it 03_wind_off 2 297 1.0 0.0 +it 04_res 2 297 1.0 0.0 +it 05_nuclear 2 297 1.0 0.0 +it 06_coal 2 297 1.0 0.0 +it 07_gas 2 297 1.0 0.0 +it 08_non-res 2 297 0.0 0.0 +it 09_hydro_pump 2 297 0.0 0.0 +it 01_solar 2 298 1.0 0.0 +it 02_wind_on 2 298 1.0 0.0 +it 03_wind_off 2 298 1.0 0.0 +it 04_res 2 298 1.0 0.0 +it 05_nuclear 2 298 1.0 0.0 +it 06_coal 2 298 1.0 0.0 +it 07_gas 2 298 1.0 0.0 +it 08_non-res 2 298 0.0 0.0 +it 09_hydro_pump 2 298 0.0 0.0 +it 01_solar 2 299 1.0 0.0 +it 02_wind_on 2 299 1.0 0.0 +it 03_wind_off 2 299 1.0 0.0 +it 04_res 2 299 1.0 0.0 +it 05_nuclear 2 299 1.0 0.0 +it 06_coal 2 299 1.0 0.0 +it 07_gas 2 299 1.0 0.0 +it 08_non-res 2 299 0.0 0.0 +it 09_hydro_pump 2 299 0.0 0.0 +it 01_solar 2 300 1.0 0.0 +it 02_wind_on 2 300 1.0 0.0 +it 03_wind_off 2 300 1.0 0.0 +it 04_res 2 300 1.0 0.0 +it 05_nuclear 2 300 1.0 0.0 +it 06_coal 2 300 1.0 0.0 +it 07_gas 2 300 1.0 0.0 +it 08_non-res 2 300 0.0 0.0 +it 09_hydro_pump 2 300 0.0 0.0 +it 01_solar 2 301 1.0 0.0 +it 02_wind_on 2 301 1.0 0.0 +it 03_wind_off 2 301 1.0 0.0 +it 04_res 2 301 1.0 0.0 +it 05_nuclear 2 301 1.0 0.0 +it 06_coal 2 301 1.0 0.0 +it 07_gas 2 301 1.0 0.0 +it 08_non-res 2 301 0.0 0.0 +it 09_hydro_pump 2 301 0.0 0.0 +it 01_solar 2 302 1.0 0.0 +it 02_wind_on 2 302 1.0 0.0 +it 03_wind_off 2 302 1.0 0.0 +it 04_res 2 302 1.0 0.0 +it 05_nuclear 2 302 1.0 0.0 +it 06_coal 2 302 1.0 0.0 +it 07_gas 2 302 1.0 0.0 +it 08_non-res 2 302 0.0 0.0 +it 09_hydro_pump 2 302 0.0 0.0 +it 01_solar 2 303 1.0 0.0 +it 02_wind_on 2 303 1.0 0.0 +it 03_wind_off 2 303 1.0 0.0 +it 04_res 2 303 1.0 0.0 +it 05_nuclear 2 303 1.0 0.0 +it 06_coal 2 303 1.0 0.0 +it 07_gas 2 303 1.0 0.0 +it 08_non-res 2 303 0.0 0.0 +it 09_hydro_pump 2 303 0.0 0.0 +it 01_solar 2 304 1.0 0.0 +it 02_wind_on 2 304 1.0 0.0 +it 03_wind_off 2 304 1.0 0.0 +it 04_res 2 304 1.0 0.0 +it 05_nuclear 2 304 1.0 0.0 +it 06_coal 2 304 1.0 0.0 +it 07_gas 2 304 1.0 0.0 +it 08_non-res 2 304 0.0 0.0 +it 09_hydro_pump 2 304 0.0 0.0 +it 01_solar 2 305 1.0 0.0 +it 02_wind_on 2 305 1.0 0.0 +it 03_wind_off 2 305 1.0 0.0 +it 04_res 2 305 1.0 0.0 +it 05_nuclear 2 305 1.0 0.0 +it 06_coal 2 305 1.0 0.0 +it 07_gas 2 305 1.0 0.0 +it 08_non-res 2 305 0.0 0.0 +it 09_hydro_pump 2 305 0.0 0.0 +it 01_solar 2 306 1.0 0.0 +it 02_wind_on 2 306 1.0 0.0 +it 03_wind_off 2 306 1.0 0.0 +it 04_res 2 306 1.0 0.0 +it 05_nuclear 2 306 1.0 0.0 +it 06_coal 2 306 1.0 0.0 +it 07_gas 2 306 1.0 0.0 +it 08_non-res 2 306 0.0 0.0 +it 09_hydro_pump 2 306 0.0 0.0 +it 01_solar 2 307 1.0 0.0 +it 02_wind_on 2 307 1.0 0.0 +it 03_wind_off 2 307 1.0 0.0 +it 04_res 2 307 1.0 0.0 +it 05_nuclear 2 307 1.0 0.0 +it 06_coal 2 307 1.0 0.0 +it 07_gas 2 307 1.0 0.0 +it 08_non-res 2 307 0.0 0.0 +it 09_hydro_pump 2 307 0.0 0.0 +it 01_solar 2 308 1.0 0.0 +it 02_wind_on 2 308 1.0 0.0 +it 03_wind_off 2 308 1.0 0.0 +it 04_res 2 308 1.0 0.0 +it 05_nuclear 2 308 1.0 0.0 +it 06_coal 2 308 1.0 0.0 +it 07_gas 2 308 1.0 0.0 +it 08_non-res 2 308 0.0 0.0 +it 09_hydro_pump 2 308 0.0 0.0 +it 01_solar 2 309 1.0 0.0 +it 02_wind_on 2 309 1.0 0.0 +it 03_wind_off 2 309 1.0 0.0 +it 04_res 2 309 1.0 0.0 +it 05_nuclear 2 309 1.0 0.0 +it 06_coal 2 309 1.0 0.0 +it 07_gas 2 309 1.0 0.0 +it 08_non-res 2 309 0.0 0.0 +it 09_hydro_pump 2 309 0.0 0.0 +it 01_solar 2 310 1.0 0.0 +it 02_wind_on 2 310 1.0 0.0 +it 03_wind_off 2 310 1.0 0.0 +it 04_res 2 310 1.0 0.0 +it 05_nuclear 2 310 1.0 0.0 +it 06_coal 2 310 1.0 0.0 +it 07_gas 2 310 1.0 0.0 +it 08_non-res 2 310 1.0 0.0 +it 09_hydro_pump 2 310 0.0 0.0 +it 01_solar 2 311 1.0 0.0 +it 02_wind_on 2 311 1.0 0.0 +it 03_wind_off 2 311 1.0 0.0 +it 04_res 2 311 1.0 0.0 +it 05_nuclear 2 311 1.0 0.0 +it 06_coal 2 311 1.0 0.0 +it 07_gas 2 311 1.0 0.0 +it 08_non-res 2 311 1.0 0.0 +it 09_hydro_pump 2 311 0.0 0.0 +it 01_solar 2 312 1.0 0.0 +it 02_wind_on 2 312 1.0 0.0 +it 03_wind_off 2 312 1.0 0.0 +it 04_res 2 312 1.0 0.0 +it 05_nuclear 2 312 1.0 0.0 +it 06_coal 2 312 1.0 0.0 +it 07_gas 2 312 1.0 0.0 +it 08_non-res 2 312 1.0 0.0 +it 09_hydro_pump 2 312 0.0 0.0 +it 01_solar 2 313 1.0 0.0 +it 02_wind_on 2 313 1.0 0.0 +it 03_wind_off 2 313 1.0 0.0 +it 04_res 2 313 1.0 0.0 +it 05_nuclear 2 313 1.0 0.0 +it 06_coal 2 313 1.0 0.0 +it 07_gas 2 313 1.0 0.0 +it 08_non-res 2 313 1.0 0.0 +it 09_hydro_pump 2 313 0.0 0.0 +it 01_solar 2 314 1.0 0.0 +it 02_wind_on 2 314 1.0 0.0 +it 03_wind_off 2 314 1.0 0.0 +it 04_res 2 314 1.0 0.0 +it 05_nuclear 2 314 1.0 0.0 +it 06_coal 2 314 1.0 0.0 +it 07_gas 2 314 1.0 0.0 +it 08_non-res 2 314 1.0 0.0 +it 09_hydro_pump 2 314 0.0 0.0 +it 01_solar 2 315 1.0 0.0 +it 02_wind_on 2 315 1.0 0.0 +it 03_wind_off 2 315 1.0 0.0 +it 04_res 2 315 1.0 0.0 +it 05_nuclear 2 315 1.0 0.0 +it 06_coal 2 315 1.0 0.0 +it 07_gas 2 315 1.0 0.0 +it 08_non-res 2 315 1.0 0.0 +it 09_hydro_pump 2 315 0.0 0.0 +it 01_solar 2 316 1.0 0.0 +it 02_wind_on 2 316 1.0 0.0 +it 03_wind_off 2 316 1.0 0.0 +it 04_res 2 316 1.0 0.0 +it 05_nuclear 2 316 1.0 0.0 +it 06_coal 2 316 1.0 0.0 +it 07_gas 2 316 1.0 0.0 +it 08_non-res 2 316 1.0 0.0 +it 09_hydro_pump 2 316 0.0 0.0 +it 01_solar 2 317 1.0 0.0 +it 02_wind_on 2 317 1.0 0.0 +it 03_wind_off 2 317 1.0 0.0 +it 04_res 2 317 1.0 0.0 +it 05_nuclear 2 317 1.0 0.0 +it 06_coal 2 317 1.0 0.0 +it 07_gas 2 317 1.0 0.0 +it 08_non-res 2 317 1.0 0.0 +it 09_hydro_pump 2 317 0.0 0.0 +it 01_solar 2 318 1.0 0.0 +it 02_wind_on 2 318 1.0 0.0 +it 03_wind_off 2 318 1.0 0.0 +it 04_res 2 318 1.0 0.0 +it 05_nuclear 2 318 1.0 0.0 +it 06_coal 2 318 1.0 0.0 +it 07_gas 2 318 1.0 0.0 +it 08_non-res 2 318 1.0 0.0 +it 09_hydro_pump 2 318 0.0 0.0 +it 01_solar 2 319 1.0 0.0 +it 02_wind_on 2 319 1.0 0.0 +it 03_wind_off 2 319 1.0 0.0 +it 04_res 2 319 1.0 0.0 +it 05_nuclear 2 319 1.0 0.0 +it 06_coal 2 319 1.0 0.0 +it 07_gas 2 319 1.0 0.0 +it 08_non-res 2 319 1.0 0.0 +it 09_hydro_pump 2 319 0.0 0.0 +it 01_solar 2 320 1.0 0.0 +it 02_wind_on 2 320 1.0 0.0 +it 03_wind_off 2 320 1.0 0.0 +it 04_res 2 320 1.0 0.0 +it 05_nuclear 2 320 1.0 0.0 +it 06_coal 2 320 1.0 0.0 +it 07_gas 2 320 1.0 0.0 +it 08_non-res 2 320 1.0 0.0 +it 09_hydro_pump 2 320 0.0 0.0 +it 01_solar 2 321 1.0 0.0 +it 02_wind_on 2 321 1.0 0.0 +it 03_wind_off 2 321 1.0 0.0 +it 04_res 2 321 1.0 0.0 +it 05_nuclear 2 321 1.0 0.0 +it 06_coal 2 321 1.0 0.0 +it 07_gas 2 321 1.0 0.0 +it 08_non-res 2 321 1.0 0.0 +it 09_hydro_pump 2 321 0.0 0.0 +it 01_solar 2 322 1.0 0.0 +it 02_wind_on 2 322 1.0 0.0 +it 03_wind_off 2 322 1.0 0.0 +it 04_res 2 322 1.0 0.0 +it 05_nuclear 2 322 1.0 0.0 +it 06_coal 2 322 1.0 0.0 +it 07_gas 2 322 1.0 0.0 +it 08_non-res 2 322 1.0 0.0 +it 09_hydro_pump 2 322 0.0 0.0 +it 01_solar 2 323 1.0 0.0 +it 02_wind_on 2 323 1.0 0.0 +it 03_wind_off 2 323 1.0 0.0 +it 04_res 2 323 1.0 0.0 +it 05_nuclear 2 323 1.0 0.0 +it 06_coal 2 323 1.0 0.0 +it 07_gas 2 323 1.0 0.0 +it 08_non-res 2 323 1.0 0.0 +it 09_hydro_pump 2 323 0.0 0.0 +it 01_solar 2 324 1.0 0.0 +it 02_wind_on 2 324 1.0 0.0 +it 03_wind_off 2 324 1.0 0.0 +it 04_res 2 324 1.0 0.0 +it 05_nuclear 2 324 1.0 0.0 +it 06_coal 2 324 1.0 0.0 +it 07_gas 2 324 1.0 0.0 +it 08_non-res 2 324 1.0 0.0 +it 09_hydro_pump 2 324 0.0 0.0 +it 01_solar 2 325 1.0 0.0 +it 02_wind_on 2 325 1.0 0.0 +it 03_wind_off 2 325 1.0 0.0 +it 04_res 2 325 1.0 0.0 +it 05_nuclear 2 325 1.0 0.0 +it 06_coal 2 325 1.0 0.0 +it 07_gas 2 325 1.0 0.0 +it 08_non-res 2 325 1.0 0.0 +it 09_hydro_pump 2 325 0.0 0.0 +it 01_solar 2 326 1.0 0.0 +it 02_wind_on 2 326 1.0 0.0 +it 03_wind_off 2 326 1.0 0.0 +it 04_res 2 326 1.0 0.0 +it 05_nuclear 2 326 1.0 0.0 +it 06_coal 2 326 1.0 0.0 +it 07_gas 2 326 1.0 0.0 +it 08_non-res 2 326 1.0 0.0 +it 09_hydro_pump 2 326 0.0 0.0 +it 01_solar 2 327 1.0 0.0 +it 02_wind_on 2 327 1.0 0.0 +it 03_wind_off 2 327 1.0 0.0 +it 04_res 2 327 1.0 0.0 +it 05_nuclear 2 327 1.0 0.0 +it 06_coal 2 327 1.0 0.0 +it 07_gas 2 327 1.0 0.0 +it 08_non-res 2 327 1.0 0.0 +it 09_hydro_pump 2 327 0.0 0.0 +it 01_solar 2 328 1.0 0.0 +it 02_wind_on 2 328 1.0 0.0 +it 03_wind_off 2 328 1.0 0.0 +it 04_res 2 328 1.0 0.0 +it 05_nuclear 2 328 1.0 0.0 +it 06_coal 2 328 1.0 0.0 +it 07_gas 2 328 1.0 0.0 +it 08_non-res 2 328 1.0 0.0 +it 09_hydro_pump 2 328 0.0 0.0 +it 01_solar 2 329 1.0 0.0 +it 02_wind_on 2 329 1.0 0.0 +it 03_wind_off 2 329 1.0 0.0 +it 04_res 2 329 1.0 0.0 +it 05_nuclear 2 329 1.0 0.0 +it 06_coal 2 329 1.0 0.0 +it 07_gas 2 329 1.0 0.0 +it 08_non-res 2 329 1.0 0.0 +it 09_hydro_pump 2 329 0.0 0.0 +it 01_solar 2 330 1.0 0.0 +it 02_wind_on 2 330 1.0 0.0 +it 03_wind_off 2 330 1.0 0.0 +it 04_res 2 330 1.0 0.0 +it 05_nuclear 2 330 1.0 0.0 +it 06_coal 2 330 1.0 0.0 +it 07_gas 2 330 1.0 0.0 +it 08_non-res 2 330 1.0 0.0 +it 09_hydro_pump 2 330 1.0 0.0 +it 01_solar 2 331 1.0 0.0 +it 02_wind_on 2 331 1.0 0.0 +it 03_wind_off 2 331 1.0 0.0 +it 04_res 2 331 1.0 0.0 +it 05_nuclear 2 331 1.0 0.0 +it 06_coal 2 331 1.0 0.0 +it 07_gas 2 331 1.0 0.0 +it 08_non-res 2 331 1.0 0.0 +it 09_hydro_pump 2 331 1.0 0.0 +it 01_solar 2 332 1.0 0.0 +it 02_wind_on 2 332 1.0 0.0 +it 03_wind_off 2 332 1.0 0.0 +it 04_res 2 332 1.0 0.0 +it 05_nuclear 2 332 1.0 0.0 +it 06_coal 2 332 1.0 0.0 +it 07_gas 2 332 1.0 0.0 +it 08_non-res 2 332 1.0 0.0 +it 09_hydro_pump 2 332 1.0 0.0 +it 01_solar 2 333 1.0 0.0 +it 02_wind_on 2 333 1.0 0.0 +it 03_wind_off 2 333 1.0 0.0 +it 04_res 2 333 1.0 0.0 +it 05_nuclear 2 333 1.0 0.0 +it 06_coal 2 333 1.0 0.0 +it 07_gas 2 333 1.0 0.0 +it 08_non-res 2 333 1.0 0.0 +it 09_hydro_pump 2 333 1.0 0.0 +it 01_solar 2 334 1.0 0.0 +it 02_wind_on 2 334 1.0 0.0 +it 03_wind_off 2 334 1.0 0.0 +it 04_res 2 334 1.0 0.0 +it 05_nuclear 2 334 1.0 0.0 +it 06_coal 2 334 1.0 0.0 +it 07_gas 2 334 1.0 0.0 +it 08_non-res 2 334 1.0 0.0 +it 09_hydro_pump 2 334 1.0 0.0 +it 01_solar 2 335 1.0 0.0 +it 02_wind_on 2 335 1.0 0.0 +it 03_wind_off 2 335 1.0 0.0 +it 04_res 2 335 1.0 0.0 +it 05_nuclear 2 335 1.0 0.0 +it 06_coal 2 335 1.0 0.0 +it 07_gas 2 335 1.0 0.0 +it 08_non-res 2 335 1.0 0.0 +it 09_hydro_pump 2 335 1.0 0.0 +it 01_solar 2 336 1.0 0.0 +it 02_wind_on 2 336 1.0 0.0 +it 03_wind_off 2 336 1.0 0.0 +it 04_res 2 336 1.0 0.0 +it 05_nuclear 2 336 1.0 0.0 +it 06_coal 2 336 1.0 0.0 +it 07_gas 2 336 1.0 0.0 +it 08_non-res 2 336 1.0 0.0 +it 09_hydro_pump 2 336 1.0 0.0 diff --git a/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-08-all.result.tsv b/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-08-all.result.tsv index 565b614f8e..ebc9631010 100644 --- a/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-08-all.result.tsv +++ b/tests/integration/raw_studies_blueprint/assets/aggregate_areas_raw_data/test-08-all.result.tsv @@ -1,19 +1,19 @@ -area cluster timeId time NODU NP Cost - Euro -de 01_solar 1 2030 167.0 0.0 -de 02_wind_on 1 2030 147.0 0.0 -de 03_wind_off 1 2030 127.0 0.0 -de 04_res 1 2030 107.0 0.0 -de 05_nuclear 1 2030 87.0 0.0 -de 06_coal 1 2030 67.0 0.0 -de 07_gas 1 2030 47.0 0.0 -de 08_non-res 1 2030 27.0 0.0 -de 09_hydro_pump 1 2030 7.0 0.0 -es 01_solar 1 2030 167.0 0.0 -es 02_wind_on 1 2030 147.0 0.0 -es 03_wind_off 1 2030 127.0 0.0 -es 04_res 1 2030 107.0 0.0 -es 05_nuclear 1 2030 87.0 0.0 -es 06_coal 1 2030 67.0 0.0 -es 07_gas 1 2030 47.0 0.0 -es 08_non-res 1 2030 27.0 0.0 -es 09_hydro_pump 1 2030 7.0 0.0 +area cluster timeId NODU NP Cost - Euro +de 01_solar 1 167.0 0.0 +de 02_wind_on 1 147.0 0.0 +de 03_wind_off 1 127.0 0.0 +de 04_res 1 107.0 0.0 +de 05_nuclear 1 87.0 0.0 +de 06_coal 1 67.0 0.0 +de 07_gas 1 47.0 0.0 +de 08_non-res 1 27.0 0.0 +de 09_hydro_pump 1 7.0 0.0 +es 01_solar 1 167.0 0.0 +es 02_wind_on 1 147.0 0.0 +es 03_wind_off 1 127.0 0.0 +es 04_res 1 107.0 0.0 +es 05_nuclear 1 87.0 0.0 +es 06_coal 1 67.0 0.0 +es 07_gas 1 47.0 0.0 +es 08_non-res 1 27.0 0.0 +es 09_hydro_pump 1 7.0 0.0 diff --git a/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-01-all.result.tsv b/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-01-all.result.tsv index a7e863a3ee..1f1a7d37b2 100644 --- a/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-01-all.result.tsv +++ b/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-01-all.result.tsv @@ -1,365 +1,365 @@ -link timeId time FLOW LIN. EXP FLOW LIN. STD FLOW LIN. MIN FLOW LIN. MAX UCAP LIN. EXP UCAP LIN. STD UCAP LIN. MIN UCAP LIN. MAX LOOP FLOW VALUES FLOW QUAD. VALUES CONG. FEE (ALG.) EXP CONG. FEE (ALG.) STD CONG. FEE (ALG.) MIN CONG. FEE (ALG.) MAX CONG. FEE (ABS.) EXP CONG. FEE (ABS.) STD CONG. FEE (ABS.) MIN CONG. FEE (ABS.) MAX MARG. COST EXP MARG. COST STD MARG. COST MIN MARG. COST MAX CONG. PROB + VALUES CONG. PROB - VALUES HURDLE COST EXP HURDLE COST STD HURDLE COST MIN HURDLE COST MAX -de - fr 1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 7 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 8 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 9 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 10 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 11 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 12 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 13 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 14 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 15 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 16 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 17 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 18 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 19 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 20 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 21 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 22 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 23 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 24 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 25 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 26 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 27 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 28 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 29 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 30 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 31 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 32 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 34 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 35 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 36 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 37 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 38 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 39 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 40 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 41 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 42 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 43 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 44 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 45 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 46 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 47 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 48 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 49 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 50 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 51 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 52 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 53 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 54 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 55 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 56 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 57 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 58 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 59 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 60 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 61 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 62 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 63 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 64 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 65 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 66 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 68 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 69 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 70 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 71 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 72 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 73 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 74 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 75 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 76 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 77 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 78 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 79 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 80 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 81 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 82 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 83 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 84 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 85 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 86 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 87 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 88 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 89 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 90 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 91 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 92 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 93 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 94 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 95 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 96 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 97 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 99 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 100 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 101 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 102 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 103 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 104 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 105 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 106 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 107 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 108 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 109 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 110 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 111 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 112 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 113 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 114 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 115 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 116 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 117 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 118 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 119 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 120 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 121 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 122 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 123 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 124 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 125 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 126 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 127 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 128 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 129 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 130 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 131 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 132 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 133 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 134 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 135 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 136 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 137 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 138 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 139 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 140 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 141 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 142 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 143 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 144 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 145 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 146 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 147 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 148 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 149 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 150 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 151 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 152 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 153 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 154 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 155 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 156 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 157 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 158 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 159 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 160 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 161 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 162 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 163 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 164 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 165 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 166 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 167 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 168 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 169 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 170 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 171 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 172 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 173 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 174 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 175 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 176 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 177 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 178 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 179 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 180 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 181 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 182 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 183 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 184 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 185 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 186 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 187 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 188 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 189 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 190 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 191 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 192 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 193 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 194 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 195 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 196 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 197 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 198 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 199 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 200 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 201 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 202 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 203 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 204 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 205 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 206 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 207 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 208 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 209 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 210 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 211 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 212 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 213 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 214 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 215 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 216 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 217 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 218 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 219 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 220 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 221 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 222 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 223 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 224 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 225 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 226 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 227 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 228 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 229 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 230 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 231 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 232 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 233 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 234 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 235 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 236 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 237 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 238 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 239 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 240 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 241 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 242 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 243 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 244 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 245 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 246 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 247 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 248 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 249 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 250 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 251 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 252 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 253 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 254 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 255 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 256 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 257 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 258 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 259 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 260 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 261 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 262 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 263 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 264 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 265 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 266 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 267 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 268 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 269 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 270 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 271 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 272 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 273 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 274 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 275 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 276 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 277 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 278 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 279 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 280 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 281 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 282 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 283 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 284 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 285 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 286 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 287 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 288 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 289 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 290 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 291 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 292 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 293 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 294 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 295 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 296 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 297 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 298 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 299 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 300 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 301 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 302 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 303 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 304 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 305 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 306 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 307 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 308 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 309 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 310 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 311 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 312 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 313 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 314 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 315 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 316 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 317 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 318 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 319 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 320 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 321 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 322 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 323 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 324 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 325 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 326 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 327 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 328 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 329 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 330 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 331 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 332 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 333 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 334 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 335 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 336 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 337 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 338 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 339 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 340 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 341 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 342 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 343 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 344 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 345 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 346 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 347 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 348 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 349 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 350 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 351 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 352 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 353 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 354 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 355 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 356 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 357 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 358 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 359 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 360 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 361 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 362 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 363 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 364 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +link timeId FLOW LIN. EXP FLOW LIN. STD FLOW LIN. MIN FLOW LIN. MAX UCAP LIN. EXP UCAP LIN. STD UCAP LIN. MIN UCAP LIN. MAX LOOP FLOW VALUES FLOW QUAD. VALUES CONG. FEE (ALG.) EXP CONG. FEE (ALG.) STD CONG. FEE (ALG.) MIN CONG. FEE (ALG.) MAX CONG. FEE (ABS.) EXP CONG. FEE (ABS.) STD CONG. FEE (ABS.) MIN CONG. FEE (ABS.) MAX MARG. COST EXP MARG. COST STD MARG. COST MIN MARG. COST MAX CONG. PROB + VALUES CONG. PROB - VALUES HURDLE COST EXP HURDLE COST STD HURDLE COST MIN HURDLE COST MAX +de - fr 1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 7 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 8 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 9 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 10 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 11 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 12 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 13 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 14 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 15 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 16 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 17 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 18 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 19 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 20 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 21 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 22 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 23 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 24 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 25 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 26 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 27 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 28 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 29 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 30 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 31 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 32 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 34 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 35 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 36 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 37 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 38 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 39 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 40 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 41 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 42 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 43 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 44 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 45 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 46 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 47 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 48 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 49 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 50 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 51 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 52 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 53 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 54 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 55 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 56 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 57 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 58 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 59 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 60 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 61 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 62 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 63 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 64 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 65 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 66 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 68 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 69 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 70 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 71 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 72 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 73 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 74 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 75 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 76 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 77 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 78 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 79 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 80 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 81 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 82 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 83 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 84 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 85 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 86 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 87 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 88 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 89 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 90 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 91 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 92 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 93 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 94 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 95 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 96 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 97 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 99 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 100 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 101 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 102 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 103 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 104 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 105 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 106 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 107 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 108 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 109 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 110 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 111 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 112 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 113 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 114 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 115 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 116 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 117 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 118 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 119 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 120 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 121 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 122 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 123 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 124 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 125 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 126 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 127 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 128 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 129 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 130 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 131 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 132 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 133 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 134 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 135 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 136 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 137 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 138 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 139 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 140 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 141 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 142 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 143 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 144 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 145 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 146 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 147 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 148 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 149 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 150 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 151 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 152 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 153 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 154 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 155 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 156 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 157 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 158 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 159 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 160 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 161 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 162 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 163 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 164 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 165 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 166 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 167 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 168 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 169 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 170 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 171 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 172 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 173 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 174 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 175 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 176 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 177 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 178 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 179 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 180 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 181 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 182 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 183 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 184 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 185 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 186 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 187 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 188 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 189 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 190 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 191 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 192 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 193 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 194 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 195 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 196 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 197 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 198 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 199 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 200 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 201 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 202 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 203 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 204 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 205 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 206 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 207 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 208 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 209 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 210 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 211 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 212 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 213 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 214 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 215 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 216 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 217 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 218 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 219 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 220 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 221 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 222 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 223 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 224 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 225 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 226 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 227 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 228 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 229 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 230 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 231 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 232 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 233 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 234 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 235 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 236 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 237 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 238 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 239 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 240 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 241 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 242 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 243 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 244 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 245 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 246 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 247 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 248 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 249 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 250 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 251 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 252 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 253 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 254 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 255 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 256 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 257 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 258 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 259 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 260 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 261 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 262 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 263 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 264 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 265 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 266 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 267 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 268 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 269 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 270 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 271 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 272 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 273 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 274 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 275 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 276 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 277 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 278 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 279 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 280 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 281 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 282 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 283 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 284 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 285 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 286 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 287 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 288 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 289 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 290 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 291 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 292 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 293 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 294 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 295 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 296 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 297 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 298 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 299 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 300 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 301 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 302 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 303 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 304 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 305 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 306 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 307 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 308 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 309 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 310 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 311 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 312 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 313 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 314 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 315 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 316 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 317 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 318 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 319 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 320 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 321 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 322 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 323 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 324 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 325 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 326 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 327 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 328 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 329 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 330 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 331 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 332 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 333 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 334 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 335 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 336 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 337 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 338 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 339 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 340 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 341 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 342 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 343 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 344 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 345 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 346 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 347 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 348 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 349 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 350 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 351 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 352 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 353 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 354 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 355 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 356 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 357 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 358 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 359 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 360 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 361 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 362 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 363 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 364 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 diff --git a/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-01.result.tsv b/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-01.result.tsv index 9417356121..e1b5a0212c 100644 --- a/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-01.result.tsv +++ b/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-01.result.tsv @@ -1,2017 +1,2017 @@ -link mcYear timeId time FLOW LIN. UCAP LIN. LOOP FLOW FLOW QUAD. CONG. FEE (ALG.) CONG. FEE (ABS.) MARG. COST CONG. PROB + CONG. PROB - HURDLE COST -de - fr 1 1 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 2 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 3 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 4 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 5 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 6 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 7 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 8 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 9 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 10 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 11 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 12 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 13 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 14 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 15 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 16 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 17 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 18 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 19 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 20 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 21 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 22 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 23 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 24 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 25 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 26 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 27 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 28 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 29 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 30 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 31 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 32 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 33 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 34 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 35 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 36 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 37 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 38 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 39 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 40 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 41 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 42 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 43 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 44 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 45 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 46 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 47 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 48 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 49 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 50 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 51 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 52 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 53 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 54 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 55 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 56 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 57 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 58 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 59 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 60 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 61 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 62 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 63 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 64 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 65 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 66 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 67 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 68 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 69 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 70 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 71 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 72 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 73 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 74 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 75 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 76 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 77 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 78 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 79 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 80 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 81 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 82 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 83 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 84 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 85 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 86 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 87 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 88 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 89 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 90 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 91 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 92 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 93 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 94 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 95 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 96 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 97 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 98 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 99 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 100 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 101 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 102 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 103 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 104 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 105 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 106 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 107 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 108 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 109 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 110 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 111 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 112 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 113 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 114 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 115 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 116 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 117 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 118 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 119 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 120 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 121 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 122 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 123 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 124 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 125 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 126 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 127 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 128 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 129 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 130 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 131 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 132 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 133 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 134 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 135 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 136 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 137 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 138 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 139 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 140 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 141 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 142 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 143 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 144 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 145 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 146 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 147 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 148 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 149 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 150 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 151 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 152 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 153 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 154 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 155 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 156 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 157 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 158 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 159 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 160 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 161 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 162 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 163 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 164 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 165 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 166 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 167 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 168 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 169 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 170 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 171 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 172 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 173 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 174 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 175 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 176 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 177 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 178 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 179 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 180 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 181 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 182 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 183 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 184 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 185 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 186 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 187 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 188 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 189 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 190 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 191 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 192 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 193 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 194 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 195 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 196 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 197 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 198 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 199 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 200 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 201 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 202 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 203 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 204 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 205 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 206 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 207 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 208 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 209 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 210 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 211 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 212 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 213 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 214 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 215 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 216 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 217 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 218 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 219 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 220 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 221 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 222 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 223 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 224 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 225 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 226 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 227 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 228 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 229 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 230 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 231 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 232 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 233 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 234 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 235 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 236 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 237 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 238 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 239 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 240 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 241 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 242 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 243 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 244 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 245 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 246 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 247 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 248 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 249 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 250 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 251 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 252 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 253 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 254 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 255 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 256 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 257 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 258 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 259 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 260 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 261 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 262 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 263 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 264 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 265 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 266 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 267 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 268 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 269 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 270 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 271 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 272 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 273 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 274 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 275 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 276 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 277 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 278 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 279 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 280 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 281 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 282 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 283 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 284 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 285 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 286 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 287 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 288 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 289 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 290 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 291 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 292 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 293 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 294 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 295 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 296 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 297 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 298 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 299 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 300 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 301 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 302 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 303 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 304 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 305 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 306 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 307 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 308 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 309 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 310 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 311 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 312 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 313 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 314 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 315 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 316 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 317 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 318 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 319 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 320 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 321 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 322 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 323 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 324 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 325 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 326 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 327 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 328 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 329 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 330 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 331 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 332 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 333 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 334 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 335 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 336 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 1 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 2 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 3 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 4 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 5 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 6 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 7 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 8 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 9 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 10 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 11 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 12 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 13 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 14 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 15 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 16 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 17 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 18 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 19 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 20 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 21 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 22 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 23 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 24 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 25 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 26 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 27 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 28 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 29 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 30 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 31 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 32 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 33 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 34 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 35 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 36 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 37 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 38 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 39 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 40 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 41 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 42 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 43 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 44 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 45 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 46 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 47 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 48 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 49 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 50 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 51 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 52 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 53 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 54 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 55 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 56 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 57 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 58 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 59 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 60 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 61 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 62 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 63 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 64 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 65 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 66 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 67 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 68 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 69 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 70 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 71 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 72 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 73 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 74 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 75 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 76 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 77 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 78 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 79 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 80 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 81 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 82 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 83 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 84 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 85 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 86 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 87 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 88 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 89 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 90 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 91 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 92 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 93 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 94 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 95 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 96 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 97 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 98 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 99 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 100 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 101 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 102 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 103 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 104 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 105 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 106 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 107 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 108 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 109 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 110 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 111 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 112 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 113 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 114 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 115 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 116 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 117 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 118 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 119 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 120 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 121 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 122 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 123 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 124 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 125 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 126 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 127 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 128 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 129 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 130 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 131 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 132 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 133 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 134 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 135 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 136 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 137 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 138 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 139 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 140 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 141 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 142 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 143 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 144 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 145 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 146 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 147 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 148 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 149 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 150 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 151 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 152 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 153 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 154 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 155 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 156 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 157 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 158 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 159 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 160 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 161 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 162 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 163 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 164 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 165 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 166 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 167 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 168 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 169 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 170 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 171 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 172 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 173 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 174 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 175 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 176 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 177 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 178 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 179 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 180 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 181 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 182 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 183 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 184 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 185 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 186 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 187 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 188 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 189 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 190 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 191 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 192 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 193 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 194 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 195 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 196 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 197 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 198 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 199 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 200 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 201 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 202 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 203 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 204 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 205 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 206 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 207 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 208 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 209 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 210 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 211 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 212 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 213 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 214 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 215 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 216 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 217 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 218 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 219 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 220 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 221 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 222 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 223 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 224 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 225 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 226 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 227 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 228 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 229 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 230 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 231 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 232 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 233 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 234 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 235 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 236 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 237 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 238 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 239 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 240 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 241 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 242 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 243 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 244 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 245 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 246 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 247 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 248 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 249 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 250 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 251 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 252 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 253 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 254 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 255 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 256 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 257 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 258 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 259 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 260 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 261 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 262 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 263 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 264 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 265 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 266 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 267 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 268 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 269 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 270 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 271 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 272 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 273 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 274 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 275 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 276 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 277 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 278 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 279 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 280 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 281 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 282 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 283 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 284 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 285 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 286 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 287 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 288 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 289 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 290 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 291 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 292 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 293 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 294 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 295 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 296 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 297 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 298 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 299 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 300 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 301 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 302 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 303 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 304 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 305 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 306 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 307 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 308 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 309 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 310 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 311 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 312 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 313 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 314 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 315 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 316 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 317 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 318 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 319 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 320 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 321 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 322 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 323 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 324 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 325 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 326 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 327 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 328 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 329 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 330 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 331 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 332 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 333 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 334 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 335 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 336 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 1 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 2 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 3 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 4 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 5 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 6 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 7 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 8 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 9 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 10 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 11 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 12 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 13 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 14 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 15 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 16 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 17 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 18 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 19 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 20 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 21 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 22 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 23 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 24 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 25 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 26 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 27 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 28 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 29 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 30 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 31 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 32 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 33 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 34 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 35 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 36 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 37 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 38 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 39 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 40 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 41 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 42 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 43 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 44 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 45 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 46 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 47 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 48 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 49 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 50 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 51 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 52 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 53 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 54 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 55 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 56 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 57 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 58 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 59 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 60 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 61 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 62 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 63 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 64 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 65 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 66 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 67 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 68 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 69 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 70 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 71 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 72 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 73 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 74 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 75 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 76 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 77 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 78 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 79 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 80 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 81 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 82 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 83 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 84 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 85 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 86 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 87 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 88 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 89 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 90 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 91 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 92 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 93 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 94 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 95 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 96 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 97 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 98 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 99 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 100 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 101 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 102 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 103 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 104 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 105 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 106 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 107 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 108 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 109 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 110 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 111 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 112 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 113 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 114 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 115 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 116 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 117 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 118 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 119 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 120 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 121 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 122 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 123 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 124 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 125 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 126 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 127 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 128 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 129 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 130 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 131 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 132 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 133 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 134 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 135 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 136 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 137 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 138 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 139 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 140 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 141 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 142 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 143 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 144 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 145 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 146 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 147 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 148 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 149 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 150 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 151 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 152 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 153 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 154 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 155 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 156 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 157 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 158 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 159 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 160 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 161 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 162 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 163 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 164 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 165 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 166 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 167 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 168 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 169 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 170 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 171 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 172 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 173 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 174 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 175 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 176 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 177 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 178 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 179 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 180 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 181 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 182 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 183 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 184 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 185 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 186 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 187 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 188 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 189 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 190 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 191 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 192 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 193 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 194 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 195 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 196 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 197 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 198 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 199 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 200 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 201 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 202 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 203 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 204 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 205 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 206 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 207 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 208 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 209 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 210 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 211 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 212 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 213 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 214 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 215 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 216 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 217 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 218 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 219 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 220 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 221 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 222 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 223 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 224 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 225 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 226 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 227 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 228 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 229 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 230 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 231 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 232 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 233 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 234 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 235 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 236 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 237 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 238 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 239 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 240 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 241 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 242 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 243 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 244 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 245 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 246 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 247 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 248 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 249 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 250 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 251 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 252 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 253 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 254 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 255 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 256 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 257 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 258 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 259 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 260 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 261 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 262 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 263 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 264 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 265 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 266 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 267 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 268 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 269 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 270 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 271 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 272 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 273 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 274 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 275 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 276 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 277 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 278 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 279 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 280 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 281 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 282 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 283 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 284 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 285 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 286 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 287 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 288 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 289 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 290 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 291 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 292 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 293 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 294 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 295 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 296 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 297 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 298 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 299 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 300 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 301 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 302 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 303 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 304 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 305 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 306 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 307 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 308 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 309 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 310 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 311 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 312 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 313 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 314 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 315 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 316 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 317 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 318 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 319 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 320 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 321 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 322 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 323 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 324 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 325 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 326 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 327 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 328 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 329 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 330 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 331 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 332 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 333 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 334 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 335 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 336 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 1 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 2 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 3 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 4 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 5 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 6 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 7 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 8 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 9 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 10 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 11 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 12 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 13 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 14 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 15 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 16 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 17 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 18 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 19 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 20 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 21 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 22 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 23 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 24 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 25 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 26 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 27 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 28 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 29 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 30 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 31 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 32 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 33 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 34 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 35 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 36 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 37 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 38 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 39 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 40 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 41 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 42 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 43 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 44 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 45 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 46 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 47 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 48 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 49 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 50 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 51 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 52 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 53 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 54 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 55 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 56 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 57 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 58 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 59 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 60 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 61 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 62 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 63 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 64 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 65 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 66 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 67 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 68 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 69 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 70 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 71 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 72 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 73 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 74 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 75 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 76 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 77 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 78 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 79 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 80 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 81 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 82 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 83 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 84 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 85 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 86 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 87 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 88 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 89 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 90 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 91 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 92 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 93 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 94 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 95 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 96 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 97 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 98 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 99 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 100 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 101 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 102 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 103 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 104 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 105 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 106 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 107 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 108 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 109 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 110 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 111 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 112 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 113 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 114 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 115 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 116 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 117 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 118 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 119 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 120 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 121 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 122 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 123 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 124 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 125 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 126 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 127 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 128 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 129 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 130 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 131 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 132 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 133 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 134 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 135 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 136 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 137 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 138 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 139 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 140 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 141 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 142 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 143 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 144 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 145 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 146 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 147 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 148 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 149 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 150 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 151 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 152 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 153 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 154 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 155 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 156 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 157 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 158 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 159 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 160 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 161 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 162 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 163 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 164 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 165 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 166 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 167 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 168 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 169 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 170 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 171 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 172 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 173 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 174 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 175 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 176 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 177 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 178 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 179 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 180 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 181 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 182 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 183 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 184 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 185 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 186 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 187 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 188 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 189 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 190 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 191 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 192 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 193 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 194 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 195 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 196 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 197 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 198 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 199 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 200 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 201 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 202 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 203 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 204 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 205 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 206 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 207 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 208 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 209 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 210 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 211 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 212 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 213 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 214 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 215 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 216 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 217 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 218 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 219 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 220 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 221 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 222 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 223 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 224 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 225 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 226 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 227 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 228 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 229 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 230 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 231 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 232 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 233 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 234 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 235 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 236 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 237 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 238 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 239 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 240 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 241 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 242 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 243 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 244 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 245 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 246 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 247 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 248 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 249 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 250 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 251 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 252 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 253 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 254 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 255 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 256 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 257 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 258 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 259 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 260 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 261 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 262 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 263 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 264 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 265 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 266 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 267 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 268 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 269 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 270 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 271 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 272 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 273 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 274 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 275 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 276 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 277 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 278 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 279 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 280 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 281 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 282 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 283 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 284 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 285 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 286 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 287 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 288 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 289 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 290 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 291 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 292 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 293 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 294 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 295 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 296 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 297 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 298 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 299 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 300 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 301 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 302 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 303 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 304 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 305 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 306 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 307 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 308 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 309 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 310 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 311 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 312 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 313 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 314 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 315 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 316 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 317 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 318 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 319 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 320 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 321 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 322 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 323 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 324 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 325 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 326 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 327 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 328 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 329 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 330 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 331 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 332 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 333 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 334 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 335 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 336 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 1 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 2 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 3 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 4 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 5 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 6 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 7 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 8 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 9 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 10 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 11 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 12 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 13 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 14 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 15 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 16 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 17 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 18 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 19 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 20 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 21 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 22 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 23 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 24 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 25 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 26 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 27 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 28 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 29 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 30 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 31 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 32 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 33 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 34 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 35 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 36 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 37 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 38 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 39 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 40 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 41 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 42 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 43 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 44 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 45 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 46 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 47 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 48 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 49 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 50 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 51 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 52 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 53 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 54 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 55 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 56 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 57 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 58 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 59 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 60 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 61 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 62 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 63 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 64 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 65 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 66 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 67 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 68 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 69 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 70 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 71 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 72 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 73 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 74 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 75 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 76 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 77 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 78 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 79 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 80 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 81 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 82 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 83 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 84 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 85 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 86 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 87 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 88 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 89 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 90 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 91 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 92 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 93 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 94 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 95 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 96 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 97 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 98 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 99 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 100 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 101 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 102 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 103 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 104 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 105 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 106 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 107 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 108 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 109 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 110 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 111 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 112 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 113 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 114 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 115 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 116 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 117 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 118 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 119 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 120 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 121 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 122 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 123 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 124 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 125 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 126 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 127 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 128 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 129 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 130 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 131 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 132 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 133 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 134 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 135 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 136 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 137 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 138 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 139 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 140 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 141 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 142 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 143 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 144 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 145 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 146 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 147 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 148 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 149 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 150 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 151 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 152 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 153 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 154 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 155 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 156 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 157 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 158 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 159 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 160 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 161 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 162 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 163 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 164 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 165 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 166 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 167 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 168 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 169 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 170 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 171 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 172 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 173 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 174 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 175 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 176 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 177 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 178 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 179 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 180 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 181 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 182 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 183 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 184 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 185 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 186 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 187 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 188 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 189 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 190 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 191 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 192 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 193 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 194 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 195 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 196 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 197 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 198 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 199 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 200 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 201 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 202 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 203 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 204 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 205 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 206 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 207 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 208 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 209 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 210 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 211 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 212 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 213 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 214 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 215 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 216 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 217 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 218 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 219 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 220 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 221 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 222 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 223 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 224 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 225 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 226 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 227 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 228 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 229 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 230 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 231 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 232 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 233 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 234 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 235 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 236 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 237 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 238 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 239 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 240 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 241 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 242 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 243 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 244 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 245 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 246 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 247 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 248 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 249 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 250 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 251 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 252 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 253 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 254 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 255 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 256 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 257 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 258 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 259 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 260 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 261 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 262 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 263 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 264 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 265 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 266 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 267 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 268 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 269 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 270 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 271 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 272 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 273 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 274 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 275 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 276 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 277 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 278 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 279 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 280 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 281 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 282 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 283 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 284 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 285 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 286 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 287 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 288 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 289 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 290 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 291 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 292 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 293 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 294 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 295 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 296 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 297 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 298 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 299 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 300 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 301 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 302 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 303 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 304 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 305 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 306 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 307 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 308 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 309 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 310 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 311 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 312 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 313 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 314 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 315 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 316 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 317 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 318 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 319 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 320 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 321 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 322 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 323 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 324 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 325 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 326 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 327 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 328 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 329 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 330 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 331 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 332 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 333 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 334 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 335 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 2 336 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 1 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 2 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 3 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 4 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 5 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 6 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 7 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 8 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 9 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 10 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 11 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 12 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 13 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 14 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 15 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 16 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 17 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 18 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 19 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 20 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 21 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 22 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 23 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 24 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 25 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 26 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 27 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 28 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 29 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 30 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 31 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 32 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 33 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 34 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 35 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 36 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 37 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 38 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 39 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 40 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 41 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 42 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 43 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 44 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 45 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 46 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 47 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 48 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 49 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 50 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 51 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 52 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 53 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 54 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 55 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 56 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 57 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 58 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 59 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 60 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 61 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 62 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 63 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 64 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 65 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 66 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 67 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 68 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 69 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 70 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 71 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 72 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 73 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 74 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 75 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 76 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 77 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 78 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 79 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 80 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 81 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 82 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 83 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 84 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 85 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 86 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 87 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 88 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 89 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 90 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 91 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 92 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 93 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 94 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 95 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 96 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 97 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 98 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 99 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 100 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 101 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 102 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 103 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 104 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 105 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 106 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 107 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 108 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 109 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 110 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 111 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 112 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 113 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 114 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 115 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 116 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 117 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 118 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 119 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 120 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 121 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 122 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 123 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 124 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 125 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 126 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 127 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 128 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 129 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 130 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 131 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 132 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 133 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 134 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 135 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 136 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 137 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 138 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 139 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 140 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 141 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 142 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 143 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 144 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 145 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 146 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 147 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 148 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 149 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 150 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 151 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 152 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 153 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 154 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 155 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 156 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 157 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 158 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 159 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 160 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 161 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 162 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 163 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 164 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 165 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 166 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 167 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 168 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 169 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 170 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 171 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 172 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 173 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 174 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 175 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 176 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 177 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 178 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 179 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 180 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 181 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 182 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 183 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 184 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 185 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 186 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 187 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 188 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 189 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 190 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 191 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 192 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 193 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 194 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 195 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 196 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 197 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 198 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 199 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 200 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 201 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 202 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 203 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 204 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 205 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 206 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 207 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 208 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 209 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 210 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 211 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 212 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 213 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 214 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 215 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 216 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 217 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 218 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 219 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 220 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 221 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 222 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 223 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 224 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 225 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 226 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 227 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 228 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 229 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 230 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 231 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 232 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 233 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 234 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 235 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 236 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 237 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 238 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 239 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 240 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 241 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 242 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 243 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 244 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 245 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 246 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 247 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 248 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 249 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 250 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 251 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 252 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 253 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 254 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 255 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 256 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 257 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 258 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 259 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 260 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 261 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 262 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 263 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 264 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 265 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 266 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 267 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 268 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 269 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 270 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 271 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 272 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 273 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 274 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 275 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 276 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 277 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 278 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 279 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 280 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 281 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 282 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 283 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 284 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 285 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 286 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 287 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 288 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 289 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 290 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 291 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 292 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 293 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 294 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 295 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 296 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 297 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 298 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 299 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 300 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 301 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 302 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 303 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 304 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 305 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 306 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 307 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 308 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 309 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 310 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 311 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 312 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 313 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 314 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 315 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 316 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 317 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 318 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 319 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 320 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 321 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 322 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 323 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 324 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 325 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 326 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 327 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 328 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 329 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 330 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 331 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 332 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 333 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 334 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 335 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 2 336 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +link mcYear timeId FLOW LIN. UCAP LIN. LOOP FLOW FLOW QUAD. CONG. FEE (ALG.) CONG. FEE (ABS.) MARG. COST CONG. PROB + CONG. PROB - HURDLE COST +de - fr 1 1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 7 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 8 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 9 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 10 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 11 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 12 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 13 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 14 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 15 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 16 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 17 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 18 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 19 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 20 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 21 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 22 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 23 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 24 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 25 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 26 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 27 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 28 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 29 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 30 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 31 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 32 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 34 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 35 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 36 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 37 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 38 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 39 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 40 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 41 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 42 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 43 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 44 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 45 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 46 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 47 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 48 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 49 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 50 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 51 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 52 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 53 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 54 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 55 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 56 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 57 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 58 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 59 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 60 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 61 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 62 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 63 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 64 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 65 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 66 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 68 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 69 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 70 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 71 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 72 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 73 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 74 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 75 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 76 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 77 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 78 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 79 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 80 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 81 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 82 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 83 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 84 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 85 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 86 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 87 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 88 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 89 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 90 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 91 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 92 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 93 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 94 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 95 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 96 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 97 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 99 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 100 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 101 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 102 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 103 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 104 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 105 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 106 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 107 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 108 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 109 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 110 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 111 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 112 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 113 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 114 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 115 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 116 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 117 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 118 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 119 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 120 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 121 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 122 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 123 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 124 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 125 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 126 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 127 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 128 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 129 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 130 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 131 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 132 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 133 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 134 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 135 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 136 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 137 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 138 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 139 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 140 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 141 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 142 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 143 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 144 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 145 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 146 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 147 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 148 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 149 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 150 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 151 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 152 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 153 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 154 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 155 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 156 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 157 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 158 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 159 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 160 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 161 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 162 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 163 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 164 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 165 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 166 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 167 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 168 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 169 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 170 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 171 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 172 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 173 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 174 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 175 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 176 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 177 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 178 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 179 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 180 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 181 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 182 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 183 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 184 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 185 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 186 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 187 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 188 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 189 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 190 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 191 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 192 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 193 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 194 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 195 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 196 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 197 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 198 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 199 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 200 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 201 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 202 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 203 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 204 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 205 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 206 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 207 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 208 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 209 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 210 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 211 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 212 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 213 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 214 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 215 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 216 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 217 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 218 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 219 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 220 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 221 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 222 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 223 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 224 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 225 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 226 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 227 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 228 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 229 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 230 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 231 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 232 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 233 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 234 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 235 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 236 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 237 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 238 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 239 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 240 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 241 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 242 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 243 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 244 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 245 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 246 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 247 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 248 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 249 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 250 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 251 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 252 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 253 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 254 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 255 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 256 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 257 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 258 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 259 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 260 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 261 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 262 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 263 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 264 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 265 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 266 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 267 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 268 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 269 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 270 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 271 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 272 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 273 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 274 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 275 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 276 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 277 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 278 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 279 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 280 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 281 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 282 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 283 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 284 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 285 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 286 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 287 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 288 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 289 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 290 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 291 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 292 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 293 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 294 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 295 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 296 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 297 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 298 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 299 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 300 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 301 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 302 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 303 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 304 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 305 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 306 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 307 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 308 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 309 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 310 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 311 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 312 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 313 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 314 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 315 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 316 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 317 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 318 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 319 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 320 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 321 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 322 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 323 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 324 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 325 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 326 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 327 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 328 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 329 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 330 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 331 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 332 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 333 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 334 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 335 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 336 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 7 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 8 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 9 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 10 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 11 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 12 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 13 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 14 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 15 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 16 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 17 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 18 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 19 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 20 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 21 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 22 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 23 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 24 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 25 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 26 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 27 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 28 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 29 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 30 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 31 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 32 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 34 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 35 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 36 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 37 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 38 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 39 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 40 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 41 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 42 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 43 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 44 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 45 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 46 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 47 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 48 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 49 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 50 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 51 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 52 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 53 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 54 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 55 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 56 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 57 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 58 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 59 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 60 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 61 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 62 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 63 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 64 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 65 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 66 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 68 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 69 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 70 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 71 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 72 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 73 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 74 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 75 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 76 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 77 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 78 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 79 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 80 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 81 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 82 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 83 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 84 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 85 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 86 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 87 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 88 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 89 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 90 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 91 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 92 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 93 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 94 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 95 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 96 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 97 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 99 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 100 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 101 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 102 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 103 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 104 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 105 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 106 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 107 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 108 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 109 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 110 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 111 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 112 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 113 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 114 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 115 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 116 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 117 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 118 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 119 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 120 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 121 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 122 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 123 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 124 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 125 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 126 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 127 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 128 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 129 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 130 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 131 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 132 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 133 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 134 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 135 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 136 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 137 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 138 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 139 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 140 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 141 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 142 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 143 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 144 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 145 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 146 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 147 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 148 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 149 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 150 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 151 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 152 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 153 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 154 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 155 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 156 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 157 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 158 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 159 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 160 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 161 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 162 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 163 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 164 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 165 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 166 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 167 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 168 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 169 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 170 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 171 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 172 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 173 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 174 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 175 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 176 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 177 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 178 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 179 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 180 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 181 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 182 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 183 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 184 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 185 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 186 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 187 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 188 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 189 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 190 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 191 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 192 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 193 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 194 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 195 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 196 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 197 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 198 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 199 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 200 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 201 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 202 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 203 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 204 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 205 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 206 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 207 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 208 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 209 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 210 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 211 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 212 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 213 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 214 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 215 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 216 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 217 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 218 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 219 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 220 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 221 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 222 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 223 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 224 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 225 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 226 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 227 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 228 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 229 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 230 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 231 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 232 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 233 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 234 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 235 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 236 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 237 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 238 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 239 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 240 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 241 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 242 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 243 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 244 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 245 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 246 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 247 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 248 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 249 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 250 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 251 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 252 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 253 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 254 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 255 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 256 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 257 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 258 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 259 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 260 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 261 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 262 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 263 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 264 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 265 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 266 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 267 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 268 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 269 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 270 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 271 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 272 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 273 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 274 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 275 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 276 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 277 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 278 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 279 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 280 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 281 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 282 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 283 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 284 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 285 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 286 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 287 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 288 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 289 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 290 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 291 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 292 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 293 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 294 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 295 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 296 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 297 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 298 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 299 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 300 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 301 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 302 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 303 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 304 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 305 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 306 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 307 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 308 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 309 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 310 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 311 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 312 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 313 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 314 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 315 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 316 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 317 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 318 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 319 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 320 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 321 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 322 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 323 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 324 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 325 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 326 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 327 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 328 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 329 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 330 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 331 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 332 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 333 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 334 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 335 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 336 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 7 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 8 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 9 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 10 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 11 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 12 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 13 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 14 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 15 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 16 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 17 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 18 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 19 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 20 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 21 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 22 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 23 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 24 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 25 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 26 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 27 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 28 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 29 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 30 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 31 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 32 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 34 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 35 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 36 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 37 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 38 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 39 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 40 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 41 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 42 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 43 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 44 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 45 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 46 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 47 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 48 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 49 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 50 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 51 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 52 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 53 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 54 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 55 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 56 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 57 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 58 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 59 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 60 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 61 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 62 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 63 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 64 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 65 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 66 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 68 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 69 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 70 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 71 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 72 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 73 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 74 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 75 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 76 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 77 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 78 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 79 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 80 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 81 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 82 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 83 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 84 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 85 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 86 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 87 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 88 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 89 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 90 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 91 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 92 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 93 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 94 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 95 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 96 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 97 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 99 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 100 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 101 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 102 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 103 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 104 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 105 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 106 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 107 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 108 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 109 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 110 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 111 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 112 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 113 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 114 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 115 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 116 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 117 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 118 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 119 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 120 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 121 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 122 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 123 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 124 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 125 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 126 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 127 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 128 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 129 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 130 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 131 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 132 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 133 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 134 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 135 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 136 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 137 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 138 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 139 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 140 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 141 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 142 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 143 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 144 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 145 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 146 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 147 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 148 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 149 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 150 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 151 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 152 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 153 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 154 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 155 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 156 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 157 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 158 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 159 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 160 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 161 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 162 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 163 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 164 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 165 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 166 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 167 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 168 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 169 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 170 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 171 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 172 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 173 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 174 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 175 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 176 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 177 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 178 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 179 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 180 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 181 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 182 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 183 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 184 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 185 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 186 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 187 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 188 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 189 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 190 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 191 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 192 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 193 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 194 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 195 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 196 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 197 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 198 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 199 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 200 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 201 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 202 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 203 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 204 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 205 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 206 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 207 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 208 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 209 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 210 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 211 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 212 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 213 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 214 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 215 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 216 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 217 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 218 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 219 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 220 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 221 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 222 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 223 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 224 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 225 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 226 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 227 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 228 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 229 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 230 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 231 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 232 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 233 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 234 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 235 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 236 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 237 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 238 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 239 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 240 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 241 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 242 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 243 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 244 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 245 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 246 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 247 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 248 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 249 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 250 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 251 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 252 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 253 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 254 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 255 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 256 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 257 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 258 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 259 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 260 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 261 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 262 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 263 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 264 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 265 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 266 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 267 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 268 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 269 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 270 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 271 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 272 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 273 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 274 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 275 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 276 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 277 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 278 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 279 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 280 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 281 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 282 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 283 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 284 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 285 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 286 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 287 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 288 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 289 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 290 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 291 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 292 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 293 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 294 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 295 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 296 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 297 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 298 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 299 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 300 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 301 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 302 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 303 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 304 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 305 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 306 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 307 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 308 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 309 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 310 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 311 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 312 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 313 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 314 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 315 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 316 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 317 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 318 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 319 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 320 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 321 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 322 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 323 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 324 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 325 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 326 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 327 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 328 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 329 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 330 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 331 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 332 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 333 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 334 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 335 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 336 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 7 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 8 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 9 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 10 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 11 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 12 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 13 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 14 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 15 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 16 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 17 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 18 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 19 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 20 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 21 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 22 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 23 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 24 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 25 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 26 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 27 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 28 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 29 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 30 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 31 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 32 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 34 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 35 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 36 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 37 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 38 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 39 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 40 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 41 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 42 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 43 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 44 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 45 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 46 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 47 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 48 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 49 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 50 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 51 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 52 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 53 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 54 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 55 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 56 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 57 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 58 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 59 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 60 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 61 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 62 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 63 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 64 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 65 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 66 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 68 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 69 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 70 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 71 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 72 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 73 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 74 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 75 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 76 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 77 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 78 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 79 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 80 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 81 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 82 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 83 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 84 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 85 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 86 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 87 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 88 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 89 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 90 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 91 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 92 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 93 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 94 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 95 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 96 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 97 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 99 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 100 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 101 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 102 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 103 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 104 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 105 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 106 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 107 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 108 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 109 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 110 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 111 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 112 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 113 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 114 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 115 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 116 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 117 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 118 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 119 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 120 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 121 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 122 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 123 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 124 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 125 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 126 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 127 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 128 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 129 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 130 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 131 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 132 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 133 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 134 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 135 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 136 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 137 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 138 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 139 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 140 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 141 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 142 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 143 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 144 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 145 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 146 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 147 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 148 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 149 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 150 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 151 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 152 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 153 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 154 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 155 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 156 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 157 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 158 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 159 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 160 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 161 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 162 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 163 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 164 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 165 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 166 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 167 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 168 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 169 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 170 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 171 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 172 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 173 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 174 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 175 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 176 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 177 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 178 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 179 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 180 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 181 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 182 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 183 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 184 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 185 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 186 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 187 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 188 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 189 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 190 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 191 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 192 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 193 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 194 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 195 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 196 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 197 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 198 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 199 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 200 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 201 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 202 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 203 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 204 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 205 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 206 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 207 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 208 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 209 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 210 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 211 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 212 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 213 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 214 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 215 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 216 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 217 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 218 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 219 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 220 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 221 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 222 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 223 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 224 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 225 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 226 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 227 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 228 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 229 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 230 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 231 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 232 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 233 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 234 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 235 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 236 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 237 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 238 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 239 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 240 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 241 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 242 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 243 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 244 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 245 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 246 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 247 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 248 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 249 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 250 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 251 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 252 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 253 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 254 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 255 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 256 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 257 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 258 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 259 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 260 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 261 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 262 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 263 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 264 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 265 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 266 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 267 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 268 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 269 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 270 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 271 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 272 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 273 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 274 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 275 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 276 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 277 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 278 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 279 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 280 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 281 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 282 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 283 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 284 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 285 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 286 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 287 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 288 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 289 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 290 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 291 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 292 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 293 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 294 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 295 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 296 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 297 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 298 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 299 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 300 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 301 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 302 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 303 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 304 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 305 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 306 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 307 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 308 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 309 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 310 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 311 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 312 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 313 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 314 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 315 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 316 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 317 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 318 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 319 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 320 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 321 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 322 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 323 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 324 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 325 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 326 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 327 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 328 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 329 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 330 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 331 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 332 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 333 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 334 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 335 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 336 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 7 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 8 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 9 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 10 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 11 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 12 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 13 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 14 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 15 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 16 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 17 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 18 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 19 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 20 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 21 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 22 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 23 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 24 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 25 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 26 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 27 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 28 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 29 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 30 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 31 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 32 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 34 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 35 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 36 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 37 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 38 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 39 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 40 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 41 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 42 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 43 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 44 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 45 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 46 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 47 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 48 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 49 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 50 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 51 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 52 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 53 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 54 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 55 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 56 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 57 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 58 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 59 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 60 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 61 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 62 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 63 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 64 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 65 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 66 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 68 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 69 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 70 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 71 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 72 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 73 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 74 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 75 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 76 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 77 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 78 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 79 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 80 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 81 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 82 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 83 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 84 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 85 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 86 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 87 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 88 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 89 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 90 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 91 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 92 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 93 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 94 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 95 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 96 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 97 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 99 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 100 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 101 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 102 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 103 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 104 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 105 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 106 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 107 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 108 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 109 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 110 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 111 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 112 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 113 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 114 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 115 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 116 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 117 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 118 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 119 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 120 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 121 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 122 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 123 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 124 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 125 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 126 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 127 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 128 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 129 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 130 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 131 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 132 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 133 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 134 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 135 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 136 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 137 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 138 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 139 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 140 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 141 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 142 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 143 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 144 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 145 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 146 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 147 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 148 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 149 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 150 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 151 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 152 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 153 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 154 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 155 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 156 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 157 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 158 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 159 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 160 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 161 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 162 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 163 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 164 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 165 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 166 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 167 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 168 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 169 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 170 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 171 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 172 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 173 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 174 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 175 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 176 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 177 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 178 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 179 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 180 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 181 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 182 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 183 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 184 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 185 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 186 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 187 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 188 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 189 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 190 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 191 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 192 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 193 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 194 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 195 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 196 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 197 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 198 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 199 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 200 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 201 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 202 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 203 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 204 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 205 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 206 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 207 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 208 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 209 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 210 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 211 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 212 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 213 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 214 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 215 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 216 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 217 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 218 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 219 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 220 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 221 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 222 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 223 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 224 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 225 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 226 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 227 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 228 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 229 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 230 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 231 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 232 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 233 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 234 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 235 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 236 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 237 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 238 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 239 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 240 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 241 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 242 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 243 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 244 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 245 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 246 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 247 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 248 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 249 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 250 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 251 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 252 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 253 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 254 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 255 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 256 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 257 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 258 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 259 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 260 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 261 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 262 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 263 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 264 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 265 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 266 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 267 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 268 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 269 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 270 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 271 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 272 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 273 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 274 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 275 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 276 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 277 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 278 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 279 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 280 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 281 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 282 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 283 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 284 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 285 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 286 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 287 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 288 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 289 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 290 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 291 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 292 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 293 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 294 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 295 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 296 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 297 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 298 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 299 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 300 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 301 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 302 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 303 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 304 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 305 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 306 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 307 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 308 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 309 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 310 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 311 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 312 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 313 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 314 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 315 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 316 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 317 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 318 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 319 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 320 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 321 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 322 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 323 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 324 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 325 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 326 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 327 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 328 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 329 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 330 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 331 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 332 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 333 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 334 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 335 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 2 336 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 7 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 8 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 9 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 10 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 11 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 12 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 13 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 14 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 15 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 16 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 17 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 18 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 19 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 20 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 21 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 22 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 23 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 24 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 25 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 26 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 27 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 28 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 29 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 30 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 31 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 32 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 34 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 35 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 36 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 37 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 38 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 39 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 40 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 41 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 42 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 43 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 44 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 45 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 46 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 47 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 48 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 49 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 50 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 51 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 52 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 53 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 54 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 55 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 56 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 57 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 58 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 59 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 60 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 61 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 62 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 63 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 64 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 65 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 66 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 68 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 69 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 70 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 71 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 72 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 73 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 74 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 75 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 76 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 77 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 78 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 79 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 80 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 81 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 82 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 83 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 84 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 85 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 86 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 87 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 88 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 89 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 90 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 91 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 92 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 93 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 94 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 95 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 96 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 97 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 99 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 100 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 101 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 102 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 103 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 104 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 105 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 106 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 107 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 108 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 109 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 110 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 111 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 112 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 113 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 114 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 115 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 116 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 117 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 118 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 119 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 120 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 121 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 122 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 123 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 124 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 125 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 126 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 127 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 128 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 129 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 130 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 131 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 132 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 133 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 134 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 135 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 136 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 137 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 138 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 139 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 140 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 141 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 142 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 143 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 144 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 145 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 146 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 147 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 148 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 149 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 150 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 151 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 152 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 153 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 154 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 155 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 156 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 157 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 158 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 159 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 160 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 161 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 162 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 163 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 164 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 165 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 166 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 167 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 168 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 169 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 170 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 171 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 172 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 173 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 174 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 175 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 176 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 177 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 178 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 179 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 180 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 181 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 182 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 183 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 184 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 185 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 186 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 187 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 188 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 189 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 190 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 191 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 192 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 193 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 194 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 195 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 196 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 197 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 198 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 199 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 200 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 201 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 202 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 203 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 204 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 205 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 206 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 207 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 208 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 209 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 210 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 211 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 212 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 213 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 214 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 215 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 216 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 217 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 218 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 219 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 220 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 221 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 222 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 223 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 224 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 225 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 226 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 227 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 228 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 229 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 230 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 231 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 232 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 233 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 234 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 235 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 236 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 237 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 238 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 239 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 240 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 241 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 242 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 243 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 244 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 245 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 246 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 247 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 248 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 249 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 250 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 251 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 252 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 253 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 254 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 255 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 256 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 257 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 258 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 259 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 260 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 261 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 262 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 263 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 264 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 265 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 266 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 267 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 268 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 269 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 270 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 271 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 272 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 273 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 274 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 275 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 276 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 277 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 278 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 279 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 280 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 281 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 282 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 283 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 284 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 285 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 286 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 287 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 288 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 289 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 290 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 291 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 292 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 293 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 294 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 295 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 296 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 297 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 298 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 299 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 300 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 301 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 302 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 303 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 304 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 305 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 306 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 307 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 308 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 309 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 310 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 311 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 312 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 313 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 314 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 315 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 316 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 317 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 318 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 319 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 320 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 321 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 322 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 323 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 324 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 325 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 326 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 327 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 328 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 329 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 330 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 331 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 332 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 333 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 334 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 335 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 2 336 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 diff --git a/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-02-all.result.tsv b/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-02-all.result.tsv index c57daa2450..b5a56dfbd1 100644 --- a/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-02-all.result.tsv +++ b/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-02-all.result.tsv @@ -1,13 +1,13 @@ -link timeId time FLOW LIN. EXP FLOW LIN. STD FLOW LIN. MIN FLOW LIN. MAX UCAP LIN. EXP UCAP LIN. STD UCAP LIN. MIN UCAP LIN. MAX LOOP FLOW VALUES FLOW QUAD. VALUES CONG. FEE (ALG.) EXP CONG. FEE (ALG.) STD CONG. FEE (ALG.) MIN CONG. FEE (ALG.) MAX CONG. FEE (ABS.) EXP CONG. FEE (ABS.) STD CONG. FEE (ABS.) MIN CONG. FEE (ABS.) MAX MARG. COST EXP MARG. COST STD MARG. COST MIN MARG. COST MAX CONG. PROB + VALUES CONG. PROB - VALUES HURDLE COST EXP HURDLE COST STD HURDLE COST MIN HURDLE COST MAX -de - fr 1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 7 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 8 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 9 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 10 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 11 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 12 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +link timeId FLOW LIN. EXP FLOW LIN. STD FLOW LIN. MIN FLOW LIN. MAX UCAP LIN. EXP UCAP LIN. STD UCAP LIN. MIN UCAP LIN. MAX LOOP FLOW VALUES FLOW QUAD. VALUES CONG. FEE (ALG.) EXP CONG. FEE (ALG.) STD CONG. FEE (ALG.) MIN CONG. FEE (ALG.) MAX CONG. FEE (ABS.) EXP CONG. FEE (ABS.) STD CONG. FEE (ABS.) MIN CONG. FEE (ABS.) MAX MARG. COST EXP MARG. COST STD MARG. COST MIN MARG. COST MAX CONG. PROB + VALUES CONG. PROB - VALUES HURDLE COST EXP HURDLE COST STD HURDLE COST MIN HURDLE COST MAX +de - fr 1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 7 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 8 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 9 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 10 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 11 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 12 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 diff --git a/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-02.result.tsv b/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-02.result.tsv index c78d50d144..990116f0fc 100644 --- a/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-02.result.tsv +++ b/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-02.result.tsv @@ -1,1009 +1,1009 @@ -link mcYear timeId time FLOW LIN. UCAP LIN. LOOP FLOW FLOW QUAD. CONG. FEE (ALG.) CONG. FEE (ABS.) MARG. COST CONG. PROB + CONG. PROB - HURDLE COST -de - fr 1 1 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 2 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 3 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 4 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 5 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 6 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 7 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 8 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 9 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 10 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 11 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 12 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 13 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 14 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 15 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 16 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 17 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 18 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 19 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 20 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 21 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 22 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 23 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 24 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 25 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 26 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 27 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 28 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 29 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 30 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 31 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 32 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 33 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 34 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 35 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 36 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 37 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 38 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 39 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 40 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 41 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 42 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 43 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 44 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 45 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 46 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 47 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 48 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 49 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 50 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 51 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 52 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 53 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 54 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 55 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 56 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 57 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 58 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 59 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 60 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 61 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 62 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 63 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 64 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 65 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 66 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 67 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 68 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 69 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 70 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 71 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 72 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 73 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 74 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 75 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 76 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 77 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 78 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 79 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 80 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 81 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 82 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 83 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 84 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 85 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 86 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 87 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 88 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 89 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 90 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 91 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 92 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 93 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 94 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 95 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 96 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 97 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 98 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 99 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 100 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 101 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 102 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 103 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 104 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 105 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 106 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 107 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 108 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 109 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 110 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 111 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 112 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 113 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 114 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 115 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 116 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 117 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 118 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 119 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 120 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 121 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 122 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 123 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 124 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 125 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 126 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 127 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 128 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 129 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 130 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 131 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 132 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 133 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 134 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 135 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 136 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 137 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 138 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 139 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 140 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 141 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 142 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 143 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 144 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 145 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 146 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 147 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 148 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 149 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 150 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 151 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 152 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 153 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 154 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 155 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 156 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 157 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 158 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 159 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 160 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 161 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 162 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 163 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 164 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 165 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 166 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 167 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 168 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 169 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 170 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 171 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 172 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 173 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 174 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 175 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 176 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 177 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 178 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 179 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 180 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 181 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 182 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 183 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 184 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 185 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 186 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 187 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 188 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 189 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 190 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 191 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 192 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 193 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 194 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 195 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 196 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 197 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 198 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 199 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 200 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 201 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 202 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 203 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 204 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 205 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 206 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 207 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 208 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 209 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 210 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 211 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 212 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 213 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 214 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 215 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 216 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 217 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 218 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 219 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 220 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 221 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 222 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 223 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 224 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 225 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 226 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 227 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 228 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 229 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 230 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 231 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 232 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 233 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 234 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 235 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 236 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 237 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 238 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 239 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 240 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 241 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 242 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 243 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 244 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 245 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 246 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 247 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 248 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 249 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 250 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 251 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 252 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 253 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 254 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 255 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 256 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 257 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 258 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 259 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 260 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 261 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 262 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 263 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 264 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 265 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 266 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 267 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 268 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 269 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 270 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 271 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 272 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 273 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 274 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 275 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 276 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 277 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 278 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 279 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 280 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 281 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 282 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 283 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 284 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 285 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 286 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 287 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 288 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 289 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 290 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 291 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 292 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 293 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 294 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 295 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 296 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 297 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 298 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 299 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 300 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 301 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 302 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 303 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 304 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 305 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 306 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 307 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 308 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 309 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 310 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 311 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 312 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 313 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 314 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 315 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 316 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 317 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 318 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 319 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 320 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 321 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 322 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 323 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 324 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 325 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 326 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 327 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 328 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 329 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 330 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 331 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 332 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 333 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 334 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 335 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 336 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 1 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 2 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 3 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 4 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 5 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 6 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 7 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 8 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 9 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 10 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 11 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 12 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 13 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 14 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 15 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 16 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 17 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 18 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 19 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 20 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 21 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 22 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 23 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 24 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 25 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 26 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 27 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 28 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 29 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 30 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 31 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 32 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 33 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 34 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 35 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 36 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 37 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 38 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 39 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 40 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 41 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 42 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 43 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 44 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 45 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 46 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 47 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 48 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 49 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 50 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 51 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 52 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 53 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 54 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 55 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 56 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 57 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 58 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 59 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 60 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 61 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 62 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 63 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 64 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 65 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 66 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 67 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 68 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 69 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 70 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 71 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 72 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 73 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 74 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 75 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 76 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 77 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 78 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 79 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 80 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 81 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 82 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 83 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 84 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 85 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 86 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 87 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 88 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 89 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 90 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 91 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 92 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 93 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 94 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 95 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 96 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 97 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 98 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 99 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 100 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 101 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 102 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 103 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 104 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 105 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 106 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 107 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 108 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 109 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 110 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 111 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 112 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 113 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 114 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 115 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 116 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 117 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 118 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 119 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 120 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 121 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 122 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 123 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 124 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 125 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 126 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 127 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 128 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 129 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 130 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 131 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 132 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 133 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 134 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 135 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 136 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 137 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 138 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 139 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 140 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 141 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 142 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 143 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 144 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 145 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 146 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 147 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 148 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 149 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 150 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 151 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 152 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 153 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 154 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 155 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 156 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 157 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 158 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 159 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 160 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 161 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 162 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 163 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 164 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 165 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 166 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 167 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 168 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 169 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 170 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 171 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 172 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 173 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 174 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 175 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 176 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 177 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 178 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 179 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 180 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 181 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 182 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 183 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 184 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 185 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 186 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 187 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 188 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 189 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 190 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 191 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 192 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 193 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 194 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 195 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 196 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 197 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 198 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 199 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 200 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 201 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 202 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 203 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 204 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 205 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 206 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 207 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 208 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 209 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 210 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 211 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 212 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 213 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 214 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 215 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 216 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 217 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 218 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 219 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 220 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 221 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 222 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 223 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 224 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 225 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 226 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 227 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 228 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 229 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 230 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 231 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 232 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 233 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 234 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 235 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 236 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 237 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 238 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 239 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 240 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 241 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 242 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 243 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 244 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 245 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 246 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 247 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 248 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 249 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 250 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 251 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 252 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 253 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 254 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 255 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 256 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 257 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 258 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 259 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 260 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 261 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 262 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 263 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 264 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 265 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 266 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 267 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 268 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 269 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 270 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 271 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 272 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 273 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 274 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 275 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 276 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 277 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 278 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 279 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 280 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 281 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 282 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 283 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 284 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 285 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 286 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 287 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 288 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 289 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 290 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 291 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 292 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 293 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 294 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 295 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 296 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 297 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 298 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 299 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 300 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 301 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 302 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 303 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 304 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 305 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 306 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 307 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 308 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 309 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 310 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 311 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 312 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 313 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 314 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 315 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 316 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 317 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 318 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 319 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 320 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 321 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 322 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 323 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 324 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 325 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 326 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 327 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 328 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 329 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 330 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 331 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 332 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 333 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 334 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 335 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -es - fr 1 336 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 1 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 2 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 3 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 4 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 5 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 6 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 7 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 8 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 9 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 10 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 11 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 12 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 13 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 14 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 15 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 16 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 17 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 18 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 19 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 20 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 21 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 22 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 23 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 24 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 25 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 26 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 27 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 28 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 29 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 30 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 31 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 32 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 33 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 34 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 35 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 36 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 37 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 38 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 39 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 40 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 41 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 42 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 43 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 44 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 45 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 46 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 47 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 48 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 49 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 50 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 51 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 52 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 53 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 54 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 55 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 56 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 57 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 58 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 59 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 60 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 61 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 62 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 63 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 64 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 65 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 66 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 67 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 68 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 69 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 70 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 71 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 72 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 73 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 74 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 75 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 76 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 77 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 78 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 79 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 80 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 81 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 82 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 83 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 84 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 85 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 86 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 87 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 88 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 89 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 90 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 91 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 92 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 93 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 94 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 95 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 96 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 97 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 98 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 99 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 100 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 101 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 102 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 103 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 104 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 105 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 106 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 107 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 108 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 109 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 110 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 111 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 112 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 113 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 114 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 115 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 116 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 117 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 118 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 119 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 120 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 121 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 122 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 123 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 124 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 125 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 126 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 127 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 128 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 129 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 130 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 131 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 132 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 133 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 134 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 135 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 136 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 137 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 138 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 139 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 140 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 141 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 142 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 143 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 144 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 145 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 146 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 147 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 148 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 149 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 150 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 151 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 152 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 153 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 154 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 155 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 156 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 157 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 158 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 159 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 160 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 161 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 162 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 163 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 164 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 165 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 166 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 167 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 168 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 169 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 170 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 171 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 172 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 173 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 174 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 175 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 176 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 177 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 178 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 179 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 180 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 181 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 182 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 183 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 184 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 185 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 186 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 187 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 188 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 189 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 190 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 191 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 192 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 193 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 194 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 195 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 196 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 197 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 198 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 199 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 200 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 201 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 202 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 203 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 204 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 205 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 206 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 207 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 208 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 209 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 210 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 211 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 212 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 213 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 214 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 215 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 216 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 217 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 218 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 219 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 220 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 221 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 222 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 223 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 224 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 225 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 226 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 227 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 228 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 229 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 230 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 231 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 232 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 233 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 234 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 235 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 236 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 237 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 238 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 239 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 240 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 241 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 242 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 243 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 244 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 245 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 246 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 247 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 248 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 249 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 250 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 251 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 252 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 253 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 254 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 255 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 256 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 257 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 258 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 259 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 260 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 261 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 262 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 263 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 264 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 265 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 266 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 267 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 268 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 269 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 270 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 271 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 272 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 273 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 274 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 275 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 276 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 277 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 278 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 279 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 280 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 281 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 282 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 283 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 284 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 285 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 286 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 287 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 288 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 289 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 290 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 291 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 292 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 293 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 294 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 295 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 296 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 297 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 298 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 299 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 300 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 301 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 302 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 303 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 304 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 305 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 306 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 307 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 308 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 309 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 310 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 311 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 312 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 313 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 314 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 315 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 316 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 317 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 318 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 319 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 320 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 321 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 322 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 323 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 324 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 325 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 326 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 327 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 328 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 329 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 330 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 331 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 332 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 333 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 334 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 335 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -fr - it 1 336 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +link mcYear timeId FLOW LIN. UCAP LIN. LOOP FLOW FLOW QUAD. CONG. FEE (ALG.) CONG. FEE (ABS.) MARG. COST CONG. PROB + CONG. PROB - HURDLE COST +de - fr 1 1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 7 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 8 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 9 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 10 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 11 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 12 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 13 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 14 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 15 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 16 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 17 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 18 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 19 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 20 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 21 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 22 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 23 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 24 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 25 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 26 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 27 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 28 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 29 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 30 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 31 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 32 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 34 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 35 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 36 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 37 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 38 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 39 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 40 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 41 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 42 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 43 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 44 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 45 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 46 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 47 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 48 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 49 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 50 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 51 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 52 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 53 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 54 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 55 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 56 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 57 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 58 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 59 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 60 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 61 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 62 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 63 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 64 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 65 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 66 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 68 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 69 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 70 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 71 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 72 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 73 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 74 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 75 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 76 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 77 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 78 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 79 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 80 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 81 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 82 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 83 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 84 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 85 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 86 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 87 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 88 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 89 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 90 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 91 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 92 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 93 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 94 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 95 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 96 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 97 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 99 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 100 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 101 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 102 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 103 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 104 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 105 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 106 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 107 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 108 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 109 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 110 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 111 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 112 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 113 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 114 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 115 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 116 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 117 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 118 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 119 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 120 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 121 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 122 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 123 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 124 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 125 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 126 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 127 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 128 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 129 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 130 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 131 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 132 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 133 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 134 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 135 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 136 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 137 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 138 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 139 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 140 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 141 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 142 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 143 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 144 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 145 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 146 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 147 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 148 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 149 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 150 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 151 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 152 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 153 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 154 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 155 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 156 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 157 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 158 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 159 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 160 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 161 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 162 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 163 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 164 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 165 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 166 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 167 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 168 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 169 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 170 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 171 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 172 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 173 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 174 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 175 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 176 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 177 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 178 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 179 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 180 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 181 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 182 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 183 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 184 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 185 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 186 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 187 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 188 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 189 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 190 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 191 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 192 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 193 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 194 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 195 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 196 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 197 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 198 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 199 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 200 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 201 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 202 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 203 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 204 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 205 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 206 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 207 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 208 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 209 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 210 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 211 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 212 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 213 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 214 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 215 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 216 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 217 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 218 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 219 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 220 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 221 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 222 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 223 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 224 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 225 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 226 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 227 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 228 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 229 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 230 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 231 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 232 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 233 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 234 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 235 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 236 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 237 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 238 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 239 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 240 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 241 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 242 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 243 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 244 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 245 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 246 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 247 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 248 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 249 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 250 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 251 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 252 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 253 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 254 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 255 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 256 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 257 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 258 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 259 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 260 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 261 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 262 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 263 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 264 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 265 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 266 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 267 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 268 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 269 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 270 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 271 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 272 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 273 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 274 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 275 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 276 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 277 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 278 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 279 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 280 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 281 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 282 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 283 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 284 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 285 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 286 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 287 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 288 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 289 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 290 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 291 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 292 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 293 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 294 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 295 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 296 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 297 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 298 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 299 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 300 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 301 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 302 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 303 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 304 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 305 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 306 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 307 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 308 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 309 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 310 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 311 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 312 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 313 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 314 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 315 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 316 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 317 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 318 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 319 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 320 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 321 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 322 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 323 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 324 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 325 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 326 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 327 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 328 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 329 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 330 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 331 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 332 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 333 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 334 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 335 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 336 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 7 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 8 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 9 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 10 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 11 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 12 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 13 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 14 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 15 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 16 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 17 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 18 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 19 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 20 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 21 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 22 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 23 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 24 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 25 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 26 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 27 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 28 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 29 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 30 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 31 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 32 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 34 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 35 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 36 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 37 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 38 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 39 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 40 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 41 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 42 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 43 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 44 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 45 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 46 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 47 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 48 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 49 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 50 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 51 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 52 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 53 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 54 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 55 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 56 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 57 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 58 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 59 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 60 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 61 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 62 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 63 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 64 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 65 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 66 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 68 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 69 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 70 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 71 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 72 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 73 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 74 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 75 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 76 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 77 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 78 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 79 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 80 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 81 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 82 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 83 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 84 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 85 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 86 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 87 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 88 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 89 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 90 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 91 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 92 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 93 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 94 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 95 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 96 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 97 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 99 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 100 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 101 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 102 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 103 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 104 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 105 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 106 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 107 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 108 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 109 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 110 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 111 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 112 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 113 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 114 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 115 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 116 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 117 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 118 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 119 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 120 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 121 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 122 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 123 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 124 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 125 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 126 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 127 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 128 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 129 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 130 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 131 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 132 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 133 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 134 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 135 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 136 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 137 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 138 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 139 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 140 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 141 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 142 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 143 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 144 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 145 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 146 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 147 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 148 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 149 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 150 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 151 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 152 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 153 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 154 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 155 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 156 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 157 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 158 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 159 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 160 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 161 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 162 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 163 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 164 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 165 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 166 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 167 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 168 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 169 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 170 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 171 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 172 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 173 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 174 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 175 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 176 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 177 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 178 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 179 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 180 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 181 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 182 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 183 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 184 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 185 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 186 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 187 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 188 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 189 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 190 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 191 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 192 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 193 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 194 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 195 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 196 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 197 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 198 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 199 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 200 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 201 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 202 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 203 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 204 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 205 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 206 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 207 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 208 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 209 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 210 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 211 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 212 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 213 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 214 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 215 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 216 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 217 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 218 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 219 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 220 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 221 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 222 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 223 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 224 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 225 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 226 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 227 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 228 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 229 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 230 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 231 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 232 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 233 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 234 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 235 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 236 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 237 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 238 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 239 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 240 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 241 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 242 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 243 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 244 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 245 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 246 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 247 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 248 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 249 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 250 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 251 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 252 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 253 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 254 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 255 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 256 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 257 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 258 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 259 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 260 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 261 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 262 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 263 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 264 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 265 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 266 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 267 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 268 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 269 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 270 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 271 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 272 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 273 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 274 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 275 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 276 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 277 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 278 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 279 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 280 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 281 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 282 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 283 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 284 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 285 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 286 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 287 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 288 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 289 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 290 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 291 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 292 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 293 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 294 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 295 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 296 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 297 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 298 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 299 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 300 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 301 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 302 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 303 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 304 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 305 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 306 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 307 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 308 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 309 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 310 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 311 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 312 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 313 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 314 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 315 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 316 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 317 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 318 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 319 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 320 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 321 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 322 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 323 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 324 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 325 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 326 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 327 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 328 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 329 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 330 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 331 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 332 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 333 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 334 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 335 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +es - fr 1 336 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 7 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 8 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 9 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 10 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 11 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 12 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 13 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 14 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 15 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 16 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 17 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 18 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 19 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 20 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 21 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 22 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 23 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 24 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 25 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 26 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 27 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 28 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 29 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 30 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 31 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 32 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 34 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 35 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 36 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 37 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 38 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 39 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 40 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 41 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 42 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 43 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 44 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 45 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 46 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 47 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 48 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 49 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 50 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 51 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 52 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 53 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 54 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 55 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 56 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 57 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 58 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 59 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 60 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 61 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 62 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 63 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 64 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 65 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 66 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 68 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 69 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 70 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 71 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 72 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 73 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 74 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 75 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 76 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 77 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 78 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 79 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 80 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 81 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 82 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 83 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 84 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 85 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 86 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 87 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 88 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 89 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 90 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 91 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 92 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 93 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 94 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 95 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 96 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 97 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 99 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 100 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 101 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 102 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 103 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 104 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 105 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 106 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 107 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 108 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 109 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 110 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 111 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 112 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 113 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 114 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 115 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 116 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 117 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 118 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 119 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 120 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 121 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 122 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 123 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 124 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 125 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 126 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 127 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 128 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 129 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 130 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 131 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 132 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 133 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 134 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 135 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 136 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 137 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 138 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 139 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 140 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 141 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 142 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 143 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 144 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 145 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 146 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 147 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 148 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 149 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 150 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 151 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 152 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 153 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 154 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 155 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 156 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 157 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 158 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 159 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 160 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 161 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 162 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 163 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 164 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 165 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 166 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 167 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 168 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 169 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 170 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 171 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 172 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 173 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 174 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 175 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 176 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 177 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 178 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 179 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 180 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 181 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 182 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 183 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 184 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 185 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 186 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 187 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 188 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 189 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 190 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 191 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 192 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 193 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 194 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 195 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 196 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 197 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 198 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 199 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 200 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 201 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 202 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 203 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 204 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 205 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 206 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 207 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 208 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 209 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 210 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 211 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 212 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 213 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 214 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 215 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 216 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 217 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 218 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 219 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 220 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 221 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 222 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 223 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 224 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 225 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 226 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 227 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 228 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 229 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 230 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 231 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 232 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 233 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 234 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 235 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 236 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 237 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 238 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 239 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 240 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 241 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 242 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 243 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 244 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 245 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 246 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 247 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 248 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 249 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 250 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 251 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 252 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 253 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 254 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 255 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 256 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 257 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 258 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 259 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 260 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 261 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 262 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 263 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 264 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 265 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 266 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 267 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 268 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 269 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 270 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 271 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 272 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 273 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 274 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 275 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 276 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 277 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 278 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 279 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 280 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 281 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 282 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 283 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 284 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 285 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 286 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 287 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 288 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 289 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 290 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 291 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 292 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 293 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 294 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 295 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 296 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 297 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 298 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 299 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 300 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 301 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 302 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 303 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 304 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 305 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 306 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 307 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 308 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 309 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 310 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 311 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 312 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 313 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 314 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 315 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 316 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 317 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 318 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 319 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 320 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 321 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 322 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 323 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 324 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 325 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 326 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 327 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 328 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 329 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 330 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 331 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 332 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 333 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 334 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 335 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +fr - it 1 336 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 diff --git a/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-03-all.result.tsv b/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-03-all.result.tsv index a7e863a3ee..1f1a7d37b2 100644 --- a/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-03-all.result.tsv +++ b/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-03-all.result.tsv @@ -1,365 +1,365 @@ -link timeId time FLOW LIN. EXP FLOW LIN. STD FLOW LIN. MIN FLOW LIN. MAX UCAP LIN. EXP UCAP LIN. STD UCAP LIN. MIN UCAP LIN. MAX LOOP FLOW VALUES FLOW QUAD. VALUES CONG. FEE (ALG.) EXP CONG. FEE (ALG.) STD CONG. FEE (ALG.) MIN CONG. FEE (ALG.) MAX CONG. FEE (ABS.) EXP CONG. FEE (ABS.) STD CONG. FEE (ABS.) MIN CONG. FEE (ABS.) MAX MARG. COST EXP MARG. COST STD MARG. COST MIN MARG. COST MAX CONG. PROB + VALUES CONG. PROB - VALUES HURDLE COST EXP HURDLE COST STD HURDLE COST MIN HURDLE COST MAX -de - fr 1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 7 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 8 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 9 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 10 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 11 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 12 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 13 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 14 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 15 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 16 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 17 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 18 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 19 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 20 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 21 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 22 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 23 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 24 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 25 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 26 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 27 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 28 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 29 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 30 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 31 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 32 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 34 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 35 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 36 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 37 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 38 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 39 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 40 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 41 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 42 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 43 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 44 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 45 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 46 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 47 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 48 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 49 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 50 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 51 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 52 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 53 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 54 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 55 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 56 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 57 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 58 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 59 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 60 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 61 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 62 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 63 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 64 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 65 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 66 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 68 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 69 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 70 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 71 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 72 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 73 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 74 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 75 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 76 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 77 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 78 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 79 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 80 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 81 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 82 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 83 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 84 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 85 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 86 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 87 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 88 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 89 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 90 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 91 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 92 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 93 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 94 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 95 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 96 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 97 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 99 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 100 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 101 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 102 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 103 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 104 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 105 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 106 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 107 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 108 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 109 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 110 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 111 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 112 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 113 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 114 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 115 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 116 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 117 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 118 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 119 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 120 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 121 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 122 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 123 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 124 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 125 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 126 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 127 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 128 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 129 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 130 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 131 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 132 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 133 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 134 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 135 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 136 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 137 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 138 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 139 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 140 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 141 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 142 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 143 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 144 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 145 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 146 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 147 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 148 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 149 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 150 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 151 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 152 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 153 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 154 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 155 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 156 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 157 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 158 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 159 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 160 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 161 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 162 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 163 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 164 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 165 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 166 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 167 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 168 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 169 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 170 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 171 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 172 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 173 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 174 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 175 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 176 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 177 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 178 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 179 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 180 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 181 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 182 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 183 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 184 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 185 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 186 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 187 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 188 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 189 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 190 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 191 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 192 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 193 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 194 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 195 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 196 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 197 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 198 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 199 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 200 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 201 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 202 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 203 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 204 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 205 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 206 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 207 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 208 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 209 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 210 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 211 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 212 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 213 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 214 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 215 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 216 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 217 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 218 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 219 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 220 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 221 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 222 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 223 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 224 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 225 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 226 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 227 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 228 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 229 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 230 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 231 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 232 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 233 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 234 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 235 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 236 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 237 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 238 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 239 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 240 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 241 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 242 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 243 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 244 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 245 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 246 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 247 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 248 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 249 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 250 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 251 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 252 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 253 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 254 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 255 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 256 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 257 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 258 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 259 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 260 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 261 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 262 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 263 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 264 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 265 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 266 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 267 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 268 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 269 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 270 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 271 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 272 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 273 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 274 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 275 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 276 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 277 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 278 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 279 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 280 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 281 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 282 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 283 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 284 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 285 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 286 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 287 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 288 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 289 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 290 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 291 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 292 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 293 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 294 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 295 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 296 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 297 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 298 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 299 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 300 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 301 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 302 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 303 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 304 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 305 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 306 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 307 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 308 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 309 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 310 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 311 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 312 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 313 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 314 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 315 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 316 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 317 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 318 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 319 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 320 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 321 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 322 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 323 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 324 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 325 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 326 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 327 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 328 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 329 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 330 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 331 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 332 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 333 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 334 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 335 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 336 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 337 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 338 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 339 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 340 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 341 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 342 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 343 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 344 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 345 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 346 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 347 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 348 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 349 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 350 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 351 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 352 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 353 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 354 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 355 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 356 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 357 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 358 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 359 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 360 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 361 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 362 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 363 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 364 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +link timeId FLOW LIN. EXP FLOW LIN. STD FLOW LIN. MIN FLOW LIN. MAX UCAP LIN. EXP UCAP LIN. STD UCAP LIN. MIN UCAP LIN. MAX LOOP FLOW VALUES FLOW QUAD. VALUES CONG. FEE (ALG.) EXP CONG. FEE (ALG.) STD CONG. FEE (ALG.) MIN CONG. FEE (ALG.) MAX CONG. FEE (ABS.) EXP CONG. FEE (ABS.) STD CONG. FEE (ABS.) MIN CONG. FEE (ABS.) MAX MARG. COST EXP MARG. COST STD MARG. COST MIN MARG. COST MAX CONG. PROB + VALUES CONG. PROB - VALUES HURDLE COST EXP HURDLE COST STD HURDLE COST MIN HURDLE COST MAX +de - fr 1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 7 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 8 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 9 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 10 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 11 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 12 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 13 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 14 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 15 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 16 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 17 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 18 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 19 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 20 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 21 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 22 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 23 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 24 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 25 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 26 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 27 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 28 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 29 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 30 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 31 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 32 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 34 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 35 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 36 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 37 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 38 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 39 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 40 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 41 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 42 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 43 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 44 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 45 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 46 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 47 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 48 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 49 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 50 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 51 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 52 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 53 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 54 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 55 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 56 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 57 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 58 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 59 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 60 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 61 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 62 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 63 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 64 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 65 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 66 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 68 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 69 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 70 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 71 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 72 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 73 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 74 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 75 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 76 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 77 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 78 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 79 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 80 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 81 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 82 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 83 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 84 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 85 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 86 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 87 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 88 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 89 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 90 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 91 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 92 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 93 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 94 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 95 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 96 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 97 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 99 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 100 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 101 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 102 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 103 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 104 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 105 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 106 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 107 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 108 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 109 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 110 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 111 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 112 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 113 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 114 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 115 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 116 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 117 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 118 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 119 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 120 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 121 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 122 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 123 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 124 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 125 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 126 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 127 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 128 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 129 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 130 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 131 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 132 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 133 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 134 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 135 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 136 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 137 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 138 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 139 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 140 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 141 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 142 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 143 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 144 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 145 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 146 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 147 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 148 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 149 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 150 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 151 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 152 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 153 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 154 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 155 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 156 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 157 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 158 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 159 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 160 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 161 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 162 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 163 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 164 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 165 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 166 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 167 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 168 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 169 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 170 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 171 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 172 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 173 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 174 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 175 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 176 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 177 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 178 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 179 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 180 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 181 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 182 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 183 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 184 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 185 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 186 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 187 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 188 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 189 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 190 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 191 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 192 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 193 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 194 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 195 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 196 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 197 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 198 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 199 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 200 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 201 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 202 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 203 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 204 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 205 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 206 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 207 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 208 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 209 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 210 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 211 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 212 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 213 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 214 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 215 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 216 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 217 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 218 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 219 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 220 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 221 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 222 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 223 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 224 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 225 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 226 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 227 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 228 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 229 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 230 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 231 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 232 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 233 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 234 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 235 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 236 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 237 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 238 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 239 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 240 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 241 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 242 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 243 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 244 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 245 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 246 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 247 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 248 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 249 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 250 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 251 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 252 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 253 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 254 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 255 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 256 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 257 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 258 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 259 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 260 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 261 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 262 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 263 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 264 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 265 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 266 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 267 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 268 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 269 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 270 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 271 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 272 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 273 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 274 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 275 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 276 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 277 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 278 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 279 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 280 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 281 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 282 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 283 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 284 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 285 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 286 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 287 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 288 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 289 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 290 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 291 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 292 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 293 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 294 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 295 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 296 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 297 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 298 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 299 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 300 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 301 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 302 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 303 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 304 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 305 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 306 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 307 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 308 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 309 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 310 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 311 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 312 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 313 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 314 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 315 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 316 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 317 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 318 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 319 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 320 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 321 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 322 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 323 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 324 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 325 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 326 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 327 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 328 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 329 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 330 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 331 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 332 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 333 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 334 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 335 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 336 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 337 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 338 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 339 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 340 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 341 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 342 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 343 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 344 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 345 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 346 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 347 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 348 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 349 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 350 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 351 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 352 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 353 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 354 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 355 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 356 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 357 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 358 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 359 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 360 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 361 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 362 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 363 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 364 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 diff --git a/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-03.result.tsv b/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-03.result.tsv index 1fb9eeb1fd..328765ff4b 100644 --- a/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-03.result.tsv +++ b/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-03.result.tsv @@ -1,2017 +1,2017 @@ -link mcYear timeId time UCAP LIN. FLOW QUAD. -de - fr 1 1 2030 0.0 0.0 -de - fr 1 2 2030 0.0 0.0 -de - fr 1 3 2030 0.0 0.0 -de - fr 1 4 2030 0.0 0.0 -de - fr 1 5 2030 0.0 0.0 -de - fr 1 6 2030 0.0 0.0 -de - fr 1 7 2030 0.0 0.0 -de - fr 1 8 2030 0.0 0.0 -de - fr 1 9 2030 0.0 0.0 -de - fr 1 10 2030 0.0 0.0 -de - fr 1 11 2030 0.0 0.0 -de - fr 1 12 2030 0.0 0.0 -de - fr 1 13 2030 0.0 0.0 -de - fr 1 14 2030 0.0 0.0 -de - fr 1 15 2030 0.0 0.0 -de - fr 1 16 2030 0.0 0.0 -de - fr 1 17 2030 0.0 0.0 -de - fr 1 18 2030 0.0 0.0 -de - fr 1 19 2030 0.0 0.0 -de - fr 1 20 2030 0.0 0.0 -de - fr 1 21 2030 0.0 0.0 -de - fr 1 22 2030 0.0 0.0 -de - fr 1 23 2030 0.0 0.0 -de - fr 1 24 2030 0.0 0.0 -de - fr 1 25 2030 0.0 0.0 -de - fr 1 26 2030 0.0 0.0 -de - fr 1 27 2030 0.0 0.0 -de - fr 1 28 2030 0.0 0.0 -de - fr 1 29 2030 0.0 0.0 -de - fr 1 30 2030 0.0 0.0 -de - fr 1 31 2030 0.0 0.0 -de - fr 1 32 2030 0.0 0.0 -de - fr 1 33 2030 0.0 0.0 -de - fr 1 34 2030 0.0 0.0 -de - fr 1 35 2030 0.0 0.0 -de - fr 1 36 2030 0.0 0.0 -de - fr 1 37 2030 0.0 0.0 -de - fr 1 38 2030 0.0 0.0 -de - fr 1 39 2030 0.0 0.0 -de - fr 1 40 2030 0.0 0.0 -de - fr 1 41 2030 0.0 0.0 -de - fr 1 42 2030 0.0 0.0 -de - fr 1 43 2030 0.0 0.0 -de - fr 1 44 2030 0.0 0.0 -de - fr 1 45 2030 0.0 0.0 -de - fr 1 46 2030 0.0 0.0 -de - fr 1 47 2030 0.0 0.0 -de - fr 1 48 2030 0.0 0.0 -de - fr 1 49 2030 0.0 0.0 -de - fr 1 50 2030 0.0 0.0 -de - fr 1 51 2030 0.0 0.0 -de - fr 1 52 2030 0.0 0.0 -de - fr 1 53 2030 0.0 0.0 -de - fr 1 54 2030 0.0 0.0 -de - fr 1 55 2030 0.0 0.0 -de - fr 1 56 2030 0.0 0.0 -de - fr 1 57 2030 0.0 0.0 -de - fr 1 58 2030 0.0 0.0 -de - fr 1 59 2030 0.0 0.0 -de - fr 1 60 2030 0.0 0.0 -de - fr 1 61 2030 0.0 0.0 -de - fr 1 62 2030 0.0 0.0 -de - fr 1 63 2030 0.0 0.0 -de - fr 1 64 2030 0.0 0.0 -de - fr 1 65 2030 0.0 0.0 -de - fr 1 66 2030 0.0 0.0 -de - fr 1 67 2030 0.0 0.0 -de - fr 1 68 2030 0.0 0.0 -de - fr 1 69 2030 0.0 0.0 -de - fr 1 70 2030 0.0 0.0 -de - fr 1 71 2030 0.0 0.0 -de - fr 1 72 2030 0.0 0.0 -de - fr 1 73 2030 0.0 0.0 -de - fr 1 74 2030 0.0 0.0 -de - fr 1 75 2030 0.0 0.0 -de - fr 1 76 2030 0.0 0.0 -de - fr 1 77 2030 0.0 0.0 -de - fr 1 78 2030 0.0 0.0 -de - fr 1 79 2030 0.0 0.0 -de - fr 1 80 2030 0.0 0.0 -de - fr 1 81 2030 0.0 0.0 -de - fr 1 82 2030 0.0 0.0 -de - fr 1 83 2030 0.0 0.0 -de - fr 1 84 2030 0.0 0.0 -de - fr 1 85 2030 0.0 0.0 -de - fr 1 86 2030 0.0 0.0 -de - fr 1 87 2030 0.0 0.0 -de - fr 1 88 2030 0.0 0.0 -de - fr 1 89 2030 0.0 0.0 -de - fr 1 90 2030 0.0 0.0 -de - fr 1 91 2030 0.0 0.0 -de - fr 1 92 2030 0.0 0.0 -de - fr 1 93 2030 0.0 0.0 -de - fr 1 94 2030 0.0 0.0 -de - fr 1 95 2030 0.0 0.0 -de - fr 1 96 2030 0.0 0.0 -de - fr 1 97 2030 0.0 0.0 -de - fr 1 98 2030 0.0 0.0 -de - fr 1 99 2030 0.0 0.0 -de - fr 1 100 2030 0.0 0.0 -de - fr 1 101 2030 0.0 0.0 -de - fr 1 102 2030 0.0 0.0 -de - fr 1 103 2030 0.0 0.0 -de - fr 1 104 2030 0.0 0.0 -de - fr 1 105 2030 0.0 0.0 -de - fr 1 106 2030 0.0 0.0 -de - fr 1 107 2030 0.0 0.0 -de - fr 1 108 2030 0.0 0.0 -de - fr 1 109 2030 0.0 0.0 -de - fr 1 110 2030 0.0 0.0 -de - fr 1 111 2030 0.0 0.0 -de - fr 1 112 2030 0.0 0.0 -de - fr 1 113 2030 0.0 0.0 -de - fr 1 114 2030 0.0 0.0 -de - fr 1 115 2030 0.0 0.0 -de - fr 1 116 2030 0.0 0.0 -de - fr 1 117 2030 0.0 0.0 -de - fr 1 118 2030 0.0 0.0 -de - fr 1 119 2030 0.0 0.0 -de - fr 1 120 2030 0.0 0.0 -de - fr 1 121 2030 0.0 0.0 -de - fr 1 122 2030 0.0 0.0 -de - fr 1 123 2030 0.0 0.0 -de - fr 1 124 2030 0.0 0.0 -de - fr 1 125 2030 0.0 0.0 -de - fr 1 126 2030 0.0 0.0 -de - fr 1 127 2030 0.0 0.0 -de - fr 1 128 2030 0.0 0.0 -de - fr 1 129 2030 0.0 0.0 -de - fr 1 130 2030 0.0 0.0 -de - fr 1 131 2030 0.0 0.0 -de - fr 1 132 2030 0.0 0.0 -de - fr 1 133 2030 0.0 0.0 -de - fr 1 134 2030 0.0 0.0 -de - fr 1 135 2030 0.0 0.0 -de - fr 1 136 2030 0.0 0.0 -de - fr 1 137 2030 0.0 0.0 -de - fr 1 138 2030 0.0 0.0 -de - fr 1 139 2030 0.0 0.0 -de - fr 1 140 2030 0.0 0.0 -de - fr 1 141 2030 0.0 0.0 -de - fr 1 142 2030 0.0 0.0 -de - fr 1 143 2030 0.0 0.0 -de - fr 1 144 2030 0.0 0.0 -de - fr 1 145 2030 0.0 0.0 -de - fr 1 146 2030 0.0 0.0 -de - fr 1 147 2030 0.0 0.0 -de - fr 1 148 2030 0.0 0.0 -de - fr 1 149 2030 0.0 0.0 -de - fr 1 150 2030 0.0 0.0 -de - fr 1 151 2030 0.0 0.0 -de - fr 1 152 2030 0.0 0.0 -de - fr 1 153 2030 0.0 0.0 -de - fr 1 154 2030 0.0 0.0 -de - fr 1 155 2030 0.0 0.0 -de - fr 1 156 2030 0.0 0.0 -de - fr 1 157 2030 0.0 0.0 -de - fr 1 158 2030 0.0 0.0 -de - fr 1 159 2030 0.0 0.0 -de - fr 1 160 2030 0.0 0.0 -de - fr 1 161 2030 0.0 0.0 -de - fr 1 162 2030 0.0 0.0 -de - fr 1 163 2030 0.0 0.0 -de - fr 1 164 2030 0.0 0.0 -de - fr 1 165 2030 0.0 0.0 -de - fr 1 166 2030 0.0 0.0 -de - fr 1 167 2030 0.0 0.0 -de - fr 1 168 2030 0.0 0.0 -de - fr 1 169 2030 0.0 0.0 -de - fr 1 170 2030 0.0 0.0 -de - fr 1 171 2030 0.0 0.0 -de - fr 1 172 2030 0.0 0.0 -de - fr 1 173 2030 0.0 0.0 -de - fr 1 174 2030 0.0 0.0 -de - fr 1 175 2030 0.0 0.0 -de - fr 1 176 2030 0.0 0.0 -de - fr 1 177 2030 0.0 0.0 -de - fr 1 178 2030 0.0 0.0 -de - fr 1 179 2030 0.0 0.0 -de - fr 1 180 2030 0.0 0.0 -de - fr 1 181 2030 0.0 0.0 -de - fr 1 182 2030 0.0 0.0 -de - fr 1 183 2030 0.0 0.0 -de - fr 1 184 2030 0.0 0.0 -de - fr 1 185 2030 0.0 0.0 -de - fr 1 186 2030 0.0 0.0 -de - fr 1 187 2030 0.0 0.0 -de - fr 1 188 2030 0.0 0.0 -de - fr 1 189 2030 0.0 0.0 -de - fr 1 190 2030 0.0 0.0 -de - fr 1 191 2030 0.0 0.0 -de - fr 1 192 2030 0.0 0.0 -de - fr 1 193 2030 0.0 0.0 -de - fr 1 194 2030 0.0 0.0 -de - fr 1 195 2030 0.0 0.0 -de - fr 1 196 2030 0.0 0.0 -de - fr 1 197 2030 0.0 0.0 -de - fr 1 198 2030 0.0 0.0 -de - fr 1 199 2030 0.0 0.0 -de - fr 1 200 2030 0.0 0.0 -de - fr 1 201 2030 0.0 0.0 -de - fr 1 202 2030 0.0 0.0 -de - fr 1 203 2030 0.0 0.0 -de - fr 1 204 2030 0.0 0.0 -de - fr 1 205 2030 0.0 0.0 -de - fr 1 206 2030 0.0 0.0 -de - fr 1 207 2030 0.0 0.0 -de - fr 1 208 2030 0.0 0.0 -de - fr 1 209 2030 0.0 0.0 -de - fr 1 210 2030 0.0 0.0 -de - fr 1 211 2030 0.0 0.0 -de - fr 1 212 2030 0.0 0.0 -de - fr 1 213 2030 0.0 0.0 -de - fr 1 214 2030 0.0 0.0 -de - fr 1 215 2030 0.0 0.0 -de - fr 1 216 2030 0.0 0.0 -de - fr 1 217 2030 0.0 0.0 -de - fr 1 218 2030 0.0 0.0 -de - fr 1 219 2030 0.0 0.0 -de - fr 1 220 2030 0.0 0.0 -de - fr 1 221 2030 0.0 0.0 -de - fr 1 222 2030 0.0 0.0 -de - fr 1 223 2030 0.0 0.0 -de - fr 1 224 2030 0.0 0.0 -de - fr 1 225 2030 0.0 0.0 -de - fr 1 226 2030 0.0 0.0 -de - fr 1 227 2030 0.0 0.0 -de - fr 1 228 2030 0.0 0.0 -de - fr 1 229 2030 0.0 0.0 -de - fr 1 230 2030 0.0 0.0 -de - fr 1 231 2030 0.0 0.0 -de - fr 1 232 2030 0.0 0.0 -de - fr 1 233 2030 0.0 0.0 -de - fr 1 234 2030 0.0 0.0 -de - fr 1 235 2030 0.0 0.0 -de - fr 1 236 2030 0.0 0.0 -de - fr 1 237 2030 0.0 0.0 -de - fr 1 238 2030 0.0 0.0 -de - fr 1 239 2030 0.0 0.0 -de - fr 1 240 2030 0.0 0.0 -de - fr 1 241 2030 0.0 0.0 -de - fr 1 242 2030 0.0 0.0 -de - fr 1 243 2030 0.0 0.0 -de - fr 1 244 2030 0.0 0.0 -de - fr 1 245 2030 0.0 0.0 -de - fr 1 246 2030 0.0 0.0 -de - fr 1 247 2030 0.0 0.0 -de - fr 1 248 2030 0.0 0.0 -de - fr 1 249 2030 0.0 0.0 -de - fr 1 250 2030 0.0 0.0 -de - fr 1 251 2030 0.0 0.0 -de - fr 1 252 2030 0.0 0.0 -de - fr 1 253 2030 0.0 0.0 -de - fr 1 254 2030 0.0 0.0 -de - fr 1 255 2030 0.0 0.0 -de - fr 1 256 2030 0.0 0.0 -de - fr 1 257 2030 0.0 0.0 -de - fr 1 258 2030 0.0 0.0 -de - fr 1 259 2030 0.0 0.0 -de - fr 1 260 2030 0.0 0.0 -de - fr 1 261 2030 0.0 0.0 -de - fr 1 262 2030 0.0 0.0 -de - fr 1 263 2030 0.0 0.0 -de - fr 1 264 2030 0.0 0.0 -de - fr 1 265 2030 0.0 0.0 -de - fr 1 266 2030 0.0 0.0 -de - fr 1 267 2030 0.0 0.0 -de - fr 1 268 2030 0.0 0.0 -de - fr 1 269 2030 0.0 0.0 -de - fr 1 270 2030 0.0 0.0 -de - fr 1 271 2030 0.0 0.0 -de - fr 1 272 2030 0.0 0.0 -de - fr 1 273 2030 0.0 0.0 -de - fr 1 274 2030 0.0 0.0 -de - fr 1 275 2030 0.0 0.0 -de - fr 1 276 2030 0.0 0.0 -de - fr 1 277 2030 0.0 0.0 -de - fr 1 278 2030 0.0 0.0 -de - fr 1 279 2030 0.0 0.0 -de - fr 1 280 2030 0.0 0.0 -de - fr 1 281 2030 0.0 0.0 -de - fr 1 282 2030 0.0 0.0 -de - fr 1 283 2030 0.0 0.0 -de - fr 1 284 2030 0.0 0.0 -de - fr 1 285 2030 0.0 0.0 -de - fr 1 286 2030 0.0 0.0 -de - fr 1 287 2030 0.0 0.0 -de - fr 1 288 2030 0.0 0.0 -de - fr 1 289 2030 0.0 0.0 -de - fr 1 290 2030 0.0 0.0 -de - fr 1 291 2030 0.0 0.0 -de - fr 1 292 2030 0.0 0.0 -de - fr 1 293 2030 0.0 0.0 -de - fr 1 294 2030 0.0 0.0 -de - fr 1 295 2030 0.0 0.0 -de - fr 1 296 2030 0.0 0.0 -de - fr 1 297 2030 0.0 0.0 -de - fr 1 298 2030 0.0 0.0 -de - fr 1 299 2030 0.0 0.0 -de - fr 1 300 2030 0.0 0.0 -de - fr 1 301 2030 0.0 0.0 -de - fr 1 302 2030 0.0 0.0 -de - fr 1 303 2030 0.0 0.0 -de - fr 1 304 2030 0.0 0.0 -de - fr 1 305 2030 0.0 0.0 -de - fr 1 306 2030 0.0 0.0 -de - fr 1 307 2030 0.0 0.0 -de - fr 1 308 2030 0.0 0.0 -de - fr 1 309 2030 0.0 0.0 -de - fr 1 310 2030 0.0 0.0 -de - fr 1 311 2030 0.0 0.0 -de - fr 1 312 2030 0.0 0.0 -de - fr 1 313 2030 0.0 0.0 -de - fr 1 314 2030 0.0 0.0 -de - fr 1 315 2030 0.0 0.0 -de - fr 1 316 2030 0.0 0.0 -de - fr 1 317 2030 0.0 0.0 -de - fr 1 318 2030 0.0 0.0 -de - fr 1 319 2030 0.0 0.0 -de - fr 1 320 2030 0.0 0.0 -de - fr 1 321 2030 0.0 0.0 -de - fr 1 322 2030 0.0 0.0 -de - fr 1 323 2030 0.0 0.0 -de - fr 1 324 2030 0.0 0.0 -de - fr 1 325 2030 0.0 0.0 -de - fr 1 326 2030 0.0 0.0 -de - fr 1 327 2030 0.0 0.0 -de - fr 1 328 2030 0.0 0.0 -de - fr 1 329 2030 0.0 0.0 -de - fr 1 330 2030 0.0 0.0 -de - fr 1 331 2030 0.0 0.0 -de - fr 1 332 2030 0.0 0.0 -de - fr 1 333 2030 0.0 0.0 -de - fr 1 334 2030 0.0 0.0 -de - fr 1 335 2030 0.0 0.0 -de - fr 1 336 2030 0.0 0.0 -es - fr 1 1 2030 0.0 0.0 -es - fr 1 2 2030 0.0 0.0 -es - fr 1 3 2030 0.0 0.0 -es - fr 1 4 2030 0.0 0.0 -es - fr 1 5 2030 0.0 0.0 -es - fr 1 6 2030 0.0 0.0 -es - fr 1 7 2030 0.0 0.0 -es - fr 1 8 2030 0.0 0.0 -es - fr 1 9 2030 0.0 0.0 -es - fr 1 10 2030 0.0 0.0 -es - fr 1 11 2030 0.0 0.0 -es - fr 1 12 2030 0.0 0.0 -es - fr 1 13 2030 0.0 0.0 -es - fr 1 14 2030 0.0 0.0 -es - fr 1 15 2030 0.0 0.0 -es - fr 1 16 2030 0.0 0.0 -es - fr 1 17 2030 0.0 0.0 -es - fr 1 18 2030 0.0 0.0 -es - fr 1 19 2030 0.0 0.0 -es - fr 1 20 2030 0.0 0.0 -es - fr 1 21 2030 0.0 0.0 -es - fr 1 22 2030 0.0 0.0 -es - fr 1 23 2030 0.0 0.0 -es - fr 1 24 2030 0.0 0.0 -es - fr 1 25 2030 0.0 0.0 -es - fr 1 26 2030 0.0 0.0 -es - fr 1 27 2030 0.0 0.0 -es - fr 1 28 2030 0.0 0.0 -es - fr 1 29 2030 0.0 0.0 -es - fr 1 30 2030 0.0 0.0 -es - fr 1 31 2030 0.0 0.0 -es - fr 1 32 2030 0.0 0.0 -es - fr 1 33 2030 0.0 0.0 -es - fr 1 34 2030 0.0 0.0 -es - fr 1 35 2030 0.0 0.0 -es - fr 1 36 2030 0.0 0.0 -es - fr 1 37 2030 0.0 0.0 -es - fr 1 38 2030 0.0 0.0 -es - fr 1 39 2030 0.0 0.0 -es - fr 1 40 2030 0.0 0.0 -es - fr 1 41 2030 0.0 0.0 -es - fr 1 42 2030 0.0 0.0 -es - fr 1 43 2030 0.0 0.0 -es - fr 1 44 2030 0.0 0.0 -es - fr 1 45 2030 0.0 0.0 -es - fr 1 46 2030 0.0 0.0 -es - fr 1 47 2030 0.0 0.0 -es - fr 1 48 2030 0.0 0.0 -es - fr 1 49 2030 0.0 0.0 -es - fr 1 50 2030 0.0 0.0 -es - fr 1 51 2030 0.0 0.0 -es - fr 1 52 2030 0.0 0.0 -es - fr 1 53 2030 0.0 0.0 -es - fr 1 54 2030 0.0 0.0 -es - fr 1 55 2030 0.0 0.0 -es - fr 1 56 2030 0.0 0.0 -es - fr 1 57 2030 0.0 0.0 -es - fr 1 58 2030 0.0 0.0 -es - fr 1 59 2030 0.0 0.0 -es - fr 1 60 2030 0.0 0.0 -es - fr 1 61 2030 0.0 0.0 -es - fr 1 62 2030 0.0 0.0 -es - fr 1 63 2030 0.0 0.0 -es - fr 1 64 2030 0.0 0.0 -es - fr 1 65 2030 0.0 0.0 -es - fr 1 66 2030 0.0 0.0 -es - fr 1 67 2030 0.0 0.0 -es - fr 1 68 2030 0.0 0.0 -es - fr 1 69 2030 0.0 0.0 -es - fr 1 70 2030 0.0 0.0 -es - fr 1 71 2030 0.0 0.0 -es - fr 1 72 2030 0.0 0.0 -es - fr 1 73 2030 0.0 0.0 -es - fr 1 74 2030 0.0 0.0 -es - fr 1 75 2030 0.0 0.0 -es - fr 1 76 2030 0.0 0.0 -es - fr 1 77 2030 0.0 0.0 -es - fr 1 78 2030 0.0 0.0 -es - fr 1 79 2030 0.0 0.0 -es - fr 1 80 2030 0.0 0.0 -es - fr 1 81 2030 0.0 0.0 -es - fr 1 82 2030 0.0 0.0 -es - fr 1 83 2030 0.0 0.0 -es - fr 1 84 2030 0.0 0.0 -es - fr 1 85 2030 0.0 0.0 -es - fr 1 86 2030 0.0 0.0 -es - fr 1 87 2030 0.0 0.0 -es - fr 1 88 2030 0.0 0.0 -es - fr 1 89 2030 0.0 0.0 -es - fr 1 90 2030 0.0 0.0 -es - fr 1 91 2030 0.0 0.0 -es - fr 1 92 2030 0.0 0.0 -es - fr 1 93 2030 0.0 0.0 -es - fr 1 94 2030 0.0 0.0 -es - fr 1 95 2030 0.0 0.0 -es - fr 1 96 2030 0.0 0.0 -es - fr 1 97 2030 0.0 0.0 -es - fr 1 98 2030 0.0 0.0 -es - fr 1 99 2030 0.0 0.0 -es - fr 1 100 2030 0.0 0.0 -es - fr 1 101 2030 0.0 0.0 -es - fr 1 102 2030 0.0 0.0 -es - fr 1 103 2030 0.0 0.0 -es - fr 1 104 2030 0.0 0.0 -es - fr 1 105 2030 0.0 0.0 -es - fr 1 106 2030 0.0 0.0 -es - fr 1 107 2030 0.0 0.0 -es - fr 1 108 2030 0.0 0.0 -es - fr 1 109 2030 0.0 0.0 -es - fr 1 110 2030 0.0 0.0 -es - fr 1 111 2030 0.0 0.0 -es - fr 1 112 2030 0.0 0.0 -es - fr 1 113 2030 0.0 0.0 -es - fr 1 114 2030 0.0 0.0 -es - fr 1 115 2030 0.0 0.0 -es - fr 1 116 2030 0.0 0.0 -es - fr 1 117 2030 0.0 0.0 -es - fr 1 118 2030 0.0 0.0 -es - fr 1 119 2030 0.0 0.0 -es - fr 1 120 2030 0.0 0.0 -es - fr 1 121 2030 0.0 0.0 -es - fr 1 122 2030 0.0 0.0 -es - fr 1 123 2030 0.0 0.0 -es - fr 1 124 2030 0.0 0.0 -es - fr 1 125 2030 0.0 0.0 -es - fr 1 126 2030 0.0 0.0 -es - fr 1 127 2030 0.0 0.0 -es - fr 1 128 2030 0.0 0.0 -es - fr 1 129 2030 0.0 0.0 -es - fr 1 130 2030 0.0 0.0 -es - fr 1 131 2030 0.0 0.0 -es - fr 1 132 2030 0.0 0.0 -es - fr 1 133 2030 0.0 0.0 -es - fr 1 134 2030 0.0 0.0 -es - fr 1 135 2030 0.0 0.0 -es - fr 1 136 2030 0.0 0.0 -es - fr 1 137 2030 0.0 0.0 -es - fr 1 138 2030 0.0 0.0 -es - fr 1 139 2030 0.0 0.0 -es - fr 1 140 2030 0.0 0.0 -es - fr 1 141 2030 0.0 0.0 -es - fr 1 142 2030 0.0 0.0 -es - fr 1 143 2030 0.0 0.0 -es - fr 1 144 2030 0.0 0.0 -es - fr 1 145 2030 0.0 0.0 -es - fr 1 146 2030 0.0 0.0 -es - fr 1 147 2030 0.0 0.0 -es - fr 1 148 2030 0.0 0.0 -es - fr 1 149 2030 0.0 0.0 -es - fr 1 150 2030 0.0 0.0 -es - fr 1 151 2030 0.0 0.0 -es - fr 1 152 2030 0.0 0.0 -es - fr 1 153 2030 0.0 0.0 -es - fr 1 154 2030 0.0 0.0 -es - fr 1 155 2030 0.0 0.0 -es - fr 1 156 2030 0.0 0.0 -es - fr 1 157 2030 0.0 0.0 -es - fr 1 158 2030 0.0 0.0 -es - fr 1 159 2030 0.0 0.0 -es - fr 1 160 2030 0.0 0.0 -es - fr 1 161 2030 0.0 0.0 -es - fr 1 162 2030 0.0 0.0 -es - fr 1 163 2030 0.0 0.0 -es - fr 1 164 2030 0.0 0.0 -es - fr 1 165 2030 0.0 0.0 -es - fr 1 166 2030 0.0 0.0 -es - fr 1 167 2030 0.0 0.0 -es - fr 1 168 2030 0.0 0.0 -es - fr 1 169 2030 0.0 0.0 -es - fr 1 170 2030 0.0 0.0 -es - fr 1 171 2030 0.0 0.0 -es - fr 1 172 2030 0.0 0.0 -es - fr 1 173 2030 0.0 0.0 -es - fr 1 174 2030 0.0 0.0 -es - fr 1 175 2030 0.0 0.0 -es - fr 1 176 2030 0.0 0.0 -es - fr 1 177 2030 0.0 0.0 -es - fr 1 178 2030 0.0 0.0 -es - fr 1 179 2030 0.0 0.0 -es - fr 1 180 2030 0.0 0.0 -es - fr 1 181 2030 0.0 0.0 -es - fr 1 182 2030 0.0 0.0 -es - fr 1 183 2030 0.0 0.0 -es - fr 1 184 2030 0.0 0.0 -es - fr 1 185 2030 0.0 0.0 -es - fr 1 186 2030 0.0 0.0 -es - fr 1 187 2030 0.0 0.0 -es - fr 1 188 2030 0.0 0.0 -es - fr 1 189 2030 0.0 0.0 -es - fr 1 190 2030 0.0 0.0 -es - fr 1 191 2030 0.0 0.0 -es - fr 1 192 2030 0.0 0.0 -es - fr 1 193 2030 0.0 0.0 -es - fr 1 194 2030 0.0 0.0 -es - fr 1 195 2030 0.0 0.0 -es - fr 1 196 2030 0.0 0.0 -es - fr 1 197 2030 0.0 0.0 -es - fr 1 198 2030 0.0 0.0 -es - fr 1 199 2030 0.0 0.0 -es - fr 1 200 2030 0.0 0.0 -es - fr 1 201 2030 0.0 0.0 -es - fr 1 202 2030 0.0 0.0 -es - fr 1 203 2030 0.0 0.0 -es - fr 1 204 2030 0.0 0.0 -es - fr 1 205 2030 0.0 0.0 -es - fr 1 206 2030 0.0 0.0 -es - fr 1 207 2030 0.0 0.0 -es - fr 1 208 2030 0.0 0.0 -es - fr 1 209 2030 0.0 0.0 -es - fr 1 210 2030 0.0 0.0 -es - fr 1 211 2030 0.0 0.0 -es - fr 1 212 2030 0.0 0.0 -es - fr 1 213 2030 0.0 0.0 -es - fr 1 214 2030 0.0 0.0 -es - fr 1 215 2030 0.0 0.0 -es - fr 1 216 2030 0.0 0.0 -es - fr 1 217 2030 0.0 0.0 -es - fr 1 218 2030 0.0 0.0 -es - fr 1 219 2030 0.0 0.0 -es - fr 1 220 2030 0.0 0.0 -es - fr 1 221 2030 0.0 0.0 -es - fr 1 222 2030 0.0 0.0 -es - fr 1 223 2030 0.0 0.0 -es - fr 1 224 2030 0.0 0.0 -es - fr 1 225 2030 0.0 0.0 -es - fr 1 226 2030 0.0 0.0 -es - fr 1 227 2030 0.0 0.0 -es - fr 1 228 2030 0.0 0.0 -es - fr 1 229 2030 0.0 0.0 -es - fr 1 230 2030 0.0 0.0 -es - fr 1 231 2030 0.0 0.0 -es - fr 1 232 2030 0.0 0.0 -es - fr 1 233 2030 0.0 0.0 -es - fr 1 234 2030 0.0 0.0 -es - fr 1 235 2030 0.0 0.0 -es - fr 1 236 2030 0.0 0.0 -es - fr 1 237 2030 0.0 0.0 -es - fr 1 238 2030 0.0 0.0 -es - fr 1 239 2030 0.0 0.0 -es - fr 1 240 2030 0.0 0.0 -es - fr 1 241 2030 0.0 0.0 -es - fr 1 242 2030 0.0 0.0 -es - fr 1 243 2030 0.0 0.0 -es - fr 1 244 2030 0.0 0.0 -es - fr 1 245 2030 0.0 0.0 -es - fr 1 246 2030 0.0 0.0 -es - fr 1 247 2030 0.0 0.0 -es - fr 1 248 2030 0.0 0.0 -es - fr 1 249 2030 0.0 0.0 -es - fr 1 250 2030 0.0 0.0 -es - fr 1 251 2030 0.0 0.0 -es - fr 1 252 2030 0.0 0.0 -es - fr 1 253 2030 0.0 0.0 -es - fr 1 254 2030 0.0 0.0 -es - fr 1 255 2030 0.0 0.0 -es - fr 1 256 2030 0.0 0.0 -es - fr 1 257 2030 0.0 0.0 -es - fr 1 258 2030 0.0 0.0 -es - fr 1 259 2030 0.0 0.0 -es - fr 1 260 2030 0.0 0.0 -es - fr 1 261 2030 0.0 0.0 -es - fr 1 262 2030 0.0 0.0 -es - fr 1 263 2030 0.0 0.0 -es - fr 1 264 2030 0.0 0.0 -es - fr 1 265 2030 0.0 0.0 -es - fr 1 266 2030 0.0 0.0 -es - fr 1 267 2030 0.0 0.0 -es - fr 1 268 2030 0.0 0.0 -es - fr 1 269 2030 0.0 0.0 -es - fr 1 270 2030 0.0 0.0 -es - fr 1 271 2030 0.0 0.0 -es - fr 1 272 2030 0.0 0.0 -es - fr 1 273 2030 0.0 0.0 -es - fr 1 274 2030 0.0 0.0 -es - fr 1 275 2030 0.0 0.0 -es - fr 1 276 2030 0.0 0.0 -es - fr 1 277 2030 0.0 0.0 -es - fr 1 278 2030 0.0 0.0 -es - fr 1 279 2030 0.0 0.0 -es - fr 1 280 2030 0.0 0.0 -es - fr 1 281 2030 0.0 0.0 -es - fr 1 282 2030 0.0 0.0 -es - fr 1 283 2030 0.0 0.0 -es - fr 1 284 2030 0.0 0.0 -es - fr 1 285 2030 0.0 0.0 -es - fr 1 286 2030 0.0 0.0 -es - fr 1 287 2030 0.0 0.0 -es - fr 1 288 2030 0.0 0.0 -es - fr 1 289 2030 0.0 0.0 -es - fr 1 290 2030 0.0 0.0 -es - fr 1 291 2030 0.0 0.0 -es - fr 1 292 2030 0.0 0.0 -es - fr 1 293 2030 0.0 0.0 -es - fr 1 294 2030 0.0 0.0 -es - fr 1 295 2030 0.0 0.0 -es - fr 1 296 2030 0.0 0.0 -es - fr 1 297 2030 0.0 0.0 -es - fr 1 298 2030 0.0 0.0 -es - fr 1 299 2030 0.0 0.0 -es - fr 1 300 2030 0.0 0.0 -es - fr 1 301 2030 0.0 0.0 -es - fr 1 302 2030 0.0 0.0 -es - fr 1 303 2030 0.0 0.0 -es - fr 1 304 2030 0.0 0.0 -es - fr 1 305 2030 0.0 0.0 -es - fr 1 306 2030 0.0 0.0 -es - fr 1 307 2030 0.0 0.0 -es - fr 1 308 2030 0.0 0.0 -es - fr 1 309 2030 0.0 0.0 -es - fr 1 310 2030 0.0 0.0 -es - fr 1 311 2030 0.0 0.0 -es - fr 1 312 2030 0.0 0.0 -es - fr 1 313 2030 0.0 0.0 -es - fr 1 314 2030 0.0 0.0 -es - fr 1 315 2030 0.0 0.0 -es - fr 1 316 2030 0.0 0.0 -es - fr 1 317 2030 0.0 0.0 -es - fr 1 318 2030 0.0 0.0 -es - fr 1 319 2030 0.0 0.0 -es - fr 1 320 2030 0.0 0.0 -es - fr 1 321 2030 0.0 0.0 -es - fr 1 322 2030 0.0 0.0 -es - fr 1 323 2030 0.0 0.0 -es - fr 1 324 2030 0.0 0.0 -es - fr 1 325 2030 0.0 0.0 -es - fr 1 326 2030 0.0 0.0 -es - fr 1 327 2030 0.0 0.0 -es - fr 1 328 2030 0.0 0.0 -es - fr 1 329 2030 0.0 0.0 -es - fr 1 330 2030 0.0 0.0 -es - fr 1 331 2030 0.0 0.0 -es - fr 1 332 2030 0.0 0.0 -es - fr 1 333 2030 0.0 0.0 -es - fr 1 334 2030 0.0 0.0 -es - fr 1 335 2030 0.0 0.0 -es - fr 1 336 2030 0.0 0.0 -fr - it 1 1 2030 0.0 0.0 -fr - it 1 2 2030 0.0 0.0 -fr - it 1 3 2030 0.0 0.0 -fr - it 1 4 2030 0.0 0.0 -fr - it 1 5 2030 0.0 0.0 -fr - it 1 6 2030 0.0 0.0 -fr - it 1 7 2030 0.0 0.0 -fr - it 1 8 2030 0.0 0.0 -fr - it 1 9 2030 0.0 0.0 -fr - it 1 10 2030 0.0 0.0 -fr - it 1 11 2030 0.0 0.0 -fr - it 1 12 2030 0.0 0.0 -fr - it 1 13 2030 0.0 0.0 -fr - it 1 14 2030 0.0 0.0 -fr - it 1 15 2030 0.0 0.0 -fr - it 1 16 2030 0.0 0.0 -fr - it 1 17 2030 0.0 0.0 -fr - it 1 18 2030 0.0 0.0 -fr - it 1 19 2030 0.0 0.0 -fr - it 1 20 2030 0.0 0.0 -fr - it 1 21 2030 0.0 0.0 -fr - it 1 22 2030 0.0 0.0 -fr - it 1 23 2030 0.0 0.0 -fr - it 1 24 2030 0.0 0.0 -fr - it 1 25 2030 0.0 0.0 -fr - it 1 26 2030 0.0 0.0 -fr - it 1 27 2030 0.0 0.0 -fr - it 1 28 2030 0.0 0.0 -fr - it 1 29 2030 0.0 0.0 -fr - it 1 30 2030 0.0 0.0 -fr - it 1 31 2030 0.0 0.0 -fr - it 1 32 2030 0.0 0.0 -fr - it 1 33 2030 0.0 0.0 -fr - it 1 34 2030 0.0 0.0 -fr - it 1 35 2030 0.0 0.0 -fr - it 1 36 2030 0.0 0.0 -fr - it 1 37 2030 0.0 0.0 -fr - it 1 38 2030 0.0 0.0 -fr - it 1 39 2030 0.0 0.0 -fr - it 1 40 2030 0.0 0.0 -fr - it 1 41 2030 0.0 0.0 -fr - it 1 42 2030 0.0 0.0 -fr - it 1 43 2030 0.0 0.0 -fr - it 1 44 2030 0.0 0.0 -fr - it 1 45 2030 0.0 0.0 -fr - it 1 46 2030 0.0 0.0 -fr - it 1 47 2030 0.0 0.0 -fr - it 1 48 2030 0.0 0.0 -fr - it 1 49 2030 0.0 0.0 -fr - it 1 50 2030 0.0 0.0 -fr - it 1 51 2030 0.0 0.0 -fr - it 1 52 2030 0.0 0.0 -fr - it 1 53 2030 0.0 0.0 -fr - it 1 54 2030 0.0 0.0 -fr - it 1 55 2030 0.0 0.0 -fr - it 1 56 2030 0.0 0.0 -fr - it 1 57 2030 0.0 0.0 -fr - it 1 58 2030 0.0 0.0 -fr - it 1 59 2030 0.0 0.0 -fr - it 1 60 2030 0.0 0.0 -fr - it 1 61 2030 0.0 0.0 -fr - it 1 62 2030 0.0 0.0 -fr - it 1 63 2030 0.0 0.0 -fr - it 1 64 2030 0.0 0.0 -fr - it 1 65 2030 0.0 0.0 -fr - it 1 66 2030 0.0 0.0 -fr - it 1 67 2030 0.0 0.0 -fr - it 1 68 2030 0.0 0.0 -fr - it 1 69 2030 0.0 0.0 -fr - it 1 70 2030 0.0 0.0 -fr - it 1 71 2030 0.0 0.0 -fr - it 1 72 2030 0.0 0.0 -fr - it 1 73 2030 0.0 0.0 -fr - it 1 74 2030 0.0 0.0 -fr - it 1 75 2030 0.0 0.0 -fr - it 1 76 2030 0.0 0.0 -fr - it 1 77 2030 0.0 0.0 -fr - it 1 78 2030 0.0 0.0 -fr - it 1 79 2030 0.0 0.0 -fr - it 1 80 2030 0.0 0.0 -fr - it 1 81 2030 0.0 0.0 -fr - it 1 82 2030 0.0 0.0 -fr - it 1 83 2030 0.0 0.0 -fr - it 1 84 2030 0.0 0.0 -fr - it 1 85 2030 0.0 0.0 -fr - it 1 86 2030 0.0 0.0 -fr - it 1 87 2030 0.0 0.0 -fr - it 1 88 2030 0.0 0.0 -fr - it 1 89 2030 0.0 0.0 -fr - it 1 90 2030 0.0 0.0 -fr - it 1 91 2030 0.0 0.0 -fr - it 1 92 2030 0.0 0.0 -fr - it 1 93 2030 0.0 0.0 -fr - it 1 94 2030 0.0 0.0 -fr - it 1 95 2030 0.0 0.0 -fr - it 1 96 2030 0.0 0.0 -fr - it 1 97 2030 0.0 0.0 -fr - it 1 98 2030 0.0 0.0 -fr - it 1 99 2030 0.0 0.0 -fr - it 1 100 2030 0.0 0.0 -fr - it 1 101 2030 0.0 0.0 -fr - it 1 102 2030 0.0 0.0 -fr - it 1 103 2030 0.0 0.0 -fr - it 1 104 2030 0.0 0.0 -fr - it 1 105 2030 0.0 0.0 -fr - it 1 106 2030 0.0 0.0 -fr - it 1 107 2030 0.0 0.0 -fr - it 1 108 2030 0.0 0.0 -fr - it 1 109 2030 0.0 0.0 -fr - it 1 110 2030 0.0 0.0 -fr - it 1 111 2030 0.0 0.0 -fr - it 1 112 2030 0.0 0.0 -fr - it 1 113 2030 0.0 0.0 -fr - it 1 114 2030 0.0 0.0 -fr - it 1 115 2030 0.0 0.0 -fr - it 1 116 2030 0.0 0.0 -fr - it 1 117 2030 0.0 0.0 -fr - it 1 118 2030 0.0 0.0 -fr - it 1 119 2030 0.0 0.0 -fr - it 1 120 2030 0.0 0.0 -fr - it 1 121 2030 0.0 0.0 -fr - it 1 122 2030 0.0 0.0 -fr - it 1 123 2030 0.0 0.0 -fr - it 1 124 2030 0.0 0.0 -fr - it 1 125 2030 0.0 0.0 -fr - it 1 126 2030 0.0 0.0 -fr - it 1 127 2030 0.0 0.0 -fr - it 1 128 2030 0.0 0.0 -fr - it 1 129 2030 0.0 0.0 -fr - it 1 130 2030 0.0 0.0 -fr - it 1 131 2030 0.0 0.0 -fr - it 1 132 2030 0.0 0.0 -fr - it 1 133 2030 0.0 0.0 -fr - it 1 134 2030 0.0 0.0 -fr - it 1 135 2030 0.0 0.0 -fr - it 1 136 2030 0.0 0.0 -fr - it 1 137 2030 0.0 0.0 -fr - it 1 138 2030 0.0 0.0 -fr - it 1 139 2030 0.0 0.0 -fr - it 1 140 2030 0.0 0.0 -fr - it 1 141 2030 0.0 0.0 -fr - it 1 142 2030 0.0 0.0 -fr - it 1 143 2030 0.0 0.0 -fr - it 1 144 2030 0.0 0.0 -fr - it 1 145 2030 0.0 0.0 -fr - it 1 146 2030 0.0 0.0 -fr - it 1 147 2030 0.0 0.0 -fr - it 1 148 2030 0.0 0.0 -fr - it 1 149 2030 0.0 0.0 -fr - it 1 150 2030 0.0 0.0 -fr - it 1 151 2030 0.0 0.0 -fr - it 1 152 2030 0.0 0.0 -fr - it 1 153 2030 0.0 0.0 -fr - it 1 154 2030 0.0 0.0 -fr - it 1 155 2030 0.0 0.0 -fr - it 1 156 2030 0.0 0.0 -fr - it 1 157 2030 0.0 0.0 -fr - it 1 158 2030 0.0 0.0 -fr - it 1 159 2030 0.0 0.0 -fr - it 1 160 2030 0.0 0.0 -fr - it 1 161 2030 0.0 0.0 -fr - it 1 162 2030 0.0 0.0 -fr - it 1 163 2030 0.0 0.0 -fr - it 1 164 2030 0.0 0.0 -fr - it 1 165 2030 0.0 0.0 -fr - it 1 166 2030 0.0 0.0 -fr - it 1 167 2030 0.0 0.0 -fr - it 1 168 2030 0.0 0.0 -fr - it 1 169 2030 0.0 0.0 -fr - it 1 170 2030 0.0 0.0 -fr - it 1 171 2030 0.0 0.0 -fr - it 1 172 2030 0.0 0.0 -fr - it 1 173 2030 0.0 0.0 -fr - it 1 174 2030 0.0 0.0 -fr - it 1 175 2030 0.0 0.0 -fr - it 1 176 2030 0.0 0.0 -fr - it 1 177 2030 0.0 0.0 -fr - it 1 178 2030 0.0 0.0 -fr - it 1 179 2030 0.0 0.0 -fr - it 1 180 2030 0.0 0.0 -fr - it 1 181 2030 0.0 0.0 -fr - it 1 182 2030 0.0 0.0 -fr - it 1 183 2030 0.0 0.0 -fr - it 1 184 2030 0.0 0.0 -fr - it 1 185 2030 0.0 0.0 -fr - it 1 186 2030 0.0 0.0 -fr - it 1 187 2030 0.0 0.0 -fr - it 1 188 2030 0.0 0.0 -fr - it 1 189 2030 0.0 0.0 -fr - it 1 190 2030 0.0 0.0 -fr - it 1 191 2030 0.0 0.0 -fr - it 1 192 2030 0.0 0.0 -fr - it 1 193 2030 0.0 0.0 -fr - it 1 194 2030 0.0 0.0 -fr - it 1 195 2030 0.0 0.0 -fr - it 1 196 2030 0.0 0.0 -fr - it 1 197 2030 0.0 0.0 -fr - it 1 198 2030 0.0 0.0 -fr - it 1 199 2030 0.0 0.0 -fr - it 1 200 2030 0.0 0.0 -fr - it 1 201 2030 0.0 0.0 -fr - it 1 202 2030 0.0 0.0 -fr - it 1 203 2030 0.0 0.0 -fr - it 1 204 2030 0.0 0.0 -fr - it 1 205 2030 0.0 0.0 -fr - it 1 206 2030 0.0 0.0 -fr - it 1 207 2030 0.0 0.0 -fr - it 1 208 2030 0.0 0.0 -fr - it 1 209 2030 0.0 0.0 -fr - it 1 210 2030 0.0 0.0 -fr - it 1 211 2030 0.0 0.0 -fr - it 1 212 2030 0.0 0.0 -fr - it 1 213 2030 0.0 0.0 -fr - it 1 214 2030 0.0 0.0 -fr - it 1 215 2030 0.0 0.0 -fr - it 1 216 2030 0.0 0.0 -fr - it 1 217 2030 0.0 0.0 -fr - it 1 218 2030 0.0 0.0 -fr - it 1 219 2030 0.0 0.0 -fr - it 1 220 2030 0.0 0.0 -fr - it 1 221 2030 0.0 0.0 -fr - it 1 222 2030 0.0 0.0 -fr - it 1 223 2030 0.0 0.0 -fr - it 1 224 2030 0.0 0.0 -fr - it 1 225 2030 0.0 0.0 -fr - it 1 226 2030 0.0 0.0 -fr - it 1 227 2030 0.0 0.0 -fr - it 1 228 2030 0.0 0.0 -fr - it 1 229 2030 0.0 0.0 -fr - it 1 230 2030 0.0 0.0 -fr - it 1 231 2030 0.0 0.0 -fr - it 1 232 2030 0.0 0.0 -fr - it 1 233 2030 0.0 0.0 -fr - it 1 234 2030 0.0 0.0 -fr - it 1 235 2030 0.0 0.0 -fr - it 1 236 2030 0.0 0.0 -fr - it 1 237 2030 0.0 0.0 -fr - it 1 238 2030 0.0 0.0 -fr - it 1 239 2030 0.0 0.0 -fr - it 1 240 2030 0.0 0.0 -fr - it 1 241 2030 0.0 0.0 -fr - it 1 242 2030 0.0 0.0 -fr - it 1 243 2030 0.0 0.0 -fr - it 1 244 2030 0.0 0.0 -fr - it 1 245 2030 0.0 0.0 -fr - it 1 246 2030 0.0 0.0 -fr - it 1 247 2030 0.0 0.0 -fr - it 1 248 2030 0.0 0.0 -fr - it 1 249 2030 0.0 0.0 -fr - it 1 250 2030 0.0 0.0 -fr - it 1 251 2030 0.0 0.0 -fr - it 1 252 2030 0.0 0.0 -fr - it 1 253 2030 0.0 0.0 -fr - it 1 254 2030 0.0 0.0 -fr - it 1 255 2030 0.0 0.0 -fr - it 1 256 2030 0.0 0.0 -fr - it 1 257 2030 0.0 0.0 -fr - it 1 258 2030 0.0 0.0 -fr - it 1 259 2030 0.0 0.0 -fr - it 1 260 2030 0.0 0.0 -fr - it 1 261 2030 0.0 0.0 -fr - it 1 262 2030 0.0 0.0 -fr - it 1 263 2030 0.0 0.0 -fr - it 1 264 2030 0.0 0.0 -fr - it 1 265 2030 0.0 0.0 -fr - it 1 266 2030 0.0 0.0 -fr - it 1 267 2030 0.0 0.0 -fr - it 1 268 2030 0.0 0.0 -fr - it 1 269 2030 0.0 0.0 -fr - it 1 270 2030 0.0 0.0 -fr - it 1 271 2030 0.0 0.0 -fr - it 1 272 2030 0.0 0.0 -fr - it 1 273 2030 0.0 0.0 -fr - it 1 274 2030 0.0 0.0 -fr - it 1 275 2030 0.0 0.0 -fr - it 1 276 2030 0.0 0.0 -fr - it 1 277 2030 0.0 0.0 -fr - it 1 278 2030 0.0 0.0 -fr - it 1 279 2030 0.0 0.0 -fr - it 1 280 2030 0.0 0.0 -fr - it 1 281 2030 0.0 0.0 -fr - it 1 282 2030 0.0 0.0 -fr - it 1 283 2030 0.0 0.0 -fr - it 1 284 2030 0.0 0.0 -fr - it 1 285 2030 0.0 0.0 -fr - it 1 286 2030 0.0 0.0 -fr - it 1 287 2030 0.0 0.0 -fr - it 1 288 2030 0.0 0.0 -fr - it 1 289 2030 0.0 0.0 -fr - it 1 290 2030 0.0 0.0 -fr - it 1 291 2030 0.0 0.0 -fr - it 1 292 2030 0.0 0.0 -fr - it 1 293 2030 0.0 0.0 -fr - it 1 294 2030 0.0 0.0 -fr - it 1 295 2030 0.0 0.0 -fr - it 1 296 2030 0.0 0.0 -fr - it 1 297 2030 0.0 0.0 -fr - it 1 298 2030 0.0 0.0 -fr - it 1 299 2030 0.0 0.0 -fr - it 1 300 2030 0.0 0.0 -fr - it 1 301 2030 0.0 0.0 -fr - it 1 302 2030 0.0 0.0 -fr - it 1 303 2030 0.0 0.0 -fr - it 1 304 2030 0.0 0.0 -fr - it 1 305 2030 0.0 0.0 -fr - it 1 306 2030 0.0 0.0 -fr - it 1 307 2030 0.0 0.0 -fr - it 1 308 2030 0.0 0.0 -fr - it 1 309 2030 0.0 0.0 -fr - it 1 310 2030 0.0 0.0 -fr - it 1 311 2030 0.0 0.0 -fr - it 1 312 2030 0.0 0.0 -fr - it 1 313 2030 0.0 0.0 -fr - it 1 314 2030 0.0 0.0 -fr - it 1 315 2030 0.0 0.0 -fr - it 1 316 2030 0.0 0.0 -fr - it 1 317 2030 0.0 0.0 -fr - it 1 318 2030 0.0 0.0 -fr - it 1 319 2030 0.0 0.0 -fr - it 1 320 2030 0.0 0.0 -fr - it 1 321 2030 0.0 0.0 -fr - it 1 322 2030 0.0 0.0 -fr - it 1 323 2030 0.0 0.0 -fr - it 1 324 2030 0.0 0.0 -fr - it 1 325 2030 0.0 0.0 -fr - it 1 326 2030 0.0 0.0 -fr - it 1 327 2030 0.0 0.0 -fr - it 1 328 2030 0.0 0.0 -fr - it 1 329 2030 0.0 0.0 -fr - it 1 330 2030 0.0 0.0 -fr - it 1 331 2030 0.0 0.0 -fr - it 1 332 2030 0.0 0.0 -fr - it 1 333 2030 0.0 0.0 -fr - it 1 334 2030 0.0 0.0 -fr - it 1 335 2030 0.0 0.0 -fr - it 1 336 2030 0.0 0.0 -de - fr 2 1 2030 0.0 0.0 -de - fr 2 2 2030 0.0 0.0 -de - fr 2 3 2030 0.0 0.0 -de - fr 2 4 2030 0.0 0.0 -de - fr 2 5 2030 0.0 0.0 -de - fr 2 6 2030 0.0 0.0 -de - fr 2 7 2030 0.0 0.0 -de - fr 2 8 2030 0.0 0.0 -de - fr 2 9 2030 0.0 0.0 -de - fr 2 10 2030 0.0 0.0 -de - fr 2 11 2030 0.0 0.0 -de - fr 2 12 2030 0.0 0.0 -de - fr 2 13 2030 0.0 0.0 -de - fr 2 14 2030 0.0 0.0 -de - fr 2 15 2030 0.0 0.0 -de - fr 2 16 2030 0.0 0.0 -de - fr 2 17 2030 0.0 0.0 -de - fr 2 18 2030 0.0 0.0 -de - fr 2 19 2030 0.0 0.0 -de - fr 2 20 2030 0.0 0.0 -de - fr 2 21 2030 0.0 0.0 -de - fr 2 22 2030 0.0 0.0 -de - fr 2 23 2030 0.0 0.0 -de - fr 2 24 2030 0.0 0.0 -de - fr 2 25 2030 0.0 0.0 -de - fr 2 26 2030 0.0 0.0 -de - fr 2 27 2030 0.0 0.0 -de - fr 2 28 2030 0.0 0.0 -de - fr 2 29 2030 0.0 0.0 -de - fr 2 30 2030 0.0 0.0 -de - fr 2 31 2030 0.0 0.0 -de - fr 2 32 2030 0.0 0.0 -de - fr 2 33 2030 0.0 0.0 -de - fr 2 34 2030 0.0 0.0 -de - fr 2 35 2030 0.0 0.0 -de - fr 2 36 2030 0.0 0.0 -de - fr 2 37 2030 0.0 0.0 -de - fr 2 38 2030 0.0 0.0 -de - fr 2 39 2030 0.0 0.0 -de - fr 2 40 2030 0.0 0.0 -de - fr 2 41 2030 0.0 0.0 -de - fr 2 42 2030 0.0 0.0 -de - fr 2 43 2030 0.0 0.0 -de - fr 2 44 2030 0.0 0.0 -de - fr 2 45 2030 0.0 0.0 -de - fr 2 46 2030 0.0 0.0 -de - fr 2 47 2030 0.0 0.0 -de - fr 2 48 2030 0.0 0.0 -de - fr 2 49 2030 0.0 0.0 -de - fr 2 50 2030 0.0 0.0 -de - fr 2 51 2030 0.0 0.0 -de - fr 2 52 2030 0.0 0.0 -de - fr 2 53 2030 0.0 0.0 -de - fr 2 54 2030 0.0 0.0 -de - fr 2 55 2030 0.0 0.0 -de - fr 2 56 2030 0.0 0.0 -de - fr 2 57 2030 0.0 0.0 -de - fr 2 58 2030 0.0 0.0 -de - fr 2 59 2030 0.0 0.0 -de - fr 2 60 2030 0.0 0.0 -de - fr 2 61 2030 0.0 0.0 -de - fr 2 62 2030 0.0 0.0 -de - fr 2 63 2030 0.0 0.0 -de - fr 2 64 2030 0.0 0.0 -de - fr 2 65 2030 0.0 0.0 -de - fr 2 66 2030 0.0 0.0 -de - fr 2 67 2030 0.0 0.0 -de - fr 2 68 2030 0.0 0.0 -de - fr 2 69 2030 0.0 0.0 -de - fr 2 70 2030 0.0 0.0 -de - fr 2 71 2030 0.0 0.0 -de - fr 2 72 2030 0.0 0.0 -de - fr 2 73 2030 0.0 0.0 -de - fr 2 74 2030 0.0 0.0 -de - fr 2 75 2030 0.0 0.0 -de - fr 2 76 2030 0.0 0.0 -de - fr 2 77 2030 0.0 0.0 -de - fr 2 78 2030 0.0 0.0 -de - fr 2 79 2030 0.0 0.0 -de - fr 2 80 2030 0.0 0.0 -de - fr 2 81 2030 0.0 0.0 -de - fr 2 82 2030 0.0 0.0 -de - fr 2 83 2030 0.0 0.0 -de - fr 2 84 2030 0.0 0.0 -de - fr 2 85 2030 0.0 0.0 -de - fr 2 86 2030 0.0 0.0 -de - fr 2 87 2030 0.0 0.0 -de - fr 2 88 2030 0.0 0.0 -de - fr 2 89 2030 0.0 0.0 -de - fr 2 90 2030 0.0 0.0 -de - fr 2 91 2030 0.0 0.0 -de - fr 2 92 2030 0.0 0.0 -de - fr 2 93 2030 0.0 0.0 -de - fr 2 94 2030 0.0 0.0 -de - fr 2 95 2030 0.0 0.0 -de - fr 2 96 2030 0.0 0.0 -de - fr 2 97 2030 0.0 0.0 -de - fr 2 98 2030 0.0 0.0 -de - fr 2 99 2030 0.0 0.0 -de - fr 2 100 2030 0.0 0.0 -de - fr 2 101 2030 0.0 0.0 -de - fr 2 102 2030 0.0 0.0 -de - fr 2 103 2030 0.0 0.0 -de - fr 2 104 2030 0.0 0.0 -de - fr 2 105 2030 0.0 0.0 -de - fr 2 106 2030 0.0 0.0 -de - fr 2 107 2030 0.0 0.0 -de - fr 2 108 2030 0.0 0.0 -de - fr 2 109 2030 0.0 0.0 -de - fr 2 110 2030 0.0 0.0 -de - fr 2 111 2030 0.0 0.0 -de - fr 2 112 2030 0.0 0.0 -de - fr 2 113 2030 0.0 0.0 -de - fr 2 114 2030 0.0 0.0 -de - fr 2 115 2030 0.0 0.0 -de - fr 2 116 2030 0.0 0.0 -de - fr 2 117 2030 0.0 0.0 -de - fr 2 118 2030 0.0 0.0 -de - fr 2 119 2030 0.0 0.0 -de - fr 2 120 2030 0.0 0.0 -de - fr 2 121 2030 0.0 0.0 -de - fr 2 122 2030 0.0 0.0 -de - fr 2 123 2030 0.0 0.0 -de - fr 2 124 2030 0.0 0.0 -de - fr 2 125 2030 0.0 0.0 -de - fr 2 126 2030 0.0 0.0 -de - fr 2 127 2030 0.0 0.0 -de - fr 2 128 2030 0.0 0.0 -de - fr 2 129 2030 0.0 0.0 -de - fr 2 130 2030 0.0 0.0 -de - fr 2 131 2030 0.0 0.0 -de - fr 2 132 2030 0.0 0.0 -de - fr 2 133 2030 0.0 0.0 -de - fr 2 134 2030 0.0 0.0 -de - fr 2 135 2030 0.0 0.0 -de - fr 2 136 2030 0.0 0.0 -de - fr 2 137 2030 0.0 0.0 -de - fr 2 138 2030 0.0 0.0 -de - fr 2 139 2030 0.0 0.0 -de - fr 2 140 2030 0.0 0.0 -de - fr 2 141 2030 0.0 0.0 -de - fr 2 142 2030 0.0 0.0 -de - fr 2 143 2030 0.0 0.0 -de - fr 2 144 2030 0.0 0.0 -de - fr 2 145 2030 0.0 0.0 -de - fr 2 146 2030 0.0 0.0 -de - fr 2 147 2030 0.0 0.0 -de - fr 2 148 2030 0.0 0.0 -de - fr 2 149 2030 0.0 0.0 -de - fr 2 150 2030 0.0 0.0 -de - fr 2 151 2030 0.0 0.0 -de - fr 2 152 2030 0.0 0.0 -de - fr 2 153 2030 0.0 0.0 -de - fr 2 154 2030 0.0 0.0 -de - fr 2 155 2030 0.0 0.0 -de - fr 2 156 2030 0.0 0.0 -de - fr 2 157 2030 0.0 0.0 -de - fr 2 158 2030 0.0 0.0 -de - fr 2 159 2030 0.0 0.0 -de - fr 2 160 2030 0.0 0.0 -de - fr 2 161 2030 0.0 0.0 -de - fr 2 162 2030 0.0 0.0 -de - fr 2 163 2030 0.0 0.0 -de - fr 2 164 2030 0.0 0.0 -de - fr 2 165 2030 0.0 0.0 -de - fr 2 166 2030 0.0 0.0 -de - fr 2 167 2030 0.0 0.0 -de - fr 2 168 2030 0.0 0.0 -de - fr 2 169 2030 0.0 0.0 -de - fr 2 170 2030 0.0 0.0 -de - fr 2 171 2030 0.0 0.0 -de - fr 2 172 2030 0.0 0.0 -de - fr 2 173 2030 0.0 0.0 -de - fr 2 174 2030 0.0 0.0 -de - fr 2 175 2030 0.0 0.0 -de - fr 2 176 2030 0.0 0.0 -de - fr 2 177 2030 0.0 0.0 -de - fr 2 178 2030 0.0 0.0 -de - fr 2 179 2030 0.0 0.0 -de - fr 2 180 2030 0.0 0.0 -de - fr 2 181 2030 0.0 0.0 -de - fr 2 182 2030 0.0 0.0 -de - fr 2 183 2030 0.0 0.0 -de - fr 2 184 2030 0.0 0.0 -de - fr 2 185 2030 0.0 0.0 -de - fr 2 186 2030 0.0 0.0 -de - fr 2 187 2030 0.0 0.0 -de - fr 2 188 2030 0.0 0.0 -de - fr 2 189 2030 0.0 0.0 -de - fr 2 190 2030 0.0 0.0 -de - fr 2 191 2030 0.0 0.0 -de - fr 2 192 2030 0.0 0.0 -de - fr 2 193 2030 0.0 0.0 -de - fr 2 194 2030 0.0 0.0 -de - fr 2 195 2030 0.0 0.0 -de - fr 2 196 2030 0.0 0.0 -de - fr 2 197 2030 0.0 0.0 -de - fr 2 198 2030 0.0 0.0 -de - fr 2 199 2030 0.0 0.0 -de - fr 2 200 2030 0.0 0.0 -de - fr 2 201 2030 0.0 0.0 -de - fr 2 202 2030 0.0 0.0 -de - fr 2 203 2030 0.0 0.0 -de - fr 2 204 2030 0.0 0.0 -de - fr 2 205 2030 0.0 0.0 -de - fr 2 206 2030 0.0 0.0 -de - fr 2 207 2030 0.0 0.0 -de - fr 2 208 2030 0.0 0.0 -de - fr 2 209 2030 0.0 0.0 -de - fr 2 210 2030 0.0 0.0 -de - fr 2 211 2030 0.0 0.0 -de - fr 2 212 2030 0.0 0.0 -de - fr 2 213 2030 0.0 0.0 -de - fr 2 214 2030 0.0 0.0 -de - fr 2 215 2030 0.0 0.0 -de - fr 2 216 2030 0.0 0.0 -de - fr 2 217 2030 0.0 0.0 -de - fr 2 218 2030 0.0 0.0 -de - fr 2 219 2030 0.0 0.0 -de - fr 2 220 2030 0.0 0.0 -de - fr 2 221 2030 0.0 0.0 -de - fr 2 222 2030 0.0 0.0 -de - fr 2 223 2030 0.0 0.0 -de - fr 2 224 2030 0.0 0.0 -de - fr 2 225 2030 0.0 0.0 -de - fr 2 226 2030 0.0 0.0 -de - fr 2 227 2030 0.0 0.0 -de - fr 2 228 2030 0.0 0.0 -de - fr 2 229 2030 0.0 0.0 -de - fr 2 230 2030 0.0 0.0 -de - fr 2 231 2030 0.0 0.0 -de - fr 2 232 2030 0.0 0.0 -de - fr 2 233 2030 0.0 0.0 -de - fr 2 234 2030 0.0 0.0 -de - fr 2 235 2030 0.0 0.0 -de - fr 2 236 2030 0.0 0.0 -de - fr 2 237 2030 0.0 0.0 -de - fr 2 238 2030 0.0 0.0 -de - fr 2 239 2030 0.0 0.0 -de - fr 2 240 2030 0.0 0.0 -de - fr 2 241 2030 0.0 0.0 -de - fr 2 242 2030 0.0 0.0 -de - fr 2 243 2030 0.0 0.0 -de - fr 2 244 2030 0.0 0.0 -de - fr 2 245 2030 0.0 0.0 -de - fr 2 246 2030 0.0 0.0 -de - fr 2 247 2030 0.0 0.0 -de - fr 2 248 2030 0.0 0.0 -de - fr 2 249 2030 0.0 0.0 -de - fr 2 250 2030 0.0 0.0 -de - fr 2 251 2030 0.0 0.0 -de - fr 2 252 2030 0.0 0.0 -de - fr 2 253 2030 0.0 0.0 -de - fr 2 254 2030 0.0 0.0 -de - fr 2 255 2030 0.0 0.0 -de - fr 2 256 2030 0.0 0.0 -de - fr 2 257 2030 0.0 0.0 -de - fr 2 258 2030 0.0 0.0 -de - fr 2 259 2030 0.0 0.0 -de - fr 2 260 2030 0.0 0.0 -de - fr 2 261 2030 0.0 0.0 -de - fr 2 262 2030 0.0 0.0 -de - fr 2 263 2030 0.0 0.0 -de - fr 2 264 2030 0.0 0.0 -de - fr 2 265 2030 0.0 0.0 -de - fr 2 266 2030 0.0 0.0 -de - fr 2 267 2030 0.0 0.0 -de - fr 2 268 2030 0.0 0.0 -de - fr 2 269 2030 0.0 0.0 -de - fr 2 270 2030 0.0 0.0 -de - fr 2 271 2030 0.0 0.0 -de - fr 2 272 2030 0.0 0.0 -de - fr 2 273 2030 0.0 0.0 -de - fr 2 274 2030 0.0 0.0 -de - fr 2 275 2030 0.0 0.0 -de - fr 2 276 2030 0.0 0.0 -de - fr 2 277 2030 0.0 0.0 -de - fr 2 278 2030 0.0 0.0 -de - fr 2 279 2030 0.0 0.0 -de - fr 2 280 2030 0.0 0.0 -de - fr 2 281 2030 0.0 0.0 -de - fr 2 282 2030 0.0 0.0 -de - fr 2 283 2030 0.0 0.0 -de - fr 2 284 2030 0.0 0.0 -de - fr 2 285 2030 0.0 0.0 -de - fr 2 286 2030 0.0 0.0 -de - fr 2 287 2030 0.0 0.0 -de - fr 2 288 2030 0.0 0.0 -de - fr 2 289 2030 0.0 0.0 -de - fr 2 290 2030 0.0 0.0 -de - fr 2 291 2030 0.0 0.0 -de - fr 2 292 2030 0.0 0.0 -de - fr 2 293 2030 0.0 0.0 -de - fr 2 294 2030 0.0 0.0 -de - fr 2 295 2030 0.0 0.0 -de - fr 2 296 2030 0.0 0.0 -de - fr 2 297 2030 0.0 0.0 -de - fr 2 298 2030 0.0 0.0 -de - fr 2 299 2030 0.0 0.0 -de - fr 2 300 2030 0.0 0.0 -de - fr 2 301 2030 0.0 0.0 -de - fr 2 302 2030 0.0 0.0 -de - fr 2 303 2030 0.0 0.0 -de - fr 2 304 2030 0.0 0.0 -de - fr 2 305 2030 0.0 0.0 -de - fr 2 306 2030 0.0 0.0 -de - fr 2 307 2030 0.0 0.0 -de - fr 2 308 2030 0.0 0.0 -de - fr 2 309 2030 0.0 0.0 -de - fr 2 310 2030 0.0 0.0 -de - fr 2 311 2030 0.0 0.0 -de - fr 2 312 2030 0.0 0.0 -de - fr 2 313 2030 0.0 0.0 -de - fr 2 314 2030 0.0 0.0 -de - fr 2 315 2030 0.0 0.0 -de - fr 2 316 2030 0.0 0.0 -de - fr 2 317 2030 0.0 0.0 -de - fr 2 318 2030 0.0 0.0 -de - fr 2 319 2030 0.0 0.0 -de - fr 2 320 2030 0.0 0.0 -de - fr 2 321 2030 0.0 0.0 -de - fr 2 322 2030 0.0 0.0 -de - fr 2 323 2030 0.0 0.0 -de - fr 2 324 2030 0.0 0.0 -de - fr 2 325 2030 0.0 0.0 -de - fr 2 326 2030 0.0 0.0 -de - fr 2 327 2030 0.0 0.0 -de - fr 2 328 2030 0.0 0.0 -de - fr 2 329 2030 0.0 0.0 -de - fr 2 330 2030 0.0 0.0 -de - fr 2 331 2030 0.0 0.0 -de - fr 2 332 2030 0.0 0.0 -de - fr 2 333 2030 0.0 0.0 -de - fr 2 334 2030 0.0 0.0 -de - fr 2 335 2030 0.0 0.0 -de - fr 2 336 2030 0.0 0.0 -es - fr 2 1 2030 0.0 0.0 -es - fr 2 2 2030 0.0 0.0 -es - fr 2 3 2030 0.0 0.0 -es - fr 2 4 2030 0.0 0.0 -es - fr 2 5 2030 0.0 0.0 -es - fr 2 6 2030 0.0 0.0 -es - fr 2 7 2030 0.0 0.0 -es - fr 2 8 2030 0.0 0.0 -es - fr 2 9 2030 0.0 0.0 -es - fr 2 10 2030 0.0 0.0 -es - fr 2 11 2030 0.0 0.0 -es - fr 2 12 2030 0.0 0.0 -es - fr 2 13 2030 0.0 0.0 -es - fr 2 14 2030 0.0 0.0 -es - fr 2 15 2030 0.0 0.0 -es - fr 2 16 2030 0.0 0.0 -es - fr 2 17 2030 0.0 0.0 -es - fr 2 18 2030 0.0 0.0 -es - fr 2 19 2030 0.0 0.0 -es - fr 2 20 2030 0.0 0.0 -es - fr 2 21 2030 0.0 0.0 -es - fr 2 22 2030 0.0 0.0 -es - fr 2 23 2030 0.0 0.0 -es - fr 2 24 2030 0.0 0.0 -es - fr 2 25 2030 0.0 0.0 -es - fr 2 26 2030 0.0 0.0 -es - fr 2 27 2030 0.0 0.0 -es - fr 2 28 2030 0.0 0.0 -es - fr 2 29 2030 0.0 0.0 -es - fr 2 30 2030 0.0 0.0 -es - fr 2 31 2030 0.0 0.0 -es - fr 2 32 2030 0.0 0.0 -es - fr 2 33 2030 0.0 0.0 -es - fr 2 34 2030 0.0 0.0 -es - fr 2 35 2030 0.0 0.0 -es - fr 2 36 2030 0.0 0.0 -es - fr 2 37 2030 0.0 0.0 -es - fr 2 38 2030 0.0 0.0 -es - fr 2 39 2030 0.0 0.0 -es - fr 2 40 2030 0.0 0.0 -es - fr 2 41 2030 0.0 0.0 -es - fr 2 42 2030 0.0 0.0 -es - fr 2 43 2030 0.0 0.0 -es - fr 2 44 2030 0.0 0.0 -es - fr 2 45 2030 0.0 0.0 -es - fr 2 46 2030 0.0 0.0 -es - fr 2 47 2030 0.0 0.0 -es - fr 2 48 2030 0.0 0.0 -es - fr 2 49 2030 0.0 0.0 -es - fr 2 50 2030 0.0 0.0 -es - fr 2 51 2030 0.0 0.0 -es - fr 2 52 2030 0.0 0.0 -es - fr 2 53 2030 0.0 0.0 -es - fr 2 54 2030 0.0 0.0 -es - fr 2 55 2030 0.0 0.0 -es - fr 2 56 2030 0.0 0.0 -es - fr 2 57 2030 0.0 0.0 -es - fr 2 58 2030 0.0 0.0 -es - fr 2 59 2030 0.0 0.0 -es - fr 2 60 2030 0.0 0.0 -es - fr 2 61 2030 0.0 0.0 -es - fr 2 62 2030 0.0 0.0 -es - fr 2 63 2030 0.0 0.0 -es - fr 2 64 2030 0.0 0.0 -es - fr 2 65 2030 0.0 0.0 -es - fr 2 66 2030 0.0 0.0 -es - fr 2 67 2030 0.0 0.0 -es - fr 2 68 2030 0.0 0.0 -es - fr 2 69 2030 0.0 0.0 -es - fr 2 70 2030 0.0 0.0 -es - fr 2 71 2030 0.0 0.0 -es - fr 2 72 2030 0.0 0.0 -es - fr 2 73 2030 0.0 0.0 -es - fr 2 74 2030 0.0 0.0 -es - fr 2 75 2030 0.0 0.0 -es - fr 2 76 2030 0.0 0.0 -es - fr 2 77 2030 0.0 0.0 -es - fr 2 78 2030 0.0 0.0 -es - fr 2 79 2030 0.0 0.0 -es - fr 2 80 2030 0.0 0.0 -es - fr 2 81 2030 0.0 0.0 -es - fr 2 82 2030 0.0 0.0 -es - fr 2 83 2030 0.0 0.0 -es - fr 2 84 2030 0.0 0.0 -es - fr 2 85 2030 0.0 0.0 -es - fr 2 86 2030 0.0 0.0 -es - fr 2 87 2030 0.0 0.0 -es - fr 2 88 2030 0.0 0.0 -es - fr 2 89 2030 0.0 0.0 -es - fr 2 90 2030 0.0 0.0 -es - fr 2 91 2030 0.0 0.0 -es - fr 2 92 2030 0.0 0.0 -es - fr 2 93 2030 0.0 0.0 -es - fr 2 94 2030 0.0 0.0 -es - fr 2 95 2030 0.0 0.0 -es - fr 2 96 2030 0.0 0.0 -es - fr 2 97 2030 0.0 0.0 -es - fr 2 98 2030 0.0 0.0 -es - fr 2 99 2030 0.0 0.0 -es - fr 2 100 2030 0.0 0.0 -es - fr 2 101 2030 0.0 0.0 -es - fr 2 102 2030 0.0 0.0 -es - fr 2 103 2030 0.0 0.0 -es - fr 2 104 2030 0.0 0.0 -es - fr 2 105 2030 0.0 0.0 -es - fr 2 106 2030 0.0 0.0 -es - fr 2 107 2030 0.0 0.0 -es - fr 2 108 2030 0.0 0.0 -es - fr 2 109 2030 0.0 0.0 -es - fr 2 110 2030 0.0 0.0 -es - fr 2 111 2030 0.0 0.0 -es - fr 2 112 2030 0.0 0.0 -es - fr 2 113 2030 0.0 0.0 -es - fr 2 114 2030 0.0 0.0 -es - fr 2 115 2030 0.0 0.0 -es - fr 2 116 2030 0.0 0.0 -es - fr 2 117 2030 0.0 0.0 -es - fr 2 118 2030 0.0 0.0 -es - fr 2 119 2030 0.0 0.0 -es - fr 2 120 2030 0.0 0.0 -es - fr 2 121 2030 0.0 0.0 -es - fr 2 122 2030 0.0 0.0 -es - fr 2 123 2030 0.0 0.0 -es - fr 2 124 2030 0.0 0.0 -es - fr 2 125 2030 0.0 0.0 -es - fr 2 126 2030 0.0 0.0 -es - fr 2 127 2030 0.0 0.0 -es - fr 2 128 2030 0.0 0.0 -es - fr 2 129 2030 0.0 0.0 -es - fr 2 130 2030 0.0 0.0 -es - fr 2 131 2030 0.0 0.0 -es - fr 2 132 2030 0.0 0.0 -es - fr 2 133 2030 0.0 0.0 -es - fr 2 134 2030 0.0 0.0 -es - fr 2 135 2030 0.0 0.0 -es - fr 2 136 2030 0.0 0.0 -es - fr 2 137 2030 0.0 0.0 -es - fr 2 138 2030 0.0 0.0 -es - fr 2 139 2030 0.0 0.0 -es - fr 2 140 2030 0.0 0.0 -es - fr 2 141 2030 0.0 0.0 -es - fr 2 142 2030 0.0 0.0 -es - fr 2 143 2030 0.0 0.0 -es - fr 2 144 2030 0.0 0.0 -es - fr 2 145 2030 0.0 0.0 -es - fr 2 146 2030 0.0 0.0 -es - fr 2 147 2030 0.0 0.0 -es - fr 2 148 2030 0.0 0.0 -es - fr 2 149 2030 0.0 0.0 -es - fr 2 150 2030 0.0 0.0 -es - fr 2 151 2030 0.0 0.0 -es - fr 2 152 2030 0.0 0.0 -es - fr 2 153 2030 0.0 0.0 -es - fr 2 154 2030 0.0 0.0 -es - fr 2 155 2030 0.0 0.0 -es - fr 2 156 2030 0.0 0.0 -es - fr 2 157 2030 0.0 0.0 -es - fr 2 158 2030 0.0 0.0 -es - fr 2 159 2030 0.0 0.0 -es - fr 2 160 2030 0.0 0.0 -es - fr 2 161 2030 0.0 0.0 -es - fr 2 162 2030 0.0 0.0 -es - fr 2 163 2030 0.0 0.0 -es - fr 2 164 2030 0.0 0.0 -es - fr 2 165 2030 0.0 0.0 -es - fr 2 166 2030 0.0 0.0 -es - fr 2 167 2030 0.0 0.0 -es - fr 2 168 2030 0.0 0.0 -es - fr 2 169 2030 0.0 0.0 -es - fr 2 170 2030 0.0 0.0 -es - fr 2 171 2030 0.0 0.0 -es - fr 2 172 2030 0.0 0.0 -es - fr 2 173 2030 0.0 0.0 -es - fr 2 174 2030 0.0 0.0 -es - fr 2 175 2030 0.0 0.0 -es - fr 2 176 2030 0.0 0.0 -es - fr 2 177 2030 0.0 0.0 -es - fr 2 178 2030 0.0 0.0 -es - fr 2 179 2030 0.0 0.0 -es - fr 2 180 2030 0.0 0.0 -es - fr 2 181 2030 0.0 0.0 -es - fr 2 182 2030 0.0 0.0 -es - fr 2 183 2030 0.0 0.0 -es - fr 2 184 2030 0.0 0.0 -es - fr 2 185 2030 0.0 0.0 -es - fr 2 186 2030 0.0 0.0 -es - fr 2 187 2030 0.0 0.0 -es - fr 2 188 2030 0.0 0.0 -es - fr 2 189 2030 0.0 0.0 -es - fr 2 190 2030 0.0 0.0 -es - fr 2 191 2030 0.0 0.0 -es - fr 2 192 2030 0.0 0.0 -es - fr 2 193 2030 0.0 0.0 -es - fr 2 194 2030 0.0 0.0 -es - fr 2 195 2030 0.0 0.0 -es - fr 2 196 2030 0.0 0.0 -es - fr 2 197 2030 0.0 0.0 -es - fr 2 198 2030 0.0 0.0 -es - fr 2 199 2030 0.0 0.0 -es - fr 2 200 2030 0.0 0.0 -es - fr 2 201 2030 0.0 0.0 -es - fr 2 202 2030 0.0 0.0 -es - fr 2 203 2030 0.0 0.0 -es - fr 2 204 2030 0.0 0.0 -es - fr 2 205 2030 0.0 0.0 -es - fr 2 206 2030 0.0 0.0 -es - fr 2 207 2030 0.0 0.0 -es - fr 2 208 2030 0.0 0.0 -es - fr 2 209 2030 0.0 0.0 -es - fr 2 210 2030 0.0 0.0 -es - fr 2 211 2030 0.0 0.0 -es - fr 2 212 2030 0.0 0.0 -es - fr 2 213 2030 0.0 0.0 -es - fr 2 214 2030 0.0 0.0 -es - fr 2 215 2030 0.0 0.0 -es - fr 2 216 2030 0.0 0.0 -es - fr 2 217 2030 0.0 0.0 -es - fr 2 218 2030 0.0 0.0 -es - fr 2 219 2030 0.0 0.0 -es - fr 2 220 2030 0.0 0.0 -es - fr 2 221 2030 0.0 0.0 -es - fr 2 222 2030 0.0 0.0 -es - fr 2 223 2030 0.0 0.0 -es - fr 2 224 2030 0.0 0.0 -es - fr 2 225 2030 0.0 0.0 -es - fr 2 226 2030 0.0 0.0 -es - fr 2 227 2030 0.0 0.0 -es - fr 2 228 2030 0.0 0.0 -es - fr 2 229 2030 0.0 0.0 -es - fr 2 230 2030 0.0 0.0 -es - fr 2 231 2030 0.0 0.0 -es - fr 2 232 2030 0.0 0.0 -es - fr 2 233 2030 0.0 0.0 -es - fr 2 234 2030 0.0 0.0 -es - fr 2 235 2030 0.0 0.0 -es - fr 2 236 2030 0.0 0.0 -es - fr 2 237 2030 0.0 0.0 -es - fr 2 238 2030 0.0 0.0 -es - fr 2 239 2030 0.0 0.0 -es - fr 2 240 2030 0.0 0.0 -es - fr 2 241 2030 0.0 0.0 -es - fr 2 242 2030 0.0 0.0 -es - fr 2 243 2030 0.0 0.0 -es - fr 2 244 2030 0.0 0.0 -es - fr 2 245 2030 0.0 0.0 -es - fr 2 246 2030 0.0 0.0 -es - fr 2 247 2030 0.0 0.0 -es - fr 2 248 2030 0.0 0.0 -es - fr 2 249 2030 0.0 0.0 -es - fr 2 250 2030 0.0 0.0 -es - fr 2 251 2030 0.0 0.0 -es - fr 2 252 2030 0.0 0.0 -es - fr 2 253 2030 0.0 0.0 -es - fr 2 254 2030 0.0 0.0 -es - fr 2 255 2030 0.0 0.0 -es - fr 2 256 2030 0.0 0.0 -es - fr 2 257 2030 0.0 0.0 -es - fr 2 258 2030 0.0 0.0 -es - fr 2 259 2030 0.0 0.0 -es - fr 2 260 2030 0.0 0.0 -es - fr 2 261 2030 0.0 0.0 -es - fr 2 262 2030 0.0 0.0 -es - fr 2 263 2030 0.0 0.0 -es - fr 2 264 2030 0.0 0.0 -es - fr 2 265 2030 0.0 0.0 -es - fr 2 266 2030 0.0 0.0 -es - fr 2 267 2030 0.0 0.0 -es - fr 2 268 2030 0.0 0.0 -es - fr 2 269 2030 0.0 0.0 -es - fr 2 270 2030 0.0 0.0 -es - fr 2 271 2030 0.0 0.0 -es - fr 2 272 2030 0.0 0.0 -es - fr 2 273 2030 0.0 0.0 -es - fr 2 274 2030 0.0 0.0 -es - fr 2 275 2030 0.0 0.0 -es - fr 2 276 2030 0.0 0.0 -es - fr 2 277 2030 0.0 0.0 -es - fr 2 278 2030 0.0 0.0 -es - fr 2 279 2030 0.0 0.0 -es - fr 2 280 2030 0.0 0.0 -es - fr 2 281 2030 0.0 0.0 -es - fr 2 282 2030 0.0 0.0 -es - fr 2 283 2030 0.0 0.0 -es - fr 2 284 2030 0.0 0.0 -es - fr 2 285 2030 0.0 0.0 -es - fr 2 286 2030 0.0 0.0 -es - fr 2 287 2030 0.0 0.0 -es - fr 2 288 2030 0.0 0.0 -es - fr 2 289 2030 0.0 0.0 -es - fr 2 290 2030 0.0 0.0 -es - fr 2 291 2030 0.0 0.0 -es - fr 2 292 2030 0.0 0.0 -es - fr 2 293 2030 0.0 0.0 -es - fr 2 294 2030 0.0 0.0 -es - fr 2 295 2030 0.0 0.0 -es - fr 2 296 2030 0.0 0.0 -es - fr 2 297 2030 0.0 0.0 -es - fr 2 298 2030 0.0 0.0 -es - fr 2 299 2030 0.0 0.0 -es - fr 2 300 2030 0.0 0.0 -es - fr 2 301 2030 0.0 0.0 -es - fr 2 302 2030 0.0 0.0 -es - fr 2 303 2030 0.0 0.0 -es - fr 2 304 2030 0.0 0.0 -es - fr 2 305 2030 0.0 0.0 -es - fr 2 306 2030 0.0 0.0 -es - fr 2 307 2030 0.0 0.0 -es - fr 2 308 2030 0.0 0.0 -es - fr 2 309 2030 0.0 0.0 -es - fr 2 310 2030 0.0 0.0 -es - fr 2 311 2030 0.0 0.0 -es - fr 2 312 2030 0.0 0.0 -es - fr 2 313 2030 0.0 0.0 -es - fr 2 314 2030 0.0 0.0 -es - fr 2 315 2030 0.0 0.0 -es - fr 2 316 2030 0.0 0.0 -es - fr 2 317 2030 0.0 0.0 -es - fr 2 318 2030 0.0 0.0 -es - fr 2 319 2030 0.0 0.0 -es - fr 2 320 2030 0.0 0.0 -es - fr 2 321 2030 0.0 0.0 -es - fr 2 322 2030 0.0 0.0 -es - fr 2 323 2030 0.0 0.0 -es - fr 2 324 2030 0.0 0.0 -es - fr 2 325 2030 0.0 0.0 -es - fr 2 326 2030 0.0 0.0 -es - fr 2 327 2030 0.0 0.0 -es - fr 2 328 2030 0.0 0.0 -es - fr 2 329 2030 0.0 0.0 -es - fr 2 330 2030 0.0 0.0 -es - fr 2 331 2030 0.0 0.0 -es - fr 2 332 2030 0.0 0.0 -es - fr 2 333 2030 0.0 0.0 -es - fr 2 334 2030 0.0 0.0 -es - fr 2 335 2030 0.0 0.0 -es - fr 2 336 2030 0.0 0.0 -fr - it 2 1 2030 0.0 0.0 -fr - it 2 2 2030 0.0 0.0 -fr - it 2 3 2030 0.0 0.0 -fr - it 2 4 2030 0.0 0.0 -fr - it 2 5 2030 0.0 0.0 -fr - it 2 6 2030 0.0 0.0 -fr - it 2 7 2030 0.0 0.0 -fr - it 2 8 2030 0.0 0.0 -fr - it 2 9 2030 0.0 0.0 -fr - it 2 10 2030 0.0 0.0 -fr - it 2 11 2030 0.0 0.0 -fr - it 2 12 2030 0.0 0.0 -fr - it 2 13 2030 0.0 0.0 -fr - it 2 14 2030 0.0 0.0 -fr - it 2 15 2030 0.0 0.0 -fr - it 2 16 2030 0.0 0.0 -fr - it 2 17 2030 0.0 0.0 -fr - it 2 18 2030 0.0 0.0 -fr - it 2 19 2030 0.0 0.0 -fr - it 2 20 2030 0.0 0.0 -fr - it 2 21 2030 0.0 0.0 -fr - it 2 22 2030 0.0 0.0 -fr - it 2 23 2030 0.0 0.0 -fr - it 2 24 2030 0.0 0.0 -fr - it 2 25 2030 0.0 0.0 -fr - it 2 26 2030 0.0 0.0 -fr - it 2 27 2030 0.0 0.0 -fr - it 2 28 2030 0.0 0.0 -fr - it 2 29 2030 0.0 0.0 -fr - it 2 30 2030 0.0 0.0 -fr - it 2 31 2030 0.0 0.0 -fr - it 2 32 2030 0.0 0.0 -fr - it 2 33 2030 0.0 0.0 -fr - it 2 34 2030 0.0 0.0 -fr - it 2 35 2030 0.0 0.0 -fr - it 2 36 2030 0.0 0.0 -fr - it 2 37 2030 0.0 0.0 -fr - it 2 38 2030 0.0 0.0 -fr - it 2 39 2030 0.0 0.0 -fr - it 2 40 2030 0.0 0.0 -fr - it 2 41 2030 0.0 0.0 -fr - it 2 42 2030 0.0 0.0 -fr - it 2 43 2030 0.0 0.0 -fr - it 2 44 2030 0.0 0.0 -fr - it 2 45 2030 0.0 0.0 -fr - it 2 46 2030 0.0 0.0 -fr - it 2 47 2030 0.0 0.0 -fr - it 2 48 2030 0.0 0.0 -fr - it 2 49 2030 0.0 0.0 -fr - it 2 50 2030 0.0 0.0 -fr - it 2 51 2030 0.0 0.0 -fr - it 2 52 2030 0.0 0.0 -fr - it 2 53 2030 0.0 0.0 -fr - it 2 54 2030 0.0 0.0 -fr - it 2 55 2030 0.0 0.0 -fr - it 2 56 2030 0.0 0.0 -fr - it 2 57 2030 0.0 0.0 -fr - it 2 58 2030 0.0 0.0 -fr - it 2 59 2030 0.0 0.0 -fr - it 2 60 2030 0.0 0.0 -fr - it 2 61 2030 0.0 0.0 -fr - it 2 62 2030 0.0 0.0 -fr - it 2 63 2030 0.0 0.0 -fr - it 2 64 2030 0.0 0.0 -fr - it 2 65 2030 0.0 0.0 -fr - it 2 66 2030 0.0 0.0 -fr - it 2 67 2030 0.0 0.0 -fr - it 2 68 2030 0.0 0.0 -fr - it 2 69 2030 0.0 0.0 -fr - it 2 70 2030 0.0 0.0 -fr - it 2 71 2030 0.0 0.0 -fr - it 2 72 2030 0.0 0.0 -fr - it 2 73 2030 0.0 0.0 -fr - it 2 74 2030 0.0 0.0 -fr - it 2 75 2030 0.0 0.0 -fr - it 2 76 2030 0.0 0.0 -fr - it 2 77 2030 0.0 0.0 -fr - it 2 78 2030 0.0 0.0 -fr - it 2 79 2030 0.0 0.0 -fr - it 2 80 2030 0.0 0.0 -fr - it 2 81 2030 0.0 0.0 -fr - it 2 82 2030 0.0 0.0 -fr - it 2 83 2030 0.0 0.0 -fr - it 2 84 2030 0.0 0.0 -fr - it 2 85 2030 0.0 0.0 -fr - it 2 86 2030 0.0 0.0 -fr - it 2 87 2030 0.0 0.0 -fr - it 2 88 2030 0.0 0.0 -fr - it 2 89 2030 0.0 0.0 -fr - it 2 90 2030 0.0 0.0 -fr - it 2 91 2030 0.0 0.0 -fr - it 2 92 2030 0.0 0.0 -fr - it 2 93 2030 0.0 0.0 -fr - it 2 94 2030 0.0 0.0 -fr - it 2 95 2030 0.0 0.0 -fr - it 2 96 2030 0.0 0.0 -fr - it 2 97 2030 0.0 0.0 -fr - it 2 98 2030 0.0 0.0 -fr - it 2 99 2030 0.0 0.0 -fr - it 2 100 2030 0.0 0.0 -fr - it 2 101 2030 0.0 0.0 -fr - it 2 102 2030 0.0 0.0 -fr - it 2 103 2030 0.0 0.0 -fr - it 2 104 2030 0.0 0.0 -fr - it 2 105 2030 0.0 0.0 -fr - it 2 106 2030 0.0 0.0 -fr - it 2 107 2030 0.0 0.0 -fr - it 2 108 2030 0.0 0.0 -fr - it 2 109 2030 0.0 0.0 -fr - it 2 110 2030 0.0 0.0 -fr - it 2 111 2030 0.0 0.0 -fr - it 2 112 2030 0.0 0.0 -fr - it 2 113 2030 0.0 0.0 -fr - it 2 114 2030 0.0 0.0 -fr - it 2 115 2030 0.0 0.0 -fr - it 2 116 2030 0.0 0.0 -fr - it 2 117 2030 0.0 0.0 -fr - it 2 118 2030 0.0 0.0 -fr - it 2 119 2030 0.0 0.0 -fr - it 2 120 2030 0.0 0.0 -fr - it 2 121 2030 0.0 0.0 -fr - it 2 122 2030 0.0 0.0 -fr - it 2 123 2030 0.0 0.0 -fr - it 2 124 2030 0.0 0.0 -fr - it 2 125 2030 0.0 0.0 -fr - it 2 126 2030 0.0 0.0 -fr - it 2 127 2030 0.0 0.0 -fr - it 2 128 2030 0.0 0.0 -fr - it 2 129 2030 0.0 0.0 -fr - it 2 130 2030 0.0 0.0 -fr - it 2 131 2030 0.0 0.0 -fr - it 2 132 2030 0.0 0.0 -fr - it 2 133 2030 0.0 0.0 -fr - it 2 134 2030 0.0 0.0 -fr - it 2 135 2030 0.0 0.0 -fr - it 2 136 2030 0.0 0.0 -fr - it 2 137 2030 0.0 0.0 -fr - it 2 138 2030 0.0 0.0 -fr - it 2 139 2030 0.0 0.0 -fr - it 2 140 2030 0.0 0.0 -fr - it 2 141 2030 0.0 0.0 -fr - it 2 142 2030 0.0 0.0 -fr - it 2 143 2030 0.0 0.0 -fr - it 2 144 2030 0.0 0.0 -fr - it 2 145 2030 0.0 0.0 -fr - it 2 146 2030 0.0 0.0 -fr - it 2 147 2030 0.0 0.0 -fr - it 2 148 2030 0.0 0.0 -fr - it 2 149 2030 0.0 0.0 -fr - it 2 150 2030 0.0 0.0 -fr - it 2 151 2030 0.0 0.0 -fr - it 2 152 2030 0.0 0.0 -fr - it 2 153 2030 0.0 0.0 -fr - it 2 154 2030 0.0 0.0 -fr - it 2 155 2030 0.0 0.0 -fr - it 2 156 2030 0.0 0.0 -fr - it 2 157 2030 0.0 0.0 -fr - it 2 158 2030 0.0 0.0 -fr - it 2 159 2030 0.0 0.0 -fr - it 2 160 2030 0.0 0.0 -fr - it 2 161 2030 0.0 0.0 -fr - it 2 162 2030 0.0 0.0 -fr - it 2 163 2030 0.0 0.0 -fr - it 2 164 2030 0.0 0.0 -fr - it 2 165 2030 0.0 0.0 -fr - it 2 166 2030 0.0 0.0 -fr - it 2 167 2030 0.0 0.0 -fr - it 2 168 2030 0.0 0.0 -fr - it 2 169 2030 0.0 0.0 -fr - it 2 170 2030 0.0 0.0 -fr - it 2 171 2030 0.0 0.0 -fr - it 2 172 2030 0.0 0.0 -fr - it 2 173 2030 0.0 0.0 -fr - it 2 174 2030 0.0 0.0 -fr - it 2 175 2030 0.0 0.0 -fr - it 2 176 2030 0.0 0.0 -fr - it 2 177 2030 0.0 0.0 -fr - it 2 178 2030 0.0 0.0 -fr - it 2 179 2030 0.0 0.0 -fr - it 2 180 2030 0.0 0.0 -fr - it 2 181 2030 0.0 0.0 -fr - it 2 182 2030 0.0 0.0 -fr - it 2 183 2030 0.0 0.0 -fr - it 2 184 2030 0.0 0.0 -fr - it 2 185 2030 0.0 0.0 -fr - it 2 186 2030 0.0 0.0 -fr - it 2 187 2030 0.0 0.0 -fr - it 2 188 2030 0.0 0.0 -fr - it 2 189 2030 0.0 0.0 -fr - it 2 190 2030 0.0 0.0 -fr - it 2 191 2030 0.0 0.0 -fr - it 2 192 2030 0.0 0.0 -fr - it 2 193 2030 0.0 0.0 -fr - it 2 194 2030 0.0 0.0 -fr - it 2 195 2030 0.0 0.0 -fr - it 2 196 2030 0.0 0.0 -fr - it 2 197 2030 0.0 0.0 -fr - it 2 198 2030 0.0 0.0 -fr - it 2 199 2030 0.0 0.0 -fr - it 2 200 2030 0.0 0.0 -fr - it 2 201 2030 0.0 0.0 -fr - it 2 202 2030 0.0 0.0 -fr - it 2 203 2030 0.0 0.0 -fr - it 2 204 2030 0.0 0.0 -fr - it 2 205 2030 0.0 0.0 -fr - it 2 206 2030 0.0 0.0 -fr - it 2 207 2030 0.0 0.0 -fr - it 2 208 2030 0.0 0.0 -fr - it 2 209 2030 0.0 0.0 -fr - it 2 210 2030 0.0 0.0 -fr - it 2 211 2030 0.0 0.0 -fr - it 2 212 2030 0.0 0.0 -fr - it 2 213 2030 0.0 0.0 -fr - it 2 214 2030 0.0 0.0 -fr - it 2 215 2030 0.0 0.0 -fr - it 2 216 2030 0.0 0.0 -fr - it 2 217 2030 0.0 0.0 -fr - it 2 218 2030 0.0 0.0 -fr - it 2 219 2030 0.0 0.0 -fr - it 2 220 2030 0.0 0.0 -fr - it 2 221 2030 0.0 0.0 -fr - it 2 222 2030 0.0 0.0 -fr - it 2 223 2030 0.0 0.0 -fr - it 2 224 2030 0.0 0.0 -fr - it 2 225 2030 0.0 0.0 -fr - it 2 226 2030 0.0 0.0 -fr - it 2 227 2030 0.0 0.0 -fr - it 2 228 2030 0.0 0.0 -fr - it 2 229 2030 0.0 0.0 -fr - it 2 230 2030 0.0 0.0 -fr - it 2 231 2030 0.0 0.0 -fr - it 2 232 2030 0.0 0.0 -fr - it 2 233 2030 0.0 0.0 -fr - it 2 234 2030 0.0 0.0 -fr - it 2 235 2030 0.0 0.0 -fr - it 2 236 2030 0.0 0.0 -fr - it 2 237 2030 0.0 0.0 -fr - it 2 238 2030 0.0 0.0 -fr - it 2 239 2030 0.0 0.0 -fr - it 2 240 2030 0.0 0.0 -fr - it 2 241 2030 0.0 0.0 -fr - it 2 242 2030 0.0 0.0 -fr - it 2 243 2030 0.0 0.0 -fr - it 2 244 2030 0.0 0.0 -fr - it 2 245 2030 0.0 0.0 -fr - it 2 246 2030 0.0 0.0 -fr - it 2 247 2030 0.0 0.0 -fr - it 2 248 2030 0.0 0.0 -fr - it 2 249 2030 0.0 0.0 -fr - it 2 250 2030 0.0 0.0 -fr - it 2 251 2030 0.0 0.0 -fr - it 2 252 2030 0.0 0.0 -fr - it 2 253 2030 0.0 0.0 -fr - it 2 254 2030 0.0 0.0 -fr - it 2 255 2030 0.0 0.0 -fr - it 2 256 2030 0.0 0.0 -fr - it 2 257 2030 0.0 0.0 -fr - it 2 258 2030 0.0 0.0 -fr - it 2 259 2030 0.0 0.0 -fr - it 2 260 2030 0.0 0.0 -fr - it 2 261 2030 0.0 0.0 -fr - it 2 262 2030 0.0 0.0 -fr - it 2 263 2030 0.0 0.0 -fr - it 2 264 2030 0.0 0.0 -fr - it 2 265 2030 0.0 0.0 -fr - it 2 266 2030 0.0 0.0 -fr - it 2 267 2030 0.0 0.0 -fr - it 2 268 2030 0.0 0.0 -fr - it 2 269 2030 0.0 0.0 -fr - it 2 270 2030 0.0 0.0 -fr - it 2 271 2030 0.0 0.0 -fr - it 2 272 2030 0.0 0.0 -fr - it 2 273 2030 0.0 0.0 -fr - it 2 274 2030 0.0 0.0 -fr - it 2 275 2030 0.0 0.0 -fr - it 2 276 2030 0.0 0.0 -fr - it 2 277 2030 0.0 0.0 -fr - it 2 278 2030 0.0 0.0 -fr - it 2 279 2030 0.0 0.0 -fr - it 2 280 2030 0.0 0.0 -fr - it 2 281 2030 0.0 0.0 -fr - it 2 282 2030 0.0 0.0 -fr - it 2 283 2030 0.0 0.0 -fr - it 2 284 2030 0.0 0.0 -fr - it 2 285 2030 0.0 0.0 -fr - it 2 286 2030 0.0 0.0 -fr - it 2 287 2030 0.0 0.0 -fr - it 2 288 2030 0.0 0.0 -fr - it 2 289 2030 0.0 0.0 -fr - it 2 290 2030 0.0 0.0 -fr - it 2 291 2030 0.0 0.0 -fr - it 2 292 2030 0.0 0.0 -fr - it 2 293 2030 0.0 0.0 -fr - it 2 294 2030 0.0 0.0 -fr - it 2 295 2030 0.0 0.0 -fr - it 2 296 2030 0.0 0.0 -fr - it 2 297 2030 0.0 0.0 -fr - it 2 298 2030 0.0 0.0 -fr - it 2 299 2030 0.0 0.0 -fr - it 2 300 2030 0.0 0.0 -fr - it 2 301 2030 0.0 0.0 -fr - it 2 302 2030 0.0 0.0 -fr - it 2 303 2030 0.0 0.0 -fr - it 2 304 2030 0.0 0.0 -fr - it 2 305 2030 0.0 0.0 -fr - it 2 306 2030 0.0 0.0 -fr - it 2 307 2030 0.0 0.0 -fr - it 2 308 2030 0.0 0.0 -fr - it 2 309 2030 0.0 0.0 -fr - it 2 310 2030 0.0 0.0 -fr - it 2 311 2030 0.0 0.0 -fr - it 2 312 2030 0.0 0.0 -fr - it 2 313 2030 0.0 0.0 -fr - it 2 314 2030 0.0 0.0 -fr - it 2 315 2030 0.0 0.0 -fr - it 2 316 2030 0.0 0.0 -fr - it 2 317 2030 0.0 0.0 -fr - it 2 318 2030 0.0 0.0 -fr - it 2 319 2030 0.0 0.0 -fr - it 2 320 2030 0.0 0.0 -fr - it 2 321 2030 0.0 0.0 -fr - it 2 322 2030 0.0 0.0 -fr - it 2 323 2030 0.0 0.0 -fr - it 2 324 2030 0.0 0.0 -fr - it 2 325 2030 0.0 0.0 -fr - it 2 326 2030 0.0 0.0 -fr - it 2 327 2030 0.0 0.0 -fr - it 2 328 2030 0.0 0.0 -fr - it 2 329 2030 0.0 0.0 -fr - it 2 330 2030 0.0 0.0 -fr - it 2 331 2030 0.0 0.0 -fr - it 2 332 2030 0.0 0.0 -fr - it 2 333 2030 0.0 0.0 -fr - it 2 334 2030 0.0 0.0 -fr - it 2 335 2030 0.0 0.0 -fr - it 2 336 2030 0.0 0.0 +link mcYear timeId UCAP LIN. FLOW QUAD. +de - fr 1 1 0.0 0.0 +de - fr 1 2 0.0 0.0 +de - fr 1 3 0.0 0.0 +de - fr 1 4 0.0 0.0 +de - fr 1 5 0.0 0.0 +de - fr 1 6 0.0 0.0 +de - fr 1 7 0.0 0.0 +de - fr 1 8 0.0 0.0 +de - fr 1 9 0.0 0.0 +de - fr 1 10 0.0 0.0 +de - fr 1 11 0.0 0.0 +de - fr 1 12 0.0 0.0 +de - fr 1 13 0.0 0.0 +de - fr 1 14 0.0 0.0 +de - fr 1 15 0.0 0.0 +de - fr 1 16 0.0 0.0 +de - fr 1 17 0.0 0.0 +de - fr 1 18 0.0 0.0 +de - fr 1 19 0.0 0.0 +de - fr 1 20 0.0 0.0 +de - fr 1 21 0.0 0.0 +de - fr 1 22 0.0 0.0 +de - fr 1 23 0.0 0.0 +de - fr 1 24 0.0 0.0 +de - fr 1 25 0.0 0.0 +de - fr 1 26 0.0 0.0 +de - fr 1 27 0.0 0.0 +de - fr 1 28 0.0 0.0 +de - fr 1 29 0.0 0.0 +de - fr 1 30 0.0 0.0 +de - fr 1 31 0.0 0.0 +de - fr 1 32 0.0 0.0 +de - fr 1 33 0.0 0.0 +de - fr 1 34 0.0 0.0 +de - fr 1 35 0.0 0.0 +de - fr 1 36 0.0 0.0 +de - fr 1 37 0.0 0.0 +de - fr 1 38 0.0 0.0 +de - fr 1 39 0.0 0.0 +de - fr 1 40 0.0 0.0 +de - fr 1 41 0.0 0.0 +de - fr 1 42 0.0 0.0 +de - fr 1 43 0.0 0.0 +de - fr 1 44 0.0 0.0 +de - fr 1 45 0.0 0.0 +de - fr 1 46 0.0 0.0 +de - fr 1 47 0.0 0.0 +de - fr 1 48 0.0 0.0 +de - fr 1 49 0.0 0.0 +de - fr 1 50 0.0 0.0 +de - fr 1 51 0.0 0.0 +de - fr 1 52 0.0 0.0 +de - fr 1 53 0.0 0.0 +de - fr 1 54 0.0 0.0 +de - fr 1 55 0.0 0.0 +de - fr 1 56 0.0 0.0 +de - fr 1 57 0.0 0.0 +de - fr 1 58 0.0 0.0 +de - fr 1 59 0.0 0.0 +de - fr 1 60 0.0 0.0 +de - fr 1 61 0.0 0.0 +de - fr 1 62 0.0 0.0 +de - fr 1 63 0.0 0.0 +de - fr 1 64 0.0 0.0 +de - fr 1 65 0.0 0.0 +de - fr 1 66 0.0 0.0 +de - fr 1 67 0.0 0.0 +de - fr 1 68 0.0 0.0 +de - fr 1 69 0.0 0.0 +de - fr 1 70 0.0 0.0 +de - fr 1 71 0.0 0.0 +de - fr 1 72 0.0 0.0 +de - fr 1 73 0.0 0.0 +de - fr 1 74 0.0 0.0 +de - fr 1 75 0.0 0.0 +de - fr 1 76 0.0 0.0 +de - fr 1 77 0.0 0.0 +de - fr 1 78 0.0 0.0 +de - fr 1 79 0.0 0.0 +de - fr 1 80 0.0 0.0 +de - fr 1 81 0.0 0.0 +de - fr 1 82 0.0 0.0 +de - fr 1 83 0.0 0.0 +de - fr 1 84 0.0 0.0 +de - fr 1 85 0.0 0.0 +de - fr 1 86 0.0 0.0 +de - fr 1 87 0.0 0.0 +de - fr 1 88 0.0 0.0 +de - fr 1 89 0.0 0.0 +de - fr 1 90 0.0 0.0 +de - fr 1 91 0.0 0.0 +de - fr 1 92 0.0 0.0 +de - fr 1 93 0.0 0.0 +de - fr 1 94 0.0 0.0 +de - fr 1 95 0.0 0.0 +de - fr 1 96 0.0 0.0 +de - fr 1 97 0.0 0.0 +de - fr 1 98 0.0 0.0 +de - fr 1 99 0.0 0.0 +de - fr 1 100 0.0 0.0 +de - fr 1 101 0.0 0.0 +de - fr 1 102 0.0 0.0 +de - fr 1 103 0.0 0.0 +de - fr 1 104 0.0 0.0 +de - fr 1 105 0.0 0.0 +de - fr 1 106 0.0 0.0 +de - fr 1 107 0.0 0.0 +de - fr 1 108 0.0 0.0 +de - fr 1 109 0.0 0.0 +de - fr 1 110 0.0 0.0 +de - fr 1 111 0.0 0.0 +de - fr 1 112 0.0 0.0 +de - fr 1 113 0.0 0.0 +de - fr 1 114 0.0 0.0 +de - fr 1 115 0.0 0.0 +de - fr 1 116 0.0 0.0 +de - fr 1 117 0.0 0.0 +de - fr 1 118 0.0 0.0 +de - fr 1 119 0.0 0.0 +de - fr 1 120 0.0 0.0 +de - fr 1 121 0.0 0.0 +de - fr 1 122 0.0 0.0 +de - fr 1 123 0.0 0.0 +de - fr 1 124 0.0 0.0 +de - fr 1 125 0.0 0.0 +de - fr 1 126 0.0 0.0 +de - fr 1 127 0.0 0.0 +de - fr 1 128 0.0 0.0 +de - fr 1 129 0.0 0.0 +de - fr 1 130 0.0 0.0 +de - fr 1 131 0.0 0.0 +de - fr 1 132 0.0 0.0 +de - fr 1 133 0.0 0.0 +de - fr 1 134 0.0 0.0 +de - fr 1 135 0.0 0.0 +de - fr 1 136 0.0 0.0 +de - fr 1 137 0.0 0.0 +de - fr 1 138 0.0 0.0 +de - fr 1 139 0.0 0.0 +de - fr 1 140 0.0 0.0 +de - fr 1 141 0.0 0.0 +de - fr 1 142 0.0 0.0 +de - fr 1 143 0.0 0.0 +de - fr 1 144 0.0 0.0 +de - fr 1 145 0.0 0.0 +de - fr 1 146 0.0 0.0 +de - fr 1 147 0.0 0.0 +de - fr 1 148 0.0 0.0 +de - fr 1 149 0.0 0.0 +de - fr 1 150 0.0 0.0 +de - fr 1 151 0.0 0.0 +de - fr 1 152 0.0 0.0 +de - fr 1 153 0.0 0.0 +de - fr 1 154 0.0 0.0 +de - fr 1 155 0.0 0.0 +de - fr 1 156 0.0 0.0 +de - fr 1 157 0.0 0.0 +de - fr 1 158 0.0 0.0 +de - fr 1 159 0.0 0.0 +de - fr 1 160 0.0 0.0 +de - fr 1 161 0.0 0.0 +de - fr 1 162 0.0 0.0 +de - fr 1 163 0.0 0.0 +de - fr 1 164 0.0 0.0 +de - fr 1 165 0.0 0.0 +de - fr 1 166 0.0 0.0 +de - fr 1 167 0.0 0.0 +de - fr 1 168 0.0 0.0 +de - fr 1 169 0.0 0.0 +de - fr 1 170 0.0 0.0 +de - fr 1 171 0.0 0.0 +de - fr 1 172 0.0 0.0 +de - fr 1 173 0.0 0.0 +de - fr 1 174 0.0 0.0 +de - fr 1 175 0.0 0.0 +de - fr 1 176 0.0 0.0 +de - fr 1 177 0.0 0.0 +de - fr 1 178 0.0 0.0 +de - fr 1 179 0.0 0.0 +de - fr 1 180 0.0 0.0 +de - fr 1 181 0.0 0.0 +de - fr 1 182 0.0 0.0 +de - fr 1 183 0.0 0.0 +de - fr 1 184 0.0 0.0 +de - fr 1 185 0.0 0.0 +de - fr 1 186 0.0 0.0 +de - fr 1 187 0.0 0.0 +de - fr 1 188 0.0 0.0 +de - fr 1 189 0.0 0.0 +de - fr 1 190 0.0 0.0 +de - fr 1 191 0.0 0.0 +de - fr 1 192 0.0 0.0 +de - fr 1 193 0.0 0.0 +de - fr 1 194 0.0 0.0 +de - fr 1 195 0.0 0.0 +de - fr 1 196 0.0 0.0 +de - fr 1 197 0.0 0.0 +de - fr 1 198 0.0 0.0 +de - fr 1 199 0.0 0.0 +de - fr 1 200 0.0 0.0 +de - fr 1 201 0.0 0.0 +de - fr 1 202 0.0 0.0 +de - fr 1 203 0.0 0.0 +de - fr 1 204 0.0 0.0 +de - fr 1 205 0.0 0.0 +de - fr 1 206 0.0 0.0 +de - fr 1 207 0.0 0.0 +de - fr 1 208 0.0 0.0 +de - fr 1 209 0.0 0.0 +de - fr 1 210 0.0 0.0 +de - fr 1 211 0.0 0.0 +de - fr 1 212 0.0 0.0 +de - fr 1 213 0.0 0.0 +de - fr 1 214 0.0 0.0 +de - fr 1 215 0.0 0.0 +de - fr 1 216 0.0 0.0 +de - fr 1 217 0.0 0.0 +de - fr 1 218 0.0 0.0 +de - fr 1 219 0.0 0.0 +de - fr 1 220 0.0 0.0 +de - fr 1 221 0.0 0.0 +de - fr 1 222 0.0 0.0 +de - fr 1 223 0.0 0.0 +de - fr 1 224 0.0 0.0 +de - fr 1 225 0.0 0.0 +de - fr 1 226 0.0 0.0 +de - fr 1 227 0.0 0.0 +de - fr 1 228 0.0 0.0 +de - fr 1 229 0.0 0.0 +de - fr 1 230 0.0 0.0 +de - fr 1 231 0.0 0.0 +de - fr 1 232 0.0 0.0 +de - fr 1 233 0.0 0.0 +de - fr 1 234 0.0 0.0 +de - fr 1 235 0.0 0.0 +de - fr 1 236 0.0 0.0 +de - fr 1 237 0.0 0.0 +de - fr 1 238 0.0 0.0 +de - fr 1 239 0.0 0.0 +de - fr 1 240 0.0 0.0 +de - fr 1 241 0.0 0.0 +de - fr 1 242 0.0 0.0 +de - fr 1 243 0.0 0.0 +de - fr 1 244 0.0 0.0 +de - fr 1 245 0.0 0.0 +de - fr 1 246 0.0 0.0 +de - fr 1 247 0.0 0.0 +de - fr 1 248 0.0 0.0 +de - fr 1 249 0.0 0.0 +de - fr 1 250 0.0 0.0 +de - fr 1 251 0.0 0.0 +de - fr 1 252 0.0 0.0 +de - fr 1 253 0.0 0.0 +de - fr 1 254 0.0 0.0 +de - fr 1 255 0.0 0.0 +de - fr 1 256 0.0 0.0 +de - fr 1 257 0.0 0.0 +de - fr 1 258 0.0 0.0 +de - fr 1 259 0.0 0.0 +de - fr 1 260 0.0 0.0 +de - fr 1 261 0.0 0.0 +de - fr 1 262 0.0 0.0 +de - fr 1 263 0.0 0.0 +de - fr 1 264 0.0 0.0 +de - fr 1 265 0.0 0.0 +de - fr 1 266 0.0 0.0 +de - fr 1 267 0.0 0.0 +de - fr 1 268 0.0 0.0 +de - fr 1 269 0.0 0.0 +de - fr 1 270 0.0 0.0 +de - fr 1 271 0.0 0.0 +de - fr 1 272 0.0 0.0 +de - fr 1 273 0.0 0.0 +de - fr 1 274 0.0 0.0 +de - fr 1 275 0.0 0.0 +de - fr 1 276 0.0 0.0 +de - fr 1 277 0.0 0.0 +de - fr 1 278 0.0 0.0 +de - fr 1 279 0.0 0.0 +de - fr 1 280 0.0 0.0 +de - fr 1 281 0.0 0.0 +de - fr 1 282 0.0 0.0 +de - fr 1 283 0.0 0.0 +de - fr 1 284 0.0 0.0 +de - fr 1 285 0.0 0.0 +de - fr 1 286 0.0 0.0 +de - fr 1 287 0.0 0.0 +de - fr 1 288 0.0 0.0 +de - fr 1 289 0.0 0.0 +de - fr 1 290 0.0 0.0 +de - fr 1 291 0.0 0.0 +de - fr 1 292 0.0 0.0 +de - fr 1 293 0.0 0.0 +de - fr 1 294 0.0 0.0 +de - fr 1 295 0.0 0.0 +de - fr 1 296 0.0 0.0 +de - fr 1 297 0.0 0.0 +de - fr 1 298 0.0 0.0 +de - fr 1 299 0.0 0.0 +de - fr 1 300 0.0 0.0 +de - fr 1 301 0.0 0.0 +de - fr 1 302 0.0 0.0 +de - fr 1 303 0.0 0.0 +de - fr 1 304 0.0 0.0 +de - fr 1 305 0.0 0.0 +de - fr 1 306 0.0 0.0 +de - fr 1 307 0.0 0.0 +de - fr 1 308 0.0 0.0 +de - fr 1 309 0.0 0.0 +de - fr 1 310 0.0 0.0 +de - fr 1 311 0.0 0.0 +de - fr 1 312 0.0 0.0 +de - fr 1 313 0.0 0.0 +de - fr 1 314 0.0 0.0 +de - fr 1 315 0.0 0.0 +de - fr 1 316 0.0 0.0 +de - fr 1 317 0.0 0.0 +de - fr 1 318 0.0 0.0 +de - fr 1 319 0.0 0.0 +de - fr 1 320 0.0 0.0 +de - fr 1 321 0.0 0.0 +de - fr 1 322 0.0 0.0 +de - fr 1 323 0.0 0.0 +de - fr 1 324 0.0 0.0 +de - fr 1 325 0.0 0.0 +de - fr 1 326 0.0 0.0 +de - fr 1 327 0.0 0.0 +de - fr 1 328 0.0 0.0 +de - fr 1 329 0.0 0.0 +de - fr 1 330 0.0 0.0 +de - fr 1 331 0.0 0.0 +de - fr 1 332 0.0 0.0 +de - fr 1 333 0.0 0.0 +de - fr 1 334 0.0 0.0 +de - fr 1 335 0.0 0.0 +de - fr 1 336 0.0 0.0 +es - fr 1 1 0.0 0.0 +es - fr 1 2 0.0 0.0 +es - fr 1 3 0.0 0.0 +es - fr 1 4 0.0 0.0 +es - fr 1 5 0.0 0.0 +es - fr 1 6 0.0 0.0 +es - fr 1 7 0.0 0.0 +es - fr 1 8 0.0 0.0 +es - fr 1 9 0.0 0.0 +es - fr 1 10 0.0 0.0 +es - fr 1 11 0.0 0.0 +es - fr 1 12 0.0 0.0 +es - fr 1 13 0.0 0.0 +es - fr 1 14 0.0 0.0 +es - fr 1 15 0.0 0.0 +es - fr 1 16 0.0 0.0 +es - fr 1 17 0.0 0.0 +es - fr 1 18 0.0 0.0 +es - fr 1 19 0.0 0.0 +es - fr 1 20 0.0 0.0 +es - fr 1 21 0.0 0.0 +es - fr 1 22 0.0 0.0 +es - fr 1 23 0.0 0.0 +es - fr 1 24 0.0 0.0 +es - fr 1 25 0.0 0.0 +es - fr 1 26 0.0 0.0 +es - fr 1 27 0.0 0.0 +es - fr 1 28 0.0 0.0 +es - fr 1 29 0.0 0.0 +es - fr 1 30 0.0 0.0 +es - fr 1 31 0.0 0.0 +es - fr 1 32 0.0 0.0 +es - fr 1 33 0.0 0.0 +es - fr 1 34 0.0 0.0 +es - fr 1 35 0.0 0.0 +es - fr 1 36 0.0 0.0 +es - fr 1 37 0.0 0.0 +es - fr 1 38 0.0 0.0 +es - fr 1 39 0.0 0.0 +es - fr 1 40 0.0 0.0 +es - fr 1 41 0.0 0.0 +es - fr 1 42 0.0 0.0 +es - fr 1 43 0.0 0.0 +es - fr 1 44 0.0 0.0 +es - fr 1 45 0.0 0.0 +es - fr 1 46 0.0 0.0 +es - fr 1 47 0.0 0.0 +es - fr 1 48 0.0 0.0 +es - fr 1 49 0.0 0.0 +es - fr 1 50 0.0 0.0 +es - fr 1 51 0.0 0.0 +es - fr 1 52 0.0 0.0 +es - fr 1 53 0.0 0.0 +es - fr 1 54 0.0 0.0 +es - fr 1 55 0.0 0.0 +es - fr 1 56 0.0 0.0 +es - fr 1 57 0.0 0.0 +es - fr 1 58 0.0 0.0 +es - fr 1 59 0.0 0.0 +es - fr 1 60 0.0 0.0 +es - fr 1 61 0.0 0.0 +es - fr 1 62 0.0 0.0 +es - fr 1 63 0.0 0.0 +es - fr 1 64 0.0 0.0 +es - fr 1 65 0.0 0.0 +es - fr 1 66 0.0 0.0 +es - fr 1 67 0.0 0.0 +es - fr 1 68 0.0 0.0 +es - fr 1 69 0.0 0.0 +es - fr 1 70 0.0 0.0 +es - fr 1 71 0.0 0.0 +es - fr 1 72 0.0 0.0 +es - fr 1 73 0.0 0.0 +es - fr 1 74 0.0 0.0 +es - fr 1 75 0.0 0.0 +es - fr 1 76 0.0 0.0 +es - fr 1 77 0.0 0.0 +es - fr 1 78 0.0 0.0 +es - fr 1 79 0.0 0.0 +es - fr 1 80 0.0 0.0 +es - fr 1 81 0.0 0.0 +es - fr 1 82 0.0 0.0 +es - fr 1 83 0.0 0.0 +es - fr 1 84 0.0 0.0 +es - fr 1 85 0.0 0.0 +es - fr 1 86 0.0 0.0 +es - fr 1 87 0.0 0.0 +es - fr 1 88 0.0 0.0 +es - fr 1 89 0.0 0.0 +es - fr 1 90 0.0 0.0 +es - fr 1 91 0.0 0.0 +es - fr 1 92 0.0 0.0 +es - fr 1 93 0.0 0.0 +es - fr 1 94 0.0 0.0 +es - fr 1 95 0.0 0.0 +es - fr 1 96 0.0 0.0 +es - fr 1 97 0.0 0.0 +es - fr 1 98 0.0 0.0 +es - fr 1 99 0.0 0.0 +es - fr 1 100 0.0 0.0 +es - fr 1 101 0.0 0.0 +es - fr 1 102 0.0 0.0 +es - fr 1 103 0.0 0.0 +es - fr 1 104 0.0 0.0 +es - fr 1 105 0.0 0.0 +es - fr 1 106 0.0 0.0 +es - fr 1 107 0.0 0.0 +es - fr 1 108 0.0 0.0 +es - fr 1 109 0.0 0.0 +es - fr 1 110 0.0 0.0 +es - fr 1 111 0.0 0.0 +es - fr 1 112 0.0 0.0 +es - fr 1 113 0.0 0.0 +es - fr 1 114 0.0 0.0 +es - fr 1 115 0.0 0.0 +es - fr 1 116 0.0 0.0 +es - fr 1 117 0.0 0.0 +es - fr 1 118 0.0 0.0 +es - fr 1 119 0.0 0.0 +es - fr 1 120 0.0 0.0 +es - fr 1 121 0.0 0.0 +es - fr 1 122 0.0 0.0 +es - fr 1 123 0.0 0.0 +es - fr 1 124 0.0 0.0 +es - fr 1 125 0.0 0.0 +es - fr 1 126 0.0 0.0 +es - fr 1 127 0.0 0.0 +es - fr 1 128 0.0 0.0 +es - fr 1 129 0.0 0.0 +es - fr 1 130 0.0 0.0 +es - fr 1 131 0.0 0.0 +es - fr 1 132 0.0 0.0 +es - fr 1 133 0.0 0.0 +es - fr 1 134 0.0 0.0 +es - fr 1 135 0.0 0.0 +es - fr 1 136 0.0 0.0 +es - fr 1 137 0.0 0.0 +es - fr 1 138 0.0 0.0 +es - fr 1 139 0.0 0.0 +es - fr 1 140 0.0 0.0 +es - fr 1 141 0.0 0.0 +es - fr 1 142 0.0 0.0 +es - fr 1 143 0.0 0.0 +es - fr 1 144 0.0 0.0 +es - fr 1 145 0.0 0.0 +es - fr 1 146 0.0 0.0 +es - fr 1 147 0.0 0.0 +es - fr 1 148 0.0 0.0 +es - fr 1 149 0.0 0.0 +es - fr 1 150 0.0 0.0 +es - fr 1 151 0.0 0.0 +es - fr 1 152 0.0 0.0 +es - fr 1 153 0.0 0.0 +es - fr 1 154 0.0 0.0 +es - fr 1 155 0.0 0.0 +es - fr 1 156 0.0 0.0 +es - fr 1 157 0.0 0.0 +es - fr 1 158 0.0 0.0 +es - fr 1 159 0.0 0.0 +es - fr 1 160 0.0 0.0 +es - fr 1 161 0.0 0.0 +es - fr 1 162 0.0 0.0 +es - fr 1 163 0.0 0.0 +es - fr 1 164 0.0 0.0 +es - fr 1 165 0.0 0.0 +es - fr 1 166 0.0 0.0 +es - fr 1 167 0.0 0.0 +es - fr 1 168 0.0 0.0 +es - fr 1 169 0.0 0.0 +es - fr 1 170 0.0 0.0 +es - fr 1 171 0.0 0.0 +es - fr 1 172 0.0 0.0 +es - fr 1 173 0.0 0.0 +es - fr 1 174 0.0 0.0 +es - fr 1 175 0.0 0.0 +es - fr 1 176 0.0 0.0 +es - fr 1 177 0.0 0.0 +es - fr 1 178 0.0 0.0 +es - fr 1 179 0.0 0.0 +es - fr 1 180 0.0 0.0 +es - fr 1 181 0.0 0.0 +es - fr 1 182 0.0 0.0 +es - fr 1 183 0.0 0.0 +es - fr 1 184 0.0 0.0 +es - fr 1 185 0.0 0.0 +es - fr 1 186 0.0 0.0 +es - fr 1 187 0.0 0.0 +es - fr 1 188 0.0 0.0 +es - fr 1 189 0.0 0.0 +es - fr 1 190 0.0 0.0 +es - fr 1 191 0.0 0.0 +es - fr 1 192 0.0 0.0 +es - fr 1 193 0.0 0.0 +es - fr 1 194 0.0 0.0 +es - fr 1 195 0.0 0.0 +es - fr 1 196 0.0 0.0 +es - fr 1 197 0.0 0.0 +es - fr 1 198 0.0 0.0 +es - fr 1 199 0.0 0.0 +es - fr 1 200 0.0 0.0 +es - fr 1 201 0.0 0.0 +es - fr 1 202 0.0 0.0 +es - fr 1 203 0.0 0.0 +es - fr 1 204 0.0 0.0 +es - fr 1 205 0.0 0.0 +es - fr 1 206 0.0 0.0 +es - fr 1 207 0.0 0.0 +es - fr 1 208 0.0 0.0 +es - fr 1 209 0.0 0.0 +es - fr 1 210 0.0 0.0 +es - fr 1 211 0.0 0.0 +es - fr 1 212 0.0 0.0 +es - fr 1 213 0.0 0.0 +es - fr 1 214 0.0 0.0 +es - fr 1 215 0.0 0.0 +es - fr 1 216 0.0 0.0 +es - fr 1 217 0.0 0.0 +es - fr 1 218 0.0 0.0 +es - fr 1 219 0.0 0.0 +es - fr 1 220 0.0 0.0 +es - fr 1 221 0.0 0.0 +es - fr 1 222 0.0 0.0 +es - fr 1 223 0.0 0.0 +es - fr 1 224 0.0 0.0 +es - fr 1 225 0.0 0.0 +es - fr 1 226 0.0 0.0 +es - fr 1 227 0.0 0.0 +es - fr 1 228 0.0 0.0 +es - fr 1 229 0.0 0.0 +es - fr 1 230 0.0 0.0 +es - fr 1 231 0.0 0.0 +es - fr 1 232 0.0 0.0 +es - fr 1 233 0.0 0.0 +es - fr 1 234 0.0 0.0 +es - fr 1 235 0.0 0.0 +es - fr 1 236 0.0 0.0 +es - fr 1 237 0.0 0.0 +es - fr 1 238 0.0 0.0 +es - fr 1 239 0.0 0.0 +es - fr 1 240 0.0 0.0 +es - fr 1 241 0.0 0.0 +es - fr 1 242 0.0 0.0 +es - fr 1 243 0.0 0.0 +es - fr 1 244 0.0 0.0 +es - fr 1 245 0.0 0.0 +es - fr 1 246 0.0 0.0 +es - fr 1 247 0.0 0.0 +es - fr 1 248 0.0 0.0 +es - fr 1 249 0.0 0.0 +es - fr 1 250 0.0 0.0 +es - fr 1 251 0.0 0.0 +es - fr 1 252 0.0 0.0 +es - fr 1 253 0.0 0.0 +es - fr 1 254 0.0 0.0 +es - fr 1 255 0.0 0.0 +es - fr 1 256 0.0 0.0 +es - fr 1 257 0.0 0.0 +es - fr 1 258 0.0 0.0 +es - fr 1 259 0.0 0.0 +es - fr 1 260 0.0 0.0 +es - fr 1 261 0.0 0.0 +es - fr 1 262 0.0 0.0 +es - fr 1 263 0.0 0.0 +es - fr 1 264 0.0 0.0 +es - fr 1 265 0.0 0.0 +es - fr 1 266 0.0 0.0 +es - fr 1 267 0.0 0.0 +es - fr 1 268 0.0 0.0 +es - fr 1 269 0.0 0.0 +es - fr 1 270 0.0 0.0 +es - fr 1 271 0.0 0.0 +es - fr 1 272 0.0 0.0 +es - fr 1 273 0.0 0.0 +es - fr 1 274 0.0 0.0 +es - fr 1 275 0.0 0.0 +es - fr 1 276 0.0 0.0 +es - fr 1 277 0.0 0.0 +es - fr 1 278 0.0 0.0 +es - fr 1 279 0.0 0.0 +es - fr 1 280 0.0 0.0 +es - fr 1 281 0.0 0.0 +es - fr 1 282 0.0 0.0 +es - fr 1 283 0.0 0.0 +es - fr 1 284 0.0 0.0 +es - fr 1 285 0.0 0.0 +es - fr 1 286 0.0 0.0 +es - fr 1 287 0.0 0.0 +es - fr 1 288 0.0 0.0 +es - fr 1 289 0.0 0.0 +es - fr 1 290 0.0 0.0 +es - fr 1 291 0.0 0.0 +es - fr 1 292 0.0 0.0 +es - fr 1 293 0.0 0.0 +es - fr 1 294 0.0 0.0 +es - fr 1 295 0.0 0.0 +es - fr 1 296 0.0 0.0 +es - fr 1 297 0.0 0.0 +es - fr 1 298 0.0 0.0 +es - fr 1 299 0.0 0.0 +es - fr 1 300 0.0 0.0 +es - fr 1 301 0.0 0.0 +es - fr 1 302 0.0 0.0 +es - fr 1 303 0.0 0.0 +es - fr 1 304 0.0 0.0 +es - fr 1 305 0.0 0.0 +es - fr 1 306 0.0 0.0 +es - fr 1 307 0.0 0.0 +es - fr 1 308 0.0 0.0 +es - fr 1 309 0.0 0.0 +es - fr 1 310 0.0 0.0 +es - fr 1 311 0.0 0.0 +es - fr 1 312 0.0 0.0 +es - fr 1 313 0.0 0.0 +es - fr 1 314 0.0 0.0 +es - fr 1 315 0.0 0.0 +es - fr 1 316 0.0 0.0 +es - fr 1 317 0.0 0.0 +es - fr 1 318 0.0 0.0 +es - fr 1 319 0.0 0.0 +es - fr 1 320 0.0 0.0 +es - fr 1 321 0.0 0.0 +es - fr 1 322 0.0 0.0 +es - fr 1 323 0.0 0.0 +es - fr 1 324 0.0 0.0 +es - fr 1 325 0.0 0.0 +es - fr 1 326 0.0 0.0 +es - fr 1 327 0.0 0.0 +es - fr 1 328 0.0 0.0 +es - fr 1 329 0.0 0.0 +es - fr 1 330 0.0 0.0 +es - fr 1 331 0.0 0.0 +es - fr 1 332 0.0 0.0 +es - fr 1 333 0.0 0.0 +es - fr 1 334 0.0 0.0 +es - fr 1 335 0.0 0.0 +es - fr 1 336 0.0 0.0 +fr - it 1 1 0.0 0.0 +fr - it 1 2 0.0 0.0 +fr - it 1 3 0.0 0.0 +fr - it 1 4 0.0 0.0 +fr - it 1 5 0.0 0.0 +fr - it 1 6 0.0 0.0 +fr - it 1 7 0.0 0.0 +fr - it 1 8 0.0 0.0 +fr - it 1 9 0.0 0.0 +fr - it 1 10 0.0 0.0 +fr - it 1 11 0.0 0.0 +fr - it 1 12 0.0 0.0 +fr - it 1 13 0.0 0.0 +fr - it 1 14 0.0 0.0 +fr - it 1 15 0.0 0.0 +fr - it 1 16 0.0 0.0 +fr - it 1 17 0.0 0.0 +fr - it 1 18 0.0 0.0 +fr - it 1 19 0.0 0.0 +fr - it 1 20 0.0 0.0 +fr - it 1 21 0.0 0.0 +fr - it 1 22 0.0 0.0 +fr - it 1 23 0.0 0.0 +fr - it 1 24 0.0 0.0 +fr - it 1 25 0.0 0.0 +fr - it 1 26 0.0 0.0 +fr - it 1 27 0.0 0.0 +fr - it 1 28 0.0 0.0 +fr - it 1 29 0.0 0.0 +fr - it 1 30 0.0 0.0 +fr - it 1 31 0.0 0.0 +fr - it 1 32 0.0 0.0 +fr - it 1 33 0.0 0.0 +fr - it 1 34 0.0 0.0 +fr - it 1 35 0.0 0.0 +fr - it 1 36 0.0 0.0 +fr - it 1 37 0.0 0.0 +fr - it 1 38 0.0 0.0 +fr - it 1 39 0.0 0.0 +fr - it 1 40 0.0 0.0 +fr - it 1 41 0.0 0.0 +fr - it 1 42 0.0 0.0 +fr - it 1 43 0.0 0.0 +fr - it 1 44 0.0 0.0 +fr - it 1 45 0.0 0.0 +fr - it 1 46 0.0 0.0 +fr - it 1 47 0.0 0.0 +fr - it 1 48 0.0 0.0 +fr - it 1 49 0.0 0.0 +fr - it 1 50 0.0 0.0 +fr - it 1 51 0.0 0.0 +fr - it 1 52 0.0 0.0 +fr - it 1 53 0.0 0.0 +fr - it 1 54 0.0 0.0 +fr - it 1 55 0.0 0.0 +fr - it 1 56 0.0 0.0 +fr - it 1 57 0.0 0.0 +fr - it 1 58 0.0 0.0 +fr - it 1 59 0.0 0.0 +fr - it 1 60 0.0 0.0 +fr - it 1 61 0.0 0.0 +fr - it 1 62 0.0 0.0 +fr - it 1 63 0.0 0.0 +fr - it 1 64 0.0 0.0 +fr - it 1 65 0.0 0.0 +fr - it 1 66 0.0 0.0 +fr - it 1 67 0.0 0.0 +fr - it 1 68 0.0 0.0 +fr - it 1 69 0.0 0.0 +fr - it 1 70 0.0 0.0 +fr - it 1 71 0.0 0.0 +fr - it 1 72 0.0 0.0 +fr - it 1 73 0.0 0.0 +fr - it 1 74 0.0 0.0 +fr - it 1 75 0.0 0.0 +fr - it 1 76 0.0 0.0 +fr - it 1 77 0.0 0.0 +fr - it 1 78 0.0 0.0 +fr - it 1 79 0.0 0.0 +fr - it 1 80 0.0 0.0 +fr - it 1 81 0.0 0.0 +fr - it 1 82 0.0 0.0 +fr - it 1 83 0.0 0.0 +fr - it 1 84 0.0 0.0 +fr - it 1 85 0.0 0.0 +fr - it 1 86 0.0 0.0 +fr - it 1 87 0.0 0.0 +fr - it 1 88 0.0 0.0 +fr - it 1 89 0.0 0.0 +fr - it 1 90 0.0 0.0 +fr - it 1 91 0.0 0.0 +fr - it 1 92 0.0 0.0 +fr - it 1 93 0.0 0.0 +fr - it 1 94 0.0 0.0 +fr - it 1 95 0.0 0.0 +fr - it 1 96 0.0 0.0 +fr - it 1 97 0.0 0.0 +fr - it 1 98 0.0 0.0 +fr - it 1 99 0.0 0.0 +fr - it 1 100 0.0 0.0 +fr - it 1 101 0.0 0.0 +fr - it 1 102 0.0 0.0 +fr - it 1 103 0.0 0.0 +fr - it 1 104 0.0 0.0 +fr - it 1 105 0.0 0.0 +fr - it 1 106 0.0 0.0 +fr - it 1 107 0.0 0.0 +fr - it 1 108 0.0 0.0 +fr - it 1 109 0.0 0.0 +fr - it 1 110 0.0 0.0 +fr - it 1 111 0.0 0.0 +fr - it 1 112 0.0 0.0 +fr - it 1 113 0.0 0.0 +fr - it 1 114 0.0 0.0 +fr - it 1 115 0.0 0.0 +fr - it 1 116 0.0 0.0 +fr - it 1 117 0.0 0.0 +fr - it 1 118 0.0 0.0 +fr - it 1 119 0.0 0.0 +fr - it 1 120 0.0 0.0 +fr - it 1 121 0.0 0.0 +fr - it 1 122 0.0 0.0 +fr - it 1 123 0.0 0.0 +fr - it 1 124 0.0 0.0 +fr - it 1 125 0.0 0.0 +fr - it 1 126 0.0 0.0 +fr - it 1 127 0.0 0.0 +fr - it 1 128 0.0 0.0 +fr - it 1 129 0.0 0.0 +fr - it 1 130 0.0 0.0 +fr - it 1 131 0.0 0.0 +fr - it 1 132 0.0 0.0 +fr - it 1 133 0.0 0.0 +fr - it 1 134 0.0 0.0 +fr - it 1 135 0.0 0.0 +fr - it 1 136 0.0 0.0 +fr - it 1 137 0.0 0.0 +fr - it 1 138 0.0 0.0 +fr - it 1 139 0.0 0.0 +fr - it 1 140 0.0 0.0 +fr - it 1 141 0.0 0.0 +fr - it 1 142 0.0 0.0 +fr - it 1 143 0.0 0.0 +fr - it 1 144 0.0 0.0 +fr - it 1 145 0.0 0.0 +fr - it 1 146 0.0 0.0 +fr - it 1 147 0.0 0.0 +fr - it 1 148 0.0 0.0 +fr - it 1 149 0.0 0.0 +fr - it 1 150 0.0 0.0 +fr - it 1 151 0.0 0.0 +fr - it 1 152 0.0 0.0 +fr - it 1 153 0.0 0.0 +fr - it 1 154 0.0 0.0 +fr - it 1 155 0.0 0.0 +fr - it 1 156 0.0 0.0 +fr - it 1 157 0.0 0.0 +fr - it 1 158 0.0 0.0 +fr - it 1 159 0.0 0.0 +fr - it 1 160 0.0 0.0 +fr - it 1 161 0.0 0.0 +fr - it 1 162 0.0 0.0 +fr - it 1 163 0.0 0.0 +fr - it 1 164 0.0 0.0 +fr - it 1 165 0.0 0.0 +fr - it 1 166 0.0 0.0 +fr - it 1 167 0.0 0.0 +fr - it 1 168 0.0 0.0 +fr - it 1 169 0.0 0.0 +fr - it 1 170 0.0 0.0 +fr - it 1 171 0.0 0.0 +fr - it 1 172 0.0 0.0 +fr - it 1 173 0.0 0.0 +fr - it 1 174 0.0 0.0 +fr - it 1 175 0.0 0.0 +fr - it 1 176 0.0 0.0 +fr - it 1 177 0.0 0.0 +fr - it 1 178 0.0 0.0 +fr - it 1 179 0.0 0.0 +fr - it 1 180 0.0 0.0 +fr - it 1 181 0.0 0.0 +fr - it 1 182 0.0 0.0 +fr - it 1 183 0.0 0.0 +fr - it 1 184 0.0 0.0 +fr - it 1 185 0.0 0.0 +fr - it 1 186 0.0 0.0 +fr - it 1 187 0.0 0.0 +fr - it 1 188 0.0 0.0 +fr - it 1 189 0.0 0.0 +fr - it 1 190 0.0 0.0 +fr - it 1 191 0.0 0.0 +fr - it 1 192 0.0 0.0 +fr - it 1 193 0.0 0.0 +fr - it 1 194 0.0 0.0 +fr - it 1 195 0.0 0.0 +fr - it 1 196 0.0 0.0 +fr - it 1 197 0.0 0.0 +fr - it 1 198 0.0 0.0 +fr - it 1 199 0.0 0.0 +fr - it 1 200 0.0 0.0 +fr - it 1 201 0.0 0.0 +fr - it 1 202 0.0 0.0 +fr - it 1 203 0.0 0.0 +fr - it 1 204 0.0 0.0 +fr - it 1 205 0.0 0.0 +fr - it 1 206 0.0 0.0 +fr - it 1 207 0.0 0.0 +fr - it 1 208 0.0 0.0 +fr - it 1 209 0.0 0.0 +fr - it 1 210 0.0 0.0 +fr - it 1 211 0.0 0.0 +fr - it 1 212 0.0 0.0 +fr - it 1 213 0.0 0.0 +fr - it 1 214 0.0 0.0 +fr - it 1 215 0.0 0.0 +fr - it 1 216 0.0 0.0 +fr - it 1 217 0.0 0.0 +fr - it 1 218 0.0 0.0 +fr - it 1 219 0.0 0.0 +fr - it 1 220 0.0 0.0 +fr - it 1 221 0.0 0.0 +fr - it 1 222 0.0 0.0 +fr - it 1 223 0.0 0.0 +fr - it 1 224 0.0 0.0 +fr - it 1 225 0.0 0.0 +fr - it 1 226 0.0 0.0 +fr - it 1 227 0.0 0.0 +fr - it 1 228 0.0 0.0 +fr - it 1 229 0.0 0.0 +fr - it 1 230 0.0 0.0 +fr - it 1 231 0.0 0.0 +fr - it 1 232 0.0 0.0 +fr - it 1 233 0.0 0.0 +fr - it 1 234 0.0 0.0 +fr - it 1 235 0.0 0.0 +fr - it 1 236 0.0 0.0 +fr - it 1 237 0.0 0.0 +fr - it 1 238 0.0 0.0 +fr - it 1 239 0.0 0.0 +fr - it 1 240 0.0 0.0 +fr - it 1 241 0.0 0.0 +fr - it 1 242 0.0 0.0 +fr - it 1 243 0.0 0.0 +fr - it 1 244 0.0 0.0 +fr - it 1 245 0.0 0.0 +fr - it 1 246 0.0 0.0 +fr - it 1 247 0.0 0.0 +fr - it 1 248 0.0 0.0 +fr - it 1 249 0.0 0.0 +fr - it 1 250 0.0 0.0 +fr - it 1 251 0.0 0.0 +fr - it 1 252 0.0 0.0 +fr - it 1 253 0.0 0.0 +fr - it 1 254 0.0 0.0 +fr - it 1 255 0.0 0.0 +fr - it 1 256 0.0 0.0 +fr - it 1 257 0.0 0.0 +fr - it 1 258 0.0 0.0 +fr - it 1 259 0.0 0.0 +fr - it 1 260 0.0 0.0 +fr - it 1 261 0.0 0.0 +fr - it 1 262 0.0 0.0 +fr - it 1 263 0.0 0.0 +fr - it 1 264 0.0 0.0 +fr - it 1 265 0.0 0.0 +fr - it 1 266 0.0 0.0 +fr - it 1 267 0.0 0.0 +fr - it 1 268 0.0 0.0 +fr - it 1 269 0.0 0.0 +fr - it 1 270 0.0 0.0 +fr - it 1 271 0.0 0.0 +fr - it 1 272 0.0 0.0 +fr - it 1 273 0.0 0.0 +fr - it 1 274 0.0 0.0 +fr - it 1 275 0.0 0.0 +fr - it 1 276 0.0 0.0 +fr - it 1 277 0.0 0.0 +fr - it 1 278 0.0 0.0 +fr - it 1 279 0.0 0.0 +fr - it 1 280 0.0 0.0 +fr - it 1 281 0.0 0.0 +fr - it 1 282 0.0 0.0 +fr - it 1 283 0.0 0.0 +fr - it 1 284 0.0 0.0 +fr - it 1 285 0.0 0.0 +fr - it 1 286 0.0 0.0 +fr - it 1 287 0.0 0.0 +fr - it 1 288 0.0 0.0 +fr - it 1 289 0.0 0.0 +fr - it 1 290 0.0 0.0 +fr - it 1 291 0.0 0.0 +fr - it 1 292 0.0 0.0 +fr - it 1 293 0.0 0.0 +fr - it 1 294 0.0 0.0 +fr - it 1 295 0.0 0.0 +fr - it 1 296 0.0 0.0 +fr - it 1 297 0.0 0.0 +fr - it 1 298 0.0 0.0 +fr - it 1 299 0.0 0.0 +fr - it 1 300 0.0 0.0 +fr - it 1 301 0.0 0.0 +fr - it 1 302 0.0 0.0 +fr - it 1 303 0.0 0.0 +fr - it 1 304 0.0 0.0 +fr - it 1 305 0.0 0.0 +fr - it 1 306 0.0 0.0 +fr - it 1 307 0.0 0.0 +fr - it 1 308 0.0 0.0 +fr - it 1 309 0.0 0.0 +fr - it 1 310 0.0 0.0 +fr - it 1 311 0.0 0.0 +fr - it 1 312 0.0 0.0 +fr - it 1 313 0.0 0.0 +fr - it 1 314 0.0 0.0 +fr - it 1 315 0.0 0.0 +fr - it 1 316 0.0 0.0 +fr - it 1 317 0.0 0.0 +fr - it 1 318 0.0 0.0 +fr - it 1 319 0.0 0.0 +fr - it 1 320 0.0 0.0 +fr - it 1 321 0.0 0.0 +fr - it 1 322 0.0 0.0 +fr - it 1 323 0.0 0.0 +fr - it 1 324 0.0 0.0 +fr - it 1 325 0.0 0.0 +fr - it 1 326 0.0 0.0 +fr - it 1 327 0.0 0.0 +fr - it 1 328 0.0 0.0 +fr - it 1 329 0.0 0.0 +fr - it 1 330 0.0 0.0 +fr - it 1 331 0.0 0.0 +fr - it 1 332 0.0 0.0 +fr - it 1 333 0.0 0.0 +fr - it 1 334 0.0 0.0 +fr - it 1 335 0.0 0.0 +fr - it 1 336 0.0 0.0 +de - fr 2 1 0.0 0.0 +de - fr 2 2 0.0 0.0 +de - fr 2 3 0.0 0.0 +de - fr 2 4 0.0 0.0 +de - fr 2 5 0.0 0.0 +de - fr 2 6 0.0 0.0 +de - fr 2 7 0.0 0.0 +de - fr 2 8 0.0 0.0 +de - fr 2 9 0.0 0.0 +de - fr 2 10 0.0 0.0 +de - fr 2 11 0.0 0.0 +de - fr 2 12 0.0 0.0 +de - fr 2 13 0.0 0.0 +de - fr 2 14 0.0 0.0 +de - fr 2 15 0.0 0.0 +de - fr 2 16 0.0 0.0 +de - fr 2 17 0.0 0.0 +de - fr 2 18 0.0 0.0 +de - fr 2 19 0.0 0.0 +de - fr 2 20 0.0 0.0 +de - fr 2 21 0.0 0.0 +de - fr 2 22 0.0 0.0 +de - fr 2 23 0.0 0.0 +de - fr 2 24 0.0 0.0 +de - fr 2 25 0.0 0.0 +de - fr 2 26 0.0 0.0 +de - fr 2 27 0.0 0.0 +de - fr 2 28 0.0 0.0 +de - fr 2 29 0.0 0.0 +de - fr 2 30 0.0 0.0 +de - fr 2 31 0.0 0.0 +de - fr 2 32 0.0 0.0 +de - fr 2 33 0.0 0.0 +de - fr 2 34 0.0 0.0 +de - fr 2 35 0.0 0.0 +de - fr 2 36 0.0 0.0 +de - fr 2 37 0.0 0.0 +de - fr 2 38 0.0 0.0 +de - fr 2 39 0.0 0.0 +de - fr 2 40 0.0 0.0 +de - fr 2 41 0.0 0.0 +de - fr 2 42 0.0 0.0 +de - fr 2 43 0.0 0.0 +de - fr 2 44 0.0 0.0 +de - fr 2 45 0.0 0.0 +de - fr 2 46 0.0 0.0 +de - fr 2 47 0.0 0.0 +de - fr 2 48 0.0 0.0 +de - fr 2 49 0.0 0.0 +de - fr 2 50 0.0 0.0 +de - fr 2 51 0.0 0.0 +de - fr 2 52 0.0 0.0 +de - fr 2 53 0.0 0.0 +de - fr 2 54 0.0 0.0 +de - fr 2 55 0.0 0.0 +de - fr 2 56 0.0 0.0 +de - fr 2 57 0.0 0.0 +de - fr 2 58 0.0 0.0 +de - fr 2 59 0.0 0.0 +de - fr 2 60 0.0 0.0 +de - fr 2 61 0.0 0.0 +de - fr 2 62 0.0 0.0 +de - fr 2 63 0.0 0.0 +de - fr 2 64 0.0 0.0 +de - fr 2 65 0.0 0.0 +de - fr 2 66 0.0 0.0 +de - fr 2 67 0.0 0.0 +de - fr 2 68 0.0 0.0 +de - fr 2 69 0.0 0.0 +de - fr 2 70 0.0 0.0 +de - fr 2 71 0.0 0.0 +de - fr 2 72 0.0 0.0 +de - fr 2 73 0.0 0.0 +de - fr 2 74 0.0 0.0 +de - fr 2 75 0.0 0.0 +de - fr 2 76 0.0 0.0 +de - fr 2 77 0.0 0.0 +de - fr 2 78 0.0 0.0 +de - fr 2 79 0.0 0.0 +de - fr 2 80 0.0 0.0 +de - fr 2 81 0.0 0.0 +de - fr 2 82 0.0 0.0 +de - fr 2 83 0.0 0.0 +de - fr 2 84 0.0 0.0 +de - fr 2 85 0.0 0.0 +de - fr 2 86 0.0 0.0 +de - fr 2 87 0.0 0.0 +de - fr 2 88 0.0 0.0 +de - fr 2 89 0.0 0.0 +de - fr 2 90 0.0 0.0 +de - fr 2 91 0.0 0.0 +de - fr 2 92 0.0 0.0 +de - fr 2 93 0.0 0.0 +de - fr 2 94 0.0 0.0 +de - fr 2 95 0.0 0.0 +de - fr 2 96 0.0 0.0 +de - fr 2 97 0.0 0.0 +de - fr 2 98 0.0 0.0 +de - fr 2 99 0.0 0.0 +de - fr 2 100 0.0 0.0 +de - fr 2 101 0.0 0.0 +de - fr 2 102 0.0 0.0 +de - fr 2 103 0.0 0.0 +de - fr 2 104 0.0 0.0 +de - fr 2 105 0.0 0.0 +de - fr 2 106 0.0 0.0 +de - fr 2 107 0.0 0.0 +de - fr 2 108 0.0 0.0 +de - fr 2 109 0.0 0.0 +de - fr 2 110 0.0 0.0 +de - fr 2 111 0.0 0.0 +de - fr 2 112 0.0 0.0 +de - fr 2 113 0.0 0.0 +de - fr 2 114 0.0 0.0 +de - fr 2 115 0.0 0.0 +de - fr 2 116 0.0 0.0 +de - fr 2 117 0.0 0.0 +de - fr 2 118 0.0 0.0 +de - fr 2 119 0.0 0.0 +de - fr 2 120 0.0 0.0 +de - fr 2 121 0.0 0.0 +de - fr 2 122 0.0 0.0 +de - fr 2 123 0.0 0.0 +de - fr 2 124 0.0 0.0 +de - fr 2 125 0.0 0.0 +de - fr 2 126 0.0 0.0 +de - fr 2 127 0.0 0.0 +de - fr 2 128 0.0 0.0 +de - fr 2 129 0.0 0.0 +de - fr 2 130 0.0 0.0 +de - fr 2 131 0.0 0.0 +de - fr 2 132 0.0 0.0 +de - fr 2 133 0.0 0.0 +de - fr 2 134 0.0 0.0 +de - fr 2 135 0.0 0.0 +de - fr 2 136 0.0 0.0 +de - fr 2 137 0.0 0.0 +de - fr 2 138 0.0 0.0 +de - fr 2 139 0.0 0.0 +de - fr 2 140 0.0 0.0 +de - fr 2 141 0.0 0.0 +de - fr 2 142 0.0 0.0 +de - fr 2 143 0.0 0.0 +de - fr 2 144 0.0 0.0 +de - fr 2 145 0.0 0.0 +de - fr 2 146 0.0 0.0 +de - fr 2 147 0.0 0.0 +de - fr 2 148 0.0 0.0 +de - fr 2 149 0.0 0.0 +de - fr 2 150 0.0 0.0 +de - fr 2 151 0.0 0.0 +de - fr 2 152 0.0 0.0 +de - fr 2 153 0.0 0.0 +de - fr 2 154 0.0 0.0 +de - fr 2 155 0.0 0.0 +de - fr 2 156 0.0 0.0 +de - fr 2 157 0.0 0.0 +de - fr 2 158 0.0 0.0 +de - fr 2 159 0.0 0.0 +de - fr 2 160 0.0 0.0 +de - fr 2 161 0.0 0.0 +de - fr 2 162 0.0 0.0 +de - fr 2 163 0.0 0.0 +de - fr 2 164 0.0 0.0 +de - fr 2 165 0.0 0.0 +de - fr 2 166 0.0 0.0 +de - fr 2 167 0.0 0.0 +de - fr 2 168 0.0 0.0 +de - fr 2 169 0.0 0.0 +de - fr 2 170 0.0 0.0 +de - fr 2 171 0.0 0.0 +de - fr 2 172 0.0 0.0 +de - fr 2 173 0.0 0.0 +de - fr 2 174 0.0 0.0 +de - fr 2 175 0.0 0.0 +de - fr 2 176 0.0 0.0 +de - fr 2 177 0.0 0.0 +de - fr 2 178 0.0 0.0 +de - fr 2 179 0.0 0.0 +de - fr 2 180 0.0 0.0 +de - fr 2 181 0.0 0.0 +de - fr 2 182 0.0 0.0 +de - fr 2 183 0.0 0.0 +de - fr 2 184 0.0 0.0 +de - fr 2 185 0.0 0.0 +de - fr 2 186 0.0 0.0 +de - fr 2 187 0.0 0.0 +de - fr 2 188 0.0 0.0 +de - fr 2 189 0.0 0.0 +de - fr 2 190 0.0 0.0 +de - fr 2 191 0.0 0.0 +de - fr 2 192 0.0 0.0 +de - fr 2 193 0.0 0.0 +de - fr 2 194 0.0 0.0 +de - fr 2 195 0.0 0.0 +de - fr 2 196 0.0 0.0 +de - fr 2 197 0.0 0.0 +de - fr 2 198 0.0 0.0 +de - fr 2 199 0.0 0.0 +de - fr 2 200 0.0 0.0 +de - fr 2 201 0.0 0.0 +de - fr 2 202 0.0 0.0 +de - fr 2 203 0.0 0.0 +de - fr 2 204 0.0 0.0 +de - fr 2 205 0.0 0.0 +de - fr 2 206 0.0 0.0 +de - fr 2 207 0.0 0.0 +de - fr 2 208 0.0 0.0 +de - fr 2 209 0.0 0.0 +de - fr 2 210 0.0 0.0 +de - fr 2 211 0.0 0.0 +de - fr 2 212 0.0 0.0 +de - fr 2 213 0.0 0.0 +de - fr 2 214 0.0 0.0 +de - fr 2 215 0.0 0.0 +de - fr 2 216 0.0 0.0 +de - fr 2 217 0.0 0.0 +de - fr 2 218 0.0 0.0 +de - fr 2 219 0.0 0.0 +de - fr 2 220 0.0 0.0 +de - fr 2 221 0.0 0.0 +de - fr 2 222 0.0 0.0 +de - fr 2 223 0.0 0.0 +de - fr 2 224 0.0 0.0 +de - fr 2 225 0.0 0.0 +de - fr 2 226 0.0 0.0 +de - fr 2 227 0.0 0.0 +de - fr 2 228 0.0 0.0 +de - fr 2 229 0.0 0.0 +de - fr 2 230 0.0 0.0 +de - fr 2 231 0.0 0.0 +de - fr 2 232 0.0 0.0 +de - fr 2 233 0.0 0.0 +de - fr 2 234 0.0 0.0 +de - fr 2 235 0.0 0.0 +de - fr 2 236 0.0 0.0 +de - fr 2 237 0.0 0.0 +de - fr 2 238 0.0 0.0 +de - fr 2 239 0.0 0.0 +de - fr 2 240 0.0 0.0 +de - fr 2 241 0.0 0.0 +de - fr 2 242 0.0 0.0 +de - fr 2 243 0.0 0.0 +de - fr 2 244 0.0 0.0 +de - fr 2 245 0.0 0.0 +de - fr 2 246 0.0 0.0 +de - fr 2 247 0.0 0.0 +de - fr 2 248 0.0 0.0 +de - fr 2 249 0.0 0.0 +de - fr 2 250 0.0 0.0 +de - fr 2 251 0.0 0.0 +de - fr 2 252 0.0 0.0 +de - fr 2 253 0.0 0.0 +de - fr 2 254 0.0 0.0 +de - fr 2 255 0.0 0.0 +de - fr 2 256 0.0 0.0 +de - fr 2 257 0.0 0.0 +de - fr 2 258 0.0 0.0 +de - fr 2 259 0.0 0.0 +de - fr 2 260 0.0 0.0 +de - fr 2 261 0.0 0.0 +de - fr 2 262 0.0 0.0 +de - fr 2 263 0.0 0.0 +de - fr 2 264 0.0 0.0 +de - fr 2 265 0.0 0.0 +de - fr 2 266 0.0 0.0 +de - fr 2 267 0.0 0.0 +de - fr 2 268 0.0 0.0 +de - fr 2 269 0.0 0.0 +de - fr 2 270 0.0 0.0 +de - fr 2 271 0.0 0.0 +de - fr 2 272 0.0 0.0 +de - fr 2 273 0.0 0.0 +de - fr 2 274 0.0 0.0 +de - fr 2 275 0.0 0.0 +de - fr 2 276 0.0 0.0 +de - fr 2 277 0.0 0.0 +de - fr 2 278 0.0 0.0 +de - fr 2 279 0.0 0.0 +de - fr 2 280 0.0 0.0 +de - fr 2 281 0.0 0.0 +de - fr 2 282 0.0 0.0 +de - fr 2 283 0.0 0.0 +de - fr 2 284 0.0 0.0 +de - fr 2 285 0.0 0.0 +de - fr 2 286 0.0 0.0 +de - fr 2 287 0.0 0.0 +de - fr 2 288 0.0 0.0 +de - fr 2 289 0.0 0.0 +de - fr 2 290 0.0 0.0 +de - fr 2 291 0.0 0.0 +de - fr 2 292 0.0 0.0 +de - fr 2 293 0.0 0.0 +de - fr 2 294 0.0 0.0 +de - fr 2 295 0.0 0.0 +de - fr 2 296 0.0 0.0 +de - fr 2 297 0.0 0.0 +de - fr 2 298 0.0 0.0 +de - fr 2 299 0.0 0.0 +de - fr 2 300 0.0 0.0 +de - fr 2 301 0.0 0.0 +de - fr 2 302 0.0 0.0 +de - fr 2 303 0.0 0.0 +de - fr 2 304 0.0 0.0 +de - fr 2 305 0.0 0.0 +de - fr 2 306 0.0 0.0 +de - fr 2 307 0.0 0.0 +de - fr 2 308 0.0 0.0 +de - fr 2 309 0.0 0.0 +de - fr 2 310 0.0 0.0 +de - fr 2 311 0.0 0.0 +de - fr 2 312 0.0 0.0 +de - fr 2 313 0.0 0.0 +de - fr 2 314 0.0 0.0 +de - fr 2 315 0.0 0.0 +de - fr 2 316 0.0 0.0 +de - fr 2 317 0.0 0.0 +de - fr 2 318 0.0 0.0 +de - fr 2 319 0.0 0.0 +de - fr 2 320 0.0 0.0 +de - fr 2 321 0.0 0.0 +de - fr 2 322 0.0 0.0 +de - fr 2 323 0.0 0.0 +de - fr 2 324 0.0 0.0 +de - fr 2 325 0.0 0.0 +de - fr 2 326 0.0 0.0 +de - fr 2 327 0.0 0.0 +de - fr 2 328 0.0 0.0 +de - fr 2 329 0.0 0.0 +de - fr 2 330 0.0 0.0 +de - fr 2 331 0.0 0.0 +de - fr 2 332 0.0 0.0 +de - fr 2 333 0.0 0.0 +de - fr 2 334 0.0 0.0 +de - fr 2 335 0.0 0.0 +de - fr 2 336 0.0 0.0 +es - fr 2 1 0.0 0.0 +es - fr 2 2 0.0 0.0 +es - fr 2 3 0.0 0.0 +es - fr 2 4 0.0 0.0 +es - fr 2 5 0.0 0.0 +es - fr 2 6 0.0 0.0 +es - fr 2 7 0.0 0.0 +es - fr 2 8 0.0 0.0 +es - fr 2 9 0.0 0.0 +es - fr 2 10 0.0 0.0 +es - fr 2 11 0.0 0.0 +es - fr 2 12 0.0 0.0 +es - fr 2 13 0.0 0.0 +es - fr 2 14 0.0 0.0 +es - fr 2 15 0.0 0.0 +es - fr 2 16 0.0 0.0 +es - fr 2 17 0.0 0.0 +es - fr 2 18 0.0 0.0 +es - fr 2 19 0.0 0.0 +es - fr 2 20 0.0 0.0 +es - fr 2 21 0.0 0.0 +es - fr 2 22 0.0 0.0 +es - fr 2 23 0.0 0.0 +es - fr 2 24 0.0 0.0 +es - fr 2 25 0.0 0.0 +es - fr 2 26 0.0 0.0 +es - fr 2 27 0.0 0.0 +es - fr 2 28 0.0 0.0 +es - fr 2 29 0.0 0.0 +es - fr 2 30 0.0 0.0 +es - fr 2 31 0.0 0.0 +es - fr 2 32 0.0 0.0 +es - fr 2 33 0.0 0.0 +es - fr 2 34 0.0 0.0 +es - fr 2 35 0.0 0.0 +es - fr 2 36 0.0 0.0 +es - fr 2 37 0.0 0.0 +es - fr 2 38 0.0 0.0 +es - fr 2 39 0.0 0.0 +es - fr 2 40 0.0 0.0 +es - fr 2 41 0.0 0.0 +es - fr 2 42 0.0 0.0 +es - fr 2 43 0.0 0.0 +es - fr 2 44 0.0 0.0 +es - fr 2 45 0.0 0.0 +es - fr 2 46 0.0 0.0 +es - fr 2 47 0.0 0.0 +es - fr 2 48 0.0 0.0 +es - fr 2 49 0.0 0.0 +es - fr 2 50 0.0 0.0 +es - fr 2 51 0.0 0.0 +es - fr 2 52 0.0 0.0 +es - fr 2 53 0.0 0.0 +es - fr 2 54 0.0 0.0 +es - fr 2 55 0.0 0.0 +es - fr 2 56 0.0 0.0 +es - fr 2 57 0.0 0.0 +es - fr 2 58 0.0 0.0 +es - fr 2 59 0.0 0.0 +es - fr 2 60 0.0 0.0 +es - fr 2 61 0.0 0.0 +es - fr 2 62 0.0 0.0 +es - fr 2 63 0.0 0.0 +es - fr 2 64 0.0 0.0 +es - fr 2 65 0.0 0.0 +es - fr 2 66 0.0 0.0 +es - fr 2 67 0.0 0.0 +es - fr 2 68 0.0 0.0 +es - fr 2 69 0.0 0.0 +es - fr 2 70 0.0 0.0 +es - fr 2 71 0.0 0.0 +es - fr 2 72 0.0 0.0 +es - fr 2 73 0.0 0.0 +es - fr 2 74 0.0 0.0 +es - fr 2 75 0.0 0.0 +es - fr 2 76 0.0 0.0 +es - fr 2 77 0.0 0.0 +es - fr 2 78 0.0 0.0 +es - fr 2 79 0.0 0.0 +es - fr 2 80 0.0 0.0 +es - fr 2 81 0.0 0.0 +es - fr 2 82 0.0 0.0 +es - fr 2 83 0.0 0.0 +es - fr 2 84 0.0 0.0 +es - fr 2 85 0.0 0.0 +es - fr 2 86 0.0 0.0 +es - fr 2 87 0.0 0.0 +es - fr 2 88 0.0 0.0 +es - fr 2 89 0.0 0.0 +es - fr 2 90 0.0 0.0 +es - fr 2 91 0.0 0.0 +es - fr 2 92 0.0 0.0 +es - fr 2 93 0.0 0.0 +es - fr 2 94 0.0 0.0 +es - fr 2 95 0.0 0.0 +es - fr 2 96 0.0 0.0 +es - fr 2 97 0.0 0.0 +es - fr 2 98 0.0 0.0 +es - fr 2 99 0.0 0.0 +es - fr 2 100 0.0 0.0 +es - fr 2 101 0.0 0.0 +es - fr 2 102 0.0 0.0 +es - fr 2 103 0.0 0.0 +es - fr 2 104 0.0 0.0 +es - fr 2 105 0.0 0.0 +es - fr 2 106 0.0 0.0 +es - fr 2 107 0.0 0.0 +es - fr 2 108 0.0 0.0 +es - fr 2 109 0.0 0.0 +es - fr 2 110 0.0 0.0 +es - fr 2 111 0.0 0.0 +es - fr 2 112 0.0 0.0 +es - fr 2 113 0.0 0.0 +es - fr 2 114 0.0 0.0 +es - fr 2 115 0.0 0.0 +es - fr 2 116 0.0 0.0 +es - fr 2 117 0.0 0.0 +es - fr 2 118 0.0 0.0 +es - fr 2 119 0.0 0.0 +es - fr 2 120 0.0 0.0 +es - fr 2 121 0.0 0.0 +es - fr 2 122 0.0 0.0 +es - fr 2 123 0.0 0.0 +es - fr 2 124 0.0 0.0 +es - fr 2 125 0.0 0.0 +es - fr 2 126 0.0 0.0 +es - fr 2 127 0.0 0.0 +es - fr 2 128 0.0 0.0 +es - fr 2 129 0.0 0.0 +es - fr 2 130 0.0 0.0 +es - fr 2 131 0.0 0.0 +es - fr 2 132 0.0 0.0 +es - fr 2 133 0.0 0.0 +es - fr 2 134 0.0 0.0 +es - fr 2 135 0.0 0.0 +es - fr 2 136 0.0 0.0 +es - fr 2 137 0.0 0.0 +es - fr 2 138 0.0 0.0 +es - fr 2 139 0.0 0.0 +es - fr 2 140 0.0 0.0 +es - fr 2 141 0.0 0.0 +es - fr 2 142 0.0 0.0 +es - fr 2 143 0.0 0.0 +es - fr 2 144 0.0 0.0 +es - fr 2 145 0.0 0.0 +es - fr 2 146 0.0 0.0 +es - fr 2 147 0.0 0.0 +es - fr 2 148 0.0 0.0 +es - fr 2 149 0.0 0.0 +es - fr 2 150 0.0 0.0 +es - fr 2 151 0.0 0.0 +es - fr 2 152 0.0 0.0 +es - fr 2 153 0.0 0.0 +es - fr 2 154 0.0 0.0 +es - fr 2 155 0.0 0.0 +es - fr 2 156 0.0 0.0 +es - fr 2 157 0.0 0.0 +es - fr 2 158 0.0 0.0 +es - fr 2 159 0.0 0.0 +es - fr 2 160 0.0 0.0 +es - fr 2 161 0.0 0.0 +es - fr 2 162 0.0 0.0 +es - fr 2 163 0.0 0.0 +es - fr 2 164 0.0 0.0 +es - fr 2 165 0.0 0.0 +es - fr 2 166 0.0 0.0 +es - fr 2 167 0.0 0.0 +es - fr 2 168 0.0 0.0 +es - fr 2 169 0.0 0.0 +es - fr 2 170 0.0 0.0 +es - fr 2 171 0.0 0.0 +es - fr 2 172 0.0 0.0 +es - fr 2 173 0.0 0.0 +es - fr 2 174 0.0 0.0 +es - fr 2 175 0.0 0.0 +es - fr 2 176 0.0 0.0 +es - fr 2 177 0.0 0.0 +es - fr 2 178 0.0 0.0 +es - fr 2 179 0.0 0.0 +es - fr 2 180 0.0 0.0 +es - fr 2 181 0.0 0.0 +es - fr 2 182 0.0 0.0 +es - fr 2 183 0.0 0.0 +es - fr 2 184 0.0 0.0 +es - fr 2 185 0.0 0.0 +es - fr 2 186 0.0 0.0 +es - fr 2 187 0.0 0.0 +es - fr 2 188 0.0 0.0 +es - fr 2 189 0.0 0.0 +es - fr 2 190 0.0 0.0 +es - fr 2 191 0.0 0.0 +es - fr 2 192 0.0 0.0 +es - fr 2 193 0.0 0.0 +es - fr 2 194 0.0 0.0 +es - fr 2 195 0.0 0.0 +es - fr 2 196 0.0 0.0 +es - fr 2 197 0.0 0.0 +es - fr 2 198 0.0 0.0 +es - fr 2 199 0.0 0.0 +es - fr 2 200 0.0 0.0 +es - fr 2 201 0.0 0.0 +es - fr 2 202 0.0 0.0 +es - fr 2 203 0.0 0.0 +es - fr 2 204 0.0 0.0 +es - fr 2 205 0.0 0.0 +es - fr 2 206 0.0 0.0 +es - fr 2 207 0.0 0.0 +es - fr 2 208 0.0 0.0 +es - fr 2 209 0.0 0.0 +es - fr 2 210 0.0 0.0 +es - fr 2 211 0.0 0.0 +es - fr 2 212 0.0 0.0 +es - fr 2 213 0.0 0.0 +es - fr 2 214 0.0 0.0 +es - fr 2 215 0.0 0.0 +es - fr 2 216 0.0 0.0 +es - fr 2 217 0.0 0.0 +es - fr 2 218 0.0 0.0 +es - fr 2 219 0.0 0.0 +es - fr 2 220 0.0 0.0 +es - fr 2 221 0.0 0.0 +es - fr 2 222 0.0 0.0 +es - fr 2 223 0.0 0.0 +es - fr 2 224 0.0 0.0 +es - fr 2 225 0.0 0.0 +es - fr 2 226 0.0 0.0 +es - fr 2 227 0.0 0.0 +es - fr 2 228 0.0 0.0 +es - fr 2 229 0.0 0.0 +es - fr 2 230 0.0 0.0 +es - fr 2 231 0.0 0.0 +es - fr 2 232 0.0 0.0 +es - fr 2 233 0.0 0.0 +es - fr 2 234 0.0 0.0 +es - fr 2 235 0.0 0.0 +es - fr 2 236 0.0 0.0 +es - fr 2 237 0.0 0.0 +es - fr 2 238 0.0 0.0 +es - fr 2 239 0.0 0.0 +es - fr 2 240 0.0 0.0 +es - fr 2 241 0.0 0.0 +es - fr 2 242 0.0 0.0 +es - fr 2 243 0.0 0.0 +es - fr 2 244 0.0 0.0 +es - fr 2 245 0.0 0.0 +es - fr 2 246 0.0 0.0 +es - fr 2 247 0.0 0.0 +es - fr 2 248 0.0 0.0 +es - fr 2 249 0.0 0.0 +es - fr 2 250 0.0 0.0 +es - fr 2 251 0.0 0.0 +es - fr 2 252 0.0 0.0 +es - fr 2 253 0.0 0.0 +es - fr 2 254 0.0 0.0 +es - fr 2 255 0.0 0.0 +es - fr 2 256 0.0 0.0 +es - fr 2 257 0.0 0.0 +es - fr 2 258 0.0 0.0 +es - fr 2 259 0.0 0.0 +es - fr 2 260 0.0 0.0 +es - fr 2 261 0.0 0.0 +es - fr 2 262 0.0 0.0 +es - fr 2 263 0.0 0.0 +es - fr 2 264 0.0 0.0 +es - fr 2 265 0.0 0.0 +es - fr 2 266 0.0 0.0 +es - fr 2 267 0.0 0.0 +es - fr 2 268 0.0 0.0 +es - fr 2 269 0.0 0.0 +es - fr 2 270 0.0 0.0 +es - fr 2 271 0.0 0.0 +es - fr 2 272 0.0 0.0 +es - fr 2 273 0.0 0.0 +es - fr 2 274 0.0 0.0 +es - fr 2 275 0.0 0.0 +es - fr 2 276 0.0 0.0 +es - fr 2 277 0.0 0.0 +es - fr 2 278 0.0 0.0 +es - fr 2 279 0.0 0.0 +es - fr 2 280 0.0 0.0 +es - fr 2 281 0.0 0.0 +es - fr 2 282 0.0 0.0 +es - fr 2 283 0.0 0.0 +es - fr 2 284 0.0 0.0 +es - fr 2 285 0.0 0.0 +es - fr 2 286 0.0 0.0 +es - fr 2 287 0.0 0.0 +es - fr 2 288 0.0 0.0 +es - fr 2 289 0.0 0.0 +es - fr 2 290 0.0 0.0 +es - fr 2 291 0.0 0.0 +es - fr 2 292 0.0 0.0 +es - fr 2 293 0.0 0.0 +es - fr 2 294 0.0 0.0 +es - fr 2 295 0.0 0.0 +es - fr 2 296 0.0 0.0 +es - fr 2 297 0.0 0.0 +es - fr 2 298 0.0 0.0 +es - fr 2 299 0.0 0.0 +es - fr 2 300 0.0 0.0 +es - fr 2 301 0.0 0.0 +es - fr 2 302 0.0 0.0 +es - fr 2 303 0.0 0.0 +es - fr 2 304 0.0 0.0 +es - fr 2 305 0.0 0.0 +es - fr 2 306 0.0 0.0 +es - fr 2 307 0.0 0.0 +es - fr 2 308 0.0 0.0 +es - fr 2 309 0.0 0.0 +es - fr 2 310 0.0 0.0 +es - fr 2 311 0.0 0.0 +es - fr 2 312 0.0 0.0 +es - fr 2 313 0.0 0.0 +es - fr 2 314 0.0 0.0 +es - fr 2 315 0.0 0.0 +es - fr 2 316 0.0 0.0 +es - fr 2 317 0.0 0.0 +es - fr 2 318 0.0 0.0 +es - fr 2 319 0.0 0.0 +es - fr 2 320 0.0 0.0 +es - fr 2 321 0.0 0.0 +es - fr 2 322 0.0 0.0 +es - fr 2 323 0.0 0.0 +es - fr 2 324 0.0 0.0 +es - fr 2 325 0.0 0.0 +es - fr 2 326 0.0 0.0 +es - fr 2 327 0.0 0.0 +es - fr 2 328 0.0 0.0 +es - fr 2 329 0.0 0.0 +es - fr 2 330 0.0 0.0 +es - fr 2 331 0.0 0.0 +es - fr 2 332 0.0 0.0 +es - fr 2 333 0.0 0.0 +es - fr 2 334 0.0 0.0 +es - fr 2 335 0.0 0.0 +es - fr 2 336 0.0 0.0 +fr - it 2 1 0.0 0.0 +fr - it 2 2 0.0 0.0 +fr - it 2 3 0.0 0.0 +fr - it 2 4 0.0 0.0 +fr - it 2 5 0.0 0.0 +fr - it 2 6 0.0 0.0 +fr - it 2 7 0.0 0.0 +fr - it 2 8 0.0 0.0 +fr - it 2 9 0.0 0.0 +fr - it 2 10 0.0 0.0 +fr - it 2 11 0.0 0.0 +fr - it 2 12 0.0 0.0 +fr - it 2 13 0.0 0.0 +fr - it 2 14 0.0 0.0 +fr - it 2 15 0.0 0.0 +fr - it 2 16 0.0 0.0 +fr - it 2 17 0.0 0.0 +fr - it 2 18 0.0 0.0 +fr - it 2 19 0.0 0.0 +fr - it 2 20 0.0 0.0 +fr - it 2 21 0.0 0.0 +fr - it 2 22 0.0 0.0 +fr - it 2 23 0.0 0.0 +fr - it 2 24 0.0 0.0 +fr - it 2 25 0.0 0.0 +fr - it 2 26 0.0 0.0 +fr - it 2 27 0.0 0.0 +fr - it 2 28 0.0 0.0 +fr - it 2 29 0.0 0.0 +fr - it 2 30 0.0 0.0 +fr - it 2 31 0.0 0.0 +fr - it 2 32 0.0 0.0 +fr - it 2 33 0.0 0.0 +fr - it 2 34 0.0 0.0 +fr - it 2 35 0.0 0.0 +fr - it 2 36 0.0 0.0 +fr - it 2 37 0.0 0.0 +fr - it 2 38 0.0 0.0 +fr - it 2 39 0.0 0.0 +fr - it 2 40 0.0 0.0 +fr - it 2 41 0.0 0.0 +fr - it 2 42 0.0 0.0 +fr - it 2 43 0.0 0.0 +fr - it 2 44 0.0 0.0 +fr - it 2 45 0.0 0.0 +fr - it 2 46 0.0 0.0 +fr - it 2 47 0.0 0.0 +fr - it 2 48 0.0 0.0 +fr - it 2 49 0.0 0.0 +fr - it 2 50 0.0 0.0 +fr - it 2 51 0.0 0.0 +fr - it 2 52 0.0 0.0 +fr - it 2 53 0.0 0.0 +fr - it 2 54 0.0 0.0 +fr - it 2 55 0.0 0.0 +fr - it 2 56 0.0 0.0 +fr - it 2 57 0.0 0.0 +fr - it 2 58 0.0 0.0 +fr - it 2 59 0.0 0.0 +fr - it 2 60 0.0 0.0 +fr - it 2 61 0.0 0.0 +fr - it 2 62 0.0 0.0 +fr - it 2 63 0.0 0.0 +fr - it 2 64 0.0 0.0 +fr - it 2 65 0.0 0.0 +fr - it 2 66 0.0 0.0 +fr - it 2 67 0.0 0.0 +fr - it 2 68 0.0 0.0 +fr - it 2 69 0.0 0.0 +fr - it 2 70 0.0 0.0 +fr - it 2 71 0.0 0.0 +fr - it 2 72 0.0 0.0 +fr - it 2 73 0.0 0.0 +fr - it 2 74 0.0 0.0 +fr - it 2 75 0.0 0.0 +fr - it 2 76 0.0 0.0 +fr - it 2 77 0.0 0.0 +fr - it 2 78 0.0 0.0 +fr - it 2 79 0.0 0.0 +fr - it 2 80 0.0 0.0 +fr - it 2 81 0.0 0.0 +fr - it 2 82 0.0 0.0 +fr - it 2 83 0.0 0.0 +fr - it 2 84 0.0 0.0 +fr - it 2 85 0.0 0.0 +fr - it 2 86 0.0 0.0 +fr - it 2 87 0.0 0.0 +fr - it 2 88 0.0 0.0 +fr - it 2 89 0.0 0.0 +fr - it 2 90 0.0 0.0 +fr - it 2 91 0.0 0.0 +fr - it 2 92 0.0 0.0 +fr - it 2 93 0.0 0.0 +fr - it 2 94 0.0 0.0 +fr - it 2 95 0.0 0.0 +fr - it 2 96 0.0 0.0 +fr - it 2 97 0.0 0.0 +fr - it 2 98 0.0 0.0 +fr - it 2 99 0.0 0.0 +fr - it 2 100 0.0 0.0 +fr - it 2 101 0.0 0.0 +fr - it 2 102 0.0 0.0 +fr - it 2 103 0.0 0.0 +fr - it 2 104 0.0 0.0 +fr - it 2 105 0.0 0.0 +fr - it 2 106 0.0 0.0 +fr - it 2 107 0.0 0.0 +fr - it 2 108 0.0 0.0 +fr - it 2 109 0.0 0.0 +fr - it 2 110 0.0 0.0 +fr - it 2 111 0.0 0.0 +fr - it 2 112 0.0 0.0 +fr - it 2 113 0.0 0.0 +fr - it 2 114 0.0 0.0 +fr - it 2 115 0.0 0.0 +fr - it 2 116 0.0 0.0 +fr - it 2 117 0.0 0.0 +fr - it 2 118 0.0 0.0 +fr - it 2 119 0.0 0.0 +fr - it 2 120 0.0 0.0 +fr - it 2 121 0.0 0.0 +fr - it 2 122 0.0 0.0 +fr - it 2 123 0.0 0.0 +fr - it 2 124 0.0 0.0 +fr - it 2 125 0.0 0.0 +fr - it 2 126 0.0 0.0 +fr - it 2 127 0.0 0.0 +fr - it 2 128 0.0 0.0 +fr - it 2 129 0.0 0.0 +fr - it 2 130 0.0 0.0 +fr - it 2 131 0.0 0.0 +fr - it 2 132 0.0 0.0 +fr - it 2 133 0.0 0.0 +fr - it 2 134 0.0 0.0 +fr - it 2 135 0.0 0.0 +fr - it 2 136 0.0 0.0 +fr - it 2 137 0.0 0.0 +fr - it 2 138 0.0 0.0 +fr - it 2 139 0.0 0.0 +fr - it 2 140 0.0 0.0 +fr - it 2 141 0.0 0.0 +fr - it 2 142 0.0 0.0 +fr - it 2 143 0.0 0.0 +fr - it 2 144 0.0 0.0 +fr - it 2 145 0.0 0.0 +fr - it 2 146 0.0 0.0 +fr - it 2 147 0.0 0.0 +fr - it 2 148 0.0 0.0 +fr - it 2 149 0.0 0.0 +fr - it 2 150 0.0 0.0 +fr - it 2 151 0.0 0.0 +fr - it 2 152 0.0 0.0 +fr - it 2 153 0.0 0.0 +fr - it 2 154 0.0 0.0 +fr - it 2 155 0.0 0.0 +fr - it 2 156 0.0 0.0 +fr - it 2 157 0.0 0.0 +fr - it 2 158 0.0 0.0 +fr - it 2 159 0.0 0.0 +fr - it 2 160 0.0 0.0 +fr - it 2 161 0.0 0.0 +fr - it 2 162 0.0 0.0 +fr - it 2 163 0.0 0.0 +fr - it 2 164 0.0 0.0 +fr - it 2 165 0.0 0.0 +fr - it 2 166 0.0 0.0 +fr - it 2 167 0.0 0.0 +fr - it 2 168 0.0 0.0 +fr - it 2 169 0.0 0.0 +fr - it 2 170 0.0 0.0 +fr - it 2 171 0.0 0.0 +fr - it 2 172 0.0 0.0 +fr - it 2 173 0.0 0.0 +fr - it 2 174 0.0 0.0 +fr - it 2 175 0.0 0.0 +fr - it 2 176 0.0 0.0 +fr - it 2 177 0.0 0.0 +fr - it 2 178 0.0 0.0 +fr - it 2 179 0.0 0.0 +fr - it 2 180 0.0 0.0 +fr - it 2 181 0.0 0.0 +fr - it 2 182 0.0 0.0 +fr - it 2 183 0.0 0.0 +fr - it 2 184 0.0 0.0 +fr - it 2 185 0.0 0.0 +fr - it 2 186 0.0 0.0 +fr - it 2 187 0.0 0.0 +fr - it 2 188 0.0 0.0 +fr - it 2 189 0.0 0.0 +fr - it 2 190 0.0 0.0 +fr - it 2 191 0.0 0.0 +fr - it 2 192 0.0 0.0 +fr - it 2 193 0.0 0.0 +fr - it 2 194 0.0 0.0 +fr - it 2 195 0.0 0.0 +fr - it 2 196 0.0 0.0 +fr - it 2 197 0.0 0.0 +fr - it 2 198 0.0 0.0 +fr - it 2 199 0.0 0.0 +fr - it 2 200 0.0 0.0 +fr - it 2 201 0.0 0.0 +fr - it 2 202 0.0 0.0 +fr - it 2 203 0.0 0.0 +fr - it 2 204 0.0 0.0 +fr - it 2 205 0.0 0.0 +fr - it 2 206 0.0 0.0 +fr - it 2 207 0.0 0.0 +fr - it 2 208 0.0 0.0 +fr - it 2 209 0.0 0.0 +fr - it 2 210 0.0 0.0 +fr - it 2 211 0.0 0.0 +fr - it 2 212 0.0 0.0 +fr - it 2 213 0.0 0.0 +fr - it 2 214 0.0 0.0 +fr - it 2 215 0.0 0.0 +fr - it 2 216 0.0 0.0 +fr - it 2 217 0.0 0.0 +fr - it 2 218 0.0 0.0 +fr - it 2 219 0.0 0.0 +fr - it 2 220 0.0 0.0 +fr - it 2 221 0.0 0.0 +fr - it 2 222 0.0 0.0 +fr - it 2 223 0.0 0.0 +fr - it 2 224 0.0 0.0 +fr - it 2 225 0.0 0.0 +fr - it 2 226 0.0 0.0 +fr - it 2 227 0.0 0.0 +fr - it 2 228 0.0 0.0 +fr - it 2 229 0.0 0.0 +fr - it 2 230 0.0 0.0 +fr - it 2 231 0.0 0.0 +fr - it 2 232 0.0 0.0 +fr - it 2 233 0.0 0.0 +fr - it 2 234 0.0 0.0 +fr - it 2 235 0.0 0.0 +fr - it 2 236 0.0 0.0 +fr - it 2 237 0.0 0.0 +fr - it 2 238 0.0 0.0 +fr - it 2 239 0.0 0.0 +fr - it 2 240 0.0 0.0 +fr - it 2 241 0.0 0.0 +fr - it 2 242 0.0 0.0 +fr - it 2 243 0.0 0.0 +fr - it 2 244 0.0 0.0 +fr - it 2 245 0.0 0.0 +fr - it 2 246 0.0 0.0 +fr - it 2 247 0.0 0.0 +fr - it 2 248 0.0 0.0 +fr - it 2 249 0.0 0.0 +fr - it 2 250 0.0 0.0 +fr - it 2 251 0.0 0.0 +fr - it 2 252 0.0 0.0 +fr - it 2 253 0.0 0.0 +fr - it 2 254 0.0 0.0 +fr - it 2 255 0.0 0.0 +fr - it 2 256 0.0 0.0 +fr - it 2 257 0.0 0.0 +fr - it 2 258 0.0 0.0 +fr - it 2 259 0.0 0.0 +fr - it 2 260 0.0 0.0 +fr - it 2 261 0.0 0.0 +fr - it 2 262 0.0 0.0 +fr - it 2 263 0.0 0.0 +fr - it 2 264 0.0 0.0 +fr - it 2 265 0.0 0.0 +fr - it 2 266 0.0 0.0 +fr - it 2 267 0.0 0.0 +fr - it 2 268 0.0 0.0 +fr - it 2 269 0.0 0.0 +fr - it 2 270 0.0 0.0 +fr - it 2 271 0.0 0.0 +fr - it 2 272 0.0 0.0 +fr - it 2 273 0.0 0.0 +fr - it 2 274 0.0 0.0 +fr - it 2 275 0.0 0.0 +fr - it 2 276 0.0 0.0 +fr - it 2 277 0.0 0.0 +fr - it 2 278 0.0 0.0 +fr - it 2 279 0.0 0.0 +fr - it 2 280 0.0 0.0 +fr - it 2 281 0.0 0.0 +fr - it 2 282 0.0 0.0 +fr - it 2 283 0.0 0.0 +fr - it 2 284 0.0 0.0 +fr - it 2 285 0.0 0.0 +fr - it 2 286 0.0 0.0 +fr - it 2 287 0.0 0.0 +fr - it 2 288 0.0 0.0 +fr - it 2 289 0.0 0.0 +fr - it 2 290 0.0 0.0 +fr - it 2 291 0.0 0.0 +fr - it 2 292 0.0 0.0 +fr - it 2 293 0.0 0.0 +fr - it 2 294 0.0 0.0 +fr - it 2 295 0.0 0.0 +fr - it 2 296 0.0 0.0 +fr - it 2 297 0.0 0.0 +fr - it 2 298 0.0 0.0 +fr - it 2 299 0.0 0.0 +fr - it 2 300 0.0 0.0 +fr - it 2 301 0.0 0.0 +fr - it 2 302 0.0 0.0 +fr - it 2 303 0.0 0.0 +fr - it 2 304 0.0 0.0 +fr - it 2 305 0.0 0.0 +fr - it 2 306 0.0 0.0 +fr - it 2 307 0.0 0.0 +fr - it 2 308 0.0 0.0 +fr - it 2 309 0.0 0.0 +fr - it 2 310 0.0 0.0 +fr - it 2 311 0.0 0.0 +fr - it 2 312 0.0 0.0 +fr - it 2 313 0.0 0.0 +fr - it 2 314 0.0 0.0 +fr - it 2 315 0.0 0.0 +fr - it 2 316 0.0 0.0 +fr - it 2 317 0.0 0.0 +fr - it 2 318 0.0 0.0 +fr - it 2 319 0.0 0.0 +fr - it 2 320 0.0 0.0 +fr - it 2 321 0.0 0.0 +fr - it 2 322 0.0 0.0 +fr - it 2 323 0.0 0.0 +fr - it 2 324 0.0 0.0 +fr - it 2 325 0.0 0.0 +fr - it 2 326 0.0 0.0 +fr - it 2 327 0.0 0.0 +fr - it 2 328 0.0 0.0 +fr - it 2 329 0.0 0.0 +fr - it 2 330 0.0 0.0 +fr - it 2 331 0.0 0.0 +fr - it 2 332 0.0 0.0 +fr - it 2 333 0.0 0.0 +fr - it 2 334 0.0 0.0 +fr - it 2 335 0.0 0.0 +fr - it 2 336 0.0 0.0 diff --git a/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-04-all.result.tsv b/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-04-all.result.tsv index c57daa2450..b5a56dfbd1 100644 --- a/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-04-all.result.tsv +++ b/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-04-all.result.tsv @@ -1,13 +1,13 @@ -link timeId time FLOW LIN. EXP FLOW LIN. STD FLOW LIN. MIN FLOW LIN. MAX UCAP LIN. EXP UCAP LIN. STD UCAP LIN. MIN UCAP LIN. MAX LOOP FLOW VALUES FLOW QUAD. VALUES CONG. FEE (ALG.) EXP CONG. FEE (ALG.) STD CONG. FEE (ALG.) MIN CONG. FEE (ALG.) MAX CONG. FEE (ABS.) EXP CONG. FEE (ABS.) STD CONG. FEE (ABS.) MIN CONG. FEE (ABS.) MAX MARG. COST EXP MARG. COST STD MARG. COST MIN MARG. COST MAX CONG. PROB + VALUES CONG. PROB - VALUES HURDLE COST EXP HURDLE COST STD HURDLE COST MIN HURDLE COST MAX -de - fr 1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 7 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 8 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 9 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 10 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 11 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 12 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +link timeId FLOW LIN. EXP FLOW LIN. STD FLOW LIN. MIN FLOW LIN. MAX UCAP LIN. EXP UCAP LIN. STD UCAP LIN. MIN UCAP LIN. MAX LOOP FLOW VALUES FLOW QUAD. VALUES CONG. FEE (ALG.) EXP CONG. FEE (ALG.) STD CONG. FEE (ALG.) MIN CONG. FEE (ALG.) MAX CONG. FEE (ABS.) EXP CONG. FEE (ABS.) STD CONG. FEE (ABS.) MIN CONG. FEE (ABS.) MAX MARG. COST EXP MARG. COST STD MARG. COST MIN MARG. COST MAX CONG. PROB + VALUES CONG. PROB - VALUES HURDLE COST EXP HURDLE COST STD HURDLE COST MIN HURDLE COST MAX +de - fr 1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 7 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 8 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 9 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 10 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 11 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 12 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 diff --git a/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-04.result.tsv b/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-04.result.tsv index eba38e41e3..592bf57684 100644 --- a/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-04.result.tsv +++ b/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-04.result.tsv @@ -1,337 +1,337 @@ -link mcYear timeId time FLOW LIN. UCAP LIN. LOOP FLOW FLOW QUAD. CONG. FEE (ALG.) CONG. FEE (ABS.) MARG. COST CONG. PROB + CONG. PROB - HURDLE COST -de - fr 1 1 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 2 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 3 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 4 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 5 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 6 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 7 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 8 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 9 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 10 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 11 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 12 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 13 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 14 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 15 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 16 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 17 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 18 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 19 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 20 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 21 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 22 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 23 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 24 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 25 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 26 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 27 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 28 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 29 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 30 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 31 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 32 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 33 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 34 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 35 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 36 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 37 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 38 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 39 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 40 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 41 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 42 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 43 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 44 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 45 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 46 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 47 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 48 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 49 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 50 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 51 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 52 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 53 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 54 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 55 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 56 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 57 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 58 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 59 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 60 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 61 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 62 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 63 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 64 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 65 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 66 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 67 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 68 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 69 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 70 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 71 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 72 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 73 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 74 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 75 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 76 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 77 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 78 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 79 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 80 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 81 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 82 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 83 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 84 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 85 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 86 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 87 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 88 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 89 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 90 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 91 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 92 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 93 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 94 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 95 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 96 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 97 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 98 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 99 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 100 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 101 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 102 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 103 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 104 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 105 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 106 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 107 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 108 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 109 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 110 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 111 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 112 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 113 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 114 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 115 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 116 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 117 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 118 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 119 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 120 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 121 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 122 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 123 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 124 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 125 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 126 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 127 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 128 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 129 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 130 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 131 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 132 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 133 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 134 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 135 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 136 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 137 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 138 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 139 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 140 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 141 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 142 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 143 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 144 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 145 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 146 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 147 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 148 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 149 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 150 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 151 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 152 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 153 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 154 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 155 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 156 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 157 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 158 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 159 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 160 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 161 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 162 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 163 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 164 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 165 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 166 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 167 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 168 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 169 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 170 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 171 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 172 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 173 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 174 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 175 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 176 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 177 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 178 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 179 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 180 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 181 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 182 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 183 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 184 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 185 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 186 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 187 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 188 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 189 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 190 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 191 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 192 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 193 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 194 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 195 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 196 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 197 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 198 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 199 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 200 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 201 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 202 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 203 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 204 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 205 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 206 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 207 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 208 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 209 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 210 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 211 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 212 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 213 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 214 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 215 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 216 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 217 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 218 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 219 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 220 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 221 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 222 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 223 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 224 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 225 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 226 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 227 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 228 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 229 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 230 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 231 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 232 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 233 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 234 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 235 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 236 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 237 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 238 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 239 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 240 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 241 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 242 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 243 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 244 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 245 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 246 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 247 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 248 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 249 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 250 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 251 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 252 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 253 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 254 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 255 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 256 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 257 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 258 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 259 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 260 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 261 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 262 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 263 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 264 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 265 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 266 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 267 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 268 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 269 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 270 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 271 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 272 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 273 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 274 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 275 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 276 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 277 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 278 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 279 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 280 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 281 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 282 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 283 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 284 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 285 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 286 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 287 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 288 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 289 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 290 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 291 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 292 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 293 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 294 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 295 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 296 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 297 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 298 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 299 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 300 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 301 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 302 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 303 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 304 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 305 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 306 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 307 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 308 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 309 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 310 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 311 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 312 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 313 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 314 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 315 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 316 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 317 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 318 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 319 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 320 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 321 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 322 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 323 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 324 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 325 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 326 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 327 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 328 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 329 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 330 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 331 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 332 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 333 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 334 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 335 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -de - fr 1 336 2030 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +link mcYear timeId FLOW LIN. UCAP LIN. LOOP FLOW FLOW QUAD. CONG. FEE (ALG.) CONG. FEE (ABS.) MARG. COST CONG. PROB + CONG. PROB - HURDLE COST +de - fr 1 1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 7 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 8 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 9 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 10 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 11 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 12 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 13 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 14 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 15 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 16 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 17 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 18 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 19 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 20 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 21 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 22 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 23 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 24 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 25 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 26 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 27 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 28 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 29 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 30 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 31 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 32 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 33 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 34 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 35 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 36 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 37 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 38 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 39 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 40 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 41 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 42 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 43 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 44 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 45 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 46 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 47 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 48 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 49 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 50 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 51 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 52 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 53 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 54 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 55 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 56 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 57 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 58 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 59 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 60 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 61 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 62 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 63 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 64 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 65 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 66 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 68 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 69 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 70 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 71 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 72 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 73 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 74 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 75 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 76 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 77 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 78 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 79 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 80 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 81 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 82 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 83 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 84 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 85 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 86 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 87 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 88 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 89 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 90 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 91 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 92 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 93 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 94 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 95 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 96 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 97 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 98 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 99 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 100 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 101 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 102 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 103 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 104 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 105 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 106 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 107 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 108 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 109 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 110 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 111 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 112 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 113 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 114 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 115 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 116 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 117 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 118 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 119 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 120 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 121 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 122 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 123 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 124 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 125 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 126 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 127 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 128 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 129 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 130 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 131 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 132 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 133 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 134 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 135 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 136 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 137 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 138 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 139 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 140 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 141 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 142 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 143 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 144 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 145 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 146 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 147 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 148 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 149 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 150 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 151 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 152 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 153 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 154 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 155 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 156 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 157 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 158 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 159 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 160 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 161 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 162 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 163 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 164 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 165 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 166 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 167 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 168 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 169 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 170 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 171 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 172 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 173 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 174 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 175 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 176 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 177 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 178 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 179 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 180 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 181 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 182 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 183 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 184 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 185 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 186 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 187 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 188 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 189 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 190 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 191 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 192 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 193 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 194 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 195 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 196 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 197 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 198 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 199 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 200 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 201 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 202 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 203 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 204 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 205 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 206 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 207 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 208 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 209 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 210 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 211 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 212 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 213 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 214 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 215 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 216 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 217 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 218 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 219 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 220 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 221 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 222 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 223 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 224 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 225 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 226 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 227 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 228 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 229 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 230 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 231 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 232 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 233 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 234 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 235 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 236 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 237 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 238 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 239 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 240 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 241 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 242 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 243 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 244 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 245 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 246 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 247 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 248 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 249 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 250 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 251 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 252 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 253 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 254 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 255 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 256 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 257 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 258 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 259 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 260 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 261 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 262 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 263 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 264 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 265 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 266 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 267 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 268 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 269 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 270 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 271 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 272 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 273 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 274 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 275 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 276 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 277 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 278 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 279 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 280 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 281 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 282 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 283 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 284 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 285 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 286 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 287 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 288 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 289 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 290 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 291 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 292 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 293 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 294 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 295 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 296 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 297 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 298 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 299 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 300 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 301 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 302 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 303 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 304 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 305 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 306 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 307 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 308 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 309 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 310 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 311 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 312 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 313 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 314 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 315 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 316 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 317 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 318 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 319 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 320 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 321 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 322 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 323 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 324 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 325 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 326 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 327 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 328 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 329 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 330 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 331 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 332 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 333 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 334 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 335 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +de - fr 1 336 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 diff --git a/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-05-all.result.tsv b/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-05-all.result.tsv index 504ad467d7..b764e6c9b4 100644 --- a/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-05-all.result.tsv +++ b/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-05-all.result.tsv @@ -1,365 +1,365 @@ -link timeId time FLOW LIN. MIN FLOW LIN. MAX UCAP LIN. MIN UCAP LIN. MAX CONG. FEE (ALG.) MIN CONG. FEE (ALG.) MAX CONG. FEE (ABS.) MIN CONG. FEE (ABS.) MAX MARG. COST MIN MARG. COST MAX HURDLE COST MIN HURDLE COST MAX -de - fr 1 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 2 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 3 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 4 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 5 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 6 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 7 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 8 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 9 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 10 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 11 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 12 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 13 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 14 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 15 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 16 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 17 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 18 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 19 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 20 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 21 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 22 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 23 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 24 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 25 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 26 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 27 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 28 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 29 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 30 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 31 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 32 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 33 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 34 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 35 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 36 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 37 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 38 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 39 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 40 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 41 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 42 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 43 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 44 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 45 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 46 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 47 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 48 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 49 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 50 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 51 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 52 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 53 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 54 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 55 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 56 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 57 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 58 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 59 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 60 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 61 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 62 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 63 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 64 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 65 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 66 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 67 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 68 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 69 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 70 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 71 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 72 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 73 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 74 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 75 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 76 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 77 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 78 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 79 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 80 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 81 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 82 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 83 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 84 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 85 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 86 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 87 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 88 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 89 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 90 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 91 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 92 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 93 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 94 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 95 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 96 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 97 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 98 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 99 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 100 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 101 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 102 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 103 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 104 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 105 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 106 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 107 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 108 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 109 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 110 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 111 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 112 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 113 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 114 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 115 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 116 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 117 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 118 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 119 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 120 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 121 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 122 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 123 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 124 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 125 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 126 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 127 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 128 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 129 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 130 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 131 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 132 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 133 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 134 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 135 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 136 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 137 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 138 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 139 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 140 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 141 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 142 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 143 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 144 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 145 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 146 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 147 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 148 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 149 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 150 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 151 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 152 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 153 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 154 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 155 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 156 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 157 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 158 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 159 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 160 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 161 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 162 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 163 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 164 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 165 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 166 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 167 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 168 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 169 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 170 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 171 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 172 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 173 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 174 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 175 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 176 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 177 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 178 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 179 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 180 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 181 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 182 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 183 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 184 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 185 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 186 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 187 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 188 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 189 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 190 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 191 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 192 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 193 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 194 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 195 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 196 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 197 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 198 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 199 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 200 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 201 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 202 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 203 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 204 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 205 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 206 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 207 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 208 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 209 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 210 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 211 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 212 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 213 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 214 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 215 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 216 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 217 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 218 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 219 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 220 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 221 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 222 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 223 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 224 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 225 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 226 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 227 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 228 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 229 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 230 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 231 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 232 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 233 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 234 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 235 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 236 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 237 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 238 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 239 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 240 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 241 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 242 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 243 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 244 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 245 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 246 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 247 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 248 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 249 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 250 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 251 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 252 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 253 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 254 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 255 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 256 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 257 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 258 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 259 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 260 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 261 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 262 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 263 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 264 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 265 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 266 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 267 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 268 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 269 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 270 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 271 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 272 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 273 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 274 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 275 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 276 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 277 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 278 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 279 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 280 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 281 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 282 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 283 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 284 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 285 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 286 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 287 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 288 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 289 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 290 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 291 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 292 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 293 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 294 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 295 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 296 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 297 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 298 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 299 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 300 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 301 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 302 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 303 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 304 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 305 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 306 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 307 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 308 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 309 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 310 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 311 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 312 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 313 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 314 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 315 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 316 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 317 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 318 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 319 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 320 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 321 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 322 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 323 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 324 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 325 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 326 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 327 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 328 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 329 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 330 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 331 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 332 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 333 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 334 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 335 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 336 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 337 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 338 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 339 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 340 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 341 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 342 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 343 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 344 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 345 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 346 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 347 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 348 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 349 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 350 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 351 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 352 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 353 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 354 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 355 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 356 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 357 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 358 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 359 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 360 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 361 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 362 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 363 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -de - fr 364 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +link timeId FLOW LIN. MIN FLOW LIN. MAX UCAP LIN. MIN UCAP LIN. MAX CONG. FEE (ALG.) MIN CONG. FEE (ALG.) MAX CONG. FEE (ABS.) MIN CONG. FEE (ABS.) MAX MARG. COST MIN MARG. COST MAX HURDLE COST MIN HURDLE COST MAX +de - fr 1 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 2 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 3 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 4 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 5 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 6 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 7 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 8 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 9 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 10 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 11 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 12 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 13 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 14 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 15 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 16 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 17 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 18 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 19 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 20 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 21 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 22 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 23 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 24 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 25 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 26 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 27 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 28 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 29 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 30 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 31 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 32 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 33 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 34 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 35 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 36 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 37 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 38 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 39 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 40 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 41 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 42 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 43 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 44 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 45 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 46 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 47 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 48 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 49 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 50 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 51 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 52 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 53 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 54 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 55 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 56 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 57 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 58 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 59 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 60 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 61 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 62 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 63 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 64 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 65 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 66 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 67 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 68 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 69 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 70 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 71 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 72 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 73 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 74 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 75 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 76 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 77 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 78 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 79 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 80 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 81 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 82 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 83 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 84 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 85 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 86 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 87 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 88 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 89 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 90 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 91 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 92 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 93 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 94 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 95 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 96 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 97 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 98 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 99 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 100 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 101 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 102 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 103 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 104 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 105 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 106 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 107 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 108 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 109 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 110 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 111 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 112 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 113 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 114 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 115 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 116 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 117 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 118 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 119 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 120 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 121 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 122 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 123 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 124 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 125 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 126 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 127 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 128 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 129 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 130 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 131 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 132 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 133 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 134 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 135 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 136 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 137 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 138 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 139 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 140 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 141 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 142 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 143 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 144 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 145 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 146 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 147 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 148 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 149 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 150 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 151 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 152 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 153 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 154 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 155 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 156 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 157 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 158 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 159 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 160 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 161 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 162 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 163 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 164 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 165 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 166 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 167 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 168 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 169 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 170 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 171 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 172 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 173 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 174 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 175 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 176 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 177 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 178 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 179 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 180 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 181 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 182 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 183 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 184 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 185 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 186 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 187 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 188 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 189 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 190 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 191 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 192 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 193 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 194 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 195 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 196 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 197 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 198 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 199 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 200 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 201 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 202 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 203 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 204 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 205 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 206 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 207 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 208 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 209 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 210 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 211 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 212 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 213 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 214 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 215 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 216 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 217 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 218 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 219 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 220 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 221 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 222 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 223 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 224 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 225 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 226 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 227 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 228 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 229 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 230 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 231 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 232 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 233 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 234 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 235 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 236 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 237 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 238 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 239 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 240 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 241 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 242 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 243 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 244 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 245 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 246 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 247 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 248 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 249 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 250 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 251 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 252 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 253 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 254 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 255 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 256 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 257 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 258 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 259 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 260 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 261 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 262 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 263 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 264 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 265 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 266 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 267 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 268 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 269 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 270 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 271 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 272 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 273 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 274 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 275 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 276 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 277 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 278 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 279 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 280 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 281 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 282 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 283 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 284 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 285 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 286 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 287 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 288 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 289 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 290 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 291 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 292 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 293 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 294 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 295 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 296 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 297 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 298 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 299 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 300 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 301 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 302 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 303 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 304 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 305 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 306 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 307 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 308 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 309 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 310 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 311 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 312 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 313 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 314 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 315 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 316 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 317 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 318 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 319 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 320 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 321 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 322 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 323 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 324 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 325 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 326 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 327 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 328 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 329 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 330 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 331 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 332 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 333 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 334 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 335 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 336 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 337 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 338 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 339 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 340 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 341 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 342 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 343 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 344 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 345 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 346 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 347 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 348 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 349 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 350 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 351 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 352 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 353 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 354 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 355 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 356 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 357 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 358 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 359 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 360 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 361 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 362 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 363 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +de - fr 364 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 diff --git a/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-05.result.tsv b/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-05.result.tsv index 0e9a836a1c..0f55d02127 100644 --- a/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-05.result.tsv +++ b/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-05.result.tsv @@ -1,2017 +1,2017 @@ -link mcYear timeId time MARG. COST CONG. PROB + -de - fr 1 1 2030 0.0 0.0 -de - fr 1 2 2030 0.0 0.0 -de - fr 1 3 2030 0.0 0.0 -de - fr 1 4 2030 0.0 0.0 -de - fr 1 5 2030 0.0 0.0 -de - fr 1 6 2030 0.0 0.0 -de - fr 1 7 2030 0.0 0.0 -de - fr 1 8 2030 0.0 0.0 -de - fr 1 9 2030 0.0 0.0 -de - fr 1 10 2030 0.0 0.0 -de - fr 1 11 2030 0.0 0.0 -de - fr 1 12 2030 0.0 0.0 -de - fr 1 13 2030 0.0 0.0 -de - fr 1 14 2030 0.0 0.0 -de - fr 1 15 2030 0.0 0.0 -de - fr 1 16 2030 0.0 0.0 -de - fr 1 17 2030 0.0 0.0 -de - fr 1 18 2030 0.0 0.0 -de - fr 1 19 2030 0.0 0.0 -de - fr 1 20 2030 0.0 0.0 -de - fr 1 21 2030 0.0 0.0 -de - fr 1 22 2030 0.0 0.0 -de - fr 1 23 2030 0.0 0.0 -de - fr 1 24 2030 0.0 0.0 -de - fr 1 25 2030 0.0 0.0 -de - fr 1 26 2030 0.0 0.0 -de - fr 1 27 2030 0.0 0.0 -de - fr 1 28 2030 0.0 0.0 -de - fr 1 29 2030 0.0 0.0 -de - fr 1 30 2030 0.0 0.0 -de - fr 1 31 2030 0.0 0.0 -de - fr 1 32 2030 0.0 0.0 -de - fr 1 33 2030 0.0 0.0 -de - fr 1 34 2030 0.0 0.0 -de - fr 1 35 2030 0.0 0.0 -de - fr 1 36 2030 0.0 0.0 -de - fr 1 37 2030 0.0 0.0 -de - fr 1 38 2030 0.0 0.0 -de - fr 1 39 2030 0.0 0.0 -de - fr 1 40 2030 0.0 0.0 -de - fr 1 41 2030 0.0 0.0 -de - fr 1 42 2030 0.0 0.0 -de - fr 1 43 2030 0.0 0.0 -de - fr 1 44 2030 0.0 0.0 -de - fr 1 45 2030 0.0 0.0 -de - fr 1 46 2030 0.0 0.0 -de - fr 1 47 2030 0.0 0.0 -de - fr 1 48 2030 0.0 0.0 -de - fr 1 49 2030 0.0 0.0 -de - fr 1 50 2030 0.0 0.0 -de - fr 1 51 2030 0.0 0.0 -de - fr 1 52 2030 0.0 0.0 -de - fr 1 53 2030 0.0 0.0 -de - fr 1 54 2030 0.0 0.0 -de - fr 1 55 2030 0.0 0.0 -de - fr 1 56 2030 0.0 0.0 -de - fr 1 57 2030 0.0 0.0 -de - fr 1 58 2030 0.0 0.0 -de - fr 1 59 2030 0.0 0.0 -de - fr 1 60 2030 0.0 0.0 -de - fr 1 61 2030 0.0 0.0 -de - fr 1 62 2030 0.0 0.0 -de - fr 1 63 2030 0.0 0.0 -de - fr 1 64 2030 0.0 0.0 -de - fr 1 65 2030 0.0 0.0 -de - fr 1 66 2030 0.0 0.0 -de - fr 1 67 2030 0.0 0.0 -de - fr 1 68 2030 0.0 0.0 -de - fr 1 69 2030 0.0 0.0 -de - fr 1 70 2030 0.0 0.0 -de - fr 1 71 2030 0.0 0.0 -de - fr 1 72 2030 0.0 0.0 -de - fr 1 73 2030 0.0 0.0 -de - fr 1 74 2030 0.0 0.0 -de - fr 1 75 2030 0.0 0.0 -de - fr 1 76 2030 0.0 0.0 -de - fr 1 77 2030 0.0 0.0 -de - fr 1 78 2030 0.0 0.0 -de - fr 1 79 2030 0.0 0.0 -de - fr 1 80 2030 0.0 0.0 -de - fr 1 81 2030 0.0 0.0 -de - fr 1 82 2030 0.0 0.0 -de - fr 1 83 2030 0.0 0.0 -de - fr 1 84 2030 0.0 0.0 -de - fr 1 85 2030 0.0 0.0 -de - fr 1 86 2030 0.0 0.0 -de - fr 1 87 2030 0.0 0.0 -de - fr 1 88 2030 0.0 0.0 -de - fr 1 89 2030 0.0 0.0 -de - fr 1 90 2030 0.0 0.0 -de - fr 1 91 2030 0.0 0.0 -de - fr 1 92 2030 0.0 0.0 -de - fr 1 93 2030 0.0 0.0 -de - fr 1 94 2030 0.0 0.0 -de - fr 1 95 2030 0.0 0.0 -de - fr 1 96 2030 0.0 0.0 -de - fr 1 97 2030 0.0 0.0 -de - fr 1 98 2030 0.0 0.0 -de - fr 1 99 2030 0.0 0.0 -de - fr 1 100 2030 0.0 0.0 -de - fr 1 101 2030 0.0 0.0 -de - fr 1 102 2030 0.0 0.0 -de - fr 1 103 2030 0.0 0.0 -de - fr 1 104 2030 0.0 0.0 -de - fr 1 105 2030 0.0 0.0 -de - fr 1 106 2030 0.0 0.0 -de - fr 1 107 2030 0.0 0.0 -de - fr 1 108 2030 0.0 0.0 -de - fr 1 109 2030 0.0 0.0 -de - fr 1 110 2030 0.0 0.0 -de - fr 1 111 2030 0.0 0.0 -de - fr 1 112 2030 0.0 0.0 -de - fr 1 113 2030 0.0 0.0 -de - fr 1 114 2030 0.0 0.0 -de - fr 1 115 2030 0.0 0.0 -de - fr 1 116 2030 0.0 0.0 -de - fr 1 117 2030 0.0 0.0 -de - fr 1 118 2030 0.0 0.0 -de - fr 1 119 2030 0.0 0.0 -de - fr 1 120 2030 0.0 0.0 -de - fr 1 121 2030 0.0 0.0 -de - fr 1 122 2030 0.0 0.0 -de - fr 1 123 2030 0.0 0.0 -de - fr 1 124 2030 0.0 0.0 -de - fr 1 125 2030 0.0 0.0 -de - fr 1 126 2030 0.0 0.0 -de - fr 1 127 2030 0.0 0.0 -de - fr 1 128 2030 0.0 0.0 -de - fr 1 129 2030 0.0 0.0 -de - fr 1 130 2030 0.0 0.0 -de - fr 1 131 2030 0.0 0.0 -de - fr 1 132 2030 0.0 0.0 -de - fr 1 133 2030 0.0 0.0 -de - fr 1 134 2030 0.0 0.0 -de - fr 1 135 2030 0.0 0.0 -de - fr 1 136 2030 0.0 0.0 -de - fr 1 137 2030 0.0 0.0 -de - fr 1 138 2030 0.0 0.0 -de - fr 1 139 2030 0.0 0.0 -de - fr 1 140 2030 0.0 0.0 -de - fr 1 141 2030 0.0 0.0 -de - fr 1 142 2030 0.0 0.0 -de - fr 1 143 2030 0.0 0.0 -de - fr 1 144 2030 0.0 0.0 -de - fr 1 145 2030 0.0 0.0 -de - fr 1 146 2030 0.0 0.0 -de - fr 1 147 2030 0.0 0.0 -de - fr 1 148 2030 0.0 0.0 -de - fr 1 149 2030 0.0 0.0 -de - fr 1 150 2030 0.0 0.0 -de - fr 1 151 2030 0.0 0.0 -de - fr 1 152 2030 0.0 0.0 -de - fr 1 153 2030 0.0 0.0 -de - fr 1 154 2030 0.0 0.0 -de - fr 1 155 2030 0.0 0.0 -de - fr 1 156 2030 0.0 0.0 -de - fr 1 157 2030 0.0 0.0 -de - fr 1 158 2030 0.0 0.0 -de - fr 1 159 2030 0.0 0.0 -de - fr 1 160 2030 0.0 0.0 -de - fr 1 161 2030 0.0 0.0 -de - fr 1 162 2030 0.0 0.0 -de - fr 1 163 2030 0.0 0.0 -de - fr 1 164 2030 0.0 0.0 -de - fr 1 165 2030 0.0 0.0 -de - fr 1 166 2030 0.0 0.0 -de - fr 1 167 2030 0.0 0.0 -de - fr 1 168 2030 0.0 0.0 -de - fr 1 169 2030 0.0 0.0 -de - fr 1 170 2030 0.0 0.0 -de - fr 1 171 2030 0.0 0.0 -de - fr 1 172 2030 0.0 0.0 -de - fr 1 173 2030 0.0 0.0 -de - fr 1 174 2030 0.0 0.0 -de - fr 1 175 2030 0.0 0.0 -de - fr 1 176 2030 0.0 0.0 -de - fr 1 177 2030 0.0 0.0 -de - fr 1 178 2030 0.0 0.0 -de - fr 1 179 2030 0.0 0.0 -de - fr 1 180 2030 0.0 0.0 -de - fr 1 181 2030 0.0 0.0 -de - fr 1 182 2030 0.0 0.0 -de - fr 1 183 2030 0.0 0.0 -de - fr 1 184 2030 0.0 0.0 -de - fr 1 185 2030 0.0 0.0 -de - fr 1 186 2030 0.0 0.0 -de - fr 1 187 2030 0.0 0.0 -de - fr 1 188 2030 0.0 0.0 -de - fr 1 189 2030 0.0 0.0 -de - fr 1 190 2030 0.0 0.0 -de - fr 1 191 2030 0.0 0.0 -de - fr 1 192 2030 0.0 0.0 -de - fr 1 193 2030 0.0 0.0 -de - fr 1 194 2030 0.0 0.0 -de - fr 1 195 2030 0.0 0.0 -de - fr 1 196 2030 0.0 0.0 -de - fr 1 197 2030 0.0 0.0 -de - fr 1 198 2030 0.0 0.0 -de - fr 1 199 2030 0.0 0.0 -de - fr 1 200 2030 0.0 0.0 -de - fr 1 201 2030 0.0 0.0 -de - fr 1 202 2030 0.0 0.0 -de - fr 1 203 2030 0.0 0.0 -de - fr 1 204 2030 0.0 0.0 -de - fr 1 205 2030 0.0 0.0 -de - fr 1 206 2030 0.0 0.0 -de - fr 1 207 2030 0.0 0.0 -de - fr 1 208 2030 0.0 0.0 -de - fr 1 209 2030 0.0 0.0 -de - fr 1 210 2030 0.0 0.0 -de - fr 1 211 2030 0.0 0.0 -de - fr 1 212 2030 0.0 0.0 -de - fr 1 213 2030 0.0 0.0 -de - fr 1 214 2030 0.0 0.0 -de - fr 1 215 2030 0.0 0.0 -de - fr 1 216 2030 0.0 0.0 -de - fr 1 217 2030 0.0 0.0 -de - fr 1 218 2030 0.0 0.0 -de - fr 1 219 2030 0.0 0.0 -de - fr 1 220 2030 0.0 0.0 -de - fr 1 221 2030 0.0 0.0 -de - fr 1 222 2030 0.0 0.0 -de - fr 1 223 2030 0.0 0.0 -de - fr 1 224 2030 0.0 0.0 -de - fr 1 225 2030 0.0 0.0 -de - fr 1 226 2030 0.0 0.0 -de - fr 1 227 2030 0.0 0.0 -de - fr 1 228 2030 0.0 0.0 -de - fr 1 229 2030 0.0 0.0 -de - fr 1 230 2030 0.0 0.0 -de - fr 1 231 2030 0.0 0.0 -de - fr 1 232 2030 0.0 0.0 -de - fr 1 233 2030 0.0 0.0 -de - fr 1 234 2030 0.0 0.0 -de - fr 1 235 2030 0.0 0.0 -de - fr 1 236 2030 0.0 0.0 -de - fr 1 237 2030 0.0 0.0 -de - fr 1 238 2030 0.0 0.0 -de - fr 1 239 2030 0.0 0.0 -de - fr 1 240 2030 0.0 0.0 -de - fr 1 241 2030 0.0 0.0 -de - fr 1 242 2030 0.0 0.0 -de - fr 1 243 2030 0.0 0.0 -de - fr 1 244 2030 0.0 0.0 -de - fr 1 245 2030 0.0 0.0 -de - fr 1 246 2030 0.0 0.0 -de - fr 1 247 2030 0.0 0.0 -de - fr 1 248 2030 0.0 0.0 -de - fr 1 249 2030 0.0 0.0 -de - fr 1 250 2030 0.0 0.0 -de - fr 1 251 2030 0.0 0.0 -de - fr 1 252 2030 0.0 0.0 -de - fr 1 253 2030 0.0 0.0 -de - fr 1 254 2030 0.0 0.0 -de - fr 1 255 2030 0.0 0.0 -de - fr 1 256 2030 0.0 0.0 -de - fr 1 257 2030 0.0 0.0 -de - fr 1 258 2030 0.0 0.0 -de - fr 1 259 2030 0.0 0.0 -de - fr 1 260 2030 0.0 0.0 -de - fr 1 261 2030 0.0 0.0 -de - fr 1 262 2030 0.0 0.0 -de - fr 1 263 2030 0.0 0.0 -de - fr 1 264 2030 0.0 0.0 -de - fr 1 265 2030 0.0 0.0 -de - fr 1 266 2030 0.0 0.0 -de - fr 1 267 2030 0.0 0.0 -de - fr 1 268 2030 0.0 0.0 -de - fr 1 269 2030 0.0 0.0 -de - fr 1 270 2030 0.0 0.0 -de - fr 1 271 2030 0.0 0.0 -de - fr 1 272 2030 0.0 0.0 -de - fr 1 273 2030 0.0 0.0 -de - fr 1 274 2030 0.0 0.0 -de - fr 1 275 2030 0.0 0.0 -de - fr 1 276 2030 0.0 0.0 -de - fr 1 277 2030 0.0 0.0 -de - fr 1 278 2030 0.0 0.0 -de - fr 1 279 2030 0.0 0.0 -de - fr 1 280 2030 0.0 0.0 -de - fr 1 281 2030 0.0 0.0 -de - fr 1 282 2030 0.0 0.0 -de - fr 1 283 2030 0.0 0.0 -de - fr 1 284 2030 0.0 0.0 -de - fr 1 285 2030 0.0 0.0 -de - fr 1 286 2030 0.0 0.0 -de - fr 1 287 2030 0.0 0.0 -de - fr 1 288 2030 0.0 0.0 -de - fr 1 289 2030 0.0 0.0 -de - fr 1 290 2030 0.0 0.0 -de - fr 1 291 2030 0.0 0.0 -de - fr 1 292 2030 0.0 0.0 -de - fr 1 293 2030 0.0 0.0 -de - fr 1 294 2030 0.0 0.0 -de - fr 1 295 2030 0.0 0.0 -de - fr 1 296 2030 0.0 0.0 -de - fr 1 297 2030 0.0 0.0 -de - fr 1 298 2030 0.0 0.0 -de - fr 1 299 2030 0.0 0.0 -de - fr 1 300 2030 0.0 0.0 -de - fr 1 301 2030 0.0 0.0 -de - fr 1 302 2030 0.0 0.0 -de - fr 1 303 2030 0.0 0.0 -de - fr 1 304 2030 0.0 0.0 -de - fr 1 305 2030 0.0 0.0 -de - fr 1 306 2030 0.0 0.0 -de - fr 1 307 2030 0.0 0.0 -de - fr 1 308 2030 0.0 0.0 -de - fr 1 309 2030 0.0 0.0 -de - fr 1 310 2030 0.0 0.0 -de - fr 1 311 2030 0.0 0.0 -de - fr 1 312 2030 0.0 0.0 -de - fr 1 313 2030 0.0 0.0 -de - fr 1 314 2030 0.0 0.0 -de - fr 1 315 2030 0.0 0.0 -de - fr 1 316 2030 0.0 0.0 -de - fr 1 317 2030 0.0 0.0 -de - fr 1 318 2030 0.0 0.0 -de - fr 1 319 2030 0.0 0.0 -de - fr 1 320 2030 0.0 0.0 -de - fr 1 321 2030 0.0 0.0 -de - fr 1 322 2030 0.0 0.0 -de - fr 1 323 2030 0.0 0.0 -de - fr 1 324 2030 0.0 0.0 -de - fr 1 325 2030 0.0 0.0 -de - fr 1 326 2030 0.0 0.0 -de - fr 1 327 2030 0.0 0.0 -de - fr 1 328 2030 0.0 0.0 -de - fr 1 329 2030 0.0 0.0 -de - fr 1 330 2030 0.0 0.0 -de - fr 1 331 2030 0.0 0.0 -de - fr 1 332 2030 0.0 0.0 -de - fr 1 333 2030 0.0 0.0 -de - fr 1 334 2030 0.0 0.0 -de - fr 1 335 2030 0.0 0.0 -de - fr 1 336 2030 0.0 0.0 -es - fr 1 1 2030 0.0 0.0 -es - fr 1 2 2030 0.0 0.0 -es - fr 1 3 2030 0.0 0.0 -es - fr 1 4 2030 0.0 0.0 -es - fr 1 5 2030 0.0 0.0 -es - fr 1 6 2030 0.0 0.0 -es - fr 1 7 2030 0.0 0.0 -es - fr 1 8 2030 0.0 0.0 -es - fr 1 9 2030 0.0 0.0 -es - fr 1 10 2030 0.0 0.0 -es - fr 1 11 2030 0.0 0.0 -es - fr 1 12 2030 0.0 0.0 -es - fr 1 13 2030 0.0 0.0 -es - fr 1 14 2030 0.0 0.0 -es - fr 1 15 2030 0.0 0.0 -es - fr 1 16 2030 0.0 0.0 -es - fr 1 17 2030 0.0 0.0 -es - fr 1 18 2030 0.0 0.0 -es - fr 1 19 2030 0.0 0.0 -es - fr 1 20 2030 0.0 0.0 -es - fr 1 21 2030 0.0 0.0 -es - fr 1 22 2030 0.0 0.0 -es - fr 1 23 2030 0.0 0.0 -es - fr 1 24 2030 0.0 0.0 -es - fr 1 25 2030 0.0 0.0 -es - fr 1 26 2030 0.0 0.0 -es - fr 1 27 2030 0.0 0.0 -es - fr 1 28 2030 0.0 0.0 -es - fr 1 29 2030 0.0 0.0 -es - fr 1 30 2030 0.0 0.0 -es - fr 1 31 2030 0.0 0.0 -es - fr 1 32 2030 0.0 0.0 -es - fr 1 33 2030 0.0 0.0 -es - fr 1 34 2030 0.0 0.0 -es - fr 1 35 2030 0.0 0.0 -es - fr 1 36 2030 0.0 0.0 -es - fr 1 37 2030 0.0 0.0 -es - fr 1 38 2030 0.0 0.0 -es - fr 1 39 2030 0.0 0.0 -es - fr 1 40 2030 0.0 0.0 -es - fr 1 41 2030 0.0 0.0 -es - fr 1 42 2030 0.0 0.0 -es - fr 1 43 2030 0.0 0.0 -es - fr 1 44 2030 0.0 0.0 -es - fr 1 45 2030 0.0 0.0 -es - fr 1 46 2030 0.0 0.0 -es - fr 1 47 2030 0.0 0.0 -es - fr 1 48 2030 0.0 0.0 -es - fr 1 49 2030 0.0 0.0 -es - fr 1 50 2030 0.0 0.0 -es - fr 1 51 2030 0.0 0.0 -es - fr 1 52 2030 0.0 0.0 -es - fr 1 53 2030 0.0 0.0 -es - fr 1 54 2030 0.0 0.0 -es - fr 1 55 2030 0.0 0.0 -es - fr 1 56 2030 0.0 0.0 -es - fr 1 57 2030 0.0 0.0 -es - fr 1 58 2030 0.0 0.0 -es - fr 1 59 2030 0.0 0.0 -es - fr 1 60 2030 0.0 0.0 -es - fr 1 61 2030 0.0 0.0 -es - fr 1 62 2030 0.0 0.0 -es - fr 1 63 2030 0.0 0.0 -es - fr 1 64 2030 0.0 0.0 -es - fr 1 65 2030 0.0 0.0 -es - fr 1 66 2030 0.0 0.0 -es - fr 1 67 2030 0.0 0.0 -es - fr 1 68 2030 0.0 0.0 -es - fr 1 69 2030 0.0 0.0 -es - fr 1 70 2030 0.0 0.0 -es - fr 1 71 2030 0.0 0.0 -es - fr 1 72 2030 0.0 0.0 -es - fr 1 73 2030 0.0 0.0 -es - fr 1 74 2030 0.0 0.0 -es - fr 1 75 2030 0.0 0.0 -es - fr 1 76 2030 0.0 0.0 -es - fr 1 77 2030 0.0 0.0 -es - fr 1 78 2030 0.0 0.0 -es - fr 1 79 2030 0.0 0.0 -es - fr 1 80 2030 0.0 0.0 -es - fr 1 81 2030 0.0 0.0 -es - fr 1 82 2030 0.0 0.0 -es - fr 1 83 2030 0.0 0.0 -es - fr 1 84 2030 0.0 0.0 -es - fr 1 85 2030 0.0 0.0 -es - fr 1 86 2030 0.0 0.0 -es - fr 1 87 2030 0.0 0.0 -es - fr 1 88 2030 0.0 0.0 -es - fr 1 89 2030 0.0 0.0 -es - fr 1 90 2030 0.0 0.0 -es - fr 1 91 2030 0.0 0.0 -es - fr 1 92 2030 0.0 0.0 -es - fr 1 93 2030 0.0 0.0 -es - fr 1 94 2030 0.0 0.0 -es - fr 1 95 2030 0.0 0.0 -es - fr 1 96 2030 0.0 0.0 -es - fr 1 97 2030 0.0 0.0 -es - fr 1 98 2030 0.0 0.0 -es - fr 1 99 2030 0.0 0.0 -es - fr 1 100 2030 0.0 0.0 -es - fr 1 101 2030 0.0 0.0 -es - fr 1 102 2030 0.0 0.0 -es - fr 1 103 2030 0.0 0.0 -es - fr 1 104 2030 0.0 0.0 -es - fr 1 105 2030 0.0 0.0 -es - fr 1 106 2030 0.0 0.0 -es - fr 1 107 2030 0.0 0.0 -es - fr 1 108 2030 0.0 0.0 -es - fr 1 109 2030 0.0 0.0 -es - fr 1 110 2030 0.0 0.0 -es - fr 1 111 2030 0.0 0.0 -es - fr 1 112 2030 0.0 0.0 -es - fr 1 113 2030 0.0 0.0 -es - fr 1 114 2030 0.0 0.0 -es - fr 1 115 2030 0.0 0.0 -es - fr 1 116 2030 0.0 0.0 -es - fr 1 117 2030 0.0 0.0 -es - fr 1 118 2030 0.0 0.0 -es - fr 1 119 2030 0.0 0.0 -es - fr 1 120 2030 0.0 0.0 -es - fr 1 121 2030 0.0 0.0 -es - fr 1 122 2030 0.0 0.0 -es - fr 1 123 2030 0.0 0.0 -es - fr 1 124 2030 0.0 0.0 -es - fr 1 125 2030 0.0 0.0 -es - fr 1 126 2030 0.0 0.0 -es - fr 1 127 2030 0.0 0.0 -es - fr 1 128 2030 0.0 0.0 -es - fr 1 129 2030 0.0 0.0 -es - fr 1 130 2030 0.0 0.0 -es - fr 1 131 2030 0.0 0.0 -es - fr 1 132 2030 0.0 0.0 -es - fr 1 133 2030 0.0 0.0 -es - fr 1 134 2030 0.0 0.0 -es - fr 1 135 2030 0.0 0.0 -es - fr 1 136 2030 0.0 0.0 -es - fr 1 137 2030 0.0 0.0 -es - fr 1 138 2030 0.0 0.0 -es - fr 1 139 2030 0.0 0.0 -es - fr 1 140 2030 0.0 0.0 -es - fr 1 141 2030 0.0 0.0 -es - fr 1 142 2030 0.0 0.0 -es - fr 1 143 2030 0.0 0.0 -es - fr 1 144 2030 0.0 0.0 -es - fr 1 145 2030 0.0 0.0 -es - fr 1 146 2030 0.0 0.0 -es - fr 1 147 2030 0.0 0.0 -es - fr 1 148 2030 0.0 0.0 -es - fr 1 149 2030 0.0 0.0 -es - fr 1 150 2030 0.0 0.0 -es - fr 1 151 2030 0.0 0.0 -es - fr 1 152 2030 0.0 0.0 -es - fr 1 153 2030 0.0 0.0 -es - fr 1 154 2030 0.0 0.0 -es - fr 1 155 2030 0.0 0.0 -es - fr 1 156 2030 0.0 0.0 -es - fr 1 157 2030 0.0 0.0 -es - fr 1 158 2030 0.0 0.0 -es - fr 1 159 2030 0.0 0.0 -es - fr 1 160 2030 0.0 0.0 -es - fr 1 161 2030 0.0 0.0 -es - fr 1 162 2030 0.0 0.0 -es - fr 1 163 2030 0.0 0.0 -es - fr 1 164 2030 0.0 0.0 -es - fr 1 165 2030 0.0 0.0 -es - fr 1 166 2030 0.0 0.0 -es - fr 1 167 2030 0.0 0.0 -es - fr 1 168 2030 0.0 0.0 -es - fr 1 169 2030 0.0 0.0 -es - fr 1 170 2030 0.0 0.0 -es - fr 1 171 2030 0.0 0.0 -es - fr 1 172 2030 0.0 0.0 -es - fr 1 173 2030 0.0 0.0 -es - fr 1 174 2030 0.0 0.0 -es - fr 1 175 2030 0.0 0.0 -es - fr 1 176 2030 0.0 0.0 -es - fr 1 177 2030 0.0 0.0 -es - fr 1 178 2030 0.0 0.0 -es - fr 1 179 2030 0.0 0.0 -es - fr 1 180 2030 0.0 0.0 -es - fr 1 181 2030 0.0 0.0 -es - fr 1 182 2030 0.0 0.0 -es - fr 1 183 2030 0.0 0.0 -es - fr 1 184 2030 0.0 0.0 -es - fr 1 185 2030 0.0 0.0 -es - fr 1 186 2030 0.0 0.0 -es - fr 1 187 2030 0.0 0.0 -es - fr 1 188 2030 0.0 0.0 -es - fr 1 189 2030 0.0 0.0 -es - fr 1 190 2030 0.0 0.0 -es - fr 1 191 2030 0.0 0.0 -es - fr 1 192 2030 0.0 0.0 -es - fr 1 193 2030 0.0 0.0 -es - fr 1 194 2030 0.0 0.0 -es - fr 1 195 2030 0.0 0.0 -es - fr 1 196 2030 0.0 0.0 -es - fr 1 197 2030 0.0 0.0 -es - fr 1 198 2030 0.0 0.0 -es - fr 1 199 2030 0.0 0.0 -es - fr 1 200 2030 0.0 0.0 -es - fr 1 201 2030 0.0 0.0 -es - fr 1 202 2030 0.0 0.0 -es - fr 1 203 2030 0.0 0.0 -es - fr 1 204 2030 0.0 0.0 -es - fr 1 205 2030 0.0 0.0 -es - fr 1 206 2030 0.0 0.0 -es - fr 1 207 2030 0.0 0.0 -es - fr 1 208 2030 0.0 0.0 -es - fr 1 209 2030 0.0 0.0 -es - fr 1 210 2030 0.0 0.0 -es - fr 1 211 2030 0.0 0.0 -es - fr 1 212 2030 0.0 0.0 -es - fr 1 213 2030 0.0 0.0 -es - fr 1 214 2030 0.0 0.0 -es - fr 1 215 2030 0.0 0.0 -es - fr 1 216 2030 0.0 0.0 -es - fr 1 217 2030 0.0 0.0 -es - fr 1 218 2030 0.0 0.0 -es - fr 1 219 2030 0.0 0.0 -es - fr 1 220 2030 0.0 0.0 -es - fr 1 221 2030 0.0 0.0 -es - fr 1 222 2030 0.0 0.0 -es - fr 1 223 2030 0.0 0.0 -es - fr 1 224 2030 0.0 0.0 -es - fr 1 225 2030 0.0 0.0 -es - fr 1 226 2030 0.0 0.0 -es - fr 1 227 2030 0.0 0.0 -es - fr 1 228 2030 0.0 0.0 -es - fr 1 229 2030 0.0 0.0 -es - fr 1 230 2030 0.0 0.0 -es - fr 1 231 2030 0.0 0.0 -es - fr 1 232 2030 0.0 0.0 -es - fr 1 233 2030 0.0 0.0 -es - fr 1 234 2030 0.0 0.0 -es - fr 1 235 2030 0.0 0.0 -es - fr 1 236 2030 0.0 0.0 -es - fr 1 237 2030 0.0 0.0 -es - fr 1 238 2030 0.0 0.0 -es - fr 1 239 2030 0.0 0.0 -es - fr 1 240 2030 0.0 0.0 -es - fr 1 241 2030 0.0 0.0 -es - fr 1 242 2030 0.0 0.0 -es - fr 1 243 2030 0.0 0.0 -es - fr 1 244 2030 0.0 0.0 -es - fr 1 245 2030 0.0 0.0 -es - fr 1 246 2030 0.0 0.0 -es - fr 1 247 2030 0.0 0.0 -es - fr 1 248 2030 0.0 0.0 -es - fr 1 249 2030 0.0 0.0 -es - fr 1 250 2030 0.0 0.0 -es - fr 1 251 2030 0.0 0.0 -es - fr 1 252 2030 0.0 0.0 -es - fr 1 253 2030 0.0 0.0 -es - fr 1 254 2030 0.0 0.0 -es - fr 1 255 2030 0.0 0.0 -es - fr 1 256 2030 0.0 0.0 -es - fr 1 257 2030 0.0 0.0 -es - fr 1 258 2030 0.0 0.0 -es - fr 1 259 2030 0.0 0.0 -es - fr 1 260 2030 0.0 0.0 -es - fr 1 261 2030 0.0 0.0 -es - fr 1 262 2030 0.0 0.0 -es - fr 1 263 2030 0.0 0.0 -es - fr 1 264 2030 0.0 0.0 -es - fr 1 265 2030 0.0 0.0 -es - fr 1 266 2030 0.0 0.0 -es - fr 1 267 2030 0.0 0.0 -es - fr 1 268 2030 0.0 0.0 -es - fr 1 269 2030 0.0 0.0 -es - fr 1 270 2030 0.0 0.0 -es - fr 1 271 2030 0.0 0.0 -es - fr 1 272 2030 0.0 0.0 -es - fr 1 273 2030 0.0 0.0 -es - fr 1 274 2030 0.0 0.0 -es - fr 1 275 2030 0.0 0.0 -es - fr 1 276 2030 0.0 0.0 -es - fr 1 277 2030 0.0 0.0 -es - fr 1 278 2030 0.0 0.0 -es - fr 1 279 2030 0.0 0.0 -es - fr 1 280 2030 0.0 0.0 -es - fr 1 281 2030 0.0 0.0 -es - fr 1 282 2030 0.0 0.0 -es - fr 1 283 2030 0.0 0.0 -es - fr 1 284 2030 0.0 0.0 -es - fr 1 285 2030 0.0 0.0 -es - fr 1 286 2030 0.0 0.0 -es - fr 1 287 2030 0.0 0.0 -es - fr 1 288 2030 0.0 0.0 -es - fr 1 289 2030 0.0 0.0 -es - fr 1 290 2030 0.0 0.0 -es - fr 1 291 2030 0.0 0.0 -es - fr 1 292 2030 0.0 0.0 -es - fr 1 293 2030 0.0 0.0 -es - fr 1 294 2030 0.0 0.0 -es - fr 1 295 2030 0.0 0.0 -es - fr 1 296 2030 0.0 0.0 -es - fr 1 297 2030 0.0 0.0 -es - fr 1 298 2030 0.0 0.0 -es - fr 1 299 2030 0.0 0.0 -es - fr 1 300 2030 0.0 0.0 -es - fr 1 301 2030 0.0 0.0 -es - fr 1 302 2030 0.0 0.0 -es - fr 1 303 2030 0.0 0.0 -es - fr 1 304 2030 0.0 0.0 -es - fr 1 305 2030 0.0 0.0 -es - fr 1 306 2030 0.0 0.0 -es - fr 1 307 2030 0.0 0.0 -es - fr 1 308 2030 0.0 0.0 -es - fr 1 309 2030 0.0 0.0 -es - fr 1 310 2030 0.0 0.0 -es - fr 1 311 2030 0.0 0.0 -es - fr 1 312 2030 0.0 0.0 -es - fr 1 313 2030 0.0 0.0 -es - fr 1 314 2030 0.0 0.0 -es - fr 1 315 2030 0.0 0.0 -es - fr 1 316 2030 0.0 0.0 -es - fr 1 317 2030 0.0 0.0 -es - fr 1 318 2030 0.0 0.0 -es - fr 1 319 2030 0.0 0.0 -es - fr 1 320 2030 0.0 0.0 -es - fr 1 321 2030 0.0 0.0 -es - fr 1 322 2030 0.0 0.0 -es - fr 1 323 2030 0.0 0.0 -es - fr 1 324 2030 0.0 0.0 -es - fr 1 325 2030 0.0 0.0 -es - fr 1 326 2030 0.0 0.0 -es - fr 1 327 2030 0.0 0.0 -es - fr 1 328 2030 0.0 0.0 -es - fr 1 329 2030 0.0 0.0 -es - fr 1 330 2030 0.0 0.0 -es - fr 1 331 2030 0.0 0.0 -es - fr 1 332 2030 0.0 0.0 -es - fr 1 333 2030 0.0 0.0 -es - fr 1 334 2030 0.0 0.0 -es - fr 1 335 2030 0.0 0.0 -es - fr 1 336 2030 0.0 0.0 -fr - it 1 1 2030 0.0 0.0 -fr - it 1 2 2030 0.0 0.0 -fr - it 1 3 2030 0.0 0.0 -fr - it 1 4 2030 0.0 0.0 -fr - it 1 5 2030 0.0 0.0 -fr - it 1 6 2030 0.0 0.0 -fr - it 1 7 2030 0.0 0.0 -fr - it 1 8 2030 0.0 0.0 -fr - it 1 9 2030 0.0 0.0 -fr - it 1 10 2030 0.0 0.0 -fr - it 1 11 2030 0.0 0.0 -fr - it 1 12 2030 0.0 0.0 -fr - it 1 13 2030 0.0 0.0 -fr - it 1 14 2030 0.0 0.0 -fr - it 1 15 2030 0.0 0.0 -fr - it 1 16 2030 0.0 0.0 -fr - it 1 17 2030 0.0 0.0 -fr - it 1 18 2030 0.0 0.0 -fr - it 1 19 2030 0.0 0.0 -fr - it 1 20 2030 0.0 0.0 -fr - it 1 21 2030 0.0 0.0 -fr - it 1 22 2030 0.0 0.0 -fr - it 1 23 2030 0.0 0.0 -fr - it 1 24 2030 0.0 0.0 -fr - it 1 25 2030 0.0 0.0 -fr - it 1 26 2030 0.0 0.0 -fr - it 1 27 2030 0.0 0.0 -fr - it 1 28 2030 0.0 0.0 -fr - it 1 29 2030 0.0 0.0 -fr - it 1 30 2030 0.0 0.0 -fr - it 1 31 2030 0.0 0.0 -fr - it 1 32 2030 0.0 0.0 -fr - it 1 33 2030 0.0 0.0 -fr - it 1 34 2030 0.0 0.0 -fr - it 1 35 2030 0.0 0.0 -fr - it 1 36 2030 0.0 0.0 -fr - it 1 37 2030 0.0 0.0 -fr - it 1 38 2030 0.0 0.0 -fr - it 1 39 2030 0.0 0.0 -fr - it 1 40 2030 0.0 0.0 -fr - it 1 41 2030 0.0 0.0 -fr - it 1 42 2030 0.0 0.0 -fr - it 1 43 2030 0.0 0.0 -fr - it 1 44 2030 0.0 0.0 -fr - it 1 45 2030 0.0 0.0 -fr - it 1 46 2030 0.0 0.0 -fr - it 1 47 2030 0.0 0.0 -fr - it 1 48 2030 0.0 0.0 -fr - it 1 49 2030 0.0 0.0 -fr - it 1 50 2030 0.0 0.0 -fr - it 1 51 2030 0.0 0.0 -fr - it 1 52 2030 0.0 0.0 -fr - it 1 53 2030 0.0 0.0 -fr - it 1 54 2030 0.0 0.0 -fr - it 1 55 2030 0.0 0.0 -fr - it 1 56 2030 0.0 0.0 -fr - it 1 57 2030 0.0 0.0 -fr - it 1 58 2030 0.0 0.0 -fr - it 1 59 2030 0.0 0.0 -fr - it 1 60 2030 0.0 0.0 -fr - it 1 61 2030 0.0 0.0 -fr - it 1 62 2030 0.0 0.0 -fr - it 1 63 2030 0.0 0.0 -fr - it 1 64 2030 0.0 0.0 -fr - it 1 65 2030 0.0 0.0 -fr - it 1 66 2030 0.0 0.0 -fr - it 1 67 2030 0.0 0.0 -fr - it 1 68 2030 0.0 0.0 -fr - it 1 69 2030 0.0 0.0 -fr - it 1 70 2030 0.0 0.0 -fr - it 1 71 2030 0.0 0.0 -fr - it 1 72 2030 0.0 0.0 -fr - it 1 73 2030 0.0 0.0 -fr - it 1 74 2030 0.0 0.0 -fr - it 1 75 2030 0.0 0.0 -fr - it 1 76 2030 0.0 0.0 -fr - it 1 77 2030 0.0 0.0 -fr - it 1 78 2030 0.0 0.0 -fr - it 1 79 2030 0.0 0.0 -fr - it 1 80 2030 0.0 0.0 -fr - it 1 81 2030 0.0 0.0 -fr - it 1 82 2030 0.0 0.0 -fr - it 1 83 2030 0.0 0.0 -fr - it 1 84 2030 0.0 0.0 -fr - it 1 85 2030 0.0 0.0 -fr - it 1 86 2030 0.0 0.0 -fr - it 1 87 2030 0.0 0.0 -fr - it 1 88 2030 0.0 0.0 -fr - it 1 89 2030 0.0 0.0 -fr - it 1 90 2030 0.0 0.0 -fr - it 1 91 2030 0.0 0.0 -fr - it 1 92 2030 0.0 0.0 -fr - it 1 93 2030 0.0 0.0 -fr - it 1 94 2030 0.0 0.0 -fr - it 1 95 2030 0.0 0.0 -fr - it 1 96 2030 0.0 0.0 -fr - it 1 97 2030 0.0 0.0 -fr - it 1 98 2030 0.0 0.0 -fr - it 1 99 2030 0.0 0.0 -fr - it 1 100 2030 0.0 0.0 -fr - it 1 101 2030 0.0 0.0 -fr - it 1 102 2030 0.0 0.0 -fr - it 1 103 2030 0.0 0.0 -fr - it 1 104 2030 0.0 0.0 -fr - it 1 105 2030 0.0 0.0 -fr - it 1 106 2030 0.0 0.0 -fr - it 1 107 2030 0.0 0.0 -fr - it 1 108 2030 0.0 0.0 -fr - it 1 109 2030 0.0 0.0 -fr - it 1 110 2030 0.0 0.0 -fr - it 1 111 2030 0.0 0.0 -fr - it 1 112 2030 0.0 0.0 -fr - it 1 113 2030 0.0 0.0 -fr - it 1 114 2030 0.0 0.0 -fr - it 1 115 2030 0.0 0.0 -fr - it 1 116 2030 0.0 0.0 -fr - it 1 117 2030 0.0 0.0 -fr - it 1 118 2030 0.0 0.0 -fr - it 1 119 2030 0.0 0.0 -fr - it 1 120 2030 0.0 0.0 -fr - it 1 121 2030 0.0 0.0 -fr - it 1 122 2030 0.0 0.0 -fr - it 1 123 2030 0.0 0.0 -fr - it 1 124 2030 0.0 0.0 -fr - it 1 125 2030 0.0 0.0 -fr - it 1 126 2030 0.0 0.0 -fr - it 1 127 2030 0.0 0.0 -fr - it 1 128 2030 0.0 0.0 -fr - it 1 129 2030 0.0 0.0 -fr - it 1 130 2030 0.0 0.0 -fr - it 1 131 2030 0.0 0.0 -fr - it 1 132 2030 0.0 0.0 -fr - it 1 133 2030 0.0 0.0 -fr - it 1 134 2030 0.0 0.0 -fr - it 1 135 2030 0.0 0.0 -fr - it 1 136 2030 0.0 0.0 -fr - it 1 137 2030 0.0 0.0 -fr - it 1 138 2030 0.0 0.0 -fr - it 1 139 2030 0.0 0.0 -fr - it 1 140 2030 0.0 0.0 -fr - it 1 141 2030 0.0 0.0 -fr - it 1 142 2030 0.0 0.0 -fr - it 1 143 2030 0.0 0.0 -fr - it 1 144 2030 0.0 0.0 -fr - it 1 145 2030 0.0 0.0 -fr - it 1 146 2030 0.0 0.0 -fr - it 1 147 2030 0.0 0.0 -fr - it 1 148 2030 0.0 0.0 -fr - it 1 149 2030 0.0 0.0 -fr - it 1 150 2030 0.0 0.0 -fr - it 1 151 2030 0.0 0.0 -fr - it 1 152 2030 0.0 0.0 -fr - it 1 153 2030 0.0 0.0 -fr - it 1 154 2030 0.0 0.0 -fr - it 1 155 2030 0.0 0.0 -fr - it 1 156 2030 0.0 0.0 -fr - it 1 157 2030 0.0 0.0 -fr - it 1 158 2030 0.0 0.0 -fr - it 1 159 2030 0.0 0.0 -fr - it 1 160 2030 0.0 0.0 -fr - it 1 161 2030 0.0 0.0 -fr - it 1 162 2030 0.0 0.0 -fr - it 1 163 2030 0.0 0.0 -fr - it 1 164 2030 0.0 0.0 -fr - it 1 165 2030 0.0 0.0 -fr - it 1 166 2030 0.0 0.0 -fr - it 1 167 2030 0.0 0.0 -fr - it 1 168 2030 0.0 0.0 -fr - it 1 169 2030 0.0 0.0 -fr - it 1 170 2030 0.0 0.0 -fr - it 1 171 2030 0.0 0.0 -fr - it 1 172 2030 0.0 0.0 -fr - it 1 173 2030 0.0 0.0 -fr - it 1 174 2030 0.0 0.0 -fr - it 1 175 2030 0.0 0.0 -fr - it 1 176 2030 0.0 0.0 -fr - it 1 177 2030 0.0 0.0 -fr - it 1 178 2030 0.0 0.0 -fr - it 1 179 2030 0.0 0.0 -fr - it 1 180 2030 0.0 0.0 -fr - it 1 181 2030 0.0 0.0 -fr - it 1 182 2030 0.0 0.0 -fr - it 1 183 2030 0.0 0.0 -fr - it 1 184 2030 0.0 0.0 -fr - it 1 185 2030 0.0 0.0 -fr - it 1 186 2030 0.0 0.0 -fr - it 1 187 2030 0.0 0.0 -fr - it 1 188 2030 0.0 0.0 -fr - it 1 189 2030 0.0 0.0 -fr - it 1 190 2030 0.0 0.0 -fr - it 1 191 2030 0.0 0.0 -fr - it 1 192 2030 0.0 0.0 -fr - it 1 193 2030 0.0 0.0 -fr - it 1 194 2030 0.0 0.0 -fr - it 1 195 2030 0.0 0.0 -fr - it 1 196 2030 0.0 0.0 -fr - it 1 197 2030 0.0 0.0 -fr - it 1 198 2030 0.0 0.0 -fr - it 1 199 2030 0.0 0.0 -fr - it 1 200 2030 0.0 0.0 -fr - it 1 201 2030 0.0 0.0 -fr - it 1 202 2030 0.0 0.0 -fr - it 1 203 2030 0.0 0.0 -fr - it 1 204 2030 0.0 0.0 -fr - it 1 205 2030 0.0 0.0 -fr - it 1 206 2030 0.0 0.0 -fr - it 1 207 2030 0.0 0.0 -fr - it 1 208 2030 0.0 0.0 -fr - it 1 209 2030 0.0 0.0 -fr - it 1 210 2030 0.0 0.0 -fr - it 1 211 2030 0.0 0.0 -fr - it 1 212 2030 0.0 0.0 -fr - it 1 213 2030 0.0 0.0 -fr - it 1 214 2030 0.0 0.0 -fr - it 1 215 2030 0.0 0.0 -fr - it 1 216 2030 0.0 0.0 -fr - it 1 217 2030 0.0 0.0 -fr - it 1 218 2030 0.0 0.0 -fr - it 1 219 2030 0.0 0.0 -fr - it 1 220 2030 0.0 0.0 -fr - it 1 221 2030 0.0 0.0 -fr - it 1 222 2030 0.0 0.0 -fr - it 1 223 2030 0.0 0.0 -fr - it 1 224 2030 0.0 0.0 -fr - it 1 225 2030 0.0 0.0 -fr - it 1 226 2030 0.0 0.0 -fr - it 1 227 2030 0.0 0.0 -fr - it 1 228 2030 0.0 0.0 -fr - it 1 229 2030 0.0 0.0 -fr - it 1 230 2030 0.0 0.0 -fr - it 1 231 2030 0.0 0.0 -fr - it 1 232 2030 0.0 0.0 -fr - it 1 233 2030 0.0 0.0 -fr - it 1 234 2030 0.0 0.0 -fr - it 1 235 2030 0.0 0.0 -fr - it 1 236 2030 0.0 0.0 -fr - it 1 237 2030 0.0 0.0 -fr - it 1 238 2030 0.0 0.0 -fr - it 1 239 2030 0.0 0.0 -fr - it 1 240 2030 0.0 0.0 -fr - it 1 241 2030 0.0 0.0 -fr - it 1 242 2030 0.0 0.0 -fr - it 1 243 2030 0.0 0.0 -fr - it 1 244 2030 0.0 0.0 -fr - it 1 245 2030 0.0 0.0 -fr - it 1 246 2030 0.0 0.0 -fr - it 1 247 2030 0.0 0.0 -fr - it 1 248 2030 0.0 0.0 -fr - it 1 249 2030 0.0 0.0 -fr - it 1 250 2030 0.0 0.0 -fr - it 1 251 2030 0.0 0.0 -fr - it 1 252 2030 0.0 0.0 -fr - it 1 253 2030 0.0 0.0 -fr - it 1 254 2030 0.0 0.0 -fr - it 1 255 2030 0.0 0.0 -fr - it 1 256 2030 0.0 0.0 -fr - it 1 257 2030 0.0 0.0 -fr - it 1 258 2030 0.0 0.0 -fr - it 1 259 2030 0.0 0.0 -fr - it 1 260 2030 0.0 0.0 -fr - it 1 261 2030 0.0 0.0 -fr - it 1 262 2030 0.0 0.0 -fr - it 1 263 2030 0.0 0.0 -fr - it 1 264 2030 0.0 0.0 -fr - it 1 265 2030 0.0 0.0 -fr - it 1 266 2030 0.0 0.0 -fr - it 1 267 2030 0.0 0.0 -fr - it 1 268 2030 0.0 0.0 -fr - it 1 269 2030 0.0 0.0 -fr - it 1 270 2030 0.0 0.0 -fr - it 1 271 2030 0.0 0.0 -fr - it 1 272 2030 0.0 0.0 -fr - it 1 273 2030 0.0 0.0 -fr - it 1 274 2030 0.0 0.0 -fr - it 1 275 2030 0.0 0.0 -fr - it 1 276 2030 0.0 0.0 -fr - it 1 277 2030 0.0 0.0 -fr - it 1 278 2030 0.0 0.0 -fr - it 1 279 2030 0.0 0.0 -fr - it 1 280 2030 0.0 0.0 -fr - it 1 281 2030 0.0 0.0 -fr - it 1 282 2030 0.0 0.0 -fr - it 1 283 2030 0.0 0.0 -fr - it 1 284 2030 0.0 0.0 -fr - it 1 285 2030 0.0 0.0 -fr - it 1 286 2030 0.0 0.0 -fr - it 1 287 2030 0.0 0.0 -fr - it 1 288 2030 0.0 0.0 -fr - it 1 289 2030 0.0 0.0 -fr - it 1 290 2030 0.0 0.0 -fr - it 1 291 2030 0.0 0.0 -fr - it 1 292 2030 0.0 0.0 -fr - it 1 293 2030 0.0 0.0 -fr - it 1 294 2030 0.0 0.0 -fr - it 1 295 2030 0.0 0.0 -fr - it 1 296 2030 0.0 0.0 -fr - it 1 297 2030 0.0 0.0 -fr - it 1 298 2030 0.0 0.0 -fr - it 1 299 2030 0.0 0.0 -fr - it 1 300 2030 0.0 0.0 -fr - it 1 301 2030 0.0 0.0 -fr - it 1 302 2030 0.0 0.0 -fr - it 1 303 2030 0.0 0.0 -fr - it 1 304 2030 0.0 0.0 -fr - it 1 305 2030 0.0 0.0 -fr - it 1 306 2030 0.0 0.0 -fr - it 1 307 2030 0.0 0.0 -fr - it 1 308 2030 0.0 0.0 -fr - it 1 309 2030 0.0 0.0 -fr - it 1 310 2030 0.0 0.0 -fr - it 1 311 2030 0.0 0.0 -fr - it 1 312 2030 0.0 0.0 -fr - it 1 313 2030 0.0 0.0 -fr - it 1 314 2030 0.0 0.0 -fr - it 1 315 2030 0.0 0.0 -fr - it 1 316 2030 0.0 0.0 -fr - it 1 317 2030 0.0 0.0 -fr - it 1 318 2030 0.0 0.0 -fr - it 1 319 2030 0.0 0.0 -fr - it 1 320 2030 0.0 0.0 -fr - it 1 321 2030 0.0 0.0 -fr - it 1 322 2030 0.0 0.0 -fr - it 1 323 2030 0.0 0.0 -fr - it 1 324 2030 0.0 0.0 -fr - it 1 325 2030 0.0 0.0 -fr - it 1 326 2030 0.0 0.0 -fr - it 1 327 2030 0.0 0.0 -fr - it 1 328 2030 0.0 0.0 -fr - it 1 329 2030 0.0 0.0 -fr - it 1 330 2030 0.0 0.0 -fr - it 1 331 2030 0.0 0.0 -fr - it 1 332 2030 0.0 0.0 -fr - it 1 333 2030 0.0 0.0 -fr - it 1 334 2030 0.0 0.0 -fr - it 1 335 2030 0.0 0.0 -fr - it 1 336 2030 0.0 0.0 -de - fr 2 1 2030 0.0 0.0 -de - fr 2 2 2030 0.0 0.0 -de - fr 2 3 2030 0.0 0.0 -de - fr 2 4 2030 0.0 0.0 -de - fr 2 5 2030 0.0 0.0 -de - fr 2 6 2030 0.0 0.0 -de - fr 2 7 2030 0.0 0.0 -de - fr 2 8 2030 0.0 0.0 -de - fr 2 9 2030 0.0 0.0 -de - fr 2 10 2030 0.0 0.0 -de - fr 2 11 2030 0.0 0.0 -de - fr 2 12 2030 0.0 0.0 -de - fr 2 13 2030 0.0 0.0 -de - fr 2 14 2030 0.0 0.0 -de - fr 2 15 2030 0.0 0.0 -de - fr 2 16 2030 0.0 0.0 -de - fr 2 17 2030 0.0 0.0 -de - fr 2 18 2030 0.0 0.0 -de - fr 2 19 2030 0.0 0.0 -de - fr 2 20 2030 0.0 0.0 -de - fr 2 21 2030 0.0 0.0 -de - fr 2 22 2030 0.0 0.0 -de - fr 2 23 2030 0.0 0.0 -de - fr 2 24 2030 0.0 0.0 -de - fr 2 25 2030 0.0 0.0 -de - fr 2 26 2030 0.0 0.0 -de - fr 2 27 2030 0.0 0.0 -de - fr 2 28 2030 0.0 0.0 -de - fr 2 29 2030 0.0 0.0 -de - fr 2 30 2030 0.0 0.0 -de - fr 2 31 2030 0.0 0.0 -de - fr 2 32 2030 0.0 0.0 -de - fr 2 33 2030 0.0 0.0 -de - fr 2 34 2030 0.0 0.0 -de - fr 2 35 2030 0.0 0.0 -de - fr 2 36 2030 0.0 0.0 -de - fr 2 37 2030 0.0 0.0 -de - fr 2 38 2030 0.0 0.0 -de - fr 2 39 2030 0.0 0.0 -de - fr 2 40 2030 0.0 0.0 -de - fr 2 41 2030 0.0 0.0 -de - fr 2 42 2030 0.0 0.0 -de - fr 2 43 2030 0.0 0.0 -de - fr 2 44 2030 0.0 0.0 -de - fr 2 45 2030 0.0 0.0 -de - fr 2 46 2030 0.0 0.0 -de - fr 2 47 2030 0.0 0.0 -de - fr 2 48 2030 0.0 0.0 -de - fr 2 49 2030 0.0 0.0 -de - fr 2 50 2030 0.0 0.0 -de - fr 2 51 2030 0.0 0.0 -de - fr 2 52 2030 0.0 0.0 -de - fr 2 53 2030 0.0 0.0 -de - fr 2 54 2030 0.0 0.0 -de - fr 2 55 2030 0.0 0.0 -de - fr 2 56 2030 0.0 0.0 -de - fr 2 57 2030 0.0 0.0 -de - fr 2 58 2030 0.0 0.0 -de - fr 2 59 2030 0.0 0.0 -de - fr 2 60 2030 0.0 0.0 -de - fr 2 61 2030 0.0 0.0 -de - fr 2 62 2030 0.0 0.0 -de - fr 2 63 2030 0.0 0.0 -de - fr 2 64 2030 0.0 0.0 -de - fr 2 65 2030 0.0 0.0 -de - fr 2 66 2030 0.0 0.0 -de - fr 2 67 2030 0.0 0.0 -de - fr 2 68 2030 0.0 0.0 -de - fr 2 69 2030 0.0 0.0 -de - fr 2 70 2030 0.0 0.0 -de - fr 2 71 2030 0.0 0.0 -de - fr 2 72 2030 0.0 0.0 -de - fr 2 73 2030 0.0 0.0 -de - fr 2 74 2030 0.0 0.0 -de - fr 2 75 2030 0.0 0.0 -de - fr 2 76 2030 0.0 0.0 -de - fr 2 77 2030 0.0 0.0 -de - fr 2 78 2030 0.0 0.0 -de - fr 2 79 2030 0.0 0.0 -de - fr 2 80 2030 0.0 0.0 -de - fr 2 81 2030 0.0 0.0 -de - fr 2 82 2030 0.0 0.0 -de - fr 2 83 2030 0.0 0.0 -de - fr 2 84 2030 0.0 0.0 -de - fr 2 85 2030 0.0 0.0 -de - fr 2 86 2030 0.0 0.0 -de - fr 2 87 2030 0.0 0.0 -de - fr 2 88 2030 0.0 0.0 -de - fr 2 89 2030 0.0 0.0 -de - fr 2 90 2030 0.0 0.0 -de - fr 2 91 2030 0.0 0.0 -de - fr 2 92 2030 0.0 0.0 -de - fr 2 93 2030 0.0 0.0 -de - fr 2 94 2030 0.0 0.0 -de - fr 2 95 2030 0.0 0.0 -de - fr 2 96 2030 0.0 0.0 -de - fr 2 97 2030 0.0 0.0 -de - fr 2 98 2030 0.0 0.0 -de - fr 2 99 2030 0.0 0.0 -de - fr 2 100 2030 0.0 0.0 -de - fr 2 101 2030 0.0 0.0 -de - fr 2 102 2030 0.0 0.0 -de - fr 2 103 2030 0.0 0.0 -de - fr 2 104 2030 0.0 0.0 -de - fr 2 105 2030 0.0 0.0 -de - fr 2 106 2030 0.0 0.0 -de - fr 2 107 2030 0.0 0.0 -de - fr 2 108 2030 0.0 0.0 -de - fr 2 109 2030 0.0 0.0 -de - fr 2 110 2030 0.0 0.0 -de - fr 2 111 2030 0.0 0.0 -de - fr 2 112 2030 0.0 0.0 -de - fr 2 113 2030 0.0 0.0 -de - fr 2 114 2030 0.0 0.0 -de - fr 2 115 2030 0.0 0.0 -de - fr 2 116 2030 0.0 0.0 -de - fr 2 117 2030 0.0 0.0 -de - fr 2 118 2030 0.0 0.0 -de - fr 2 119 2030 0.0 0.0 -de - fr 2 120 2030 0.0 0.0 -de - fr 2 121 2030 0.0 0.0 -de - fr 2 122 2030 0.0 0.0 -de - fr 2 123 2030 0.0 0.0 -de - fr 2 124 2030 0.0 0.0 -de - fr 2 125 2030 0.0 0.0 -de - fr 2 126 2030 0.0 0.0 -de - fr 2 127 2030 0.0 0.0 -de - fr 2 128 2030 0.0 0.0 -de - fr 2 129 2030 0.0 0.0 -de - fr 2 130 2030 0.0 0.0 -de - fr 2 131 2030 0.0 0.0 -de - fr 2 132 2030 0.0 0.0 -de - fr 2 133 2030 0.0 0.0 -de - fr 2 134 2030 0.0 0.0 -de - fr 2 135 2030 0.0 0.0 -de - fr 2 136 2030 0.0 0.0 -de - fr 2 137 2030 0.0 0.0 -de - fr 2 138 2030 0.0 0.0 -de - fr 2 139 2030 0.0 0.0 -de - fr 2 140 2030 0.0 0.0 -de - fr 2 141 2030 0.0 0.0 -de - fr 2 142 2030 0.0 0.0 -de - fr 2 143 2030 0.0 0.0 -de - fr 2 144 2030 0.0 0.0 -de - fr 2 145 2030 0.0 0.0 -de - fr 2 146 2030 0.0 0.0 -de - fr 2 147 2030 0.0 0.0 -de - fr 2 148 2030 0.0 0.0 -de - fr 2 149 2030 0.0 0.0 -de - fr 2 150 2030 0.0 0.0 -de - fr 2 151 2030 0.0 0.0 -de - fr 2 152 2030 0.0 0.0 -de - fr 2 153 2030 0.0 0.0 -de - fr 2 154 2030 0.0 0.0 -de - fr 2 155 2030 0.0 0.0 -de - fr 2 156 2030 0.0 0.0 -de - fr 2 157 2030 0.0 0.0 -de - fr 2 158 2030 0.0 0.0 -de - fr 2 159 2030 0.0 0.0 -de - fr 2 160 2030 0.0 0.0 -de - fr 2 161 2030 0.0 0.0 -de - fr 2 162 2030 0.0 0.0 -de - fr 2 163 2030 0.0 0.0 -de - fr 2 164 2030 0.0 0.0 -de - fr 2 165 2030 0.0 0.0 -de - fr 2 166 2030 0.0 0.0 -de - fr 2 167 2030 0.0 0.0 -de - fr 2 168 2030 0.0 0.0 -de - fr 2 169 2030 0.0 0.0 -de - fr 2 170 2030 0.0 0.0 -de - fr 2 171 2030 0.0 0.0 -de - fr 2 172 2030 0.0 0.0 -de - fr 2 173 2030 0.0 0.0 -de - fr 2 174 2030 0.0 0.0 -de - fr 2 175 2030 0.0 0.0 -de - fr 2 176 2030 0.0 0.0 -de - fr 2 177 2030 0.0 0.0 -de - fr 2 178 2030 0.0 0.0 -de - fr 2 179 2030 0.0 0.0 -de - fr 2 180 2030 0.0 0.0 -de - fr 2 181 2030 0.0 0.0 -de - fr 2 182 2030 0.0 0.0 -de - fr 2 183 2030 0.0 0.0 -de - fr 2 184 2030 0.0 0.0 -de - fr 2 185 2030 0.0 0.0 -de - fr 2 186 2030 0.0 0.0 -de - fr 2 187 2030 0.0 0.0 -de - fr 2 188 2030 0.0 0.0 -de - fr 2 189 2030 0.0 0.0 -de - fr 2 190 2030 0.0 0.0 -de - fr 2 191 2030 0.0 0.0 -de - fr 2 192 2030 0.0 0.0 -de - fr 2 193 2030 0.0 0.0 -de - fr 2 194 2030 0.0 0.0 -de - fr 2 195 2030 0.0 0.0 -de - fr 2 196 2030 0.0 0.0 -de - fr 2 197 2030 0.0 0.0 -de - fr 2 198 2030 0.0 0.0 -de - fr 2 199 2030 0.0 0.0 -de - fr 2 200 2030 0.0 0.0 -de - fr 2 201 2030 0.0 0.0 -de - fr 2 202 2030 0.0 0.0 -de - fr 2 203 2030 0.0 0.0 -de - fr 2 204 2030 0.0 0.0 -de - fr 2 205 2030 0.0 0.0 -de - fr 2 206 2030 0.0 0.0 -de - fr 2 207 2030 0.0 0.0 -de - fr 2 208 2030 0.0 0.0 -de - fr 2 209 2030 0.0 0.0 -de - fr 2 210 2030 0.0 0.0 -de - fr 2 211 2030 0.0 0.0 -de - fr 2 212 2030 0.0 0.0 -de - fr 2 213 2030 0.0 0.0 -de - fr 2 214 2030 0.0 0.0 -de - fr 2 215 2030 0.0 0.0 -de - fr 2 216 2030 0.0 0.0 -de - fr 2 217 2030 0.0 0.0 -de - fr 2 218 2030 0.0 0.0 -de - fr 2 219 2030 0.0 0.0 -de - fr 2 220 2030 0.0 0.0 -de - fr 2 221 2030 0.0 0.0 -de - fr 2 222 2030 0.0 0.0 -de - fr 2 223 2030 0.0 0.0 -de - fr 2 224 2030 0.0 0.0 -de - fr 2 225 2030 0.0 0.0 -de - fr 2 226 2030 0.0 0.0 -de - fr 2 227 2030 0.0 0.0 -de - fr 2 228 2030 0.0 0.0 -de - fr 2 229 2030 0.0 0.0 -de - fr 2 230 2030 0.0 0.0 -de - fr 2 231 2030 0.0 0.0 -de - fr 2 232 2030 0.0 0.0 -de - fr 2 233 2030 0.0 0.0 -de - fr 2 234 2030 0.0 0.0 -de - fr 2 235 2030 0.0 0.0 -de - fr 2 236 2030 0.0 0.0 -de - fr 2 237 2030 0.0 0.0 -de - fr 2 238 2030 0.0 0.0 -de - fr 2 239 2030 0.0 0.0 -de - fr 2 240 2030 0.0 0.0 -de - fr 2 241 2030 0.0 0.0 -de - fr 2 242 2030 0.0 0.0 -de - fr 2 243 2030 0.0 0.0 -de - fr 2 244 2030 0.0 0.0 -de - fr 2 245 2030 0.0 0.0 -de - fr 2 246 2030 0.0 0.0 -de - fr 2 247 2030 0.0 0.0 -de - fr 2 248 2030 0.0 0.0 -de - fr 2 249 2030 0.0 0.0 -de - fr 2 250 2030 0.0 0.0 -de - fr 2 251 2030 0.0 0.0 -de - fr 2 252 2030 0.0 0.0 -de - fr 2 253 2030 0.0 0.0 -de - fr 2 254 2030 0.0 0.0 -de - fr 2 255 2030 0.0 0.0 -de - fr 2 256 2030 0.0 0.0 -de - fr 2 257 2030 0.0 0.0 -de - fr 2 258 2030 0.0 0.0 -de - fr 2 259 2030 0.0 0.0 -de - fr 2 260 2030 0.0 0.0 -de - fr 2 261 2030 0.0 0.0 -de - fr 2 262 2030 0.0 0.0 -de - fr 2 263 2030 0.0 0.0 -de - fr 2 264 2030 0.0 0.0 -de - fr 2 265 2030 0.0 0.0 -de - fr 2 266 2030 0.0 0.0 -de - fr 2 267 2030 0.0 0.0 -de - fr 2 268 2030 0.0 0.0 -de - fr 2 269 2030 0.0 0.0 -de - fr 2 270 2030 0.0 0.0 -de - fr 2 271 2030 0.0 0.0 -de - fr 2 272 2030 0.0 0.0 -de - fr 2 273 2030 0.0 0.0 -de - fr 2 274 2030 0.0 0.0 -de - fr 2 275 2030 0.0 0.0 -de - fr 2 276 2030 0.0 0.0 -de - fr 2 277 2030 0.0 0.0 -de - fr 2 278 2030 0.0 0.0 -de - fr 2 279 2030 0.0 0.0 -de - fr 2 280 2030 0.0 0.0 -de - fr 2 281 2030 0.0 0.0 -de - fr 2 282 2030 0.0 0.0 -de - fr 2 283 2030 0.0 0.0 -de - fr 2 284 2030 0.0 0.0 -de - fr 2 285 2030 0.0 0.0 -de - fr 2 286 2030 0.0 0.0 -de - fr 2 287 2030 0.0 0.0 -de - fr 2 288 2030 0.0 0.0 -de - fr 2 289 2030 0.0 0.0 -de - fr 2 290 2030 0.0 0.0 -de - fr 2 291 2030 0.0 0.0 -de - fr 2 292 2030 0.0 0.0 -de - fr 2 293 2030 0.0 0.0 -de - fr 2 294 2030 0.0 0.0 -de - fr 2 295 2030 0.0 0.0 -de - fr 2 296 2030 0.0 0.0 -de - fr 2 297 2030 0.0 0.0 -de - fr 2 298 2030 0.0 0.0 -de - fr 2 299 2030 0.0 0.0 -de - fr 2 300 2030 0.0 0.0 -de - fr 2 301 2030 0.0 0.0 -de - fr 2 302 2030 0.0 0.0 -de - fr 2 303 2030 0.0 0.0 -de - fr 2 304 2030 0.0 0.0 -de - fr 2 305 2030 0.0 0.0 -de - fr 2 306 2030 0.0 0.0 -de - fr 2 307 2030 0.0 0.0 -de - fr 2 308 2030 0.0 0.0 -de - fr 2 309 2030 0.0 0.0 -de - fr 2 310 2030 0.0 0.0 -de - fr 2 311 2030 0.0 0.0 -de - fr 2 312 2030 0.0 0.0 -de - fr 2 313 2030 0.0 0.0 -de - fr 2 314 2030 0.0 0.0 -de - fr 2 315 2030 0.0 0.0 -de - fr 2 316 2030 0.0 0.0 -de - fr 2 317 2030 0.0 0.0 -de - fr 2 318 2030 0.0 0.0 -de - fr 2 319 2030 0.0 0.0 -de - fr 2 320 2030 0.0 0.0 -de - fr 2 321 2030 0.0 0.0 -de - fr 2 322 2030 0.0 0.0 -de - fr 2 323 2030 0.0 0.0 -de - fr 2 324 2030 0.0 0.0 -de - fr 2 325 2030 0.0 0.0 -de - fr 2 326 2030 0.0 0.0 -de - fr 2 327 2030 0.0 0.0 -de - fr 2 328 2030 0.0 0.0 -de - fr 2 329 2030 0.0 0.0 -de - fr 2 330 2030 0.0 0.0 -de - fr 2 331 2030 0.0 0.0 -de - fr 2 332 2030 0.0 0.0 -de - fr 2 333 2030 0.0 0.0 -de - fr 2 334 2030 0.0 0.0 -de - fr 2 335 2030 0.0 0.0 -de - fr 2 336 2030 0.0 0.0 -es - fr 2 1 2030 0.0 0.0 -es - fr 2 2 2030 0.0 0.0 -es - fr 2 3 2030 0.0 0.0 -es - fr 2 4 2030 0.0 0.0 -es - fr 2 5 2030 0.0 0.0 -es - fr 2 6 2030 0.0 0.0 -es - fr 2 7 2030 0.0 0.0 -es - fr 2 8 2030 0.0 0.0 -es - fr 2 9 2030 0.0 0.0 -es - fr 2 10 2030 0.0 0.0 -es - fr 2 11 2030 0.0 0.0 -es - fr 2 12 2030 0.0 0.0 -es - fr 2 13 2030 0.0 0.0 -es - fr 2 14 2030 0.0 0.0 -es - fr 2 15 2030 0.0 0.0 -es - fr 2 16 2030 0.0 0.0 -es - fr 2 17 2030 0.0 0.0 -es - fr 2 18 2030 0.0 0.0 -es - fr 2 19 2030 0.0 0.0 -es - fr 2 20 2030 0.0 0.0 -es - fr 2 21 2030 0.0 0.0 -es - fr 2 22 2030 0.0 0.0 -es - fr 2 23 2030 0.0 0.0 -es - fr 2 24 2030 0.0 0.0 -es - fr 2 25 2030 0.0 0.0 -es - fr 2 26 2030 0.0 0.0 -es - fr 2 27 2030 0.0 0.0 -es - fr 2 28 2030 0.0 0.0 -es - fr 2 29 2030 0.0 0.0 -es - fr 2 30 2030 0.0 0.0 -es - fr 2 31 2030 0.0 0.0 -es - fr 2 32 2030 0.0 0.0 -es - fr 2 33 2030 0.0 0.0 -es - fr 2 34 2030 0.0 0.0 -es - fr 2 35 2030 0.0 0.0 -es - fr 2 36 2030 0.0 0.0 -es - fr 2 37 2030 0.0 0.0 -es - fr 2 38 2030 0.0 0.0 -es - fr 2 39 2030 0.0 0.0 -es - fr 2 40 2030 0.0 0.0 -es - fr 2 41 2030 0.0 0.0 -es - fr 2 42 2030 0.0 0.0 -es - fr 2 43 2030 0.0 0.0 -es - fr 2 44 2030 0.0 0.0 -es - fr 2 45 2030 0.0 0.0 -es - fr 2 46 2030 0.0 0.0 -es - fr 2 47 2030 0.0 0.0 -es - fr 2 48 2030 0.0 0.0 -es - fr 2 49 2030 0.0 0.0 -es - fr 2 50 2030 0.0 0.0 -es - fr 2 51 2030 0.0 0.0 -es - fr 2 52 2030 0.0 0.0 -es - fr 2 53 2030 0.0 0.0 -es - fr 2 54 2030 0.0 0.0 -es - fr 2 55 2030 0.0 0.0 -es - fr 2 56 2030 0.0 0.0 -es - fr 2 57 2030 0.0 0.0 -es - fr 2 58 2030 0.0 0.0 -es - fr 2 59 2030 0.0 0.0 -es - fr 2 60 2030 0.0 0.0 -es - fr 2 61 2030 0.0 0.0 -es - fr 2 62 2030 0.0 0.0 -es - fr 2 63 2030 0.0 0.0 -es - fr 2 64 2030 0.0 0.0 -es - fr 2 65 2030 0.0 0.0 -es - fr 2 66 2030 0.0 0.0 -es - fr 2 67 2030 0.0 0.0 -es - fr 2 68 2030 0.0 0.0 -es - fr 2 69 2030 0.0 0.0 -es - fr 2 70 2030 0.0 0.0 -es - fr 2 71 2030 0.0 0.0 -es - fr 2 72 2030 0.0 0.0 -es - fr 2 73 2030 0.0 0.0 -es - fr 2 74 2030 0.0 0.0 -es - fr 2 75 2030 0.0 0.0 -es - fr 2 76 2030 0.0 0.0 -es - fr 2 77 2030 0.0 0.0 -es - fr 2 78 2030 0.0 0.0 -es - fr 2 79 2030 0.0 0.0 -es - fr 2 80 2030 0.0 0.0 -es - fr 2 81 2030 0.0 0.0 -es - fr 2 82 2030 0.0 0.0 -es - fr 2 83 2030 0.0 0.0 -es - fr 2 84 2030 0.0 0.0 -es - fr 2 85 2030 0.0 0.0 -es - fr 2 86 2030 0.0 0.0 -es - fr 2 87 2030 0.0 0.0 -es - fr 2 88 2030 0.0 0.0 -es - fr 2 89 2030 0.0 0.0 -es - fr 2 90 2030 0.0 0.0 -es - fr 2 91 2030 0.0 0.0 -es - fr 2 92 2030 0.0 0.0 -es - fr 2 93 2030 0.0 0.0 -es - fr 2 94 2030 0.0 0.0 -es - fr 2 95 2030 0.0 0.0 -es - fr 2 96 2030 0.0 0.0 -es - fr 2 97 2030 0.0 0.0 -es - fr 2 98 2030 0.0 0.0 -es - fr 2 99 2030 0.0 0.0 -es - fr 2 100 2030 0.0 0.0 -es - fr 2 101 2030 0.0 0.0 -es - fr 2 102 2030 0.0 0.0 -es - fr 2 103 2030 0.0 0.0 -es - fr 2 104 2030 0.0 0.0 -es - fr 2 105 2030 0.0 0.0 -es - fr 2 106 2030 0.0 0.0 -es - fr 2 107 2030 0.0 0.0 -es - fr 2 108 2030 0.0 0.0 -es - fr 2 109 2030 0.0 0.0 -es - fr 2 110 2030 0.0 0.0 -es - fr 2 111 2030 0.0 0.0 -es - fr 2 112 2030 0.0 0.0 -es - fr 2 113 2030 0.0 0.0 -es - fr 2 114 2030 0.0 0.0 -es - fr 2 115 2030 0.0 0.0 -es - fr 2 116 2030 0.0 0.0 -es - fr 2 117 2030 0.0 0.0 -es - fr 2 118 2030 0.0 0.0 -es - fr 2 119 2030 0.0 0.0 -es - fr 2 120 2030 0.0 0.0 -es - fr 2 121 2030 0.0 0.0 -es - fr 2 122 2030 0.0 0.0 -es - fr 2 123 2030 0.0 0.0 -es - fr 2 124 2030 0.0 0.0 -es - fr 2 125 2030 0.0 0.0 -es - fr 2 126 2030 0.0 0.0 -es - fr 2 127 2030 0.0 0.0 -es - fr 2 128 2030 0.0 0.0 -es - fr 2 129 2030 0.0 0.0 -es - fr 2 130 2030 0.0 0.0 -es - fr 2 131 2030 0.0 0.0 -es - fr 2 132 2030 0.0 0.0 -es - fr 2 133 2030 0.0 0.0 -es - fr 2 134 2030 0.0 0.0 -es - fr 2 135 2030 0.0 0.0 -es - fr 2 136 2030 0.0 0.0 -es - fr 2 137 2030 0.0 0.0 -es - fr 2 138 2030 0.0 0.0 -es - fr 2 139 2030 0.0 0.0 -es - fr 2 140 2030 0.0 0.0 -es - fr 2 141 2030 0.0 0.0 -es - fr 2 142 2030 0.0 0.0 -es - fr 2 143 2030 0.0 0.0 -es - fr 2 144 2030 0.0 0.0 -es - fr 2 145 2030 0.0 0.0 -es - fr 2 146 2030 0.0 0.0 -es - fr 2 147 2030 0.0 0.0 -es - fr 2 148 2030 0.0 0.0 -es - fr 2 149 2030 0.0 0.0 -es - fr 2 150 2030 0.0 0.0 -es - fr 2 151 2030 0.0 0.0 -es - fr 2 152 2030 0.0 0.0 -es - fr 2 153 2030 0.0 0.0 -es - fr 2 154 2030 0.0 0.0 -es - fr 2 155 2030 0.0 0.0 -es - fr 2 156 2030 0.0 0.0 -es - fr 2 157 2030 0.0 0.0 -es - fr 2 158 2030 0.0 0.0 -es - fr 2 159 2030 0.0 0.0 -es - fr 2 160 2030 0.0 0.0 -es - fr 2 161 2030 0.0 0.0 -es - fr 2 162 2030 0.0 0.0 -es - fr 2 163 2030 0.0 0.0 -es - fr 2 164 2030 0.0 0.0 -es - fr 2 165 2030 0.0 0.0 -es - fr 2 166 2030 0.0 0.0 -es - fr 2 167 2030 0.0 0.0 -es - fr 2 168 2030 0.0 0.0 -es - fr 2 169 2030 0.0 0.0 -es - fr 2 170 2030 0.0 0.0 -es - fr 2 171 2030 0.0 0.0 -es - fr 2 172 2030 0.0 0.0 -es - fr 2 173 2030 0.0 0.0 -es - fr 2 174 2030 0.0 0.0 -es - fr 2 175 2030 0.0 0.0 -es - fr 2 176 2030 0.0 0.0 -es - fr 2 177 2030 0.0 0.0 -es - fr 2 178 2030 0.0 0.0 -es - fr 2 179 2030 0.0 0.0 -es - fr 2 180 2030 0.0 0.0 -es - fr 2 181 2030 0.0 0.0 -es - fr 2 182 2030 0.0 0.0 -es - fr 2 183 2030 0.0 0.0 -es - fr 2 184 2030 0.0 0.0 -es - fr 2 185 2030 0.0 0.0 -es - fr 2 186 2030 0.0 0.0 -es - fr 2 187 2030 0.0 0.0 -es - fr 2 188 2030 0.0 0.0 -es - fr 2 189 2030 0.0 0.0 -es - fr 2 190 2030 0.0 0.0 -es - fr 2 191 2030 0.0 0.0 -es - fr 2 192 2030 0.0 0.0 -es - fr 2 193 2030 0.0 0.0 -es - fr 2 194 2030 0.0 0.0 -es - fr 2 195 2030 0.0 0.0 -es - fr 2 196 2030 0.0 0.0 -es - fr 2 197 2030 0.0 0.0 -es - fr 2 198 2030 0.0 0.0 -es - fr 2 199 2030 0.0 0.0 -es - fr 2 200 2030 0.0 0.0 -es - fr 2 201 2030 0.0 0.0 -es - fr 2 202 2030 0.0 0.0 -es - fr 2 203 2030 0.0 0.0 -es - fr 2 204 2030 0.0 0.0 -es - fr 2 205 2030 0.0 0.0 -es - fr 2 206 2030 0.0 0.0 -es - fr 2 207 2030 0.0 0.0 -es - fr 2 208 2030 0.0 0.0 -es - fr 2 209 2030 0.0 0.0 -es - fr 2 210 2030 0.0 0.0 -es - fr 2 211 2030 0.0 0.0 -es - fr 2 212 2030 0.0 0.0 -es - fr 2 213 2030 0.0 0.0 -es - fr 2 214 2030 0.0 0.0 -es - fr 2 215 2030 0.0 0.0 -es - fr 2 216 2030 0.0 0.0 -es - fr 2 217 2030 0.0 0.0 -es - fr 2 218 2030 0.0 0.0 -es - fr 2 219 2030 0.0 0.0 -es - fr 2 220 2030 0.0 0.0 -es - fr 2 221 2030 0.0 0.0 -es - fr 2 222 2030 0.0 0.0 -es - fr 2 223 2030 0.0 0.0 -es - fr 2 224 2030 0.0 0.0 -es - fr 2 225 2030 0.0 0.0 -es - fr 2 226 2030 0.0 0.0 -es - fr 2 227 2030 0.0 0.0 -es - fr 2 228 2030 0.0 0.0 -es - fr 2 229 2030 0.0 0.0 -es - fr 2 230 2030 0.0 0.0 -es - fr 2 231 2030 0.0 0.0 -es - fr 2 232 2030 0.0 0.0 -es - fr 2 233 2030 0.0 0.0 -es - fr 2 234 2030 0.0 0.0 -es - fr 2 235 2030 0.0 0.0 -es - fr 2 236 2030 0.0 0.0 -es - fr 2 237 2030 0.0 0.0 -es - fr 2 238 2030 0.0 0.0 -es - fr 2 239 2030 0.0 0.0 -es - fr 2 240 2030 0.0 0.0 -es - fr 2 241 2030 0.0 0.0 -es - fr 2 242 2030 0.0 0.0 -es - fr 2 243 2030 0.0 0.0 -es - fr 2 244 2030 0.0 0.0 -es - fr 2 245 2030 0.0 0.0 -es - fr 2 246 2030 0.0 0.0 -es - fr 2 247 2030 0.0 0.0 -es - fr 2 248 2030 0.0 0.0 -es - fr 2 249 2030 0.0 0.0 -es - fr 2 250 2030 0.0 0.0 -es - fr 2 251 2030 0.0 0.0 -es - fr 2 252 2030 0.0 0.0 -es - fr 2 253 2030 0.0 0.0 -es - fr 2 254 2030 0.0 0.0 -es - fr 2 255 2030 0.0 0.0 -es - fr 2 256 2030 0.0 0.0 -es - fr 2 257 2030 0.0 0.0 -es - fr 2 258 2030 0.0 0.0 -es - fr 2 259 2030 0.0 0.0 -es - fr 2 260 2030 0.0 0.0 -es - fr 2 261 2030 0.0 0.0 -es - fr 2 262 2030 0.0 0.0 -es - fr 2 263 2030 0.0 0.0 -es - fr 2 264 2030 0.0 0.0 -es - fr 2 265 2030 0.0 0.0 -es - fr 2 266 2030 0.0 0.0 -es - fr 2 267 2030 0.0 0.0 -es - fr 2 268 2030 0.0 0.0 -es - fr 2 269 2030 0.0 0.0 -es - fr 2 270 2030 0.0 0.0 -es - fr 2 271 2030 0.0 0.0 -es - fr 2 272 2030 0.0 0.0 -es - fr 2 273 2030 0.0 0.0 -es - fr 2 274 2030 0.0 0.0 -es - fr 2 275 2030 0.0 0.0 -es - fr 2 276 2030 0.0 0.0 -es - fr 2 277 2030 0.0 0.0 -es - fr 2 278 2030 0.0 0.0 -es - fr 2 279 2030 0.0 0.0 -es - fr 2 280 2030 0.0 0.0 -es - fr 2 281 2030 0.0 0.0 -es - fr 2 282 2030 0.0 0.0 -es - fr 2 283 2030 0.0 0.0 -es - fr 2 284 2030 0.0 0.0 -es - fr 2 285 2030 0.0 0.0 -es - fr 2 286 2030 0.0 0.0 -es - fr 2 287 2030 0.0 0.0 -es - fr 2 288 2030 0.0 0.0 -es - fr 2 289 2030 0.0 0.0 -es - fr 2 290 2030 0.0 0.0 -es - fr 2 291 2030 0.0 0.0 -es - fr 2 292 2030 0.0 0.0 -es - fr 2 293 2030 0.0 0.0 -es - fr 2 294 2030 0.0 0.0 -es - fr 2 295 2030 0.0 0.0 -es - fr 2 296 2030 0.0 0.0 -es - fr 2 297 2030 0.0 0.0 -es - fr 2 298 2030 0.0 0.0 -es - fr 2 299 2030 0.0 0.0 -es - fr 2 300 2030 0.0 0.0 -es - fr 2 301 2030 0.0 0.0 -es - fr 2 302 2030 0.0 0.0 -es - fr 2 303 2030 0.0 0.0 -es - fr 2 304 2030 0.0 0.0 -es - fr 2 305 2030 0.0 0.0 -es - fr 2 306 2030 0.0 0.0 -es - fr 2 307 2030 0.0 0.0 -es - fr 2 308 2030 0.0 0.0 -es - fr 2 309 2030 0.0 0.0 -es - fr 2 310 2030 0.0 0.0 -es - fr 2 311 2030 0.0 0.0 -es - fr 2 312 2030 0.0 0.0 -es - fr 2 313 2030 0.0 0.0 -es - fr 2 314 2030 0.0 0.0 -es - fr 2 315 2030 0.0 0.0 -es - fr 2 316 2030 0.0 0.0 -es - fr 2 317 2030 0.0 0.0 -es - fr 2 318 2030 0.0 0.0 -es - fr 2 319 2030 0.0 0.0 -es - fr 2 320 2030 0.0 0.0 -es - fr 2 321 2030 0.0 0.0 -es - fr 2 322 2030 0.0 0.0 -es - fr 2 323 2030 0.0 0.0 -es - fr 2 324 2030 0.0 0.0 -es - fr 2 325 2030 0.0 0.0 -es - fr 2 326 2030 0.0 0.0 -es - fr 2 327 2030 0.0 0.0 -es - fr 2 328 2030 0.0 0.0 -es - fr 2 329 2030 0.0 0.0 -es - fr 2 330 2030 0.0 0.0 -es - fr 2 331 2030 0.0 0.0 -es - fr 2 332 2030 0.0 0.0 -es - fr 2 333 2030 0.0 0.0 -es - fr 2 334 2030 0.0 0.0 -es - fr 2 335 2030 0.0 0.0 -es - fr 2 336 2030 0.0 0.0 -fr - it 2 1 2030 0.0 0.0 -fr - it 2 2 2030 0.0 0.0 -fr - it 2 3 2030 0.0 0.0 -fr - it 2 4 2030 0.0 0.0 -fr - it 2 5 2030 0.0 0.0 -fr - it 2 6 2030 0.0 0.0 -fr - it 2 7 2030 0.0 0.0 -fr - it 2 8 2030 0.0 0.0 -fr - it 2 9 2030 0.0 0.0 -fr - it 2 10 2030 0.0 0.0 -fr - it 2 11 2030 0.0 0.0 -fr - it 2 12 2030 0.0 0.0 -fr - it 2 13 2030 0.0 0.0 -fr - it 2 14 2030 0.0 0.0 -fr - it 2 15 2030 0.0 0.0 -fr - it 2 16 2030 0.0 0.0 -fr - it 2 17 2030 0.0 0.0 -fr - it 2 18 2030 0.0 0.0 -fr - it 2 19 2030 0.0 0.0 -fr - it 2 20 2030 0.0 0.0 -fr - it 2 21 2030 0.0 0.0 -fr - it 2 22 2030 0.0 0.0 -fr - it 2 23 2030 0.0 0.0 -fr - it 2 24 2030 0.0 0.0 -fr - it 2 25 2030 0.0 0.0 -fr - it 2 26 2030 0.0 0.0 -fr - it 2 27 2030 0.0 0.0 -fr - it 2 28 2030 0.0 0.0 -fr - it 2 29 2030 0.0 0.0 -fr - it 2 30 2030 0.0 0.0 -fr - it 2 31 2030 0.0 0.0 -fr - it 2 32 2030 0.0 0.0 -fr - it 2 33 2030 0.0 0.0 -fr - it 2 34 2030 0.0 0.0 -fr - it 2 35 2030 0.0 0.0 -fr - it 2 36 2030 0.0 0.0 -fr - it 2 37 2030 0.0 0.0 -fr - it 2 38 2030 0.0 0.0 -fr - it 2 39 2030 0.0 0.0 -fr - it 2 40 2030 0.0 0.0 -fr - it 2 41 2030 0.0 0.0 -fr - it 2 42 2030 0.0 0.0 -fr - it 2 43 2030 0.0 0.0 -fr - it 2 44 2030 0.0 0.0 -fr - it 2 45 2030 0.0 0.0 -fr - it 2 46 2030 0.0 0.0 -fr - it 2 47 2030 0.0 0.0 -fr - it 2 48 2030 0.0 0.0 -fr - it 2 49 2030 0.0 0.0 -fr - it 2 50 2030 0.0 0.0 -fr - it 2 51 2030 0.0 0.0 -fr - it 2 52 2030 0.0 0.0 -fr - it 2 53 2030 0.0 0.0 -fr - it 2 54 2030 0.0 0.0 -fr - it 2 55 2030 0.0 0.0 -fr - it 2 56 2030 0.0 0.0 -fr - it 2 57 2030 0.0 0.0 -fr - it 2 58 2030 0.0 0.0 -fr - it 2 59 2030 0.0 0.0 -fr - it 2 60 2030 0.0 0.0 -fr - it 2 61 2030 0.0 0.0 -fr - it 2 62 2030 0.0 0.0 -fr - it 2 63 2030 0.0 0.0 -fr - it 2 64 2030 0.0 0.0 -fr - it 2 65 2030 0.0 0.0 -fr - it 2 66 2030 0.0 0.0 -fr - it 2 67 2030 0.0 0.0 -fr - it 2 68 2030 0.0 0.0 -fr - it 2 69 2030 0.0 0.0 -fr - it 2 70 2030 0.0 0.0 -fr - it 2 71 2030 0.0 0.0 -fr - it 2 72 2030 0.0 0.0 -fr - it 2 73 2030 0.0 0.0 -fr - it 2 74 2030 0.0 0.0 -fr - it 2 75 2030 0.0 0.0 -fr - it 2 76 2030 0.0 0.0 -fr - it 2 77 2030 0.0 0.0 -fr - it 2 78 2030 0.0 0.0 -fr - it 2 79 2030 0.0 0.0 -fr - it 2 80 2030 0.0 0.0 -fr - it 2 81 2030 0.0 0.0 -fr - it 2 82 2030 0.0 0.0 -fr - it 2 83 2030 0.0 0.0 -fr - it 2 84 2030 0.0 0.0 -fr - it 2 85 2030 0.0 0.0 -fr - it 2 86 2030 0.0 0.0 -fr - it 2 87 2030 0.0 0.0 -fr - it 2 88 2030 0.0 0.0 -fr - it 2 89 2030 0.0 0.0 -fr - it 2 90 2030 0.0 0.0 -fr - it 2 91 2030 0.0 0.0 -fr - it 2 92 2030 0.0 0.0 -fr - it 2 93 2030 0.0 0.0 -fr - it 2 94 2030 0.0 0.0 -fr - it 2 95 2030 0.0 0.0 -fr - it 2 96 2030 0.0 0.0 -fr - it 2 97 2030 0.0 0.0 -fr - it 2 98 2030 0.0 0.0 -fr - it 2 99 2030 0.0 0.0 -fr - it 2 100 2030 0.0 0.0 -fr - it 2 101 2030 0.0 0.0 -fr - it 2 102 2030 0.0 0.0 -fr - it 2 103 2030 0.0 0.0 -fr - it 2 104 2030 0.0 0.0 -fr - it 2 105 2030 0.0 0.0 -fr - it 2 106 2030 0.0 0.0 -fr - it 2 107 2030 0.0 0.0 -fr - it 2 108 2030 0.0 0.0 -fr - it 2 109 2030 0.0 0.0 -fr - it 2 110 2030 0.0 0.0 -fr - it 2 111 2030 0.0 0.0 -fr - it 2 112 2030 0.0 0.0 -fr - it 2 113 2030 0.0 0.0 -fr - it 2 114 2030 0.0 0.0 -fr - it 2 115 2030 0.0 0.0 -fr - it 2 116 2030 0.0 0.0 -fr - it 2 117 2030 0.0 0.0 -fr - it 2 118 2030 0.0 0.0 -fr - it 2 119 2030 0.0 0.0 -fr - it 2 120 2030 0.0 0.0 -fr - it 2 121 2030 0.0 0.0 -fr - it 2 122 2030 0.0 0.0 -fr - it 2 123 2030 0.0 0.0 -fr - it 2 124 2030 0.0 0.0 -fr - it 2 125 2030 0.0 0.0 -fr - it 2 126 2030 0.0 0.0 -fr - it 2 127 2030 0.0 0.0 -fr - it 2 128 2030 0.0 0.0 -fr - it 2 129 2030 0.0 0.0 -fr - it 2 130 2030 0.0 0.0 -fr - it 2 131 2030 0.0 0.0 -fr - it 2 132 2030 0.0 0.0 -fr - it 2 133 2030 0.0 0.0 -fr - it 2 134 2030 0.0 0.0 -fr - it 2 135 2030 0.0 0.0 -fr - it 2 136 2030 0.0 0.0 -fr - it 2 137 2030 0.0 0.0 -fr - it 2 138 2030 0.0 0.0 -fr - it 2 139 2030 0.0 0.0 -fr - it 2 140 2030 0.0 0.0 -fr - it 2 141 2030 0.0 0.0 -fr - it 2 142 2030 0.0 0.0 -fr - it 2 143 2030 0.0 0.0 -fr - it 2 144 2030 0.0 0.0 -fr - it 2 145 2030 0.0 0.0 -fr - it 2 146 2030 0.0 0.0 -fr - it 2 147 2030 0.0 0.0 -fr - it 2 148 2030 0.0 0.0 -fr - it 2 149 2030 0.0 0.0 -fr - it 2 150 2030 0.0 0.0 -fr - it 2 151 2030 0.0 0.0 -fr - it 2 152 2030 0.0 0.0 -fr - it 2 153 2030 0.0 0.0 -fr - it 2 154 2030 0.0 0.0 -fr - it 2 155 2030 0.0 0.0 -fr - it 2 156 2030 0.0 0.0 -fr - it 2 157 2030 0.0 0.0 -fr - it 2 158 2030 0.0 0.0 -fr - it 2 159 2030 0.0 0.0 -fr - it 2 160 2030 0.0 0.0 -fr - it 2 161 2030 0.0 0.0 -fr - it 2 162 2030 0.0 0.0 -fr - it 2 163 2030 0.0 0.0 -fr - it 2 164 2030 0.0 0.0 -fr - it 2 165 2030 0.0 0.0 -fr - it 2 166 2030 0.0 0.0 -fr - it 2 167 2030 0.0 0.0 -fr - it 2 168 2030 0.0 0.0 -fr - it 2 169 2030 0.0 0.0 -fr - it 2 170 2030 0.0 0.0 -fr - it 2 171 2030 0.0 0.0 -fr - it 2 172 2030 0.0 0.0 -fr - it 2 173 2030 0.0 0.0 -fr - it 2 174 2030 0.0 0.0 -fr - it 2 175 2030 0.0 0.0 -fr - it 2 176 2030 0.0 0.0 -fr - it 2 177 2030 0.0 0.0 -fr - it 2 178 2030 0.0 0.0 -fr - it 2 179 2030 0.0 0.0 -fr - it 2 180 2030 0.0 0.0 -fr - it 2 181 2030 0.0 0.0 -fr - it 2 182 2030 0.0 0.0 -fr - it 2 183 2030 0.0 0.0 -fr - it 2 184 2030 0.0 0.0 -fr - it 2 185 2030 0.0 0.0 -fr - it 2 186 2030 0.0 0.0 -fr - it 2 187 2030 0.0 0.0 -fr - it 2 188 2030 0.0 0.0 -fr - it 2 189 2030 0.0 0.0 -fr - it 2 190 2030 0.0 0.0 -fr - it 2 191 2030 0.0 0.0 -fr - it 2 192 2030 0.0 0.0 -fr - it 2 193 2030 0.0 0.0 -fr - it 2 194 2030 0.0 0.0 -fr - it 2 195 2030 0.0 0.0 -fr - it 2 196 2030 0.0 0.0 -fr - it 2 197 2030 0.0 0.0 -fr - it 2 198 2030 0.0 0.0 -fr - it 2 199 2030 0.0 0.0 -fr - it 2 200 2030 0.0 0.0 -fr - it 2 201 2030 0.0 0.0 -fr - it 2 202 2030 0.0 0.0 -fr - it 2 203 2030 0.0 0.0 -fr - it 2 204 2030 0.0 0.0 -fr - it 2 205 2030 0.0 0.0 -fr - it 2 206 2030 0.0 0.0 -fr - it 2 207 2030 0.0 0.0 -fr - it 2 208 2030 0.0 0.0 -fr - it 2 209 2030 0.0 0.0 -fr - it 2 210 2030 0.0 0.0 -fr - it 2 211 2030 0.0 0.0 -fr - it 2 212 2030 0.0 0.0 -fr - it 2 213 2030 0.0 0.0 -fr - it 2 214 2030 0.0 0.0 -fr - it 2 215 2030 0.0 0.0 -fr - it 2 216 2030 0.0 0.0 -fr - it 2 217 2030 0.0 0.0 -fr - it 2 218 2030 0.0 0.0 -fr - it 2 219 2030 0.0 0.0 -fr - it 2 220 2030 0.0 0.0 -fr - it 2 221 2030 0.0 0.0 -fr - it 2 222 2030 0.0 0.0 -fr - it 2 223 2030 0.0 0.0 -fr - it 2 224 2030 0.0 0.0 -fr - it 2 225 2030 0.0 0.0 -fr - it 2 226 2030 0.0 0.0 -fr - it 2 227 2030 0.0 0.0 -fr - it 2 228 2030 0.0 0.0 -fr - it 2 229 2030 0.0 0.0 -fr - it 2 230 2030 0.0 0.0 -fr - it 2 231 2030 0.0 0.0 -fr - it 2 232 2030 0.0 0.0 -fr - it 2 233 2030 0.0 0.0 -fr - it 2 234 2030 0.0 0.0 -fr - it 2 235 2030 0.0 0.0 -fr - it 2 236 2030 0.0 0.0 -fr - it 2 237 2030 0.0 0.0 -fr - it 2 238 2030 0.0 0.0 -fr - it 2 239 2030 0.0 0.0 -fr - it 2 240 2030 0.0 0.0 -fr - it 2 241 2030 0.0 0.0 -fr - it 2 242 2030 0.0 0.0 -fr - it 2 243 2030 0.0 0.0 -fr - it 2 244 2030 0.0 0.0 -fr - it 2 245 2030 0.0 0.0 -fr - it 2 246 2030 0.0 0.0 -fr - it 2 247 2030 0.0 0.0 -fr - it 2 248 2030 0.0 0.0 -fr - it 2 249 2030 0.0 0.0 -fr - it 2 250 2030 0.0 0.0 -fr - it 2 251 2030 0.0 0.0 -fr - it 2 252 2030 0.0 0.0 -fr - it 2 253 2030 0.0 0.0 -fr - it 2 254 2030 0.0 0.0 -fr - it 2 255 2030 0.0 0.0 -fr - it 2 256 2030 0.0 0.0 -fr - it 2 257 2030 0.0 0.0 -fr - it 2 258 2030 0.0 0.0 -fr - it 2 259 2030 0.0 0.0 -fr - it 2 260 2030 0.0 0.0 -fr - it 2 261 2030 0.0 0.0 -fr - it 2 262 2030 0.0 0.0 -fr - it 2 263 2030 0.0 0.0 -fr - it 2 264 2030 0.0 0.0 -fr - it 2 265 2030 0.0 0.0 -fr - it 2 266 2030 0.0 0.0 -fr - it 2 267 2030 0.0 0.0 -fr - it 2 268 2030 0.0 0.0 -fr - it 2 269 2030 0.0 0.0 -fr - it 2 270 2030 0.0 0.0 -fr - it 2 271 2030 0.0 0.0 -fr - it 2 272 2030 0.0 0.0 -fr - it 2 273 2030 0.0 0.0 -fr - it 2 274 2030 0.0 0.0 -fr - it 2 275 2030 0.0 0.0 -fr - it 2 276 2030 0.0 0.0 -fr - it 2 277 2030 0.0 0.0 -fr - it 2 278 2030 0.0 0.0 -fr - it 2 279 2030 0.0 0.0 -fr - it 2 280 2030 0.0 0.0 -fr - it 2 281 2030 0.0 0.0 -fr - it 2 282 2030 0.0 0.0 -fr - it 2 283 2030 0.0 0.0 -fr - it 2 284 2030 0.0 0.0 -fr - it 2 285 2030 0.0 0.0 -fr - it 2 286 2030 0.0 0.0 -fr - it 2 287 2030 0.0 0.0 -fr - it 2 288 2030 0.0 0.0 -fr - it 2 289 2030 0.0 0.0 -fr - it 2 290 2030 0.0 0.0 -fr - it 2 291 2030 0.0 0.0 -fr - it 2 292 2030 0.0 0.0 -fr - it 2 293 2030 0.0 0.0 -fr - it 2 294 2030 0.0 0.0 -fr - it 2 295 2030 0.0 0.0 -fr - it 2 296 2030 0.0 0.0 -fr - it 2 297 2030 0.0 0.0 -fr - it 2 298 2030 0.0 0.0 -fr - it 2 299 2030 0.0 0.0 -fr - it 2 300 2030 0.0 0.0 -fr - it 2 301 2030 0.0 0.0 -fr - it 2 302 2030 0.0 0.0 -fr - it 2 303 2030 0.0 0.0 -fr - it 2 304 2030 0.0 0.0 -fr - it 2 305 2030 0.0 0.0 -fr - it 2 306 2030 0.0 0.0 -fr - it 2 307 2030 0.0 0.0 -fr - it 2 308 2030 0.0 0.0 -fr - it 2 309 2030 0.0 0.0 -fr - it 2 310 2030 0.0 0.0 -fr - it 2 311 2030 0.0 0.0 -fr - it 2 312 2030 0.0 0.0 -fr - it 2 313 2030 0.0 0.0 -fr - it 2 314 2030 0.0 0.0 -fr - it 2 315 2030 0.0 0.0 -fr - it 2 316 2030 0.0 0.0 -fr - it 2 317 2030 0.0 0.0 -fr - it 2 318 2030 0.0 0.0 -fr - it 2 319 2030 0.0 0.0 -fr - it 2 320 2030 0.0 0.0 -fr - it 2 321 2030 0.0 0.0 -fr - it 2 322 2030 0.0 0.0 -fr - it 2 323 2030 0.0 0.0 -fr - it 2 324 2030 0.0 0.0 -fr - it 2 325 2030 0.0 0.0 -fr - it 2 326 2030 0.0 0.0 -fr - it 2 327 2030 0.0 0.0 -fr - it 2 328 2030 0.0 0.0 -fr - it 2 329 2030 0.0 0.0 -fr - it 2 330 2030 0.0 0.0 -fr - it 2 331 2030 0.0 0.0 -fr - it 2 332 2030 0.0 0.0 -fr - it 2 333 2030 0.0 0.0 -fr - it 2 334 2030 0.0 0.0 -fr - it 2 335 2030 0.0 0.0 -fr - it 2 336 2030 0.0 0.0 +link mcYear timeId MARG. COST CONG. PROB + +de - fr 1 1 0.0 0.0 +de - fr 1 2 0.0 0.0 +de - fr 1 3 0.0 0.0 +de - fr 1 4 0.0 0.0 +de - fr 1 5 0.0 0.0 +de - fr 1 6 0.0 0.0 +de - fr 1 7 0.0 0.0 +de - fr 1 8 0.0 0.0 +de - fr 1 9 0.0 0.0 +de - fr 1 10 0.0 0.0 +de - fr 1 11 0.0 0.0 +de - fr 1 12 0.0 0.0 +de - fr 1 13 0.0 0.0 +de - fr 1 14 0.0 0.0 +de - fr 1 15 0.0 0.0 +de - fr 1 16 0.0 0.0 +de - fr 1 17 0.0 0.0 +de - fr 1 18 0.0 0.0 +de - fr 1 19 0.0 0.0 +de - fr 1 20 0.0 0.0 +de - fr 1 21 0.0 0.0 +de - fr 1 22 0.0 0.0 +de - fr 1 23 0.0 0.0 +de - fr 1 24 0.0 0.0 +de - fr 1 25 0.0 0.0 +de - fr 1 26 0.0 0.0 +de - fr 1 27 0.0 0.0 +de - fr 1 28 0.0 0.0 +de - fr 1 29 0.0 0.0 +de - fr 1 30 0.0 0.0 +de - fr 1 31 0.0 0.0 +de - fr 1 32 0.0 0.0 +de - fr 1 33 0.0 0.0 +de - fr 1 34 0.0 0.0 +de - fr 1 35 0.0 0.0 +de - fr 1 36 0.0 0.0 +de - fr 1 37 0.0 0.0 +de - fr 1 38 0.0 0.0 +de - fr 1 39 0.0 0.0 +de - fr 1 40 0.0 0.0 +de - fr 1 41 0.0 0.0 +de - fr 1 42 0.0 0.0 +de - fr 1 43 0.0 0.0 +de - fr 1 44 0.0 0.0 +de - fr 1 45 0.0 0.0 +de - fr 1 46 0.0 0.0 +de - fr 1 47 0.0 0.0 +de - fr 1 48 0.0 0.0 +de - fr 1 49 0.0 0.0 +de - fr 1 50 0.0 0.0 +de - fr 1 51 0.0 0.0 +de - fr 1 52 0.0 0.0 +de - fr 1 53 0.0 0.0 +de - fr 1 54 0.0 0.0 +de - fr 1 55 0.0 0.0 +de - fr 1 56 0.0 0.0 +de - fr 1 57 0.0 0.0 +de - fr 1 58 0.0 0.0 +de - fr 1 59 0.0 0.0 +de - fr 1 60 0.0 0.0 +de - fr 1 61 0.0 0.0 +de - fr 1 62 0.0 0.0 +de - fr 1 63 0.0 0.0 +de - fr 1 64 0.0 0.0 +de - fr 1 65 0.0 0.0 +de - fr 1 66 0.0 0.0 +de - fr 1 67 0.0 0.0 +de - fr 1 68 0.0 0.0 +de - fr 1 69 0.0 0.0 +de - fr 1 70 0.0 0.0 +de - fr 1 71 0.0 0.0 +de - fr 1 72 0.0 0.0 +de - fr 1 73 0.0 0.0 +de - fr 1 74 0.0 0.0 +de - fr 1 75 0.0 0.0 +de - fr 1 76 0.0 0.0 +de - fr 1 77 0.0 0.0 +de - fr 1 78 0.0 0.0 +de - fr 1 79 0.0 0.0 +de - fr 1 80 0.0 0.0 +de - fr 1 81 0.0 0.0 +de - fr 1 82 0.0 0.0 +de - fr 1 83 0.0 0.0 +de - fr 1 84 0.0 0.0 +de - fr 1 85 0.0 0.0 +de - fr 1 86 0.0 0.0 +de - fr 1 87 0.0 0.0 +de - fr 1 88 0.0 0.0 +de - fr 1 89 0.0 0.0 +de - fr 1 90 0.0 0.0 +de - fr 1 91 0.0 0.0 +de - fr 1 92 0.0 0.0 +de - fr 1 93 0.0 0.0 +de - fr 1 94 0.0 0.0 +de - fr 1 95 0.0 0.0 +de - fr 1 96 0.0 0.0 +de - fr 1 97 0.0 0.0 +de - fr 1 98 0.0 0.0 +de - fr 1 99 0.0 0.0 +de - fr 1 100 0.0 0.0 +de - fr 1 101 0.0 0.0 +de - fr 1 102 0.0 0.0 +de - fr 1 103 0.0 0.0 +de - fr 1 104 0.0 0.0 +de - fr 1 105 0.0 0.0 +de - fr 1 106 0.0 0.0 +de - fr 1 107 0.0 0.0 +de - fr 1 108 0.0 0.0 +de - fr 1 109 0.0 0.0 +de - fr 1 110 0.0 0.0 +de - fr 1 111 0.0 0.0 +de - fr 1 112 0.0 0.0 +de - fr 1 113 0.0 0.0 +de - fr 1 114 0.0 0.0 +de - fr 1 115 0.0 0.0 +de - fr 1 116 0.0 0.0 +de - fr 1 117 0.0 0.0 +de - fr 1 118 0.0 0.0 +de - fr 1 119 0.0 0.0 +de - fr 1 120 0.0 0.0 +de - fr 1 121 0.0 0.0 +de - fr 1 122 0.0 0.0 +de - fr 1 123 0.0 0.0 +de - fr 1 124 0.0 0.0 +de - fr 1 125 0.0 0.0 +de - fr 1 126 0.0 0.0 +de - fr 1 127 0.0 0.0 +de - fr 1 128 0.0 0.0 +de - fr 1 129 0.0 0.0 +de - fr 1 130 0.0 0.0 +de - fr 1 131 0.0 0.0 +de - fr 1 132 0.0 0.0 +de - fr 1 133 0.0 0.0 +de - fr 1 134 0.0 0.0 +de - fr 1 135 0.0 0.0 +de - fr 1 136 0.0 0.0 +de - fr 1 137 0.0 0.0 +de - fr 1 138 0.0 0.0 +de - fr 1 139 0.0 0.0 +de - fr 1 140 0.0 0.0 +de - fr 1 141 0.0 0.0 +de - fr 1 142 0.0 0.0 +de - fr 1 143 0.0 0.0 +de - fr 1 144 0.0 0.0 +de - fr 1 145 0.0 0.0 +de - fr 1 146 0.0 0.0 +de - fr 1 147 0.0 0.0 +de - fr 1 148 0.0 0.0 +de - fr 1 149 0.0 0.0 +de - fr 1 150 0.0 0.0 +de - fr 1 151 0.0 0.0 +de - fr 1 152 0.0 0.0 +de - fr 1 153 0.0 0.0 +de - fr 1 154 0.0 0.0 +de - fr 1 155 0.0 0.0 +de - fr 1 156 0.0 0.0 +de - fr 1 157 0.0 0.0 +de - fr 1 158 0.0 0.0 +de - fr 1 159 0.0 0.0 +de - fr 1 160 0.0 0.0 +de - fr 1 161 0.0 0.0 +de - fr 1 162 0.0 0.0 +de - fr 1 163 0.0 0.0 +de - fr 1 164 0.0 0.0 +de - fr 1 165 0.0 0.0 +de - fr 1 166 0.0 0.0 +de - fr 1 167 0.0 0.0 +de - fr 1 168 0.0 0.0 +de - fr 1 169 0.0 0.0 +de - fr 1 170 0.0 0.0 +de - fr 1 171 0.0 0.0 +de - fr 1 172 0.0 0.0 +de - fr 1 173 0.0 0.0 +de - fr 1 174 0.0 0.0 +de - fr 1 175 0.0 0.0 +de - fr 1 176 0.0 0.0 +de - fr 1 177 0.0 0.0 +de - fr 1 178 0.0 0.0 +de - fr 1 179 0.0 0.0 +de - fr 1 180 0.0 0.0 +de - fr 1 181 0.0 0.0 +de - fr 1 182 0.0 0.0 +de - fr 1 183 0.0 0.0 +de - fr 1 184 0.0 0.0 +de - fr 1 185 0.0 0.0 +de - fr 1 186 0.0 0.0 +de - fr 1 187 0.0 0.0 +de - fr 1 188 0.0 0.0 +de - fr 1 189 0.0 0.0 +de - fr 1 190 0.0 0.0 +de - fr 1 191 0.0 0.0 +de - fr 1 192 0.0 0.0 +de - fr 1 193 0.0 0.0 +de - fr 1 194 0.0 0.0 +de - fr 1 195 0.0 0.0 +de - fr 1 196 0.0 0.0 +de - fr 1 197 0.0 0.0 +de - fr 1 198 0.0 0.0 +de - fr 1 199 0.0 0.0 +de - fr 1 200 0.0 0.0 +de - fr 1 201 0.0 0.0 +de - fr 1 202 0.0 0.0 +de - fr 1 203 0.0 0.0 +de - fr 1 204 0.0 0.0 +de - fr 1 205 0.0 0.0 +de - fr 1 206 0.0 0.0 +de - fr 1 207 0.0 0.0 +de - fr 1 208 0.0 0.0 +de - fr 1 209 0.0 0.0 +de - fr 1 210 0.0 0.0 +de - fr 1 211 0.0 0.0 +de - fr 1 212 0.0 0.0 +de - fr 1 213 0.0 0.0 +de - fr 1 214 0.0 0.0 +de - fr 1 215 0.0 0.0 +de - fr 1 216 0.0 0.0 +de - fr 1 217 0.0 0.0 +de - fr 1 218 0.0 0.0 +de - fr 1 219 0.0 0.0 +de - fr 1 220 0.0 0.0 +de - fr 1 221 0.0 0.0 +de - fr 1 222 0.0 0.0 +de - fr 1 223 0.0 0.0 +de - fr 1 224 0.0 0.0 +de - fr 1 225 0.0 0.0 +de - fr 1 226 0.0 0.0 +de - fr 1 227 0.0 0.0 +de - fr 1 228 0.0 0.0 +de - fr 1 229 0.0 0.0 +de - fr 1 230 0.0 0.0 +de - fr 1 231 0.0 0.0 +de - fr 1 232 0.0 0.0 +de - fr 1 233 0.0 0.0 +de - fr 1 234 0.0 0.0 +de - fr 1 235 0.0 0.0 +de - fr 1 236 0.0 0.0 +de - fr 1 237 0.0 0.0 +de - fr 1 238 0.0 0.0 +de - fr 1 239 0.0 0.0 +de - fr 1 240 0.0 0.0 +de - fr 1 241 0.0 0.0 +de - fr 1 242 0.0 0.0 +de - fr 1 243 0.0 0.0 +de - fr 1 244 0.0 0.0 +de - fr 1 245 0.0 0.0 +de - fr 1 246 0.0 0.0 +de - fr 1 247 0.0 0.0 +de - fr 1 248 0.0 0.0 +de - fr 1 249 0.0 0.0 +de - fr 1 250 0.0 0.0 +de - fr 1 251 0.0 0.0 +de - fr 1 252 0.0 0.0 +de - fr 1 253 0.0 0.0 +de - fr 1 254 0.0 0.0 +de - fr 1 255 0.0 0.0 +de - fr 1 256 0.0 0.0 +de - fr 1 257 0.0 0.0 +de - fr 1 258 0.0 0.0 +de - fr 1 259 0.0 0.0 +de - fr 1 260 0.0 0.0 +de - fr 1 261 0.0 0.0 +de - fr 1 262 0.0 0.0 +de - fr 1 263 0.0 0.0 +de - fr 1 264 0.0 0.0 +de - fr 1 265 0.0 0.0 +de - fr 1 266 0.0 0.0 +de - fr 1 267 0.0 0.0 +de - fr 1 268 0.0 0.0 +de - fr 1 269 0.0 0.0 +de - fr 1 270 0.0 0.0 +de - fr 1 271 0.0 0.0 +de - fr 1 272 0.0 0.0 +de - fr 1 273 0.0 0.0 +de - fr 1 274 0.0 0.0 +de - fr 1 275 0.0 0.0 +de - fr 1 276 0.0 0.0 +de - fr 1 277 0.0 0.0 +de - fr 1 278 0.0 0.0 +de - fr 1 279 0.0 0.0 +de - fr 1 280 0.0 0.0 +de - fr 1 281 0.0 0.0 +de - fr 1 282 0.0 0.0 +de - fr 1 283 0.0 0.0 +de - fr 1 284 0.0 0.0 +de - fr 1 285 0.0 0.0 +de - fr 1 286 0.0 0.0 +de - fr 1 287 0.0 0.0 +de - fr 1 288 0.0 0.0 +de - fr 1 289 0.0 0.0 +de - fr 1 290 0.0 0.0 +de - fr 1 291 0.0 0.0 +de - fr 1 292 0.0 0.0 +de - fr 1 293 0.0 0.0 +de - fr 1 294 0.0 0.0 +de - fr 1 295 0.0 0.0 +de - fr 1 296 0.0 0.0 +de - fr 1 297 0.0 0.0 +de - fr 1 298 0.0 0.0 +de - fr 1 299 0.0 0.0 +de - fr 1 300 0.0 0.0 +de - fr 1 301 0.0 0.0 +de - fr 1 302 0.0 0.0 +de - fr 1 303 0.0 0.0 +de - fr 1 304 0.0 0.0 +de - fr 1 305 0.0 0.0 +de - fr 1 306 0.0 0.0 +de - fr 1 307 0.0 0.0 +de - fr 1 308 0.0 0.0 +de - fr 1 309 0.0 0.0 +de - fr 1 310 0.0 0.0 +de - fr 1 311 0.0 0.0 +de - fr 1 312 0.0 0.0 +de - fr 1 313 0.0 0.0 +de - fr 1 314 0.0 0.0 +de - fr 1 315 0.0 0.0 +de - fr 1 316 0.0 0.0 +de - fr 1 317 0.0 0.0 +de - fr 1 318 0.0 0.0 +de - fr 1 319 0.0 0.0 +de - fr 1 320 0.0 0.0 +de - fr 1 321 0.0 0.0 +de - fr 1 322 0.0 0.0 +de - fr 1 323 0.0 0.0 +de - fr 1 324 0.0 0.0 +de - fr 1 325 0.0 0.0 +de - fr 1 326 0.0 0.0 +de - fr 1 327 0.0 0.0 +de - fr 1 328 0.0 0.0 +de - fr 1 329 0.0 0.0 +de - fr 1 330 0.0 0.0 +de - fr 1 331 0.0 0.0 +de - fr 1 332 0.0 0.0 +de - fr 1 333 0.0 0.0 +de - fr 1 334 0.0 0.0 +de - fr 1 335 0.0 0.0 +de - fr 1 336 0.0 0.0 +es - fr 1 1 0.0 0.0 +es - fr 1 2 0.0 0.0 +es - fr 1 3 0.0 0.0 +es - fr 1 4 0.0 0.0 +es - fr 1 5 0.0 0.0 +es - fr 1 6 0.0 0.0 +es - fr 1 7 0.0 0.0 +es - fr 1 8 0.0 0.0 +es - fr 1 9 0.0 0.0 +es - fr 1 10 0.0 0.0 +es - fr 1 11 0.0 0.0 +es - fr 1 12 0.0 0.0 +es - fr 1 13 0.0 0.0 +es - fr 1 14 0.0 0.0 +es - fr 1 15 0.0 0.0 +es - fr 1 16 0.0 0.0 +es - fr 1 17 0.0 0.0 +es - fr 1 18 0.0 0.0 +es - fr 1 19 0.0 0.0 +es - fr 1 20 0.0 0.0 +es - fr 1 21 0.0 0.0 +es - fr 1 22 0.0 0.0 +es - fr 1 23 0.0 0.0 +es - fr 1 24 0.0 0.0 +es - fr 1 25 0.0 0.0 +es - fr 1 26 0.0 0.0 +es - fr 1 27 0.0 0.0 +es - fr 1 28 0.0 0.0 +es - fr 1 29 0.0 0.0 +es - fr 1 30 0.0 0.0 +es - fr 1 31 0.0 0.0 +es - fr 1 32 0.0 0.0 +es - fr 1 33 0.0 0.0 +es - fr 1 34 0.0 0.0 +es - fr 1 35 0.0 0.0 +es - fr 1 36 0.0 0.0 +es - fr 1 37 0.0 0.0 +es - fr 1 38 0.0 0.0 +es - fr 1 39 0.0 0.0 +es - fr 1 40 0.0 0.0 +es - fr 1 41 0.0 0.0 +es - fr 1 42 0.0 0.0 +es - fr 1 43 0.0 0.0 +es - fr 1 44 0.0 0.0 +es - fr 1 45 0.0 0.0 +es - fr 1 46 0.0 0.0 +es - fr 1 47 0.0 0.0 +es - fr 1 48 0.0 0.0 +es - fr 1 49 0.0 0.0 +es - fr 1 50 0.0 0.0 +es - fr 1 51 0.0 0.0 +es - fr 1 52 0.0 0.0 +es - fr 1 53 0.0 0.0 +es - fr 1 54 0.0 0.0 +es - fr 1 55 0.0 0.0 +es - fr 1 56 0.0 0.0 +es - fr 1 57 0.0 0.0 +es - fr 1 58 0.0 0.0 +es - fr 1 59 0.0 0.0 +es - fr 1 60 0.0 0.0 +es - fr 1 61 0.0 0.0 +es - fr 1 62 0.0 0.0 +es - fr 1 63 0.0 0.0 +es - fr 1 64 0.0 0.0 +es - fr 1 65 0.0 0.0 +es - fr 1 66 0.0 0.0 +es - fr 1 67 0.0 0.0 +es - fr 1 68 0.0 0.0 +es - fr 1 69 0.0 0.0 +es - fr 1 70 0.0 0.0 +es - fr 1 71 0.0 0.0 +es - fr 1 72 0.0 0.0 +es - fr 1 73 0.0 0.0 +es - fr 1 74 0.0 0.0 +es - fr 1 75 0.0 0.0 +es - fr 1 76 0.0 0.0 +es - fr 1 77 0.0 0.0 +es - fr 1 78 0.0 0.0 +es - fr 1 79 0.0 0.0 +es - fr 1 80 0.0 0.0 +es - fr 1 81 0.0 0.0 +es - fr 1 82 0.0 0.0 +es - fr 1 83 0.0 0.0 +es - fr 1 84 0.0 0.0 +es - fr 1 85 0.0 0.0 +es - fr 1 86 0.0 0.0 +es - fr 1 87 0.0 0.0 +es - fr 1 88 0.0 0.0 +es - fr 1 89 0.0 0.0 +es - fr 1 90 0.0 0.0 +es - fr 1 91 0.0 0.0 +es - fr 1 92 0.0 0.0 +es - fr 1 93 0.0 0.0 +es - fr 1 94 0.0 0.0 +es - fr 1 95 0.0 0.0 +es - fr 1 96 0.0 0.0 +es - fr 1 97 0.0 0.0 +es - fr 1 98 0.0 0.0 +es - fr 1 99 0.0 0.0 +es - fr 1 100 0.0 0.0 +es - fr 1 101 0.0 0.0 +es - fr 1 102 0.0 0.0 +es - fr 1 103 0.0 0.0 +es - fr 1 104 0.0 0.0 +es - fr 1 105 0.0 0.0 +es - fr 1 106 0.0 0.0 +es - fr 1 107 0.0 0.0 +es - fr 1 108 0.0 0.0 +es - fr 1 109 0.0 0.0 +es - fr 1 110 0.0 0.0 +es - fr 1 111 0.0 0.0 +es - fr 1 112 0.0 0.0 +es - fr 1 113 0.0 0.0 +es - fr 1 114 0.0 0.0 +es - fr 1 115 0.0 0.0 +es - fr 1 116 0.0 0.0 +es - fr 1 117 0.0 0.0 +es - fr 1 118 0.0 0.0 +es - fr 1 119 0.0 0.0 +es - fr 1 120 0.0 0.0 +es - fr 1 121 0.0 0.0 +es - fr 1 122 0.0 0.0 +es - fr 1 123 0.0 0.0 +es - fr 1 124 0.0 0.0 +es - fr 1 125 0.0 0.0 +es - fr 1 126 0.0 0.0 +es - fr 1 127 0.0 0.0 +es - fr 1 128 0.0 0.0 +es - fr 1 129 0.0 0.0 +es - fr 1 130 0.0 0.0 +es - fr 1 131 0.0 0.0 +es - fr 1 132 0.0 0.0 +es - fr 1 133 0.0 0.0 +es - fr 1 134 0.0 0.0 +es - fr 1 135 0.0 0.0 +es - fr 1 136 0.0 0.0 +es - fr 1 137 0.0 0.0 +es - fr 1 138 0.0 0.0 +es - fr 1 139 0.0 0.0 +es - fr 1 140 0.0 0.0 +es - fr 1 141 0.0 0.0 +es - fr 1 142 0.0 0.0 +es - fr 1 143 0.0 0.0 +es - fr 1 144 0.0 0.0 +es - fr 1 145 0.0 0.0 +es - fr 1 146 0.0 0.0 +es - fr 1 147 0.0 0.0 +es - fr 1 148 0.0 0.0 +es - fr 1 149 0.0 0.0 +es - fr 1 150 0.0 0.0 +es - fr 1 151 0.0 0.0 +es - fr 1 152 0.0 0.0 +es - fr 1 153 0.0 0.0 +es - fr 1 154 0.0 0.0 +es - fr 1 155 0.0 0.0 +es - fr 1 156 0.0 0.0 +es - fr 1 157 0.0 0.0 +es - fr 1 158 0.0 0.0 +es - fr 1 159 0.0 0.0 +es - fr 1 160 0.0 0.0 +es - fr 1 161 0.0 0.0 +es - fr 1 162 0.0 0.0 +es - fr 1 163 0.0 0.0 +es - fr 1 164 0.0 0.0 +es - fr 1 165 0.0 0.0 +es - fr 1 166 0.0 0.0 +es - fr 1 167 0.0 0.0 +es - fr 1 168 0.0 0.0 +es - fr 1 169 0.0 0.0 +es - fr 1 170 0.0 0.0 +es - fr 1 171 0.0 0.0 +es - fr 1 172 0.0 0.0 +es - fr 1 173 0.0 0.0 +es - fr 1 174 0.0 0.0 +es - fr 1 175 0.0 0.0 +es - fr 1 176 0.0 0.0 +es - fr 1 177 0.0 0.0 +es - fr 1 178 0.0 0.0 +es - fr 1 179 0.0 0.0 +es - fr 1 180 0.0 0.0 +es - fr 1 181 0.0 0.0 +es - fr 1 182 0.0 0.0 +es - fr 1 183 0.0 0.0 +es - fr 1 184 0.0 0.0 +es - fr 1 185 0.0 0.0 +es - fr 1 186 0.0 0.0 +es - fr 1 187 0.0 0.0 +es - fr 1 188 0.0 0.0 +es - fr 1 189 0.0 0.0 +es - fr 1 190 0.0 0.0 +es - fr 1 191 0.0 0.0 +es - fr 1 192 0.0 0.0 +es - fr 1 193 0.0 0.0 +es - fr 1 194 0.0 0.0 +es - fr 1 195 0.0 0.0 +es - fr 1 196 0.0 0.0 +es - fr 1 197 0.0 0.0 +es - fr 1 198 0.0 0.0 +es - fr 1 199 0.0 0.0 +es - fr 1 200 0.0 0.0 +es - fr 1 201 0.0 0.0 +es - fr 1 202 0.0 0.0 +es - fr 1 203 0.0 0.0 +es - fr 1 204 0.0 0.0 +es - fr 1 205 0.0 0.0 +es - fr 1 206 0.0 0.0 +es - fr 1 207 0.0 0.0 +es - fr 1 208 0.0 0.0 +es - fr 1 209 0.0 0.0 +es - fr 1 210 0.0 0.0 +es - fr 1 211 0.0 0.0 +es - fr 1 212 0.0 0.0 +es - fr 1 213 0.0 0.0 +es - fr 1 214 0.0 0.0 +es - fr 1 215 0.0 0.0 +es - fr 1 216 0.0 0.0 +es - fr 1 217 0.0 0.0 +es - fr 1 218 0.0 0.0 +es - fr 1 219 0.0 0.0 +es - fr 1 220 0.0 0.0 +es - fr 1 221 0.0 0.0 +es - fr 1 222 0.0 0.0 +es - fr 1 223 0.0 0.0 +es - fr 1 224 0.0 0.0 +es - fr 1 225 0.0 0.0 +es - fr 1 226 0.0 0.0 +es - fr 1 227 0.0 0.0 +es - fr 1 228 0.0 0.0 +es - fr 1 229 0.0 0.0 +es - fr 1 230 0.0 0.0 +es - fr 1 231 0.0 0.0 +es - fr 1 232 0.0 0.0 +es - fr 1 233 0.0 0.0 +es - fr 1 234 0.0 0.0 +es - fr 1 235 0.0 0.0 +es - fr 1 236 0.0 0.0 +es - fr 1 237 0.0 0.0 +es - fr 1 238 0.0 0.0 +es - fr 1 239 0.0 0.0 +es - fr 1 240 0.0 0.0 +es - fr 1 241 0.0 0.0 +es - fr 1 242 0.0 0.0 +es - fr 1 243 0.0 0.0 +es - fr 1 244 0.0 0.0 +es - fr 1 245 0.0 0.0 +es - fr 1 246 0.0 0.0 +es - fr 1 247 0.0 0.0 +es - fr 1 248 0.0 0.0 +es - fr 1 249 0.0 0.0 +es - fr 1 250 0.0 0.0 +es - fr 1 251 0.0 0.0 +es - fr 1 252 0.0 0.0 +es - fr 1 253 0.0 0.0 +es - fr 1 254 0.0 0.0 +es - fr 1 255 0.0 0.0 +es - fr 1 256 0.0 0.0 +es - fr 1 257 0.0 0.0 +es - fr 1 258 0.0 0.0 +es - fr 1 259 0.0 0.0 +es - fr 1 260 0.0 0.0 +es - fr 1 261 0.0 0.0 +es - fr 1 262 0.0 0.0 +es - fr 1 263 0.0 0.0 +es - fr 1 264 0.0 0.0 +es - fr 1 265 0.0 0.0 +es - fr 1 266 0.0 0.0 +es - fr 1 267 0.0 0.0 +es - fr 1 268 0.0 0.0 +es - fr 1 269 0.0 0.0 +es - fr 1 270 0.0 0.0 +es - fr 1 271 0.0 0.0 +es - fr 1 272 0.0 0.0 +es - fr 1 273 0.0 0.0 +es - fr 1 274 0.0 0.0 +es - fr 1 275 0.0 0.0 +es - fr 1 276 0.0 0.0 +es - fr 1 277 0.0 0.0 +es - fr 1 278 0.0 0.0 +es - fr 1 279 0.0 0.0 +es - fr 1 280 0.0 0.0 +es - fr 1 281 0.0 0.0 +es - fr 1 282 0.0 0.0 +es - fr 1 283 0.0 0.0 +es - fr 1 284 0.0 0.0 +es - fr 1 285 0.0 0.0 +es - fr 1 286 0.0 0.0 +es - fr 1 287 0.0 0.0 +es - fr 1 288 0.0 0.0 +es - fr 1 289 0.0 0.0 +es - fr 1 290 0.0 0.0 +es - fr 1 291 0.0 0.0 +es - fr 1 292 0.0 0.0 +es - fr 1 293 0.0 0.0 +es - fr 1 294 0.0 0.0 +es - fr 1 295 0.0 0.0 +es - fr 1 296 0.0 0.0 +es - fr 1 297 0.0 0.0 +es - fr 1 298 0.0 0.0 +es - fr 1 299 0.0 0.0 +es - fr 1 300 0.0 0.0 +es - fr 1 301 0.0 0.0 +es - fr 1 302 0.0 0.0 +es - fr 1 303 0.0 0.0 +es - fr 1 304 0.0 0.0 +es - fr 1 305 0.0 0.0 +es - fr 1 306 0.0 0.0 +es - fr 1 307 0.0 0.0 +es - fr 1 308 0.0 0.0 +es - fr 1 309 0.0 0.0 +es - fr 1 310 0.0 0.0 +es - fr 1 311 0.0 0.0 +es - fr 1 312 0.0 0.0 +es - fr 1 313 0.0 0.0 +es - fr 1 314 0.0 0.0 +es - fr 1 315 0.0 0.0 +es - fr 1 316 0.0 0.0 +es - fr 1 317 0.0 0.0 +es - fr 1 318 0.0 0.0 +es - fr 1 319 0.0 0.0 +es - fr 1 320 0.0 0.0 +es - fr 1 321 0.0 0.0 +es - fr 1 322 0.0 0.0 +es - fr 1 323 0.0 0.0 +es - fr 1 324 0.0 0.0 +es - fr 1 325 0.0 0.0 +es - fr 1 326 0.0 0.0 +es - fr 1 327 0.0 0.0 +es - fr 1 328 0.0 0.0 +es - fr 1 329 0.0 0.0 +es - fr 1 330 0.0 0.0 +es - fr 1 331 0.0 0.0 +es - fr 1 332 0.0 0.0 +es - fr 1 333 0.0 0.0 +es - fr 1 334 0.0 0.0 +es - fr 1 335 0.0 0.0 +es - fr 1 336 0.0 0.0 +fr - it 1 1 0.0 0.0 +fr - it 1 2 0.0 0.0 +fr - it 1 3 0.0 0.0 +fr - it 1 4 0.0 0.0 +fr - it 1 5 0.0 0.0 +fr - it 1 6 0.0 0.0 +fr - it 1 7 0.0 0.0 +fr - it 1 8 0.0 0.0 +fr - it 1 9 0.0 0.0 +fr - it 1 10 0.0 0.0 +fr - it 1 11 0.0 0.0 +fr - it 1 12 0.0 0.0 +fr - it 1 13 0.0 0.0 +fr - it 1 14 0.0 0.0 +fr - it 1 15 0.0 0.0 +fr - it 1 16 0.0 0.0 +fr - it 1 17 0.0 0.0 +fr - it 1 18 0.0 0.0 +fr - it 1 19 0.0 0.0 +fr - it 1 20 0.0 0.0 +fr - it 1 21 0.0 0.0 +fr - it 1 22 0.0 0.0 +fr - it 1 23 0.0 0.0 +fr - it 1 24 0.0 0.0 +fr - it 1 25 0.0 0.0 +fr - it 1 26 0.0 0.0 +fr - it 1 27 0.0 0.0 +fr - it 1 28 0.0 0.0 +fr - it 1 29 0.0 0.0 +fr - it 1 30 0.0 0.0 +fr - it 1 31 0.0 0.0 +fr - it 1 32 0.0 0.0 +fr - it 1 33 0.0 0.0 +fr - it 1 34 0.0 0.0 +fr - it 1 35 0.0 0.0 +fr - it 1 36 0.0 0.0 +fr - it 1 37 0.0 0.0 +fr - it 1 38 0.0 0.0 +fr - it 1 39 0.0 0.0 +fr - it 1 40 0.0 0.0 +fr - it 1 41 0.0 0.0 +fr - it 1 42 0.0 0.0 +fr - it 1 43 0.0 0.0 +fr - it 1 44 0.0 0.0 +fr - it 1 45 0.0 0.0 +fr - it 1 46 0.0 0.0 +fr - it 1 47 0.0 0.0 +fr - it 1 48 0.0 0.0 +fr - it 1 49 0.0 0.0 +fr - it 1 50 0.0 0.0 +fr - it 1 51 0.0 0.0 +fr - it 1 52 0.0 0.0 +fr - it 1 53 0.0 0.0 +fr - it 1 54 0.0 0.0 +fr - it 1 55 0.0 0.0 +fr - it 1 56 0.0 0.0 +fr - it 1 57 0.0 0.0 +fr - it 1 58 0.0 0.0 +fr - it 1 59 0.0 0.0 +fr - it 1 60 0.0 0.0 +fr - it 1 61 0.0 0.0 +fr - it 1 62 0.0 0.0 +fr - it 1 63 0.0 0.0 +fr - it 1 64 0.0 0.0 +fr - it 1 65 0.0 0.0 +fr - it 1 66 0.0 0.0 +fr - it 1 67 0.0 0.0 +fr - it 1 68 0.0 0.0 +fr - it 1 69 0.0 0.0 +fr - it 1 70 0.0 0.0 +fr - it 1 71 0.0 0.0 +fr - it 1 72 0.0 0.0 +fr - it 1 73 0.0 0.0 +fr - it 1 74 0.0 0.0 +fr - it 1 75 0.0 0.0 +fr - it 1 76 0.0 0.0 +fr - it 1 77 0.0 0.0 +fr - it 1 78 0.0 0.0 +fr - it 1 79 0.0 0.0 +fr - it 1 80 0.0 0.0 +fr - it 1 81 0.0 0.0 +fr - it 1 82 0.0 0.0 +fr - it 1 83 0.0 0.0 +fr - it 1 84 0.0 0.0 +fr - it 1 85 0.0 0.0 +fr - it 1 86 0.0 0.0 +fr - it 1 87 0.0 0.0 +fr - it 1 88 0.0 0.0 +fr - it 1 89 0.0 0.0 +fr - it 1 90 0.0 0.0 +fr - it 1 91 0.0 0.0 +fr - it 1 92 0.0 0.0 +fr - it 1 93 0.0 0.0 +fr - it 1 94 0.0 0.0 +fr - it 1 95 0.0 0.0 +fr - it 1 96 0.0 0.0 +fr - it 1 97 0.0 0.0 +fr - it 1 98 0.0 0.0 +fr - it 1 99 0.0 0.0 +fr - it 1 100 0.0 0.0 +fr - it 1 101 0.0 0.0 +fr - it 1 102 0.0 0.0 +fr - it 1 103 0.0 0.0 +fr - it 1 104 0.0 0.0 +fr - it 1 105 0.0 0.0 +fr - it 1 106 0.0 0.0 +fr - it 1 107 0.0 0.0 +fr - it 1 108 0.0 0.0 +fr - it 1 109 0.0 0.0 +fr - it 1 110 0.0 0.0 +fr - it 1 111 0.0 0.0 +fr - it 1 112 0.0 0.0 +fr - it 1 113 0.0 0.0 +fr - it 1 114 0.0 0.0 +fr - it 1 115 0.0 0.0 +fr - it 1 116 0.0 0.0 +fr - it 1 117 0.0 0.0 +fr - it 1 118 0.0 0.0 +fr - it 1 119 0.0 0.0 +fr - it 1 120 0.0 0.0 +fr - it 1 121 0.0 0.0 +fr - it 1 122 0.0 0.0 +fr - it 1 123 0.0 0.0 +fr - it 1 124 0.0 0.0 +fr - it 1 125 0.0 0.0 +fr - it 1 126 0.0 0.0 +fr - it 1 127 0.0 0.0 +fr - it 1 128 0.0 0.0 +fr - it 1 129 0.0 0.0 +fr - it 1 130 0.0 0.0 +fr - it 1 131 0.0 0.0 +fr - it 1 132 0.0 0.0 +fr - it 1 133 0.0 0.0 +fr - it 1 134 0.0 0.0 +fr - it 1 135 0.0 0.0 +fr - it 1 136 0.0 0.0 +fr - it 1 137 0.0 0.0 +fr - it 1 138 0.0 0.0 +fr - it 1 139 0.0 0.0 +fr - it 1 140 0.0 0.0 +fr - it 1 141 0.0 0.0 +fr - it 1 142 0.0 0.0 +fr - it 1 143 0.0 0.0 +fr - it 1 144 0.0 0.0 +fr - it 1 145 0.0 0.0 +fr - it 1 146 0.0 0.0 +fr - it 1 147 0.0 0.0 +fr - it 1 148 0.0 0.0 +fr - it 1 149 0.0 0.0 +fr - it 1 150 0.0 0.0 +fr - it 1 151 0.0 0.0 +fr - it 1 152 0.0 0.0 +fr - it 1 153 0.0 0.0 +fr - it 1 154 0.0 0.0 +fr - it 1 155 0.0 0.0 +fr - it 1 156 0.0 0.0 +fr - it 1 157 0.0 0.0 +fr - it 1 158 0.0 0.0 +fr - it 1 159 0.0 0.0 +fr - it 1 160 0.0 0.0 +fr - it 1 161 0.0 0.0 +fr - it 1 162 0.0 0.0 +fr - it 1 163 0.0 0.0 +fr - it 1 164 0.0 0.0 +fr - it 1 165 0.0 0.0 +fr - it 1 166 0.0 0.0 +fr - it 1 167 0.0 0.0 +fr - it 1 168 0.0 0.0 +fr - it 1 169 0.0 0.0 +fr - it 1 170 0.0 0.0 +fr - it 1 171 0.0 0.0 +fr - it 1 172 0.0 0.0 +fr - it 1 173 0.0 0.0 +fr - it 1 174 0.0 0.0 +fr - it 1 175 0.0 0.0 +fr - it 1 176 0.0 0.0 +fr - it 1 177 0.0 0.0 +fr - it 1 178 0.0 0.0 +fr - it 1 179 0.0 0.0 +fr - it 1 180 0.0 0.0 +fr - it 1 181 0.0 0.0 +fr - it 1 182 0.0 0.0 +fr - it 1 183 0.0 0.0 +fr - it 1 184 0.0 0.0 +fr - it 1 185 0.0 0.0 +fr - it 1 186 0.0 0.0 +fr - it 1 187 0.0 0.0 +fr - it 1 188 0.0 0.0 +fr - it 1 189 0.0 0.0 +fr - it 1 190 0.0 0.0 +fr - it 1 191 0.0 0.0 +fr - it 1 192 0.0 0.0 +fr - it 1 193 0.0 0.0 +fr - it 1 194 0.0 0.0 +fr - it 1 195 0.0 0.0 +fr - it 1 196 0.0 0.0 +fr - it 1 197 0.0 0.0 +fr - it 1 198 0.0 0.0 +fr - it 1 199 0.0 0.0 +fr - it 1 200 0.0 0.0 +fr - it 1 201 0.0 0.0 +fr - it 1 202 0.0 0.0 +fr - it 1 203 0.0 0.0 +fr - it 1 204 0.0 0.0 +fr - it 1 205 0.0 0.0 +fr - it 1 206 0.0 0.0 +fr - it 1 207 0.0 0.0 +fr - it 1 208 0.0 0.0 +fr - it 1 209 0.0 0.0 +fr - it 1 210 0.0 0.0 +fr - it 1 211 0.0 0.0 +fr - it 1 212 0.0 0.0 +fr - it 1 213 0.0 0.0 +fr - it 1 214 0.0 0.0 +fr - it 1 215 0.0 0.0 +fr - it 1 216 0.0 0.0 +fr - it 1 217 0.0 0.0 +fr - it 1 218 0.0 0.0 +fr - it 1 219 0.0 0.0 +fr - it 1 220 0.0 0.0 +fr - it 1 221 0.0 0.0 +fr - it 1 222 0.0 0.0 +fr - it 1 223 0.0 0.0 +fr - it 1 224 0.0 0.0 +fr - it 1 225 0.0 0.0 +fr - it 1 226 0.0 0.0 +fr - it 1 227 0.0 0.0 +fr - it 1 228 0.0 0.0 +fr - it 1 229 0.0 0.0 +fr - it 1 230 0.0 0.0 +fr - it 1 231 0.0 0.0 +fr - it 1 232 0.0 0.0 +fr - it 1 233 0.0 0.0 +fr - it 1 234 0.0 0.0 +fr - it 1 235 0.0 0.0 +fr - it 1 236 0.0 0.0 +fr - it 1 237 0.0 0.0 +fr - it 1 238 0.0 0.0 +fr - it 1 239 0.0 0.0 +fr - it 1 240 0.0 0.0 +fr - it 1 241 0.0 0.0 +fr - it 1 242 0.0 0.0 +fr - it 1 243 0.0 0.0 +fr - it 1 244 0.0 0.0 +fr - it 1 245 0.0 0.0 +fr - it 1 246 0.0 0.0 +fr - it 1 247 0.0 0.0 +fr - it 1 248 0.0 0.0 +fr - it 1 249 0.0 0.0 +fr - it 1 250 0.0 0.0 +fr - it 1 251 0.0 0.0 +fr - it 1 252 0.0 0.0 +fr - it 1 253 0.0 0.0 +fr - it 1 254 0.0 0.0 +fr - it 1 255 0.0 0.0 +fr - it 1 256 0.0 0.0 +fr - it 1 257 0.0 0.0 +fr - it 1 258 0.0 0.0 +fr - it 1 259 0.0 0.0 +fr - it 1 260 0.0 0.0 +fr - it 1 261 0.0 0.0 +fr - it 1 262 0.0 0.0 +fr - it 1 263 0.0 0.0 +fr - it 1 264 0.0 0.0 +fr - it 1 265 0.0 0.0 +fr - it 1 266 0.0 0.0 +fr - it 1 267 0.0 0.0 +fr - it 1 268 0.0 0.0 +fr - it 1 269 0.0 0.0 +fr - it 1 270 0.0 0.0 +fr - it 1 271 0.0 0.0 +fr - it 1 272 0.0 0.0 +fr - it 1 273 0.0 0.0 +fr - it 1 274 0.0 0.0 +fr - it 1 275 0.0 0.0 +fr - it 1 276 0.0 0.0 +fr - it 1 277 0.0 0.0 +fr - it 1 278 0.0 0.0 +fr - it 1 279 0.0 0.0 +fr - it 1 280 0.0 0.0 +fr - it 1 281 0.0 0.0 +fr - it 1 282 0.0 0.0 +fr - it 1 283 0.0 0.0 +fr - it 1 284 0.0 0.0 +fr - it 1 285 0.0 0.0 +fr - it 1 286 0.0 0.0 +fr - it 1 287 0.0 0.0 +fr - it 1 288 0.0 0.0 +fr - it 1 289 0.0 0.0 +fr - it 1 290 0.0 0.0 +fr - it 1 291 0.0 0.0 +fr - it 1 292 0.0 0.0 +fr - it 1 293 0.0 0.0 +fr - it 1 294 0.0 0.0 +fr - it 1 295 0.0 0.0 +fr - it 1 296 0.0 0.0 +fr - it 1 297 0.0 0.0 +fr - it 1 298 0.0 0.0 +fr - it 1 299 0.0 0.0 +fr - it 1 300 0.0 0.0 +fr - it 1 301 0.0 0.0 +fr - it 1 302 0.0 0.0 +fr - it 1 303 0.0 0.0 +fr - it 1 304 0.0 0.0 +fr - it 1 305 0.0 0.0 +fr - it 1 306 0.0 0.0 +fr - it 1 307 0.0 0.0 +fr - it 1 308 0.0 0.0 +fr - it 1 309 0.0 0.0 +fr - it 1 310 0.0 0.0 +fr - it 1 311 0.0 0.0 +fr - it 1 312 0.0 0.0 +fr - it 1 313 0.0 0.0 +fr - it 1 314 0.0 0.0 +fr - it 1 315 0.0 0.0 +fr - it 1 316 0.0 0.0 +fr - it 1 317 0.0 0.0 +fr - it 1 318 0.0 0.0 +fr - it 1 319 0.0 0.0 +fr - it 1 320 0.0 0.0 +fr - it 1 321 0.0 0.0 +fr - it 1 322 0.0 0.0 +fr - it 1 323 0.0 0.0 +fr - it 1 324 0.0 0.0 +fr - it 1 325 0.0 0.0 +fr - it 1 326 0.0 0.0 +fr - it 1 327 0.0 0.0 +fr - it 1 328 0.0 0.0 +fr - it 1 329 0.0 0.0 +fr - it 1 330 0.0 0.0 +fr - it 1 331 0.0 0.0 +fr - it 1 332 0.0 0.0 +fr - it 1 333 0.0 0.0 +fr - it 1 334 0.0 0.0 +fr - it 1 335 0.0 0.0 +fr - it 1 336 0.0 0.0 +de - fr 2 1 0.0 0.0 +de - fr 2 2 0.0 0.0 +de - fr 2 3 0.0 0.0 +de - fr 2 4 0.0 0.0 +de - fr 2 5 0.0 0.0 +de - fr 2 6 0.0 0.0 +de - fr 2 7 0.0 0.0 +de - fr 2 8 0.0 0.0 +de - fr 2 9 0.0 0.0 +de - fr 2 10 0.0 0.0 +de - fr 2 11 0.0 0.0 +de - fr 2 12 0.0 0.0 +de - fr 2 13 0.0 0.0 +de - fr 2 14 0.0 0.0 +de - fr 2 15 0.0 0.0 +de - fr 2 16 0.0 0.0 +de - fr 2 17 0.0 0.0 +de - fr 2 18 0.0 0.0 +de - fr 2 19 0.0 0.0 +de - fr 2 20 0.0 0.0 +de - fr 2 21 0.0 0.0 +de - fr 2 22 0.0 0.0 +de - fr 2 23 0.0 0.0 +de - fr 2 24 0.0 0.0 +de - fr 2 25 0.0 0.0 +de - fr 2 26 0.0 0.0 +de - fr 2 27 0.0 0.0 +de - fr 2 28 0.0 0.0 +de - fr 2 29 0.0 0.0 +de - fr 2 30 0.0 0.0 +de - fr 2 31 0.0 0.0 +de - fr 2 32 0.0 0.0 +de - fr 2 33 0.0 0.0 +de - fr 2 34 0.0 0.0 +de - fr 2 35 0.0 0.0 +de - fr 2 36 0.0 0.0 +de - fr 2 37 0.0 0.0 +de - fr 2 38 0.0 0.0 +de - fr 2 39 0.0 0.0 +de - fr 2 40 0.0 0.0 +de - fr 2 41 0.0 0.0 +de - fr 2 42 0.0 0.0 +de - fr 2 43 0.0 0.0 +de - fr 2 44 0.0 0.0 +de - fr 2 45 0.0 0.0 +de - fr 2 46 0.0 0.0 +de - fr 2 47 0.0 0.0 +de - fr 2 48 0.0 0.0 +de - fr 2 49 0.0 0.0 +de - fr 2 50 0.0 0.0 +de - fr 2 51 0.0 0.0 +de - fr 2 52 0.0 0.0 +de - fr 2 53 0.0 0.0 +de - fr 2 54 0.0 0.0 +de - fr 2 55 0.0 0.0 +de - fr 2 56 0.0 0.0 +de - fr 2 57 0.0 0.0 +de - fr 2 58 0.0 0.0 +de - fr 2 59 0.0 0.0 +de - fr 2 60 0.0 0.0 +de - fr 2 61 0.0 0.0 +de - fr 2 62 0.0 0.0 +de - fr 2 63 0.0 0.0 +de - fr 2 64 0.0 0.0 +de - fr 2 65 0.0 0.0 +de - fr 2 66 0.0 0.0 +de - fr 2 67 0.0 0.0 +de - fr 2 68 0.0 0.0 +de - fr 2 69 0.0 0.0 +de - fr 2 70 0.0 0.0 +de - fr 2 71 0.0 0.0 +de - fr 2 72 0.0 0.0 +de - fr 2 73 0.0 0.0 +de - fr 2 74 0.0 0.0 +de - fr 2 75 0.0 0.0 +de - fr 2 76 0.0 0.0 +de - fr 2 77 0.0 0.0 +de - fr 2 78 0.0 0.0 +de - fr 2 79 0.0 0.0 +de - fr 2 80 0.0 0.0 +de - fr 2 81 0.0 0.0 +de - fr 2 82 0.0 0.0 +de - fr 2 83 0.0 0.0 +de - fr 2 84 0.0 0.0 +de - fr 2 85 0.0 0.0 +de - fr 2 86 0.0 0.0 +de - fr 2 87 0.0 0.0 +de - fr 2 88 0.0 0.0 +de - fr 2 89 0.0 0.0 +de - fr 2 90 0.0 0.0 +de - fr 2 91 0.0 0.0 +de - fr 2 92 0.0 0.0 +de - fr 2 93 0.0 0.0 +de - fr 2 94 0.0 0.0 +de - fr 2 95 0.0 0.0 +de - fr 2 96 0.0 0.0 +de - fr 2 97 0.0 0.0 +de - fr 2 98 0.0 0.0 +de - fr 2 99 0.0 0.0 +de - fr 2 100 0.0 0.0 +de - fr 2 101 0.0 0.0 +de - fr 2 102 0.0 0.0 +de - fr 2 103 0.0 0.0 +de - fr 2 104 0.0 0.0 +de - fr 2 105 0.0 0.0 +de - fr 2 106 0.0 0.0 +de - fr 2 107 0.0 0.0 +de - fr 2 108 0.0 0.0 +de - fr 2 109 0.0 0.0 +de - fr 2 110 0.0 0.0 +de - fr 2 111 0.0 0.0 +de - fr 2 112 0.0 0.0 +de - fr 2 113 0.0 0.0 +de - fr 2 114 0.0 0.0 +de - fr 2 115 0.0 0.0 +de - fr 2 116 0.0 0.0 +de - fr 2 117 0.0 0.0 +de - fr 2 118 0.0 0.0 +de - fr 2 119 0.0 0.0 +de - fr 2 120 0.0 0.0 +de - fr 2 121 0.0 0.0 +de - fr 2 122 0.0 0.0 +de - fr 2 123 0.0 0.0 +de - fr 2 124 0.0 0.0 +de - fr 2 125 0.0 0.0 +de - fr 2 126 0.0 0.0 +de - fr 2 127 0.0 0.0 +de - fr 2 128 0.0 0.0 +de - fr 2 129 0.0 0.0 +de - fr 2 130 0.0 0.0 +de - fr 2 131 0.0 0.0 +de - fr 2 132 0.0 0.0 +de - fr 2 133 0.0 0.0 +de - fr 2 134 0.0 0.0 +de - fr 2 135 0.0 0.0 +de - fr 2 136 0.0 0.0 +de - fr 2 137 0.0 0.0 +de - fr 2 138 0.0 0.0 +de - fr 2 139 0.0 0.0 +de - fr 2 140 0.0 0.0 +de - fr 2 141 0.0 0.0 +de - fr 2 142 0.0 0.0 +de - fr 2 143 0.0 0.0 +de - fr 2 144 0.0 0.0 +de - fr 2 145 0.0 0.0 +de - fr 2 146 0.0 0.0 +de - fr 2 147 0.0 0.0 +de - fr 2 148 0.0 0.0 +de - fr 2 149 0.0 0.0 +de - fr 2 150 0.0 0.0 +de - fr 2 151 0.0 0.0 +de - fr 2 152 0.0 0.0 +de - fr 2 153 0.0 0.0 +de - fr 2 154 0.0 0.0 +de - fr 2 155 0.0 0.0 +de - fr 2 156 0.0 0.0 +de - fr 2 157 0.0 0.0 +de - fr 2 158 0.0 0.0 +de - fr 2 159 0.0 0.0 +de - fr 2 160 0.0 0.0 +de - fr 2 161 0.0 0.0 +de - fr 2 162 0.0 0.0 +de - fr 2 163 0.0 0.0 +de - fr 2 164 0.0 0.0 +de - fr 2 165 0.0 0.0 +de - fr 2 166 0.0 0.0 +de - fr 2 167 0.0 0.0 +de - fr 2 168 0.0 0.0 +de - fr 2 169 0.0 0.0 +de - fr 2 170 0.0 0.0 +de - fr 2 171 0.0 0.0 +de - fr 2 172 0.0 0.0 +de - fr 2 173 0.0 0.0 +de - fr 2 174 0.0 0.0 +de - fr 2 175 0.0 0.0 +de - fr 2 176 0.0 0.0 +de - fr 2 177 0.0 0.0 +de - fr 2 178 0.0 0.0 +de - fr 2 179 0.0 0.0 +de - fr 2 180 0.0 0.0 +de - fr 2 181 0.0 0.0 +de - fr 2 182 0.0 0.0 +de - fr 2 183 0.0 0.0 +de - fr 2 184 0.0 0.0 +de - fr 2 185 0.0 0.0 +de - fr 2 186 0.0 0.0 +de - fr 2 187 0.0 0.0 +de - fr 2 188 0.0 0.0 +de - fr 2 189 0.0 0.0 +de - fr 2 190 0.0 0.0 +de - fr 2 191 0.0 0.0 +de - fr 2 192 0.0 0.0 +de - fr 2 193 0.0 0.0 +de - fr 2 194 0.0 0.0 +de - fr 2 195 0.0 0.0 +de - fr 2 196 0.0 0.0 +de - fr 2 197 0.0 0.0 +de - fr 2 198 0.0 0.0 +de - fr 2 199 0.0 0.0 +de - fr 2 200 0.0 0.0 +de - fr 2 201 0.0 0.0 +de - fr 2 202 0.0 0.0 +de - fr 2 203 0.0 0.0 +de - fr 2 204 0.0 0.0 +de - fr 2 205 0.0 0.0 +de - fr 2 206 0.0 0.0 +de - fr 2 207 0.0 0.0 +de - fr 2 208 0.0 0.0 +de - fr 2 209 0.0 0.0 +de - fr 2 210 0.0 0.0 +de - fr 2 211 0.0 0.0 +de - fr 2 212 0.0 0.0 +de - fr 2 213 0.0 0.0 +de - fr 2 214 0.0 0.0 +de - fr 2 215 0.0 0.0 +de - fr 2 216 0.0 0.0 +de - fr 2 217 0.0 0.0 +de - fr 2 218 0.0 0.0 +de - fr 2 219 0.0 0.0 +de - fr 2 220 0.0 0.0 +de - fr 2 221 0.0 0.0 +de - fr 2 222 0.0 0.0 +de - fr 2 223 0.0 0.0 +de - fr 2 224 0.0 0.0 +de - fr 2 225 0.0 0.0 +de - fr 2 226 0.0 0.0 +de - fr 2 227 0.0 0.0 +de - fr 2 228 0.0 0.0 +de - fr 2 229 0.0 0.0 +de - fr 2 230 0.0 0.0 +de - fr 2 231 0.0 0.0 +de - fr 2 232 0.0 0.0 +de - fr 2 233 0.0 0.0 +de - fr 2 234 0.0 0.0 +de - fr 2 235 0.0 0.0 +de - fr 2 236 0.0 0.0 +de - fr 2 237 0.0 0.0 +de - fr 2 238 0.0 0.0 +de - fr 2 239 0.0 0.0 +de - fr 2 240 0.0 0.0 +de - fr 2 241 0.0 0.0 +de - fr 2 242 0.0 0.0 +de - fr 2 243 0.0 0.0 +de - fr 2 244 0.0 0.0 +de - fr 2 245 0.0 0.0 +de - fr 2 246 0.0 0.0 +de - fr 2 247 0.0 0.0 +de - fr 2 248 0.0 0.0 +de - fr 2 249 0.0 0.0 +de - fr 2 250 0.0 0.0 +de - fr 2 251 0.0 0.0 +de - fr 2 252 0.0 0.0 +de - fr 2 253 0.0 0.0 +de - fr 2 254 0.0 0.0 +de - fr 2 255 0.0 0.0 +de - fr 2 256 0.0 0.0 +de - fr 2 257 0.0 0.0 +de - fr 2 258 0.0 0.0 +de - fr 2 259 0.0 0.0 +de - fr 2 260 0.0 0.0 +de - fr 2 261 0.0 0.0 +de - fr 2 262 0.0 0.0 +de - fr 2 263 0.0 0.0 +de - fr 2 264 0.0 0.0 +de - fr 2 265 0.0 0.0 +de - fr 2 266 0.0 0.0 +de - fr 2 267 0.0 0.0 +de - fr 2 268 0.0 0.0 +de - fr 2 269 0.0 0.0 +de - fr 2 270 0.0 0.0 +de - fr 2 271 0.0 0.0 +de - fr 2 272 0.0 0.0 +de - fr 2 273 0.0 0.0 +de - fr 2 274 0.0 0.0 +de - fr 2 275 0.0 0.0 +de - fr 2 276 0.0 0.0 +de - fr 2 277 0.0 0.0 +de - fr 2 278 0.0 0.0 +de - fr 2 279 0.0 0.0 +de - fr 2 280 0.0 0.0 +de - fr 2 281 0.0 0.0 +de - fr 2 282 0.0 0.0 +de - fr 2 283 0.0 0.0 +de - fr 2 284 0.0 0.0 +de - fr 2 285 0.0 0.0 +de - fr 2 286 0.0 0.0 +de - fr 2 287 0.0 0.0 +de - fr 2 288 0.0 0.0 +de - fr 2 289 0.0 0.0 +de - fr 2 290 0.0 0.0 +de - fr 2 291 0.0 0.0 +de - fr 2 292 0.0 0.0 +de - fr 2 293 0.0 0.0 +de - fr 2 294 0.0 0.0 +de - fr 2 295 0.0 0.0 +de - fr 2 296 0.0 0.0 +de - fr 2 297 0.0 0.0 +de - fr 2 298 0.0 0.0 +de - fr 2 299 0.0 0.0 +de - fr 2 300 0.0 0.0 +de - fr 2 301 0.0 0.0 +de - fr 2 302 0.0 0.0 +de - fr 2 303 0.0 0.0 +de - fr 2 304 0.0 0.0 +de - fr 2 305 0.0 0.0 +de - fr 2 306 0.0 0.0 +de - fr 2 307 0.0 0.0 +de - fr 2 308 0.0 0.0 +de - fr 2 309 0.0 0.0 +de - fr 2 310 0.0 0.0 +de - fr 2 311 0.0 0.0 +de - fr 2 312 0.0 0.0 +de - fr 2 313 0.0 0.0 +de - fr 2 314 0.0 0.0 +de - fr 2 315 0.0 0.0 +de - fr 2 316 0.0 0.0 +de - fr 2 317 0.0 0.0 +de - fr 2 318 0.0 0.0 +de - fr 2 319 0.0 0.0 +de - fr 2 320 0.0 0.0 +de - fr 2 321 0.0 0.0 +de - fr 2 322 0.0 0.0 +de - fr 2 323 0.0 0.0 +de - fr 2 324 0.0 0.0 +de - fr 2 325 0.0 0.0 +de - fr 2 326 0.0 0.0 +de - fr 2 327 0.0 0.0 +de - fr 2 328 0.0 0.0 +de - fr 2 329 0.0 0.0 +de - fr 2 330 0.0 0.0 +de - fr 2 331 0.0 0.0 +de - fr 2 332 0.0 0.0 +de - fr 2 333 0.0 0.0 +de - fr 2 334 0.0 0.0 +de - fr 2 335 0.0 0.0 +de - fr 2 336 0.0 0.0 +es - fr 2 1 0.0 0.0 +es - fr 2 2 0.0 0.0 +es - fr 2 3 0.0 0.0 +es - fr 2 4 0.0 0.0 +es - fr 2 5 0.0 0.0 +es - fr 2 6 0.0 0.0 +es - fr 2 7 0.0 0.0 +es - fr 2 8 0.0 0.0 +es - fr 2 9 0.0 0.0 +es - fr 2 10 0.0 0.0 +es - fr 2 11 0.0 0.0 +es - fr 2 12 0.0 0.0 +es - fr 2 13 0.0 0.0 +es - fr 2 14 0.0 0.0 +es - fr 2 15 0.0 0.0 +es - fr 2 16 0.0 0.0 +es - fr 2 17 0.0 0.0 +es - fr 2 18 0.0 0.0 +es - fr 2 19 0.0 0.0 +es - fr 2 20 0.0 0.0 +es - fr 2 21 0.0 0.0 +es - fr 2 22 0.0 0.0 +es - fr 2 23 0.0 0.0 +es - fr 2 24 0.0 0.0 +es - fr 2 25 0.0 0.0 +es - fr 2 26 0.0 0.0 +es - fr 2 27 0.0 0.0 +es - fr 2 28 0.0 0.0 +es - fr 2 29 0.0 0.0 +es - fr 2 30 0.0 0.0 +es - fr 2 31 0.0 0.0 +es - fr 2 32 0.0 0.0 +es - fr 2 33 0.0 0.0 +es - fr 2 34 0.0 0.0 +es - fr 2 35 0.0 0.0 +es - fr 2 36 0.0 0.0 +es - fr 2 37 0.0 0.0 +es - fr 2 38 0.0 0.0 +es - fr 2 39 0.0 0.0 +es - fr 2 40 0.0 0.0 +es - fr 2 41 0.0 0.0 +es - fr 2 42 0.0 0.0 +es - fr 2 43 0.0 0.0 +es - fr 2 44 0.0 0.0 +es - fr 2 45 0.0 0.0 +es - fr 2 46 0.0 0.0 +es - fr 2 47 0.0 0.0 +es - fr 2 48 0.0 0.0 +es - fr 2 49 0.0 0.0 +es - fr 2 50 0.0 0.0 +es - fr 2 51 0.0 0.0 +es - fr 2 52 0.0 0.0 +es - fr 2 53 0.0 0.0 +es - fr 2 54 0.0 0.0 +es - fr 2 55 0.0 0.0 +es - fr 2 56 0.0 0.0 +es - fr 2 57 0.0 0.0 +es - fr 2 58 0.0 0.0 +es - fr 2 59 0.0 0.0 +es - fr 2 60 0.0 0.0 +es - fr 2 61 0.0 0.0 +es - fr 2 62 0.0 0.0 +es - fr 2 63 0.0 0.0 +es - fr 2 64 0.0 0.0 +es - fr 2 65 0.0 0.0 +es - fr 2 66 0.0 0.0 +es - fr 2 67 0.0 0.0 +es - fr 2 68 0.0 0.0 +es - fr 2 69 0.0 0.0 +es - fr 2 70 0.0 0.0 +es - fr 2 71 0.0 0.0 +es - fr 2 72 0.0 0.0 +es - fr 2 73 0.0 0.0 +es - fr 2 74 0.0 0.0 +es - fr 2 75 0.0 0.0 +es - fr 2 76 0.0 0.0 +es - fr 2 77 0.0 0.0 +es - fr 2 78 0.0 0.0 +es - fr 2 79 0.0 0.0 +es - fr 2 80 0.0 0.0 +es - fr 2 81 0.0 0.0 +es - fr 2 82 0.0 0.0 +es - fr 2 83 0.0 0.0 +es - fr 2 84 0.0 0.0 +es - fr 2 85 0.0 0.0 +es - fr 2 86 0.0 0.0 +es - fr 2 87 0.0 0.0 +es - fr 2 88 0.0 0.0 +es - fr 2 89 0.0 0.0 +es - fr 2 90 0.0 0.0 +es - fr 2 91 0.0 0.0 +es - fr 2 92 0.0 0.0 +es - fr 2 93 0.0 0.0 +es - fr 2 94 0.0 0.0 +es - fr 2 95 0.0 0.0 +es - fr 2 96 0.0 0.0 +es - fr 2 97 0.0 0.0 +es - fr 2 98 0.0 0.0 +es - fr 2 99 0.0 0.0 +es - fr 2 100 0.0 0.0 +es - fr 2 101 0.0 0.0 +es - fr 2 102 0.0 0.0 +es - fr 2 103 0.0 0.0 +es - fr 2 104 0.0 0.0 +es - fr 2 105 0.0 0.0 +es - fr 2 106 0.0 0.0 +es - fr 2 107 0.0 0.0 +es - fr 2 108 0.0 0.0 +es - fr 2 109 0.0 0.0 +es - fr 2 110 0.0 0.0 +es - fr 2 111 0.0 0.0 +es - fr 2 112 0.0 0.0 +es - fr 2 113 0.0 0.0 +es - fr 2 114 0.0 0.0 +es - fr 2 115 0.0 0.0 +es - fr 2 116 0.0 0.0 +es - fr 2 117 0.0 0.0 +es - fr 2 118 0.0 0.0 +es - fr 2 119 0.0 0.0 +es - fr 2 120 0.0 0.0 +es - fr 2 121 0.0 0.0 +es - fr 2 122 0.0 0.0 +es - fr 2 123 0.0 0.0 +es - fr 2 124 0.0 0.0 +es - fr 2 125 0.0 0.0 +es - fr 2 126 0.0 0.0 +es - fr 2 127 0.0 0.0 +es - fr 2 128 0.0 0.0 +es - fr 2 129 0.0 0.0 +es - fr 2 130 0.0 0.0 +es - fr 2 131 0.0 0.0 +es - fr 2 132 0.0 0.0 +es - fr 2 133 0.0 0.0 +es - fr 2 134 0.0 0.0 +es - fr 2 135 0.0 0.0 +es - fr 2 136 0.0 0.0 +es - fr 2 137 0.0 0.0 +es - fr 2 138 0.0 0.0 +es - fr 2 139 0.0 0.0 +es - fr 2 140 0.0 0.0 +es - fr 2 141 0.0 0.0 +es - fr 2 142 0.0 0.0 +es - fr 2 143 0.0 0.0 +es - fr 2 144 0.0 0.0 +es - fr 2 145 0.0 0.0 +es - fr 2 146 0.0 0.0 +es - fr 2 147 0.0 0.0 +es - fr 2 148 0.0 0.0 +es - fr 2 149 0.0 0.0 +es - fr 2 150 0.0 0.0 +es - fr 2 151 0.0 0.0 +es - fr 2 152 0.0 0.0 +es - fr 2 153 0.0 0.0 +es - fr 2 154 0.0 0.0 +es - fr 2 155 0.0 0.0 +es - fr 2 156 0.0 0.0 +es - fr 2 157 0.0 0.0 +es - fr 2 158 0.0 0.0 +es - fr 2 159 0.0 0.0 +es - fr 2 160 0.0 0.0 +es - fr 2 161 0.0 0.0 +es - fr 2 162 0.0 0.0 +es - fr 2 163 0.0 0.0 +es - fr 2 164 0.0 0.0 +es - fr 2 165 0.0 0.0 +es - fr 2 166 0.0 0.0 +es - fr 2 167 0.0 0.0 +es - fr 2 168 0.0 0.0 +es - fr 2 169 0.0 0.0 +es - fr 2 170 0.0 0.0 +es - fr 2 171 0.0 0.0 +es - fr 2 172 0.0 0.0 +es - fr 2 173 0.0 0.0 +es - fr 2 174 0.0 0.0 +es - fr 2 175 0.0 0.0 +es - fr 2 176 0.0 0.0 +es - fr 2 177 0.0 0.0 +es - fr 2 178 0.0 0.0 +es - fr 2 179 0.0 0.0 +es - fr 2 180 0.0 0.0 +es - fr 2 181 0.0 0.0 +es - fr 2 182 0.0 0.0 +es - fr 2 183 0.0 0.0 +es - fr 2 184 0.0 0.0 +es - fr 2 185 0.0 0.0 +es - fr 2 186 0.0 0.0 +es - fr 2 187 0.0 0.0 +es - fr 2 188 0.0 0.0 +es - fr 2 189 0.0 0.0 +es - fr 2 190 0.0 0.0 +es - fr 2 191 0.0 0.0 +es - fr 2 192 0.0 0.0 +es - fr 2 193 0.0 0.0 +es - fr 2 194 0.0 0.0 +es - fr 2 195 0.0 0.0 +es - fr 2 196 0.0 0.0 +es - fr 2 197 0.0 0.0 +es - fr 2 198 0.0 0.0 +es - fr 2 199 0.0 0.0 +es - fr 2 200 0.0 0.0 +es - fr 2 201 0.0 0.0 +es - fr 2 202 0.0 0.0 +es - fr 2 203 0.0 0.0 +es - fr 2 204 0.0 0.0 +es - fr 2 205 0.0 0.0 +es - fr 2 206 0.0 0.0 +es - fr 2 207 0.0 0.0 +es - fr 2 208 0.0 0.0 +es - fr 2 209 0.0 0.0 +es - fr 2 210 0.0 0.0 +es - fr 2 211 0.0 0.0 +es - fr 2 212 0.0 0.0 +es - fr 2 213 0.0 0.0 +es - fr 2 214 0.0 0.0 +es - fr 2 215 0.0 0.0 +es - fr 2 216 0.0 0.0 +es - fr 2 217 0.0 0.0 +es - fr 2 218 0.0 0.0 +es - fr 2 219 0.0 0.0 +es - fr 2 220 0.0 0.0 +es - fr 2 221 0.0 0.0 +es - fr 2 222 0.0 0.0 +es - fr 2 223 0.0 0.0 +es - fr 2 224 0.0 0.0 +es - fr 2 225 0.0 0.0 +es - fr 2 226 0.0 0.0 +es - fr 2 227 0.0 0.0 +es - fr 2 228 0.0 0.0 +es - fr 2 229 0.0 0.0 +es - fr 2 230 0.0 0.0 +es - fr 2 231 0.0 0.0 +es - fr 2 232 0.0 0.0 +es - fr 2 233 0.0 0.0 +es - fr 2 234 0.0 0.0 +es - fr 2 235 0.0 0.0 +es - fr 2 236 0.0 0.0 +es - fr 2 237 0.0 0.0 +es - fr 2 238 0.0 0.0 +es - fr 2 239 0.0 0.0 +es - fr 2 240 0.0 0.0 +es - fr 2 241 0.0 0.0 +es - fr 2 242 0.0 0.0 +es - fr 2 243 0.0 0.0 +es - fr 2 244 0.0 0.0 +es - fr 2 245 0.0 0.0 +es - fr 2 246 0.0 0.0 +es - fr 2 247 0.0 0.0 +es - fr 2 248 0.0 0.0 +es - fr 2 249 0.0 0.0 +es - fr 2 250 0.0 0.0 +es - fr 2 251 0.0 0.0 +es - fr 2 252 0.0 0.0 +es - fr 2 253 0.0 0.0 +es - fr 2 254 0.0 0.0 +es - fr 2 255 0.0 0.0 +es - fr 2 256 0.0 0.0 +es - fr 2 257 0.0 0.0 +es - fr 2 258 0.0 0.0 +es - fr 2 259 0.0 0.0 +es - fr 2 260 0.0 0.0 +es - fr 2 261 0.0 0.0 +es - fr 2 262 0.0 0.0 +es - fr 2 263 0.0 0.0 +es - fr 2 264 0.0 0.0 +es - fr 2 265 0.0 0.0 +es - fr 2 266 0.0 0.0 +es - fr 2 267 0.0 0.0 +es - fr 2 268 0.0 0.0 +es - fr 2 269 0.0 0.0 +es - fr 2 270 0.0 0.0 +es - fr 2 271 0.0 0.0 +es - fr 2 272 0.0 0.0 +es - fr 2 273 0.0 0.0 +es - fr 2 274 0.0 0.0 +es - fr 2 275 0.0 0.0 +es - fr 2 276 0.0 0.0 +es - fr 2 277 0.0 0.0 +es - fr 2 278 0.0 0.0 +es - fr 2 279 0.0 0.0 +es - fr 2 280 0.0 0.0 +es - fr 2 281 0.0 0.0 +es - fr 2 282 0.0 0.0 +es - fr 2 283 0.0 0.0 +es - fr 2 284 0.0 0.0 +es - fr 2 285 0.0 0.0 +es - fr 2 286 0.0 0.0 +es - fr 2 287 0.0 0.0 +es - fr 2 288 0.0 0.0 +es - fr 2 289 0.0 0.0 +es - fr 2 290 0.0 0.0 +es - fr 2 291 0.0 0.0 +es - fr 2 292 0.0 0.0 +es - fr 2 293 0.0 0.0 +es - fr 2 294 0.0 0.0 +es - fr 2 295 0.0 0.0 +es - fr 2 296 0.0 0.0 +es - fr 2 297 0.0 0.0 +es - fr 2 298 0.0 0.0 +es - fr 2 299 0.0 0.0 +es - fr 2 300 0.0 0.0 +es - fr 2 301 0.0 0.0 +es - fr 2 302 0.0 0.0 +es - fr 2 303 0.0 0.0 +es - fr 2 304 0.0 0.0 +es - fr 2 305 0.0 0.0 +es - fr 2 306 0.0 0.0 +es - fr 2 307 0.0 0.0 +es - fr 2 308 0.0 0.0 +es - fr 2 309 0.0 0.0 +es - fr 2 310 0.0 0.0 +es - fr 2 311 0.0 0.0 +es - fr 2 312 0.0 0.0 +es - fr 2 313 0.0 0.0 +es - fr 2 314 0.0 0.0 +es - fr 2 315 0.0 0.0 +es - fr 2 316 0.0 0.0 +es - fr 2 317 0.0 0.0 +es - fr 2 318 0.0 0.0 +es - fr 2 319 0.0 0.0 +es - fr 2 320 0.0 0.0 +es - fr 2 321 0.0 0.0 +es - fr 2 322 0.0 0.0 +es - fr 2 323 0.0 0.0 +es - fr 2 324 0.0 0.0 +es - fr 2 325 0.0 0.0 +es - fr 2 326 0.0 0.0 +es - fr 2 327 0.0 0.0 +es - fr 2 328 0.0 0.0 +es - fr 2 329 0.0 0.0 +es - fr 2 330 0.0 0.0 +es - fr 2 331 0.0 0.0 +es - fr 2 332 0.0 0.0 +es - fr 2 333 0.0 0.0 +es - fr 2 334 0.0 0.0 +es - fr 2 335 0.0 0.0 +es - fr 2 336 0.0 0.0 +fr - it 2 1 0.0 0.0 +fr - it 2 2 0.0 0.0 +fr - it 2 3 0.0 0.0 +fr - it 2 4 0.0 0.0 +fr - it 2 5 0.0 0.0 +fr - it 2 6 0.0 0.0 +fr - it 2 7 0.0 0.0 +fr - it 2 8 0.0 0.0 +fr - it 2 9 0.0 0.0 +fr - it 2 10 0.0 0.0 +fr - it 2 11 0.0 0.0 +fr - it 2 12 0.0 0.0 +fr - it 2 13 0.0 0.0 +fr - it 2 14 0.0 0.0 +fr - it 2 15 0.0 0.0 +fr - it 2 16 0.0 0.0 +fr - it 2 17 0.0 0.0 +fr - it 2 18 0.0 0.0 +fr - it 2 19 0.0 0.0 +fr - it 2 20 0.0 0.0 +fr - it 2 21 0.0 0.0 +fr - it 2 22 0.0 0.0 +fr - it 2 23 0.0 0.0 +fr - it 2 24 0.0 0.0 +fr - it 2 25 0.0 0.0 +fr - it 2 26 0.0 0.0 +fr - it 2 27 0.0 0.0 +fr - it 2 28 0.0 0.0 +fr - it 2 29 0.0 0.0 +fr - it 2 30 0.0 0.0 +fr - it 2 31 0.0 0.0 +fr - it 2 32 0.0 0.0 +fr - it 2 33 0.0 0.0 +fr - it 2 34 0.0 0.0 +fr - it 2 35 0.0 0.0 +fr - it 2 36 0.0 0.0 +fr - it 2 37 0.0 0.0 +fr - it 2 38 0.0 0.0 +fr - it 2 39 0.0 0.0 +fr - it 2 40 0.0 0.0 +fr - it 2 41 0.0 0.0 +fr - it 2 42 0.0 0.0 +fr - it 2 43 0.0 0.0 +fr - it 2 44 0.0 0.0 +fr - it 2 45 0.0 0.0 +fr - it 2 46 0.0 0.0 +fr - it 2 47 0.0 0.0 +fr - it 2 48 0.0 0.0 +fr - it 2 49 0.0 0.0 +fr - it 2 50 0.0 0.0 +fr - it 2 51 0.0 0.0 +fr - it 2 52 0.0 0.0 +fr - it 2 53 0.0 0.0 +fr - it 2 54 0.0 0.0 +fr - it 2 55 0.0 0.0 +fr - it 2 56 0.0 0.0 +fr - it 2 57 0.0 0.0 +fr - it 2 58 0.0 0.0 +fr - it 2 59 0.0 0.0 +fr - it 2 60 0.0 0.0 +fr - it 2 61 0.0 0.0 +fr - it 2 62 0.0 0.0 +fr - it 2 63 0.0 0.0 +fr - it 2 64 0.0 0.0 +fr - it 2 65 0.0 0.0 +fr - it 2 66 0.0 0.0 +fr - it 2 67 0.0 0.0 +fr - it 2 68 0.0 0.0 +fr - it 2 69 0.0 0.0 +fr - it 2 70 0.0 0.0 +fr - it 2 71 0.0 0.0 +fr - it 2 72 0.0 0.0 +fr - it 2 73 0.0 0.0 +fr - it 2 74 0.0 0.0 +fr - it 2 75 0.0 0.0 +fr - it 2 76 0.0 0.0 +fr - it 2 77 0.0 0.0 +fr - it 2 78 0.0 0.0 +fr - it 2 79 0.0 0.0 +fr - it 2 80 0.0 0.0 +fr - it 2 81 0.0 0.0 +fr - it 2 82 0.0 0.0 +fr - it 2 83 0.0 0.0 +fr - it 2 84 0.0 0.0 +fr - it 2 85 0.0 0.0 +fr - it 2 86 0.0 0.0 +fr - it 2 87 0.0 0.0 +fr - it 2 88 0.0 0.0 +fr - it 2 89 0.0 0.0 +fr - it 2 90 0.0 0.0 +fr - it 2 91 0.0 0.0 +fr - it 2 92 0.0 0.0 +fr - it 2 93 0.0 0.0 +fr - it 2 94 0.0 0.0 +fr - it 2 95 0.0 0.0 +fr - it 2 96 0.0 0.0 +fr - it 2 97 0.0 0.0 +fr - it 2 98 0.0 0.0 +fr - it 2 99 0.0 0.0 +fr - it 2 100 0.0 0.0 +fr - it 2 101 0.0 0.0 +fr - it 2 102 0.0 0.0 +fr - it 2 103 0.0 0.0 +fr - it 2 104 0.0 0.0 +fr - it 2 105 0.0 0.0 +fr - it 2 106 0.0 0.0 +fr - it 2 107 0.0 0.0 +fr - it 2 108 0.0 0.0 +fr - it 2 109 0.0 0.0 +fr - it 2 110 0.0 0.0 +fr - it 2 111 0.0 0.0 +fr - it 2 112 0.0 0.0 +fr - it 2 113 0.0 0.0 +fr - it 2 114 0.0 0.0 +fr - it 2 115 0.0 0.0 +fr - it 2 116 0.0 0.0 +fr - it 2 117 0.0 0.0 +fr - it 2 118 0.0 0.0 +fr - it 2 119 0.0 0.0 +fr - it 2 120 0.0 0.0 +fr - it 2 121 0.0 0.0 +fr - it 2 122 0.0 0.0 +fr - it 2 123 0.0 0.0 +fr - it 2 124 0.0 0.0 +fr - it 2 125 0.0 0.0 +fr - it 2 126 0.0 0.0 +fr - it 2 127 0.0 0.0 +fr - it 2 128 0.0 0.0 +fr - it 2 129 0.0 0.0 +fr - it 2 130 0.0 0.0 +fr - it 2 131 0.0 0.0 +fr - it 2 132 0.0 0.0 +fr - it 2 133 0.0 0.0 +fr - it 2 134 0.0 0.0 +fr - it 2 135 0.0 0.0 +fr - it 2 136 0.0 0.0 +fr - it 2 137 0.0 0.0 +fr - it 2 138 0.0 0.0 +fr - it 2 139 0.0 0.0 +fr - it 2 140 0.0 0.0 +fr - it 2 141 0.0 0.0 +fr - it 2 142 0.0 0.0 +fr - it 2 143 0.0 0.0 +fr - it 2 144 0.0 0.0 +fr - it 2 145 0.0 0.0 +fr - it 2 146 0.0 0.0 +fr - it 2 147 0.0 0.0 +fr - it 2 148 0.0 0.0 +fr - it 2 149 0.0 0.0 +fr - it 2 150 0.0 0.0 +fr - it 2 151 0.0 0.0 +fr - it 2 152 0.0 0.0 +fr - it 2 153 0.0 0.0 +fr - it 2 154 0.0 0.0 +fr - it 2 155 0.0 0.0 +fr - it 2 156 0.0 0.0 +fr - it 2 157 0.0 0.0 +fr - it 2 158 0.0 0.0 +fr - it 2 159 0.0 0.0 +fr - it 2 160 0.0 0.0 +fr - it 2 161 0.0 0.0 +fr - it 2 162 0.0 0.0 +fr - it 2 163 0.0 0.0 +fr - it 2 164 0.0 0.0 +fr - it 2 165 0.0 0.0 +fr - it 2 166 0.0 0.0 +fr - it 2 167 0.0 0.0 +fr - it 2 168 0.0 0.0 +fr - it 2 169 0.0 0.0 +fr - it 2 170 0.0 0.0 +fr - it 2 171 0.0 0.0 +fr - it 2 172 0.0 0.0 +fr - it 2 173 0.0 0.0 +fr - it 2 174 0.0 0.0 +fr - it 2 175 0.0 0.0 +fr - it 2 176 0.0 0.0 +fr - it 2 177 0.0 0.0 +fr - it 2 178 0.0 0.0 +fr - it 2 179 0.0 0.0 +fr - it 2 180 0.0 0.0 +fr - it 2 181 0.0 0.0 +fr - it 2 182 0.0 0.0 +fr - it 2 183 0.0 0.0 +fr - it 2 184 0.0 0.0 +fr - it 2 185 0.0 0.0 +fr - it 2 186 0.0 0.0 +fr - it 2 187 0.0 0.0 +fr - it 2 188 0.0 0.0 +fr - it 2 189 0.0 0.0 +fr - it 2 190 0.0 0.0 +fr - it 2 191 0.0 0.0 +fr - it 2 192 0.0 0.0 +fr - it 2 193 0.0 0.0 +fr - it 2 194 0.0 0.0 +fr - it 2 195 0.0 0.0 +fr - it 2 196 0.0 0.0 +fr - it 2 197 0.0 0.0 +fr - it 2 198 0.0 0.0 +fr - it 2 199 0.0 0.0 +fr - it 2 200 0.0 0.0 +fr - it 2 201 0.0 0.0 +fr - it 2 202 0.0 0.0 +fr - it 2 203 0.0 0.0 +fr - it 2 204 0.0 0.0 +fr - it 2 205 0.0 0.0 +fr - it 2 206 0.0 0.0 +fr - it 2 207 0.0 0.0 +fr - it 2 208 0.0 0.0 +fr - it 2 209 0.0 0.0 +fr - it 2 210 0.0 0.0 +fr - it 2 211 0.0 0.0 +fr - it 2 212 0.0 0.0 +fr - it 2 213 0.0 0.0 +fr - it 2 214 0.0 0.0 +fr - it 2 215 0.0 0.0 +fr - it 2 216 0.0 0.0 +fr - it 2 217 0.0 0.0 +fr - it 2 218 0.0 0.0 +fr - it 2 219 0.0 0.0 +fr - it 2 220 0.0 0.0 +fr - it 2 221 0.0 0.0 +fr - it 2 222 0.0 0.0 +fr - it 2 223 0.0 0.0 +fr - it 2 224 0.0 0.0 +fr - it 2 225 0.0 0.0 +fr - it 2 226 0.0 0.0 +fr - it 2 227 0.0 0.0 +fr - it 2 228 0.0 0.0 +fr - it 2 229 0.0 0.0 +fr - it 2 230 0.0 0.0 +fr - it 2 231 0.0 0.0 +fr - it 2 232 0.0 0.0 +fr - it 2 233 0.0 0.0 +fr - it 2 234 0.0 0.0 +fr - it 2 235 0.0 0.0 +fr - it 2 236 0.0 0.0 +fr - it 2 237 0.0 0.0 +fr - it 2 238 0.0 0.0 +fr - it 2 239 0.0 0.0 +fr - it 2 240 0.0 0.0 +fr - it 2 241 0.0 0.0 +fr - it 2 242 0.0 0.0 +fr - it 2 243 0.0 0.0 +fr - it 2 244 0.0 0.0 +fr - it 2 245 0.0 0.0 +fr - it 2 246 0.0 0.0 +fr - it 2 247 0.0 0.0 +fr - it 2 248 0.0 0.0 +fr - it 2 249 0.0 0.0 +fr - it 2 250 0.0 0.0 +fr - it 2 251 0.0 0.0 +fr - it 2 252 0.0 0.0 +fr - it 2 253 0.0 0.0 +fr - it 2 254 0.0 0.0 +fr - it 2 255 0.0 0.0 +fr - it 2 256 0.0 0.0 +fr - it 2 257 0.0 0.0 +fr - it 2 258 0.0 0.0 +fr - it 2 259 0.0 0.0 +fr - it 2 260 0.0 0.0 +fr - it 2 261 0.0 0.0 +fr - it 2 262 0.0 0.0 +fr - it 2 263 0.0 0.0 +fr - it 2 264 0.0 0.0 +fr - it 2 265 0.0 0.0 +fr - it 2 266 0.0 0.0 +fr - it 2 267 0.0 0.0 +fr - it 2 268 0.0 0.0 +fr - it 2 269 0.0 0.0 +fr - it 2 270 0.0 0.0 +fr - it 2 271 0.0 0.0 +fr - it 2 272 0.0 0.0 +fr - it 2 273 0.0 0.0 +fr - it 2 274 0.0 0.0 +fr - it 2 275 0.0 0.0 +fr - it 2 276 0.0 0.0 +fr - it 2 277 0.0 0.0 +fr - it 2 278 0.0 0.0 +fr - it 2 279 0.0 0.0 +fr - it 2 280 0.0 0.0 +fr - it 2 281 0.0 0.0 +fr - it 2 282 0.0 0.0 +fr - it 2 283 0.0 0.0 +fr - it 2 284 0.0 0.0 +fr - it 2 285 0.0 0.0 +fr - it 2 286 0.0 0.0 +fr - it 2 287 0.0 0.0 +fr - it 2 288 0.0 0.0 +fr - it 2 289 0.0 0.0 +fr - it 2 290 0.0 0.0 +fr - it 2 291 0.0 0.0 +fr - it 2 292 0.0 0.0 +fr - it 2 293 0.0 0.0 +fr - it 2 294 0.0 0.0 +fr - it 2 295 0.0 0.0 +fr - it 2 296 0.0 0.0 +fr - it 2 297 0.0 0.0 +fr - it 2 298 0.0 0.0 +fr - it 2 299 0.0 0.0 +fr - it 2 300 0.0 0.0 +fr - it 2 301 0.0 0.0 +fr - it 2 302 0.0 0.0 +fr - it 2 303 0.0 0.0 +fr - it 2 304 0.0 0.0 +fr - it 2 305 0.0 0.0 +fr - it 2 306 0.0 0.0 +fr - it 2 307 0.0 0.0 +fr - it 2 308 0.0 0.0 +fr - it 2 309 0.0 0.0 +fr - it 2 310 0.0 0.0 +fr - it 2 311 0.0 0.0 +fr - it 2 312 0.0 0.0 +fr - it 2 313 0.0 0.0 +fr - it 2 314 0.0 0.0 +fr - it 2 315 0.0 0.0 +fr - it 2 316 0.0 0.0 +fr - it 2 317 0.0 0.0 +fr - it 2 318 0.0 0.0 +fr - it 2 319 0.0 0.0 +fr - it 2 320 0.0 0.0 +fr - it 2 321 0.0 0.0 +fr - it 2 322 0.0 0.0 +fr - it 2 323 0.0 0.0 +fr - it 2 324 0.0 0.0 +fr - it 2 325 0.0 0.0 +fr - it 2 326 0.0 0.0 +fr - it 2 327 0.0 0.0 +fr - it 2 328 0.0 0.0 +fr - it 2 329 0.0 0.0 +fr - it 2 330 0.0 0.0 +fr - it 2 331 0.0 0.0 +fr - it 2 332 0.0 0.0 +fr - it 2 333 0.0 0.0 +fr - it 2 334 0.0 0.0 +fr - it 2 335 0.0 0.0 +fr - it 2 336 0.0 0.0 diff --git a/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-06-all.result.tsv b/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-06-all.result.tsv index e5941006e4..e4f1e7095d 100644 --- a/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-06-all.result.tsv +++ b/tests/integration/raw_studies_blueprint/assets/aggregate_links_raw_data/test-06-all.result.tsv @@ -1,365 +1,365 @@ -link timeId time MARG. COST EXP MARG. COST STD MARG. COST MIN MARG. COST MAX CONG. PROB + VALUES -de - fr 1 0.0 0.0 0.0 0.0 0.0 -de - fr 2 0.0 0.0 0.0 0.0 0.0 -de - fr 3 0.0 0.0 0.0 0.0 0.0 -de - fr 4 0.0 0.0 0.0 0.0 0.0 -de - fr 5 0.0 0.0 0.0 0.0 0.0 -de - fr 6 0.0 0.0 0.0 0.0 0.0 -de - fr 7 0.0 0.0 0.0 0.0 0.0 -de - fr 8 0.0 0.0 0.0 0.0 0.0 -de - fr 9 0.0 0.0 0.0 0.0 0.0 -de - fr 10 0.0 0.0 0.0 0.0 0.0 -de - fr 11 0.0 0.0 0.0 0.0 0.0 -de - fr 12 0.0 0.0 0.0 0.0 0.0 -de - fr 13 0.0 0.0 0.0 0.0 0.0 -de - fr 14 0.0 0.0 0.0 0.0 0.0 -de - fr 15 0.0 0.0 0.0 0.0 0.0 -de - fr 16 0.0 0.0 0.0 0.0 0.0 -de - fr 17 0.0 0.0 0.0 0.0 0.0 -de - fr 18 0.0 0.0 0.0 0.0 0.0 -de - fr 19 0.0 0.0 0.0 0.0 0.0 -de - fr 20 0.0 0.0 0.0 0.0 0.0 -de - fr 21 0.0 0.0 0.0 0.0 0.0 -de - fr 22 0.0 0.0 0.0 0.0 0.0 -de - fr 23 0.0 0.0 0.0 0.0 0.0 -de - fr 24 0.0 0.0 0.0 0.0 0.0 -de - fr 25 0.0 0.0 0.0 0.0 0.0 -de - fr 26 0.0 0.0 0.0 0.0 0.0 -de - fr 27 0.0 0.0 0.0 0.0 0.0 -de - fr 28 0.0 0.0 0.0 0.0 0.0 -de - fr 29 0.0 0.0 0.0 0.0 0.0 -de - fr 30 0.0 0.0 0.0 0.0 0.0 -de - fr 31 0.0 0.0 0.0 0.0 0.0 -de - fr 32 0.0 0.0 0.0 0.0 0.0 -de - fr 33 0.0 0.0 0.0 0.0 0.0 -de - fr 34 0.0 0.0 0.0 0.0 0.0 -de - fr 35 0.0 0.0 0.0 0.0 0.0 -de - fr 36 0.0 0.0 0.0 0.0 0.0 -de - fr 37 0.0 0.0 0.0 0.0 0.0 -de - fr 38 0.0 0.0 0.0 0.0 0.0 -de - fr 39 0.0 0.0 0.0 0.0 0.0 -de - fr 40 0.0 0.0 0.0 0.0 0.0 -de - fr 41 0.0 0.0 0.0 0.0 0.0 -de - fr 42 0.0 0.0 0.0 0.0 0.0 -de - fr 43 0.0 0.0 0.0 0.0 0.0 -de - fr 44 0.0 0.0 0.0 0.0 0.0 -de - fr 45 0.0 0.0 0.0 0.0 0.0 -de - fr 46 0.0 0.0 0.0 0.0 0.0 -de - fr 47 0.0 0.0 0.0 0.0 0.0 -de - fr 48 0.0 0.0 0.0 0.0 0.0 -de - fr 49 0.0 0.0 0.0 0.0 0.0 -de - fr 50 0.0 0.0 0.0 0.0 0.0 -de - fr 51 0.0 0.0 0.0 0.0 0.0 -de - fr 52 0.0 0.0 0.0 0.0 0.0 -de - fr 53 0.0 0.0 0.0 0.0 0.0 -de - fr 54 0.0 0.0 0.0 0.0 0.0 -de - fr 55 0.0 0.0 0.0 0.0 0.0 -de - fr 56 0.0 0.0 0.0 0.0 0.0 -de - fr 57 0.0 0.0 0.0 0.0 0.0 -de - fr 58 0.0 0.0 0.0 0.0 0.0 -de - fr 59 0.0 0.0 0.0 0.0 0.0 -de - fr 60 0.0 0.0 0.0 0.0 0.0 -de - fr 61 0.0 0.0 0.0 0.0 0.0 -de - fr 62 0.0 0.0 0.0 0.0 0.0 -de - fr 63 0.0 0.0 0.0 0.0 0.0 -de - fr 64 0.0 0.0 0.0 0.0 0.0 -de - fr 65 0.0 0.0 0.0 0.0 0.0 -de - fr 66 0.0 0.0 0.0 0.0 0.0 -de - fr 67 0.0 0.0 0.0 0.0 0.0 -de - fr 68 0.0 0.0 0.0 0.0 0.0 -de - fr 69 0.0 0.0 0.0 0.0 0.0 -de - fr 70 0.0 0.0 0.0 0.0 0.0 -de - fr 71 0.0 0.0 0.0 0.0 0.0 -de - fr 72 0.0 0.0 0.0 0.0 0.0 -de - fr 73 0.0 0.0 0.0 0.0 0.0 -de - fr 74 0.0 0.0 0.0 0.0 0.0 -de - fr 75 0.0 0.0 0.0 0.0 0.0 -de - fr 76 0.0 0.0 0.0 0.0 0.0 -de - fr 77 0.0 0.0 0.0 0.0 0.0 -de - fr 78 0.0 0.0 0.0 0.0 0.0 -de - fr 79 0.0 0.0 0.0 0.0 0.0 -de - fr 80 0.0 0.0 0.0 0.0 0.0 -de - fr 81 0.0 0.0 0.0 0.0 0.0 -de - fr 82 0.0 0.0 0.0 0.0 0.0 -de - fr 83 0.0 0.0 0.0 0.0 0.0 -de - fr 84 0.0 0.0 0.0 0.0 0.0 -de - fr 85 0.0 0.0 0.0 0.0 0.0 -de - fr 86 0.0 0.0 0.0 0.0 0.0 -de - fr 87 0.0 0.0 0.0 0.0 0.0 -de - fr 88 0.0 0.0 0.0 0.0 0.0 -de - fr 89 0.0 0.0 0.0 0.0 0.0 -de - fr 90 0.0 0.0 0.0 0.0 0.0 -de - fr 91 0.0 0.0 0.0 0.0 0.0 -de - fr 92 0.0 0.0 0.0 0.0 0.0 -de - fr 93 0.0 0.0 0.0 0.0 0.0 -de - fr 94 0.0 0.0 0.0 0.0 0.0 -de - fr 95 0.0 0.0 0.0 0.0 0.0 -de - fr 96 0.0 0.0 0.0 0.0 0.0 -de - fr 97 0.0 0.0 0.0 0.0 0.0 -de - fr 98 0.0 0.0 0.0 0.0 0.0 -de - fr 99 0.0 0.0 0.0 0.0 0.0 -de - fr 100 0.0 0.0 0.0 0.0 0.0 -de - fr 101 0.0 0.0 0.0 0.0 0.0 -de - fr 102 0.0 0.0 0.0 0.0 0.0 -de - fr 103 0.0 0.0 0.0 0.0 0.0 -de - fr 104 0.0 0.0 0.0 0.0 0.0 -de - fr 105 0.0 0.0 0.0 0.0 0.0 -de - fr 106 0.0 0.0 0.0 0.0 0.0 -de - fr 107 0.0 0.0 0.0 0.0 0.0 -de - fr 108 0.0 0.0 0.0 0.0 0.0 -de - fr 109 0.0 0.0 0.0 0.0 0.0 -de - fr 110 0.0 0.0 0.0 0.0 0.0 -de - fr 111 0.0 0.0 0.0 0.0 0.0 -de - fr 112 0.0 0.0 0.0 0.0 0.0 -de - fr 113 0.0 0.0 0.0 0.0 0.0 -de - fr 114 0.0 0.0 0.0 0.0 0.0 -de - fr 115 0.0 0.0 0.0 0.0 0.0 -de - fr 116 0.0 0.0 0.0 0.0 0.0 -de - fr 117 0.0 0.0 0.0 0.0 0.0 -de - fr 118 0.0 0.0 0.0 0.0 0.0 -de - fr 119 0.0 0.0 0.0 0.0 0.0 -de - fr 120 0.0 0.0 0.0 0.0 0.0 -de - fr 121 0.0 0.0 0.0 0.0 0.0 -de - fr 122 0.0 0.0 0.0 0.0 0.0 -de - fr 123 0.0 0.0 0.0 0.0 0.0 -de - fr 124 0.0 0.0 0.0 0.0 0.0 -de - fr 125 0.0 0.0 0.0 0.0 0.0 -de - fr 126 0.0 0.0 0.0 0.0 0.0 -de - fr 127 0.0 0.0 0.0 0.0 0.0 -de - fr 128 0.0 0.0 0.0 0.0 0.0 -de - fr 129 0.0 0.0 0.0 0.0 0.0 -de - fr 130 0.0 0.0 0.0 0.0 0.0 -de - fr 131 0.0 0.0 0.0 0.0 0.0 -de - fr 132 0.0 0.0 0.0 0.0 0.0 -de - fr 133 0.0 0.0 0.0 0.0 0.0 -de - fr 134 0.0 0.0 0.0 0.0 0.0 -de - fr 135 0.0 0.0 0.0 0.0 0.0 -de - fr 136 0.0 0.0 0.0 0.0 0.0 -de - fr 137 0.0 0.0 0.0 0.0 0.0 -de - fr 138 0.0 0.0 0.0 0.0 0.0 -de - fr 139 0.0 0.0 0.0 0.0 0.0 -de - fr 140 0.0 0.0 0.0 0.0 0.0 -de - fr 141 0.0 0.0 0.0 0.0 0.0 -de - fr 142 0.0 0.0 0.0 0.0 0.0 -de - fr 143 0.0 0.0 0.0 0.0 0.0 -de - fr 144 0.0 0.0 0.0 0.0 0.0 -de - fr 145 0.0 0.0 0.0 0.0 0.0 -de - fr 146 0.0 0.0 0.0 0.0 0.0 -de - fr 147 0.0 0.0 0.0 0.0 0.0 -de - fr 148 0.0 0.0 0.0 0.0 0.0 -de - fr 149 0.0 0.0 0.0 0.0 0.0 -de - fr 150 0.0 0.0 0.0 0.0 0.0 -de - fr 151 0.0 0.0 0.0 0.0 0.0 -de - fr 152 0.0 0.0 0.0 0.0 0.0 -de - fr 153 0.0 0.0 0.0 0.0 0.0 -de - fr 154 0.0 0.0 0.0 0.0 0.0 -de - fr 155 0.0 0.0 0.0 0.0 0.0 -de - fr 156 0.0 0.0 0.0 0.0 0.0 -de - fr 157 0.0 0.0 0.0 0.0 0.0 -de - fr 158 0.0 0.0 0.0 0.0 0.0 -de - fr 159 0.0 0.0 0.0 0.0 0.0 -de - fr 160 0.0 0.0 0.0 0.0 0.0 -de - fr 161 0.0 0.0 0.0 0.0 0.0 -de - fr 162 0.0 0.0 0.0 0.0 0.0 -de - fr 163 0.0 0.0 0.0 0.0 0.0 -de - fr 164 0.0 0.0 0.0 0.0 0.0 -de - fr 165 0.0 0.0 0.0 0.0 0.0 -de - fr 166 0.0 0.0 0.0 0.0 0.0 -de - fr 167 0.0 0.0 0.0 0.0 0.0 -de - fr 168 0.0 0.0 0.0 0.0 0.0 -de - fr 169 0.0 0.0 0.0 0.0 0.0 -de - fr 170 0.0 0.0 0.0 0.0 0.0 -de - fr 171 0.0 0.0 0.0 0.0 0.0 -de - fr 172 0.0 0.0 0.0 0.0 0.0 -de - fr 173 0.0 0.0 0.0 0.0 0.0 -de - fr 174 0.0 0.0 0.0 0.0 0.0 -de - fr 175 0.0 0.0 0.0 0.0 0.0 -de - fr 176 0.0 0.0 0.0 0.0 0.0 -de - fr 177 0.0 0.0 0.0 0.0 0.0 -de - fr 178 0.0 0.0 0.0 0.0 0.0 -de - fr 179 0.0 0.0 0.0 0.0 0.0 -de - fr 180 0.0 0.0 0.0 0.0 0.0 -de - fr 181 0.0 0.0 0.0 0.0 0.0 -de - fr 182 0.0 0.0 0.0 0.0 0.0 -de - fr 183 0.0 0.0 0.0 0.0 0.0 -de - fr 184 0.0 0.0 0.0 0.0 0.0 -de - fr 185 0.0 0.0 0.0 0.0 0.0 -de - fr 186 0.0 0.0 0.0 0.0 0.0 -de - fr 187 0.0 0.0 0.0 0.0 0.0 -de - fr 188 0.0 0.0 0.0 0.0 0.0 -de - fr 189 0.0 0.0 0.0 0.0 0.0 -de - fr 190 0.0 0.0 0.0 0.0 0.0 -de - fr 191 0.0 0.0 0.0 0.0 0.0 -de - fr 192 0.0 0.0 0.0 0.0 0.0 -de - fr 193 0.0 0.0 0.0 0.0 0.0 -de - fr 194 0.0 0.0 0.0 0.0 0.0 -de - fr 195 0.0 0.0 0.0 0.0 0.0 -de - fr 196 0.0 0.0 0.0 0.0 0.0 -de - fr 197 0.0 0.0 0.0 0.0 0.0 -de - fr 198 0.0 0.0 0.0 0.0 0.0 -de - fr 199 0.0 0.0 0.0 0.0 0.0 -de - fr 200 0.0 0.0 0.0 0.0 0.0 -de - fr 201 0.0 0.0 0.0 0.0 0.0 -de - fr 202 0.0 0.0 0.0 0.0 0.0 -de - fr 203 0.0 0.0 0.0 0.0 0.0 -de - fr 204 0.0 0.0 0.0 0.0 0.0 -de - fr 205 0.0 0.0 0.0 0.0 0.0 -de - fr 206 0.0 0.0 0.0 0.0 0.0 -de - fr 207 0.0 0.0 0.0 0.0 0.0 -de - fr 208 0.0 0.0 0.0 0.0 0.0 -de - fr 209 0.0 0.0 0.0 0.0 0.0 -de - fr 210 0.0 0.0 0.0 0.0 0.0 -de - fr 211 0.0 0.0 0.0 0.0 0.0 -de - fr 212 0.0 0.0 0.0 0.0 0.0 -de - fr 213 0.0 0.0 0.0 0.0 0.0 -de - fr 214 0.0 0.0 0.0 0.0 0.0 -de - fr 215 0.0 0.0 0.0 0.0 0.0 -de - fr 216 0.0 0.0 0.0 0.0 0.0 -de - fr 217 0.0 0.0 0.0 0.0 0.0 -de - fr 218 0.0 0.0 0.0 0.0 0.0 -de - fr 219 0.0 0.0 0.0 0.0 0.0 -de - fr 220 0.0 0.0 0.0 0.0 0.0 -de - fr 221 0.0 0.0 0.0 0.0 0.0 -de - fr 222 0.0 0.0 0.0 0.0 0.0 -de - fr 223 0.0 0.0 0.0 0.0 0.0 -de - fr 224 0.0 0.0 0.0 0.0 0.0 -de - fr 225 0.0 0.0 0.0 0.0 0.0 -de - fr 226 0.0 0.0 0.0 0.0 0.0 -de - fr 227 0.0 0.0 0.0 0.0 0.0 -de - fr 228 0.0 0.0 0.0 0.0 0.0 -de - fr 229 0.0 0.0 0.0 0.0 0.0 -de - fr 230 0.0 0.0 0.0 0.0 0.0 -de - fr 231 0.0 0.0 0.0 0.0 0.0 -de - fr 232 0.0 0.0 0.0 0.0 0.0 -de - fr 233 0.0 0.0 0.0 0.0 0.0 -de - fr 234 0.0 0.0 0.0 0.0 0.0 -de - fr 235 0.0 0.0 0.0 0.0 0.0 -de - fr 236 0.0 0.0 0.0 0.0 0.0 -de - fr 237 0.0 0.0 0.0 0.0 0.0 -de - fr 238 0.0 0.0 0.0 0.0 0.0 -de - fr 239 0.0 0.0 0.0 0.0 0.0 -de - fr 240 0.0 0.0 0.0 0.0 0.0 -de - fr 241 0.0 0.0 0.0 0.0 0.0 -de - fr 242 0.0 0.0 0.0 0.0 0.0 -de - fr 243 0.0 0.0 0.0 0.0 0.0 -de - fr 244 0.0 0.0 0.0 0.0 0.0 -de - fr 245 0.0 0.0 0.0 0.0 0.0 -de - fr 246 0.0 0.0 0.0 0.0 0.0 -de - fr 247 0.0 0.0 0.0 0.0 0.0 -de - fr 248 0.0 0.0 0.0 0.0 0.0 -de - fr 249 0.0 0.0 0.0 0.0 0.0 -de - fr 250 0.0 0.0 0.0 0.0 0.0 -de - fr 251 0.0 0.0 0.0 0.0 0.0 -de - fr 252 0.0 0.0 0.0 0.0 0.0 -de - fr 253 0.0 0.0 0.0 0.0 0.0 -de - fr 254 0.0 0.0 0.0 0.0 0.0 -de - fr 255 0.0 0.0 0.0 0.0 0.0 -de - fr 256 0.0 0.0 0.0 0.0 0.0 -de - fr 257 0.0 0.0 0.0 0.0 0.0 -de - fr 258 0.0 0.0 0.0 0.0 0.0 -de - fr 259 0.0 0.0 0.0 0.0 0.0 -de - fr 260 0.0 0.0 0.0 0.0 0.0 -de - fr 261 0.0 0.0 0.0 0.0 0.0 -de - fr 262 0.0 0.0 0.0 0.0 0.0 -de - fr 263 0.0 0.0 0.0 0.0 0.0 -de - fr 264 0.0 0.0 0.0 0.0 0.0 -de - fr 265 0.0 0.0 0.0 0.0 0.0 -de - fr 266 0.0 0.0 0.0 0.0 0.0 -de - fr 267 0.0 0.0 0.0 0.0 0.0 -de - fr 268 0.0 0.0 0.0 0.0 0.0 -de - fr 269 0.0 0.0 0.0 0.0 0.0 -de - fr 270 0.0 0.0 0.0 0.0 0.0 -de - fr 271 0.0 0.0 0.0 0.0 0.0 -de - fr 272 0.0 0.0 0.0 0.0 0.0 -de - fr 273 0.0 0.0 0.0 0.0 0.0 -de - fr 274 0.0 0.0 0.0 0.0 0.0 -de - fr 275 0.0 0.0 0.0 0.0 0.0 -de - fr 276 0.0 0.0 0.0 0.0 0.0 -de - fr 277 0.0 0.0 0.0 0.0 0.0 -de - fr 278 0.0 0.0 0.0 0.0 0.0 -de - fr 279 0.0 0.0 0.0 0.0 0.0 -de - fr 280 0.0 0.0 0.0 0.0 0.0 -de - fr 281 0.0 0.0 0.0 0.0 0.0 -de - fr 282 0.0 0.0 0.0 0.0 0.0 -de - fr 283 0.0 0.0 0.0 0.0 0.0 -de - fr 284 0.0 0.0 0.0 0.0 0.0 -de - fr 285 0.0 0.0 0.0 0.0 0.0 -de - fr 286 0.0 0.0 0.0 0.0 0.0 -de - fr 287 0.0 0.0 0.0 0.0 0.0 -de - fr 288 0.0 0.0 0.0 0.0 0.0 -de - fr 289 0.0 0.0 0.0 0.0 0.0 -de - fr 290 0.0 0.0 0.0 0.0 0.0 -de - fr 291 0.0 0.0 0.0 0.0 0.0 -de - fr 292 0.0 0.0 0.0 0.0 0.0 -de - fr 293 0.0 0.0 0.0 0.0 0.0 -de - fr 294 0.0 0.0 0.0 0.0 0.0 -de - fr 295 0.0 0.0 0.0 0.0 0.0 -de - fr 296 0.0 0.0 0.0 0.0 0.0 -de - fr 297 0.0 0.0 0.0 0.0 0.0 -de - fr 298 0.0 0.0 0.0 0.0 0.0 -de - fr 299 0.0 0.0 0.0 0.0 0.0 -de - fr 300 0.0 0.0 0.0 0.0 0.0 -de - fr 301 0.0 0.0 0.0 0.0 0.0 -de - fr 302 0.0 0.0 0.0 0.0 0.0 -de - fr 303 0.0 0.0 0.0 0.0 0.0 -de - fr 304 0.0 0.0 0.0 0.0 0.0 -de - fr 305 0.0 0.0 0.0 0.0 0.0 -de - fr 306 0.0 0.0 0.0 0.0 0.0 -de - fr 307 0.0 0.0 0.0 0.0 0.0 -de - fr 308 0.0 0.0 0.0 0.0 0.0 -de - fr 309 0.0 0.0 0.0 0.0 0.0 -de - fr 310 0.0 0.0 0.0 0.0 0.0 -de - fr 311 0.0 0.0 0.0 0.0 0.0 -de - fr 312 0.0 0.0 0.0 0.0 0.0 -de - fr 313 0.0 0.0 0.0 0.0 0.0 -de - fr 314 0.0 0.0 0.0 0.0 0.0 -de - fr 315 0.0 0.0 0.0 0.0 0.0 -de - fr 316 0.0 0.0 0.0 0.0 0.0 -de - fr 317 0.0 0.0 0.0 0.0 0.0 -de - fr 318 0.0 0.0 0.0 0.0 0.0 -de - fr 319 0.0 0.0 0.0 0.0 0.0 -de - fr 320 0.0 0.0 0.0 0.0 0.0 -de - fr 321 0.0 0.0 0.0 0.0 0.0 -de - fr 322 0.0 0.0 0.0 0.0 0.0 -de - fr 323 0.0 0.0 0.0 0.0 0.0 -de - fr 324 0.0 0.0 0.0 0.0 0.0 -de - fr 325 0.0 0.0 0.0 0.0 0.0 -de - fr 326 0.0 0.0 0.0 0.0 0.0 -de - fr 327 0.0 0.0 0.0 0.0 0.0 -de - fr 328 0.0 0.0 0.0 0.0 0.0 -de - fr 329 0.0 0.0 0.0 0.0 0.0 -de - fr 330 0.0 0.0 0.0 0.0 0.0 -de - fr 331 0.0 0.0 0.0 0.0 0.0 -de - fr 332 0.0 0.0 0.0 0.0 0.0 -de - fr 333 0.0 0.0 0.0 0.0 0.0 -de - fr 334 0.0 0.0 0.0 0.0 0.0 -de - fr 335 0.0 0.0 0.0 0.0 0.0 -de - fr 336 0.0 0.0 0.0 0.0 0.0 -de - fr 337 0.0 0.0 0.0 0.0 0.0 -de - fr 338 0.0 0.0 0.0 0.0 0.0 -de - fr 339 0.0 0.0 0.0 0.0 0.0 -de - fr 340 0.0 0.0 0.0 0.0 0.0 -de - fr 341 0.0 0.0 0.0 0.0 0.0 -de - fr 342 0.0 0.0 0.0 0.0 0.0 -de - fr 343 0.0 0.0 0.0 0.0 0.0 -de - fr 344 0.0 0.0 0.0 0.0 0.0 -de - fr 345 0.0 0.0 0.0 0.0 0.0 -de - fr 346 0.0 0.0 0.0 0.0 0.0 -de - fr 347 0.0 0.0 0.0 0.0 0.0 -de - fr 348 0.0 0.0 0.0 0.0 0.0 -de - fr 349 0.0 0.0 0.0 0.0 0.0 -de - fr 350 0.0 0.0 0.0 0.0 0.0 -de - fr 351 0.0 0.0 0.0 0.0 0.0 -de - fr 352 0.0 0.0 0.0 0.0 0.0 -de - fr 353 0.0 0.0 0.0 0.0 0.0 -de - fr 354 0.0 0.0 0.0 0.0 0.0 -de - fr 355 0.0 0.0 0.0 0.0 0.0 -de - fr 356 0.0 0.0 0.0 0.0 0.0 -de - fr 357 0.0 0.0 0.0 0.0 0.0 -de - fr 358 0.0 0.0 0.0 0.0 0.0 -de - fr 359 0.0 0.0 0.0 0.0 0.0 -de - fr 360 0.0 0.0 0.0 0.0 0.0 -de - fr 361 0.0 0.0 0.0 0.0 0.0 -de - fr 362 0.0 0.0 0.0 0.0 0.0 -de - fr 363 0.0 0.0 0.0 0.0 0.0 -de - fr 364 0.0 0.0 0.0 0.0 0.0 +link timeId MARG. COST EXP MARG. COST STD MARG. COST MIN MARG. COST MAX CONG. PROB + VALUES +de - fr 1 0.0 0.0 0.0 0.0 0.0 +de - fr 2 0.0 0.0 0.0 0.0 0.0 +de - fr 3 0.0 0.0 0.0 0.0 0.0 +de - fr 4 0.0 0.0 0.0 0.0 0.0 +de - fr 5 0.0 0.0 0.0 0.0 0.0 +de - fr 6 0.0 0.0 0.0 0.0 0.0 +de - fr 7 0.0 0.0 0.0 0.0 0.0 +de - fr 8 0.0 0.0 0.0 0.0 0.0 +de - fr 9 0.0 0.0 0.0 0.0 0.0 +de - fr 10 0.0 0.0 0.0 0.0 0.0 +de - fr 11 0.0 0.0 0.0 0.0 0.0 +de - fr 12 0.0 0.0 0.0 0.0 0.0 +de - fr 13 0.0 0.0 0.0 0.0 0.0 +de - fr 14 0.0 0.0 0.0 0.0 0.0 +de - fr 15 0.0 0.0 0.0 0.0 0.0 +de - fr 16 0.0 0.0 0.0 0.0 0.0 +de - fr 17 0.0 0.0 0.0 0.0 0.0 +de - fr 18 0.0 0.0 0.0 0.0 0.0 +de - fr 19 0.0 0.0 0.0 0.0 0.0 +de - fr 20 0.0 0.0 0.0 0.0 0.0 +de - fr 21 0.0 0.0 0.0 0.0 0.0 +de - fr 22 0.0 0.0 0.0 0.0 0.0 +de - fr 23 0.0 0.0 0.0 0.0 0.0 +de - fr 24 0.0 0.0 0.0 0.0 0.0 +de - fr 25 0.0 0.0 0.0 0.0 0.0 +de - fr 26 0.0 0.0 0.0 0.0 0.0 +de - fr 27 0.0 0.0 0.0 0.0 0.0 +de - fr 28 0.0 0.0 0.0 0.0 0.0 +de - fr 29 0.0 0.0 0.0 0.0 0.0 +de - fr 30 0.0 0.0 0.0 0.0 0.0 +de - fr 31 0.0 0.0 0.0 0.0 0.0 +de - fr 32 0.0 0.0 0.0 0.0 0.0 +de - fr 33 0.0 0.0 0.0 0.0 0.0 +de - fr 34 0.0 0.0 0.0 0.0 0.0 +de - fr 35 0.0 0.0 0.0 0.0 0.0 +de - fr 36 0.0 0.0 0.0 0.0 0.0 +de - fr 37 0.0 0.0 0.0 0.0 0.0 +de - fr 38 0.0 0.0 0.0 0.0 0.0 +de - fr 39 0.0 0.0 0.0 0.0 0.0 +de - fr 40 0.0 0.0 0.0 0.0 0.0 +de - fr 41 0.0 0.0 0.0 0.0 0.0 +de - fr 42 0.0 0.0 0.0 0.0 0.0 +de - fr 43 0.0 0.0 0.0 0.0 0.0 +de - fr 44 0.0 0.0 0.0 0.0 0.0 +de - fr 45 0.0 0.0 0.0 0.0 0.0 +de - fr 46 0.0 0.0 0.0 0.0 0.0 +de - fr 47 0.0 0.0 0.0 0.0 0.0 +de - fr 48 0.0 0.0 0.0 0.0 0.0 +de - fr 49 0.0 0.0 0.0 0.0 0.0 +de - fr 50 0.0 0.0 0.0 0.0 0.0 +de - fr 51 0.0 0.0 0.0 0.0 0.0 +de - fr 52 0.0 0.0 0.0 0.0 0.0 +de - fr 53 0.0 0.0 0.0 0.0 0.0 +de - fr 54 0.0 0.0 0.0 0.0 0.0 +de - fr 55 0.0 0.0 0.0 0.0 0.0 +de - fr 56 0.0 0.0 0.0 0.0 0.0 +de - fr 57 0.0 0.0 0.0 0.0 0.0 +de - fr 58 0.0 0.0 0.0 0.0 0.0 +de - fr 59 0.0 0.0 0.0 0.0 0.0 +de - fr 60 0.0 0.0 0.0 0.0 0.0 +de - fr 61 0.0 0.0 0.0 0.0 0.0 +de - fr 62 0.0 0.0 0.0 0.0 0.0 +de - fr 63 0.0 0.0 0.0 0.0 0.0 +de - fr 64 0.0 0.0 0.0 0.0 0.0 +de - fr 65 0.0 0.0 0.0 0.0 0.0 +de - fr 66 0.0 0.0 0.0 0.0 0.0 +de - fr 67 0.0 0.0 0.0 0.0 0.0 +de - fr 68 0.0 0.0 0.0 0.0 0.0 +de - fr 69 0.0 0.0 0.0 0.0 0.0 +de - fr 70 0.0 0.0 0.0 0.0 0.0 +de - fr 71 0.0 0.0 0.0 0.0 0.0 +de - fr 72 0.0 0.0 0.0 0.0 0.0 +de - fr 73 0.0 0.0 0.0 0.0 0.0 +de - fr 74 0.0 0.0 0.0 0.0 0.0 +de - fr 75 0.0 0.0 0.0 0.0 0.0 +de - fr 76 0.0 0.0 0.0 0.0 0.0 +de - fr 77 0.0 0.0 0.0 0.0 0.0 +de - fr 78 0.0 0.0 0.0 0.0 0.0 +de - fr 79 0.0 0.0 0.0 0.0 0.0 +de - fr 80 0.0 0.0 0.0 0.0 0.0 +de - fr 81 0.0 0.0 0.0 0.0 0.0 +de - fr 82 0.0 0.0 0.0 0.0 0.0 +de - fr 83 0.0 0.0 0.0 0.0 0.0 +de - fr 84 0.0 0.0 0.0 0.0 0.0 +de - fr 85 0.0 0.0 0.0 0.0 0.0 +de - fr 86 0.0 0.0 0.0 0.0 0.0 +de - fr 87 0.0 0.0 0.0 0.0 0.0 +de - fr 88 0.0 0.0 0.0 0.0 0.0 +de - fr 89 0.0 0.0 0.0 0.0 0.0 +de - fr 90 0.0 0.0 0.0 0.0 0.0 +de - fr 91 0.0 0.0 0.0 0.0 0.0 +de - fr 92 0.0 0.0 0.0 0.0 0.0 +de - fr 93 0.0 0.0 0.0 0.0 0.0 +de - fr 94 0.0 0.0 0.0 0.0 0.0 +de - fr 95 0.0 0.0 0.0 0.0 0.0 +de - fr 96 0.0 0.0 0.0 0.0 0.0 +de - fr 97 0.0 0.0 0.0 0.0 0.0 +de - fr 98 0.0 0.0 0.0 0.0 0.0 +de - fr 99 0.0 0.0 0.0 0.0 0.0 +de - fr 100 0.0 0.0 0.0 0.0 0.0 +de - fr 101 0.0 0.0 0.0 0.0 0.0 +de - fr 102 0.0 0.0 0.0 0.0 0.0 +de - fr 103 0.0 0.0 0.0 0.0 0.0 +de - fr 104 0.0 0.0 0.0 0.0 0.0 +de - fr 105 0.0 0.0 0.0 0.0 0.0 +de - fr 106 0.0 0.0 0.0 0.0 0.0 +de - fr 107 0.0 0.0 0.0 0.0 0.0 +de - fr 108 0.0 0.0 0.0 0.0 0.0 +de - fr 109 0.0 0.0 0.0 0.0 0.0 +de - fr 110 0.0 0.0 0.0 0.0 0.0 +de - fr 111 0.0 0.0 0.0 0.0 0.0 +de - fr 112 0.0 0.0 0.0 0.0 0.0 +de - fr 113 0.0 0.0 0.0 0.0 0.0 +de - fr 114 0.0 0.0 0.0 0.0 0.0 +de - fr 115 0.0 0.0 0.0 0.0 0.0 +de - fr 116 0.0 0.0 0.0 0.0 0.0 +de - fr 117 0.0 0.0 0.0 0.0 0.0 +de - fr 118 0.0 0.0 0.0 0.0 0.0 +de - fr 119 0.0 0.0 0.0 0.0 0.0 +de - fr 120 0.0 0.0 0.0 0.0 0.0 +de - fr 121 0.0 0.0 0.0 0.0 0.0 +de - fr 122 0.0 0.0 0.0 0.0 0.0 +de - fr 123 0.0 0.0 0.0 0.0 0.0 +de - fr 124 0.0 0.0 0.0 0.0 0.0 +de - fr 125 0.0 0.0 0.0 0.0 0.0 +de - fr 126 0.0 0.0 0.0 0.0 0.0 +de - fr 127 0.0 0.0 0.0 0.0 0.0 +de - fr 128 0.0 0.0 0.0 0.0 0.0 +de - fr 129 0.0 0.0 0.0 0.0 0.0 +de - fr 130 0.0 0.0 0.0 0.0 0.0 +de - fr 131 0.0 0.0 0.0 0.0 0.0 +de - fr 132 0.0 0.0 0.0 0.0 0.0 +de - fr 133 0.0 0.0 0.0 0.0 0.0 +de - fr 134 0.0 0.0 0.0 0.0 0.0 +de - fr 135 0.0 0.0 0.0 0.0 0.0 +de - fr 136 0.0 0.0 0.0 0.0 0.0 +de - fr 137 0.0 0.0 0.0 0.0 0.0 +de - fr 138 0.0 0.0 0.0 0.0 0.0 +de - fr 139 0.0 0.0 0.0 0.0 0.0 +de - fr 140 0.0 0.0 0.0 0.0 0.0 +de - fr 141 0.0 0.0 0.0 0.0 0.0 +de - fr 142 0.0 0.0 0.0 0.0 0.0 +de - fr 143 0.0 0.0 0.0 0.0 0.0 +de - fr 144 0.0 0.0 0.0 0.0 0.0 +de - fr 145 0.0 0.0 0.0 0.0 0.0 +de - fr 146 0.0 0.0 0.0 0.0 0.0 +de - fr 147 0.0 0.0 0.0 0.0 0.0 +de - fr 148 0.0 0.0 0.0 0.0 0.0 +de - fr 149 0.0 0.0 0.0 0.0 0.0 +de - fr 150 0.0 0.0 0.0 0.0 0.0 +de - fr 151 0.0 0.0 0.0 0.0 0.0 +de - fr 152 0.0 0.0 0.0 0.0 0.0 +de - fr 153 0.0 0.0 0.0 0.0 0.0 +de - fr 154 0.0 0.0 0.0 0.0 0.0 +de - fr 155 0.0 0.0 0.0 0.0 0.0 +de - fr 156 0.0 0.0 0.0 0.0 0.0 +de - fr 157 0.0 0.0 0.0 0.0 0.0 +de - fr 158 0.0 0.0 0.0 0.0 0.0 +de - fr 159 0.0 0.0 0.0 0.0 0.0 +de - fr 160 0.0 0.0 0.0 0.0 0.0 +de - fr 161 0.0 0.0 0.0 0.0 0.0 +de - fr 162 0.0 0.0 0.0 0.0 0.0 +de - fr 163 0.0 0.0 0.0 0.0 0.0 +de - fr 164 0.0 0.0 0.0 0.0 0.0 +de - fr 165 0.0 0.0 0.0 0.0 0.0 +de - fr 166 0.0 0.0 0.0 0.0 0.0 +de - fr 167 0.0 0.0 0.0 0.0 0.0 +de - fr 168 0.0 0.0 0.0 0.0 0.0 +de - fr 169 0.0 0.0 0.0 0.0 0.0 +de - fr 170 0.0 0.0 0.0 0.0 0.0 +de - fr 171 0.0 0.0 0.0 0.0 0.0 +de - fr 172 0.0 0.0 0.0 0.0 0.0 +de - fr 173 0.0 0.0 0.0 0.0 0.0 +de - fr 174 0.0 0.0 0.0 0.0 0.0 +de - fr 175 0.0 0.0 0.0 0.0 0.0 +de - fr 176 0.0 0.0 0.0 0.0 0.0 +de - fr 177 0.0 0.0 0.0 0.0 0.0 +de - fr 178 0.0 0.0 0.0 0.0 0.0 +de - fr 179 0.0 0.0 0.0 0.0 0.0 +de - fr 180 0.0 0.0 0.0 0.0 0.0 +de - fr 181 0.0 0.0 0.0 0.0 0.0 +de - fr 182 0.0 0.0 0.0 0.0 0.0 +de - fr 183 0.0 0.0 0.0 0.0 0.0 +de - fr 184 0.0 0.0 0.0 0.0 0.0 +de - fr 185 0.0 0.0 0.0 0.0 0.0 +de - fr 186 0.0 0.0 0.0 0.0 0.0 +de - fr 187 0.0 0.0 0.0 0.0 0.0 +de - fr 188 0.0 0.0 0.0 0.0 0.0 +de - fr 189 0.0 0.0 0.0 0.0 0.0 +de - fr 190 0.0 0.0 0.0 0.0 0.0 +de - fr 191 0.0 0.0 0.0 0.0 0.0 +de - fr 192 0.0 0.0 0.0 0.0 0.0 +de - fr 193 0.0 0.0 0.0 0.0 0.0 +de - fr 194 0.0 0.0 0.0 0.0 0.0 +de - fr 195 0.0 0.0 0.0 0.0 0.0 +de - fr 196 0.0 0.0 0.0 0.0 0.0 +de - fr 197 0.0 0.0 0.0 0.0 0.0 +de - fr 198 0.0 0.0 0.0 0.0 0.0 +de - fr 199 0.0 0.0 0.0 0.0 0.0 +de - fr 200 0.0 0.0 0.0 0.0 0.0 +de - fr 201 0.0 0.0 0.0 0.0 0.0 +de - fr 202 0.0 0.0 0.0 0.0 0.0 +de - fr 203 0.0 0.0 0.0 0.0 0.0 +de - fr 204 0.0 0.0 0.0 0.0 0.0 +de - fr 205 0.0 0.0 0.0 0.0 0.0 +de - fr 206 0.0 0.0 0.0 0.0 0.0 +de - fr 207 0.0 0.0 0.0 0.0 0.0 +de - fr 208 0.0 0.0 0.0 0.0 0.0 +de - fr 209 0.0 0.0 0.0 0.0 0.0 +de - fr 210 0.0 0.0 0.0 0.0 0.0 +de - fr 211 0.0 0.0 0.0 0.0 0.0 +de - fr 212 0.0 0.0 0.0 0.0 0.0 +de - fr 213 0.0 0.0 0.0 0.0 0.0 +de - fr 214 0.0 0.0 0.0 0.0 0.0 +de - fr 215 0.0 0.0 0.0 0.0 0.0 +de - fr 216 0.0 0.0 0.0 0.0 0.0 +de - fr 217 0.0 0.0 0.0 0.0 0.0 +de - fr 218 0.0 0.0 0.0 0.0 0.0 +de - fr 219 0.0 0.0 0.0 0.0 0.0 +de - fr 220 0.0 0.0 0.0 0.0 0.0 +de - fr 221 0.0 0.0 0.0 0.0 0.0 +de - fr 222 0.0 0.0 0.0 0.0 0.0 +de - fr 223 0.0 0.0 0.0 0.0 0.0 +de - fr 224 0.0 0.0 0.0 0.0 0.0 +de - fr 225 0.0 0.0 0.0 0.0 0.0 +de - fr 226 0.0 0.0 0.0 0.0 0.0 +de - fr 227 0.0 0.0 0.0 0.0 0.0 +de - fr 228 0.0 0.0 0.0 0.0 0.0 +de - fr 229 0.0 0.0 0.0 0.0 0.0 +de - fr 230 0.0 0.0 0.0 0.0 0.0 +de - fr 231 0.0 0.0 0.0 0.0 0.0 +de - fr 232 0.0 0.0 0.0 0.0 0.0 +de - fr 233 0.0 0.0 0.0 0.0 0.0 +de - fr 234 0.0 0.0 0.0 0.0 0.0 +de - fr 235 0.0 0.0 0.0 0.0 0.0 +de - fr 236 0.0 0.0 0.0 0.0 0.0 +de - fr 237 0.0 0.0 0.0 0.0 0.0 +de - fr 238 0.0 0.0 0.0 0.0 0.0 +de - fr 239 0.0 0.0 0.0 0.0 0.0 +de - fr 240 0.0 0.0 0.0 0.0 0.0 +de - fr 241 0.0 0.0 0.0 0.0 0.0 +de - fr 242 0.0 0.0 0.0 0.0 0.0 +de - fr 243 0.0 0.0 0.0 0.0 0.0 +de - fr 244 0.0 0.0 0.0 0.0 0.0 +de - fr 245 0.0 0.0 0.0 0.0 0.0 +de - fr 246 0.0 0.0 0.0 0.0 0.0 +de - fr 247 0.0 0.0 0.0 0.0 0.0 +de - fr 248 0.0 0.0 0.0 0.0 0.0 +de - fr 249 0.0 0.0 0.0 0.0 0.0 +de - fr 250 0.0 0.0 0.0 0.0 0.0 +de - fr 251 0.0 0.0 0.0 0.0 0.0 +de - fr 252 0.0 0.0 0.0 0.0 0.0 +de - fr 253 0.0 0.0 0.0 0.0 0.0 +de - fr 254 0.0 0.0 0.0 0.0 0.0 +de - fr 255 0.0 0.0 0.0 0.0 0.0 +de - fr 256 0.0 0.0 0.0 0.0 0.0 +de - fr 257 0.0 0.0 0.0 0.0 0.0 +de - fr 258 0.0 0.0 0.0 0.0 0.0 +de - fr 259 0.0 0.0 0.0 0.0 0.0 +de - fr 260 0.0 0.0 0.0 0.0 0.0 +de - fr 261 0.0 0.0 0.0 0.0 0.0 +de - fr 262 0.0 0.0 0.0 0.0 0.0 +de - fr 263 0.0 0.0 0.0 0.0 0.0 +de - fr 264 0.0 0.0 0.0 0.0 0.0 +de - fr 265 0.0 0.0 0.0 0.0 0.0 +de - fr 266 0.0 0.0 0.0 0.0 0.0 +de - fr 267 0.0 0.0 0.0 0.0 0.0 +de - fr 268 0.0 0.0 0.0 0.0 0.0 +de - fr 269 0.0 0.0 0.0 0.0 0.0 +de - fr 270 0.0 0.0 0.0 0.0 0.0 +de - fr 271 0.0 0.0 0.0 0.0 0.0 +de - fr 272 0.0 0.0 0.0 0.0 0.0 +de - fr 273 0.0 0.0 0.0 0.0 0.0 +de - fr 274 0.0 0.0 0.0 0.0 0.0 +de - fr 275 0.0 0.0 0.0 0.0 0.0 +de - fr 276 0.0 0.0 0.0 0.0 0.0 +de - fr 277 0.0 0.0 0.0 0.0 0.0 +de - fr 278 0.0 0.0 0.0 0.0 0.0 +de - fr 279 0.0 0.0 0.0 0.0 0.0 +de - fr 280 0.0 0.0 0.0 0.0 0.0 +de - fr 281 0.0 0.0 0.0 0.0 0.0 +de - fr 282 0.0 0.0 0.0 0.0 0.0 +de - fr 283 0.0 0.0 0.0 0.0 0.0 +de - fr 284 0.0 0.0 0.0 0.0 0.0 +de - fr 285 0.0 0.0 0.0 0.0 0.0 +de - fr 286 0.0 0.0 0.0 0.0 0.0 +de - fr 287 0.0 0.0 0.0 0.0 0.0 +de - fr 288 0.0 0.0 0.0 0.0 0.0 +de - fr 289 0.0 0.0 0.0 0.0 0.0 +de - fr 290 0.0 0.0 0.0 0.0 0.0 +de - fr 291 0.0 0.0 0.0 0.0 0.0 +de - fr 292 0.0 0.0 0.0 0.0 0.0 +de - fr 293 0.0 0.0 0.0 0.0 0.0 +de - fr 294 0.0 0.0 0.0 0.0 0.0 +de - fr 295 0.0 0.0 0.0 0.0 0.0 +de - fr 296 0.0 0.0 0.0 0.0 0.0 +de - fr 297 0.0 0.0 0.0 0.0 0.0 +de - fr 298 0.0 0.0 0.0 0.0 0.0 +de - fr 299 0.0 0.0 0.0 0.0 0.0 +de - fr 300 0.0 0.0 0.0 0.0 0.0 +de - fr 301 0.0 0.0 0.0 0.0 0.0 +de - fr 302 0.0 0.0 0.0 0.0 0.0 +de - fr 303 0.0 0.0 0.0 0.0 0.0 +de - fr 304 0.0 0.0 0.0 0.0 0.0 +de - fr 305 0.0 0.0 0.0 0.0 0.0 +de - fr 306 0.0 0.0 0.0 0.0 0.0 +de - fr 307 0.0 0.0 0.0 0.0 0.0 +de - fr 308 0.0 0.0 0.0 0.0 0.0 +de - fr 309 0.0 0.0 0.0 0.0 0.0 +de - fr 310 0.0 0.0 0.0 0.0 0.0 +de - fr 311 0.0 0.0 0.0 0.0 0.0 +de - fr 312 0.0 0.0 0.0 0.0 0.0 +de - fr 313 0.0 0.0 0.0 0.0 0.0 +de - fr 314 0.0 0.0 0.0 0.0 0.0 +de - fr 315 0.0 0.0 0.0 0.0 0.0 +de - fr 316 0.0 0.0 0.0 0.0 0.0 +de - fr 317 0.0 0.0 0.0 0.0 0.0 +de - fr 318 0.0 0.0 0.0 0.0 0.0 +de - fr 319 0.0 0.0 0.0 0.0 0.0 +de - fr 320 0.0 0.0 0.0 0.0 0.0 +de - fr 321 0.0 0.0 0.0 0.0 0.0 +de - fr 322 0.0 0.0 0.0 0.0 0.0 +de - fr 323 0.0 0.0 0.0 0.0 0.0 +de - fr 324 0.0 0.0 0.0 0.0 0.0 +de - fr 325 0.0 0.0 0.0 0.0 0.0 +de - fr 326 0.0 0.0 0.0 0.0 0.0 +de - fr 327 0.0 0.0 0.0 0.0 0.0 +de - fr 328 0.0 0.0 0.0 0.0 0.0 +de - fr 329 0.0 0.0 0.0 0.0 0.0 +de - fr 330 0.0 0.0 0.0 0.0 0.0 +de - fr 331 0.0 0.0 0.0 0.0 0.0 +de - fr 332 0.0 0.0 0.0 0.0 0.0 +de - fr 333 0.0 0.0 0.0 0.0 0.0 +de - fr 334 0.0 0.0 0.0 0.0 0.0 +de - fr 335 0.0 0.0 0.0 0.0 0.0 +de - fr 336 0.0 0.0 0.0 0.0 0.0 +de - fr 337 0.0 0.0 0.0 0.0 0.0 +de - fr 338 0.0 0.0 0.0 0.0 0.0 +de - fr 339 0.0 0.0 0.0 0.0 0.0 +de - fr 340 0.0 0.0 0.0 0.0 0.0 +de - fr 341 0.0 0.0 0.0 0.0 0.0 +de - fr 342 0.0 0.0 0.0 0.0 0.0 +de - fr 343 0.0 0.0 0.0 0.0 0.0 +de - fr 344 0.0 0.0 0.0 0.0 0.0 +de - fr 345 0.0 0.0 0.0 0.0 0.0 +de - fr 346 0.0 0.0 0.0 0.0 0.0 +de - fr 347 0.0 0.0 0.0 0.0 0.0 +de - fr 348 0.0 0.0 0.0 0.0 0.0 +de - fr 349 0.0 0.0 0.0 0.0 0.0 +de - fr 350 0.0 0.0 0.0 0.0 0.0 +de - fr 351 0.0 0.0 0.0 0.0 0.0 +de - fr 352 0.0 0.0 0.0 0.0 0.0 +de - fr 353 0.0 0.0 0.0 0.0 0.0 +de - fr 354 0.0 0.0 0.0 0.0 0.0 +de - fr 355 0.0 0.0 0.0 0.0 0.0 +de - fr 356 0.0 0.0 0.0 0.0 0.0 +de - fr 357 0.0 0.0 0.0 0.0 0.0 +de - fr 358 0.0 0.0 0.0 0.0 0.0 +de - fr 359 0.0 0.0 0.0 0.0 0.0 +de - fr 360 0.0 0.0 0.0 0.0 0.0 +de - fr 361 0.0 0.0 0.0 0.0 0.0 +de - fr 362 0.0 0.0 0.0 0.0 0.0 +de - fr 363 0.0 0.0 0.0 0.0 0.0 +de - fr 364 0.0 0.0 0.0 0.0 0.0 From 111d945929256d587ec51f06447cc504d7638dd2 Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Tue, 12 Nov 2024 16:02:28 +0100 Subject: [PATCH 155/182] fix(ts-gen): bump package to avoid `fo_rate` or `po_rate` exceptions (#2215) --- .../generate_thermal_cluster_timeseries.py | 15 +++++++++------ requirements.txt | 2 +- .../test_generate_thermal_cluster_timeseries.py | 12 ++++++++++++ 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/antarest/study/storage/variantstudy/model/command/generate_thermal_cluster_timeseries.py b/antarest/study/storage/variantstudy/model/command/generate_thermal_cluster_timeseries.py index f7e8626806..43ed95b21d 100644 --- a/antarest/study/storage/variantstudy/model/command/generate_thermal_cluster_timeseries.py +++ b/antarest/study/storage/variantstudy/model/command/generate_thermal_cluster_timeseries.py @@ -20,7 +20,7 @@ import pandas as pd from antares.tsgen.duration_generator import ProbabilityLaw from antares.tsgen.random_generator import MersenneTwisterRNG -from antares.tsgen.ts_generator import ThermalCluster, ThermalDataGenerator +from antares.tsgen.ts_generator import OutageGenerationParameters, ThermalCluster, TimeseriesGenerator from antarest.study.storage.rawstudy.model.filesystem.config.model import Area, FileStudyTreeConfig from antarest.study.storage.rawstudy.model.filesystem.config.thermal import LocalTSGenerationBehavior @@ -75,7 +75,7 @@ def _build_timeseries( nb_years = general_data["general"]["nbtimeseriesthermal"] # 2 - Build the generator rng = MersenneTwisterRNG(seed=thermal_seed) - generator = ThermalDataGenerator(rng=rng, days=365) + generator = TimeseriesGenerator(rng=rng, days=365) # 3- Do a first loop to know how many operations will be performed total_generations = sum(len(area.thermals) for area in study_data.config.areas.values()) # 4- Loop through areas in alphabetical order @@ -102,10 +102,8 @@ def _build_timeseries( np.array(matrix_df[i], dtype=float if i in [FO_RATE_COLUMN, PO_RATE_COLUMN] else int) for i in matrix_df.columns ] - cluster = ThermalCluster( + generation_params = OutageGenerationParameters( unit_count=thermal.unit_count, - nominal_power=thermal.nominal_capacity, - modulation=modulation_capacity, fo_law=ProbabilityLaw(thermal.law_forced.value.upper()), fo_volatility=thermal.volatility_forced, po_law=ProbabilityLaw(thermal.law_planned.value.upper()), @@ -117,8 +115,13 @@ def _build_timeseries( npo_min=npo_min, npo_max=npo_max, ) + cluster = ThermalCluster( + outage_gen_params=generation_params, + nominal_power=thermal.nominal_capacity, + modulation=modulation_capacity, + ) # 8- Generate the time-series - results = generator.generate_time_series(cluster, nb_years) + results = generator.generate_time_series_for_clusters(cluster, nb_years) generated_matrix = results.available_power # 9- Write the matrix inside the input folder. df = pd.DataFrame(data=generated_matrix) diff --git a/requirements.txt b/requirements.txt index 2e191bb01f..60c782d945 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ Antares-Launcher==1.4.2 antares-study-version==1.0.9 -antares-timeseries-generation~=0.1.5 +antares-timeseries-generation==0.1.7 # When you install `fastapi[all]`, you get FastAPI along with additional dependencies: # - `uvicorn`: A fast ASGI server commonly used to run FastAPI applications. diff --git a/tests/integration/study_data_blueprint/test_generate_thermal_cluster_timeseries.py b/tests/integration/study_data_blueprint/test_generate_thermal_cluster_timeseries.py index 7c143fb2e4..2f69568e4c 100644 --- a/tests/integration/study_data_blueprint/test_generate_thermal_cluster_timeseries.py +++ b/tests/integration/study_data_blueprint/test_generate_thermal_cluster_timeseries.py @@ -130,6 +130,18 @@ def test_errors_and_limit_cases(self, client: TestClient, user_access_token: str data = res.json()["data"] assert data == 8760 * [[4]] + # Puts 1 as PO rate and 1 as FO rate + modulation_matrix = np.ones(shape=(365, 6)).tolist() + res = client.post( + f"/v1/studies/{study_id}/raw", + params={"path": f"input/thermal/prepro/{area1_id}/{cluster_name.lower()}/data"}, + json=modulation_matrix, + ) + assert res.status_code == 204 + # Timeseries generation should succeed + task = self._generate_timeseries(client, user_access_token, study_id) + assert task.status == TaskStatus.COMPLETED + def test_advanced_results(self, client: TestClient, user_access_token: str) -> None: # Study Preparation client.headers = {"Authorization": f"Bearer {user_access_token}"} From 734a6ae7774d9be246788138269eb0c8d8a769bd Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Wed, 13 Nov 2024 11:12:18 +0100 Subject: [PATCH 156/182] feat(matrix): allow import for various formats (#2218) --- antarest/study/service.py | 8 ++++++-- .../test_fetch_raw_data.py | 18 ++++++++++++++++-- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/antarest/study/service.py b/antarest/study/service.py index 250ddfb1ae..19067b6f9a 100644 --- a/antarest/study/service.py +++ b/antarest/study/service.py @@ -1537,12 +1537,16 @@ def _create_edit_study_command( elif isinstance(tree_node, InputSeriesMatrix): if isinstance(data, bytes): # noinspection PyTypeChecker + str_data = data.decode("utf-8") try: - delimiter = csv.Sniffer().sniff(data.decode("utf-8"), delimiters=r"[,;\t]").delimiter + delimiter = csv.Sniffer().sniff(str_data, delimiters=r"[,;\t]").delimiter except csv.Error: # Can happen with data with only one column. In this case, we don't care about the delimiter. delimiter = "\t" - matrix = np.loadtxt(io.BytesIO(data), delimiter=delimiter, dtype=np.float64, ndmin=2) + if not str_data: + matrix = np.zeros(shape=(0, 0)) + else: + matrix = pd.read_csv(io.BytesIO(data), delimiter=delimiter, header=None).to_numpy(dtype=np.float64) matrix = matrix.reshape((1, 0)) if matrix.size == 0 else matrix return ReplaceMatrix( target=url, diff --git a/tests/integration/raw_studies_blueprint/test_fetch_raw_data.py b/tests/integration/raw_studies_blueprint/test_fetch_raw_data.py index 7922f2d5d2..6fb269dbf2 100644 --- a/tests/integration/raw_studies_blueprint/test_fetch_raw_data.py +++ b/tests/integration/raw_studies_blueprint/test_fetch_raw_data.py @@ -19,6 +19,7 @@ from unittest.mock import ANY import numpy as np +import pandas as pd import pytest from starlette.testclient import TestClient @@ -143,13 +144,26 @@ def test_get_study( # You can import a csv or a tsv file inside a matrix matrix_path = "input/load/series/load_de" for content, delimiter in zip( - [b"1.20000\n3.400000\n", b"1.4\t0.5\n0.0\t0.4\n", b"1.2,1.3\n1.4,1.5\n"], ["\t", "\t", ","] + [ + b"1.20000\n3.400000\n", + b"1.4\t0.5\n0.0\t0.4\n", + b"1.2,1.3\n1.4,1.5\n", + b"", + b"\xef\xbb\xbf1;1;1;1;1\r\n1;1;1;1;1", + b"1;1;1;1;1\r1;1;1;1;1", + ], + ["\t", "\t", ",", "\t", ";", ";"], ): res = client.put(raw_url, params={"path": matrix_path}, files={"file": io.BytesIO(content)}) assert res.status_code == 204, res.json() res = client.get(raw_url, params={"path": matrix_path}) written_data = res.json()["data"] - assert written_data == np.loadtxt(io.BytesIO(content), delimiter=delimiter, ndmin=2).tolist() + if not content.decode("utf-8"): + # For some reason the `GET` returns the default matrix when it's empty + expected = 8760 * [[0]] + else: + expected = pd.read_csv(io.BytesIO(content), delimiter=delimiter, header=None).to_numpy().tolist() + assert written_data == expected # If we ask for properties, we should have a JSON content rel_path = "/input/links/de/properties/fr" From c635993101b0e45d45ff07067da860eb08fb728a Mon Sep 17 00:00:00 2001 From: Hatim Dinia <33469289+hdinia@users.noreply.github.com> Date: Wed, 13 Nov 2024 13:19:19 +0100 Subject: [PATCH 157/182] feat(ui-results): enhance results columns headers (#2207) --- .../Singlestudy/explore/Debug/Data/Matrix.tsx | 2 +- .../Modelization/Areas/Hydro/HydroMatrix.tsx | 2 +- .../Areas/Hydro/HydroMatrixDialog.tsx | 6 +- .../explore/Modelization/Areas/Hydro/utils.ts | 9 +- .../Results/ResultDetails/ResultFilters.tsx | 31 ++++++- .../explore/Results/ResultDetails/index.tsx | 9 +- .../common/EditableMatrix/index.tsx | 10 +- .../Matrix/components/MatrixActions/index.tsx | 6 +- .../Matrix/components/MatrixGrid/index.tsx | 16 ++-- .../Matrix/components/MatrixGrid/styles.ts | 3 +- .../Matrix/hooks/useGridCellContent/index.ts | 20 ++-- .../common/Matrix/hooks/useMatrix/index.ts | 12 +-- webapp/src/components/common/Matrix/index.tsx | 51 +++++----- .../Matrix/shared/__tests__/utils.test.ts | 2 - .../components/common/Matrix/shared/utils.ts | 93 +++++++++++++++++-- 15 files changed, 188 insertions(+), 84 deletions(-) diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx index 8c791964ab..a140fe71e8 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx @@ -16,7 +16,7 @@ import Matrix from "../../../../../common/Matrix"; import type { DataCompProps } from "../utils"; function DebugMatrix({ studyId, filename, filePath, canEdit }: DataCompProps) { - return ; + return ; } export default DebugMatrix; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx index 372ae3cfce..62751dae44 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx @@ -39,7 +39,7 @@ function HydroMatrix({ type }: Props) { customColumns={hydroMatrix.columns} customRowHeaders={hydroMatrix.rowHeaders} aggregateColumns={hydroMatrix.aggregates} - enableDateTimeColumn={hydroMatrix.enableDateTimeColumn} + dateTimeColumn={hydroMatrix.dateTimeColumn} readOnly={hydroMatrix.readOnly} showPercent={hydroMatrix.showPercent} fetchMatrixData={hydroMatrix.fetchFn} diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrixDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrixDialog.tsx index 73b109f7dc..67a1cb5649 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrixDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrixDialog.tsx @@ -129,9 +129,9 @@ function HydroMatrixDialog({ open, onClose, type }: Props) { customRowHeaders={matrix.index} fetchMatrixData={fetchFn} readOnly - enableDateTimeColumn={false} - enableTimeSeriesColumns={false} - isImportDisabled + dateTimeColumn={false} + timeSeriesColumns={false} + canImport /> ) : ( diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts index db3d8802a0..174fb7cd76 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts @@ -53,7 +53,7 @@ export interface HydroMatrixProps { rowHeaders?: string[]; fetchFn?: fetchMatrixFn; aggregates?: AggregateConfig; - enableDateTimeColumn?: boolean; + dateTimeColumn?: boolean; readOnly?: boolean; showPercent?: boolean; } @@ -131,7 +131,7 @@ export const MATRICES: Matrices = { url: "input/hydro/common/capacity/creditmodulations_{areaId}", columns: generateColumns("%"), rowHeaders: ["Generating Power", "Pumping Power"], - enableDateTimeColumn: false, + dateTimeColumn: false, }, [HydroMatrix.EnergyCredits]: { title: "Standard Credits", @@ -196,19 +196,20 @@ export const MATRICES: Matrices = { "November", "December", ], + dateTimeColumn: false, }, [HydroMatrix.Allocation]: { title: "Allocation", url: "", fetchFn: getAllocationMatrix, - enableDateTimeColumn: false, + dateTimeColumn: false, readOnly: true, }, [HydroMatrix.Correlation]: { title: "Correlation", url: "", fetchFn: getCorrelationMatrix, - enableDateTimeColumn: false, + dateTimeColumn: false, readOnly: true, }, }; diff --git a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/ResultFilters.tsx b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/ResultFilters.tsx index d6295c3127..85909f47e3 100644 --- a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/ResultFilters.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/ResultFilters.tsx @@ -45,7 +45,30 @@ function ResultFilters({ }: Props) { const { t } = useTranslation(); - const filters = [ + const handleYearChange = (event: React.ChangeEvent) => { + const newValue = event.target.value; + + // Allow empty string (when backspacing) + if (newValue === "") { + setYear(1); // Reset to minimum value + return; + } + + const numValue = Number(newValue); + + // Validate the number is within bounds + if (!isNaN(numValue)) { + if (numValue < 1) { + setYear(1); + } else if (numValue > maxYear) { + setYear(maxYear); + } else { + setYear(numValue); + } + } + }; + + const FILTERS = [ { label: `${t("study.results.mc")}:`, field: ( @@ -70,9 +93,7 @@ function ResultFilters({ min: 1, max: maxYear, }} - onChange={(event) => { - setYear(Number(event.target.value)); - }} + onChange={handleYearChange} /> )} @@ -135,7 +156,7 @@ function ResultFilters({ py: 1, }} > - {filters.map(({ label, field }) => ( + {FILTERS.map(({ label, field }) => ( ) } @@ -280,7 +281,7 @@ function ResultDetails() { ) } diff --git a/webapp/src/components/common/EditableMatrix/index.tsx b/webapp/src/components/common/EditableMatrix/index.tsx index 42802118eb..1054812b98 100644 --- a/webapp/src/components/common/EditableMatrix/index.tsx +++ b/webapp/src/components/common/EditableMatrix/index.tsx @@ -41,7 +41,7 @@ interface PropTypes { columnsNames?: string[] | readonly string[]; rowNames?: string[]; computStats?: MatrixStats; - isPercentDisplayEnabled?: boolean; + showPercent?: boolean; } type CellType = Array; @@ -68,7 +68,7 @@ function EditableMatrix(props: PropTypes) { columnsNames, rowNames, computStats, - isPercentDisplayEnabled = false, + showPercent = false, } = props; const { data = [], columns = [], index = [] } = matrix; const prependIndex = index.length > 0 && matrixTime; @@ -96,7 +96,7 @@ function EditableMatrix(props: PropTypes) { const edits = cellChangesToMatrixEdits( filteredChanges, matrixTime, - isPercentDisplayEnabled, + showPercent, ); onUpdate(edits, source); @@ -151,7 +151,7 @@ function EditableMatrix(props: PropTypes) { ); } - if (isPercentDisplayEnabled) { + if (showPercent) { tmpRow = tmpRow.map((cell) => { if (typeof cell === "number") { return cell * 100; @@ -173,7 +173,7 @@ function EditableMatrix(props: PropTypes) { readOnly, matrixIndex, computStats, - isPercentDisplayEnabled, + showPercent, ]); const matrixRowNames = diff --git a/webapp/src/components/common/Matrix/components/MatrixActions/index.tsx b/webapp/src/components/common/Matrix/components/MatrixActions/index.tsx index b5faa9b785..f64c255224 100644 --- a/webapp/src/components/common/Matrix/components/MatrixActions/index.tsx +++ b/webapp/src/components/common/Matrix/components/MatrixActions/index.tsx @@ -31,7 +31,7 @@ interface MatrixActionsProps { redo: VoidFunction; canUndo: boolean; canRedo: boolean; - isImportDisabled?: boolean; + canImport?: boolean; } function MatrixActions({ @@ -46,7 +46,7 @@ function MatrixActions({ redo, canUndo, canRedo, - isImportDisabled = false, + canImport = false, }: MatrixActionsProps) { const { t } = useTranslation(); @@ -99,7 +99,7 @@ function MatrixActions({ ButtonProps={{ startIcon: , }} - disabled={isSubmitting || isImportDisabled} + disabled={isSubmitting || canImport} > {t("global.import")} diff --git a/webapp/src/components/common/Matrix/components/MatrixGrid/index.tsx b/webapp/src/components/common/Matrix/components/MatrixGrid/index.tsx index 48cc0ba540..07ffd84d2c 100644 --- a/webapp/src/components/common/Matrix/components/MatrixGrid/index.tsx +++ b/webapp/src/components/common/Matrix/components/MatrixGrid/index.tsx @@ -44,8 +44,8 @@ export interface MatrixGridProps { height?: string; onCellEdit?: (update: GridUpdate) => void; onMultipleCellsEdit?: (updates: GridUpdate[]) => void; - isReadOnly?: boolean; - isPercentDisplayEnabled?: boolean; + readOnly?: boolean; + showPercent?: boolean; } function MatrixGrid({ @@ -59,8 +59,8 @@ function MatrixGrid({ height = "100%", onCellEdit, onMultipleCellsEdit, - isReadOnly, - isPercentDisplayEnabled, + readOnly, + showPercent, }: MatrixGridProps) { const [columns, setColumns] = useState(initialColumns); const [selection, setSelection] = useState({ @@ -80,7 +80,7 @@ function MatrixGrid({ useMatrixPortal(); const theme = useMemo(() => { - if (isReadOnly) { + if (readOnly) { return { ...darkTheme, ...readOnlyDarkTheme, @@ -88,7 +88,7 @@ function MatrixGrid({ } return darkTheme; - }, [isReadOnly]); + }, [readOnly]); const getCellContent = useGridCellContent( data, @@ -97,8 +97,8 @@ function MatrixGrid({ dateTime, aggregates, rowHeaders, - isReadOnly, - isPercentDisplayEnabled, + readOnly, + showPercent, ); //////////////////////////////////////////////////////////////// diff --git a/webapp/src/components/common/Matrix/components/MatrixGrid/styles.ts b/webapp/src/components/common/Matrix/components/MatrixGrid/styles.ts index ba084c94cb..834af21686 100644 --- a/webapp/src/components/common/Matrix/components/MatrixGrid/styles.ts +++ b/webapp/src/components/common/Matrix/components/MatrixGrid/styles.ts @@ -59,6 +59,7 @@ export const readOnlyDarkTheme: Partial = { accentLight: "rgba(74, 76, 102, 0.2)", borderColor: "rgba(255, 255, 255, 0.08)", drilldownBorder: "rgba(255, 255, 255, 0.2)", + headerFontStyle: "bold 11px", }; export const aggregatesTheme: Partial = { @@ -66,7 +67,7 @@ export const aggregatesTheme: Partial = { bgCellMedium: "#383A5C", textDark: "#FFFFFF", fontFamily: "Inter, sans-serif", - baseFontStyle: "bold 13px", + baseFontStyle: "13px", editorFontSize: "13px", headerFontStyle: "bold 11px", }; diff --git a/webapp/src/components/common/Matrix/hooks/useGridCellContent/index.ts b/webapp/src/components/common/Matrix/hooks/useGridCellContent/index.ts index 0e20b0b2b9..7b12319381 100644 --- a/webapp/src/components/common/Matrix/hooks/useGridCellContent/index.ts +++ b/webapp/src/components/common/Matrix/hooks/useGridCellContent/index.ts @@ -61,6 +61,7 @@ const cellContentGenerators: Record = { allowOverlay: true, decimalSeparator: ".", thousandSeparator: " ", + contentAlign: "right", }; }, [Column.Aggregate]: (row, col, column, data, dateTime, aggregates) => { @@ -74,6 +75,7 @@ const cellContentGenerators: Record = { allowOverlay: false, decimalSeparator: ".", thousandSeparator: " ", + contentAlign: "right", }; }, }; @@ -100,8 +102,8 @@ const cellContentGenerators: Record = { * @param dateTime - Optional array of date-time strings for date columns. * @param aggregates - Optional object mapping column IDs to arrays of aggregated values. * @param rowHeaders - Optional array of row header labels. - * @param isReadOnly - Whether the grid is read-only (default is false). - * @param isPercentDisplayEnabled - Whether to display number values as percentages (default is false). + * @param readOnly - Whether the grid is read-only (default is false). + * @param showPercent - Whether to display number values as percentages (default is false). * @returns A function that accepts a grid item and returns the configured grid cell content. */ export function useGridCellContent( @@ -111,8 +113,8 @@ export function useGridCellContent( dateTime?: string[], aggregates?: Partial, rowHeaders?: string[], - isReadOnly = false, - isPercentDisplayEnabled = false, + readOnly = false, + showPercent = false, ): (cell: Item) => GridCell { const columnMap = useMemo(() => { return new Map(columns.map((column, index) => [index, column])); @@ -171,17 +173,17 @@ export function useGridCellContent( ); // Display number values as percentages if enabled - if (isPercentDisplayEnabled && gridCell.kind === GridCellKind.Number) { + if (showPercent && gridCell.kind === GridCellKind.Number) { return { ...gridCell, displayData: `${gridCell.data}%`, // If ReadOnly is enabled, we don't want to allow overlay - allowOverlay: !isReadOnly, + allowOverlay: !readOnly, }; } // Prevent updates for read-only grids - if (isReadOnly) { + if (readOnly) { return { ...gridCell, allowOverlay: false, @@ -197,8 +199,8 @@ export function useGridCellContent( dateTime, aggregates, rowHeaders, - isReadOnly, - isPercentDisplayEnabled, + readOnly, + showPercent, ], ); diff --git a/webapp/src/components/common/Matrix/hooks/useMatrix/index.ts b/webapp/src/components/common/Matrix/hooks/useMatrix/index.ts index b781a9400c..27e727b602 100644 --- a/webapp/src/components/common/Matrix/hooks/useMatrix/index.ts +++ b/webapp/src/components/common/Matrix/hooks/useMatrix/index.ts @@ -55,8 +55,8 @@ interface DataState { export function useMatrix( studyId: string, url: string, - enableDateTimeColumn: boolean, - enableTimeSeriesColumns: boolean, + dateTimeColumn: boolean, + timeSeriesColumns: boolean, enableRowHeaders?: boolean, aggregatesConfig?: AggregateConfig, customColumns?: string[] | readonly string[], @@ -143,7 +143,7 @@ export function useMatrix( const baseColumns: EnhancedGridColumn[] = []; - if (enableDateTimeColumn) { + if (dateTimeColumn) { baseColumns.push({ id: "date", title: "Date", @@ -163,7 +163,7 @@ export function useMatrix( } const dataColumns = generateDataColumns( - enableTimeSeriesColumns, + timeSeriesColumns, columnCount, customColumns, colWidth, @@ -185,9 +185,9 @@ export function useMatrix( return [...baseColumns, ...dataColumns, ...aggregatesColumns]; }, [ currentState.data, - enableDateTimeColumn, + dateTimeColumn, enableRowHeaders, - enableTimeSeriesColumns, + timeSeriesColumns, columnCount, customColumns, colWidth, diff --git a/webapp/src/components/common/Matrix/index.tsx b/webapp/src/components/common/Matrix/index.tsx index 014703be76..95a09d6197 100644 --- a/webapp/src/components/common/Matrix/index.tsx +++ b/webapp/src/components/common/Matrix/index.tsx @@ -25,13 +25,14 @@ import MatrixActions from "./components/MatrixActions"; import EmptyView from "../page/SimpleContent"; import { fetchMatrixFn } from "../../App/Singlestudy/explore/Modelization/Areas/Hydro/utils"; import { AggregateConfig } from "./shared/types"; +import { GridOff } from "@mui/icons-material"; interface MatrixProps { url: string; title?: string; customRowHeaders?: string[]; - enableDateTimeColumn?: boolean; - enableTimeSeriesColumns?: boolean; + dateTimeColumn?: boolean; + timeSeriesColumns?: boolean; aggregateColumns?: AggregateConfig; rowHeaders?: boolean; showPercent?: boolean; @@ -39,15 +40,15 @@ interface MatrixProps { customColumns?: string[] | readonly string[]; colWidth?: number; fetchMatrixData?: fetchMatrixFn; - isImportDisabled?: boolean; + canImport?: boolean; } function Matrix({ url, title = "global.timeSeries", customRowHeaders = [], - enableDateTimeColumn = true, - enableTimeSeriesColumns = true, + dateTimeColumn = true, + timeSeriesColumns = true, aggregateColumns = false, rowHeaders = customRowHeaders.length > 0, showPercent = false, @@ -55,7 +56,7 @@ function Matrix({ customColumns, colWidth, fetchMatrixData, - isImportDisabled = false, + canImport = false, }: MatrixProps) { const { t } = useTranslation(); const { study } = useOutletContext<{ study: StudyMetadata }>(); @@ -81,8 +82,8 @@ function Matrix({ } = useMatrix( study.id, url, - enableDateTimeColumn, - enableTimeSeriesColumns, + dateTimeColumn, + timeSeriesColumns, rowHeaders, aggregateColumns, customColumns, @@ -102,10 +103,6 @@ function Matrix({ return ; } - if (!data[0]?.length) { - return ; - } - return ( @@ -122,22 +119,26 @@ function Matrix({ redo={redo} canUndo={canUndo} canRedo={canRedo} - isImportDisabled={isImportDisabled} + canImport={canImport} /> - + {!data[0]?.length ? ( + + ) : ( + + )} {openImportDialog && ( { id: `custom${index + 1}`, title: titles[index], type: Column.Number, - style: "normal", - width, editable: true, }); }); diff --git a/webapp/src/components/common/Matrix/shared/utils.ts b/webapp/src/components/common/Matrix/shared/utils.ts index de9b24277c..0938519418 100644 --- a/webapp/src/components/common/Matrix/shared/utils.ts +++ b/webapp/src/components/common/Matrix/shared/utils.ts @@ -169,19 +169,15 @@ export function generateTimeSeriesColumns({ * * @param customColumns - An array of strings representing the custom column titles. * @param customColumns.titles - The titles of the custom columns. - * @param customColumns.width - The width of each custom column. * @returns An array of EnhancedGridColumn objects representing the generated custom columns. */ export function generateCustomColumns({ titles, - width, }: CustomColumnOptions): EnhancedGridColumn[] { return titles.map((title, index) => ({ id: `custom${index + 1}`, title, type: Column.Number, - style: "normal", - width, editable: true, })); } @@ -189,14 +185,14 @@ export function generateCustomColumns({ /** * Generates an array of data columns for a matrix grid. * - * @param enableTimeSeriesColumns - A boolean indicating whether to enable time series columns. + * @param timeSeriesColumns - A boolean indicating whether to enable time series columns. * @param columnCount - The number of columns to generate. * @param customColumns - An optional array of custom column titles. * @param colWidth - The width of each column. * @returns An array of EnhancedGridColumn objects representing the generated data columns. */ export function generateDataColumns( - enableTimeSeriesColumns: boolean, + timeSeriesColumns: boolean, columnCount: number, customColumns?: string[] | readonly string[], colWidth?: number, @@ -207,7 +203,7 @@ export function generateDataColumns( } // Else, generate time series columns if enabled - if (enableTimeSeriesColumns) { + if (timeSeriesColumns) { return generateTimeSeriesColumns({ count: columnCount }); } @@ -282,3 +278,86 @@ export function calculateMatrixAggregates( return aggregates; } + +/** + * Creates grouped columns specifically for result matrices by processing title arrays. + * + * This function expects columns with titles in a specific array format [variable, unit, stat]: + * - Position 1: Variable name (e.g., "OV. COST") + * - Position 2: Unit (e.g., "Euro", "MW") + * - Position 3: Statistic type (e.g., "MIN", "MAX", "STD") + * + * Example of expected title format: + * ```typescript + * { + * id: "custom1", + * title: ["OV. COST", "Euro", "MIN"], // [variable, unit, stat] + * type: "number", + * editable: true + * } + * ``` + * + * !Important: Do not use outside of results matrices. + * This function relies on array positions to determine meaning. + * It assumes the API provides data in the correct format: + * - titles[0] will always be the variable name + * - titles[1] will always be the unit + * - titles[2] will always be the statistic type + * This makes the solution fragile to API changes. + * + * @param columns - Array of EnhancedGridColumn objects to be processed + * @returns Array of EnhancedGridColumn objects with grouping applied + * + * @example + * ```typescript + * // Input columns + * const columns = [ + * { id: "col1", title: ["OV. COST", "Euro", "MIN"], type: "number", editable: true }, + * { id: "col2", title: ["OV. COST", "Euro", "MAX"], type: "number", editable: true } + * ]; + * // Both columns will be grouped under "OV. COST (Euro)" + * ``` + */ +export function groupResultColumns( + columns: EnhancedGridColumn[], +): EnhancedGridColumn[] { + return columns.map((column) => { + try { + const titles = Array.isArray(column.title) + ? column.title + : [String(column.title)]; + + // Extract and validate components + // [0]: Variable name (e.g., "OV. COST") + // [1]: Unit (e.g., "Euro") + // [2]: Statistic type (e.g., "MIN", "MAX", "STD") + const [variable, unit, stat] = titles.map((t) => String(t).trim()); + + // Create group name: + // - If unit exists and is not empty/whitespace, add it in parentheses + // - If no unit or empty unit, use variable name alone + const hasUnit = unit && unit.trim().length > 0; + const title = hasUnit ? `${variable} (${unit})` : variable; + + // If no stats, it does not make sense to group columns + if (!stat) { + return { + ...column, + title, + }; + } + + return { + ...column, + group: title, // Group header title + title: stat.toLowerCase(), // Sub columns title + themeOverride: { + bgHeader: "#2D2E40", // Sub columns bg color + }, + }; + } catch (error) { + console.error(`Error processing column ${column.id}:`, error); + return column; + } + }); +} From ecb9074970fc267b93fe8be772173fc5c514ed3d Mon Sep 17 00:00:00 2001 From: Samir Kamal <1954121+skamril@users.noreply.github.com> Date: Wed, 13 Nov 2024 10:30:14 +0100 Subject: [PATCH 158/182] fix(ui-commons): remove `variant` prop from LinearProgressWithLabel progress bars in Tasks view was broken --- .../App/Singlestudy/FreezeStudy.tsx | 22 +++---------------- .../common/LinearProgressWithLabel.tsx | 12 +++++----- 2 files changed, 10 insertions(+), 24 deletions(-) diff --git a/webapp/src/components/App/Singlestudy/FreezeStudy.tsx b/webapp/src/components/App/Singlestudy/FreezeStudy.tsx index 7462d5ccd4..130455b147 100644 --- a/webapp/src/components/App/Singlestudy/FreezeStudy.tsx +++ b/webapp/src/components/App/Singlestudy/FreezeStudy.tsx @@ -40,7 +40,7 @@ import useAutoUpdateRef from "@/hooks/useAutoUpdateRef"; interface BlockingTask { id: TaskDTO["id"]; type: TTaskType; - progress: number; + progress?: number; error?: string; } @@ -53,7 +53,6 @@ const BLOCKING_TASK_TYPES = [ TaskType.ThermalClusterSeriesGeneration, ] as const; -const PROGRESS_INDETERMINATE = -1; const PROGRESS_COMPLETE = 100; function getChannel(id: TaskDTO["id"]) { @@ -84,7 +83,6 @@ function FreezeStudy({ studyId }: FreezeStudyProps) { tasks.map((task) => ({ id: task.id, type: task.type!, - progress: PROGRESS_INDETERMINATE, })), ); @@ -106,13 +104,7 @@ function FreezeStudy({ studyId }: FreezeStudyProps) { const { id, type, study_id: taskStudyId } = event.payload; if (taskStudyId === studyId && BLOCKING_TASK_TYPES.includes(type)) { - setBlockingTasks((tasks) => [ - ...tasks, - { - ...event.payload, - progress: PROGRESS_INDETERMINATE, - }, - ]); + setBlockingTasks((tasks) => [...tasks, event.payload]); // For getting other events subscribeWsChannels(getChannel(id)); @@ -199,15 +191,7 @@ function FreezeStudy({ studyId }: FreezeStudyProps) { + } secondary={t(`tasks.type.${type}`)} /> diff --git a/webapp/src/components/common/LinearProgressWithLabel.tsx b/webapp/src/components/common/LinearProgressWithLabel.tsx index 77c5491c91..d70ea84465 100644 --- a/webapp/src/components/common/LinearProgressWithLabel.tsx +++ b/webapp/src/components/common/LinearProgressWithLabel.tsx @@ -38,16 +38,18 @@ function getColor(value = 0, error = false) { interface LinearProgressWithLabelProps { value?: LinearProgressProps["value"]; - variant?: LinearProgressProps["variant"]; tooltip?: string; error?: boolean | string; sx?: SxProps; } function LinearProgressWithLabel(props: LinearProgressWithLabelProps) { - const { value, variant, tooltip, error, sx } = props; + const { value, tooltip, error, sx } = props; const progress = R.clamp(0, 100, value || 0); const hasError = error !== undefined; + const variant = + typeof value === "number" || hasError ? "determinate" : "indeterminate"; + const { t } = useTranslation(); const content = ( @@ -60,17 +62,17 @@ function LinearProgressWithLabel(props: LinearProgressWithLabelProps) { - {(variant === "determinate" || hasError) && ( + {variant === "determinate" && ( {`${Math.round(progress)}%`} {typeof error === "string" && ( - + )} From ff721895a2f5f720ffba00481ec0addac2dde0eb Mon Sep 17 00:00:00 2001 From: Samir Kamal <1954121+skamril@users.noreply.github.com> Date: Wed, 13 Nov 2024 10:31:35 +0100 Subject: [PATCH 159/182] feat(ui-api,ui-study): add `progress` key in TaskDTO and use it in FreezeStudy update --- .../src/components/App/Singlestudy/FreezeStudy.tsx | 13 +++++++++++-- webapp/src/services/api/tasks/types.ts | 1 + 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/webapp/src/components/App/Singlestudy/FreezeStudy.tsx b/webapp/src/components/App/Singlestudy/FreezeStudy.tsx index 130455b147..287dca1852 100644 --- a/webapp/src/components/App/Singlestudy/FreezeStudy.tsx +++ b/webapp/src/components/App/Singlestudy/FreezeStudy.tsx @@ -159,8 +159,17 @@ function FreezeStudy({ studyId }: FreezeStudyProps) { message: task.result?.message || "", type: task.type!, }; - - if (task.status === TaskStatus.Failed) { + if (task.status === TaskStatus.Running) { + if (typeof task.progress === "number") { + listener({ + type: WsEventType.TaskProgress, + payload: { + task_id: task.id, + progress: task.progress, + }, + }); + } + } else if (task.status === TaskStatus.Failed) { listener({ type: WsEventType.TaskFailed, payload }); } else if (task.status === TaskStatus.Completed) { listener({ type: WsEventType.TaskCompleted, payload }); diff --git a/webapp/src/services/api/tasks/types.ts b/webapp/src/services/api/tasks/types.ts index fb514b3784..7d2eb1658a 100644 --- a/webapp/src/services/api/tasks/types.ts +++ b/webapp/src/services/api/tasks/types.ts @@ -27,6 +27,7 @@ export interface TaskDTO extends IdentityDTO { ref_id?: string; creation_date_utc: string; completion_date_utc?: string; + progress?: number; result?: { success: boolean; message: string; From b0b298ed015cd0689b5b71207bba6f882af91b2d Mon Sep 17 00:00:00 2001 From: maugde <167874615+maugde@users.noreply.github.com> Date: Wed, 13 Nov 2024 14:59:29 +0100 Subject: [PATCH 160/182] feat(auto_archive_service): increase cleaning snapshot frequency (#2213) --- antarest/core/config.py | 2 +- antarest/study/storage/auto_archive_service.py | 9 +++++---- .../study/storage/variantstudy/variant_study_service.py | 2 +- docs/install/1-CONFIG.md | 2 +- tests/storage/business/test_autoarchive_service.py | 2 +- 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/antarest/core/config.py b/antarest/core/config.py index 0ff5082d54..7a69835119 100644 --- a/antarest/core/config.py +++ b/antarest/core/config.py @@ -155,7 +155,7 @@ class StorageConfig: auto_archive_dry_run: bool = False auto_archive_sleeping_time: int = 3600 auto_archive_max_parallel: int = 5 - snapshot_retention_days: int = 1 + snapshot_retention_days: int = 7 @classmethod def from_dict(cls, data: JSON) -> "StorageConfig": diff --git a/antarest/study/storage/auto_archive_service.py b/antarest/study/storage/auto_archive_service.py index c9c1307604..8dbf6c3de0 100644 --- a/antarest/study/storage/auto_archive_service.py +++ b/antarest/study/storage/auto_archive_service.py @@ -84,10 +84,11 @@ def _try_archive_studies(self) -> None: f"Failed to auto archive study {study_id}", exc_info=e, ) - - self.study_service.storage_service.variant_study_service.clear_all_snapshots( - datetime.timedelta(days=self.config.storage.snapshot_retention_days) - ) + with db(): + self.study_service.storage_service.variant_study_service.clear_all_snapshots( + datetime.timedelta(days=self.config.storage.snapshot_retention_days), + params=RequestParameters(DEFAULT_ADMIN_USER), + ) def _loop(self) -> None: while True: diff --git a/antarest/study/storage/variantstudy/variant_study_service.py b/antarest/study/storage/variantstudy/variant_study_service.py index df5fde4456..9d62589006 100644 --- a/antarest/study/storage/variantstudy/variant_study_service.py +++ b/antarest/study/storage/variantstudy/variant_study_service.py @@ -1062,7 +1062,7 @@ def initialize_additional_data(self, variant_study: VariantStudy) -> bool: ) return False - def clear_all_snapshots(self, retention_time: timedelta, params: t.Optional[RequestParameters] = None) -> str: + def clear_all_snapshots(self, retention_time: timedelta, params: RequestParameters) -> str: """ Admin command that clear all variant snapshots older than `retention_hours` (in hours). Only available for admin users. diff --git a/docs/install/1-CONFIG.md b/docs/install/1-CONFIG.md index b9e04f644f..bad109d17a 100644 --- a/docs/install/1-CONFIG.md +++ b/docs/install/1-CONFIG.md @@ -307,7 +307,7 @@ default: ## **snapshot_retention_days** - **Type:** Integer -- **Default value:** 1 +- **Default value:** 7 - **Description:** Snapshots of variant not updated or accessed for **snapshot_retention_days** days will be cleared. ## **watcher_lock** diff --git a/tests/storage/business/test_autoarchive_service.py b/tests/storage/business/test_autoarchive_service.py index eb04adf2b2..57847b6ce8 100644 --- a/tests/storage/business/test_autoarchive_service.py +++ b/tests/storage/business/test_autoarchive_service.py @@ -95,5 +95,5 @@ def test_auto_archival(tmp_path: Path): # Check if the `clear_all_snapshots` method was called with default values study_service.storage_service.variant_study_service.clear_all_snapshots.assert_called_once_with( - datetime.timedelta(days=1), + datetime.timedelta(days=7), params=RequestParameters(DEFAULT_ADMIN_USER) ) From fa42e77a43928f33b25b4fa0f9843d200da2c487 Mon Sep 17 00:00:00 2001 From: Samir Kamal <1954121+skamril@users.noreply.github.com> Date: Wed, 13 Nov 2024 17:10:03 +0100 Subject: [PATCH 161/182] feat(ui-study): change error display in FreezeStudy (#2222) --- .../App/Singlestudy/FreezeStudy.tsx | 41 ++++++++++++++++--- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/webapp/src/components/App/Singlestudy/FreezeStudy.tsx b/webapp/src/components/App/Singlestudy/FreezeStudy.tsx index 287dca1852..2088dbaf25 100644 --- a/webapp/src/components/App/Singlestudy/FreezeStudy.tsx +++ b/webapp/src/components/App/Singlestudy/FreezeStudy.tsx @@ -31,6 +31,7 @@ import { ListItem, ListItemText, Paper, + Typography, } from "@mui/material"; import { useEffect, useState } from "react"; import LinearProgressWithLabel from "@/components/common/LinearProgressWithLabel"; @@ -194,22 +195,52 @@ function FreezeStudy({ studyId }: FreezeStudyProps) { return ( 0} sx={{ position: "absolute" }}> - - + + {blockingTasks.map(({ id, type, progress, error }) => ( + + } + secondary={ + <> + + {t(`tasks.type.${type}`)} + + {error && ( + + {error} + + )} + } - secondary={t(`tasks.type.${type}`)} /> ))} {!hasLoadingTask && ( - - {study.archived ? ( - - - - - {t("global.unarchive")} - - ) : ( -
- - - - - {t("global.launch")} - - { - setOpenPropertiesDialog(true); - handleMenuClose(); - }} - > - - - - {t("study.properties")} - - - - - - {t("global.copy")} - - {study.managed && ( - { - setOpenMoveDialog(true); - handleMenuClose(); - }} - > - - - - {t("studies.moveStudy")} - - )} - { - setOpenExportModal(true); - handleMenuClose(); - }} - > - - - - {t("global.export")} - - {study.managed && ( - - - - - {t("global.archive")} - - )} -
- )} - {study.managed && ( - { - setOpenConfirmDeleteDialog(true); - handleMenuClose(); - }} - > - - - - - {t("global.delete")} - - - )} -
- - {openPropertiesDialog && study && ( - setOpenPropertiesDialog(false)} - study={study} - /> - )} - {openConfirmDeleteDialog && ( - setOpenConfirmDeleteDialog(false)} - onConfirm={handleDelete} - alert="warning" - open - > - {t("studies.question.delete")} - - )} - {openExportModal && ( - setOpenExportModal(false)} - study={study} - /> - )} - {openMoveDialog && ( - setOpenMoveDialog(false)} study={study} + setStudyToLaunch={setStudyToLaunch} + setOpenDialog={setOpenDialog} /> - )} + + + + {t("studies.question.delete")} + + + ); }, areEqual); diff --git a/webapp/src/components/App/Studies/StudyCard/types.tsx b/webapp/src/components/App/Studies/StudyCard/types.tsx new file mode 100644 index 0000000000..8c7ff608f5 --- /dev/null +++ b/webapp/src/components/App/Studies/StudyCard/types.tsx @@ -0,0 +1,15 @@ +/** + * Copyright (c) 2024, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + +export type DialogsType = "move" | "properties" | "export" | "delete"; From 35a4f867bc3ae53dfd981d07613c35e733ea8286 Mon Sep 17 00:00:00 2001 From: Samir Kamal <1954121+skamril@users.noreply.github.com> Date: Mon, 25 Nov 2024 15:11:17 +0100 Subject: [PATCH 174/182] feat(ui-i18n): change translations for thermal fields (#2246) ANT-2460 --- webapp/public/locales/en/main.json | 2 +- webapp/public/locales/fr/main.json | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/webapp/public/locales/en/main.json b/webapp/public/locales/en/main.json index 58404fb446..718b30fc78 100644 --- a/webapp/public/locales/en/main.json +++ b/webapp/public/locales/en/main.json @@ -525,7 +525,7 @@ "study.modelization.clusters.costGeneration": "TS Cost", "study.modelization.clusters.efficiency": "Efficiency (%)", "study.modelization.clusters.timeSeriesGen": "Time-Series generation", - "study.modelization.clusters.genTs": "Generate Time-Series", + "study.modelization.clusters.genTs": "Parameter", "study.modelization.clusters.volatilityForced": "Volatility forced", "study.modelization.clusters.volatilityPlanned": "Volatility planned", "study.modelization.clusters.lawForced": "Law forced", diff --git a/webapp/public/locales/fr/main.json b/webapp/public/locales/fr/main.json index 783346f988..d119bd8f8a 100644 --- a/webapp/public/locales/fr/main.json +++ b/webapp/public/locales/fr/main.json @@ -525,11 +525,11 @@ "study.modelization.clusters.costGeneration": "Coût de génération", "study.modelization.clusters.efficiency": "Rendement (%)", "study.modelization.clusters.timeSeriesGen": "Génération des Séries temporelles", - "study.modelization.clusters.genTs": "Générer des Séries temporelles", - "study.modelization.clusters.volatilityForced": "Volatilité forcée", - "study.modelization.clusters.volatilityPlanned": "Volatilité prévue", - "study.modelization.clusters.lawForced": "Loi forcée", - "study.modelization.clusters.lawPlanned": "Loi planifiée", + "study.modelization.clusters.genTs": "Paramètre", + "study.modelization.clusters.volatilityForced": "Arrêts fortuits – Volatilité", + "study.modelization.clusters.volatilityPlanned": "Arrêts planifiés – Volatilité", + "study.modelization.clusters.lawForced": "Loi des arrêts fortuits", + "study.modelization.clusters.lawPlanned": "Loi des arrêts planifiés", "study.modelization.clusters.matrix.common": "Common", "study.modelization.clusters.matrix.tsGen": "TS generator", "study.modelization.clusters.matrix.timeSeries": "Séries temporelles", From 4c4209cf76bb006e9a2671ecaf65351a5ebd4647 Mon Sep 17 00:00:00 2001 From: Sylvain Leclerc Date: Tue, 26 Nov 2024 09:06:02 +0100 Subject: [PATCH 175/182] fix(desktop,windows): wait a few seconds for browser to open (#2247) Signed-off-by: Sylvain Leclerc --- antarest/desktop/systray_app.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/antarest/desktop/systray_app.py b/antarest/desktop/systray_app.py index 8f530d82c9..9d53ebb185 100644 --- a/antarest/desktop/systray_app.py +++ b/antarest/desktop/systray_app.py @@ -50,8 +50,13 @@ def start_server(config_file: Path) -> Process: return server -def open_app() -> None: - webbrowser.open("http://localhost:8080") +def open_app(wait_seconds: int = 0) -> None: + """ + Open antares-web in a new browser tab. + Optionally, waits for some seconds to ensure it does have time for opening. + """ + webbrowser.open_new_tab("http://localhost:8080") + time.sleep(wait_seconds) def monitor_server_process(server: Process, app: QApplication) -> None: @@ -173,7 +178,9 @@ def run_systray_app(config_file: Path) -> None: notification_popup( "Antares Web Server already running, you can manage the application within the system tray.", threaded=False ) - open_app() + # On windows at least, if the current process closes too fast, + # the browser does not have time to open --> waiting an arbitrary 10s + open_app(wait_seconds=10) return notification_popup("Starting Antares Web Server...") systray_app = create_systray_app() From 0054f6c884c27b4da05154f331ca364d0a19d3da Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Wed, 27 Nov 2024 10:47:55 +0100 Subject: [PATCH 176/182] fix(outputs): allow reading inside archive + output with `.` in the name (#2249) --- .../rawstudy/model/filesystem/inode.py | 15 ++++-------- .../rawstudy/model/filesystem/lazy_node.py | 2 +- antarest/study/storage/utils.py | 4 +++- tests/storage/integration/test_STA_mini.py | 4 ++++ tests/storage/test_service.py | 23 ++++++++++++++++++- 5 files changed, 34 insertions(+), 14 deletions(-) diff --git a/antarest/study/storage/rawstudy/model/filesystem/inode.py b/antarest/study/storage/rawstudy/model/filesystem/inode.py index f88903c729..4b1046162a 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/inode.py +++ b/antarest/study/storage/rawstudy/model/filesystem/inode.py @@ -14,7 +14,7 @@ from pathlib import Path from typing import Any, Dict, Generic, List, Optional, Tuple, TypeVar -from antarest.core.exceptions import ShouldNotHappenException, WritingInsideZippedFileException +from antarest.core.exceptions import WritingInsideZippedFileException from antarest.core.utils.archives import extract_file_to_tmp_dir from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfig @@ -137,9 +137,7 @@ def _assert_url_end(self, url: Optional[List[str]] = None) -> None: if len(url) > 0: raise ValueError(f"url should be fully resolved when arrives on {self.__class__.__name__}") - def _extract_file_to_tmp_dir( - self, - ) -> Tuple[Path, Any]: + def _extract_file_to_tmp_dir(self, archived_path: Path) -> Tuple[Path, Any]: """ Happens when the file is inside an archive (aka self.config.zip_file is set) Unzip the file into a temporary directory. @@ -148,13 +146,8 @@ def _extract_file_to_tmp_dir( The actual path of the extracted file the tmp_dir object which MUST be cleared after use of the file """ - if self.config.archive_path is None: - raise ShouldNotHappenException() - inside_archive_path = self.config.path.relative_to(self.config.archive_path.parent / self.config.study_id) - if self.config.archive_path: - return extract_file_to_tmp_dir(self.config.archive_path, inside_archive_path) - else: - raise ShouldNotHappenException() + inside_archive_path = self.config.path.relative_to(archived_path.with_suffix("")) + return extract_file_to_tmp_dir(archived_path, inside_archive_path) def _assert_not_in_zipped_file(self) -> None: """Prevents writing inside a zip file""" diff --git a/antarest/study/storage/rawstudy/model/filesystem/lazy_node.py b/antarest/study/storage/rawstudy/model/filesystem/lazy_node.py index 6520802d90..2662cde82b 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/lazy_node.py +++ b/antarest/study/storage/rawstudy/model/filesystem/lazy_node.py @@ -48,7 +48,7 @@ def _get_real_file_path( ) -> t.Tuple[Path, t.Any]: tmp_dir = None if self.config.archive_path: - path, tmp_dir = self._extract_file_to_tmp_dir() + path, tmp_dir = self._extract_file_to_tmp_dir(self.config.archive_path) else: path = self.config.path return path, tmp_dir diff --git a/antarest/study/storage/utils.py b/antarest/study/storage/utils.py index ac4ba9acfb..1b63e4afbe 100644 --- a/antarest/study/storage/utils.py +++ b/antarest/study/storage/utils.py @@ -132,7 +132,9 @@ def find_single_output_path(all_output_path: Path) -> Path: def is_output_archived(path_output: Path) -> bool: # Returns True it the given path is archived or if adding a suffix to the path points to an existing path suffixes = [".zip"] - return path_output.suffix in suffixes or any(path_output.with_suffix(suffix).exists() for suffix in suffixes) + if path_output.suffixes and path_output.suffixes[-1] in suffixes: + return True + return any((path_output.parent / (path_output.name + suffix)).exists() for suffix in suffixes) def extract_output_name(path_output: Path, new_suffix_name: t.Optional[str] = None) -> str: diff --git a/tests/storage/integration/test_STA_mini.py b/tests/storage/integration/test_STA_mini.py index 35aaa4092d..7b1c1ee690 100644 --- a/tests/storage/integration/test_STA_mini.py +++ b/tests/storage/integration/test_STA_mini.py @@ -444,6 +444,10 @@ def test_sta_mini_input(storage_service, url: str, expected_output: dict): f"/v1/studies/{UUID}/raw?path=output/20201014-1422eco-hello/info/general/version", 700, ), + ( + f"/v1/studies/{UUID}/raw?path=output/20201014-1430adq-2/about-the-study/areas", + b"DE\r\nES\r\nFR\r\nIT\r\n", + ), ], ) def test_sta_mini_output(storage_service, url: str, expected_output: dict): diff --git a/tests/storage/test_service.py b/tests/storage/test_service.py index d15e8f6d7a..df65098dae 100644 --- a/tests/storage/test_service.py +++ b/tests/storage/test_service.py @@ -74,7 +74,12 @@ from antarest.study.storage.rawstudy.model.filesystem.raw_file_node import RawFileNode from antarest.study.storage.rawstudy.model.filesystem.root.filestudytree import FileStudyTree from antarest.study.storage.rawstudy.raw_study_service import RawStudyService -from antarest.study.storage.utils import assert_permission, assert_permission_on_studies, study_matcher +from antarest.study.storage.utils import ( + assert_permission, + assert_permission_on_studies, + is_output_archived, + study_matcher, +) from antarest.study.storage.variantstudy.business.matrix_constants_generator import GeneratorMatrixConstants from antarest.study.storage.variantstudy.model.command_context import CommandContext from antarest.study.storage.variantstudy.model.dbmodel import VariantStudy @@ -2014,3 +2019,19 @@ def test_upgrade_study__raw_study__failed(tmp_path: Path) -> None: # No event must be emitted event_bus.push.assert_not_called() + + +@pytest.mark.unit_test +def test_is_output_archived(tmp_path) -> None: + assert not is_output_archived(path_output=Path("fake_path")) + assert is_output_archived(path_output=Path("fake_path.zip")) + + zipped_output_path = tmp_path / "output.zip" + zipped_output_path.mkdir(parents=True) + assert is_output_archived(path_output=zipped_output_path) + assert is_output_archived(path_output=tmp_path / "output") + + zipped_with_suffix = tmp_path / "output_1.4.3.zip" + zipped_with_suffix.mkdir(parents=True) + assert is_output_archived(path_output=zipped_with_suffix) + assert is_output_archived(path_output=tmp_path / "output_1.4.3") From 45e356a4fab916eae6ffcc380e36fa195ebd08ad Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Thu, 28 Nov 2024 17:09:37 +0100 Subject: [PATCH 177/182] fix(export): allow export for zipped outputs (#2253) --- antarest/study/storage/abstract_storage_service.py | 2 +- tests/storage/business/test_export.py | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/antarest/study/storage/abstract_storage_service.py b/antarest/study/storage/abstract_storage_service.py index 782eb5516f..ccaa477673 100644 --- a/antarest/study/storage/abstract_storage_service.py +++ b/antarest/study/storage/abstract_storage_service.py @@ -314,7 +314,7 @@ def export_output(self, metadata: T, output_id: str, target: Path) -> None: logger.info(f"Exporting output {output_id} from study {metadata.id}") path_output = Path(metadata.path) / "output" / output_id - path_output_zip = Path(metadata.path) / "output" / f"{output_id}.{ArchiveFormat.ZIP}" + path_output_zip = Path(metadata.path) / "output" / f"{output_id}{ArchiveFormat.ZIP}" if path_output_zip.exists(): shutil.copyfile(path_output_zip, target) diff --git a/tests/storage/business/test_export.py b/tests/storage/business/test_export.py index e9e37211e1..2fb4b91411 100644 --- a/tests/storage/business/test_export.py +++ b/tests/storage/business/test_export.py @@ -19,6 +19,7 @@ from py7zr import SevenZipFile from antarest.core.config import Config, StorageConfig +from antarest.core.utils.archives import ArchiveFormat, archive_dir from antarest.study.model import DEFAULT_WORKSPACE_NAME, RawStudy from antarest.study.storage.rawstudy.raw_study_service import RawStudyService @@ -162,3 +163,9 @@ def test_export_output(tmp_path: Path): zipf = ZipFile(export_path) assert "file_output.txt" in zipf.namelist() + + # asserts exporting a zipped output doesn't raise an error + output_path = root / "output" / output_id + target_path = root / "output" / f"{output_id}.zip" + archive_dir(output_path, target_path, True, ArchiveFormat.ZIP) + study_service.export_output(study, output_id, export_path) From 2711e0b4c4050bcd6ed4a905041bc7a2806fb280 Mon Sep 17 00:00:00 2001 From: Deuneuv Makoundou <114937156+makdeuneuv@users.noreply.github.com> Date: Thu, 28 Nov 2024 17:21:21 +0100 Subject: [PATCH 178/182] docs: improve of the documentary tree and make some update (#2243) --- docs/architecture/5-roadmap.md | 1 - .../assets/media/img/installer_screenshot.png | Bin 0 -> 54590 bytes .../media/img/userguide_change_language.png | Bin 0 -> 190196 bytes .../media/img/userguide_token_creation.png | Bin 14601 -> 19644 bytes .../media/img/userguide_token_listing.png | Bin 104305 -> 241032 bytes .../media/img/userguide_token_result.png | Bin 64533 -> 54071 bytes .../01-configuration-general-tab.png | Bin 0 -> 232105 bytes ...figuration-general-themmatic-trimming1.png | Bin 0 -> 128803 bytes ...figuration-general-themmatic-trimming2.png | Bin 0 -> 154779 bytes ...2-configuration-timeseries-management1.png | Bin 0 -> 145105 bytes ...2-configuration-timeseries-management2.png | Bin 0 -> 148146 bytes .../media/user-guide/study/01-map-tab.png | Bin 0 -> 47090 bytes .../media/user-guide/study/01-map.tab.png | Bin 21290 -> 0 bytes .../media/user-guide/study/02-areas-tab.png | Bin 0 -> 47779 bytes .../media/user-guide/study/02-areas.tab.png | Bin 21286 -> 0 bytes .../media/user-guide/study/03-links-tab.png | Bin 0 -> 27209 bytes .../media/user-guide/study/03-links.tab.png | Bin 21189 -> 0 bytes .../study/04-binding-constraints-tab.png | Bin 0 -> 22524 bytes .../study/04-binding-constraints.tab.png | Bin 21271 -> 0 bytes .../media/user-guide/study/05-debug-tab.png | Bin 0 -> 158490 bytes .../media/user-guide/study/05-debug.tab.png | Bin 21302 -> 0 bytes .../user-guide/study/06-table-mode-tab.png | Bin 0 -> 340686 bytes .../user-guide/study/06-table-mode.tab.png | Bin 21251 -> 0 bytes .../study/07-map-layers-districts.png | Bin 0 -> 282350 bytes .../user-guide/study/08-layers-districts.png | Bin 0 -> 93902 bytes .../user-guide/study/09-results-view.png | Bin 0 -> 366444 bytes .../study/areas/01-properties-form.png | Bin 63873 -> 46696 bytes .../study/areas/03-thermals-form.png | Bin 0 -> 190937 bytes .../study/areas/03-thermals-series.png | Bin 0 -> 738495 bytes .../study/areas/03-thermals.form.png | Bin 70510 -> 0 bytes .../study/areas/03-thermals.series.png | Bin 90324 -> 0 bytes .../study/areas/04-renewables-activation.png | Bin 0 -> 183337 bytes .../study/areas/05-hydro-allocation.png | Bin 0 -> 70436 bytes .../study/areas/05-hydro-correlation.png | Bin 0 -> 113036 bytes .../05-hydro-dailypower-energycredits.png | Bin 0 -> 230776 bytes .../study/areas/05-hydro-inflowstructure.png | Bin 0 -> 277143 bytes .../study/areas/06-wind-activation.png | Bin 0 -> 187366 bytes .../study/areas/08-st-storages-form.png | Bin 0 -> 75047 bytes .../areas/08-st-storages-list-enable.png | Bin 0 -> 107203 bytes .../study/areas/08-st-storages-list.png | Bin 0 -> 103238 bytes .../study/areas/08-st-storages-series.png | Bin 0 -> 229615 bytes .../study/areas/08-st-storages.form.png | Bin 40588 -> 0 bytes .../study/areas/08-st-storages.list.png | Bin 61314 -> 0 bytes .../study/areas/08-st-storages.series.png | Bin 143376 -> 0 bytes .../2-add-new-antares-version.md | 0 docs/developer-guide/5-roadmap.md | 2 + .../architecture/0-introduction.md | 0 .../architecture/1-database.md | 0 .../install/0-INSTALL.md | 0 .../{ => developer-guide}/install/1-CONFIG.md | 0 .../{ => developer-guide}/install/2-DEPLOY.md | 17 +-- docs/index.md | 4 +- docs/user-guide/0-introduction.md | 2 +- docs/user-guide/1-interface.md | 40 ++++++- docs/user-guide/2-study.md | 12 +-- .../{ => user-guide}/how-to/studies-create.md | 12 +-- .../{ => user-guide}/how-to/studies-import.md | 0 .../how-to/studies-upgrade.md | 0 .../all-configurations.md | 100 ++++++++++++++++++ docs/user-guide/study/01-map.md | 31 +++++- docs/user-guide/study/02-areas.md | 6 +- docs/user-guide/study/03-links.md | 6 +- .../study/04-binding-constraints.md | 6 +- docs/user-guide/study/05-debug.md | 10 +- docs/user-guide/study/06-table-mode.md | 12 ++- docs/user-guide/study/07-xpansion.md | 14 +++ docs/user-guide/study/08-results.md | 33 ++++++ docs/user-guide/study/areas/01-properties.md | 11 +- docs/user-guide/study/areas/02-load.md | 10 +- docs/user-guide/study/areas/03-thermals.md | 27 +++-- docs/user-guide/study/areas/04-renewables.md | 18 ++-- docs/user-guide/study/areas/05-hydro.md | 47 +++++--- docs/user-guide/study/areas/06-wind.md | 6 ++ docs/user-guide/study/areas/08-st-storages.md | 50 ++++++--- mkdocs.yml | 68 +++++++----- 75 files changed, 408 insertions(+), 137 deletions(-) delete mode 100644 docs/architecture/5-roadmap.md create mode 100644 docs/assets/media/img/installer_screenshot.png create mode 100644 docs/assets/media/img/userguide_change_language.png create mode 100644 docs/assets/media/user-guide/simulation-configuration/01-configuration-general-tab.png create mode 100644 docs/assets/media/user-guide/simulation-configuration/01-configuration-general-themmatic-trimming1.png create mode 100644 docs/assets/media/user-guide/simulation-configuration/01-configuration-general-themmatic-trimming2.png create mode 100644 docs/assets/media/user-guide/simulation-configuration/02-configuration-timeseries-management1.png create mode 100644 docs/assets/media/user-guide/simulation-configuration/02-configuration-timeseries-management2.png create mode 100644 docs/assets/media/user-guide/study/01-map-tab.png delete mode 100644 docs/assets/media/user-guide/study/01-map.tab.png create mode 100644 docs/assets/media/user-guide/study/02-areas-tab.png delete mode 100644 docs/assets/media/user-guide/study/02-areas.tab.png create mode 100644 docs/assets/media/user-guide/study/03-links-tab.png delete mode 100644 docs/assets/media/user-guide/study/03-links.tab.png create mode 100644 docs/assets/media/user-guide/study/04-binding-constraints-tab.png delete mode 100644 docs/assets/media/user-guide/study/04-binding-constraints.tab.png create mode 100644 docs/assets/media/user-guide/study/05-debug-tab.png delete mode 100644 docs/assets/media/user-guide/study/05-debug.tab.png create mode 100644 docs/assets/media/user-guide/study/06-table-mode-tab.png delete mode 100644 docs/assets/media/user-guide/study/06-table-mode.tab.png create mode 100644 docs/assets/media/user-guide/study/07-map-layers-districts.png create mode 100644 docs/assets/media/user-guide/study/08-layers-districts.png create mode 100644 docs/assets/media/user-guide/study/09-results-view.png create mode 100644 docs/assets/media/user-guide/study/areas/03-thermals-form.png create mode 100644 docs/assets/media/user-guide/study/areas/03-thermals-series.png delete mode 100644 docs/assets/media/user-guide/study/areas/03-thermals.form.png delete mode 100644 docs/assets/media/user-guide/study/areas/03-thermals.series.png create mode 100644 docs/assets/media/user-guide/study/areas/04-renewables-activation.png create mode 100644 docs/assets/media/user-guide/study/areas/05-hydro-allocation.png create mode 100644 docs/assets/media/user-guide/study/areas/05-hydro-correlation.png create mode 100644 docs/assets/media/user-guide/study/areas/05-hydro-dailypower-energycredits.png create mode 100644 docs/assets/media/user-guide/study/areas/05-hydro-inflowstructure.png create mode 100644 docs/assets/media/user-guide/study/areas/06-wind-activation.png create mode 100644 docs/assets/media/user-guide/study/areas/08-st-storages-form.png create mode 100644 docs/assets/media/user-guide/study/areas/08-st-storages-list-enable.png create mode 100644 docs/assets/media/user-guide/study/areas/08-st-storages-list.png create mode 100644 docs/assets/media/user-guide/study/areas/08-st-storages-series.png delete mode 100644 docs/assets/media/user-guide/study/areas/08-st-storages.form.png delete mode 100644 docs/assets/media/user-guide/study/areas/08-st-storages.list.png delete mode 100644 docs/assets/media/user-guide/study/areas/08-st-storages.series.png rename docs/{architecture => developer-guide}/2-add-new-antares-version.md (100%) create mode 100644 docs/developer-guide/5-roadmap.md rename docs/{ => developer-guide}/architecture/0-introduction.md (100%) rename docs/{ => developer-guide}/architecture/1-database.md (100%) rename docs/{ => developer-guide}/install/0-INSTALL.md (100%) rename docs/{ => developer-guide}/install/1-CONFIG.md (100%) rename docs/{ => developer-guide}/install/2-DEPLOY.md (85%) rename docs/{ => user-guide}/how-to/studies-create.md (92%) rename docs/{ => user-guide}/how-to/studies-import.md (100%) rename docs/{ => user-guide}/how-to/studies-upgrade.md (100%) create mode 100644 docs/user-guide/simulation-configuration/all-configurations.md create mode 100644 docs/user-guide/study/07-xpansion.md create mode 100644 docs/user-guide/study/08-results.md diff --git a/docs/architecture/5-roadmap.md b/docs/architecture/5-roadmap.md deleted file mode 100644 index 28d9477bae..0000000000 --- a/docs/architecture/5-roadmap.md +++ /dev/null @@ -1 +0,0 @@ -#Roadmap \ No newline at end of file diff --git a/docs/assets/media/img/installer_screenshot.png b/docs/assets/media/img/installer_screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..dbb6c138c6d528b26b302a118de3feea0e8cb0cd GIT binary patch literal 54590 zcmdSARa6{X*Djod1VXUj4#C}>Ailyj; ztVX^SCR;(kO3f~o|1^r+l11VJQ80~nrhbx3gy%~^z`!VK+V=sU{%02sA1mgzo{7}Y z@qM_iwV7A`dsvZ=en`|m#K~j7QeuStb-KiriUj|C@pA8pK1>PwKP~_1FriPy2L87< z<$Wn70Qf(T{&n(C>?scaceuUEI6UA#V^dChYL0HT)>Am3pngXMseAP_#c~kf)@W+q$@>xQoOP9I@r<3OjVbTA!PPx-p!vG*hHjP52 z!E~(zfBb^YoR$`ghisAO>>isH*;Jw2lpG9#d=x{66H3_6=hrO)I}vX1VVd^TxP?C7 z(=WSG>?Uj7CQNoMJKR=HO4%>@i_%>@aNObky%bM$5)u-ykIx|2$J;ZPj6fU!(nHb9 ztXJ1Zi#9?ou}8B$hp%}z}B^*eNP8pN6^v!S=_U7-aY0v!#_N5nI$D`B=lTE2oZ-%o$<`4 z89A9$AOs$zO*J<1Cb8)E1(X-f`;2}k*-TO@U)0fJ@&P2%J!n)Jy?Z|JhgD{Iq}@Y$ z9&4-a(;~rU%_;=SuzEr|xss}1C41(PD+6=qprDn7MvLvuL= z0D8;Z?~D@eRL%`d!ZmMd*+$H!hgG@ZjzSH%k+wN;?I4@Xz%|9p{rzn%n` z3jDFca0(e${gJ{!QIwUBkAU?|nc)f3XH@MFHcy!5c|w^~3pRHxeoNGf7)`bPs*vv< zsVaL-l7*s+|6Za+SvvuKh9^5G0I+h~%dg>M?4z7oPsoGZZP8D=nZUjxj+u6TR8%Qe zZH$s=A&Z%4GO4_!;!bk!U|CrHpuzwrR+D_5-kxaqD7CJ_&|f=t5<1L7c3c~2wXkdb zc>j+s@Rt@g8hMh!yeTrZkVScZR)D?`YhzPpmy>UsyvlAehBL$sE#N50;BK0zK0&@F z<{fyxC4Cknz3(@f{!PiD?=@w#r=i^L$z_z^u2jtm*ifyaYMYl+7Uk7-Q!WH0#etZ+ zJyf2ACldT=YzwvuRVov9*n{IpFEX5D4<7v*eK04vWf|^PS3m0;&r1G}>|9p+1cfM92Y!WUP4+Ni8@;2zRgH?*;A@~p>%w&~(fF!^DqiE?F0zS8+(9Ox}Z0Ms1 zK8Mz-jf~x#i!?qpHbntP8$6GkbY3c>d`1)Jd+TpGp7;0eTI{SjgXd;HD{|N#?H05? z8uyK+tUu5j1GqF-;uDPtc5k}3A8h^NVHso9Pt>G;YpDs+I6O$u*{wf+9>4Fsi=6=M z_w>6`%t$D|x7H-(-YI0uXWW3!*Ek;|(x}?D1iw#we?*0UB?US; zbDrWhCvKc{j^enn+U$>c5g%Rq+^Pf_p1XrN+)?Le)GNsy`1JmxU!OE#?p)w7YT(1{ z>GN~G-$HR;PYkEnjfOssF9i_t2n{BlE(xTTcm*_$tPWPqlu7#nA*@;orqVl}hadtIfwnbgwFd zgM;mI3bK^7%p@9ECW`aB4GK7I=xz=+Wu}Vh_ak-L;R?Gn_hOVReNeJcDH2n5cy^2Z z2|-5Qsg?{>hdiN9NhIRlMUh}G>-Lpq63Dv=)OA}pDQuW`hq<`3Y{GrCP;24O@> z2MpdvcTP%?>T$^2e{1IPSy&B&r=QpEoQ_fq_a-tY}jUqtVl8JWJ>K+PmlQdpjU z)Uv+za3#RizPaUcMiqP~&sXT_C#=;Tb|(k&@8+H2U!AUu`P-Ua(p*v$9%ivS_)G7z zM{_kV zl;Z#D@+kn9(({A=v%OlGhRDfE+m-ge-M>=ad%~)fUIxE;cG?<1-x*CSS|$H`onAE3 z#P~sS6quTZhDNW=tKeDYe;cQ)S^NKwmB)ZF|EqTYdiMV|3NTWY_*<4Kq@#XL&XVhzhyW ze&2O7{JG4M>O}Bd@&_Zfie^7Z>Xo$W zsteS*b#i?g`r5cE`vZZbUaQH%w+pi@1BUp69pku?QXU=fEuK&>lYSM@{Yb64dT_qN zUUK5QjUjJf)PjKtNazq`IbPaIT6n%qWXgg=j{b`^f;!SyjaAz!oLvCwRw*ez1@+Or zNN;->+-*PEP}+RR&9pb1&t6C=HkOmErt@MuDZ@U=iwac$lyQus%9^TDVX~Wy%S6W( zHJ;Bbddy|@Zu0k=rzy*AvshO=A`4uGC6fTU5TEfJ*`WRHt`H*L zG<+m9?9H$>-YYBJB!KL-9lmLp^o)75t38iE1_I_`bY@7`4*M&FEBJ^s`Iy4a$2P?B zaIUr-bo^zl!*Zc`n}#YMVaJsHX56#0NKvTB`raA1`)sCFnLdq8-!-}929l&EyfL*; zJ`#JU)t&%dFtbBuXGbLjAcV>~%8M-tIWJzSyKo5ce+**;VeG@l*-89`Nd}wabg;GgDE{iN3y{-?J_*<70 zfGf%O7k9rGkyP-s+8D7fu8l^Z2me(c>oj+Q04|}QJT$xPZJ7iXrlWyUr6@#x*V~_` z*z&Mv(n%Imx$iI#ED^DeJ7S}5mXw2@ah_=iHD)^Co8&&kwtVsDZav=^KFLgC`0HIy zVc5)L_OgEQvL@{N!y^>qPeysr!0ltU$cp6nR?myc5*3>BtwFId3}3wZ4Q|pXk_&Uh z>bAivDml6ovOxL{J=v9uuaQs|^vKP?M>7f|;G8ewvIs|{c)ECPR#z#77%zZDuNQUg zyPzy&?&hS5H<-Vy;K<>Y{`#7xpFPJ_PqsRdM*j$+YeXn-YN;M#*pQu4d2Fga1v+%jMP zYY!ejbc`1F`8RbRxwZ`yjfer_!;x3KvLr3>n&(bm`HZ6$$Sjkmm{dwxGMNdj1X9n~Bu7nVJ^9XCgsF?hTy_D8;;Si$E9Gd==Kg|S*HIM?&4&o)`2paye+p4p(*R8y)VP|!6 z11Y6=cV0wW=by)2m_=_WUWh>dufgm(*}TDrd`s3K0?9@&Qk$s2t<7AFJFf?Fx6OXl zFy*8O&}rl=r;L&Y{VcJ;T_`=Re^MhlR1a8q$MDB&iFwRVYTJ9N@#_YKeN~;gF_gAO zIa^EHi`cP`W6r~?s!Ay+`0e`cQB+HdH%4aW%IzHjCIP;fjul)NDJ!^&4LvCIetq+T z3&q`CL7?ps5jpA;J##cKML!iybjkp$=$ps0vvc+z{lqLR`fuJO;>SoIe6Ic4_2_%1 zv@Y1@>&k%D53r6vd$+c0jF-jJ{zL{{$_tYcP;2-)(Xig?BlaGZ=Y8^rs;UX-W1tGl z?hia8AU@t_Ze4MB%(a8yqYU3eVih3DTMqhWHoF5LiPgTx-QE~a-$32;5GUuU`S7K= z;x0aJ^ijLWC0PAOB$bx3|HeC^{$8W@9DH4ClfHaq1SnJc3)9fIsG@|CGpFvIep=?b zQoJpG3@PC!#C)+@F=&}2BvQMZ>-%8}Uw$l*KG^aVpCesf^c{DiN6Qui;4_qtMh5C| zn<|M9w&lJIoljM$%Ob}bLg!uy1N8=n$CsC7)H`4ST|a)vZwnZ8A)eiI$^>7Xqmq*g z@#kcEdQdl`&(b0DLvZXSd4frw`@F=dT-ZslrCeE?SiJ>-+@rdgYPpmyPqX%QVkl`h z^~iUXDT1jA6FMt*&EG=az~idEXmxSH^~=c2TE&|$(d3C1b-k&xcI$v{s~b~sjrUJ< z$1-SWEIzP+_Y=oQbJNE%6adI%+TMEz^{w{-)L7I<5ByYYO@IX&b36W=-(TDpQtG{+ z4k-=tBK?RXfemIr3*Aj_VsGINcCrT4akZHfZx`~fba!L=Gx^h17Bx5Is(Oh4PM8#2^`35_ z3q`z}H#7DeVDPHak^fhNS3+P$l#3i|3J5I2i?E~)-SF)lxLx!Lccr~kyhox$Nbf3G z@BTq9qa)P*Q>PLbIWi;kFOZ72{vtaX_C%ydW`?$y=T>GA7b*t({OgQFmd+JiO|2%@ zZ4QuP*(h&ex+^*3K*r}9nW=nPvmrN7-{V0hAQ~th{PEcaKTu2cQ-l;7Jy+UDeGJ>% z!fNHh6huZyrX3FXGT0JnXpsog&3B*MH8)Y0uebF%VJc8S8vW95nJnPww1cu}k zc|j;wR?miUj3;3}yc!^yL!2YAVtl;X|N3n+msJ8|$7tG(dEa@wj{lM2<=m}@?WePJ zmH2xDaM!HuY-lf<@oByPSRl+9&oUKHpH2edUT%3*3JF1=))-2;}B7^rry?{N2yDjNlML?RPLkh z>E8av^GU&ZwhsA^j#W2vOSuGGH75BEn@`As8^y8)M6oxxY+zprS@z^yo9;m(hwy%$ z@+>go(~r$^Y!~&r^5VU^Jzm_hB?n)h)TZSYl^Ubo{EHHeJfY>?!`<2fG`mi^jjDyQ z)|_(HJM8RlB6r&(+KTFaT&Zp*W6O9t0m#u|k(4Wgh@~}Y8l0|;^p%B!LzNz9)YDdM zAf*EqryG^@vn)HOj;8^wwl8-+ER_iIQeC{t>U zEgf68eN>m0GmM(eQG_=JldXX|zg%RxO{hL%Y;>0H?rQug;&G){e!^l; zmOZ@aKzpLpj5?fqulIDSA_)AwZGuu$DqBIvuAdeuV+ligFFT!m7eSAY2U&2_b*G7WtKQ+Z4!86<7Qq-Vi= zuGsrA*}VQmaJ^PGdIG-Js_v_o&3`LN_WkAioTU9(ovqk(IR9eW;*aTjj_alM5}DSq zGU|x_SN_lA0*zkZ=rTU5w9A4j9aT#K!B2rH)l-q7V?&Jv0@p`|+;Yd_Rph}g)Lh2! zwuZlLwgz;+i9&BbK%lJK0W_pO$k9sFTr0ir4u)GaIn1%jwd$mkb~kztRLa-!;2A%6 z0@D;Xg*`7{LXy{C270&gy>Z6#Wx7KK&nI$wznGN^bdU0sT=rL?Lj~k(>>Ruaz)!iG zzloR7>einY(7|oMn|d6D#Cuh|Uy&#*uv;Q4O4PsHMb@qp4)B?hM{E1Nr=VUflBjFb|z0Gmt!gt6*rKD0(R|j%#(DjSpW*J1U!EJl(P_j&VpCKO4s`c+4 z86<^B=E}biqW~m5%B~yebeYqD(9rYaIf6ozBk5&mB5mB~20w?)FV}~jbZXV~b*b(J z7YUm>HEz$>HM5D?2>H-N9n}iwKySKPI6jCNTfwi5^q)ifzQz<%1O}x*!&x)(x{CIof zW(Bw!bOO{?rZd`!g{#_j^=O~L!!sp(99P#kP8nU3mn&APfBQ~3!E!A99i3(c&S*=N z!OF3^#zP2t68ljW*>uz#uFRft0bY}AxKdFO0cAU6Bx5GyU4@E?^=n&N~{vid`??M;vj-)+o>448s_t!!SOw@>}+>+-Ud6o z(X^QYo6a{T!|4`(>Rf*iiZmp5JjNC$BgY-sC3IC@&?}aUSTDrP z53Yxz-WKsb5#}wpBL~8x8e8N+Rq11sW$`gLheeWz3h1<|u*;iA4EhB>A9mbC*=fD# zj%Izc)qGS{rTyKZ_$zsfx>E0;ijseW68%C#PS*EBb17Ln4k@ZU9HAA8qN6mC1-?@ zR@pU7G29A83Jq$i4C<*q^EEWXk`+3^bhxq)-h4shj~ArzRO^x!kGn4 z|8Qk|S?E1ih%qJ_%upE2VJRDatAX^K#;n5P90SFIIj{}K@xjIug@^R9R{2h)^+Ggqv#N;b2!x9$g31ofX9 zfM58oD%=lpAl+iUa0In$t{E58QcAvq46cHSN$Fz(Lw46TvrJ+|4c~e(JU6`kb8eu( znNMq|rtSgQfp1W^{)6j%)I{QikuTpk>1uLkRH-7n7@!)j@DB5SqS6r^=w2)0m(7 zkeV;`{;;YsJf=5Sk)fsOwG&RROLq>k@abEm-E8}*XAyFNRpW*dA&4}XKedBO*DQ0* za&l4B{I~+DusS)!hy@nkuj2855`7g9=Z*Vns5+cLCw2v;KTa*j6L6)!z-3X}We>&2 zY?&&sd@;W{QcB>MxsiHvJ^f8b&#t=o&mdvPk8o+&5CvGdw3z864ftH6!A+740f*C>wvzD6`u?2_f)E~NnH(L>LH+XA zqapGJA%@Kqviq7U1!+_~_|k6KCo_uz_e7^$a#7hgORM~uuj@V(zxLOYo*~X2vL?B> zI%8DZmnU2Z<`2GzU(CnaUXV2(>t+$B?@nRNbivr(4cd&x;ROFAjQ2U(=e#1ahg>K0 z@eDm9MSs?&4&o>gi5E(1#3+6yfm{)3OEwhhL_-to>LltS(CJ8^7HEBsRdds!LUq$; zRB4KS8`$Zhd2xbY!lT}ItwQmJ5gPKfCYH8n)k5e6C0Py6FmU$A{F#vokC8rAkB+Cnxr12`+SfxL}D`T93k7B$Op zxD`42n_*GYzRgaCerOA&4)Yg@`N|jTk!c+%!S~J84)x(h>elpT;{dn#@M(h9q)`@R zGs8yh^V1C>9C^atJ?`E?kes(iepeky53lPZ)HSWqf;h5hto332>YkCtYc{vgD!CdL zEIEp5teS~=(9p-YBX=b6JcCV_Gp6w1yYitNr)np__FMwqf1)^~rLFVvkI(%yv&dK( zh*qP4>PS+-Fo_ur5jIvPLcFh9@;0~zo7@{B6sZUs(~kLBc}B?r?j49P!f+)tDXX5DI3QiuL*T~a>UsUlc0sYL~KYygL#xf*ODy$|w`{><-8hAX!N;j(f2QJEM zK*}9ho{4;%B^+^K51AW=x3z*yd0_s%_mwsf zZFepYuhRP6a_uy^zKoW^J22r?9VHR_N%gTcDM8>pLDg#c*L&E9o(7d!llW4yJv7HG zC*rfxo)Fi`E>mjbom^F-+DKye!?>_XUVpV7dP?@^4xXnWGPi?ZjizVz`-JwffvJX{6aaWMo)5Ksf?m%1 zgp_7+8500J8b4R+HDO}pj!{hF79l*$O&1Y?I83vP*|!9fZ8it2X#yMK+uydg47LF= z@ia?4y0qK+rZl~dQC8shL$ptfJUi~O#=-DVAV0g^0SDuX$-P`amIiR>v0riE+HL~8efOT}Ui_%drwbdnfBzW|s0 zNW90n-P)P9)R4l2|7BLEmsZP=vxTVpl=U&6Odb@Vh;)rou0Y}HGe$scSvMN8_CD|g z!8if`)@W>-?y5wSoaRnOJ^O9|zpVKNwWt^m7TEF0R9WxzY>ytN0W1q@oo6dq%BWzl zTf-*|Z;g_EquX5LGKH;i!5V0Hgbn&3ZOjXO(NRl;Sh6HyWRGf}5 zh?0(@od*KAa+qkP65DGuT<=~-KP?0(Xn{O7464#hH>c~E%DPO4W2Dl`)4kSHRna!c z;Sjy60@&n+RcO7@hq#D`S}A6l8|K5%V#wbJRJC{~G>r}^sXaW^8Y%EIwUo9Lp^%E_ zo3jn*XN%+IuGLF zKVs(*tPl1NTPJif7A!n7CKOL4h!93QJmsaekA6*I+Irr=P~Sl*uupsmu?_}Hl@=Vf z?|#!aYLhin1>&2JNz^Mx;d`A@-z>ur!_mlS2Qql<1;S+edA9#b^Zgt+;R0K&5p208 z1#f>)V$MT!g=aJ>4PKe1#4sLSWQf=+<*!W-w^>&E^>|MM^DD=6UZ07paAC;`!?@yS zKl7q&H-xw66&2ci3C$Ezoikh{M1_bYRXs%cWo2rdn5Uc&N)X2*n~cU0PGKW7KG7v6 z(!&nVTG)e|x6k9aRNiStF7!D{23n?A;z1fea((ou4?3noDsD9?(Ag~+X*oM`7g(>T z{I#+a_aWHn=S2QHLG#R=u+BA(nQeASbJv_|f<}`urJ$Ws(zDa}PE2dKH|2>^Y0F>m zM`VY-OdG6)5H8((W!%I9a2ZQEVS$E~yje0t6vAobGqMg4)vhhRc%t| znTk*VNjZuS@?@unhL_wFl7VvDpAHj?vc5X}_&# zVt=*j*uAkD%mR5KFo_Bc&RuUO%$nZ5QBd#v?36ZqSLH^okKP639Wbn4>;1{F<6!;_ z*&c`-A8=JN_snXa@S2Oee6ia`Xv%vQxI3Q?U(W5sAwW;u@!bmfh-ulkzP40?81e+P z;QI0I#yA1Q@gDOaAoL2gZ)>c=8!4lp_bq^k>oExuxa&>B+6*u|$Exi4hPmQ%%2phq z1SYOo91H5hhMZ{@FPZT&WR-FQgiW<5m`^F>dCaEx-MP50$V`P<^KC}#Wtum?2gv1-8yS~d7y1Jk_ zj0}s<2i11^LkdJjqP~toeCh4wr6tXiAUlfayXQ$|E6x(;bSlla5 zzjv_=F%X@-q9Li&Si{M{UiIMUcr=Ik}EFAqvo>+vOZBwC!s z=iP!;;3b4PM7zm7%NXqF+}vAUC+K2-&Q7Z}`nmt^Mjs(LmCvc2H==}C`XzZmF~sN- z5Yf@8;<<`;n@%XvOWu@NVj)55`Z$FZLHn+ifAFltbs&xp0pDuOV2X)wDNlusq-sL^ z-f!pplAV(=15_3jGU_lp{6ER``1`*cbdn8DsbrY_z12jcZ_8#`cX^0@d+Gi9nCy17&A+SZmQ7&;gF=v=ofv&BQ>am--co_GoLj{I3SIW z#U1Sr;c7+Xs%utqEZq>*J=cwUWKo3LQ|bh1W3t%zQe3DM<@U7xltfwMj?v{}Z{sT( za%PkQz2E@)l`I}`RqO(|Vu3z?0i5wVNWA1AnOv6KaZJIZuC3@8W$z}^D%vQqqyvg# zztq(Zb5mKjZVw#oE{&y%7w%@!j=KamMALNK)sW}})j^f3-6~thu z1b=tq69$_w#2Sp1fS_PPV>J3Ja6`~+j7}Rnf>GdxRC;BPsVeN zGvZ9xOC&G+J~t7AmQ;iJg|;Tbsj&t!LCA@ctgt_r>B`y(QfbPh=mTw#@_jWyOilWR zylbfW+aRj?!I!UFurB-AqGCe^J%+i$LR4_Y+0*B>6)q2%N^oWhb4ygj!b`c@U7m{n z1x~^B(u07@dv+~_JmK`+rB*fiiWg5^Hp*hboF!)Z+WwdYsK%D#ck5++6NDz@m($D| za>XkM06yqYa(+5nIj7+zzb8~l|C*l6W!Dd{T%DbCvTCi`X2)b`7xSV`v|}HSc$_vP zNWYgb$>Lyse;AH9+&33}arOob!IAzOa62!yMWLXucKIHC_Zw~AP2*q5j{M|R8&%^U zAKW^vTp6@fN93-p+V-pNm8##xE|J=rFMc|D5IsV4v@Rs_?JLEKuoL$Y=)10BqD|Cw z&32u29+g9(yn1*;OycP7Mi;&fq%Jr%DJ1m-8J+HrKST_JR>^rlPFn?Cw@4{%7jn+@ z`m!3YNZo3Se6N;L5)MR%?|9mG_)zko_Rl}8<1ds1>;bY+S(70VhE01TRY?-ez2Czv zL-}c-v%PHuq5VQdtH3w*nRX;SYg&A)bc%@rZ3+hKg|HyW7bpCE_vR6mTOCJ^g}kW_ zft=w^)$Bc8*Gq&V+6kq&ZkFLtq`bQi$9(S~i& z|N73mygFEDH}uI8X_iyBFDcFKtv@F7`(#Okxrv%GeuQ$H{_4|dnRXvc`Pi;vZlZ<^ zI2OzmD}S+{9A`XzQ`yR7*!Heks4GKMS)@GR5=?+gEe8n+OI3aQ;N3-a0 z&vrr*YB_XN|6d7Gy0yIxPO*6gas*>3gOi&L9_M`#-|U5?Ziy{+v4&a%1M&Z4ztWW9 zDO#Df<_(dgS;qC7QE%ie;pMBbDr_f%OVVGXsZ%r)qvWh#EVwYG@)rtvkl3r2ctN@F@?# zCD|Ew$-mY^7^7-NHK)IR9v6LoyTE$XgQRzWs~drIL2(H6;D<0&TyInO_ZHS_)+R*l zj(Wn_ey$~yniq9e!lJF-R#jDac((QR?QpAC9Gc7rkhzqp#~o_c)gQa#1IshL&P;rT z?`H?(E1aS%o0l*opMP+!`XQ7$dpBld^w!l;srvI={Q`Djtz!Y|G>+UN+j1AC|ES7V z{zv@cU&JpF9}(@-+J;5*vg#Zz&3ySvB%Ew3C=q$1h1B#Tu$8ZWo++6WQIZs*d~c#w7$0hYZ7|MMzNBLaz7` zF6&9IZFs8>n(gn?V8V!&$+k$u`62G?g`s3Xq^VPYkl^OiVO#?9PyBf4ZoIb5Fh4Cb zr#!7wYHM?KP$s&$)fore!#mWwlHoElJ6BYrYd7nZZajL>5FhV?--P?O&9h z%xDIv)KX>2fv;*JR4$zrTE2vk>YCm>03e{xrT2e|(wohwtd;G;s7M7nbbk;1{FtmR zpsg4#EiwJ6tm_NBeQTvRrU|1>YEb*;`pV$tw3^@O&seLP=~s6dXCA>_@r66}MIuj{y zEoZ^Wulw-gbV(%@-gyvS3 zMji>Edb4WpDh0ysX!QIZY7`7vJgfaNjuJb^Y$l`Lsjr-g+`ybzUyr%Z&$HuVJEtj5 zx{x4M6zMz;fZWYWQ#2UKqPkGLC%l&g@=VPK%ATT1^qFJWlOePdHkj^k-H6k@$xFrD zY3{KR+(RjpG8YV0WO}z*#L{W03*7@yPEOr^D%Wxfm9l{+UB5rYJM^mIhDEKvq?$Hd z$X~pD?=K7A91$`NV{hdwYWcIq8|HZnUvov29>fWL)*J$6t3CK36AOlVUey1xJJ5_? zt>0)XYIsU>2y8^TeMy9uj=sNr3@=I^ueKk?aV5s7HW@T2R3IH1h+W>FE)l|Ju)3*o z)3-LH4s8>EliEdc-RVo*yo_>Y`gv|9U!q<3b!I+Yk!Gn zTX7|SO(friiqpNToxg0AauKRz#ypV@B`)7NmuZ)Tq>WEv(+A%O2nbXQDU?p#DtM6Q zu;YEnd}8y=ME+4IdBle*Hgu~UgBxAo>4ACBm>P)E3@2xf0XLT-yY5)EbqUPQ#>yh( zi~`r(B|n~>dx2b<*v-F->eG=uPj^CzS4{=__6PI+d~xBB%8rOUJN*|~YgMx@TnU@4 z zr@}KZQb;>v$&3Wlecl;8=@=*udEhgCzJ2?U9A&Cl6Ou5Nr5`*SJuxIG>=~YzuQPhj zX)*l`uVt8YJls5hoS744K z8i(H37JD|g`=;u-q-wR$WqTO{k!6leEW>BuaOkHXX)5vN*x<0kvEI-4+`>-MWXb1< z&@WslFr!u%d*PY|Ps!|eX`E1`aTlC^fd&!&B5SAGQqkT$sz5iz`DrBdwuQsh{Fs{n^|NZ>RLQo%r*+tGeewX0q4vKDdmnD(NbgGGE`42mNtcymIr_*-YFQzD zfki5fPUB3Kn7gRpLTLm+4q$#L^v-a-)Tk>rt(Qfvn|cEBc7&V(;@YY`a6KSfR@cd+FtY%l$H_6butH ztD55p1owoGka6glyY0!v1oX}ymw4|lnI*P|Bd z?fcA`gx8(e=bxgklRBF$uZg5sY-69K4Zlf5AbHsmPn0pCQ&5nof_iV`Hv(sF++XT_ z4dIJM8Lmhp*YWI9iq^hE-!&WTZ}T0GMZY$X zNo?|O2!Xr1H1qTQL63aXTti9mI(MqN6U*ABSQ(al7UVTI8QYV~EgBgF(p91z7le?l zmmtzknTbk24wG4#P=4PR>aw;$LMGz>RLpmgZlK`-N0-FUeIn@Ktj%)`qOLFbppgn+ zk!KL#S*yclz9)aOUk^KUzw8!Fd~Fzcgk8aG7a?`sYJ%?;z+m6@{ulq)gw#;BiCTtR zd6P|>b?7WlzdsikI17|4Itx5y*TbEMAGs8FOdy5xwC#9VX>NW3ZJUyYbe@oId|Gk)&{%Oy`1j3fvERxt~(eN9=qwilon`(ax9{O3cZ zFyS=lWIfRS%N)fWo66p;({bDYK`BahOG7UCl$aEN|IYNXds;nm&%&U zd}owZh;UTjE3E5&i?fht{A+YB(4y{0(0;kw@ug@vID<1UA6B^gN^RxthZsFP^UOBi ziJRLjXmUi5=ht>7CfW6k=dW6_rrMI^#D3O;;&;rewf-*%cN=|i-t!_awptp6MW8L< zeTi_iH8wzvDqWF`8fNtgX;cA};DskYkUhk|Y7U6ZO$My9(n! zQYw2zg6p9tRr^sc)W8-5hI*2ot@8e+yZgE)g4?z21BEYN@eJ+k9aI2yTQ9LBPX_M7 zBQK08N$Vlo@prZV7EP;4 z>KEe#!>4c5xm!RZPCSIx&ngU6hvL#k%4eMS_N_DZHTqh27RaUUFmR-*+3LT>VeUK> zvg&9TsDYMRjmMlIS}2+Ah{^KGTwo=SwwAtFA!@9_f-$;LdsT|C5AItl%}TO_HsSlz zb&SnMMfEh#050c!uLRB81O*}RCJ%wao7bocjeJz31?QzAZUn2vPnvo6?}m+?@$$~g znFFWGso$ImEMi_MtzGRU1XPgit@ozFdx5$}z91M%-l6g7J9R91_@F1~iv z-m-+y9o4`NjKsY%_>$0Z0?@hjK<}o`^5+n@0;ITcN}4-Dw1VfVn8D4b{wOe-+5-)1 zMLPk}E?u}(Kh)Y-_J7;^#DHoW4+yVfSsa*;`sjbacujqNM&=Fdo zLN6?LF%^V)crciJbK-fohdw*a#ar!28AySD`)LK9*xJATs^ys%=#IW-Pb5 zVKSnh>Z4+RHa(%7vG~yoSJ^bPCdG=y&3SNv;_9RZ&c>mcJp;a}I<{urCMlg~xBRX% zNFt8iI)c*He4K)ZB7≷;GNeEJ5KGz~$b-WaGaUM?Mns^9A*#c!t#2t8^qA1qhxA ztR$;J>VQSoQ;q#N6%5_y>i&6FSmnfs6u+mU6zo@x&emQhvt;i42Cul3sHTY0j}jFS zDEZ&puDlbc)D1l$1Pa@XF`3EN=%knoM@b!k%09z>#4zgtI^v@p>U+GL3Bz}1ht}Qw z^6tMot1L{m{{ml_5-M5l*KCy@Jiq@>)qaq04=D$@lf}K-&BFHscDdZTVSkmQz}R`k zl`FB;idDHq#|>s?r&g%tG{DolE_I}gIHJ!^< zmNtDfD8P2NdT&V*X2kTIuY|ImH*ba0pt#5Z7SX)&v}t`>r%@k*vAskP2)=8Of<}7G z?$`!_Nh47Wj-z^@G802&#GcJ%Pwp9xoSB_gqKz}|M@K*7p0^mg-WiF+^ol_5HKk%YuF%YBmn9k%HmMX3 zznS>=;hm$K0#p77HY5qO_sPepTQecUU$F znQFiJnz}&<-#Z&SB%ZyNaFKzcz&A$QlH55)3)a;{$pa2XI5Lf)2Gur282@J{sk9Bi{Oia?~{c zX%{5{N-`)Fck)+wzoUUnym0I1V|#p=XHjaCA>hvql}g85WBQIWV$$e_D{OgGI+2`o zE$y3@NUIl1YhlZCucqQksQ~;?yV^|=^GP&r^6B+|OYr@FyiC3cJ8^K5M}uzDD?Eib z^EsL^!&1S~%aknGX;B6+ZByPz7>+(hXJd!Zu+UTh)`(J=US8-#sWy_dDIGWxLR;T) z*(cF}vD4rousXgnVLD)*3sW;>xVLW~6U=C0#}NXce0k$g-#nbBZI&YFHF%)_k0elF zs7fJNUM2V^LrcObt~Vd`sPAMux4$8l+^%?N}<_Fowtt2!Ioo5$l9!Re&!zn9qRUTgj3f%IV-R7J>9K!5gA zl7iUXO^>6{e7H4k~>%Qe`LPaen)^}oo?Z3N1_8#jZdNi@@?CF zxjKGuVUYCqmoNtIINB|xPDR#l*NV8%4b6bM3{5Y6@~#Y@9P{o|k!rmDuobZbd%=pP zy$of`k!64~^vBm16de1y^4bE@5hv=ARsv)0v%d=c5nY#^N*noEp>ryXzA79p6XL;M zXLq3H4tp@asa-j8og0hA?0jHL#KL4#u31W|lIapvI)!oM$nUSekFE*SuIQqrs7=)_ z6pZ^X6z(-Y2uuBZcjF$N<2m!j1T2t&(z3&zqaYTZwv}%H;vVrQ3Q$QE_QsI^_24{) z#w2mowQV_-hb9){UgXoKV=^)uD3QE+c9!+6(fHTea96;sUv-}@CN`j6)a!m^Y2m=Evd24?Np zH^+JX2$=;RUw)kqU|pTnA<&I&?oDVan~NVCKHev3EVy3$Kjgg!S5sZ|?&~WGA|fi% zn}~oQJ@je?r9%>W?<9m?LYFSmRC*VX7J6?XAYFP3p(8|EfY3vSlmEH*p8Fl{{Q`T8 zJ=R)#&o!Ut`OS*#5mhrkCXYbt;@7_+15N)J67~T6Ux}xH$+3d%Q-u+i)v)oGuWoqf zC4odJHSWuCBF%$hySM5K&&}Efin#v5?HK_wG+HndcGtDt-XlXqjA-?1&~2^Ivlg?P zu4qFHSkBuqeUj?`E+3u-4j1(pxLeE}**vqs( zp%z0C074Oe(Bu9~Tw!x}&-+JaC!fhEaGKSx#YNUPdj4|SAl0KyJ1^wdlaBJ=h*OJL z4}2K1w{6_(2>H8b7b5W(@{NVDFZsfEMmSf5i$TQlN2`>jmz+>a2VsN}efo^aL0~XH zlXu-{_I~QnR!kHq!Qnhu>0ACc@GiR#hm!}WR`K*BgzdG`BCaB`o7(1 z?W6Y=TGQzT#KqJ0gd~{DVr!c1b(GipRSDt~^nti{+Vm$S0D4S$H17nFz916uPGGT7 z@%OLZQW2o| zxmn}M3Q^!z;~fj=5K#BO_u?bN&98b<=?tOX2;}T|{AE)D!(c`{Emqv^MV-&N+_i8X zqlRh`)i5{dXp;`RM;QcIap)s(diOCsO@2QPY8)9A^IW7a&UZ_Cyd()yLV+pR{uz(l zqfqgAMzePGGzuM)sD&Q4ANk3tTdC^lt;aMfBE`Lur(Ok9}ef#SQZMTO@q@ebZXn{|mCaogngqh9dN zv=*pBzEDp!)C*O_lAl%Eut#j(*D<OQsoMcuJS=Ob^H$C zdOB4Av>8y#Px4Q##*%7eV9{p$>_%pP=~$QM`zMFPUZzS=rvh|-b{D~zy+nl^>>0q; z?YY55P4ansYW+n)DpLm_JK^~JxVFC~ss#cuf>cd)9?w_~ibVQSf)1{xYF5jA4nD%d^SQV1QoZ_xaLg8lnJf8IJ zO{Erib^CDnVJ}&l=JSf#Y%#jkbWht3S^#T6Bsb`$NA_i3nC*!tpvKU=pSDjmDSFjT z#EvCm2Uw6Szaqbc{d4XJ`CGsr3e3)7aypRAuL4=)oS}dc>0-ZPw@ID2a*QQ8lfc|^ zIYnM(IuqMSnT-iX8sc2mFB4%6&(i$(1vLexln1k+X7{=4u1+uSy6o7aCI5 zleG|yT%H^KTo-SjP?iP2H#s-jYU_dASs`#+fBnz#44Km+!m{svZy5ZEo8^--DD6a@ zzX6lok3vbVcO%Xxc^bIh-Vf9(HbePUi0!Y%A|Tj@$XOVDGmcNffny&t@}8XXc%=+& zPkSP$RA-_8C$0E}nDn6eMa0LD?l^5m^q|!MIHY+Yxss4dVLoOs_cX2zt0qu^f7jwS z^CuTwqTHF{)1EP6Kb-a{ByhB-r#FnJ#wUz26Q?!tf3Fbeu}G)_piH>wdH*dg>K*i3a!ZA*Fy4sV4F>BwGzKYJF~A&M+*X32RzN z%s;O;K}Rs3*^9#DT1*3afDNY5bmL0-=5IVK5bb9Tp4SFV+zI|6>;p5${m)RQ!U#mn zrL#Q`#Vo{I3&W=*&qzoe?g!|YVm0B#0jC|P;s=nlI9Yv>63;v?67hua>RuPwfXI)fXr>jT)GhKO@Z)Dw|*JjB96OI^Xau;|}9QCFJpe^`LUk{i{@$ zE@r3#2gNuXI-x-aXfw9H|8Fpt)P$yZ{3j&~h}l54pkT)i+#;KQxc z?fgI}1942n1pWXjB6Ae4UkS)Q^>jEU2K%d6FhxFn|N9vKxuJ1 z@t3io$_1yZfp4;!=y#+782Es zsrxHck{{OEnWVdhiSPi7)B1Pls`hI61rWpjSNtmNLcSd5O1fwA{U;<-ibF7<4_;De}vdKwOVIW0SZ#OoBbf@qR!G3baf^+No+v7`Yok$!_J?*nRi8* z+}usz>H7r$J->lns81Vlb#hE9sT}BfhRV+~JMxP)3#IspX7Ay-goi8!+6_KD z=1165f!h zy!}1>!5MG5C=JLr2z}s_<9DJ?=k}H1oAq7~rP-sS=Xb&$q6T)Ns51NCJY6 ziHy>9+ejnH4tXBv?9B3|aOkc$8c0&h%sVV{#ZXIFq$;P+_>5Tqmu?qckwR%zMG^`y zo^Gr%N|ymd7i(DZvA6g`*z1sBDGwKj_4gVpu{4KzYzU)jZ?7-*^89|U?E~A7A>*Kt zR56~6NWw*4zOq&w*z25sx?>88X$*jJWBYA#Kk85)c%^l2N1fXTF)G-B>LlvFzfqSo zQW#9Lf44E!C~i&h^y5dF#~x1qN+&<#_e$`M#CT%NpZ+&a#V#)>E^_MjtK5^4WS$__K%Aets1ZPh%e&N7y!h<1k%`RK_s* z?gY61yFBfw6+p0LXTP=fty=T=GOWs|!1Z{@k0Z$njFxTsnp10QyMRB zpUflMWa^~UuC?+Iy$e5ddoh(3AGv4Iyy{JZ{q0-BY8*1D)d@ft#8;Y%r8^hK-DK%7 zM)ViIm0z+r>8h{gOHGzN$JQ;~ajd-L(U7-a^0`>H_KI*j>=iEX<}_wXk`QKrO=<40 zfb6CsvjCV%{J0paUY3)V7s<+C{2JcfWtGmkS)%{SPsB6weD8~A@t6BHD(a|*ZR2B@iR=KD&wgvN05xxY$d zq;v}1*n3?X7i%$Ww{vPgs0ZmWtdm1$*9ix=VJTQym+}YufBh=#l2(j1`};$UZ{~*7 zFydoJOzZMt!^-bv8ddFO-xH?3@Rlsef`fX#u0tAHOfmqPbbsyw%E%#(|J%-_vCvS` z6AO4Dz{Tj4?rSttl{J&6#67Tkx*sJ8UlaF4nbKJ($BIkVEf4qH9n@Kl(9my3VfOF% z)$B#e&liL>J74tNa}BNcF02-PcY z4fQ0aiRI4CHnEg{=TsbP*CT&vo~0tL$8-@V7ZE8ti+%IL zmOoZu+j?L{ZpXc`b=$y>J|@A7l5LO+<TlPX+g1#stLB`L!eaQdt$-z{s3~=)A z{EAA7WBVq=<%<-=SD_o}FX8=jFm_C`0~s0E6vcoIFM{`o_+ELlp8XO+d@T}Un+G?l zVIzc8RW!_rjc9fwdUJUv?R8|MH#Gk$&?lhODO=Y~2oA6|%#{+)fE&YU`?TM^EryPqr-iaC7O` z%||vhW>^-7NfcYEj)RvsJG21O8)tpmNG(elrD_S@b0RiEN1{~7W`z8uTYU(V*)0}( zW+1UAUjHJESII!ev}7i#l^V;`ol-m}<#)nj znwuMVtp<7SNGmIYdfz=~C>(F>1*_6XRZyUC+|lp2lNiv(&M|ZF@|$1~(IuU`QX`qu zjZvXn8kS+J0@SB~E16gYD_jF69?%jtyI(If*+0nDUHULM?Uz+jA^(>(V>Z_XH>()7 zV(lL)SEDGb9f(|JLWep(ejg@n=5Hls2xdy6AFfUAUy5enlk-dTt#>>vc7FW3eqLWJ z`cKH@^(K?P+zs8lTxE15Zd#rsym}Kgf*})sY!W)1X@0yH^g#Qf&`B~jH6+0F zzC|9#zK>Ug%G{K&+vLkDsjXC@pvNT-YYvfeS^al<>HXRe96EJ$CSFn~ciueE>Gz3b z=e-z&*B={+|FH#k#2wnk{J-R|XP3|ZFNV+mMt%K%5CQi8+qdf$WJF7@SiU7cIPRHP zVDZX>|6N{Ian=*MmVa~SuF@lG(Q;Gv*v7_}9hb8EgpXPEErImQT2+d%XB1zeI7Ip= zmTrLsmdE~_dEvC1jvvkSu zONHQmU8|QtcvR^7u174ke1lX!%gx>4Lh|^a&=1gc<~Q(49jBvpT582g(?>x;%RO6~ z8O_6E?5DnW5$Cj@YO929o}MG`z)O&!2xQlX5;qF1b=uc@3DOdly}w?Fq}) zFG{%jrtOySck@tE_%iFy*)aN$3sHga(=V_6kaGJ66kL+e&*Yd{SU+lh7F_)OeY5D$ zrHj~##BHhnY^MFL07^2AI~H*;l$8Z%bw);CtIW~9Ib{H)Gtq8DcxkgC_QbZcYvmPG zkIx{6-yjiae?~f*;B4Dx?8}HNb%ty$i^%&F&!?A?+wY;X^GlXS3%Ax|;+$>;EhGGe z=GmC?SBPDtcgHLUmPoOA?q5`B+wRSak#ChpCIdIbfY{TO-H>GSD*^?lsK^KZbEeUr zN5Z6*_bkn?#ofJiEZ?#vu75KftYHLnzYpEOZ;pOE4zx56h}6sFcz5qWyoiF)1O>la z?9yEkYa6!IQ^5fCnCNZEumIoGi@r3;SWzri&PVvqxCfA7Rdp*Nov=m5sIBCC+|M^C z3zaZ=#vUQH1K@(wUo}R7>#%<*fpTNZZ)8oEq8HsTl?To54z9$xXXHwlz-bY|VEoQA#y)8*p}CYcQ_SJuL%re(+N6sw}3nJCyGgGe-<+RNq7 zf?mqaC0s9ad1GENAMa}1nysDH82 zVxvWg%Gh;lbdpM9ZRncs)=QbxB)OX$ftx-MEpr&H2bF2;r%F_wGMoLQe{-tw6=OWi z&!$|`i?G_kx_fFb+Qq{+~5pgy*B;yi)~+>EOo)0+%Q%an^z?i$fSi( zxO7c9%S^7`Y^Ro|r-(Os%k1o58x^p+?y`Nxoe>ju#(8;q^zYV|G;N^~PssUbt;7&U z;fApKeNPaJA;LeVI0jRxM%Y|2gAZyB$t3Gsp2i${Sr6v!Y@_Q_7gl-4Og-wnKv_R)1u$0e7=^Wd|_5)PJ#L7SETRQxCj{?ZbuWtLmxwI`Cwf`0wn+0Iv}NApWr zwz?Q2QDb=6R>ijSh221jZT8;Ois%>Y2sX4czE!nvG5ok8}Me$k1ywjGGF&&TJi9ijzyW2dW>=Pwzt>(a>E+VyGOPo%gw?^-|ar85FZ4 zG7P;!{e4;U+iJe-y%=_U#eq<>KK{?mVe&Puv%5}oKr-uHMTU#8r|J_e+@dRXY&>>w z8=bV4H#NSyLB_F+diU3mZzRiN=%_}oyZbSOZ?KKNt$|KTq3y1|^ltZdh^{tkXDcYv zL@Tn&-%#75%Z4knUQBX0*|tRqV5#TTyj#a9a=zt2g1v*iI3tyrv$8ywcf-ptP*^f6 zw6vtaHWXXgqhPOyfnrOhl+iKj!Db(0tvU$T+R#jE7Y}Cmh!J8V93NgmOvb z%{@+7vgb+2g=tSD;AS3v;w9nkW<3jVBAznrQ;?1Tg$3~x@?mbw7M@oR1;E@d zu1qaF9K>J;>eyc)60DJPfngs_pUa!tT&1)c`B`QAq?dJkKsYniI#Usg$@&}4_h*lH z{KC|*Cob2Ey?3a8_Dd2PPO<~Za~8YwcR>CumdcsjCu#T<+|z+&=Wduhf?nIzBj6O9}j;C+11+(QzJ0>6z_! z@4nmbE%aSl!c6zj3BFk2^?kSQi{rbr_R9`O%fYZSS6?}po2pq{^NoC=>>8bme{-_& z0O=@X-eA}iS&9qR;a0EqI+Rr;i05DExRn}*#IRmaqDC4~hxBuprIpO{i)@yN8_YT; z8lp_hkDd5&$bD6_*h*}e=61v^BBfc(OfD46L08T`0bf0aprdYuQW|Zc8x2a2SqNd6 zi}3M=b=kFIf5#a>;Cq`hZ)ib?{?N{fD)%_mue;gn5=`iX%Ob5SYCE8Q zhDLS4l2L)GY&XEtJbM3?q8QgV$)&B*ZM*&-Je>?uwwycR8IubdpGazs{`zN^lq8R} zEb^B3_B^&D?&6e>m_j{#_Up513aRq`ZeWAlJ+_Do2k3apPz#-q-HMHkKub4WouGNz zu5UR%OK)jFydFXF+shF9{hl-ZJX~ilQ;Yr#O3IjOc5fK4Z?5%XIY1maJsT36nOwQn z^~xW0cbP7d9DSVV1~!#)`h#A&*2GBWyeDm4S*%rmz<>+_uR9$3=X;voHS_Woc2j!T z>wd{@avn~-|EIkufLhn*lqPRBeQMQU!fWMrlKvSs{q$3Nwh#ic$4u}9ko2pWck&EO zvT270QZ`&$F)m+obu2{sw1u%J7E}}Z0EdVUJ3ei{!%+R z#x7KmN8=R2zpDrw2nelK-Mk&Q1cfYO;V>3{K%DK(p+>X(LAub5aAoV!u$lHt_#a7{F|H+A0Vy1nDPGHkl zf7LU{*pg0&xD8nmZ8s|F={Ix-BTVSjizY|goIoG*@USwntWQJ(S^r8@e4>6_t~j%WyN1dL8zfQ^kn`W2#_2=VFgFTxM=?BC+cD}{`!OK9GzHzZ-X+_-mp zmClF+boSxyla1AO;GqOkxb4r?+(@O*Zfqdvr7)|Lx3g}bBh`rOQD2&9G=zT9Q?RnG z>eEMErqiO~r9~XMpvguw_2N12;Tfd6(GWx>h0XY9ppsEnpHL`@iFYMFI&38jVrfpf0uXBvKqAX&4S znnnf2HZ@((`fFSA?<~OVx211e z=&lHH*g@^p=lrH-e4JzPmDAZjHpLVXzkp$JJx-RBU@vvl9fq}~r68{)s^bf%mxJEB zS4h+k3z`*zJVT2T==Mm?2B0G7F*W8|5hc=)j>?BaO~+edz|}O(MMw%Dk_g-*u{s_HAYxDyS>&? z{P;0b?BQ7Vi85RE|Dcd#6ux~SXP@t-jY`Kf6-RBc#__?xErmCVLh~ftTX9IxPGZ@P zrQ>{K!K=KMB(_R12O#ArN|4|k7}YyPkc7Vqv91*Cc(*`?Fs>diaO?e0vUPbky^!jO z&0^7(+g3RZ;lDBRB@?By!M`Ju zN}e1zS?3OO@P=)M#`Q;(%X7nk9-Q0M;@mdEwVs0K4~&L_YaLx@T~CDL_~irDIQX9%lV4WGo99D>tvl85P5INiH^CPX zo>ewkxV-rea<|K2Ch&r|Z=IU4t+5GM&gU}YL>{p)>CfiaRYV%_dwGc3QC_HbMWu+h zs54%_?6xkU8hlHonQ1>jje3p*`tA-JbU0TCJx)(RR@d4E?LfkWyfL)Oue0i z;^1uOj6~#e?e*~87P`2mLX{gXOoakAuR)rtj-bgQo-zGQ$z-8z2q zc!@HRxad=q2ye=v$U85U$bK-6KA)jNdPBlu)GT}*di>E9{s)xLCMUioxActWgz|J2 z?yej`Jsj-564QQ!?6@{U_V>lcxtW9U`8Oxx8WOK{{o^7sjSpb^Z*Tzty%hfPgM%Pc z#ue&jN_?IsB6;onKxIQi9v)tVEcQ3JMuOSwu9GlCSDEt#PtsKRsXuiDKfz09jOU%c zO(wio1xyvcbK>0L5H_Wa8|t*e2Ut#dcEnLW*||n1&y@goD%MY47^bhoqyWAxd!e6V|s%j~H;#LqkmGqFH;Om}Gyj>0`Rx&O#_O zb*_qyC2hoP!WbPv+VhAtZL|=D4pZTK)d_Qf7`|i`hxl2;y3-{_Jk|?459Z{L+Wdt>`}=<_lT!w|?s>+}2c+-4sV$Vqg6x?!-upiFxwpIccgYf`CnfH^p)q6K zOI@4$bEYzfQU{bL^=cNcQL5d=_EH99GwOL^L9RQSs;lqn!R^= z*Lr_@r*zRbD%ok$tP$!vrQp2s&WyP#wxO{F%Ge~mi$$q?hTL;v)<}?L*kH69kYpi9>Ngn;9 z_#RLJT1Wj@qa+nZ8h>Ea+3GE_POdtt?!k^egXorg%*jP;8;It+Rs=l&DthclC=&A? zy7-En-X9DTdix*KhY`akhvqs*_No{YfSzS}rqfelDmsA00k2}k?4O+)s9h@Ti4tty z`HCoOFa~W<8PXeg^FpZKCx{r9hQiV#QvX{CZ|xBJpb<(SSU;&#h=2 z^08%3R&OC4iI9Ja?k{y_k$zx05=52tzI)zWWlnl>C@U&M>J_l?%Hg4OHt@k=TxLp7VhoMgoJbNxI7sU`vdZ$&6be_eU_xTZYUb)#O2ufXTl6@>w%F8{$}_pb-aZ9F8J!DNoi?wuc651sR|!5 zSGy@t&N(pfTk4qzz$TvYo1e~!UAxRSzO)dmWUao`w$>AC?U3FUO!AQYL^JvfQlM)3 zHe1ZgWkQUA0N!it-rv01K$MIm^8E0+Lrk4u-!&%Tb@Qan&72rTVL9b)T3{;NsKp(v3~K(u!H)a*uTc}S|Jn*p9R(cCk+~AGpFB6#dX66 zwjMAw*ZvHXN8#$$U0zdK&DWm#WjmitV@@Gp#-7rJxXMrcz~^J{&yc?f9em9R0xEZR z(n>rlKE&O12&8#$7Tw=6_rWtJT`gPsDz&YYWwk$9`&dd4+&p42>|J>0FeTWzO;Fav zD5)n;r}`X``TMr5uw-UxS65gRgZl=5)nk)8299P1EsB$x>sm-VPF~%ef#CFEKah=B z&j}BeSJ^MO)H9X*Y>pAG;k8c$+%uZeaanR#@xII`SUD#*N7+nB~x(a); z0vo<|3`>#q=kxa=rZ9iW|t17@xL}4IF zTuraZ>=(k;gGU>AFAQ4uYx@@k(u;y?eD!`r0lx*jA#+~$44uk%Qqm0TY!<*)V?NMg z1eDOFO?`Q7w^KXeQ6MSUz7XN)bW>X zuNFeENG-jYWwR8w9p5E7-qB0CJAr)(bbYQO*!Ib{*`>d@&D``}?d<#AAMrDO*EF8E zStT;RuGOjA=irjJoW?SmUkv!0g;$N9IkL~bRU%b9R%e#~@6D;ge9yu6GMNC&0= zu)u^-MM6fyv9@N1w6$zCk$Ddhf!ZM#eQ`2Gl8Drf&yh`g@R_P$M)LDi*B{)096rO+ zU1C%rvYXCp6E!S@n#*5t9b&(F2Sa!>aJH5qYmoUMjhDi{IqPgQb{VOtn{HFMVD z10sgPwSDXN6H-jMI*sueO@U85AzFdu3((BrZT9MQf-M=>_}ffFePbq*yXRCKL4Y)q=qF+VK;Oreb+#$}L9&vl|PE8cUH_ ze|yYAbo*Th(6U3Klicy)Mb|F`j83i&5kauxvR7@c2`?wpihE6qt3JLMGsyOVim5R@ zFxQ*w7cCx3&p8wbkfHcZG`P+6#Rmff82k67BBp za&vgeCz}J8wtlzp0@EQE`Yj~ zXyz>nCCP&dc=dK}xCCN|EpKLLc>VWJ2({9j1;E|8F^?|R!OPAsAa75J^xl60Wp<0U zk6RQF(4VSK30LOgF%XUP`p#7MeuJ1oPobRO?n$tP&Sf_hdZ1=Zl!)CK^v@R$UGI%d z5o2GIOj9DJtb!3hoEQ>DmMxmstiymdFEy3={@*);t^Otpw7~<}jqtkU`t~15wo3AC z(;buJt3}1DO`1&7R14iSFm|+LS*u2BRyY}LM4@n%moGx2?aPAgdMIjv`&J-2i;Jp+ zzxgOqP_RLyOw}7wEc&%rRQloUZ|gu)4}P|)3Jr?1wL!Jm?bV`5XJ(nju$8r<<6_gL zYTUUJdIZl}QGYy9|DhO`-6#orv88xqw&4uC4?z{d-yC=v4<1lV-O1N`f6(@dSnt4I zuPTOYHtopc)d`K+*{X3y)If-{mM>?S+1lkyRuq7D)V=Qo7n|>=kDy!Mb1*Zb zMNcdXcg>eLXz;C456Q@YRep3m+l_JE+}0osjY4ny+XqYMp@vR=`xLdEgc;AZr?2|H zsA)73`ZMFG9#(s4QylQ*HIHsEq3Ml=Xlvm6?z2w5`GEZW5uIua2ktZ~!;W7R_^$5v zE1nR^8gW*ut1~9#^^T$kml|L-Cx-C)Uoi<@P{7%L^`q<4jLtVq9{7DWZ%=2I!}M62 zRe;x`R59$tv)X?1cG^f|DA0%= zJ{Mg+2k;`>wiWhNKA~LUyMJsIT!uGKx|Gsb=7DY|f~?#Tmyu@#N7~9l3u4UwSbNnC zWhVP73cDXUC=v;25AwuUum6*gd1$fU!I4p~vp?I~arKYh;Ne_{LCpy{=|3imd#>Jp zRv+urR}!Anm4)1^YVF2mzO!p0P&yffxU|$nzDr*hJ})Ke8QTkjs#aY{>jyHY1|A@T z!j&#`6HFiJPSS#J#vU#Huq~M#^BZNHN|`BgZ(~G5__>5H{*qY#1G5AoBV9fyi&z%k z)rc0TOc*7XmRfZ0#QB{A{eQ>oXsy7yl>mE?Hai<)|))!;B0LfnXp zV-OFg4}Li~hAb#eYeD+Qlr=dC zL7G5>N)KdUR(xH94k?qr{W`O?{Bd8!Ux#Raxu5P&Q0nkFdEY$Ry&+3IPEV#$wMdA)u{#)`5SjPT9#AjxV{Iy8j ztlGSrL~BdTkIXePtwuDUZ3^n?M}9H%Hf=He0u;OK3(V`I(^rXj<^2K~fmpW6>B;zV z1WTsx3TIZDR-Ms@k@0Q@$&;7dS>9M|A;V$qBJajnH0~@i!M-7hg=*Ww>34Ma#A&(K zRq$2k(4c^BxbU2*^Lh;L5|u<_9h5wimk+x_r+|DAgNqUJ!Y~nDqo0U)*qdKY7uIK^U>9XKL_!O*k{v$DnR27LSw@j?<^+9(7svKo$Mx z@IFN$u7P0L)%eDJu59+l7qhI2vfk4V&}rudR#OeIAYLHPw)i{Wq6ZTNEb+>T)sDxK z)h;fAw*2TN?GCcr%~%pW624$&Sp!i`sfr6RP`FrTh>cJL7OwFnA*z)b**H7HMrdVH zfz>Z9!3w_bj%)C2PHurW+OtV|eGG^xr1R1Aoa7xRZzJ%kGm=;bx zS$YHjF=RjE`jT25*}VX!>=GQZFzbyx0iM(^gP#L?_=%{ckQMj?QD+`Bw*wR1(qo znvqi50sEXZHTa0DD;5W~*)QZu3YPnC79{AVDqUyqF{-0J!x9j>%Rxv<(eFH#&7<(v zFg%@@$<9VsX_%WneDUGUYo`@vFI)_czZ7X|;qUr*sG6t7`_GStHwM?*1x#uQC$APW z4c;Gacj|eKJ!d!iX#=9;%|pyi$V2sfSMwnQ6_zOPJ7Hf(Y%YLA*tr66jEZ^h-*Z*j zmG+tw{IrolMZdeG2X_Y6AO3Xt&$#jn#h8#XINXk_)s5~~?NkNSJ-s_LUYw@`5+$%> zx&91HM>S_&j%yuSjVVo+kDkR2o3S9yxzqC;=w-v+5XWfz+thdsViqnZem97Gwj7?a z3ny%Fi%1vVR&Ozf$NxgmdO=SA<}H>@9Fe)1LmD?{Li&h}MfoxUrs@dDN%XSBQV}mOO+HUL zqI-dH!ncfa_maBcNg%2&MvdA>+j9&k51ml_u__bPPP84gn)ApJ^r)#>yQ1nS^^ogN zxy#Vr-fg{ylbW~~$@Vvgf`0JEcuN)OiHk-N)*#5wjKQKF?)3X~+l1J{x#o%1k&kPv zt(|UOL#pqKAGVXskwIP)-cTymiNqW{>#%3DxF#A)gQS9U=*?K)QXh{VNQuaoiot^qxersOJ=M2q+{|rNI6srPM^zlbQUZ& zJq39!8xo0@5n6YV#m|bm!;~wolvrCmI79`K^zxR9&X*6SZbMa|%ufo%E{x5$zI~5o zsSTQVNF+vpuS-Yx3smcxGT@tE3mp;V{12(7#(4rMX|n@Hm|#9XhKmpnpS=TfvDS8U z05j8fUoB>vysdkHowhx`YfF4Km#SDb>V_U#A=y!T8j|heHXwTrX8KLrq9@Cepv5v7 zaotK=wWLnzUiT(%1V+%v=sBt~Y%I-gev0=D=f@TZc^?Tlp5G~kN$6u5*@3pqf1{<< z8(v49$PAiFo2|229hGG$*0xbEDz%K+?DG)PTb9pOo+i^uSoi4%Zu?tC`uT@)Y^{&m z^-!YT_gWN7_k3WIsM>e=rp%$4+ET*@k%{I^FW-}VnKk{=^sU0Kl~1}B-;A>{B{Q*p z2{k?$aXIE^)x8DWcA51hy7+JdIkH798*;zs*Uvsd1 z-Qj2bNXG{D7b3Jvz6iJ3#+Wd&-M^=Pg6~vPtH)H)md1XblClO$71|`zerK6qH5kxk zKs(cBYL%f77iAcF=a~xYjqu>^CYu>J}y<|xxFpg;$Q}CQ^8Ia}UNj*^S zL_`%$0nTR8sPvw6Al;A#`zt{|W{6PbByF>e#e}JNxva&{(&o+5k3^Mji+>G!HR8N< z2*^sB+emMdfexcqU`6+-mqXVFSdIioGr@%>2Wu+QF}SWbN7`p|*Kg|Fiq$gRC5L;w z0UN?Lba8&iz#|UXvjaSblZoUq6SZ>bIyr3vQ_h2tPk8%@AWN|6Kesd@K3&9Z_!It= zh%|Y(&hoD^tgW1%N{3{xjGsc-t{}iLn(d9cO{s%c(2R_en_+6D#@dA*ra(w;Z3&x{ zDU#ZMMHrUvcknNI~?nPB-4)P-YaEl;OKtCea3eQn7P`U-sNxiWoiVr8*IACW6 zRrN279-mkz^JPHQ0!q@%0r8MC6hLBF>KS^)tI8a`=k zw7d@>Ju%yw+Ns@@OQrcAhl`-Lgg>FMO)CcEkHE5`3klYnc(Q(a1WYRnH;c!>466_2 zN5F>1YDOj_-Y(-mv(fz=tItFJqiRB0u)bp)T1k;^xHTk8CbxEgID6nI8Q+N)J`Eg? zhIpMH8TSZ4J%(y$RO@|Hm;6aB3$vD+s+>T_b3ceq)oZtds)kQj>*(UYE(yah4G<|z6zl3)|qG>IaOIAb* z$n6$|#6s7+{uYo9Az#Pn25LJsSlC_a%FAIuhfMU1I=o6w9MkYEBi(tEPDhB_wS?t8 z$n=cK^+!vw*eGY>2aQ}JTOOuqf&D9#y;g$gWHIL^Z5Thvyz|9q>@;*Uw5Eo^R(zZ19S@ zP9E%izdxOFuNcPcWXX(j_q4Cx|Jvm!-_`5;91f6Newv?7oYqH(HjG#o%6C%obXW@C z{JA-(04Gs#@`!`HqTyyh`y#Jaoj}ROFfoSO<%eDw32}Q3%ZG{ilLNw8EVEuEZz{Z9 z&BQvlVr*{Kg=A}GFXWb|@E?v!WWp>TF2n7CIlzKKj?h~TaY*eepAPQl=_v}3XU33* z4)=Cv)dqRB)96w_sUsMGn58zS5WDwk z@rMaX55RgxB#A%0GgykmKC6Kf;H9u)51|~BIK}Rqrl_dURoVDZ8MtS(PsTKyZWMbU zw!nq6U$d@yHz!gCI+{rAzgKVqJZ1kDcUCZ<(IInyD|OjL1MJU^u(r0Y)gjA2GN%tJ zWP@XHVV zdGWYi6e|JtW8?T4Tx`J4IEqrDhBoWj;a33~94{M>gZVIw7gyyRPP6o7f z?V!|W7TR(@9SNV)-V!52h2U)>$$Efif9{7nU%}IZr!_2F^h^F?7&$p9G5aUIBc&Fb zgez4xk6Uy1+{Ehv);r};S!ehmSv2l`nk~L_id$V0LYY**bIF)i5=;0pT;#KSL=66} z#n{Y$v*t7SnHYha*D%q54-_PViL}G8fE8?>+xApqPR~mp^j6=`Y;i;mT%UD)Z@MQX z0XO*hk6TJblou(W$D;rhNq%f=vX)yXVk@23tj&PVazO2VZWVt9n%gcf5>3#OOCf?% zh{J}Vz7g*Rl4}&{ZeA#Q?5amtDS}~4)$vfsvkG4htZR5o2-#Sbqo883WfCryNi91( zb7RR%j5~uPGRCd_vR!scHSPCNWTbU<^u&m<%Q&h{U3%ncsP~f_3vxNG9b3#Xw_X~H znVX<>kNkVi2a`xPvwAoFf*pwi(eWe_4zeomUVF#l-v#w6Hc0Hl9?Vv>{ra-%Xnxac z;e?0zb3y_8`i{PgetD3}6z#?aIl(0Gui<|?4z24)FjVwPNXan^Sa7|{!a$d?KD8tF zO2c_?R2scnJ1~1!v zsBdf3f-6t(VP`!qrAwZluQW_n{A};;xQUH*OQ^9eWfWi8XOu}D#doBuBLc>jP~@1F}*bHIIgvFdsd3kp=^M ztQ4uO$3fTJlC`@krY;U}D%#=2esZzBkD>@bgXwx&2(4na%&b4{H7K_m;t?%_b5xy(yYqRUC9B;0w4H>f@_3o=v~cLaCVzx6EC{&3!-XBUdr5CvnMz{%zUFe?DIu zmOo62Cp~3hn^w0Uf6z4{TwI)b{t)j8pKBV&;+)QeS#>(DKgb;4QTODsGXR%%>{-?7 zcey=qSAnNdL(kae=7r9M6=3Mu2g&b(04E0PqZe>J%E}&@!Oz_0W^ZnP!jHzRyu!4} z&YS;Wxs?Cup`f~81?Uz}#M0q4=o6gsR4l`yCf&Yo+t&qGJ3#}ZU(emRw^(b<-k$LN zXZceTle$sdm6+{Tfo~ll8OP4n`5SV44-D5SpLH#megE*YTy(mqZVY?X86kKA9(;o} z+o{}u+2LZwI-MHr2%jXqw_$;spDK#|C?>*M;{VON-Lq;9!TJW)pg2z|AJMXSkj5jpGrkT%>(w;6y{fomCfPzZSW*jv<=n1HjUfcso?>o-Z zZu#!MtgZ7`@>xUJEd?iTSkzO7jm9)*T1Wb1mbdnFWzOw&`Ix$lXzX_Gsl#tSaQ4^a zZU<`Cr6buN@cGHwiZ7hnvjuRQi1g>zA5ka%X(N z_?s66hUS1?cA^L0k@3h`9l%EX0~=>}_7&^op5S|#@V_{TS#>^oOI9B}kcxNN{2J&3 z`L>aj?T7fnf&C+Y4fth${qMGsJ{_0Lq^7r(<*lpnm>YSe*NI7c-O%IpE)KU7(zopu z`_#7n-a@eS06~DaIi1^U9W4E}Vp7)c#kjCuzla{d4%A0`A_O7AQF6m-9Q2y9IdHQn z%8zo^K;MWL>2?sc8;%(EujW)7s}+w9p9!rCEACi3Xo&ic2{X@;L%6?<(?ge>jSDWM zGYgCfZmnOQAO85&pK0Z{-uyPV=-8c~nU(?|sa(u{auMexOuuW;oQ^+NNoa-^PbC`z zm7q6%+@f%wvJW*b-hoGH-0<=8Gs2EHCce)4y3d*46dZ^4(zK_bJV?Iq>X8Xkw&C~` z>ZTHLq2{MQGJPr;tu@Y<>nt7KMwm2tL;i61@cX%VPGRy@v;rYY~67%3FhPf zp=tEC<+d!W_ShoR#xkzbGiML*tl{q;1Qe-$IDEmJh3Kr>@6ej9K z`w>rq5j*U_mn*Hre-5MUNUKgi8Dumj^qkB7TH$|pdf~X{(AlS3h(WQ@frZF4DO`ro z=R7XDta19bc7QvG@(kksv#7T(+H*wmi0DIIFG?ttUyR<2*5z^UrluS1r}JKaQueaz z`@4GIE`PcEyMi-|v`^SG)GulFvZ+?=Bp?enm($)fFpb;qcyRh(&LaFIjzIIq!W5nExG*g8~UG)<(Ke# zXg5&WjvmY&Zx@Blj#Qi5Z$vZY#A}Sc(1*6J3+tzc!oLiQD0?PQ-UFL=J39a5ygiVH zd2s1Be!1ZFN^9R2)^!>bdMOMyAM>{U`)XV*eq++eVzXU9y~57vAts*89>$Hz{-o$4zr#s;5pcZT{5d_0#DaUezFg00!y zeQTo2JvcG9-&2`v{jHA3?sCE#Au`KTJ?eDdj)INrh2m;3uPNvDysqk{)YRX$KHlM#&JRO)KSY4h6)Vo{70rfK zFRJcBT~9tffqFOh(ULyg{Ps6iOcW1gG$5T=-gpyWIdW%U$R_Ludv{}h*A&*h&0SA$ z2ev%ivEwsVt$+IY$<(I2wzSdnxN{+R*&Ul|hsT3^bLBtTbv-(wm0$N;Gk!aLxXfNy z`O3n2-9ep|6WQ;1fOV%RrX14wOQnUaXnX76_7fcCNsQqc(k*CRqa$M^55|o0Df)ny zCN}@{?wgktWkOTSmhvH;fR93Z`W{>F2~}1i=oM-7shvD#T=q^-D+StLNsmr3xpVyv zoNh0C^2a~-eYJ1v_8))xP37>YL5#MlT2-zz9xAiSOAc*xf+)CdRVI)7vw` zoTj|W?%YaI$nx55Dah$Jl%NvPs=M!|qW3IVGayc!f%okJe;A)sf|zD@AukFIAr&TN z?L#X66dDDXEHR&ENAiDRuWTZ*ehdT8x;O6_*f@*v7_6jT^TP&>q`=zwZJl}T)|}?X zUWsm~F!256o1>RXTGOB{P+L4VHufVndUnj{+*RT>-&hRiOkAqx&=_YR+Rp0z@7FDuON{3COjKlKh$M9}q|inVoXu+4 zB$MfT0mx5XPtse-W@uy@|3>GDQ!$Jdyo-;1%A$w%eib<-mFt))(=?zjvxl2`#2BSY z1nW@s83gnuhjsc81(io7iLys_{)gB7`dNHmt~baECM&~=LMzp>dlo2v4f|rpC2Ck= z1Vw2bg_LN2<}vt9x4V}gsqoyiTG>hQ-uVgAR=V zV)`_0@&*saj%2R!Sc34-dTE&=1v(yUT;}1=f0`X1o1ZI>**j(0wdj1%(nndwS{`ag zPS2L7yvwxj`I_a?;RONJr!LwKMPSb{fLz=UO%(H3T47Fy{Xr*OT1bQY+s-)V`_+ui zH&Yo?bI2-BZn@6Wt~N^jO-Va44Y7Fl(2ub9GcEqlLMWEm!O{ymoI3(rX1Y+~I7nd= z0W(;OPIE6!`8MCULs-j;X^Vppr{spvx&-kBW8WNVZ%0#fxv9J%p;NlXCAX&T)<2t0 z$Yj97n|YVbh8_-p3W<1eXKOMq*@ON|p`kF#od3eeNIFE`hOzU3xe=190fcyrZf_Mi z@=B@`=Ley#CLz^Vy>d&U?QVpToqTe_5X*r%7#i7sW)MP>)a^0OICKD~mez4561rqB z#$!VZc)K{WA{nG;Amm_W6oMfZ6QHgP$D~Dj&wI8}LTLgcntIuWe%L|ON)e}g`Oe1SOiQlTk zsYbj3YN9e7&n8~t<57iZWm*a7 zWk9ob1~y;lu?rCAt9anp;mYr7x}a_RnzfewKxA<|-7XYN33IV*L4l+EvOsX>cvS#3 zSV`|}3!24x4P;v((IlB?e`yO1j$)9D-5{>|`Jn;FvcD%D(?q$>yd?_3i|A zzAJk>RyJ%90IUt#aJm=l;V?J5Is2??0jTb)-iz~fT#ZxRv}_^5Yz1Wh-G(N(qPZ2< zAlc*5z<=e$REkBRWm#<5V>X9j>XyFYZ!Zt+DcY;cuX1Qn$C1?ifEA`oUxr%N3I68} z(CW<8)cSIJDs)}1Z(QcIntkxeC>2hw;hD09=DBg{XF`NjM2Zxs0IDdAuUQb8p4&)U zS<11SAKb|b!`mLRL<6n(Q>T@JNzh*0SJ9q|dp#8X9P(9!0M+swE%oB1ygoyo+)0uz zqKB-kdcj5A8zG2S={J`qDhvRE!S~0G&y92Ahfm}gc(AX=C_zrqg8V5PU`wci;J7rg zYvCL=uro|QM{3kbS-Ei~u*bmxzGo*(R+%1Jx>{ObR0|>GVfXUd4_O^P+cLyn6M%Qxx*8 zKU{gL+B)`XM+m~0=HiHv>(+Xb4k|MWH*>vs)OLq|Wh{56%gaIsd-?0B`=~KEF45s- z!y1WYrTZ?W*U{Qp+^PR@Ug}|^O`ZnX%!6q*ErF{#I$o|(<;mjdrh5FBInx6_(J zRe|xTiC4C>_#+`8&|{$BdGBUEp4l#FJo#1_c`eU{v?12L2oeOAkyu}CZtRq-j4FBu zi8wFG%B72lf#TJBU!DhRXpdJWicflpdd$uqsxa$5#fE%1T~QP}GA`LFPtwdJ_U+3P z78tV@xVGW4FWHG}o-HH$a?+rmrMkd+r{pQjyjW3rO}*^ec1!kl*m&t)ypGm893j~s zF|=c5W$j3jkb|kncd5oF)Hrm7vUF8btfi^V&AnBr7n&&@5PpODH$GkDT0?m@eUS9L$v`z?1NBO<}fLs(5s2)$dVSZ$$9al&p#ZMOs4 z2{HGgJ-QpbBjX$PtQcju)Jsb-B^onYM5wB4Y8;tR$BtZYybldjIHuFVA;G3knugzw zWM@T7gi)PP`Fr8$=C3X)MW#j+@<7vMR0}@hlX5y0U@D6%Mr$x=47llH2gJfB#cE`o zEu~c(l^3dAq`C**iu83qLUg(#aqS;cX>7yDHNoe%Qwb6TskU!1cB;#P$qjx1$4yh4 zH0zD^yI5G<77!=}4Cs~vTa>0wwcIcL6i8GlHxt~PacI$$z zl4=89r^O_~Y}V*FkdqU&iE|#f_$Y5+l9Q5y|5qtb{HR=IC#+Mvszt(P#&*Y}!kRTg z??m7gKEJE=L!EOojG zHIRwvggPUpn5S~`G$HZbcxU}qR2UchoaY=*W9X!%Q_G|8hi~YR&KSYxX zjlntw>)Dxt@NIO@e`TOHldHrKHlXB8U z#mAFA=z@L_RJQ8_$aUpSyAUqXt?LruWjl>k7dm3!Js8eV6mCwUdrw+irV_30fT>M9 z8i1h8j~bo6Op2TCJl#nBaO2_hE2F@I+&Db-l_z$gL08UI$4}X1G-IA#Z}H13z<{4+nEapHdTH?8 zjUz}ZnJNzX*QAXlNJ=`x)`&(OZIfZV^h2ivB%mE8H6%mP;MJtV6X1T#!z|Rj7(_6@ zI*zd!)l4A=R91MUeS_9H>ApI3+y{R=9|H7)UbXqs(Y-MmoOHYIoTKDPIg%4Ws#erL z30S2#xwIb%8n+rLe*eN<5v(`5=0!fKll;Ul z3L%Lgt-p>K>php!e&E^1U3l8W@&&%>MzC~U8ag}B+gJqT=Fz(hZK0C#o&_XJxze{+ zBs5YSnExEq{Jy}BUjopZwZtp+whjv|iK2%oW9~3?U|;C$>aOO&kv!#Kqv*9}3H)m- zqp$=ts{Yk`MFFdLE~YRTt2P~03K=ktLARJ3)#Xmz?KhOmX$P=_OV0cf(6_h|CQN*P zwMX_~a|PB@*s?jNl=nr0m8hSp<~JPI7lFovKgg#0dn;TN8PC1Zh>N@d41>J>M=*c= zO|U#)Haotb$4pzfbrB&ejBT!5jP9i-FSIa*7FeBDF^sDs0feh*#(;O+N|KT&^OcE*wir zJJIULcFpk&&?gZz@JJVoKyu!j(96fYCd^-j_h+6 zT$N2?mOlzK<4V#IqITY2wLr>YMvKPD4Kl;>PWZ>)++yG^S}71+vE9N2`Z{fgnR!R% z!bpJA%v^U8o5i~DBZ7q09W(HBI8Hn#&esBB%&$6xTh|gS-=Bbn7KXCHXR#F!lv83F zR2ccOD>5qe<0aD4Y&2Cwnkxr1(|8Qep%-)J5j5GqSX3^bv16ukFhGaDV7B0R*xRYm zz=O5cIo`>39Kj6;2e_0@4*yTLK)*PdJS#eG^tWx!){70N;PX47H5Vi^+T)dla?9@H z%H)PU+oO9Sfu`rRLg$VHQ^$#(MQZdj^!nsgd*$FlNmn>cs~|=U)Tv4|oH)|lB0Mn_ z0gk;PTP;VfJS1&QCKwai*MjQJBUmrYkTWZ2x-u7N(TkG;i>5MsEqg_|<^JmPOGZ0c zRFk&EQImzu=~{b*kQKo)V<`I$}iQY?h=H#sZYUgUlR#*GcQ}}O@nrGrf z)lQbywq81O9FuQiF0CXUYZ}fHe1iiL(~FH;ASF=p8toTShq1filn16A>Ti>4S@L38 zVm4IaUy*Ol$}wfl5I+s729b8cc`Sdpc=A+R?boxQ$4*Cl@Z4~3#ngG}Bp$C`EJ4it z)aUK_z66RX!<(6725H0yd9!DBbcdnue--FuesJQN%6_IGDj-BjY0qAqfj)?q0G0Ao z;`=_V?zE2ZHOoJyN>3_r+Prxq3(*B&`w`^7&30%JvfC6w~eN3Z=IU3Z}iw;m$R2zE8*wNgio7 zB%nr~w%6|o7i$)=tkf1iv7|oN#_4@`yy2|&F`X9G5tid^GHb_z3kxi^L#NZkhPqaM z-xGp?Soa;Y5)o+`V{JQwA7EVu+C`2GhalChG`PqUFZ_dp!1p)qYL0$>3}*FS6x}%G zn^S->#!>7dg;}4XSkn{b8wAYkTNkUjktp3GFCOKrYgWg|E+g}@Ui~c17aIm}6_q{r z9FD)j)g?^lbhOU!?Bw(Ltn={nju!Pmu2`C8QE}NyZQ48k3Xrze*r+y;yA)Mmm>Iql z)99J2n&6M!=nZ;Mkvk@apN&d}>3%2^m{)va@Jmlw@xe|uj?~1TwUSNB=$Bf3c*HM_ zZ9>(Cv3@xRk{j7ej0WcXSv{4AH!4#1;1SYB7kb#jor6`^FuuXDiV5){f>l_?C6T|f zcRNcmy2J)ECXFCPKn$jETiIGTSE{?|rg4jF0s{5;@%) z^v#Mzzz7jOO%DC3M%t?%>;|HUGoP5t>86%iV* zdRL-eQ;kJqT4KuwD0JEmpp&AYB6Cd>qWZAr4wr2ksN=&t7z^rwH7335JT#bjnqg2; zq{Js6E=#P(-RLhul)~}QjC5n8(B&(ozB9t-(VJ7P2)_+|Tu%V6t2Z~hW0=va^QU=T zhvkCw(<5~Cb#2dq#~v{s&iI4Uy)DnH#-~;qyr|2odw-U7ixU$OnAi_X&<6D65hPjN ze!6*^`j%2>NGmeI0d2#@JHnWA4L!zou(^R99vzsYlV^@*0{1kkzuF`(HK2OKb#0uy z3EAT+(O{D74>!?9bV#%M?aJOL?Vl#bJ?qttcy$+3=BHj(U2?9Z<2~7Qq9AN!biMXg zN!K0TVZ&im(OFUuMN_nVuN3t0MBjd2&(jEV*U3`DB6nJSk%@5dSPnDc{o*hr$g~F4 zb((gWT0ZWn9}b_4&oz~&3Z5;f|NLb*Ak=`acJ7!g8JOSjqmF)Q9T1Plr~+lHW$@y> zeHomMZ2{+T&{A7jag_|VIV%*U`0to|oK<&O4PCiS{M9%p?cw6i`qEFz6hgnaQc?0F*5|YA?ruq_GYEjIdlFn#v+l=-@glq#> zrT=9i_2joi|EYd|{|>U#>bEW_9)F3JxURN_mxT+0hXS;x)wqpEx? zf;0;e=9ajNRkXuI79olakBu}@b<5dRAI{MS)NkVdPDo6mX#$8B4AkK6|O6$8f?qJ*?%by1JnwYkK58yA9y#cvE z=b<2b3*(X$2Wq|tXggFi^%2>z3@jn1_w`6v?$49Hw2cJVz{0op+_;p|kp~&D!dI^2 zBIK7NK4>F4Q0Tfe!Rn&^Zz!EjdpecjeYgN)`TX=MDs7|Z!um^AfOQ9&>?@p1;Tw&j z*2}xmUv}Sjy^Mtkg-SuLe#=@uWqc-0(K87Kw>I_F)445hVfR#Ac%%>U&2j#9e%Cqt zF@$ISfSG$yt1DrNcnlg?8la)n^c^nZqWx@sV?*K*TgY0f+m{dLwx%Wz?y~CkBBI?f zskSXo0u>{ zAnVjQdTb*qsmY-}^i2Fu4n*TZ{p?AzmGbrz=1mn4)3Mc&)k`sk_IH7=s7CVJyfxfw zBstBcWug_fe=s^tmS_IVuF|xW#NET=---<_%h{DZub6k2-{W;wdT{NsA_Eb?am|0< z*V&h>)1R(Nok-HOpAa%Xf7&r$8s8~tQr4DqbHgbE(W7e;)TsV6B&>f}YPr>eoTHS=s26+WYNN-!VlQZpdLA0B7>K4UMolDR~M39N?6J!1XRVWNbBOtXcRmJOnC zs0A|Yc0pf;9)>7lpSS9@`EIY+>5tw}#A`sUK#Xjbt{y8WlG9(* zs$NRfF+fqq6e>};-}tJOj&XJGiO332sM(K3<0;++F1PZkv4jrb)i` z+oO{1Bv)P=qy6^JES(0cfv61h^tS(S^e4%9h47V`Ho#=-G zB-2+=MM1>a@Q%enM-tkkiIY71i&9C&d!>B}pIp6QJP8-HjUbf2qG%gEd|S`m_jE)w z?bZH3le&m6CYjcEKa^_*cA0a@=`M9jNpWPJlJNr3vE0?!eZYTz?zI-tijpVf&UWzk zT4Pf~1XOs?egl-P1V}C5@7*s$f77(43@ASVOMZXKD%mx=^>G{ifHziR?j5?g(a@@V z>6zPLm1Oz~M&)2{;$Erm=?kuzH3v>*r;pzV_$!5wtOhC4)vH0T?8^3(!*s|b7L()V%7@Kf$?QAkC+!4o!uUSx^#V>8YWh+wr{*DwiO@OZnDiE# zRnJ2|eTu|@?s#@E005l&l=`?$bme99xS|X4@kn0@QUgBdZCD+@xw+ozj}@=Gg=~J( zBBBSf#ny6((Td1h?ExDXO?Ep-d7@=i?Do9!7YnXyIRuFr>bQ3yDsfRGiOBW{ya5^y zMFWo%9(3qL^%s+4;5EliK~mp#|!*>S;HtbWEV z^E^z4QS7lbj}}`N+?@s;jaeHf8|hJ$lHz45=itHKJ`e$x!=qfS@rGol`xT*?mje}@81dTUY}k84GxIV8Cc|#gFw1M( zwEW*VOp%vn^k2TyhVSX_la!h;GpCsc2i2_5xfi>*HSB)LWDnNXe*D(B4qW-a4v3{? z8P3o0PRwZg9_4S*68+UZpXc9|*hJpgP6eC{J7&?W&ixF{C{pO|0Naqf&!@iy{{Se0 z(fS!1X5Vc=zmB&05>Njzt?ufW8qi;h{ z`BNCXGnU(KN%L=fU+T^!px6Tf2!{Yo>4XKB*qGQx%oJKownli5H&5xaHp%9n@^U5g zN?s5lfklqx1WRTrNKO@OMF?%$?MzS@o>!yn8pRv*&xXLMian6z;Xo zSf0JqpSXu zMvM?=l`NzW+Kn#djw2&KOf`nC#P=JNS40G*gmblWbK{tmj~qMsw4l6jfU}!c+>sr$ z0sxy6gl67Dcoap?h1|GXPwBBE(X{fp;1DLV0L#3id?7|h4^^*6y6;^#Fkzw zIx22Uj2v);bE8!Kc0CCnLN^D^=X82B`$ez)r*20FJqyp6OF;gFcTAq#smgB|AGbdy zSRXPM=6R6pQc@~Pn#%S=`^K<|$r^m(n-;Cjam~w+4AduAV-hOPkBUg6gBKCERN3)C%d+7R6_z-z1IUlnsDi2=MP-l z7Cnehe=lLIT~R+06C#$o+)~LIJqa3<1$)G$WVC}%N-Vw3Af_!{wUW8rF$64xB)WKH z+`eNQFL=gF>#v)c!_M~alF`F7IK=+mqB&6fVAO!!a1@c~sZ-*;Dke@tbt880H#~`a zV}cbxO};wbk_H^f)073nQz+dI(a8O7W>2+w+V2D^`AlMt*S0NN&Wn0#ym)0JO#T%m z6h;T1Gb@@ik7q2d8DV|Jm*undagzi|U+e!c*yTW<-6{E0ESPaAiAEB?z0Ca55N~{j zoEBJ-bS*F^v}Bv_X>GF?uk}_`;ck=@F*rH78OAvbI%YLe=WGRMZn~MQyHvua&gYoe z;ewxS*Ck!E1b>UOzFtyKjjEde|X4dJ)hKpq8R|OF!YwtdP zx`>eDPB-0OD-qL&uclC+5hI({&;P7k9O7HJS`!72qY!FedrC;(x!8%9EAma+Sul;H zCpkpy!`We3W!~1k4uVd@y6`o)fn1V0^6=!AEk9QEbn6j{!;kx^CAL^I%yAB=oY0(V z>xn4t((yi?Jgu}G`6U}RLQp~qC_zMegRr}B5Dy-j=PYEab4BfD3mYF4sj^4sFTYZec`@^K}Xq>=UHmzkk}D5J%ZaYH?h$yBT; zLqYuTYkIrBZT&ya2w108#Z!BR){ReQ+>MR7>hn z7B=$Qpn|9!&WhZVKEnA5s1@xf`1~>SW`S%r)FZxl!ywvR(nR{sj<1W}ep*mzfp?jG zsDG};U|oVoy$5in@#HTipr?4T<_9~$$M3Cjz;5+YUL}OPKO$b3mZ;n&oNwQ2GT%+J z8di)*uVjM3%hTc4Oo}{c6GoO-W-0-IFx9wcuzsW1lF{2U=GBC1S*fI z)4Y`iW|8OcZ^RG}agpHtYo#($OxMtembB4^Bh1!!zYK5Oy;Qe50|aYtc7M7W)wB|< z{;H%q!?RPyf2wkJ3X!!&<_T+WF|F&>cw>hzP9Igo35@GvD=;&6}4)>7lRwz*F^C|(>o zX)GRA_4St5!Zs+Qau@>!GqIk+e+7_}7T$2tLoZGkJEfn${C;tgV8~zV=zaHT{F5?l zez-&*>;A&P?#FdxDvbe=W11pCOBAy%;^QBecEEJYGXqf3SVKV9-NU`my~jNoA2YWS zH8ofBMIk?&pCYG|_Dqfc&k5#!tf!aS;H4G58NJa}s|#KgcCZlJ*ooJ&0Li;z&ume- zJ$w(vGPIc^f2?1jY4~2;I2coBYL!Q{o(_W9wg2)t4dw{3z6^ncU5ZmPFD5h zdNa^p=ePQ)-b~-W_RBZ8%XxntzDxh&|8aP3d_DdBi-c&2BU%Qo1 z&bf{sOzqL3OsQUwiU^q}qb36~N{uN>TKIXv=KIX!J!Sh?3u1JP=15e+yl45-<;-K@ z<0}RM6zyH{Ci^cqq33C}39e7RcFI%Opf-E29||;hB+usnsJKv)TFZVvS&}v(PY(f{ z+A8ng%cuz}`pVc*a#ws1Irl*Hvc0$JR)(r#Moy)W!?inN2+6!(ne*ZNbtAaM+_We= z)U@K+V?&U@sN)#kKmF-ZndMNMjTnE(Nq=ws*LSiIrwHlGFLukO&MC|9x@k9p24;)H zP7YM&6U-J1ui|m%9j8>e#kUsH8G4SIKM^~!Y7o$~_P?&&9A`CGVA~=b`RENmL`Nj$ zC8bt5a}bL~*Rw$k;ZYxOkcCgnh%tIuX|H{PnJuh51(><{G^3=-;pmZ2m_DJJj;Jho zWi9tJi?28`Q~yA;X%>~HF0og?fW!TTq!I^s{5-wMZL#E2CV6h|SCh7t`kpWgy%7BH z;iDm|h$(&8jD)UeBM3W$O+}$sDV?BE*hZB&Yc{i9_!yM)gCm zPve0S+HTfP?YY!Az5M>jSz<9a4Y*R1pB_&Lkh#!kA7x*dR{cgC59-VdG%h8L9&Qvz` zD$$ZO^Tb=e6q9M4t{oD!_dO8dwgosUB;89NGLf@A>O=u5Zsn~w6Ogbxwj24Ws+*&q zLNS7;Q<6OPKap0tFbsz#RC}$vp^qIm%l69qz?yiE9+7lv_46;gOFP%S)rsK;KYBrk z-dTw!@dyJbsB^3+8I=Fv!UBI?wOhot zw+K9k4-$U#i(_WYer^ngPgCBVYP;M2VHLU2(6q8iVEBpK2k{kxYnTLmWq@GS1ZaI^qo>da z)7Z(3x|!u8)XnxBG=BFmI&+77xIW65BNCE6_s>T$QP=oEiUlvtp~uIRS7pcSX3O__ z(xMb1tahhxZl%oJllBct-d_P`yz}p%Kc@Ca&VM0}%K2q0a;`%yd-d0a$$5IPyhZo4 zcLUw~4DHYpl7T=Ebe|RR`W6{7!8Zmh8+~m>pm^%;3IzF5#WhBEA@-al$*IWIEKzb3 z`nHFY!bl~~H+NTm1t8p0)I3S2CN!_-hrv}9MBx)T!&MWy8RT((dG#PVP2i@ziSUcN zQE~~eqfWU?IbSE(v^Ef70^_h5@zLW>JZ$rjD8d`iBhipF-SE-rS&_Ae0{}WkvB>j9 zXB*RY?9$tqA#Xii%&64_Wm?~!Zyc^9qNyZ;HN1b-t-`^fIxC3=PqFjFel-I~?tk$_ z%CS;M;jME+OHICa*COAjvW5UXn< zsB$<1BpHpGf8v=XdYfRp`qr7WVr4R`Vfx`dC2>7 zn5zrN;k3Nc8sQ2nAUMSy{nA_m`ZvzV&YdaD4yWtYa!eEvK)!Qfo^D!@;2b#rJ6L_m z>|XqpEKA%&5y)Pb*IUvO0(qzV^C2slQY+W6XSsqN8!LwHkgTcVS&xODOAZ}ps9Nas z=LKRXzH|c_aDJwCYKb+Ic$wL}VB537&B-`b9ops48*A&hwNCjBZp)Sz*zUm>{AMJ0@&Mt8huCiLE;8FLqu(V3T@Y>0ia^*^k?s9eIOZ*IAW@GVrtzA!Ow_->(q=wyszZeXE=$MQbi z+GQ29B?E+BR)i%E`|Hl3wJnMj>JBwjC7NR)%||Stnjds4V%J1ZVQm0888yy=(9Q4F zo1tT*$abiUd3=R)PO5EQF!FY;{d|my6Pj+Jlk2p%n(e>ExhE>vo+Bt(cUglg{$CKF zQy&LZ=-Qj$S85nqUc#izk;Jn1wFYIi;+2j7#FvziB2QY{R`a0+v=*wG$D|+CS1l=s zYL36W1C{~QF=|am!-5U<&clz$p)$9qq>bcsCrL=E1>`dQ{pJY`Q}Zx+VPbA%_28Hl ziZ6QJnPIQ&YC0naFjuz&~^Ld>aCoCwr4zsJ()x%yq z@F3%l!%^(Uz-0AY6z9{sU=?^RTlAs_Nf?Z?UoI2QO4$x`1svHg+a}Z*} zt-JYC6Vqub`c9#c-(%7yy1BIZYnEuE!1wz-g9IauLkdsn!*K@bIX>dquO_Mr1^=^*{Zc27drx)?dxup?tzpW(_)0c@X4pqlP~O6R#_=?pSL%y zcyx@gvg6T{W8K`Agba;P0hgdGR#t!Qg-9s;Bf?o;?bZkSRKeT{OCRVS8drj0(BeWp z^S<%6M*o!E9{=%hg*tb*#y%eqwH}0A{-mjLK*VM#L@$a09Wi^3)IoQcL zr7GZAqRpy>)z|K%c{?_C`TaXYuYcNIupeXS{#gt7NB@jMacOS}AMTf)9%!0>;;SuQ zFFzmi7V%EBP)D6i$!m-cSG@sfAEBdi@l=$61l`zu4+u+%DZ-lFsbuf)t8#!x9?My* zAaX$YSkBrtnbTHL=h@h?F1O-@FX7j=uFyZcF`iJ69GT65u<2sAatDCkZS?F7jmVCU z7}S^CrlrwUboPos+hQ)HXj2I2_oc)xKuEd0{`2_ZSNYDXsno;=JdpFaio6^{& zE0yuw6A((L`%GvEMxE+8{O8eAgvh?dCmA!3rW7p$bHDF5m8a_(N;+TKmPxAq+DIq8 zc(6oa_xkjtn6>d~1Z&ji>D5@xmC8H36QJ#R zwADT-Q|519<=|K$quLolIF6>mga5%5M0oQDfrgmE-i@^=k}zl4m{Jqi6MHSPSAK=Q zDTWDUx%S5f#x_@9r0cRSkFKo3grEB>Mv;rpMct@Ttcs)(XEiaSrZ!JEblRb3#mI%B zuoZs+jt>9mjU)>io!4gG+n=loB;2{N-6_S}qdA@cGwqUSC2z~sS6YVoua1drhu!kh zJQ}WfhkhKdivoyx$9Qi5&afV9eDloLseX6<>D+P^6{{QRY@Aq}l1V1dv&i zzIeJq8R|k6n=>AV;h5u=w5$Ltp*Cw^ZenYZu0l3nEC$vp|Ku;ICY+Jei`jBfqd~yo zzr4*i9}QTf5)k3{Y|i)BcDOU11i-C@(+@6pAnKqS?V|Q5CLnI($#CQCF#SBF5`9{_ zd$gTD9<32Pj$(bKz95vd3*vbO`=i`IMdqQ)C- z-@6)RECnUBWsKk&1IaHrE!zUxZo7|^#2< z$6cJ^#@|AeH4Ssfi1Em|=SsPj!dg+uBKh~<1$0kq(qAPa{91y_Y)%zLT| zj=JPS3>mxlY*@xApMe~clnI0?F~=0>_tyofSQin4&yONyROR`LeocXhrL`7nSs?Hi z;rkn1cR#)1YI!LF(4xa;#_1ccZid!t)xEkjo=%?%e*JMxrqjw)y06NLGjEt4ynI6c Q;g+kHJbr4vc=P`M0dXV@(f|Me literal 0 HcmV?d00001 diff --git a/docs/assets/media/img/userguide_change_language.png b/docs/assets/media/img/userguide_change_language.png new file mode 100644 index 0000000000000000000000000000000000000000..482f8fa688b9746c6f164809214f67ceae05a514 GIT binary patch literal 190196 zcmb5Wc{tQ>`#;>GNQ*3`GAQd%QG_O2wk+8xDN7M5LdHIpB3o*Nk$vAO6N>C9g~^zZ z>|~jltRrKL8O%J_=yTuq_x?V=-|-yJA00IvQ+Qw3d7iKBoETGM-GiJbICt#WaZq1R z+kD54-C^L@YmU9(Z-mhtlHj+UaC2SF9TnY>S@43*MZ-vA$BxRl{hN38fY?=sFpkq^NRNTJqd-xuYHFErXLPdjS)E?cH)%pVcv5kx;%~>nUG4&&^$F(IM9q3I^g0IrKxv$Rd^eQ+#B+_RQ)C2eJs;@{%FVY|A4oZLU z20xN=R!}R;1i8AiO8?{4i=`^6zqArWgEv*A`l{<5v5S=Xi534)#y{FAdrFrsH-oP6 zZAUJMZ@<<9 zuibtuv-jJbpK%(6{`%Fl+fK7hvKWmMrzQm5{ixat!&Z03t3{2<{}P|k6Bdu-_|VN> zv?-LPo@eI~__#x*Q_4pnv^QDcdb`hHl$b7k2W@)i#ZtG!%R5Ly#N8K&db*lw#~EfL zvmfl@{Ed*_3S3<4FK6_uR-$&wPMYKI7%_JfLrc(R0WQ zbM(shN3;!X*#+*su_u#0j<`2qZG!t12(-|K;A`}f8E;O-Kj3*My*SFJv>nxO z+R{iJPld{V(RN0DYIW}vlCZr+fXoVNI%$!4j4utM%9r%OACJ}D?(dFQYf>@2lyvlx zZz(jQv*HwD=Uu;xp*V) z80NW|-j9v1ctMwo!Wf|j-L4i-zoMR!#P5EJi6pR|)hVh6OmXv>3$K$FWp8Dx)fl(b zsbVx2kF;#zj9zVSSUwFr2OJ0gxmoaT(y{j(Ui&t?ikago)1|U+E!33v-OY2Oh!bTS zr)8R7<`{Ad@V4^Z;{D7g$%lgVU+st=m%27-*kCLjb)Wdrtmtm@2z zVm^swBIkW@%88=EPjfO#StngrAf56MCx$`IAuVebVEtwV(RP|@*5=2(4Fg`j$hlm) zeYe=0UMoooNcU8t*ZxSs%^A0jeiDVxXRSCFC;~mp}t57+ARa(3$8Y_oE6abvEv;JRvNV@I_-+bhPriw<`{-)k`JHuVq$_hxUREp;_vEhR1nf(e9)xTd z<6F%GpW65rNXEvm?sm?qR<_bQpk8l{ky0q=Jp&+#b?(qtE^$T)Oz#4^C^#3084Wh&6JHiRziuFS6 zvXVV#-aR`REC&rf@mof@sZ(X@RC*G%=YacLY+TGf3!-aQ6BaVn*W+iigjZ$#ngR=76lh7c-MQG_^Q z>K*Y=!!l)&GF(iCv9Z&4dl#GpC$FHZ`{(hf43r-SCS^`M!@KO$aWRagu=(-ob{X5? zJKD6X;Kl}CfErq}-gR1INLm6ksi#Hm2a7eW^|D6wx#S?ya4mmDGlHe;DRWKa64ZYC zte;p68_zTOUBi&E(4SODObNB0t6r)E>t$(QK@kz{j z+n^ESsoRoSkS84-J2%$DrBES!^;o_a5JJ_t;QYmU_Gw_ z7dEG>6wt9OkBK7X`qO>PvkoOS$bi;{Xo_j;=n*Wu?|miA>zW~Q)rkWXATo@IW(Os> ztB}1@pSGM^HRy>_!p25-#X&ug!DHq}HRvyo1%CJyf)KnbwDq>7!XWm9Tf#NrXv?F& z2h9T|ME4o}Dk%QYfnb{*PIZ(wbUoYtb^QDc4K%WomWM8|hM8s;l5DOi4pB6+eG!1qh|2y|8C%adc zW=f2mo-}f?itR)j!OADj<~FNs1Ru)v0yPWkjUPoY3Zh~T*3JpWRDJh#`xwwPd1Q7t zvSDzl(k-{j%mC>lBLgwJyZ4lCVAOY%5t+xUAP#kfyI^CtM-$~bx$BL+8)JnL8evZP z9T+xH&wlQUK6``|0crtjoQH)8!FsFBk60c`f`zKiIBDN87t~HQ2c62q*gpH}y|SMt zITPoE0(c}<(;>5P4ouqI_T0O+^C7F%n(3xKQ07G4VvRnLPW`$Q(y>j^pS1rq`!tTv zWAzI`m*qO_Bz;Bt*4e+~FK<)7csfvZN&(i}|4*Au%5ej&v(Vt$x%nK!Ybc>pCWHb> zN&nuFT(9k3Taog20EVq7NR*BaIr6WuiceRa9zWzDPnC=d-;?g&ubhCn5)0l3nN{@~ zfU`Mv$B&<~RNOu*u`r`L(B{F5JA$))`%O4qi+eTOk=DrNz|Ymunz?k)rvwYCCg1e` zb6N+nrF`I8-)?pAGH-rtx^MQIp8rbn$~m)RU&SzclWLC54wuNnOGdS0ur=P7+yjKY z%+)S~`N;a`+@BIZr8<5_gSMe)>2X*fs9!Li$BRxsnY&_cfb_Pk6eB3xigXV zcI16NjX<|HuF!R@>Mzr^ZzMva4Nz~IXAD<_K3bXqKf|1;Y+fwzaw*KKFmPWo z?7|n_E@GPc8jl-;f%i?IuDSI+ z*r)k}TyJ&#S6;0&WQms0cI2*nPu_n}5o;}UGAT+742@p?mp`>-f4xDl6(%1xvlUld z-PikmtMR0z&;@{n_M|&bl&ah?hOQcjlw4yfiv2@}7 z(xaT1+xOqzw^B_6_ub>L+1R7Uqu__&L5nn5l(?CSg`78OJi1L*1tG?`Rw-4xzDG7yE-VpwZx6G(-ga6Y%eShwP*uZXD~dx2=oxr z73tWA+tBVqbo88PeBZ#sk~0s4#5fbZFI5bvl0fI@4)ZDs+{d3*cDqJ35o&Q?q`Nd| z$gy_ZQ)~b{QH_4p-ntTa!AQ=zZD=PSR>ivB(v~MxbyMfC^zq9Qx`CH0m+Jjp@)jr( zJfgaOsG_fzHUKQuHLZBo8Q=U|Beg8WD^6t}N=Qr+|2Ycd@Y!tqf~<&~dR`-J&F9-~ zZbM_XO8x7>C(W&M9Iwu%J{P<2Br$8s7RL>N{(npjaQ%Om;q-|0>(3#x|G&nDT3(y; zjfDNNtKAunf5(ltIG(!0z~OTyK2_WLp0eVv#_{E6-VZ<9y8XFPV>$#CZ@71R1?=$K@0fq&buv6R9YNtlPX@H%erJVOhe9U3bFJUZ4%yLEp`*v#|)i=iUvxa{< z)X>`|iZ#r+4x=i^Gb~vRYKK{oLqS!)Z=0X&sq8bQ2QC#gO6b;~;FIVF)ltubI?KZL zYMqvQst*CAE)Ma`)5XiQvx{PE&$CEQq1_(5tD$)v0CWr7-Lpa(Zd2DtdeQ=CMatMO zUZ$(*ng%MGIX{c(f<%OmC8%bv4u60b_;Dm1WT7XunA;YhC9q!H(50_}wmn?>?t7)< zD^c*k&g7Yvs6k*4*-PF0UEe2zM|E5iUpzU8+L(W@J1Bi!3e@9COHH~QPu6CkiXmU* z`Ist=FQ>26E6&N-Jboo@=?>22)+NE(MlP5X01bZ!5yxcb?Lo602GLcyfvCad4N$$a z^Wjf1SEXRR4@-W{_=7=`75_Z%r-*J~`)Y&kTXtAtBm21{C@I!0I&)Gtu-Gy}e(_T2 zfuhXax~aX5(f{H&N4fVrL&o&7Pea11u7hG=(VP2V@EZ8&O5a+u>1ui!R8=5X0)wh{ zTrthD+=l33azE1(4;{IJ6*MaftVXVSmvrIR?`aR6mY7m5Ud{Sg1m=`C8{U8ds$N#> z-m?KuKDE%MHI8}x+cL1;jVR0=3QZQuM~1}CX)UEOx$Y**Gxy$PFKK$Bmp)$3C1RO|L&PpikYTG?OwAS zOKL~rrP(1cfVE7=EoCQdERJ;75aTh9pUsMfk)LLMrVE{vGx4I=A58je?)5tVGR^fp z3l1F8IBwAdzJ8+KwTmN5(Q<`=Mm!&K6qtoxPi;Pzw^^t+a7Fb5U(p$omN5q4B?>`~ z9SkCsx!tZNOvp4)HH?#aAuEMOUO zqOC|pN5-(Xy6&UtENh6)8u;_1kp3_8;5fEA276I34#TbGlrPJFj8!Xos23N&h=KJ+ zWi*dVSzb5jjCY^rH2uaJhgVMMU|BQ9rD#GmtoOgDhV30+_u}A#ac>pQqh<<%c50-~ zW6i+BtthBE=7W;DBqNeX&*%X9i=|M$_MHUdc1k@l6NojMrrm(N>C$b?k95_z@HiPz z_Hq*~o1KvkI;#ouiKj5RVwtg*bn6d-(*#&RRTO%wj8*Olxw~dz7)vm(p6&*HBobqX z^pn8Yd5E0%^47ic;C1zOaX6JJCBvW=M=X}&C7<+$gKuoz)Y|PLCY_+8Z7CeF%{Jt2 zuqEL$#CE|Gg1S30}*i8dpT1ptilvMBtc=vxU zaD@k50ie;;8VY8s+*8aGf;gm_;{`++);D_oTl`X6r1H0h#QaN1dsfs~b32+ReUfi} zS6>p~iV@~OzmsZVH{}snIs+sRjgiWoM4vCSH$yY~yh#34xmCFVigh16wc}Y8up1EI zLQnuwlOj+F|2jK(ug0Bc;7J^srg8w7+nTd*1jrg%C0*CrtEb8W)blQ%H!A{Wybe5&L;r`_z+KxdB+fc77HNn|bK#AMLC(Kr)xpl~rUaP4 zh!Ci)ePDtQ(3k!NTnB(u7XGP#&XUZw(J8Dq`4np^ox3>X=v7dw^>;R8&Yc%2Q}(Kd zVXPc8!NB=tx%T_wC)k*1v{B=npuSVS4k#1$4$x7b!vF;P3kGKsITZ0_%H}L&=u==K z`zA&t=_pq4ny!D-q_uXgY4Am_VKwCnEkM>Gv)>L&s~>DH8ns8Oe!5<15HA|MGnXeX zV4vt@r#ug%zoSiqF71@m1FIsO9FLAQJ9=gP_M*_ zQ0uOriLHlWy^@Df4FDnf8C<*ASCNRhJq+_iNddlFqQ(Q0!f__)V#BqcBox5Iy^tE# ztVzwPhIj0&HWMBVm$pAkyxla(v2j=5$rKJQ-iv=Qk}?~<{NM5y#aVE6)-?6opPuL{ zE5kNF<5|@wMyxqvU|Pe1M+b7H>^_^VZ&HRu-HbRaz&9)`9i@X@A)p8BH1DdcGzH5S zPY(qSRv$YP_65{K-Zh+P(&vN1jimvfrn8)VhbIpbKE!3ZHLugqDYrs`PKQ)b2%!vO zsM~Ls0)y_d@VP0`r2U4jdHl;KOWgoRXORsS+M>e%#*pSp+phOk!k{1P&*vJB z>1SUqQSpD5Sc8HWh*s;{S~+N`NtB-X^}&lpHh``R3NV_WPzf`J2~tHQ@jzhFvOg-O z+S(U<#qA?NAgCxsKv7s)Ogu}A0cTy=trM9Dy_5-H$K`vRRtCt`Cp>4uYHpnJN@$-! z>JD4@)4g5*!8hVC>6T811iS2F93n*{302U6fS6yuMSH(1@OHJZ3e5+X)atZ<#qA zjVIgk4A9Qzuug|CmO8V04j9u@AmFA9ef!g`T?f!X;A6;`S@SNth$b$Wr!*oBkbXgzPRYNkph^An8T3&25$*aMDb%7f5sjJz+08OGlFu2iVmr`ifH= zROc*cW?gqjMb}e??!JrxR9ZqQWF`@-tG0TcyeQD(dKD79<*+4-os_h{%kUle-1S6w z3q>2k4UA9{WCPKpU#hcBvxx6h0TvHpKE!d4;`=@1gq2s;?;TQKC3O`EY#C8bpz6CJ zKnPthkd6gvOcgL!bpAoy0nd3N^#6@Np)T7)O{SF7c|<e zlPNm3H$tBRr0nriQ2Q_7?C+MG3j}i84Hwx-W+airK=u@i7X1b1m%@M!_YIOZr4Suf z9Qc$Xb}kt*%OXWT{%Ql9X5*G76Y|ipe~rKDMy#a!rZ@cOapL5LLhN`%Hmxk+xBR$! z$h;X^F|-~pMCdJNbY@C1^FsFr$4R<3`dm}d_D^`V!Y4_AXv}&a?9h>zQA2-NmG5xb zJrne^(I+l=%=HTA_I#5S1MDA23%jxT08lQ|qxX%Gt>zR;4S^;jX6W|)8dqWk_Rn!x zue_#H?%xj14(fhCa`pVP?;k4@<*|a*kmJZf&+_riRXZcJLndZdfH1(4K>$m>{STHr z3b5n~VuyHTYxfFL+gi_P_4nT~dV~Bg37lWYneWiCwEFvYpW=CC!WiK{+48QMe5BMmXEO;a3L>NwK~$Gth< z{&3O2{!*0CX8fEFG!Cd{%1<#iJ}Rdx(x{@Ge7peAu#5-;Nl$Cux?C-bcaiz$X!9D> z8zxg;K>LJ*trP_UP6^k)rl(clbz|nQB=O|gwjxnrb1+E@U^F1wrH#C088(7pa)3lj zCb3BLWmKsbAkhGZCciX!Wyye82;Bv0c^PX?KhJRkFd+DN*h)d*z5sK{rq9}O7#k$l z6_hfNh}UPl;VASrdj_He&2>SD=o|NITDT#}8nJZAs;3M+v58}*cmz|~39-yoG-2>G zT0vkbxN69=ohxm3+$LX0mVJHsN=rzLX23Kxj4g?e zu;Vx#7S$j$=Vk0&e723MV;6V2{dph+M+#C?u?SUI}oA)2e z2QU{~u2lLQ@|4HnPD##)xzF)^YeSC&r3C=^v5zzzx_?n|ni06j?R6)C)$(^~;(`2e zGqBzkz>u(Aa*uyMn?eKTH9|1~@Zrb3l z4djKNL&`uW*U)s*VWHd+)5)G7mbfjJUm`vvf1Ju8tzCI~(oxYr&zc-l?RI_|ZND{V z44mS*WEdlsEF62G~FR3nX zzuvk?z>r2CjBoi7Q(PLC!ky!&S$CV)u%x>37hB`2^51dtdO%)ere}$Mm^Vh$S0#6g z^V``q9V(OoT5ouPbk4&8eW&GCYCvQF4Ph*w&DgBPo~?bOG*9woI!&ULD}6`a5F%aG zJ-W9#b`tREeXgVPzFe;3#Yxn12> z%6b!}8rv#zLj|zaTNK^YsBtE`i+$Yh1C53Yo%DUxpB+|lk)Q$}rdbVf#nc^aSXK&J zy8@?9t9vxlveo^pu+5A`f^d59A!TfaKcnBdUwx}#XtF9)0aw2qNPb7IkWbI1;Rxql zD-;AE8&rZ{_VQjt+$70k^CtZFKK_)6%_8Zz)h6}j@y}Q-5_PaFT8t;{yFPPb71FwU zymFVgtlGX++6_KeX7JvFNm0!QoNvKD>JOx)FTG{O5Y9n(6Qgee4@c&W`_ zIJ8_Ar9bcrpy4YeDqs+@#10KIk2AmMEH6hAJ8rQ6dkg0!`xgpT0J;1|@yg{xn0@vy zx3REj+CUrOBA#XKWEmM_bb;Lg@T=%-jNP-rm()`jt+c@$-Hu9~f{&8i(!xz0I+46U zt}JNO`UeRmC~<3-Cc2IBLdWnlTu@ydqu!(5R(!3`k1-5+w4y`!7#GyLNfo>X+a%s1 zol6gy%kENi3B_&_Wz+IgnT#*8*q>-x4lOhe@q(8BhAJ1jo(0D;Z7Fdb3N;tq8wusk zQI->#fyrtSS~;p@e@BL4Oe^kD zY<6!L�QOSwoo3awc$EKh1CtNvmsRhDy{1H)nB_4Uyo4qkg4Zd0xe~x-mvR|u#A{f>{C-hP7Heevhz;9S_?InJZS!})R15jfU7Q7EsaVTNwq2PQICk;J zU;#+EBJjSCrJFsK?PetI(ciL4N|KO<;Z1^4KYZtXO}|N(W`~+UJOZ2C?3-_!kH&3o zJS53KsNbELHF37P<0vSOolB=pW9dOIl%AsG6Cme~?qOjBPyC3mX@y8x$8qzig)kmkI}d1(B_vuF7Y;owMAKe?+UCeT4fp zh~q|$ryVxnAN}%ENH*{No&0AjUiS{A2`PiQT9#H z1vU~;O0uDc!B})#RwV*UsWj-H68e{3*s;eT5LC*3j-~UqK*=y4_;JM@aOq0Wd2SeoaO7rx<>m3d%gKzw4u1YR3w z>xA6I7!h1+$L}B+MBx_0?fP#t^-L4Ft6&BRJBseh7jRqc=#dbvHxCV{o z`-^Esn89^Xr4B1ikKe-!l7Yp-5_~d&#bW6<^BW0dhtIdhGa<7aEFs#4@SP8>!KczM z`dacy9Z*ZuERW_RSCTGa>1Ij(fX@6L5bG6m^2F1|aI@&yyqZfu4@4lZLw zL1HE;4qAEq`j}|uybcI`J;i9+U*V}IngpsnF7V}MzMmYEcwRYmB80Bob;^ES3BF|#;v6E*XtW3ko{dshpsLbh z33dEIpMwM<&J$xpiq<5f^Db{kSE>+fu-^84Mq6dQiZ9$KZ7%5#Ft31*K6W}%MGwZ^ zFnzPy3(i;e)o0-(=6X6>i5Sw}l+|Kdaxd*3&O(EXcHw%N=%qRtlatn={XMei-a*|v zD+A#`Mtrm_BLdY7=)rKK|08NwIc<3~mgThn7ib4EP<)x^UKYFC){g%H?aGM%k#L#A z{^PPANtE>I4L=YCFnin;ARe&{uJe<_0*Ao6XYk3-3l!mR_OB{ z0nAeOLOPxBLMea8lAHR>m%S0djW=WPnFNi+B&@H3S<6^0kWI6wV8%CDont+?hgq9J z?^TkV%W&L5gg(31uPUwYnI}&Nca&}xOsl!a9^HC=1Oaj?`%E@!HcVRRH<^Xk`s;dw zeh(8YUvd`u+LCTt2uHl7 z@@hZ|l&y?Q8+B0n{#mLXF>lEs_G+8tacTK9_L%<)${>$r9f%YZ2w#~}oo@auw^e!HLzttF zo`Hwfk*)qUqnU0|@!06J^7rECUYve}&v!RI&-T7_o#nOiL#`RcRVlvDPTyXgl=CyK zP$~u#_Go6@A8SN~+tmw+@pa?!@LJU3>-H8hVj#^&c(~n7qwr1ECf-w^ zdP~D4wH)2jKf1)EFGOtyjo1Xwao-LaZ@!&SHht?iL0^L&=xG)a+*bpb;jyMvtjWDpD&=OM&_vg3KCA ze9#iI39F84bbh_?OSMIoqJxuGaf}F%NMa9s7#^WxYJ5=CzSiF79z_+J+V}Z7x3={N z`L`?fY_7>oN=r!48<=m@5MmGMxS0Ev8QiIxkbRNbF5kF;=F@>^~h#op~G#CN_5S$5-b?ZbHEgzhh!B=wCrcXp?)S^mxNx(!0Z zkevUbQnO=-ce^asJ-fMev&9j89;iX~*jna1k&xo*p-8>BbfTKsKVig3C0G>{pcENIOlk#$4bZM6;lNd3Ark4abPhaAb@kOCi!xzN0 zYcBqV6JB*4`W^a)+3iHwLH$J^QVr)#;rQvs-;XD7?JI{WV1IceOSw4<7y34*P z@N9gwm@p^rB@xyTAuP_b^=U)+-HWq`wO|L9sK<)4{#Er}-2p+4e=`8_nH#!Ks?;Rd z4{XO8fsdXF1lm%d|4%eY*D!8&NNS^wZ>ZEY27 ze^>QSI~RAx{r9If4q<*-bZ^zyDgB()x~*xy`n9&Hy@9RGW4^r3SGZ1#H>iQ;4|m3X9q&MU(-4`tBC?@8rM^j z%GF&eHbORBZkgcALe$-Q|9A{C-mjjxOZ}GiWv#{)Tj?82n%g`i`-vi}s9cF|tg&7) zy|DORaU*3cE6&StKTlQ5b+$2>>AB& zk5#W*tscrH%rQOr1MO===TE?wxJl(9Yt&5VpSC{vb*gd^1;9amvYLfN*awv>f3si5 z;mfn-i9#D@8_gb?hb~T?f#a<_9wy(am-UwCw^3);VSyKK}fgSY+}}d$~jl{bD`dwL@XhjE=dly zI*cFSVr(Q6N{O~EOYmO)F2R;F*?W7zAhWrl98u)|>m;CZKuimikK2sJc9{voejY(L zey`r46fl$6Pqhe_TW_TbRy12dlWn}~hL-BkW%lasWuJzZ7pM9PDe84YLHK9YU6`$L zx0;Cz`-w9j-{)ssYyTv;xVj{{^kQs)P73XYT%qn5CilNr%ciuhtu7bI+fCG0Q1Rxc4lKqm|l2^ch?#N@)t|bz}#T4^z^Q7U{RJ zNy3*~j|^D%X2(f8r8N)pwmPQ8@mPoE!~Cq!9IPYVBM9#{YUQs9*7i<1CtCWM49Q6Rh9#{ZyvEbb?hJS(r!D~QlBs8 z1VV*;AYl2r@^ARWLK*9tw_JF`gi-I+Xle~2HbA>vFcX=MC+#_)EQtI0xqIOvcU#fL zN#@$v17{7LWePih^uL&6>pleBL`VWH5iq#!t+miW;%>Tq3j@ncv9et=+JLk!%Fy`{ z!nuuvKBcYXp|GY*&++DQE-+nN4jalO~JjGB{> z(0Ne!U5quNTW3jiiZ*lKCH<^vTKRwr%MN=mGk zcJfbC2!pcbFK_l~*=MY$nyg?i#zfW96AiN#N=Fw=$y^w=N}sr2&DhY1#n4db&&oTs zM3(~Bp=|Hh>rB^XU-MwKt}s*B_CQKJp!m7jf;F5RkLFftIko-|b~5-Mc4DgBamavc zTMPp`5@~}6{*x|r0^-<}-mH$?9};clU%WMWB6%csb6lZo5zTQu}S0FBaT zKYHITq*Dp2YI-!=uZKdASDLs!!LC>6i3c(xEfJ`YYK#}c!|w+N(4kwdWQxbwUA2vf zc`R4RW;SK_>?~{838Ew?N)2iA3t<)^$dmXzKwGm0>>KLXZ)yDPIQ0ITfxHF$@s26%}r@rlfV5ruH>CRFsbf3BwnzDb=c-lB4)+P|-^BrkvRk)SRkoCTllU zKHAV6sUjOb<#k>ruPrq4$;gZ%57+AjNfmC(M0xyl36&%7at|!6*;-m> zS(!g&aen^tLoaqr=)}R|KLOoWoK5}|r}wCzqKIBS(|nUxj%|`_-4$hN--ifX9~N_GnsG>KvRcxOqw(eQo~Y1p=J+zKZ{34Hm60ED9f%Og zx^_dAd^p`3G5+W~k)wY8Vrrk3HJeABzX#<~>LSk7_^Jo9Yokp;Io)RhF1g76Y&Ct8 zY19ffupYv zOY%vd0#XAA1G6I39NQ677hT$0cPS8$81YPgg=kMa_%Hp7w~*^ANDBe4aL+Yz}6466L67z6t&)0{me3*3bzN28?D2`s%78h$_EhH8M7^L1Yz?B8_Vr-DaE9Qc!S)5*APj2Vrm@6* z0607Tz9Y1=6&bSui%3KXI(DxUvb0IkWsH{mz5)%qR~9zBrlNL_oQYKvhJ6d7lQD3{ z4>X1F>gpl+TRC@o5T-+AbvM--8SmzH-&(sI6zTOCDy`1Q7)l&Z=CsAGs)j-4gC)aO zPN3SIxeL_yzxi2Ch8ix_57&7fDcU3`?V-hr%7W0D*cGrDWB9KvD8qkmLG83u{S?TPauvA> zLgT=Bgg3=J*F`DyE34@qhTIofhmz-#TbgAaC~f_^PId_;U%Az>RMR=%#a;Z`HRu?a%l8%0o1pfOkggv|xU9*0X*M6w0R6(k z=t0PI%F5TVHBG5$eL)w+Iz<0BUvh=+BhR~B)tssVZv)j2wS*pF4lis65+Sp&fX!~_ z+9RtmD9Zz5p~sWZw`5>Bl;NLI8LL}UBHAQ-c}J1ol5mVmANVOP;1otRycNMFRXq0F z&LX%c+gY*u8;O~@zbmoC?N>%-M9#0BDLmE94M zi85+5hwpv7)TS8*($1AnFt9Z zksaav$<22{7_krLb=CWLg{bf5Tn_Dx!1$p~zpw~G=5)>5(XLo^uQmoy{odI}RTbB3 zE~>(anZc6_bh}bc=_pKQOV<3OyvvpOhS(rca+j)AYAkwya~w;U5_}|R&vnR-4O@#n zA?+tq3KX|-Dn~tBAxXsl^80S$2(L=}4{g)U`)=>vJ>b@`5nr@q;A7Oya`KxhAoLm1_hetT#;m@oVU~cTBcc+#rJJKi_UaruFgC)2~=i< z(f{tA(@tIWxRCzM>~>4uCMNa60FaaG zyEj*?XxW2*$o8APkmX7^c8uw3Up?tdI^Ui_u_h0N0ykhvDdgVukgX`f#g`ds_gA|o zHorENZRx1@UEvB)3Aw_zM_Q`uko6#(P29{*Q)OXG_}bMI#NVQE=n7qD?+9qC%fl@m zsv1Mg^9nsD%|!(tu@)HU!K75PYF8Rx7HJD)5QwuKo#W=#n4f$LMk=HC56~ z>eGDP|Y(g`E#cH}e&ne!i(76wzs>QmxJ;LvNH6EjmBMji}# z%1XY22#+h+`bh0j(Q~UQ?0Y1*2JFY6$J@z2_yH5n&&Y!bJ?YR7 z`1f91#bI$4YPVvMB(DPYg!9~I{E<0Ct|q1hKc}5*WtS3R1ZvESZ{%u3`C*ygr{1+mJm*UXxP6ALt zm!4Ux=->{oR!x2U{DYb}MCnIdM{CTMgP@=uNMWt1n8Oaxj9tIvpIR4EtKW;_Z51%q z?eQXlR4>kfF4VeLlvks$| zE4hW*_u3?}P}g|SWdeib zpB?-r6Y1ndZg&?Sm(1d-xcEtBfe{BM#d9P@HhT||8`Brt85Y0ii{xt_X2^D5m2p*@ zUh1C5R*nZ)vpwvI=T)UiU~a;w~snS!#RO zwWb`}mf0%bjws5p-;8%Dq9*%!41g>h!;6ArSHgK68Vy&00 za=>ctZ8Hv5i1(wX=HHE1qe;5gue%eXdhKm)y7yLmKQ^BRpAT>?-H}f2-cqNR)^nH( zQAW3_FuwqM5U8eym19X;6oIbYwPW8#H?{DyJxj5izi=UI`^l$CCML5kIoUedd$+w0 zkO$+35QJLqungE|Q#$z9XOv0HkwY6f3pA2-!}QmvBHvt|J<1E%@UO4$&fx>b889Xup{P8(bra8#vwY z3&GV8pspul+dj{1Md4kt-1>(Sfc-eId;;nTET0(Y;lByFBHzj$EZu}TE3;Nlw#DXu zt)4U=&`1UQkg5`amW0UVZtYZH%7A<&$_m8wx0A(;--FZlKrmV{;KxMDY1xeo+KUDc z(pS>fcNIkK=LN|Cuj8XLUpCTRo9Wo!s^RMP%&XO;sDZ(GCNAHviVAsP?>A0!C6A?t z+-u(QQ1?9jHG~BIo7Y?L&Y!AJdiN(F;!c{Z8K~+>t3FdFOqy8kzj5ip`;FHuGM@YW z`-WL%5A8=wNDXY``TG|G_)1K(hk8e|2^zFEo9XjYCI?BIHP&Pvzly7O&FFEs^xd1} zjTo|b+{APf*}ApJ#;3g#Adim-Hqv{)jVGH!AZK`G(*}!R6ZSVj)%R7L2TFl6T-hjw z)Y$VnH&2V0AM|u+Hq5!TU}8UiiA(|2Jus;ThjcAwt)j9PU9%${Etb#&LZ|qlvl@Sw zWG={_V((5=H@3>=-lIWz5?uwn13Y){`-6UyyWUymdRb_@HP3#)vmy;oO=+xvJES-3 zT;2{S*qe@=Gh>NXy*FHNAf);?8GY=ADZX_cuzw@~V*j%$&%&um%V+oPv#_|pC zE3Qt6c2wGV#@+t8dKiB`B<>_9s-XhkN#t<9yH?j|UBAG-;!iy7r81$hIV96OqwV=( zePU0Aa(#eWN;oR)d9O3hXA;;f-QWU0i^sfb`q^`-om_Y-Ndw!88US)KupYx$eZ%G7 zxhe$~aA^Wbco3?8$RYe3iU97(wh#W}2G{?VrWzyjmuX-xsw43->&&@?S-N!qdB9cn zl$?;+cva966?FN&1)A2<#xe4m>Vy+xqqv{F-SmF`zF)E9{@S)|Qrpg=34+229|Svm z<;~trAPgIN2Teq0Z!RPg6!ac5 z*_X}4k%?7f@?rXS0cnNfyqB}y6=q0=QSQ2*G2ho?b85?FK<2heYN8M^%_PGKsZOwj z_t28di0L5fir*s94u@QE8@;L}o`-_0t0hO@Kh*5r!q^4B+*9Cwt9loy@AZ?~w9`~K z`w>P6)PS8vm2l`=u(jWq1}a62%L&t%clamW16?T`ULDCZLalT=Gd3Xx}|9zJeRit1^1ozpfK!-y0DNZ1%CzQy;om0ru9g zwhYg|0AEVCo)>JEgAaa~vlQxR4FqBKG!VWzCM{~_P<=+9c!AUfiv*wNAPyi-z_UZ5LPfTI4*~^Ln*%1qz+@22?pKJV`u{-)-^ z5}vwTjq5*cGH#ii_plE@2F$ZxPfu=IgpyHK73WB5D;5O%7WoahDLs#*Gm+R_yOmlM z?toW5axQc%U{y$?b0Nl_30d!^=KGtSN;j6NTlOLkMyYpNCcf`=`{60=#|Z3IQtz^P zGZtwOxBJ7~8TcSlwq{^uUb?DfaDg2Et;BQT=m)n}|*Jv59~tnE3Sv!m`i$nJ~XDKeHagZzr;Pd@b2f+byjp@ZN`Po-1O(> zfC_nc9)z4-zT$IYn=Uj7l>Tq7Ae(ot2Ov<8vsSyz+P^ku<+pZgr%Fq(8#{H`@2B03 zUXcVY8U^APU%~!2kzMicH9S+WYcu(nS6$kV^}!TNz!Ba4U<#MNA56g>`|B~4gFf_2 zBYharw*J}i_dNf6s8a=FP6@kzeEANU$(U1kp}9T+V#mh&NG!IUt#U^Rj+0z+Us_uq z>+(=v@*z+aLo&}kztuDsOn6q_;>_4^!Oorvjtia$$=S-PIr&HIWyq^YWv>EVxjG`p zrO+Q**|%kE5HUA9Ry284unmbqBa{4ZtXYeeFZldazKwog@&eJGdF3TH3iLeMj}&E8 z$7E0gv+HiY`a075utJTr3%+!`LwC(@pl+aZpGfmh<}r14+t>`R@7?|HQ9A0nFM&g| z7%JNA&itw1JXR^JfLLm-9fD6dcBOqoE7fW<;1m+~JN(`tN`Qm3o;`HVz6H_}OI>_8 zu1#v%*yzGo{K@BSMGGvh=?A?@$7ND?KOM|YzaaBZk?Ni4?Zs!x?`K;1^k-F zrnKLzPYSS_Ta3wF{X6LLR#m**9>uJSX|e2?p#N>pyj*+A&B_`Oj1E||?Va!|sO%n( z&p?3>#@RM#Wd0w@&O9FKz5n~?l%hov(qfCU7E;t;NYtS0B*#_>6_MRoPfDS(E9(rh zuSsMVEi{%9F_b0QvW|W1?)P^_opY}1{C@X+|973o)j5xe`FuX_<@I{Ll&QPX^EYm# zVz;q;jAS4TF$fdcl!~>Dd*5;`oSyk$Op!R%JsG#O`TCDXYwu?2OiMqNP5jwcZwl&i z2lBD`GmGx!i*Fm8&pGF<^fj2;lDNy}4D07@4R5YZiLCqZE?%JQYGp4UdeXBLxXQ)k zi5M+7MDpF~-lK%CCtJhEdTdFGn|C~7J%t*5TrikGSr;+fG)_#lYtr@2ACSRWS2Qp1 zgxZ*nRystXt~j`9=v!+Qj^z#1yGW1xQLrKElZRd#Z#*kTDI~GdA{LrX^-fl(5A-v;?me&21RS7sJazzdA!g`p^+%}IZm?@^Si3t>gG*m2X#OPE}gAnJk(+R7dGY>sg7OsEM=lMJ+drMdo_-$qcrwmz8Vr4nH!%kk649 zV{e-rC>IcS`Tle|T@KTvUUkP~sfK88o`p`xZ1fdyy=gCJ)rgw$aG3Ia_Gr$)WF?lf zix|FNm=QL1k?b*>8;iO-dDk6J3{mI17_!-p=(X-~*hQ%fj*!`2MZwuc`dAY z(t*zO`mXYo!7Tb(eN(|9Z`0Ln>2VpYWEOj>0r5v&@^-08*q;a`xS6e*#*_spk6xWyF!&e#hdRbuqtqek~ zcRp%>f9ktbT(_9GVUqfRE+FgeWfjH?>K_0dhJrk?Yu;S&nr>%Clj2}c0mXe>ac+3! z0&ZE=Fm}~S)uI0(putw(_aUaT&t)UYrO|zXa>aHy52>iS9TCN{x%;M1zn1)3c{^gU zpN$lK&}Ql8>YK$6q@_8FRSg>{lCjfWgT=zQ%x#<|7tD{Uyc^1&H!^QCe!gBjyd>jw z%cf+0X0S7e;|gvdhe&AAk95c_Z|&?}`eZ9LB=mCp7Jba> zIa>HQw7sGI65n&*Xcj0$SD)%5!*ppYj1EMfr!tW`R= zX2jgH$sEJVROJ9d=)sg(Xu)vGQbDs2UK?$IxHxI12m_2mz@a&eMRs^xv$$@m%FkZ^ zqLLFvJzZY`bubK&R(Tg*Fa$aVeLLFzsd0t(As0Jv!KKRGT2JlwVb64isl(#^946%8JTh}VKS9lJw(9t-%$Esl?kya~ zFUYH%WlZsh*qIO<+v({3_lv!Xff8S37Z)cyUtnDhuaDNC8^%_jZmu5*Yy0MEFZY< zhRWzkG&2GCSZ!qgEMkt9WZJVuRhpAYl^`|P`Jp`cRE(3@pu^^^=GmtJopFbX&N!~! z@sgB*IHW-_8%jtpBUph|U3}3>0r8{C02B?>wP8Ei&J(q82S&$^)K_4{IfWfia{ILA zp&$Wzz!>h#t_^ese1Rk$rnoXQ~J}* z3G@wLNyXQqKphKMD1A<1fHiv%%a#B{>A4NqLfUfA0OO&+ni4*fr0%wrQdYD$Id3T1 z*$_9A8>WRrFBF7@k4pFepaBttgl7Edd?Z4s6~HtbE->KIJOnO{lvd=ABK2C>hfV{H z0N71`r_xZZ@}__h`TShrDgkkC7;Ph5vK4js$)s^+iYVuRM;4Ki(j!coqu=z}mxDJm z?XCJmW)837H%5REpLi2X_%LpVjmgXxeFeOQxNWY%8t8FqS(Au60ESGa__&w$ZQoVC z>;2&~Zp0#e;QArxj9#GD6#XJN?Wm>Cxh!xWc_q5#$a? zp+Wxfsu_LGTZK2u$bSDYdV>i5p7NWYJe+>O9>h}(BF{Gryni+R{{vqwJ+BcNpD~B0 zgSN6sm!^HE`Mfu@@9-APY1L9THO2;7j^5^8JP<#iyp8W;+#3~cP!@&iN}puf z6Jt7jy3pohcmFWAd`m?6Jo>I&rUp+kX(5*hC{ZspVT`0g7t^;d9bu>KDt}0JP#)oW zvxL2SNE<8Y8CgbgS|+KVkkRUmr)c>zVylN;3%lRLc%FKQ!LWIB*4&vn+GOnTlR!=x zRC65C2D{knroKGW{SY*Y+*;R89R28f&dpL(Tz4=0%5sucfM8|)B40L4kp6bf);JPd zs@1BKdR@6$1K5@Lz$I$tdCBoZ-=7KTv4cm(qRQOqv?`KX?8>>OpaT!19$HYN4#iC{ zbKFckr6lE6+c%E)E1W)cLT+Fi@s)XV1wXJG)H~98btgbW_>37~hPww4iWE>i@fTdd zJ<0!zvsT;2Evf%h_VIcnKKfvzD?Wy9p2}SVTim8E&T&+m!9cEl;HLKg*xDT>fJ#R8 zPybU-3DcfSUzvMo^p_uz)9`_BX+~1305^SMU8LABAEQTV`P@*^rsYJ#jRu4O zMoLvWg3%k88}OSt_*4k7XCDUQE7-GV%@4~iA}a2kW_!%<1?WG9tH`+Mw_|$$!Bs$n zb3eHX<#TQK#m`YsDTVW9R=x{xn}D_xfDB1q_xc=0jP92AQ=Ab1K-Up7-qZLYhBnG? z(nA-Aac8319OzJEN1y{b0)MUDh_ChZjg2+TMVaj^GK6q&-ev?Tsi$WqyiCIe3u^wI z!Uj%8BkCXj|6;J&wuJ!MkY;6k4@TzjZkG00m=r+&p8;=f-M;Yj03mopkvW^T377Ca z04$_n5ys*nLYx^Pim!(+ayl?+`b^DJAtv!XxU6Ik8_?V(K^b#>u>GiE&4-@j{avVQ zG?(9@suWZmXS(bSt|Q-Nz~Z{6#8T6(52w&@!LJ`IM*u(cGC|(f8ZgVU($>yToB3ez zj5c_T;Ey(5NCcAb@qdIQ?Eedr0Mn_lkXa?MbJn%XyUh=&S%2dLC9u{va6g5a^!vQs zhJf_C51mXNt*h>b-Ms(H2;gVT0e>eP_&e_s!La!3=68X6z@LEgl)hc$=iXO5@40LP z2Xq?%8-R!N$Vu~-GJas(ae*^=16>$Hb(T`MXjrh;g*(*{v?6s~lyvbdD9^43gscCy z!c|FvjTm)>8>ahVEN_s?rgYCh*py=Mp%7q<@iqb#m4<)|P2RNK*8q$Fr?5K;*p#4m zcvt(;AzZTcVV}QtXEn>&h`_OA{e@bqK!d`Bf2KwU+E`9pYWt*?rk)P~9i*?)Rq z4o$Yb1?t^FX9>YB?Gkmk%=$h)AUq!IcsCgHa}k2-IL9d>W zLm!3a)DxzgpMAQc5K0w?p4BOhH7H;_s!6eX9b!0c>lAB6@$|cdx zJF(%luGaDxuz(TUhP;Blok@BLC#89FzcR(X$6fC8z|}!7N}_CMC-?h6!RxZM$r@n4XuVeQ!*$s6IX4UQDV5Ve2Uh#d@3 z#@nd7K7@^e&^(L3DRVz(VEoDKfra1ekuDW->#T5FItM}-gU@Zwr)vE`4-6`90F{A8 zx#?NRD*^kGA(n&IAl5Jku|_)@o~OB|003p4Qh~x!%>GkveE{(elqWpYljB%{2@do} zywY+Bour7$<*tM4LF3&Ai>!Ze+Fl`cNcdUF00D}+e?)Gz+7MhsM!bDm=i=xgF+M8P z3LI`q9>APRWSxB-wlm;0Rljk82qDLd^dSre5`%a(luD{;LU4d2OT!7L?%lT z(JPx;25hO9;Fm@i)Gts z==I0i4hFsepu<*4dL5H6pnhz*3nz|#HFa4I0!vxSYpL@W$mCE8zQ;#9zJe9Dg@Rj6n4ME>1Bep{9OGa&vHGlw)% zbOj5Fl>68F`6ReSI^K?=HDyco&B*!~1E327peLFMU>(OI2RMi`$TTGwM%fO#a!